/// <summary> /// 医生端接受消息模板 /// </summary> /// <param name="wecharSendMessage"></param> /// <returns></returns> public SendTemplate DoctorWecharTemplate(WecharSendMessage wecharSendMessage, string EvaluateLevel, string WarningTime) { SendTemplate sendTemplate = new SendTemplate(); sendTemplate.ToUser = wecharSendMessage.ToUser; sendTemplate.TemplateId = wecharSendMessage.TemplateId; sendTemplate.BackUrl = Commons.WecharWeb + "?link=order-detail&consultNumber=" + wecharSendMessage.ConsultNumber; sendTemplate.FirstMessage = wecharSendMessage.FirstMessage; YaeherConsultation yaeherConsultation = JsonHelper.FromJson <YaeherConsultation>(wecharSendMessage.ConsultJson); switch (wecharSendMessage.OperationType) { case "AddConsultation": // 咨询者发起咨询 sendTemplate.Keyword1 = wecharSendMessage.ConsultantName; sendTemplate.Keyword2 = yaeherConsultation.CreatedOn.ToString("yyyy-MM-dd HH:mm"); sendTemplate.Keyword3 = "用户提交了一个关于" + yaeherConsultation.IIInessType + "问题的咨询"; sendTemplate.MessageRemark = "请您及时回复"; sendTemplate.MessageType = "Notice"; //发送短信 break; case "Inquiry": // 咨询者追问 sendTemplate.Keyword1 = wecharSendMessage.ConsultantName; sendTemplate.Keyword2 = yaeherConsultation.CreatedOn.ToString("yyyy-MM-dd HH:mm"); sendTemplate.Keyword3 = "用户提交了一个关于" + yaeherConsultation.IIInessType + "问题的追问"; sendTemplate.MessageRemark = "请您及时回复"; sendTemplate.MessageType = "Question"; //发送短信 break; case "Evaluation": //咨询评分 sendTemplate.BackUrl = Commons.WecharWeb + "evaluate-detail?typeEvaluate=3&consultNumber=" + wecharSendMessage.ConsultNumber + "&rShow=no"; sendTemplate.Keyword1 = wecharSendMessage.ConsultantName; sendTemplate.Keyword2 = "评价:" + EvaluateLevel; sendTemplate.MessageRemark = "点击消息可查看评价详情"; break; case "WarningRemind": // 咨询预警 sendTemplate.FirstMessage = "您有一个咨询超过" + WarningTime + "未处理"; sendTemplate.Keyword1 = wecharSendMessage.ConsultantName + "用户提交了一个关于" + yaeherConsultation.IIInessType + "问题的咨询"; sendTemplate.Keyword2 = yaeherConsultation.CreatedOn.ToString("yyyy-MM-dd HH:mm"); sendTemplate.MessageRemark = "请您及时回复"; break; case "PatientReturn": //咨询退单 sendTemplate.Keyword1 = wecharSendMessage.ConsultantName; sendTemplate.Keyword2 = "用户主动退单"; sendTemplate.Keyword3 = yaeherConsultation.RefundTime.ToString("yyyy-MM-dd HH:mm"); sendTemplate.MessageRemark = "温馨提示:及时回复可避免用户主动退单"; break; case "QualityReturn": //质控退单 sendTemplate.Keyword1 = wecharSendMessage.ConsultantName; sendTemplate.Keyword2 = "质控审核退单"; sendTemplate.Keyword3 = yaeherConsultation.RefundTime.ToString("yyyy-MM-dd HH:mm"); sendTemplate.MessageRemark = "温馨提示:严格遵守怡禾操作规范有助于减少质控退单"; break; } return(sendTemplate); }
/// <summary> /// 咨询者接受消息模板 /// </summary> /// <param name="sendTemplate"></param> /// <returns></returns> public SendTemplate ConsultantWecharTemplate(WecharSendMessage wecharSendMessage, string Inquiry) { SendTemplate sendTemplate = new SendTemplate(); sendTemplate.ToUser = wecharSendMessage.ToUser; sendTemplate.TemplateId = wecharSendMessage.TemplateId; sendTemplate.BackUrl = Commons.WecharWeb + "?link=record-detail&consultNumber=" + wecharSendMessage.ConsultNumber; sendTemplate.FirstMessage = wecharSendMessage.FirstMessage; YaeherConsultation yaeherConsultation = JsonHelper.FromJson <YaeherConsultation>(wecharSendMessage.ConsultJson); #region 2019-1-8 修改 switch (wecharSendMessage.OperationType) { case "ReplayConsultant": // 回复订单 sendTemplate.Keyword1 = "您提交的关于" + yaeherConsultation.IIInessType + "的咨询"; sendTemplate.Keyword2 = "请点击查看回复详情"; sendTemplate.Keyword3 = wecharSendMessage.DoctorName; break; case "RemindInquiry": // 追问提醒 sendTemplate.FirstMessage = "您的追问期限还剩" + Inquiry + ",请尽快追问"; sendTemplate.Keyword1 = "您提交的关于" + yaeherConsultation.IIInessType + "的咨询"; sendTemplate.Keyword2 = "追问过期时间为:" + yaeherConsultation.Completetime.ToString("yyyy-MM-dd HH:mm"); sendTemplate.Keyword3 = wecharSendMessage.DoctorName; sendTemplate.MessageRemark = "请点击详情对医生进行追问"; break; case "RemindEvaluation": // 评价提醒 sendTemplate.Keyword1 = yaeherConsultation.PatientName; sendTemplate.Keyword2 = yaeherConsultation.DoctorName; sendTemplate.MessageRemark = "请点击详情对医生进行评价"; break; case "Systemreturn": // 系统退单 sendTemplate.Keyword1 = wecharSendMessage.DoctorName; sendTemplate.Keyword2 = "医生未能及时回复"; sendTemplate.Keyword3 = DateTime.Now.ToString("yyyy-MM-dd HH:mm"); sendTemplate.MessageRemark = "您可以继续选择其他医生咨询"; break; case "DoctorReturn": // 医生退单 sendTemplate.Keyword1 = wecharSendMessage.DoctorName; sendTemplate.Keyword2 = "医生主动退单"; sendTemplate.Keyword3 = DateTime.Now.ToString("yyyy-MM-dd HH:mm"); sendTemplate.MessageRemark = "退单原因请查看详情"; break; } #endregion return(sendTemplate); }
/// <summary> /// 患者微信支付下订单 /// </summary> /// <returns></returns> public async Task <TencentJSPayRequestModel> UnifiedorderAsync(bool sharing, string spbillCreateIp, YaeherConsultation consul, YaeherUser user, ServiceMoneyList product, SystemConfigs tencentparam) { TencentJSPayRequestModel jspay = new TencentJSPayRequestModel(); try { TenPayV3Info tenPayV3Info = new TenPayV3Info(tencentparam.AppID, tencentparam.AppSecret, tencentparam.TenPayMchId, tencentparam.TenPayKey, tencentparam.TenPayNotify, tencentparam.TenPayWxOpenNotify); //生成订单10位序列号,此处用时间和随机数生成,商户根据自己调整,保证唯一 // var timestamp = DateTime.Now.ToString("yyyyMMddHHmmss"); // var sjs =;//随机数 var sjs = consul.ConsultNumber.Substring(3, consul.ConsultNumber.Length - 3) + TenPayV3Util.BuildRandomStr(6); var sp_billno = sjs; // var sp_billno = string.Format("{0}{1}", sjs, user.Id); var shortbillno = sp_billno; TenPayInfo tenPayInfo = new TenPayInfo(); // var body = product == null ? "怡芽问诊" : product.DoctorName+"医生" + product.ServiceType; var body = "怡禾健康咨询"; var price = product == null ? 100 : (int)(product.ServiceExpense * 100);//单位:分 var timeStamp = TenPayV3Util.GetTimestamp(); var nonceStr = TenPayV3Util.GetNoncestr(); var xmlDataInfo = new TenPayV3UnifiedorderRequestData(tenPayV3Info.AppId, tenPayV3Info.MchId, body, sp_billno, price, spbillCreateIp, tenPayV3Info.TenPayV3Notify, TenPayV3Type.JSAPI, user.WecharOpenID, tenPayV3Info.Key, nonceStr); //CreateWrite("C:\\回调.txt", "订单参数:" + JsonHelper.ToJson(xmlDataInfo)); var result = await UnifiedorderAsync(xmlDataInfo, sharing? "Y" : "N"); //调用统一订单接口 //JsSdkUiPackage jsPackage = new JsSdkUiPackage(TenPayV3Info.AppId, timeStamp, nonceStr,); if (result.IsResultCodeSuccess()) { var package = string.Format("prepay_id={0}", result.prepay_id); var paysign = TenPayV3.GetJsPaySign(tenPayV3Info.AppId, timeStamp, nonceStr, package, tenPayV3Info.Key); jspay.product = product; jspay.timeStamp = timeStamp; jspay.nonceStr = nonceStr; jspay.package = package; jspay.paySign = paysign; jspay.appid = tenPayV3Info.AppId; jspay.sp_billno = shortbillno; jspay.code = result.result_code; jspay.msg = result.return_msg; } else { jspay.code = result.result_code; jspay.msg = result.return_msg; } } catch (Exception ex) { jspay.code = "FAIL"; jspay.msg = ex.Message.ToString(); } return(jspay); }
/// <summary> /// 输出模型 /// </summary> /// <param name="quality"></param> /// <param name="item"></param> /// <param name="hasCollect"></param> /// <param name="consultationfile"></param> /// <param name="reply"></param> /// <param name="doctor"></param> /// <param name="eva"></param> /// <param name="serverid"></param> /// <param name="IIIness"></param> /// <param name="paramlist"></param> public QualityControlManageOutDetail(QualityControlManage quality, YaeherConsultation item, bool hasCollect, IList <ReplyDetail> consultationfile, IList <ReplyDetail> reply, YaeherUser doctor, IList <ConsultationEvaluation> eva, int serverid, int IIIness, List <SystemParameter> paramlist) { Id = quality.Id; Sex = JsonHelper.FromJson <YaeherPatientLeaguerInfo>(item.PatientJSON).Sex; QualityLevel = quality.QualityLevel; RepayIllnessDescription = quality.RepayIllnessDescription; ReplyState = quality.ReplyState; IsReturnVisit = item.IsReturnVisit; HasCollect = hasCollect; CreatedBy = item.CreatedBy; CreatedOn = item.CreatedOn; UserImage = doctor.UserImage; ConsultNumber = item.ConsultNumber; ConsultantID = item.ConsultantID; ConsultantName = item.ConsultantName; ConsultantJSON = item.ConsultantJSON; DoctorName = item.DoctorName; DoctorID = item.DoctorID; DoctorJSON = item.DoctorJSON; PatientID = item.PatientID; PatientName = item.PatientName; PatientJSON = item.PatientJSON; ConsultType = item.ConsultType; IIInessType = item.IIInessType; IIInessId = IIIness; IIInessJSON = item.IIInessJSON; PhoneNumber = item.PhoneNumber; PatientCity = item.PatientCity; IIInessDescription = item.IIInessDescription; InquiryTimes = item.InquiryTimes; ConsultState = item.ConsultState; OvertimeRemindTimes = item.OvertimeRemindTimes; Overtime = item.Overtime; RefundBy = item.RefundBy; RefundTime = item.RefundTime; RefundType = item.RefundType; RefundNumber = item.RefundNumber; RefundState = item.RefundState; RefundReason = item.RefundReason; RefundRemarks = item.RefundRemarks; RecommendDoctorName = item.RecommendDoctorName; RecommendDoctorID = item.RecommendDoctorID; QualityDoctor = quality.DoctorName; Age = item.Age; Replys = reply.OrderBy(t => t.CreatedOn).ToList(); Consultationfile = consultationfile.ToList(); TimeSpan ts = DateTime.UtcNow.Subtract(item.CreatedOn); if (ts.TotalMinutes >= 3 || Replys.Count > 0) { Canhargeback = false; } else { Canhargeback = true; } var replycount = reply.Where(t => t.Message != "" && t.Message != null && t.ReplyType == "inquiries").ToList(); ReplysCount = 2 - replycount.Count > 0 ? 2 - replycount.Count : 0; ConsulationStatusCode = item.ConsultState; ConsultState = paramlist.Find(t => t.Code == item.ConsultState).Name; if (item.ConsultState == "consulting") { CanReplys = true; } else { CanReplys = false; } if (item.ConsultState == "success" && !HasEvaluation) { CanEvaluation = true; } else { CanEvaluation = false; } if (item.ConsultState == "success" || item.ConsultState == "return") { CanDelete = true; } else { CanDelete = false; } if (ReplysCount < 1) { CanReplys = false; } HasEvaluation = item.IsEvaluate; ReturnVisit = item.ReturnVisit; EvaluationId = eva.Count > 0 ? eva[0].Id : 0; ServiceMoneyListID = serverid; HasAllergic = JsonHelper.FromJson <YaeherPatientLeaguerInfo>(item.PatientJSON).HasAllergic; AllergicHistory = JsonHelper.FromJson <YaeherPatientLeaguerInfo>(item.PatientJSON).AllergicHistory; }