public ResponseModel UserStoreMoney(UserStoreMoneyAdd userStoreParam) { //1.入参校验 ResponseModel checkResult; if (userStoreParam == null) { return(Fail(ErrorCodeEnum.StoreMoneyParamsIsNull)); } //2.校验Model if (CheckModelParams(out checkResult)) { return(checkResult); } //3. 校验储值金额和实收金额,说明:【实收金额不能大于储值金额】 if (userStoreParam.RealMoney > userStoreParam.RechargeMoney) { return(Fail(ErrorCodeEnum.StoreMoneyIsMoreThanRechargeMoney)); } //4.储值时,若不是会员,则要求会员手机号和姓名必填,不能为空 if (userStoreParam.UserId == 0) { if (string.IsNullOrWhiteSpace(userStoreParam.Phone) || string.IsNullOrWhiteSpace(userStoreParam.UserName)) { return(Fail(ErrorCodeEnum.PhoneAndUserNameIsNull)); } } return(_userStoreMoneyCardService.UserStoreMoney(GetUserContext(), userStoreParam)); }
/// <summary> /// 更新会员表储值金额并记录储值日志 /// </summary> /// <param name="userContext"></param> /// <param name="userStoreParam"></param> /// <param name="userInfo"></param> /// <param name="transaction"></param> /// <returns></returns> private bool LoggingStoreMoneyLog(UserContext userContext, UserStoreMoneyAdd userStoreParam, UserInfoDetail userInfo, IDbTransaction transaction) { var logInfoResult = true; var updateRequest = new UserInfoDetail { Uid = userStoreParam.UserId, UStoreMoney = userInfo.UStoreMoney + userStoreParam.RechargeMoney }; var storeResult = _userInfoRepository.Update <UserInfoDetail>(updateRequest, item => new { item.UStoreMoney }, transaction); if (storeResult) { var storeLogInfo = new UserLogInfo { AccId = userContext.AccId, OriginalAccId = userContext.AccId, UId = userStoreParam.UserId, LogType = (int)UserLogTypeEnum.StoreChange, ItemType = (int)UserLogItemTypeEnum.Shopping, OriginalVal = userInfo.UStoreMoney, EditMoney = userStoreParam.RealMoney, EditVal = userStoreParam.RechargeMoney, FinalVal = userInfo.UStoreMoney + userStoreParam.RechargeMoney, LogTime = DateTime.Now, OperatorTime = DateTime.Now, OperatorId = userContext.UserId, OperatorIp = userContext.IpAddress, Remark = userStoreParam.Remark, Flag = string.Empty, FlagStatus = 0, FlagStatusTime = DateTime.Now, EditMoneyType = userStoreParam.PayType, AddedLgUserId = userStoreParam.Salesman, BindCardId = 0 }; //记录日志 logInfoResult = _userLogRepository.Insert(storeLogInfo, transaction); } return(logInfoResult); }
/// <summary> /// 会员充值 /// </summary> /// <param name="userContext"></param> /// <param name="userStoreParam"></param> /// <returns></returns> public ResponseModel UserStoreMoney(UserContext userContext, UserStoreMoneyAdd userStoreParam) { var tranFlag = false; var userInfo = new UserInfoDetail(); if (userStoreParam.UserId > 0) { userInfo = _userInfoRepository.Find(x => x.Uid == userStoreParam.UserId && x.AccId == userContext.AccId); } var conn = _useraddDapperRepository.Connection; conn.Open(); var trans = conn.BeginTransaction(); try { //1.先获取充值会员的个人信息(储值余额、计次卡、上次购买时间等) if (userStoreParam.UserId == 0) { //1.1 新会员储值,先增加会员,然后充值 if (userStoreParam.UserId == 0) { var userNo = _userService.GetUserNewNo(userContext.AccId).Data.ToString(); //1.2 新增会员,储值 var userHandel = new UserHandle { Id = userStoreParam.UserId, UserNo = userNo, UserPhone = userStoreParam.Phone, UserName = userStoreParam.UserName, UserStoreMoney = userStoreParam.RechargeMoney, PinYin = Helper.GetPinyin(userStoreParam.UserName), PY = Helper.GetInitials(userStoreParam.UserName), OperatorId = userContext.UserId, AccId = userContext.AccId }; var userInsertResult = _useraddDapperRepository.Insert(userHandel, trans); if (userInsertResult) { //1.3 记录日志 var storeLogInfo = new UserLogInfo { AccId = userContext.AccId, OriginalAccId = userContext.AccId, UId = userHandel.Id, LogType = (int)UserLogTypeEnum.StoreChange, ItemType = (int)UserLogItemTypeEnum.Shopping, OriginalVal = 0, EditMoney = userStoreParam.RealMoney, EditVal = userStoreParam.RechargeMoney, FinalVal = userStoreParam.RechargeMoney, LogTime = DateTime.Now, OperatorTime = DateTime.Now, OperatorId = userContext.UserId, OperatorIp = userContext.IpAddress, Remark = userStoreParam.Remark, Flag = string.Empty, FlagStatus = 0, FlagStatusTime = DateTime.Now, EditMoneyType = userStoreParam.PayType, AddedLgUserId = userStoreParam.Salesman, BindCardId = 0 }; if (_userLogRepository.Insert(storeLogInfo, trans)) { tranFlag = true; } } } } else { //2.储值并记录日志 tranFlag = LoggingStoreMoneyLog(userContext, userStoreParam, userInfo, trans); } } catch (Exception) { trans.Rollback(); tranFlag = false; throw; } finally { if (tranFlag) { trans.Commit(); //3.发送提醒短信 if (userStoreParam.SendMsg) { Task.Run(() => { _shardService.SendSms(userContext); }); } } else { trans.Rollback(); } trans.Dispose(); conn.Close(); } //4.返回数据 return(new ResponseModel { Code = tranFlag ? (int)ErrorCodeEnum.Success : (int)ErrorCodeEnum.StoreMoneyFailed, Data = userStoreParam }); }