コード例 #1
0
        /// <summary>
        /// 获取已经支付未完成的的订单
        /// </summary>
        /// <param name="requst"></param>
        /// <returns></returns>
        public bool ExistsPayReg(RequestUserOPDRegisterSubmitDTO requst, out OrderRepeatReturnDTO order)
        {
            using (DBEntities db = new DBEntities())
            {
                OrderRepeatReturnDTO opdModel = null;
                opdModel = (from opd in db.UserOpdRegisters.Where(a => a.UserID == requst.UserID &&
                                                                  a.MemberID == requst.MemberID && a.OPDType == requst.OPDType &&
                                                                  a.IsDeleted == false)
                            join opdOrder in db.Orders on opd.OPDRegisterID equals opdOrder.OrderOutID
                            join room in db.ConversationRooms on opd.OPDRegisterID equals room.ServiceID
                            where opdOrder.OrderState == EnumOrderState.Paid &&
                            room.RoomState != EnumRoomState.AlreadyVisit
                            orderby opdOrder.OrderTime descending
                            select new OrderRepeatReturnDTO
                {
                    OrderOutID = opd.OPDRegisterID,
                    OrderNo = opdOrder.OrderNo,
                    OrderState = opdOrder.OrderState,
                    ChannelID = room.ChannelID,
                    DoctorID = opd.DoctorID,
                }).FirstOrDefault();

                //已经预约了
                if (opdModel != null)
                {
                    order = opdModel;
                    return(true);
                }
                else
                {
                    order = null;
                    return(false);
                }
            }
        }
コード例 #2
0
 public ApiResult ChangeInterpretationConsultingRoom([FromBody] RequestInterpretationRoomChangeDTO request)
 {
     try
     {
         var obj     = userOPDRegisterService.Single(request.OriginalOPDRegisterID);
         var consult = new RequestUserOPDRegisterSubmitDTO();
         consult.MemberID       = request.MemberID;
         consult.ConsultContent = obj.ConsultContent;
         consult.UserID         = obj.UserID;
         consult.OrgnazitionID  = obj.OrgnazitionID;
         if (obj.AttachFiles != null)
         {
             obj.AttachFiles.ForEach(i => {
                 consult.Files.Add(new RequestUserFileDTO {
                     FileUrl = i.FileUrl.Replace(ImageBaseDto.UrlPrefix + "/", ""), Remark = i.Remark
                 });
             });
         }
         userOPDRegisterService.Cancel(request.OriginalOPDRegisterID);
         return(userOPDRegisterService.CreateConsultingRoom(consult, null));
     }
     catch (Exception ex)
     {
         return(EnumApiStatus.BizOK.ToApiResultForApiStatus(ex.Message));
     }
 }
コード例 #3
0
        /// <summary>
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        decimal GetServicePriceWithSubmitRequest(RequestUserOPDRegisterSubmitDTO request)
        {
            var bll = new BLL.Doctor.Implements.DoctorService();

            //医生服务
            var docServiceInfo = bll.GetDoctorServicePriceSetting(request.DoctorID, request.OPDType);

            //医生排版和医生服务正常
            if (docServiceInfo != null)
            {
                //医生开通了服务
                if (docServiceInfo.ServiceSwitch == 1)
                {
                    if (request.OPDType == EnumDoctorServiceType.Registration)
                    {
                        return(0);
                    }
                    //如果是药房的预约那么则不需要收费
                    else if (request.UserType == EnumUserType.Drugstore)
                    {
                        return(0);
                    }
                    else
                    {
                        return(docServiceInfo.ServicePrice);
                    }
                }
            }

            return(-1);
        }
コード例 #4
0
        public ApiResult TodaySubmited([FromUri] RequestUserOPDRegisterSubmitDTO request)
        {
            BLL.UserOPDRegisterService bll = new UserOPDRegisterService(CurrentOperatorUserID);

            //默认当前登录用户
            request.UserID = CurrentOperatorUserID;
            OrderRepeatReturnDTO existsOrder;

            return(bll.ExistsWithSubmitRequest(request, out existsOrder).ToApiResultForBoolean());
        }
コード例 #5
0
        public ApiResult Insert([FromBody] RequestUserOPDRegisterSubmitDTO request)
        {
            BLL.UserOPDRegisterService bll = new UserOPDRegisterService(CurrentOperatorUserID);

            if (request.OPDType != EnumDoctorServiceType.VidServiceType && request.OPDType != EnumDoctorServiceType.AudServiceType)
            {
                return(new ApiResult()
                {
                    Status = EnumApiStatus.BizError, Msg = "此接口只支持视频和语音预约"
                });
            }

            //默认当前登录用户
            request.UserID   = CurrentOperatorUserID;
            request.UserType = CurrentOperatorUserType;

            var ret = bll.Submit(request, true);

            //成功
            if (ret.ActionStatus == "Success")
            {
                return(ret.ToApiResultForObject(EnumApiStatus.BizOK));
            }
            //不支持
            else if (ret.ActionStatus == "UnSupport")
            {
                return(ret.ToApiResultForObject(EnumApiStatus.BizOK));
            }
            //预约重复
            else if (ret.ActionStatus == "Repeat")
            {
                return(ret.ToApiResultForObject(EnumApiStatus.BizOK));
            }
            else if (ret.ActionStatus == "DiagnoseOff")
            {
                return(ret.ToApiResultForObject(EnumApiStatus.BizOK));
            }
            //预约失败
            else if (ret.ActionStatus == "Fail")
            {
                return(ret.ToApiResultForObject(EnumApiStatus.BizError));
            }
            else
            {
                return(new ApiResult()
                {
                    Data = ret, Status = EnumApiStatus.BizError, Msg = ret.ErrorInfo
                });
            }
        }
コード例 #6
0
        public ApiResult Submit([FromBody] RequestUserOPDRegisterSubmitDTO request)
        {
            var result = userOPDRegisterService.Submit(request);

            //预约成功
            if (result.ActionStatus == "Success")
            {
                return(result.ToApiResultForObject());
            }

            return(new ApiResult()
            {
                Data = result, Status = EnumApiStatus.BizError, Msg = result.ErrorInfo
            });
        }
コード例 #7
0
        public bool AddConversationRoom(RequestUserOPDRegisterSubmitDTO request, DBEntities db = null)
        {
            bool dbPrivateFlag = false;

            if (db == null)
            {
                db            = CreateDb();
                dbPrivateFlag = true;
            }

            #region 创建房间
            request.ChannelID = Guid.NewGuid().ToString("N");
            var room = new ConversationRoom()
            {
                EndTime            = DateTime.Parse(request.OPDDate.ToString("yyyy-MM-dd ") + request.OPDEndTime),
                BeginTime          = DateTime.Parse(request.OPDDate.ToString("yyyy-MM-dd ") + request.OPDBeginTime),
                TotalTime          = 0,
                RoomState          = EnumRoomState.NoTreatment,//状态
                ConversationRoomID = request.ChannelID,
                ServiceID          = request.OPDRegisterID,
                ServiceType        = request.OPDType,
                //如果预约类型是挂号那么房间类型就是线下看诊,否则是线上看诊
                RoomType = EnumRoomType.Group,
                TriageID = long.MaxValue,
                Priority = request.UserLevel,
                DisableWebSdkInteroperability = true,
            };

            db.ConversationRooms.Add(room);
            #endregion

            var ret = true;

            if (dbPrivateFlag)
            {
                db.Dispose();
                ret = db.SaveChanges() > 0;
            }
            return(ret);
        }
コード例 #8
0
        public ApiResult Insert([FromBody] RequestUserOPDRegisterSubmitDTO request)
        {
            var ret = userOPDRegisterService.Submit(request, true);

            //成功
            if (ret.ActionStatus == "Success")
            {
                return(ret.ToApiResultForObject(EnumApiStatus.BizOK));
            }
            //不支持
            else if (ret.ActionStatus == "UnSupport")
            {
                return(ret.ToApiResultForObject(EnumApiStatus.BizOK));
            }
            //预约重复
            else if (ret.ActionStatus == "Repeat")
            {
                return(ret.ToApiResultForObject(EnumApiStatus.BizOK));
            }
            else if (ret.ActionStatus == "DiagnoseOff")
            {
                return(ret.ToApiResultForObject(EnumApiStatus.BizOK));
            }
            //预约失败
            else if (ret.ActionStatus == "Fail")
            {
                return(ret.ToApiResultForObject(EnumApiStatus.BizError));
            }
            else
            {
                return(new ApiResult()
                {
                    Data = ret, Status = EnumApiStatus.BizError, Msg = ret.ErrorInfo
                });
            }
        }
コード例 #9
0
 public ApiResult CreateInterpretationConsultingRoom([FromBody] RequestUserOPDRegisterSubmitDTO request)
 {
     request.ConsultContent = "报告解读";
     return(userOPDRegisterService.CreateConsultingRoom(request));
 }
コード例 #10
0
        /// <summary>
        /// 提交预约
        /// </summary>
        /// <param name="request"></param>
        /// <param name="CheckExists">是否检查重复预约</param>
        /// <returns></returns>
        public ResponseUserOPDRegisterSubmitDTO Submit(RequestUserOPDRegisterSubmitDTO request)
        {
            #region 校验失败:重复预约
            var existsOrder = new OrderRepeatReturnDTO();

            if (ExistsWithSubmitRequest(request, out existsOrder))
            {
                if (existsOrder.OrderState == EnumOrderState.NoPay)
                {
                    return(new ResponseUserOPDRegisterSubmitDTO
                    {
                        ErrorInfo = "预约成功",
                        ActionStatus = "Success",
                        OPDRegisterID = existsOrder.OrderOutID,
                        OrderNO = existsOrder.OrderNo,
                        OrderState = existsOrder.OrderState,
                        ChannelID = existsOrder.ChannelID
                    });
                }
                else
                {
                    return(new ResponseUserOPDRegisterSubmitDTO
                    {
                        ErrorInfo = "已有未完成的预约,不能重复预约",
                        OPDRegisterID = existsOrder.OrderOutID,
                        OrderNO = existsOrder.OrderNo,
                        OrderState = existsOrder.OrderState,
                        ChannelID = existsOrder.ChannelID,
                        ActionStatus = "Repeat"
                    });
                }
            }
            #endregion

            using (DAL.EF.DBEntities db = new DBEntities())
            {
                var Reason = "";

                var orderService = new OrderService(CurrentOperatorUserID);

                //获取服务价格
                decimal ServicePrice    = 0.01M;
                var     OPDDate         = DateTime.Now;
                var     OPDBeginTime    = DateTime.Now.ToString("HH:mm");
                var     OPDEndTime      = DateTime.Now.AddMinutes(30).ToString("HH:mm");
                var     OrderExpireTime = DateTime.Now.AddMinutes(30);

                RequestUserMemberDTO member = new UserMemberService().
                                              GetDefaultMemberInfo(request.UserID).Map <ResponseUserMemberDTO, RequestUserMemberDTO>();


                #region 新增预约记录
                UserOPDRegister model = new UserOPDRegister()
                {
                    CreateUserID   = request.UserID,
                    OPDType        = request.OPDType,
                    MemberID       = request.MemberID,
                    Fee            = ServicePrice,//服务价格
                    OPDRegisterID  = Guid.NewGuid().ToString("N"),
                    UserID         = request.UserID,
                    ConsultContent = string.IsNullOrEmpty(request.ConsultContent) ? "" : request.ConsultContent,
                };

                if (member != null)
                {
                    model.MemberName = member.MemberName;
                    model.Gender     = member.Gender;
                    model.Marriage   = member.Marriage;
                    model.Age        = member.Age;
                    model.IDNumber   = string.IsNullOrEmpty(member.IDNumber) ? "" : member.IDNumber;
                    model.IDType     = member.IDType;
                    model.Mobile     = member.Mobile;
                    model.Address    = member.Address;
                    model.Birthday   = member.Birthday;
                }

                db.UserOpdRegisters.Add(model);

                #endregion

                #region 添加附件
                if (request.Files != null)
                {
                    foreach (var file in request.Files)
                    {
                        db.UserFiles.Add(new UserFile()
                        {
                            FileID     = Guid.NewGuid().ToString("N"),
                            FileName   = file.FileUrl,
                            FileUrl    = file.FileUrl,
                            FileType   = 0,
                            Remark     = file.Remark,
                            AccessKey  = "",
                            ResourceID = "",
                            OutID      = model.OPDRegisterID,
                            UserID     = request.UserID
                        });
                    }
                }
                #endregion

                #region 创建房间
                var room = new Entity.ConversationRoom();
                room.EndTime            = DateTime.Parse(OPDDate.ToString("yyyy-MM-dd ") + OPDEndTime);
                room.BeginTime          = DateTime.Parse(OPDDate.ToString("yyyy-MM-dd ") + OPDBeginTime);
                room.TotalTime          = 0;
                room.RoomState          = EnumRoomState.NoTreatment;//状态
                room.ConversationRoomID = Guid.NewGuid().ToString("N");
                room.ServiceID          = model.OPDRegisterID;
                room.ServiceType        = model.OPDType;
                //如果预约类型是挂号那么房间类型就是线下看诊,否则是线上看诊
                room.RoomType = EnumRoomType.Group;
                db.Set <ConversationRoom>().Add(room);
                #endregion

                #region 创建订单

                EnumProductType ProductType = EnumProductType.Other;

                switch (model.OPDType)
                {
                case EnumDoctorServiceType.VidServiceType:
                    ProductType = EnumProductType.video;
                    break;

                default:
                    break;
                }

                var order = orderService.CreateOrder(new OrderDTO()
                {
                    OrderType       = ProductType,
                    OrderOutID      = model.OPDRegisterID,
                    UserID          = model.UserID,
                    OrderTime       = DateTime.Now,
                    OrderExpireTime = OrderExpireTime,
                    Details         = new List <OrderDetailDTO>()
                    {
                        new OrderDetailDTO()
                        {
                            Subject     = ProductType.GetEnumDescript(),
                            Body        = "",
                            ProductId   = "",
                            ProductType = ProductType,
                            Quantity    = 1,
                            UnitPrice   = model.Fee
                        }
                    }
                }, db);

                #endregion

                if (db.SaveChanges() > 0)
                {
                    //确定订单
                    if (orderService.Confirm(order.OrderNo, new RequestOrderConfirmDTO()
                    {
                        OrderNo = order.OrderOutID,
                    }) == EnumApiStatus.BizOK)
                    {
                        order = orderService.GetOrder(order.OrderNo);

                        return(new ResponseUserOPDRegisterSubmitDTO
                        {
                            ErrorInfo = "预约成功",
                            ActionStatus = "Success",
                            OPDRegisterID = model.OPDRegisterID,
                            OrderNO = order.OrderNo,
                            OrderState = order.OrderState,
                            ChannelID = room.ChannelID
                        });
                    }
                    else
                    {
                        orderService.Cancel(order.OrderNo);
                    }
                }

                return(new ResponseUserOPDRegisterSubmitDTO
                {
                    ErrorInfo = "预约失败",
                    ActionStatus = "Fail",
                });
            }
        }
コード例 #11
0
        public bool AddOpdRegister(RequestUserOPDRegisterSubmitDTO request, DBEntities db = null)
        {
            bool dbPrivateFlag = false;

            if (db == null)
            {
                db            = CreateDb();
                dbPrivateFlag = true;
            }

            request.OPDRegisterID = Guid.NewGuid().ToString("N");

            #region 新增预约记录
            UserOPDRegister model = new UserOPDRegister()
            {
                IsUseTaskPool     = request.IsUseTaskPool,
                CreateTime        = DateTime.Now,
                ScheduleID        = request.ScheduleID,
                DeleteTime        = DateTime.Now,
                ModifyTime        = DateTime.Now,
                IsDeleted         = false,
                DoctorGroupID     = string.IsNullOrEmpty(request.DoctorGroupID) ? "" : request.DoctorGroupID,
                CreateUserID      = request.UserID,
                OrgnazitionID     = request.OrgnazitionID,
                OPDType           = request.OPDType,
                MemberID          = request.MemberID,
                CostType          = request.CostType,
                RegDate           = DateTime.Now,
                OPDBeginTime      = request.OPDBeginTime,                                           //服务预约时间段开始
                OPDEndTime        = request.OPDEndTime,                                             //服务预约时间端结束
                Fee               = request.ServicePrice,                                           //服务价格
                DoctorID          = string.IsNullOrEmpty(request.DoctorID) ? "" : request.DoctorID, //医生编号
                DoctorName        = string.IsNullOrEmpty(request.DoctorName) ? "" : request.DoctorName,
                PhotoUrl          = string.IsNullOrEmpty(request.PhotoUrl) ? "": request.PhotoUrl,
                RenewFee          = request.RenewFee,
                MedicalCardNumber = request.MedicalCardID,
                Flag              = request.Flag,
                DoctorPhotoUrl    = string.IsNullOrEmpty(request.DoctorPhotoUrl) ? "" : request.DoctorPhotoUrl,
                UserAccount       = request.UserAccount,
                OPDDate           = request.OPDDate,//预约日期
                OPDRegisterID     = request.OPDRegisterID,
                UserID            = request.UserID,
                ConsultContent    = string.IsNullOrEmpty(request.ConsultContent) ? "" : request.ConsultContent,
                ConsultDisease    = string.IsNullOrEmpty(request.ConsultDisease) ? "" : request.ConsultDisease,
                MemberName        = request.MemberName,
                Gender            = request.Gender,
                Marriage          = request.Marriage,
                Age               = request.Age,
                IDNumber          = string.IsNullOrEmpty(request.IDNumber) ? "" : request.IDNumber,
                IDType            = request.IDType,
                Mobile            = request.Mobile,
                Address           = request.Address,
                Birthday          = request.Birthday
            };

            db.UserOPDRegisters.Add(model);
            #endregion

            var ret = true;

            if (dbPrivateFlag)
            {
                db.Dispose();
                ret = db.SaveChanges() > 0;
            }
            return(ret);
        }