public Result <UserWithdrawResultModel> Withdraw(UserWithdrawModel model) { try { var result = this.AccountService.Withdraw(model); return(GetSuccessResult(result)); } catch (Exception ex) { return(GetExceptionResult <UserWithdrawResultModel>(null, ex)); } }
/// <summary> /// 会员取现 /// </summary> /// <param name="model"></param> /// <returns></returns> public UserWithdrawResultModel Withdraw(UserWithdrawModel model) { using (var dbContext = new TicketEntities()) { if (string.IsNullOrEmpty(model.MerchantId) && string.IsNullOrEmpty(model.UserName) && string.IsNullOrEmpty(model.SignKey)) { throw new InvalidOperationException("无效的用户登录信息"); } if (model.Amount <= 0) { throw new InvalidOperationException("无效的取现金额"); } //1, 判断用户是否存在 var merchantEntity = dbContext.N_Merchant.FirstOrDefault(it => (it.MerchantId.Equals(model.MerchantId, StringComparison.OrdinalIgnoreCase))); if (merchantEntity == null) { Log.Error("商户不存在"); throw new InvalidOperationException("商户不存在"); } if (string.IsNullOrEmpty(merchantEntity.Code)) { Log.Error("无效的商户信息"); throw new InvalidOperationException("无效的商户信息"); } //2,验证用户 var userEntity = dbContext.N_User.FirstOrDefault(it => it.UserName.Equals(model.UserName, StringComparison.OrdinalIgnoreCase)); if (userEntity == null) { Log.Error("用户不存在"); throw new InvalidOperationException("用户不存在"); } //3, 验证加密串 //按顺序(商户Id&会员用户名&商户安全码)MD5加密串 var signKey = MD5Cryptology.GetMD5(string.Format("{0}&{1}&{2}&{3}&{4}", model.OrderId, model.MerchantId, model.UserName, model.Amount.ToString("f4"), merchantEntity.Code), "gb2312"); if (string.Compare(signKey, model.SignKey, true) != 0) { Log.Error("无效的商户安全码"); throw new InvalidOperationException("无效的商户安全码"); } //4, 取现 string orderId = SsId.GetCash; UserWithdrawResultModel result = new UserWithdrawResultModel() { SsId = orderId, OrderId = model.OrderId, MerchantId = model.MerchantId, UserName = model.UserName, Money = (userEntity.Money - model.Amount) ?? 0M, BeforeMoney = userEntity.Money ?? 0M }; // 获取user bank id var userBank = dbContext.N_UserBank.FirstOrDefault(it => it.PayAccount.Equals(userEntity.PayAccount, StringComparison.OrdinalIgnoreCase)); if (userBank == null) { Log.Error("无效的银行账号"); throw new InvalidOperationException("无效的银行账号"); } int num = (new UserGetCashDAL()).Save3Withdraw(orderId, userEntity.Id.ToString(), model.OrderId, userBank.Id.ToString(), userEntity.PayBank, userEntity.PayAccount, userEntity.PayName, model.Amount); if (num == 0) { Log.ErrorFormat("取现失败,订单号: {0}", orderId); throw new InvalidOperationException("取现失败"); } else { new LogSysDAL().Save("会员管理", "Id为" + userEntity.Id.ToString() + "的会员申请提现!"); Log.InfoFormat("取现成功,订单号: {0}", orderId); } return(result); } }