コード例 #1
0
        /// <summary>
        /// 添加已核对的未交接核对信息
        /// <para>作    者:郭伟佳</para>
        /// <para>创建时间:2018-11-16</para>
        /// </summary>
        /// <param name="request">核对未交接数据对象</param>
        /// <param name="status">订单交接核对状态</param>
        /// <param name="orderInfo">订金信息对象</param>
        /// <returns>订单交接核对明细Id</returns>
        private long AddDepositUnhandover(OrderHandleAddRequest request, HandoverStatus status, TblOdrDepositOrder orderInfo)
        {
            var entity = new TblFinOrderHandoverDetail
            {
                OrderHandoverDetailId = IdGenerator.NextId(),
                OrderId          = orderInfo.DepositOrderId,
                OrderNo          = orderInfo.OrderNo,
                OrderTradeType   = request.OrderTradeType,
                PayType          = request.PayType,
                PayAmount        = request.PayAmount.Value,
                HandoverStatus   = (int)status,
                PersonalId       = request.PersonalId,
                PayDate          = request.PayDate,
                SchoolId         = request.SchoolId,
                UseBalanceAmount = request.UseBalanceAmount ?? 0,
                CreateTime       = DateTime.Now,
                CreatorId        = request.CreatorId,
                CreatorName      = request.CreatorName,
                StudentId        = orderInfo.StudentId,
                Remark           = orderInfo.Remark,
                TotalDiscountFee = 0
            };

            _detailRepository.Value.Add(entity);

            return(entity.OrderHandoverDetailId);
        }
コード例 #2
0
 public OrderHandleAddResponse MarkOrderProblem(OrderHandleAddRequest request)
 {
     request.CreatorId   = base.CurrentUser.UserId;
     request.CreatorName = base.CurrentUser.UserName;
     request.SchoolId    = base.SchoolId;
     return(new OrderHandoverService(base.SchoolId).MarkOrderProblem(request));
 }
コード例 #3
0
        /// <summary>
        /// 对未交接订单进行核对
        /// <para>作    者:郭伟佳</para>
        /// <para>创建时间:2018-11-16</para>
        /// </summary>
        /// <param name="request">核对未交接数据对象</param>
        /// <returns>订单交接核对明细Id</returns>
        /// <exception cref="BussinessException">
        /// 异常ID:
        /// 13. 此单信息核对有误
        /// 25. 订单已作废,不可核对
        /// </exception>
        public long Handle(OrderHandleAddRequest request)
        {
            //1.获取定金的订单交接核对明细
            var handoverDetailList = _detailRepository.Value.GetDetailsByOrderId(new List <long> {
                request.OrderId
            });

            //如存在已核对/已交接的收款交接明细,则不需要再核对订单,直接返回订单交接核对明细Id
            if (handoverDetailList != null && handoverDetailList.Any(a => a.HandoverStatus == (int)HandoverStatus.Checked || a.HandoverStatus == (int)HandoverStatus.Handover))
            {
                return(handoverDetailList.FirstOrDefault().OrderHandoverDetailId);
            }

            //2.数据校验 检查付款方式和金额跟订单是否一致,如不一致,则标志问题单
            var orderInfo = _depositRepository.Value.GetOdrDepositOrderById(request.OrderId).Result;                               //定金订单信息

            CheckData(request, x => orderInfo.OrderStatus == (int)OrderStatus.Cancel, 25);                                         //订单状态检查
            CheckData(request, x => x.PayType != orderInfo.PayType, 13);                                                           //付款方式
            CheckData(request, x => !x.PayAmount.HasValue || (x.PayAmount.HasValue && x.PayAmount.Value != orderInfo.Amount), 13); //金额跟订单是否一致

            //3.如有问题单,则将其更新为已核对状态
            var handoverDetail = handoverDetailList.FirstOrDefault(a => a.HandoverStatus == (int)HandoverStatus.Problematic);

            if (handoverDetail != null)
            {
                return(UpdateUnhandover(request, handoverDetail));
            }

            //4.订单核对
            return(AddDepositUnhandover(request, HandoverStatus.Checked, orderInfo));
        }
コード例 #4
0
        /// <summary>
        /// 对未交接订单进行核对
        /// <para>作    者:郭伟佳</para>
        /// <para>创建时间:2018-11-16</para>
        /// </summary>
        /// <param name="request">核对未交接数据对象</param>
        /// <returns>订单交接核对明细Id</returns>
        /// <exception cref="AMS.Core.BusinessException">
        /// 异常ID:
        /// 13. 此单信息核对有误
        /// 25. 订单已作废,不可核对
        /// </exception>
        public long Handle(OrderHandleAddRequest request)
        {
            //1.获取报班订单交接核对明细
            var handoverDetailList = _detailRepository.Value.GetDetailsByOrderId(new List <long> {
                request.OrderId
            });

            //获取报名的订单交接核对明细,如果已存在,则直接返回订单交接核对明细Id
            if (handoverDetailList != null && handoverDetailList.Any(a => a.HandoverStatus == (int)HandoverStatus.Checked || a.HandoverStatus == (int)HandoverStatus.Handover))
            {
                return(handoverDetailList.FirstOrDefault().OrderHandoverDetailId);
            }

            //2.数据校验 检查付款方式和金额跟订单是否一致,如不一致,则标志问题单
            var orderInfo = _enrollRepository.Value.GetOrderById(request.OrderId);                                                    //报班订单信息

            CheckData(request, x => orderInfo.OrderStatus == (int)OrderStatus.Cancel, 25);                                            //订单状态检查
            CheckData(request, x => x.PayType != orderInfo.PayType, 13);                                                              //付款方式
            CheckData(request, x => (x.UseBalanceAmount ?? 0) != orderInfo.UseBalance, 13);                                           //与订单的使用余额是否一致
            CheckData(request, x => !x.PayAmount.HasValue || (x.PayAmount.HasValue && x.PayAmount.Value != orderInfo.PayAmount), 13); //金额跟订单是否一致

            //3.如有问题单,则将其更新为已核对状态
            var handoverDetail = handoverDetailList.FirstOrDefault(a => a.HandoverStatus == (int)HandoverStatus.Problematic);

            if (handoverDetail != null)
            {
                return(UpdateUnhandover(request, handoverDetail));
            }

            //4.订单核对
            return(AddEnrollUnhandover(request, HandoverStatus.Checked, orderInfo));
        }
コード例 #5
0
        /// <summary>
        /// 将订单设为问题单
        /// <para>作    者:郭伟佳</para>
        /// <para>创建时间:2018-11-16</para>
        /// </summary>
        /// <param name="request">核对未交接的请求对象</param>
        /// <returns>收款交接要添加的订单信息</returns>
        public OrderHandleAddResponse MarkOrderProblem(OrderHandleAddRequest request)
        {
            //进行核对
            long handoverDetailId = this.GetOrderHandover(request.OrderTradeType).MarkOrderProblem(request);

            //上传附件并返回下一订单
            return(AddAttachmentAndReturnNextOrder(handoverDetailId, request));
        }
コード例 #6
0
 /// <summary>
 /// 数据校验
 /// <para>作    者:郭伟佳</para>
 /// <para>创建时间:2018-11-16</para>
 /// </summary>
 /// <param name="source">数据源</param>
 /// <param name="where">表达式</param>
 /// <param name="exceptionId">异常Id</param>
 /// <exception cref="AMS.Core.BussinessException">
 /// 异常ID:exceptionId
 /// </exception>
 protected virtual void CheckData(OrderHandleAddRequest source, Func <OrderHandleAddRequest, bool> where, ushort exceptionId)
 {
     if (source == null)
     {
         return;
     }
     if (where (source))
     {
         throw new BussinessException((byte)ModelType.Order, exceptionId);
     }
 }
コード例 #7
0
        /// <summary>
        /// 将问题单的收款交接更新成已交接
        /// <para>作    者:郭伟佳</para>
        /// <para>创建时间:2018-11-20</para>
        /// </summary>
        /// <param name="request">实体请求参数</param>
        /// <param name="handoverDetail">交接明细</param>
        /// <returns>订单交接核对明细Id</returns>
        protected virtual long UpdateUnhandover(OrderHandleAddRequest request, TblFinOrderHandoverDetail handoverDetail)
        {
            handoverDetail.PayDate          = request.PayDate;
            handoverDetail.PayType          = request.PayType;
            handoverDetail.PayAmount        = request.PayAmount.Value;
            handoverDetail.UseBalanceAmount = request.UseBalanceAmount ?? 0;
            handoverDetail.HandoverStatus   = (int)HandoverStatus.Checked;
            _detailRepository.Value.Update(handoverDetail);

            return(handoverDetail.OrderHandoverDetailId);
        }
コード例 #8
0
        /// <summary>
        /// 将订单设为问题单
        /// <para>作    者:郭伟佳</para>
        /// <para>创建时间:2018-11-16</para>
        /// </summary>
        /// <param name="request">核对未交接数据对象</param>
        /// <returns>订单交接核对明细Id</returns>
        public long MarkOrderProblem(OrderHandleAddRequest request)
        {
            //获取定金的订单交接核对明细,如果已存在,则直接返回订单交接核对明细Id
            var handoverDetail = _detailRepository.Value.GetDetailsByOrderId(new List <long> {
                request.OrderId
            });

            if (handoverDetail != null && handoverDetail.Count > 0)
            {
                return(handoverDetail.FirstOrDefault().OrderHandoverDetailId);
            }
            //获取订单id对应的定金订单信息
            var orderInfo = _depositRepository.Value.GetOdrDepositOrderById(request.OrderId).Result;

            //添加有问题的未交接核对信息
            return(AddDepositUnhandover(request, HandoverStatus.Problematic, orderInfo));
        }
コード例 #9
0
        /// <summary>
        /// 上传附件并返回下一订单
        /// <para>作    者:郭伟佳</para>
        /// <para>创建时间:2018-11-19</para>
        /// </summary>
        /// <param name="handoverDetailId">添加收款未交接Id</param>
        /// <param name="request">核对未交接的请求对象</param>
        /// <returns>收款交接要添加的订单信息</returns>
        private OrderHandleAddResponse AddAttachmentAndReturnNextOrder(long handoverDetailId, OrderHandleAddRequest request)
        {
            //3、保存余额退费上传的附件
            AddAttachment(request.AttachmentUrlList, handoverDetailId);

            //先获取报名订单
            return(GetNextHandoverOrder(request.PersonalId, request.OrderId));
        }