/// <summary> /// 取得會員資訊 /// </summary> /// <param name="memberInfo">memberInfo</param> /// <returns>Tuple(MemberInfoDto, string)</returns> public async Task <Tuple <MemberInfoDto, string> > GetMemberInfo(MemberInfoDto memberInfo) { try { MemberData memberData = null; if (!string.IsNullOrEmpty(memberInfo.MemberID)) { memberData = await this.memberRepository.GetMemebrDataByMemberID(memberInfo.MemberID); } else if (!string.IsNullOrEmpty(memberInfo.Email)) { memberData = await this.memberRepository.GetMemebrDataByEmail(memberInfo.Email); } else if (!string.IsNullOrEmpty(memberInfo.Mobile)) { memberData = await this.memberRepository.GetMemebrDataByMobile(memberInfo.Mobile); } else { return(Tuple.Create <MemberInfoDto, string>(null, "無效的查詢參數.")); } if (memberData == null) { return(Tuple.Create <MemberInfoDto, string>(null, "無會員資料.")); } return(Tuple.Create(this.mapper.Map <MemberInfoDto>(memberData), string.Empty)); } catch (Exception ex) { this.logger.LogError($"Get Member Info Error >>> MemberID:{memberInfo.MemberID} Email:{memberInfo.Email} Mobile:{memberInfo.Mobile}\n{ex}"); return(Tuple.Create <MemberInfoDto, string>(null, "取得會員資訊發生錯誤.")); } }
internal MemberInfo(MemberInfoDto dto) { InstanceId = dto.InstanceId; TimeStamp = dto.TimeStamp; State = dto.State; IsAlive = dto.IsAlive; InternalTcpEndPoint = new DnsEndPoint(dto.InternalTcpIp, dto.InternalTcpPort); InternalSecureTcpEndPoint = dto.InternalSecureTcpPort > 0 ? new DnsEndPoint(dto.InternalTcpIp, dto.InternalSecureTcpPort) : null; ExternalTcpEndPoint = dto.ExternalTcpIp != null ? new DnsEndPoint(dto.ExternalTcpIp, dto.ExternalTcpPort) : null; ExternalSecureTcpEndPoint = dto.ExternalTcpIp != null && dto.ExternalSecureTcpPort > 0 ? new DnsEndPoint(dto.ExternalTcpIp, dto.ExternalSecureTcpPort) : null; HttpEndPoint = new DnsEndPoint(dto.HttpEndPointIp, dto.HttpEndPointPort); AdvertiseHostToClientAs = dto.AdvertiseHostToClientAs; AdvertiseHttpPortToClientAs = dto.AdvertiseHttpPortToClientAs; AdvertiseTcpPortToClientAs = dto.AdvertiseTcpPortToClientAs; LastCommitPosition = dto.LastCommitPosition; WriterCheckpoint = dto.WriterCheckpoint; ChaserCheckpoint = dto.ChaserCheckpoint; EpochPosition = dto.EpochPosition; EpochNumber = dto.EpochNumber; EpochId = dto.EpochId; NodePriority = dto.NodePriority; IsReadOnlyReplica = dto.IsReadOnlyReplica; }
internal MemberInfo(MemberInfoDto dto) { InstanceId = dto.InstanceId; TimeStamp = dto.TimeStamp; State = dto.State; IsAlive = dto.IsAlive; var internalTcpIp = IPAddress.Parse(dto.InternalTcpIp); var externalTcpIp = dto.ExternalTcpIp != null?IPAddress.Parse(dto.ExternalTcpIp) : null; InternalTcpEndPoint = new IPEndPoint(internalTcpIp, dto.InternalTcpPort); InternalSecureTcpEndPoint = dto.InternalSecureTcpPort > 0 ? new IPEndPoint(internalTcpIp, dto.InternalSecureTcpPort) : null; ExternalTcpEndPoint = externalTcpIp != null ? new IPEndPoint(externalTcpIp, dto.ExternalTcpPort) : null; ExternalSecureTcpEndPoint = externalTcpIp != null && dto.ExternalSecureTcpPort > 0 ? new IPEndPoint(externalTcpIp, dto.ExternalSecureTcpPort) : null; InternalHttpEndPoint = new IPEndPoint(IPAddress.Parse(dto.InternalHttpIp), dto.InternalHttpPort); ExternalHttpEndPoint = new IPEndPoint(IPAddress.Parse(dto.ExternalHttpIp), dto.ExternalHttpPort); LastCommitPosition = dto.LastCommitPosition; WriterCheckpoint = dto.WriterCheckpoint; ChaserCheckpoint = dto.ChaserCheckpoint; EpochPosition = dto.EpochPosition; EpochNumber = dto.EpochNumber; EpochId = dto.EpochId; NodePriority = dto.NodePriority; IsReadOnlyReplica = dto.IsReadOnlyReplica; }
public async Task <IActionResult> Post(MemberInfoDto memberInfo) { try { Tuple <MemberInfoDto, string> searchResult = await this.memberService.GetMemberInfo(memberInfo); if (searchResult.Item1 == null) { return(BadRequest(searchResult.Item2)); } Tuple <MemberInfoDto, string> result = await this.memberService.EditData(new MemberInfoDto() { MemberID = searchResult.Item1.MemberID, Password = memberInfo.Password }, false); if (string.IsNullOrEmpty(result.Item2)) { return(Ok(result.Item1)); } return(BadRequest(result.Item2)); } catch (Exception ex) { this.logger.LogError($"Reset Password Error >>> Data:{JsonConvert.SerializeObject(memberInfo)}\n{ex}"); return(BadRequest("重設密碼發生錯誤.")); } }
/// <summary> /// 會員編輯 /// </summary> /// <param name="memberInfo">memberInfo</param> /// <param name="isStrictPassword">isStrictPassword</param> /// <returns>Tuple(MemberInfoDto, string)</returns> public async Task <Tuple <MemberInfoDto, string> > EditData(MemberInfoDto memberInfo, bool isStrictPassword) { try { MemberData memberData = await this.memberRepository.GetMemebrDataByMemberID(memberInfo.MemberID); string updateMemberDataHandlerResult = this.UpdateMemberDataHandler(memberInfo, memberData, isStrictPassword); if (!string.IsNullOrEmpty(updateMemberDataHandlerResult)) { return(Tuple.Create <MemberInfoDto, string>(null, updateMemberDataHandlerResult)); } bool updateMemebrDataResult = await this.memberRepository.UpdateMemebrData(memberData); if (!updateMemebrDataResult) { return(Tuple.Create <MemberInfoDto, string>(null, "會員編輯更新失敗")); } return(Tuple.Create(this.mapper.Map <MemberInfoDto>(memberData), string.Empty)); } catch (Exception ex) { this.logger.LogError($"Edit Data Error >>> Data:{JsonConvert.SerializeObject(memberInfo)} IsStrictPassword:{isStrictPassword}\n{ex}"); return(Tuple.Create <MemberInfoDto, string>(null, "會員編輯發生錯誤.")); } }
/// <summary> /// 會員資料更新處理 /// </summary> /// <param name="memberInfo">memberInfo</param> /// <param name="memberData">memberData</param> /// <param name="isStrictPassword">isStrictPassword</param> /// <returns>string</returns> private string UpdateMemberDataHandler(MemberInfoDto memberInfo, MemberData memberData, bool isStrictPassword) { if (!string.IsNullOrEmpty(memberInfo.BirthDayDate)) { memberData.BirthDayDate = memberInfo.BirthDayDate; } if (memberInfo.BodyHeight > decimal.Zero) { memberData.BodyHeight = memberInfo.BodyHeight; } if (memberInfo.BodyWeight > decimal.Zero) { memberData.BodyWeight = memberInfo.BodyWeight; } if (memberInfo.Gender > 0) { memberData.Gender = memberInfo.Gender; } if (!string.IsNullOrEmpty(memberInfo.Mobile)) { if (!Utility.IsValidMobile(memberInfo.Mobile)) { return("行動電話號碼格式驗證失敗."); } memberData.Mobile = memberInfo.Mobile; } if (!string.IsNullOrEmpty(memberInfo.Nickname)) { memberData.Nickname = memberInfo.Nickname; } if (!string.IsNullOrEmpty(memberInfo.Password)) { if (isStrictPassword && !this.IsValidPassword(memberInfo.Password)) { return("密碼格式錯誤."); } memberData.Password = Utility.EncryptAES(memberInfo.Password); } if (!string.IsNullOrEmpty(memberInfo.Photo)) { memberData.Photo = memberInfo.Photo; } return(string.Empty); }
public async Task <IActionResult> GetMemberInfo(MemberInfoDto memberInfo) { try { Tuple <MemberInfoDto, string> result = await this.memberService.GetMemberInfo(memberInfo); if (string.IsNullOrEmpty(result.Item2)) { return(Ok(result.Item1)); } return(BadRequest(result.Item2)); } catch (Exception ex) { this.logger.LogError($"Get Member Info Error >>> MemberID:{memberInfo.MemberID} Email:{memberInfo.Email} Mobile:{memberInfo.Mobile}\n{ex}"); return(BadRequest("取得會員資訊發生錯誤.")); } }
public async Task <IActionResult> Post(MemberInfoDto memberInfo) { try { Tuple <string, string> result = await this.memberService.Login(memberInfo); if (string.IsNullOrEmpty(result.Item2)) { return(Ok(result.Item1)); } return(BadRequest(result.Item2)); } catch (Exception ex) { this.logger.LogError($"Login Error >>> Email:{memberInfo.Email} Password:{memberInfo.Password}\n{ex}"); return(BadRequest("會員登入發生錯誤.")); } }
public async Task <IActionResult> Post(MemberInfoDto memberInfo) { try { string result = await this.memberService.Register(memberInfo); if (string.IsNullOrEmpty(result)) { return(Ok("會員註冊成功.")); } return(BadRequest(result)); } catch (Exception ex) { this.logger.LogError($"Register Error >>> Email:{memberInfo.Email} Password:{memberInfo.Password}\n{ex}"); return(BadRequest("會員註冊發生錯誤.")); } }
public async Task <IActionResult> Post(MemberInfoDto memberInfo) { try { Tuple <MemberInfoDto, string> result = await this.memberService.EditData(memberInfo, true); if (string.IsNullOrEmpty(result.Item2)) { return(Ok(result.Item1)); } return(BadRequest(result.Item2)); } catch (Exception ex) { this.logger.LogError($"Edit Data Error >>> Data:{JsonConvert.SerializeObject(memberInfo)}\n{ex}"); return(BadRequest("會員編輯發生錯誤")); } }
/// <summary> /// 會員登入 /// </summary> /// <param name="memberInfo">memberInfo</param> /// <returns>Tuple(string, string)</returns> public async Task <Tuple <string, string> > Login(MemberInfoDto memberInfo) { try { if (string.IsNullOrEmpty(memberInfo.Email) || string.IsNullOrEmpty(memberInfo.Password)) { return(Tuple.Create(string.Empty, "信箱或密碼無效.")); } MemberData memberData = await this.memberRepository.GetMemebrDataByEmail(memberInfo.Email); if (memberData == null) { return(Tuple.Create(string.Empty, "無法根據信箱查詢到相關會員.")); } if (!Utility.DecryptAES(memberData.Password).Equals(memberInfo.Password)) { return(Tuple.Create(string.Empty, "密碼驗證失敗.")); } bool updateMemebrLoginDateResult = await this.memberRepository.UpdateMemebrLoginDate(memberData.MemberID, DateTime.Now); if (!updateMemebrLoginDateResult) { return(Tuple.Create(string.Empty, "會員登入失敗.")); } return(Tuple.Create(memberData.MemberID, string.Empty)); } catch (Exception ex) { this.logger.LogError($"Login Error >>> Email:{memberInfo.Email} Password:{memberInfo.Password}\n{ex}"); return(Tuple.Create(string.Empty, "會員登入發生錯誤.")); } }
public ClusterInfoDto(MemberInfoDto[] members) { Members = members; }
/// <summary> /// 會員註冊 /// </summary> /// <param name="memberInfo">memberInfo</param> /// <returns>string</returns> public async Task <string> Register(MemberInfoDto memberInfo) { try { if (string.IsNullOrEmpty(memberInfo.Email) || string.IsNullOrEmpty(memberInfo.Password)) { return("信箱或密碼無效."); } //// 待確認是否驗證 //if (string.IsNullOrEmpty(memberInfo.Mobile)) //{ // return "行動電話號碼無效."; //} if (!Utility.IsValidEmail(memberInfo.Email)) { return("信箱格式錯誤."); } if (!this.IsValidPassword(memberInfo.Password)) { return("密碼格式錯誤."); } //// 待確認是否驗證 //if (!Utility.IsValidMobile(memberInfo.Mobile)) //{ // return "行動電話號碼格式錯誤."; //} bool emailHasRegister = await this.memberRepository.GetMemebrDataByEmail(memberInfo.Email) != null; if (emailHasRegister) { return("此信箱已經被註冊."); } //// 待確認是否驗證 //bool mobileHasRegister = await this.memberRepository.GetMemebrDataByMobile(memberInfo.Mobile) != null; //if (mobileHasRegister) //{ // return "此行動電話號碼已經被註冊."; //} string memberSerialNumber = await this.memberRepository.GetMemberSerialNumber(); if (string.IsNullOrEmpty(memberSerialNumber)) { return("取得會員序號失敗."); } MemberData memberData = new MemberData() { CreateDate = DateTime.Now, MemberID = memberSerialNumber, Email = memberInfo.Email, Password = Utility.EncryptAES(memberInfo.Password), Mobile = memberInfo.Mobile }; bool isSuccess = await this.memberRepository.CreateMemberData(memberData); if (!isSuccess) { return("會員註冊失敗."); } return(string.Empty); } catch (Exception ex) { this.logger.LogError($"Register Error >>> Data:{JsonConvert.SerializeObject(memberInfo)}\n{ex}"); return("會員註冊發生錯誤."); } }
public void PayCallBack(NotifyCallBackInput input, UserBaseDto userInfo, out string lotteryId) { using (var conn = GetLotteryConnection()) { conn.Open(); using (var transaction = conn.BeginTransaction()) { try { #region 支付处理 var orderDto = conn.QueryList <OrderInfoInfo>(new { SalesOrderNo = input.Orderid }, TableNameConstants.OrderdRecordTable, transaction: transaction).First(); var authRank = conn .QueryList <AuthRankDto>(new { Id = orderDto.AuthRankId }, TableNameConstants.AuthRankTable, transaction: transaction) .First(); var authinfoLast = conn.QueryList <AuthOrderInfo>(new { AuthUserId = userInfo.Id, LotteryId = orderDto.LotteryId, Status = AuthStatus.Normal }, TableNameConstants.AuthorizeRecordTable, transaction: transaction).OrderByDescending(p => p.CreateTime).FirstOrDefault(); var memberInfo = conn .QueryList <MemberInfoDto>(new { UserId = userInfo.Id, LotteryId = orderDto.LotteryId, }, TableNameConstants.MemberTable, transaction: transaction) .FirstOrDefault(); orderDto.PayCost = input.Realprice; orderDto.Status = PayStatus.Payed; orderDto.Payer = userInfo.Id; orderDto.ThirdPayOrderNo = input.Paysapi_id; orderDto.PayOrderNo = OrderHelper.GenerateOrderNo(OrderType.Pay, SellType.Rmb); orderDto.PayType = PayType.PaysApi; orderDto.PayTime = DateTime.Now; conn.Update(orderDto, new { orderDto.Id }, TableNameConstants.OrderdRecordTable, transaction: transaction); var authinfo = new AuthOrderInfo() { Id = Guid.NewGuid().ToString(), AuthRankId = orderDto.AuthRankId, AuthUserId = userInfo.Id, AuthOrderNo = OrderHelper.GenerateOrderNo(OrderType.Order, SellType.Rmb), // InvalidDate = DateTime.Now.AddMonths(orderDto.Count), AuthTime = DateTime.Now, AuthType = SellType.Rmb, CreateBy = userInfo.Id, CreateTime = DateTime.Now, Notes = authRank.MemberRank.GetChineseDescribe(), Status = AuthStatus.Normal, SaleRecordId = orderDto.Id, LotteryId = orderDto.LotteryId }; if (authinfoLast == null) { authinfo.InvalidDate = DateTime.Now.AddMonths(orderDto.Count); } else { authinfo.InvalidDate = authinfoLast.InvalidDate.AddMonths(orderDto.Count); authinfoLast.UpdateBy = userInfo.Id; authinfoLast.UpdateTime = DateTime.Now; authinfoLast.Status = AuthStatus.Invalid; conn.Update(authinfoLast, new { Id = authinfoLast.Id }, TableNameConstants.AuthorizeRecordTable, transaction); } conn.Insert(authinfo, TableNameConstants.AuthorizeRecordTable, transaction); if (memberInfo == null) { memberInfo = new MemberInfoDto() { Id = Guid.NewGuid().ToString(), InvalidDate = authinfo.InvalidDate, LastAuthOrderId = authinfo.Id, LotteryId = orderDto.LotteryId, MemberRank = (int)authRank.MemberRank, Status = MemberStatus.Normal, UserId = userInfo.Id, CreateBy = userInfo.Id, CreateTime = DateTime.Now }; conn.Insert(memberInfo, TableNameConstants.MemberTable, transaction); } else { memberInfo.MemberRank = (int)authRank.MemberRank; memberInfo.InvalidDate = authinfo.InvalidDate; memberInfo.UpdateBy = userInfo.Id; memberInfo.UpdateTime = DateTime.Now; conn.Update(memberInfo, new { Id = memberInfo.Id }, TableNameConstants.MemberTable, transaction); } #endregion 支付处理 #region 指标配置 //var userNormConigs = conn.QueryList<NormConfigDto>(new { UserId = userInfo.Id, IsEnable = 1 }, TableNameConstants.NormConfigTable, transaction: transaction); //if (!userNormConigs.Safe().Any()) //{ // var normConfigs = conn.QueryList<NormConfigDto>(new { LotteryId = orderDto.LotteryId, IsDefualt = 1, IsEnable = 1 }, TableNameConstants.NormConfigTable, transaction: transaction); // foreach (var normConfig in normConfigs) // { // normConfig.UserId = userInfo.Id; // normConfig.Id = Guid.NewGuid().ToString(); // conn.Insert(normConfig, TableNameConstants.NormConfigTable, transaction); // } //} #endregion 指标配置 #region 清除相关缓存 var redisKey1 = string.Format(RedisKeyConstants.MEMBERRANK_MEMBERPOWER_KEY, orderDto.LotteryId, authRank.MemberRank); var redisKey2 = string.Format(RedisKeyConstants.MEMBERRANK_ROLE_KEY, orderDto.LotteryId, authRank.MemberRank); var redisKey3 = string.Format(RedisKeyConstants.USERINFO_KEY, userInfo.Id); var redisKey4 = string.Format(RedisKeyConstants.OPERATION_MEMBERINFO_KEY, orderDto.LotteryId); _cacheManager.RemoveByPattern(redisKey1); _cacheManager.RemoveByPattern(redisKey2); _cacheManager.RemoveByPattern(redisKey3); _cacheManager.RemoveByPattern(redisKey4); transaction.Commit(); lotteryId = orderDto.LotteryId; #endregion 清除相关缓存 } catch (Exception e) { transaction.Rollback(); throw; } } } }