/// <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); } } }
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)); } }
/// <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); }
public ApiResult TodaySubmited([FromUri] RequestUserOPDRegisterSubmitDTO request) { BLL.UserOPDRegisterService bll = new UserOPDRegisterService(CurrentOperatorUserID); //默认当前登录用户 request.UserID = CurrentOperatorUserID; OrderRepeatReturnDTO existsOrder; return(bll.ExistsWithSubmitRequest(request, out existsOrder).ToApiResultForBoolean()); }
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 }); } }
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 }); }
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); }
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 }); } }
public ApiResult CreateInterpretationConsultingRoom([FromBody] RequestUserOPDRegisterSubmitDTO request) { request.ConsultContent = "报告解读"; return(userOPDRegisterService.CreateConsultingRoom(request)); }
/// <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", }); } }
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); }