コード例 #1
0
        public IHttpActionResult Post(ServiceOrderModel baseRequest)
        {
            baseRequest.OrderFrom      = Enum.GetName(typeof(OrderFrom), OrderFrom.Web);
            baseRequest.OrganizationID = SecurityHelper.CurrentPrincipal.OrgId;
            var response = service.SaveOrder(baseRequest);

            return(Ok(response));
        }
コード例 #2
0
        public HttpResponseMessage Post([FromBody] ServiceOrderModel model)
        {
            //获取订单明细对应的商品
            var products = _productService.GetProductsByCondition(new ProductSearchCondition
            {
                Ids  = model.Details.Select(c => c.Product.Id).ToArray(),
                Type = EnumProductType.Service
            }).ToList().Select(p => new ServiceOrderDetailEntity
            {
                Count   = model.Details.First(d => d.Product.Id == p.Id).Count,
                Product = p,
                Price   = p.Price
            }).ToList();

            if (products.Count < 1)
            {
                return(PageHelper.toJson(PageHelper.ReturnValue(false, "生成订单失败,无法找到服务商品")));
            }
            //订单编号
            Random rd          = new Random();
            var    orderNumber = "S" + DateTime.Now.ToString("yyyyMMddHHmmssffff") + rd.Next(100, 999);

            //订单实体
            var entity = new ServiceOrderEntity
            {
                OrderNo     = orderNumber,
                AddTime     = DateTime.Now,
                AddUser     = _workContext.CurrentUser.Id,
                Flee        = products.Sum(c => (c.Count * c.Price)),
                Address     = _memberAddressService.GetMemberAddressById(model.MemberAddressId),
                Servicetime = model.Servicetime,
                Remark      = model.Remark,
                Details     = products,
                Status      = EnumServiceOrderStatus.Created,
                UpdUser     = _workContext.CurrentUser.Id,
                UpdTime     = DateTime.Now,
                AddMember   = _memberService.GetMemberByUserId(_workContext.CurrentUser.Id)
            };

            //保存
            if (_serviceOrderService.Create(entity).Id > 0)
            {
                //TODO:回掉接口写到Msg里,完成回掉方法
                return(PageHelper.toJson(PageHelper.ReturnValue(true, "null", new ServiceOrderModel()
                {
                    Id = entity.Id,
                    OrderNo = entity.OrderNo,
                    Flee = entity.Flee,
                    Addtime = entity.AddTime
                })));
            }
            return(PageHelper.toJson(PageHelper.ReturnValue(false, "生成服务订单失败")));
        }
コード例 #3
0
        public bool Put([FromBody] ServiceOrderModel model)
        {
            var entity = _serviceOrderService.GetServiceOrderById(model.Id);

            if (entity == null)
            {
                return(false);
            }
            entity.Status  = model.Status;
            entity.UpdUser = _workContext.CurrentUser.Id;
            entity.UpdTime = DateTime.Now;
            return(_serviceOrderService.Update(entity) != null);
        }
コード例 #4
0
        public IHttpActionResult Post(ServiceOrderModel baseRequest)
        {
            baseRequest.OrderFrom = Enum.GetName(typeof(OrderFrom), OrderFrom.Web);
            var response = service.SaveOrder(baseRequest);

            if (response.IsSuccess)
            {
                var orderPayRs = service.OrderSettlement(response.Data.ServiceOrderID, response.Data.Payment);
                response.IsSuccess     = orderPayRs.IsSuccess;
                response.ResultMessage = orderPayRs.ResultMessage;
            }
            return(Ok(response));
        }
コード例 #5
0
        public ServiceOrderModel Get(int id)
        {
            var currentUser = (UserBase)_workContext.CurrentUser;
            var entity      = _serviceOrderService.GetServiceOrderById(id);

            if (entity == null)
            {
                return(null);
            }
            if (!currentUser.UserRoles.ToList()
                .Exists(c => c.Role.RoleName == "superAdmin" || c.Role.RoleName == "admin") && entity.AddUser != currentUser.Id)
            {
                return(null);
            }
            var model = new ServiceOrderModel
            {
                Id          = entity.Id,
                OrderNo     = entity.OrderNo,
                Addtime     = entity.AddTime,
                AddUser     = entity.AddUser,
                Flee        = entity.Flee,
                Address     = entity.Address.Address,
                Servicetime = entity.Servicetime,
                Remark      = entity.Remark,
                Details     = entity.Details.Select(c => new ServiceOrderDetailModel()
                {
                    Count   = c.Count,
                    Id      = c.Id,
                    Price   = c.Price,
                    Product = new ProductModel
                    {
                        Id      = c.Product.Id,
                        Name    = c.Product.Name,
                        MainImg = c.Product.MainImg
                    }
                }).ToList(),
                Status          = entity.Status,
                UpdUser         = entity.UpdUser,
                UpdTime         = entity.UpdTime,
                MemberAddressId = entity.Address.Id
            };

            return(model);
        }
コード例 #6
0
        public IHttpActionResult SaveOrder([FromBody] ServiceOrderModel baseRequest)
        {
            BaseResponse <ServiceOrderModel> response = new BaseResponse <ServiceOrderModel>();

            if (baseRequest != null)
            {
                baseRequest.OrderFrom = Enum.GetName(typeof(OrderFrom), OrderFrom.App);
                response = service.SaveOrder(baseRequest);
                if (response.IsSuccess && response.Data.OrderType == Enum.GetName(typeof(OrderType), OrderType.Group))
                {
                    var orderPayRs = service.OrderSettlement(response.Data.ServiceOrderID, response.Data.Payment);
                    response.IsSuccess     = orderPayRs.IsSuccess;
                    response.ResultMessage = orderPayRs.ResultMessage;
                }
                return(Ok(response));
            }
            else
            {
                response.ResultCode    = 501;
                response.ResultMessage = "输入的参数不正确";
                response.IsSuccess     = false;
                return(Ok(response));
            }
        }
コード例 #7
0
        public BaseResponse <ServiceOrderModel> SaveOrder(ServiceOrderModel request)
        {
            var response     = new BaseResponse <ServiceOrderModel>();
            var responseData = new List <ServiceOrderModel>();
            var serviceItemCategoryRepository     = unitOfWork.GetRepository <DC_ServiceItemCategory>();
            var serviceOrderRepository            = unitOfWork.GetRepository <DC_ServiceOrder>();
            var serOrdSerItRepository             = unitOfWork.GetRepository <DC_SerOrdSerIt>();
            var serviceItemRepository             = unitOfWork.GetRepository <DC_ServiceItem>();
            var residentServicePlanItemRepository = unitOfWork.GetRepository <DC_ResidentServicePlanItem>();
            var orderCItemRepository = unitOfWork.GetRepository <DC_OrderCItem>();

            int?servicePlantItemID = null;

            unitOfWork.BeginTransaction();
            //套餐预约时,需扣除套餐内次数
            if (request.OrderType == Enum.GetName(typeof(OrderType), OrderType.Group))
            {
                var nowDate         = DateTime.Now;
                var servicePlanItem = new DC_ResidentServicePlanItem();
                if (request.ResidentServicePlanItemID.HasValue)
                {
                    var servicePlanRepository = from a in unitOfWork.GetRepository <DC_ResidentServicePlan>().dbSet.Where(a => a.ResidentID == request.ResidentID && a.SStartDate <= nowDate && a.SEndDate >= nowDate)
                                                join b in unitOfWork.GetRepository <DC_ResidentServicePlanItem>().dbSet.Where(a => a.RestTimes > 0 && a.ResidentServicePlanItemID == request.ResidentServicePlanItemID) on a.ResidentServicePlanID equals b.ResidentServicePlanID
                                                select b;
                    servicePlanItem = servicePlanRepository.FirstOrDefault();
                }
                else
                {
                    var servicePlanRepository = from a in unitOfWork.GetRepository <DC_ResidentServicePlan>().dbSet.Where(a => a.ResidentID == request.ResidentID && a.SStartDate <= nowDate && a.SEndDate >= nowDate)
                                                join b in unitOfWork.GetRepository <DC_ResidentServicePlanItem>().dbSet.Where(a => a.RestTimes > 0 && a.ServiceItemID == request.ServiceItemID) on a.ResidentServicePlanID equals b.ResidentServicePlanID
                                                select b;
                    servicePlanItem = servicePlanRepository.FirstOrDefault();
                }

                if (servicePlanItem != null)
                {
                    servicePlantItemID         = servicePlanItem.ResidentServicePlanItemID;
                    servicePlanItem.RestTimes -= 1;
                    residentServicePlanItemRepository.Update(servicePlanItem);
                }
                else
                {
                    response.IsSuccess     = false;
                    response.ResultMessage = "该项目的套餐内服务次数已经用完。";
                    return(response);
                }
            }

            var serviceOrder = serviceOrderRepository.dbSet.FirstOrDefault((q) => q.ServiceOrderID == request.ServiceOrderID);

            if (serviceOrder == null)
            {
                serviceOrder = Mapper.DynamicMap <DC_ServiceOrder>(request);
                serviceOrder.ServiceOrderID = int.Parse(base.GeneratePrimaryKeyValue(EnumCodeKey.ServiceOrder));
                if (String.IsNullOrEmpty(serviceOrder.SONo))
                {
                    serviceOrder.SONo = base.GeneratePrimaryKeyValue(EnumCodeKey.ServiceOrderCode);
                }
                serviceOrder.PaymentStatus = Enum.GetName(typeof(PaymentStatus), PaymentStatus.Unpaid);
                serviceOrder.OrderStatus   = Enum.GetName(typeof(OrderStatus), OrderStatus.Wait);
                if (request.OrderType == Enum.GetName(typeof(OrderType), OrderType.Group))
                {
                    serviceOrder.ResidentServicePlanItemID = servicePlantItemID;
                }
                serviceOrder.CreatedTime  = DateTime.Now;
                serviceOrder.ModifiedTime = DateTime.Now;
                serviceOrderRepository.Insert(serviceOrder);
            }
            else
            {
                Mapper.DynamicMap(request, serviceOrder);
                serviceOrder.ModifiedTime = DateTime.Now;
                serviceOrderRepository.Update(serviceOrder);
            }

            if (request.ServiceOrderID == 0)
            {
                if (request.OrderType == Enum.GetName(typeof(OrderType), OrderType.Commodity))
                {
                    if (request.CommodityItems != null)
                    {
                        request.CommodityItems.ForEach(a =>
                        {
                            var orderCItem            = Mapper.DynamicMap <DC_OrderCItem>(a);
                            orderCItem.ServiceOrderID = serviceOrder.ServiceOrderID;
                            orderCItem.CreatedTime    = DateTime.Now;
                            orderCItem.ModifiedTime   = DateTime.Now;
                            orderCItemRepository.Insert(orderCItem);
                        });
                    }
                }
                else
                {
                    var serviceItem = serviceItemRepository.Get(request.ServiceItemID);
                    if (serviceItem != null)
                    {
                        var serOrdSerIt = Mapper.DynamicMap <DC_SerOrdSerIt>(serviceItem);
                        serOrdSerIt.ServiceOrderID = serviceOrder.ServiceOrderID;
                        serOrdSerIt.CreatedTime    = DateTime.Now;
                        serOrdSerIt.ModifiedTime   = DateTime.Now;
                        serOrdSerItRepository.Insert(serOrdSerIt);
                    }
                    else
                    {
                        response.IsSuccess     = false;
                        response.ResultMessage = "该项目不存在。";
                        return(response);
                    }
                }
            }

            unitOfWork.Commit();
            response.Data = Mapper.DynamicMap <ServiceOrderModel>(serviceOrder);

            return(response);
        }
コード例 #8
0
        public BaseResponse <ServiceOrderModel> SaveOrder(ServiceOrderModel request)
        {
            var response     = new BaseResponse <ServiceOrderModel>();
            var responseData = new List <ServiceOrderModel>();
            var serviceItemCategoryRepository     = unitOfWork.GetRepository <DC_ServiceItemCategory>();
            var serviceOrderRepository            = unitOfWork.GetRepository <DC_ServiceOrder>();
            var serOrdSerItRepository             = unitOfWork.GetRepository <DC_SerOrdSerIt>();
            var serviceItemRepository             = unitOfWork.GetRepository <DC_ServiceItem>();
            var residentServicePlanItemRepository = unitOfWork.GetRepository <DC_ResidentServicePlanItem>();
            var orgRepository = unitOfWork.GetRepository <ORG_Organization>();

            unitOfWork.BeginTransaction();

            var serviceOrder = serviceOrderRepository.dbSet.FirstOrDefault((q) => q.ServiceOrderID == request.ServiceOrderID);

            if (serviceOrder == null)
            {
                serviceOrder = Mapper.DynamicMap <DC_ServiceOrder>(request);
                serviceOrder.ServiceOrderID = int.Parse(base.GeneratePrimaryKeyValue(EnumCodeKey.ServiceOrder));
                if (String.IsNullOrEmpty(serviceOrder.SONo))
                {
                    serviceOrder.SONo = base.GeneratePrimaryKeyValue(EnumCodeKey.ServiceOrderCode);
                }
                serviceOrder.PaymentStatus = Enum.GetName(typeof(PaymentStatus), PaymentStatus.Unpaid);
                serviceOrder.OrderStatus   = Enum.GetName(typeof(OrderStatus), OrderStatus.Wait);
                serviceOrder.OrderCreator  = request.CreatedBy;
                serviceOrder.CreatedBy     = request.CreatedBy;
                serviceOrder.CreatedTime   = DateTime.Now;
                serviceOrder.ModifiedTime  = DateTime.Now;
                serviceOrderRepository.Insert(serviceOrder);
            }
            else
            {
                Mapper.DynamicMap(request, serviceOrder);
                serviceOrder.ModifiedTime = DateTime.Now;
                serviceOrderRepository.Update(serviceOrder);
            }

            if (request.ServiceOrderID == 0 && request.ServiceItems != null && request.ServiceItems.Count > 0)
            {
                var serialNo = 1;
                request.ServiceItems.ForEach(a => {
                    var serOrdSerIt             = Mapper.DynamicMap <DC_SerOrdSerIt>(a);
                    serOrdSerIt.ServiceSerialNo = serialNo;
                    serOrdSerIt.ServiceOrderID  = serviceOrder.ServiceOrderID;
                    serOrdSerIt.ChargeStatus    = (int)ChargeStatus.Unpaid;
                    serOrdSerIt.CreatedBy       = serviceOrder.OrderCreator.Value;
                    serOrdSerIt.CreatedTime     = DateTime.Now;
                    serOrdSerItRepository.Insert(serOrdSerIt);
                    serialNo++;
                });
            }

            if (serviceOrder.ServiceAppID.HasValue)
            {
                var serApp = unitOfWork.GetRepository <DC_ServiceAppointment>().Get(serviceOrder.ServiceAppID);
                if (serApp != null)
                {
                    serApp.Status = Enum.GetName(typeof(AppointmentStatus), AppointmentStatus.Ordered);
                    unitOfWork.GetRepository <DC_ServiceAppointment>().Update(serApp);
                }
            }

            unitOfWork.Commit();
            response.Data = Mapper.DynamicMap <ServiceOrderModel>(serviceOrder);
            var org = orgRepository.Get(request.OrganizationID);

            if (request.ServiceOrderID == 0 && org != null && !org.IsPayFirstFlag.Value)
            {
                var ordSerIt = unitOfWork.GetRepository <DC_SerOrdSerIt>().dbSet.Where(a => a.ServiceOrderID == serviceOrder.ServiceOrderID).Select(a => a.ServiceOrderSIID).ToList();
                var rs       = SyncToCheckQueue(ordSerIt, serviceOrder.OrderCreator.Value);
            }
            return(response);
        }