public BaseResponse <string> RefundApply(RefundRecordFilter filter)
        {
            BaseResponse <string> response = new BaseResponse <string>();

            try
            {
                //查看工单状态
                var taskRepository = unitOfWork.GetRepository <DC_Task>();
                var task           = taskRepository.dbSet.FirstOrDefault((q) => q.ServiceOrderID == filter.ServiceOrderID);
                if (task != null && task.Status == Enum.GetName(typeof(TaskStatus), TaskStatus.Execution))
                {
                    response.IsSuccess     = false;
                    response.ResultMessage = "服务人员已签到,无法取消订单及退款,请联系管理员进行处理";
                    return(response);
                }

                unitOfWork.BeginTransaction();
                var orderModel = base.Get <DC_ServiceOrder, ServiceOrderModel>((q) => q.ServiceOrderID == filter.ServiceOrderID);
                if (orderModel != null)
                {
                    RefundRecordModel refundRecordModel = Mapper.DynamicMap <RefundRecordModel>(filter);
                    refundRecordModel.CreateBy     = 0;
                    refundRecordModel.CreateTime   = DateTime.Now;
                    refundRecordModel.ModifiedTime = DateTime.Now;
                    refundRecordModel.Status       = Enum.GetName(typeof(RefundStatus), RefundStatus.Wait);
                    base.Save <DC_RefundRecord, RefundRecordModel>(refundRecordModel, (q) => q.ID == refundRecordModel.ID);
                }
                else
                {
                    response.IsSuccess     = false;
                    response.ResultMessage = "该订单不存在,请联系管理员进行处理";
                    return(response);
                }
                unitOfWork.Commit();
                response.IsSuccess = true;
            }
            catch (Exception ex)
            {
                response.IsSuccess     = false;
                response.ResultMessage = ex.Message;
            }
            return(response);
        }
Esempio n. 2
0
        public IHttpActionResult RefundApply(RefundRecordFilter filter)
        {
            var response = service.RefundApply(filter);

            return(Ok(response));
        }
        public BaseResponse AuditRefund(RefundRecordFilter filter)
        {
            BaseResponse <string> response = new BaseResponse <string>();

            try
            {
                unitOfWork.BeginTransaction();
                var serviceOrderRepository            = unitOfWork.GetRepository <DC_ServiceOrder>();
                var feeDetailRepository               = unitOfWork.GetRepository <DC_FeeDetail>();
                var taskRepository                    = unitOfWork.GetRepository <DC_Task>();
                var refundRepository                  = unitOfWork.GetRepository <DC_RefundRecord>();
                var residentServicePlanItemRepository = unitOfWork.GetRepository <DC_ResidentServicePlanItem>();
                var serviceOrder = serviceOrderRepository.dbSet.FirstOrDefault((q) => q.ServiceOrderID == filter.ServiceOrderID);
                if (serviceOrder != null)
                {
                    //保存审核信息
                    var refund = refundRepository.dbSet.FirstOrDefault((q) => q.ID == filter.ID);
                    if (refund != null)
                    {
                        refund.Status       = filter.Status;
                        refund.Reply        = filter.Reply;
                        refund.ModifiedBy   = 0;
                        refund.ModifiedTime = DateTime.Now;
                        refundRepository.Update(refund);
                    }

                    //如果同意退款
                    if (filter.Status == Enum.GetName(typeof(RefundStatus), RefundStatus.Agree))
                    {
                        //取消订单
                        serviceOrder.IsDeleted     = true;
                        serviceOrder.PaymentStatus = null;
                        serviceOrder.OrderStatus   = null;
                        serviceOrder.ModifiedBy    = 0;
                        serviceOrder.ModifiedTime  = DateTime.Now;
                        serviceOrderRepository.Update(serviceOrder);

                        //退回金额
                        var depositRepository = unitOfWork.GetRepository <DC_Deposit>();
                        var deposit           = depositRepository.dbSet.FirstOrDefault(it => it.ResidentID == serviceOrder.ResidentID);
                        if (deposit != null)
                        {
                            deposit.TotalConSpeMonth -= serviceOrder.Price.Value;
                            depositRepository.Update(deposit);
                        }

                        //取消工单
                        var task = taskRepository.dbSet.FirstOrDefault((q) => q.ServiceOrderID == filter.ServiceOrderID);
                        if (task != null)
                        {
                            task.IsCancel     = true;
                            task.Status       = null;
                            task.ModifiedBy   = 0;
                            task.ModifiedTime = DateTime.Now;
                            taskRepository.Update(task);
                        }

                        if (serviceOrder.OrderType == Enum.GetName(typeof(OrderType), OrderType.Group))
                        {
                            var servicePlanItem = residentServicePlanItemRepository.Get(serviceOrder.ResidentServicePlanItemID);
                            if (servicePlanItem != null)
                            {
                                servicePlanItem.RestTimes = (servicePlanItem.RestTimes.HasValue ? (servicePlanItem.RestTimes + 1) : 1);
                                residentServicePlanItemRepository.Update(servicePlanItem);
                            }
                        }
                        else
                        {
                            //资金明细
                            var feeDetail = new DC_FeeDetail();
                            feeDetail.FeeNo      = base.GenerateCode(EnumCodeKey.FeeDetailCode, EnumCodeRule.YearMonthDay, "F", 6, filter.OrganizationID);
                            feeDetail.FeeName    = "订单退款";
                            feeDetail.TotalPrice = serviceOrder.Price;
                            feeDetail.ResidentID = serviceOrder.ResidentID;
                            feeDetail.FeeDate    = DateTime.Now;
                            feeDetailRepository.Insert(feeDetail);
                        }
                    }
                }
                else
                {
                    response.IsSuccess     = false;
                    response.ResultMessage = "该订单不存在,请联系管理员进行处理";
                    return(response);
                }
                unitOfWork.Commit();
                response.IsSuccess = true;
            }
            catch (Exception ex)
            {
                response.IsSuccess     = false;
                response.ResultMessage = ex.Message;
            }
            return(response);
        }
Esempio n. 4
0
        public IHttpActionResult SaveAudit(RefundRecordFilter filter)
        {
            var response = service.AuditRefund(filter);

            return(Ok(response));
        }