/// <summary> /// 获取用户信息(用于支付) /// </summary> /// <param name="userId">Id</param> /// <param name="db">数据Db</param> /// <returns>用户信息</returns> private ResultModel GetYH_UserForPaymentPrivate(long userId, dynamic db) { ResultModel resultModel = new ResultModel(); UserInfoViewForPayment userInfoView = db.YH_User.All() .LeftJoin(db.ZJ_UserBalance) .On(db.YH_User.UserID == db.ZJ_UserBalance.UserID) .Where(db.YH_User.UserID == userId) .Select( db.YH_User.UserID, db.YH_User.Phone, db.YH_User.Account, db.YH_User.PayPassWord, db.YH_User.IsLock, db.YH_User.IsDelete, db.ZJ_UserBalance.ConsumeBalance ).FirstOrDefault <UserInfoViewForPayment>(); resultModel.Data = userInfoView; return(resultModel); }
/// <summary> /// 余额支付 /// </summary> /// <param name="view">支付单信息(需提供 PaymentOrderID,UserID)</param> /// <param name="userInfo">>用户信息(用户支付 需提供 UserId,PayPassword,LanguageID)</param> /// <param name="isCheckPayPassword">是否检查交易密码(如果是混合支付,充值回来,无需检查交易密码)</param> /// <returns></returns> public ResultModel PaymentBalanceOrder(PaymentOrderView view, UserInfoViewForPayment userInfo, bool isCheckPayPassword) { var resultModel = new ResultModel() { IsValid = false, //"服务器繁忙,请稍候再试" Messages = new List <string>() { CultureHelper.GetAPPLangSgring("PAYMENT_NETWORK_BUSY", userInfo.LanguageId) } }; using (var trans = _database.Db.BeginTransaction()) { try { //获取用户数据 UserInfoViewForPayment userInfoView = userService.GetYH_UserForPayment(userInfo.UserID, trans).Data; //检查用户是否删除、锁定等 ResultModel userInfoResultModel = userService.GetYH_UserForPaymentMessage(userInfoView, isCheckPayPassword ? userInfo : null, trans); //用户、交易密码错误等信息 if (!userInfoResultModel.IsValid) { trans.Rollback(); resultModel.Messages = new List <string>() { userInfoResultModel.Messages[0] }; return(resultModel); } //从数据库中获取支付单 PaymentOrderView paymentOrder = this.GetPaymentOrderPrivate(view, trans).Data; //余额不足 if (paymentOrder.ProductAmount > userInfoView.ConsumeBalance) { trans.Rollback(); resultModel.Messages = new List <string>() { CultureHelper.GetAPPLangSgring("MONEY_ORDER_NSUFFICIENT_BALANCE", userInfo.LanguageId) }; return(resultModel); } //查询该支付单下,所有订单 List <OrderView> orderViews = base._database.Db.PaymentOrder.Query() .LeftJoin(_database.Db.PaymentOrder_Orders, PaymentOrderID: base._database.Db.PaymentOrder.PaymentOrderID) .LeftJoin(_database.Db.Order, OrderID: _database.Db.PaymentOrder_Orders.OrderID) .Where(base._database.Db.PaymentOrder.PaymentOrderID == view.PaymentOrderID && base._database.Db.PaymentOrder.UserID == view.UserID) .Select( _database.Db.Order.UserID, _database.Db.Order.OrderID, _database.Db.Order.TotalAmount).ToList <OrderView>(); //循环订单 扣除余额 foreach (OrderView orderView in orderViews) { ZJ_UserBalanceModel zjmodel = new ZJ_UserBalanceModel(); zjmodel.Account = userInfoView.Account; zjmodel.AddOrCutAmount = -orderView.TotalAmount.Value; zjmodel.AddOrCutType = 2; zjmodel.CreateBy = userInfoView.Account; zjmodel.IsDisplay = 1; zjmodel.Remark = "购物消费"; zjmodel.UserID = view.UserID; zjmodel.OrderNo = orderView.OrderID; userBalanceService.UpdateZJ_UserBalance(zjmodel, trans); } trans.Commit(); resultModel.IsValid = true; } catch (Exception ex) { trans.Rollback(); } } return(resultModel); }
/// <summary> /// 获取用户信息(用于支付,配合GetYH_UserForPayment方法使用) /// </summary> /// <param name="userInfoView">用户信息</param> /// <param name="compareUserInfoView">用于比较的用户信息</param> /// <param name="trans">事务对象</param> /// <returns>是否可以支付</returns> public ResultModel GetYH_UserForPaymentMessage(UserInfoViewForPayment userInfoView, UserInfoViewForPayment compareUserInfoView, dynamic trans) { return(this.GetYH_UserForPaymentMessagePrivate(userInfoView, compareUserInfoView, trans)); }
/// <summary> /// 获取用户信息(用于支付,配合GetYH_UserForPayment方法使用) /// </summary> /// <param name="userInfoView">用户信息</param> /// <param name="compareUserInfoView">用于比较的用户信息</param> /// <returns>是否可以支付</returns> private ResultModel GetYH_UserForPaymentMessagePrivate(UserInfoViewForPayment userInfoView, UserInfoViewForPayment compareUserInfoView, dynamic db) { ResultModel resultModel = new ResultModel() { IsValid = false }; if (userInfoView == null || userInfoView.IsDelete == 1) { //没有找到该用户 resultModel.Messages.Add(CultureHelper.GetAPPLangSgring("USER_QUERY_NOT_FOUND", compareUserInfoView.LanguageId)); } else { if (userInfoView.IsLock == 1) { //账户被锁定,请联系客服 resultModel.Messages.Add(CultureHelper.GetAPPLangSgring("USER_QUERY_ACCOUNT_LOCKED", compareUserInfoView.LanguageId)); } //进行密码检测 else if (compareUserInfoView != null) { if (string.IsNullOrEmpty(userInfoView.PayPassWord)) { resultModel.Messages.Add(CultureHelper.GetAPPLangSgring("MONEY_ORDER_SETPAYPASSWORD", compareUserInfoView.LanguageId)); } else { int passwordType = (int)UserEnums.PasswordType.PayPassword; //查看是否有历史输入错误记录 List <YH_PasswordErrorModel> passwordErrors = passwordErrorService.GetPasswordErrorInfo(userInfoView.UserID, passwordType, db).Data; //交易密码错误信息 YH_PasswordErrorModel passwordErrorModel = null; if (passwordErrors == null || passwordErrors.Count == 0) { //如果用户交易密码不同数据库交易密码 if (compareUserInfoView.PayPassWord != userInfoView.PayPassWord) { passwordErrorModel = new YH_PasswordErrorModel() { Account = userInfoView.Account, UserID = userInfoView.UserID, VerifyTime = DateTime.Now, PassWordType = passwordType, FailVerifyTimes = 1 }; passwordErrorService.AddError(passwordErrorModel, db); resultModel.Messages.Add(CultureHelper.GetAPPLangSgring("MONEY_ORDER_PAYPASSWORD_ERROR", compareUserInfoView.LanguageId)); } else { resultModel.IsValid = true; } } else { passwordErrorModel = passwordErrors[0]; //获取有关交易密码限制的参数 List <ParameterSetModel> payPwdParams = parameterSetService.GetParameterSetsBy(new long[] { ParameterSetExtension.PARAM_PAYPASSWORD_TIME, ParameterSetExtension.PARAM_PAYPASSWORD_COUNT }, db).Data; //次数限制参数 ParameterSetModel payPwdCount = payPwdParams.FirstOrDefault( x => x.ParamenterID == ParameterSetExtension.PARAM_PAYPASSWORD_COUNT); //时间限制参数 ParameterSetModel payPwdTime = payPwdParams.FirstOrDefault( x => x.ParamenterID == ParameterSetExtension.PARAM_PAYPASSWORD_TIME); //限制次数 int count = payPwdCount == null ? 5 : Convert.ToInt32(payPwdCount.PValue); //限制时间(分钟) double time = payPwdTime == null ? 120 : Convert.ToDouble(payPwdTime.PValue); //限制时间 DateTime limitTime = passwordErrorModel.VerifyTime.AddMinutes(time); //交易密码是否正确 bool isPwdTrue = compareUserInfoView.PayPassWord == userInfoView.PayPassWord; //错误次数等于限制次数 并且当前时间小于限制时间 则不允许进行交易密码验证 if (passwordErrorModel.FailVerifyTimes >= count && limitTime > DateTime.Now) { resultModel.Messages.Add(string.Format(CultureHelper.GetAPPLangSgring("MONEY_ORDER_PAYPASSWORDCOUNT", compareUserInfoView.LanguageId), count, Math.Ceiling((limitTime - DateTime.Now).TotalMinutes))); return(resultModel); } if (!isPwdTrue) { if (passwordErrorModel.FailVerifyTimes >= count && limitTime <= DateTime.Now) { //如果用户交易密码不同数据库交易密码,进行次数设置为1,验证时间为当前时间 passwordErrorModel.FailVerifyTimes = 1; passwordErrorModel.VerifyTime = DateTime.Now; passwordErrorService.Update(passwordErrorModel, db); resultModel.Messages.Add(CultureHelper.GetAPPLangSgring("MONEY_ORDER_PAYPASSWORD_ERROR", compareUserInfoView.LanguageId)); } else if (passwordErrorModel.FailVerifyTimes < count) { //如果用户交易密码不同数据库交易密码,进行次数设置为1,验证时间为当前时间 passwordErrorModel.FailVerifyTimes = passwordErrorModel.FailVerifyTimes + 1; passwordErrorModel.VerifyTime = DateTime.Now; passwordErrorService.Update(passwordErrorModel, db); resultModel.Messages.Add(CultureHelper.GetAPPLangSgring("MONEY_ORDER_PAYPASSWORD_ERROR", compareUserInfoView.LanguageId)); } else { resultModel.Messages.Add(CultureHelper.GetAPPLangSgring("MONEY_ORDER_PAYPASSWORD_ERROR", compareUserInfoView.LanguageId)); } } else { //将错误次数清空 passwordErrorModel.FailVerifyTimes = 0; passwordErrorModel.VerifyTime = DateTime.Now; passwordErrorService.Update(passwordErrorModel, db); resultModel.IsValid = true; } } } } else { resultModel.IsValid = true; } } return(resultModel); }
///// <summary> ///// 更新用户信息 ///// </summary> ///// <param name="model">用户信息对象</param> ///// <returns>返回true时,表示更新成功;反之,表示更新失败</returns> //private ResultModel UpdateYH_User(YH_UserInfoModel model, int lang) //{ // var result = new ResultModel(); // try // { // RequestUserInfo user = new RequestUserInfo(); // result.IsValid = true; // //更新用户资料 // decimal dt; // if (model.nickName != null) // { // user.nick = model.nickName;//更新昵称 // result=UpdateUserInfo(user, model.userId, lang); // if (result.IsValid) // { // dt = _database.Db.YH_User.UpdateByUserID(UserID: model.userId, NickName: model.nickName, UpdateDT: DateTime.Now, UpdateBy: "用户");//更新数据库 // } // } // if (model.imageUrl != null) // { // user.img_url = model.imageUrl;//更新头像 // result = UpdateUserInfo(user, model.userId, lang); // if (result.IsValid) // { // dt = _database.Db.YH_User.UpdateByUserID(UserID: model.userId, HeadImageUrl: model.imageUrl, UpdateDT: DateTime.Now, UpdateBy: "用户");//更新数据库 // } // } // if (model.sex != null) // { // int sex; // int.TryParse(model.sex, out sex);//更新性别 // user.sex = sex; // result = UpdateUserInfo(user, model.userId, lang); // if (result.IsValid) // { // dt = _database.Db.YH_User.UpdateByUserID(UserID: model.userId, Sex: model.sex, UpdateDT: DateTime.Now, UpdateBy: "用户");//更新数据库 // } // } // if (model.birthday != null)//更新生日 // { // dt = _database.Db.YH_User.UpdateByUserID(UserID: model.userId, Birthday: ConvertsTime.TimeStampToDateTime(long.Parse(model.birthday)), UpdateDT: DateTime.Now, UpdateBy: "用户");//更新数据库 // } // if (model.signature != null)//更新签名 // { // user.sign = model.signature; // result = UpdateUserInfo(user, model.userId, lang); // if (result.IsValid) // { // dt = _database.Db.YH_User.UpdateByUserID(UserID: model.userId, signature: model.signature, UpdateDT: DateTime.Now, UpdateBy: "用户");//更新数据库 // } // } // if (model.orcodeUrl != null)//更新二维码 // { // List<YH_UserModel> lst = _database.Db.YH_User.FindAll(_database.Db.YH_User.UserID == model.userId).ToList<YH_UserModel>(); // if (lst != null) // { // if (lst.Count > 0) // { // if (UrlHelp.UrlIsExist(ConfigurationManager.AppSettings["ImagePath"] + lst[0].OrcodeUrl)) // { // FastDFSClient.RemoveFile(FastDFSClient.DefaultGroup.GroupName, lst[0].OrcodeUrl);//删除旧二维码 // } // } // } // dt = _database.Db.YH_User.UpdateByUserID(UserID: model.userId, OrcodeUrl: model.orcodeUrl, UpdateDT: DateTime.Now, UpdateBy: "用户");//更新数据库 // } // } // catch (Exception ex) // { // result.IsValid = false; // result.Messages.Add(CultureHelper.GetAPPLangSgring("UPDATE_Failure", lang) + ":" + ex.Message); // } // return result; //} #endregion #region 与支付相关 /// <summary> /// 获取用户信息(用于支付,配合GetYH_UserForPayment方法使用) /// </summary> /// <param name="userInfoView">用户信息</param> /// <param name="compareUserInfoView">用于比较的用户信息</param> /// <returns>是否可以支付</returns> public ResultModel GetYH_UserForPaymentMessage(UserInfoViewForPayment userInfoView, UserInfoViewForPayment compareUserInfoView) { return(this.GetYH_UserForPaymentMessagePrivate(userInfoView, compareUserInfoView, this._database.Db)); }