/// <summary>
        /// 订金充值校验
        /// <para>作     者:Huang GaoLiang </para>
        /// <para>创建时间:2018-10-30 </para>
        /// </summary>
        /// <param name="request">订金充值请求数据</param>
        /// <exception cref="BussinessException">
        /// 异常ID:1,定金充值金额必须大于
        /// 异常ID:2,预报名定金最多可以输入2000元
        /// 异常ID:3,游学营定金最多可输入4万元
        /// 异常ID:4,请选择付款方式
        /// </exception>
        private void Verification(DepositOrderAddRequest request)
        {
            // 1、订金金额
            if (request.Amount <= 0)
            {
                throw new BussinessException((byte)ModelType.Cash, 1);
            }

            // 2、订金用途
            if (request.UsesType == UsesType.SignUp && request.Amount > 2000)
            {
                throw new BussinessException((byte)ModelType.Cash, 2);
            }

            // 游学营订金充值不能大于4万
            else if (request.UsesType == UsesType.StudyCamp && request.Amount > 40000)
            {
                throw new BussinessException((byte)ModelType.Cash, 3);
            }

            // 3、付款方式
            if (request.PayType <= 0)
            {
                throw new BussinessException((byte)ModelType.Cash, 4);
            }
        }
        /// <summary>
        /// 添加订金
        /// <para>作     者:Huang GaoLiang </para>
        /// <para>创建时间:2018-10-30 </para>
        /// </summary>
        /// <param name="request">订金充值实体</param>
        /// <param name="payeeId">收银人编号</param>
        /// <param name="payeeName">收银人</param>
        /// <returns>返回订金编号</returns>

        public string Add(DepositOrderAddRequest request, string payeeId, string payeeName)
        {
            lock (LocalThreadLock.GetLockKeyName(LockKeyNames.LOCK_DEPOSITORDERADD, this._schoolId, request.StudentId.ToString()))
            {
                // 1、数据合法性校验
                Verification(request);

                long depositOrderId = IdGenerator.NextId();

                // 2、准备数据
                TblOdrDepositOrder odrDepositOrder = this.SetOdrDepositOrder(request, payeeId, payeeName, depositOrderId);

                // 3、资金调用
                DepositOrderTrade orderTrade = new DepositOrderTrade(odrDepositOrder);

                // 4、添加事务
                using (UnitOfWork unitOfWork = new UnitOfWork())
                {
                    try
                    {
                        unitOfWork.BeginTransaction();

                        TradeService tradeService = new TradeService(orderTrade, unitOfWork);
                        tradeService.Trade();

                        unitOfWork.GetCustomRepository <TblOdrDepositOrderRepository, TblOdrDepositOrder>().AddTask(odrDepositOrder).Wait();

                        unitOfWork.CommitTransaction();
                        return(depositOrderId.ToString());
                    }
                    catch (Exception ex)
                    {
                        unitOfWork.RollbackTransaction();
                        throw ex;
                    }
                }
            }
        }
        /// <summary>
        /// 订金充值
        /// <para>作     者:Huang GaoLiang </para>
        /// <para>创建时间:2018-10-30 </para>
        /// </summary>
        /// <param name="request">订金充值实体</param>
        /// <param name="payeeId">收银人编号</param>
        /// <param name="payeeName">收银人姓名</param>
        /// <param name="depositOrderId">订金编号</param>
        /// <returns>返回订金实体信息</returns>
        private TblOdrDepositOrder SetOdrDepositOrder(DepositOrderAddRequest request, string payeeId, string payeeName, long depositOrderId)
        {
            TblOdrDepositOrder odrDepositOrder = new TblOdrDepositOrder
            {
                DepositOrderId = depositOrderId,
                StudentId      = request.StudentId,
                SchoolId       = _schoolId,
                OrderNo        = CreateOrderNo(depositOrderId),
                PayDate        = DateTime.Now,
                UsesType       = (int)request.UsesType,
                Amount         = request.Amount,
                PayeeId        = payeeId,
                Payee          = payeeName,
                PayType        = (int)request.PayType,
                Remark         = request.Remark,
                OrderStatus    = (int)OrderStatus.Paid, //-1订单取消, 0待付款,1已付款/正常
                CancelUserId   = "",
                CancelRemark   = "",
                CreateTime     = DateTime.Now
            };

            return(odrDepositOrder);
        }
示例#4
0
 public string Post(DepositOrderAddRequest request)
 {
     return(new DepositOrderService(base.SchoolId).Add(request, base.CurrentUser.UserId, base.CurrentUser.UserName));
 }