コード例 #1
0
ファイル: ApiAccountController.cs プロジェクト: adteven/alabo
        public ApiResult <RechageAccountOutput> Recharge([FromBody] RechargeAccountInput input)
        {
            var result = Resolve <IAccountPayService>().BuyAsync(input);

            if (result.Result.Item1.Succeeded)
            {
                return(ApiResult.Result(result.Result.Item2));
            }

            return(ApiResult.Failure <RechageAccountOutput>(null, "储值失败"));
        }
コード例 #2
0
        public ApiResult Save([FromBody] RechargeAccountInput model)
        {
            if (!this.IsFormValid())
            {
                return(ApiResult.Failure(this.FormInvalidReason()));
            }

            var result = Resolve <IRechargeAccountLogService>().Add(model);

            return(ToResult(result));
        }
コード例 #3
0
        /// <summary>
        ///     储值
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public ServiceResult Add(RechargeAccountInput input)
        {
            #region 安全验证

            if (input == null)
            {
                return(ServiceResult.FailedWithMessage("对象不能为空"));
            }

            if (input.Money <= 0)
            {
                return(ServiceResult.FailedWithMessage("金额不能小于等于0!"));
            }

            if (input.UserId.IsNullOrEmpty())
            {
                return(ServiceResult.FailedWithMessage("用户id不能为空!"));
            }

            var user = Resolve <IUserService>().GetSingle(input.UserId);
            if (user == null)
            {
                return(ServiceResult.FailedWithMessage("用户不存在"));
            }

            #endregion 安全验证

            var moneyConfigs = Resolve <IAutoConfigService>().MoneyTypes();
            var moneyConfig  = moneyConfigs.FirstOrDefault(s => s.Id == MoneyTypeConfig.CNY);

            var result = Resolve <IBillService>().Increase(user, moneyConfig, input.Money, "会员通过支付宝储值充值");
            if (result.Succeeded)
            {
                return(ServiceResult.SuccessWithObject("充值成功"));
            }

            return(ServiceResult.FailedWithMessage("充值失败"));
        }
コード例 #4
0
        /// <summary>
        ///     储值
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public void AddVoid(RechargeAccountInput input)
        {
            #region 安全验证

            if (input == null)
            {
                Resolve <IPayService>().Log("参数不能为空!");
                return;
            }

            if (input.Money <= 0)
            {
                Resolve <IPayService>().Log("金额必须大于0!");
                return;
            }

            if (input.UserId.IsNullOrEmpty())
            {
                Resolve <IPayService>().Log("用户id不能为空!");
                return;
            }

            var user = Resolve <IUserService>().GetSingle(input.UserId);
            if (user == null)
            {
                Resolve <IPayService>().Log("用户不存在!");
                return;
            }

            #endregion 安全验证

            var moneyConfigs = Resolve <IAutoConfigService>().MoneyTypes();
            var moneyConfig  = moneyConfigs.FirstOrDefault(s => s.Id == MoneyTypeConfig.CNY);

            var res = Resolve <IBillService>().Increase(user, moneyConfig, input.Money, "会员通过支付宝储值充值");
            Resolve <IPayService>().Log("储值执行结果!" + res.ReturnMessage);
        }
コード例 #5
0
ファイル: AccountPayService.cs プロジェクト: adteven/alabo
        public Task <Tuple <ServiceResult, RechageAccountOutput> > BuyAsync(RechargeAccountInput rechargeAccount)
        {
            var input = rechargeAccount;

            #region 安全验证

            if (rechargeAccount == null)
            {
                return(Task.FromResult(Tuple.Create(ServiceResult.Failure("对象不能为空"),
                                                    new RechageAccountOutput())));
            }

            if (rechargeAccount.Money <= 0)
            {
                return(Task.FromResult(Tuple.Create(ServiceResult.Failure("金额不能小于等于0!"),
                                                    new RechageAccountOutput())));
            }

            if (rechargeAccount.UserId <= 0)
            {
                return(Task.FromResult(Tuple.Create(ServiceResult.Failure("用户id不能为空!"),
                                                    new RechageAccountOutput())));
            }

            var user = Resolve <IUserService>().GetSingle(rechargeAccount.UserId);
            if (user == null)
            {
                return(Task.FromResult(Tuple.Create(ServiceResult.Failure("用户不存在"),
                                                    new RechageAccountOutput())));
            }

            #endregion 安全验证

            var pay = new Pay
            {
                Status = PayStatus.WaiPay,
                Type   = CheckoutType.Recharge,
                Amount = input.Money,
                UserId = input.UserId
                         //EntityId = tradeInfo.Id.ToString()
            };
            var ids = new List <long>();
            try
            {
                //TODO 2019年9月25日 重构注释
                //var tradeInfo = new Trade() {
                //    Amount = input.Money,
                //    CreateTime = DateTime.Now,
                //    Extension = string.Empty,
                //    MoneyTypeId = input.MoneyTypeId,
                //    Type = TradeType.Recharge,
                //    Status = TradeStatus.Pending,
                //    UserId = input.UserId,
                //    UserName = string.Empty,
                //};
                //if (Resolve<ITradeService>().Add(tradeInfo)) {
                //    var payExtension = new PayExtension {
                //        TradeNo = tradeInfo.Serial,
                //        Body = $"您正在企牛牛商城上储值,请认真核对账单信息",
                //        UserName = user.GetUserName(),
                //        AfterSuccess = new Linq.Dynamic.BaseServiceMethod {
                //            Method = "AfterPaySuccess",
                //            ServiceName = typeof(IAccountPayService).Name,
                //            Parameter = tradeInfo.Id
                //        },
                //        BuyerCount = 0,
                //        GroupOverId = 0,

                //        //ReturnUrl = $"/pages/index?path=successful_registration&id={tradeNo}",
                //        //NotifyUrl = //不知道什么支付方式
                //        //RedirectUrl = $"/pages/index?path=successful_registration&id={model.Id}",
                //    };
                //    //测试用的
                //    //AfterPaySuccess(payExtension.AfterSuccess.Parameter);
                //    pay.EntityId = $"[{tradeInfo.Id.ToString()}]";
                //    ids.Add(tradeInfo.Id);
                //    //payExtension.RedirectUrl = $"/pages/index?path=successful_registration&id={tradeNo}";

                //    //Linq.Dynamic.DynamicService.ResolveMethod(payExtension.AfterSuccess?.ServiceName,
                //    //                            payExtension.AfterSuccess?.Method,
                //    //                             payExtension.AfterSuccess?.Parameter);

                //    //payExtension.ReturnUrl = "/user/account/wallet";//$"/pages/index?path=successful_registration&id={trade.Id}";
                //    payExtension.RedirectUrl = "/user/account/wallet";// $"/pages/index?path=successful_registration&id={trade.Id}";
                //                                                      // var bookingSignup = Resolve<IBookingSignupService>().GetSingle(u => u.Id == model.BookingId);
                //                                                      // Resolve<ITradeService>().Add(trade);
                //                                                      // pay.EntityId = $"[\"{trade.Id.ToString()}\"]";
                //                                                      // payExtension.TradeNo = trade.Serial;
                //    pay.Extensions = payExtension.ToJsons();

                //    Resolve<IPayService>().Add(pay);
                //} else {
                //    return Task.FromResult(Tuple.Create(ServiceResult.Failure("储值失败"), new RechageAccountOutput()));
                //}
            }
            catch (Exception ex)
            {
                return(Task.FromResult(Tuple.Create(ServiceResult.Failure("储值失败" + ex.Message),
                                                    new RechageAccountOutput())));
                //return ApiResult.Failure<object>("订单记录失败," + ex.Message);
            }

            var outPut = new RechageAccountOutput
            {
                PayId     = pay.Id,
                PayAmount = input.Money,
                OrderIds  = ids
            };
            return(Task.FromResult(Tuple.Create(ServiceResult.Success, outPut)));
        }
コード例 #6
0
        public ServiceResult Add(RechargeAccountInput rechargeAccount)
        {
            #region 安全验证

            if (rechargeAccount == null)
            {
                return(ServiceResult.FailedWithMessage("对象不能为空"));
            }

            if (rechargeAccount.UserName.IsNullOrEmpty())
            {
                return(ServiceResult.FailedWithMessage("用户名不能为空!"));
            }

            var user = Resolve <IUserService>().GetSingleByUserNameOrMobile(rechargeAccount.UserName);
            if (user == null)
            {
                return(ServiceResult.FailedWithMessage("用户不存在"));
            }

            var config = Resolve <IAutoConfigService>().GetList <RechargeAccountConfig>();
            var find   = config.FirstOrDefault(r => r.Id == rechargeAccount.Id);
            if (find == null)
            {
                return(ServiceResult.FailedWithMessage("配置不存在"));
            }

            #endregion 安全验证

            var moneyConfigs = Resolve <IAutoConfigService>().MoneyTypes();

            var moneyConfig = moneyConfigs.FirstOrDefault(p => p.Id == MoneyTypeConfig.CNY);
            var result      = Resolve <IBillService>().Increase(user, moneyConfig, find.ArriveAmount, "储值充值");
            if (result.Succeeded)
            {
                // 积分,优惠券,消费额
                if (find.DiscountAmount > 0)
                {
                    moneyConfig = moneyConfigs.FirstOrDefault(p => p.Id == MoneyTypeConfig.Point);
                    Resolve <IBillService>().Increase(user, moneyConfig, find.DiscountAmount, "储值充值赠送积分");
                }

                if (find.GiveChangeAmount > 0)
                {
                    moneyConfig = moneyConfigs.FirstOrDefault(p => p.Id == MoneyTypeConfig.ShopAmount);
                    Resolve <IBillService>().Increase(user, moneyConfig, find.GiveChangeAmount, "储值充值赠送消费额");
                }

                if (find.GiveBuyAmount > 0)
                {
                    moneyConfig = moneyConfigs.FirstOrDefault(p => p.Id == MoneyTypeConfig.Preferential);
                    Resolve <IBillService>().Increase(user, moneyConfig, find.GiveBuyAmount, "储值充值赠送优惠券");
                }

                var rechargeModel = new RechargeAccountLog
                {
                    ArriveAmount     = find.ArriveAmount,
                    DiscountAmount   = find.DiscountAmount,
                    GiveBuyAmount    = find.GiveBuyAmount,
                    GiveChangeAmount = find.GiveChangeAmount,
                    CreateTime       = DateTime.Now,
                    StoreAmount      = find.StoreAmount,
                    UserId           = user.Id
                };
                Resolve <IRechargeAccountLogService>().Add(rechargeModel);

                return(ServiceResult.SuccessWithObject("充值成功"));
            }

            return(ServiceResult.FailedWithMessage("充值失败"));
        }