public async Task <dynamic> ReservateDoctor([FromBody] ReservateDoctorModel model) { try { if (!ModelState.IsValid) { throw new ModelStateException(ModelState); } if (!model.OpId.HasValue) { model.OpId = TryGet <int?>(() => UserSelf.OpId); model.OpMan = TryGet <string>(() => UserSelf.OpManFullMsg); } //姓名 var cust = await _cusSvr.GetCustomerById(model.CustomerId); //科室 var depart = _stationSvr.GetDepartmentById(model.DepartmentId); //医生 var doctor = _docrSvr.Find(model.DoctorId); var workInfo = _docrSvr.GetDoctorOnDutyInfo(model.DoctorId, model.DepartmentId, model.ReservationDate, model.ReservationSlot); var timestr = $"{workInfo.FromTime?.ToString(@"hh\:mm")}—{workInfo.ToTime?.ToString(@"hh\:mm")}"; var add = await _resSvr.AddOneRegister(cust.CustomerID, depart.DepartmentID, model.DoctorId, depart.StationID.Value, model.ReservationDate, model.ReservationSlot, RegistFrom.V20Web , opId : model.OpId, opMan : model.OpMan, rxDoctorId : model.RxDoctorId ); //给用户发送短信 StringBuilder b = new StringBuilder(); b.Append($"尊敬的{cust.CustomerName},请于{model.ReservationDate.ToString("yyyy年MM月dd日")} {timestr} 至{depart.DepartmentName}({doctor.DoctorName})医生处就诊,感谢您的预约。【天使健康】"); Codes.Utility.SMS sms = new Codes.Utility.SMS(); //await new SendVCodeCBL(this).SendVCode(cust.Telephone, b.ToString()); var rlt = await sms.PostSmsInfoAsync(cust.CustomerMobile, b.ToString()); var d = MyDynamicResult(true, ""); d.rltCode = add.HaveRegisted ? "REPET_REGIST" : ""; d.registStatus = add.HaveRegisted ? "请注意,您已经预约了,不能重复预约。先前预约信息如下。" : ""; d.registerId = add.RegisterID; d.registerSeq = add.RegisterSeq; d.customerId = cust.CustomerID; d.customerName = cust.CustomerName; d.customerGender = cust.Gender; d.customerBirthday = cust.Birthday; d.customerPicUrl = cust.PhotoUrlDef.ahDtUtil().GetCustomerImg(cust.Gender); d.stationName = depart.StationName; d.departmentName = depart.DepartmentName; d.doctorName = doctor.DoctorName; d.doctorGender = doctor.Gender; d.doctorTitle = doctor.PostTitleName; d.doctorId = doctor.DoctorId; d.doctorPicUrl = doctor.DoctorPhotoUrl.ahDtUtil().GetDoctorImg(doctor.Gender, imgSizeTypes.HorizThumb); d.reservationDate = model.ReservationDate.ToString("yyyy-MM-dd"); d.timeInfo = timestr; return(d); } catch (Exception ex) { return(MyDynamicResult(ex)); } }
/// <summary> /// 手机预约信息,并返回给用户 /// <returns>成功则返回用户信息</returns> /// </summary> public async Task <IActionResult> Json_GetReservationInfo(int customerID, int departmentID, int doctorId, DateTime reservationDate, int reservationSlot, int?registOpId = null, string registOpMan = "", int?rxDoctorId = null) { try { if (!registOpId.HasValue) { try { registOpId = UserSelf.OpId; registOpMan = UserSelf.OpManFullMsg; } catch { } } //var u = UserLoginData; //姓名 var cust = _db.CHIS_Code_Customer.FirstOrDefault(m => m.CustomerID == customerID); //科室 var depart = _db.vwCHIS_Code_Department.FirstOrDefault(m => m.DepartmentID == departmentID); if (depart == null) { throw new Exception("科室没有找到"); } //医生 var employee = _db.vwCHIS_Code_Doctor.FirstOrDefault(m => m.DoctorId == doctorId); var workInfo = new DoctorCBL(this).GetEmployeeOnDutyInfo(doctorId, reservationDate, reservationSlot); if (workInfo == null) { workInfo = new DoctorCBL(this).InitalEmployeeOnDutyInfo(doctorId, depart.DepartmentID, reservationDate, reservationDate.AddDays(7)).FirstOrDefault(); } var timestr = $"{workInfo.FromTime?.ToString(@"hh\:mm")}—{workInfo.ToTime?.ToString(@"hh\:mm")}"; var add = await _resSvr.AddOneRegister(cust.CustomerID, depart.DepartmentID, doctorId, depart.StationID.Value, reservationDate, reservationSlot, RegistFrom.V20Web , opId : registOpId, opMan : registOpMan, rxDoctorId : rxDoctorId ); //给用户发送短信 StringBuilder b = new StringBuilder(); b.Append($"尊敬的{cust.CustomerName},请于{reservationDate.ToString("yyyy年MM月dd日")} {timestr} 至{depart.DepartmentName}({employee.DoctorName})医生处就诊,感谢您的预约。【天使健康】"); Codes.Utility.SMS sms = new Codes.Utility.SMS(); //await new SendVCodeCBL(this).SendVCode(cust.Telephone, b.ToString()); var rlt = await sms.PostSmsInfoAsync(cust.CustomerMobile, b.ToString()); return(Json(new { rlt = true, msg = "", rltCode = add.HaveRegisted ? "REPET_REGIST" : "", registStatus = add.HaveRegisted ? "请注意,您已经预约了,不能重复预约。先前预约信息如下。" : "", registerId = add.RegisterID, registerSeq = add.RegisterSeq, customer = cust, stationName = depart.StationName, departmentName = depart.DepartmentName, employee = employee, reservationDate = reservationDate.ToString("yyyy-MM-dd"), timeInfo = timestr })); } catch (Exception ex) { return(Json(new { rlt = false, msg = ex.Message })); } }
public JsonResult SendLoginVCode(string loginName) { try { var items = GetLoginInfoItems(loginName); if (items.Count() <= 0) { throw new Exception("不存在该账户,请输入正确登录账号"); } var st = loginName.GetStringType(); if (st.IsEmpty) { throw new Exception("没有输入邮箱、手机号、身份证号"); } if (st.IsEmail) { //6为随机数并存数据库 var random = CHIS.Code.Utility.ComTools.GenerateRandomNumber(6); var emailData = new CHIS_DataTemp_SendMailVCode { CreatTime = DateTime.Now, EmailAddress = loginName, VCode = random, VCodeProp = "DPWD" }; _db.CHIS_DataTemp_SendMailVCode.Add(emailData); _db.SaveChanges(); //向邮箱发送一份验证邮件 CHIS.Codes.Utility.EmailHelper email = new CHIS.Codes.Utility.EmailHelper(); string sub = "天使健康医生工作站"; string msg = $"{random}本次登录验证码"; email.SendEmail(loginName, msg, sub); } if (st.IsMobile) { //6为随机数并存数据库 var random = CHIS.Code.Utility.ComTools.GenerateRandomNumber(6); var smsData = new CHIS_DataTemp_SMS() { CreatTime = DateTime.Now, PhoneCode = loginName, VCodeProp = "DPWD", VCode = random }; _db.CHIS_DataTemp_SMS.Add(smsData); _db.SaveChanges(); //向手机发送一份验证码 Codes.Utility.SMS sms = new Codes.Utility.SMS(); string content = $"{random}为动态登录验证码,有效时间为1分钟【天使健康】"; sms.PostSmsInfoAsync(loginName, content).ToString(); } return(Json(new { rlt = true })); } catch (Exception ex) { return(Json(new { rlt = false, msg = ex.Message })); } }
/// <summary> /// 给第三方推送订单 /// </summary> /// <remarks>方法:Json_SendOrderToNet(int treatId)</remarks> /// <param name="treatId">接诊ID</param> /// <returns></returns> public bool SendDrug_SendOrderToNetJK(long treatId, string sendRmk) { var vwTreat = _db.vwCHIS_DoctorTreat.AsNoTracking().FirstOrDefault(m => m.TreatId == treatId); var vwExtraFee = _db.vwCHIS_Doctor_ExtraFee.AsNoTracking().Where(m => m.TreatId == treatId && m.TreatFeeTypeId == (int)ExtraFeeTypes.TransFee && m.MailForSupplierId == MPS.SupplierId_JK && m.ChargeStatus == ChargeStatus.Payed).ToList(); int custId = vwTreat.CustomerId;//客户Id /* *获取第三方药品的总金额 */ var formed = _db.vwCHIS_DoctorAdvice_Formed_Detail.AsNoTracking().Where(m => m.TreatId == treatId && m.SourceFrom == (int)DrugSourceFrom.WebNet && m.SupplierId == MPS.SupplierId_JK && m.ChargeStatus == ChargeStatus.Payed && m.DispensingStatus == (int)DispensingStatus.NeedSend).ToList(); var herbs = _db.vwCHIS_DoctorAdvice_Herbs_Detail.AsNoTracking().Where(m => m.TreatId == treatId && m.SourceFrom == (int)DrugSourceFrom.WebNet && m.SupplierId == MPS.SupplierId_JK && m.ChargeStatus == ChargeStatus.Payed && m.DispensingStatus == (int)DispensingStatus.NeedSend).ToList(); if (formed.Count + herbs.Count == 0) { throw new NotProcessException(); //抛出不需要处理的错误 } long selectedAddressId = (long)vwTreat.TransferAddressId; //选择邮寄地址Id var moblie = vwTreat.CustomerMobile; //客户手机号 var orderId = Guid.NewGuid().ToString(); //给第三方的订单Id var formedAmout = formed.Sum(e => e.Amount); var herbsAmout = herbs.Sum(e => e.Amount); var ext = vwExtraFee.Sum(m => m.Amount); decimal totalamount = formedAmout + ext; var sendAddr = _db.vwCHIS_Code_Customer_AddressInfos.AsNoTracking().FirstOrDefault(m => m.AddressId == selectedAddressId); if (custId == 0 && orderId == null) { throw new Exception("用户的ID和订单编号不能为空"); } var FormedDoctorAdvices = new List <vwCHIS_DoctorAdvice_Formed_Detail>(); //发送成药的信息记录 //查询是否已经存在该订单号 var netOrderItem = _db.CHIS_Shipping_NetOrder.AsNoTracking().FirstOrDefault(m => m.SendOrderId == orderId); //IsSendedSuccess 0:默认是0.表示未发送订单,1表示发送成功订单,2表示发送失败 if (netOrderItem != null && netOrderItem.SendedStatus == (int)SendState.SendSucces) { throw new Exception("该订单已经发送了"); } else if (netOrderItem == null) { //4.将查询到的数据存入netOrderEntity对象中 netOrderItem = new Models.CHIS_Shipping_NetOrder { StationId = vwTreat.StationId, TreatId = treatId, CreatTime = DateTime.Now, SendTime = DateTime.Now, TreatTime = vwTreat.TreatTime, SendOrderId = orderId, CustomerId = custId, SendAddressId = selectedAddressId, TotalAmount = totalamount, ContainTransFee = ext, IsRdOrder = _env.IsDevelopment(),//是否是测试数据 SupplierId = MPS.SupplierId_JK }; netOrderItem = _db.Add(netOrderItem).Entity; _db.SaveChanges(); var netdrugs = _db.vwCHIS_DoctorAdvice_Formed_Detail.AsNoTracking().Where( m => m.TreatId == treatId && m.SourceFrom == (int)DrugSourceFrom.WebNet && m.SupplierId == MPS.SupplierId_JK && m.DispensingStatus == (int)DispensingStatus.NeedSend).ToList(); foreach (var item in netdrugs) { var detailEnty = new Models.CHIS_Shipping_NetOrder_Formed_Detail { DrugId = item.DrugId, PrescriptionNo = item.PrescriptionNo.ToString(), Qty = item.Qty, Price = item.Price, Amount = item.Amount, UnitName = item.UnitName, NetOrderId = netOrderItem.NetOrderId, DoctorAdviceId = item.AdviceFormedId //医生接诊开药的Id }; _db.Add(detailEnty); FormedDoctorAdvices.Add(item);//方便发送成功后写入日志 } _db.SaveChanges(); } if (!sendAddr.Mobile.IsMobileNumber()) { throw new Exception("手机号码格式错误!"); } //发送给健客信息 string FromJKSavedOrderNo = ""; var bStatus = _jkSvr.SendJKWebNetOrder(totalamount, orderId, selectedAddressId, sendRmk, out FromJKSavedOrderNo); if (!bStatus) { throw new Exception("发送给三方健客信息没有成功"); } var enty = _db.CHIS_Shipping_NetOrder.FirstOrDefault(m => m.SendOrderId == orderId); //更新数据库 if (bStatus && FromJKSavedOrderNo.IsNotEmpty()) { enty.SendedStatus = (int)SendState.SendSucces; enty.NetOrderNO = FromJKSavedOrderNo; enty.SendTime = DateTime.Now; _db.SaveChanges(); //回写状态和日志 foreach (var item in FormedDoctorAdvices) { //修改发药的状态 // MainDbContext.CHIS_DoctorAdvice_Formed_Detail.Find(item.AdviceFormedId).DispensingStatus = 1;//发药 var afd = _db.CHIS_DoctorAdvice_Formed_Detail.FirstOrDefault(m => m.AdviceFormedId == item.AdviceFormedId); afd.DispensingStatus = 1; _db.SaveChanges(); //记录一份发药日志 AddSendDrugLog(item.AdviceFormedId, item.DrugId, item.PrescriptionNo.Value, item.Price, item.Qty, item.TreatId); } //给该用户发送短信通知 Codes.Utility.SMS sms = new Codes.Utility.SMS(); string getormsg = $"尊敬的{sendAddr.ContactName}您好,你的药品已发货,请保持电话畅通,祝您身体健康。【天使健康】"; //收件人的 sms.PostSmsInfoAsync(sendAddr.Mobile, getormsg).ToString(); //if (sendAddr.Mobile != payOrderInfor.Telephone) //{ //账号所有者 // string ownermsg = $"尊敬的{payOrderInfor.CustomerName}您好,您于{payOrderInfor.PayedTime.ToString("yyyy年MM月dd日")}在{payOrderInfor.StationName}就诊药品已发货,请注意查收,发货地址:{sendAddr.FullAddress},收件人:{sendAddr.ContactName},联系电话:{sendAddr.Mobile},请保持电话畅通,祝您身体健康。【天使健康】"; // sms.PostSmsInfoAsync(payOrderInfor.Telephone, ownermsg).ToString(); //} } else { enty.SendedStatus = (int)SendState.SendFail; enty.SendTime = DateTime.Now; _db.SaveChanges(); throw new Exception("发送数据给健客失败!"); } return(true); }
/// <summary> /// 发送验证码 /// </summary> /// <param name="account">账号或者手机号</param> /// <param name="sendTemplate">验证码的模板 [code]</param> /// <returns></returns> public async Task <bool> SendVCode(string account, string sendTemplate, string vCodeProp = null, bool bCheckVrifyed = true, bool bCheckExists = true) { var st = account.GetStringType(); if (st.IsEmpty) { throw new Exception("没有输入邮箱、手机号、身份证号"); } Func <string, IEnumerable <vwCHIS_Sys_Login> > GetLoginInfoItems = (loginName) => { if ((loginName.GetStringType().IsEmail)) { return(_db.vwCHIS_Sys_Login.Where(m => m.Email == loginName).ToList()); } if (loginName.GetStringType().IsMobile) { return(_db.vwCHIS_Sys_Login.Where(m => m.Mobile == loginName).ToList()); } if (loginName.GetStringType().IsIdCardNumber) { return(_db.vwCHIS_Sys_Login.Where(m => m.IdCardNumber == loginName).ToList()); } return(null); }; if (bCheckExists || bCheckVrifyed) // 检测账户是否存在 { var items = GetLoginInfoItems(account); if (items.Count() <= 0) { throw new Exception("不存在该账户,请输入正确登录账号"); } if (items.Count() > 1) { throw new Exception("检测到多账户,违反账户唯一性要求"); } if (bCheckVrifyed) { var item = items.FirstOrDefault(); if (st.IsMobile) { if (item.MobileIsAuthenticated != true) { throw new Exception("该手机号没有通过验证"); } } else if (st.IsEmail) { if (item.EmailIsAuthenticated != true) { throw new Exception("该邮箱没有通过验证"); } } } } if (st.IsEmail) { //6为随机数并存数据库 var random = CHIS.Code.Utility.ComTools.GenerateRandomNumber(6); var emailData = new CHIS_DataTemp_SendMailVCode { CreatTime = DateTime.Now, EmailAddress = account, VCode = random, VCodeProp = null }; await _db.CHIS_DataTemp_SendMailVCode.AddAsync(emailData); await _db.SaveChangesAsync(); //向邮箱发送一份验证邮件 CHIS.Codes.Utility.EmailHelper email = new CHIS.Codes.Utility.EmailHelper(); string sub = "天使健康医生工作站-(验证码,不用回复)"; string msg = sendTemplate.Replace("[code]", random);// $"{random}本次操作验证码"; email.SendEmail(account, msg, sub); } if (st.IsMobile) { //6为随机数并存数据库 var random = CHIS.Code.Utility.ComTools.GenerateRandomNumber(6); var smsData = new CHIS_DataTemp_SMS() { CreatTime = DateTime.Now, PhoneCode = account, VCodeProp = null, VCode = random }; await _db.CHIS_DataTemp_SMS.AddAsync(smsData); await _db.SaveChangesAsync(); //向手机发送一份验证码 Codes.Utility.SMS sms = new Codes.Utility.SMS(); string content = sendTemplate.Replace("[code]", random);// $"{random}为本次操作验证码,有效时间为1分钟【天使健康】"; await sms.PostSmsInfoAsync(account, content); } return(true); }