| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106 |
- package com.yihu.wlyy.task;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import com.yihu.wlyy.entity.patient.Patient;
- import com.yihu.wlyy.entity.wechat.WechatPushLog;
- import com.yihu.wlyy.entity.wechat.WechatTemplate;
- import com.yihu.wlyy.entity.wechat.WechatTemplateData;
- import com.yihu.wlyy.repository.patient.PatientDao;
- import com.yihu.wlyy.repository.wechat.WechatPushLogDao;
- import com.yihu.wlyy.util.HttpUtil;
- import com.yihu.wlyy.wechat.util.WeiXinAccessTokenUtils;
- import com.yihu.wlyy.wechat.util.WeiXinOpenIdUtils;
- import org.apache.commons.lang3.StringUtils;
- import org.json.JSONArray;
- import org.json.JSONException;
- import org.json.JSONObject;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.data.redis.core.StringRedisTemplate;
- import org.springframework.stereotype.Component;
- import javax.annotation.PostConstruct;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.concurrent.LinkedBlockingQueue;
- @Component
- public class PushMsgTask {
- private static Logger logger = LoggerFactory.getLogger(PushMsgTask.class);
- // 最大容量为50的数组堵塞队列
- private static LinkedBlockingQueue<JSONObject> queue = new LinkedBlockingQueue<JSONObject>();
- @Autowired
- private HttpUtil httpUtil;
- @Value("${server.server_url}")
- private String server_url;
- @Value("${pushMes.method}")
- private String putMesMethod;
- @Value("${pushMes.redis_prescription_title}")
- private String redisQueue;
- @Value("${putMesType.wechat}")
- private String putMesType;
- //模板id
- @Value("${wechat.message.template_sign_success}")
- private String template_sign_success;
- @Value("${wechat.message.template_sign_failed}")
- private String template_sign_failed;
- @Value("${wechat.message.template_consult_notice}")
- private String template_consult_notice;
- @Value("${wechat.message.template_health_notice}")
- private String template_health_notice;
- @Value("${wechat.message.template_termination}")
- private String template_termination;
- @Value("${wechat.message.template_appoint_success}")
- private String template_appoint_success;
- @Value("${wechat.message.template_appoint_failed}")
- private String template_appoint_failed;
- @Value("${wechat.message.template_expenses_remind}")
- private String template_expenses_remind;
- @Value("${wechat.message.template_healthy_article}")
- private String template_healthy_article;
- @Value("${wechat.message.template_doctor_change}")
- private String template_doctor_change;
- @Value("${wechat.message.template_doctor_survey}")
- private String template_doctor_survey;
- @Value("${wechat.message.template_doctor_audit}")
- private String template_doctor_audit;//审核结果通知
- @Value("${wechat.message.template_doctor_service}")
- private String template_doctor_service;//服务结果通知
- @Value("${wechat.message.template_physical_examination}")
- private String template_physical_examination;//体检提醒
- @Value("${wechat.message.doctor_invitel_template}")
- private String doctor_invitel_template;
- @Value("${wechat.message.template_deal_with}")
- private String template_deal_with;
- @Value("${wechat.message.template_patient_bind_device}")
- private String template_patient_bind_device;
- @Value("${wechat.message.template_healthbank_credit}")
- private String template_healthbank_credit;
- @Autowired
- private StringRedisTemplate redisTemplate;
- @Autowired
- private WechatPushLogDao wechatPushLogDao;
- @Autowired
- private WeiXinAccessTokenUtils accessTokenUtils;
- @Autowired
- private WeiXinOpenIdUtils weiXinOpenIdUtils;
- @Autowired
- private PatientDao patientDao;
- /**
- * 添加一条推送消息
- *
- * @param receiver 接收人
- * @param type 消息类型
- * @param title 消息标题
- * @param msg 消息内容
- * @param data 消息数据
- */
- public void put(String receiver, String type, String title, String msg, String data) {
- try {
- JSONObject json = new JSONObject();
- json.put("receiver", receiver);
- json.put("type", type);
- json.put("title", title);
- json.put("msg", msg);
- json.put("data", data);
- queue.put(json);
- } catch (Exception e) {
- logger.error("添加到消息队列失败!", e);
- e.printStackTrace();
- }
- }
- /**
- * 添加微信消息
- *
- * @param type
- * @param data
- */
- public void putWxMsg(String access_token, int type, String openid, String name, JSONObject data) {
- try {
- JSONObject json = new JSONObject();
- json.put("wx", true);
- json.put("access_token", access_token);
- json.put("type", type);
- json.put("openid", openid);
- json.put("name", name);
- json.put("data", data);
- //如果是内网推送到redis,如果是外网推送到内存队列
- if (putMesMethod.equals("1")) {
- JSONObject mes = new JSONObject();
- mes.put("title", putMesType);
- mes.put("value", json.toString());
- redisTemplate.opsForList().leftPush(redisQueue, mes.toString());
- } else {
- queue.put(json);
- }
- } catch (Exception e) {
- logger.error("添加到微信消息列队列失败!", e);
- e.printStackTrace();
- }
- }
- /**
- * 根据type及场景值添加微信消息
- * @param access_token
- * @param type
- * @param scene
- * @param openid
- * @param name
- * @param data packageTemplate方法打包后的模板数据
- */
- public void putWxMsg(String access_token, int type,String scene, String openid, String name, JSONObject data) {
- try {
- JSONObject json = new JSONObject();
- json.put("wx", true);
- json.put("access_token", access_token);
- json.put("type", type);
- json.put("scene", scene);
- json.put("openid", openid);
- json.put("name", name);
- json.put("data", data);
- //如果是内网推送到redis,如果是外网推送到内存队列
- if (putMesMethod.equals("1")) {
- JSONObject mes = new JSONObject();
- mes.put("title", putMesType);
- mes.put("value", json.toString());
- redisTemplate.opsForList().leftPush(redisQueue, mes.toString());
- } else {
- queue.put(json);
- }
- } catch (Exception e) {
- logger.error("添加到微信消息列队列失败!", e);
- e.printStackTrace();
- }
- }
- public void put(JSONArray array) {
- if (array == null || array.length() == 0) {
- return;
- }
- for (int i = 0; i < array.length(); i++) {
- JSONObject json = array.getJSONObject(i);
- if (json == null) {
- continue;
- }
- try {
- queue.put(json);
- } catch (Exception e) {
- logger.error("批量添加到消息队列失败!", e);
- }
- }
- }
- @PostConstruct
- private void run() {
- new Thread(new ConsumerTask(httpUtil)).start();
- }
- // 消费者
- class ConsumerTask implements Runnable {
- private HttpUtil httpUtil;
- public ConsumerTask(HttpUtil httpUtil) {
- this.httpUtil = httpUtil;
- }
- @Override
- public void run() {
- while (true) {
- try {
- // 如果queue为空,则当前线程会堵塞,直到有新数据加入
- JSONObject json = queue.take();
- boolean wx = json.has("wx") ? json.getBoolean("wx") : false;
- if (wx) {
- // 推送微信消息
- JSONObject data = json.has("data") ? json.getJSONObject("data") : null;
- if (data == null) {
- continue;
- }
- // 消息类型:1:签约成功 2:签约失败 3:咨询回复通知 4:健康指导提醒
- int type = json.has("type") ? json.getInt("type") : -1;
- if (type == -1) {
- continue;
- }
- String scene = json.has("scene") ? json.getString("scene") : "";
- String access_token = json.has("access_token") ? json.getString("access_token") : "";
- String openid = json.has("openid") ? json.getString("openid") : "";
- String name = json.has("name") ? json.getString("name") : "";
- // String name = data.has("name") ? json.getString("name") : "";
- // 发送消息到微信端
- sendWeixinMessage(access_token, type, openid, name, data);
- // sendWeixinMessage(access_token, type,scene, openid, name, data);
- } else {
- // 推送平台消息
- String receiver = json.has("receiver") ? json.getString("receiver") : "";
- String type = json.has("type") ? json.getString("type") : "";
- String title = json.has("title") ? json.getString("title") : "";
- String msg = json.has("msg") ? json.getString("msg") : "";
- String data = json.has("data") ? json.getString("data") : "";
- boolean res = httpUtil.pushMessage(receiver, type, title, msg, data);
- if (res) {
- logger.info("消息推送成功!");
- } else {
- logger.error("消息推送失败!");
- }
- }
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
- }
- }
- // private static final String signSuccess = "0D2vYZVRzFz15p9Y_pkZ1DKutDq8UOsks79FXUKS0tA";
- // private static final String signFalied = "My2VNERjJt4NXR4Ibh42pdrP6B6ka8rQxZeWinQh99s";
- // private static final String consultNotice = "0mF_vHj-ILx8EH8DwzmAi7LqzjqYiU9IrSRRmziTZyc";
- // private static final String healthNotice = "uv31ES_VCmq3tBYtyGmEQvIwU_zh9LDhF3bFpbIUt5g";
- // private static final String termination = "C0tdXtA_8k-Cy4a1EkzQuI877vqaqAtRkc-e_Gsd7sk";
- // private static final String appointmentSuccess = "FY3Pqa66tHIE1Fv-irbFBPOh5cYP71fkOzfZKH4S-Fo";
- // private static final String appointmentCancel = "tldWEb9AN7p_RoHoD8ml0GxWW3V1V_mpEEhp2v6p56s";
- // private static final String url = "http://www.xmtyw.cn/wlyy/wx/html/";
- /**
- * 发送微信模板消息
- *
- * @param type 1:签约成功 2:签约失败 3:咨询回复通知 4:健康指导提醒 5:解约申请通知 6:预约挂号成功通知 7:预约取消通知 8 缴费提醒 9 健康教育 10 签约医生变更(信息变更通知)
- * 18 产检提醒和产检就诊提醒 19:续方审核结果通知(0.不通过 1.通过 2。调整处方并通过) 20:服务结果通知 11.代办事项通知 21体检提醒
- * @param json 当type==1||type==2时:{"first":"消息主题",”doctor":"医生code","doctorName":"医生名","date":"签约时间","content":"签约内容","remark":"消息备注"}
- * type==3时:{"first":"消息主题","consult":"医生咨询编号","consultcontent":"咨询内容","replycontent":"回复内容","doctorName":"医生名","remark":"消息备注"}
- * type==4时:{"first":"消息主题","date":"指导时间","orgName":"指导机构","doctorName":"指导医生名","content":"指导内容","remark":"消息备注"}
- * type==5时:{"first":"消息主题","date":"解约时间",”doctor":"医生code","doctorName":"医生名","orgName":"解约机构","remark":"消息备注"}
- * type==6时:{"first":"消息主题","date":"预约时间",”id":"预约ID","doctorName":"医生名","orgName":"预约医院","deptName":"预约科室","remark":"消息备注"}
- * type==7时:{"first":"消息主题","name":"就诊人名","date":"预约时间","doctorName":"医生名","orgName":"预约医院","remark":"消息备注"}
- * type==9时:{"first":"消息主题","name":"患教标题","doctorName":"医生名","date":"发送时间","remark":"消息备注"}
- * type==10时:{"first":"消息主题","name":"患教标题","doctorName":"医生名","date":"发送时间","remark":"消息备注"}
- * <p>
- * type==11时:{"first":"消息主题","name":"患教标题","doctorName":"医生名","date":"发送时间","remark":"消息备注"}
- * type==19时:{"first":"消息主题","keyword1":"审核结果","keyword2":"审核医生","remark":"消息备注"}
- * type==20时:{"first":"消息主题","keyword1":"服务项目","keyword2":"操作医生","keyword3":"服务时间","remark":"消息备注"}
- * @return
- */
- public boolean sendWeixinMessage(String access_token, int type, String openid, String name, JSONObject json) {
- try {
- if (StringUtils.isEmpty(openid)) {
- logger.error("send wechat message failed:openid is empty");
- return false;
- }
- if (access_token != null) {
- String token_url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + access_token;
- String params = typeMsg(type, openid, name, json);
- if (params == "") {
- logger.error("参数错误!error");
- return false;
- }
- WechatPushLog log = new WechatPushLog();
- log.setType(type);
- log.setCreateTime(new Date());
- log.setName(name);
- log.setOpenid(openid);
- if (!json.isNull("toUser")) {
- log.setPatient(json.getString("toUser"));
- }
- log.setRequest(json.toString());
- String result = httpUtil.sendPost(token_url, params);
- JSONObject jsonResult = new JSONObject(result);
- log.setResponse(result);
- if (Integer.parseInt(jsonResult.get("errcode").toString()) == 0) {
- logger.info("微信信息推送成功!success");
- log.setStatus(1);
- wechatPushLogDao.save(log);
- return true;
- } else {
- log.setStatus(0);
- wechatPushLogDao.save(log);
- logger.error("错误编码:" + jsonResult.get("errcode").toString() + " 错误提示:" + jsonResult.get("errmsg").toString());
- return false;
- }
- } else {
- logger.error("获取access_token失败!");
- return false;
- }
- } catch (Exception e) {
- e.printStackTrace();
- logger.error("微信信息推送失败!");
- return false;
- }
- }
- /**
- *
- * @param access_token
- * @param type
- * @param openid
- * @param name
- * @param json
- * @return
- */
- public boolean sendWeixinMessage(String access_token, int type,String scene, String openid, String name, JSONObject json) {
- try {
- if (StringUtils.isEmpty(openid)) {
- logger.error("send wechat message failed:openid is empty");
- return false;
- }
- if (access_token != null) {
- String token_url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + access_token;
- String params = json.toString();
- if (params == "") {
- logger.error("参数错误!error");
- return false;
- }
- WechatPushLog log = new WechatPushLog();
- log.setType(type);
- log.setScene(scene);
- log.setCreateTime(new Date());
- log.setName(name);
- log.setOpenid(openid);
- if (!json.isNull("toUser")) {
- log.setPatient(json.getString("toUser"));
- }
- log.setRequest(json.toString());
- String result = httpUtil.sendPost(token_url, params);
- JSONObject jsonResult = new JSONObject(result);
- log.setResponse(result);
- if (Integer.parseInt(jsonResult.get("errcode").toString()) == 0) {
- logger.info("微信信息推送成功!success");
- log.setStatus(1);
- wechatPushLogDao.save(log);
- return true;
- } else {
- log.setStatus(0);
- wechatPushLogDao.save(log);
- logger.error("错误编码:" + jsonResult.get("errcode").toString() + " 错误提示:" + jsonResult.get("errmsg").toString());
- return false;
- }
- } else {
- logger.error("获取access_token失败!");
- return false;
- }
- } catch (Exception e) {
- e.printStackTrace();
- logger.error("微信信息推送失败!");
- return false;
- }
- }
- /**
- * 拼接参数
- *
- * @param type
- * @return
- */
- public String typeMsg(int type, String openid, String name, JSONObject json) {
- try {
- String url = server_url + "wx/html/";
- WechatTemplate temp = new WechatTemplate();
- temp.setTouser(openid);
- temp.setTopcolor("#000000");
- Map<String, WechatTemplateData> m = new HashMap<String, WechatTemplateData>();
- WechatTemplateData first = new WechatTemplateData();
- first.setColor("#000000");
- first.setValue(json.getString("first"));
- m.put("first", first);
- WechatTemplateData remark = new WechatTemplateData();
- remark.setColor("#000000");
- remark.setValue(json.getString("remark"));
- m.put("remark", remark);
- String temp_id = "";
- if (type == 3) {
- if (json.has("isPublic") && json.getInt("isPublic") == 1) {
- temp.setUrl(url + "jbsq/html/public-consult-detail.html?openid=" + openid + "&code=" + json.getString("consult") + "&toUser=" + json.getString("toUser") + "&toName=" + name + "&represented=" + (StringUtils.isNotEmpty(json.getString("represented"))?json.getString("represented"):""));
- } else {
- temp.setUrl(url + "yszx/html/consulting-doctor.html?openid=" + openid + "&consult=" + json.getString("consult") + "&toUser=" + json.getString("toUser") + "&toName=" + name + "&represented=" + (StringUtils.isNotEmpty(json.getString("represented"))?json.getString("represented"):""));
- }
- temp_id = template_consult_notice;
- temp.setTemplate_id(temp_id);
- WechatTemplateData keyword1 = new WechatTemplateData();
- keyword1.setColor("#000000");
- keyword1.setValue(json.getString("consultcontent"));
- m.put("keyword1", keyword1);
- WechatTemplateData keyword2 = new WechatTemplateData();
- keyword2.setColor("#000000");
- keyword2.setValue(json.getString("replycontent"));
- m.put("keyword2", keyword2);
- WechatTemplateData keyword3 = new WechatTemplateData();
- keyword3.setColor("#000000");
- keyword3.setValue(json.getString("doctorName"));
- m.put("keyword3", keyword3);
- } else if (type == 1 || type == 2) {
- if (type == 1) {
- temp_id = template_sign_success;
- } else {
- temp_id = template_sign_failed;
- }
- String isRenew = "0";
- if (json.has("isRenew")) {
- isRenew = "1";
- }
- String signState = "0";
- if (json.has("signState")) {
- signState = (String) json.get("signState");
- }
- if (json.has("isRenew") && type == 2) {
- //如果续签失败,不发送详情
- } else {
- if (json.has("agent") && ("1".equals(json.getString("agent")))) {
- // 发送给授权代理人
- temp.setUrl(url + "ssgg/html/doctor-homepage-new.html?openid=" + openid + "&state=" + json.getString("doctor") + "&toUser=" + json.getString("toUser") + "&toName=" + name + "&isRenew=" + isRenew + "&signState=" + signState + "&represented=" + (StringUtils.isNotEmpty(json.getString("represented"))?json.getString("represented"):"") + "&signCode=" + json.getString("signCode"));
- } else if (json.has("agent") && ("0".equals(json.getString("agent")))) {
- // 发送给自己
- temp.setUrl(url + "qygl/html/pay_flow.html?openid=" + openid + "&state=" + json.getString("doctor") + "&toUser=" + json.getString("toUser") + "&toName=" + name + "&isRenew=" + isRenew + "&signState=" + signState + "&represented=" + json.getString("represented") + "&signCode=" + json.getString("signCode"));
- }
- }
- temp.setTouser(openid);
- temp.setTopcolor("#000000");
- temp.setTemplate_id(temp_id);
- WechatTemplateData keyword1 = new WechatTemplateData();
- keyword1.setColor("#000000");
- keyword1.setValue(json.getString("doctorName"));
- m.put("keyword1", keyword1);
- WechatTemplateData keyword2 = new WechatTemplateData();
- keyword2.setColor("#000000");
- keyword2.setValue(name);
- m.put("keyword2", keyword2);
- WechatTemplateData keyword3 = new WechatTemplateData();
- keyword3.setColor("#000000");
- keyword3.setValue(json.getString("date"));
- m.put("keyword3", keyword3);
- WechatTemplateData keyword4 = new WechatTemplateData();
- keyword4.setColor("#000000");
- keyword4.setValue(json.getString("content"));
- m.put("keyword4", keyword4);
- } else if (type == 4) {
- temp.setUrl(url + "yszd/html/guidance-detail.html?openid=" + openid + "&toUser=" + json.getString("toUser") + "&id=" + String.valueOf(json.get("id")) + "&toName=" + name + "&represented=" + (StringUtils.isNotEmpty(json.getString("represented"))?json.getString("represented"):""));
- temp_id = template_health_notice;
- temp.setTemplate_id(temp_id);
- WechatTemplateData keyword1 = new WechatTemplateData();
- keyword1.setColor("#000000");
- keyword1.setValue(json.getString("date"));
- m.put("keyword1", keyword1);
- WechatTemplateData keyword2 = new WechatTemplateData();
- keyword2.setColor("#000000");
- keyword2.setValue(json.getString("orgName"));
- m.put("keyword2", keyword2);
- WechatTemplateData keyword3 = new WechatTemplateData();
- keyword3.setColor("#000000");
- keyword3.setValue(json.getString("doctorName"));
- m.put("keyword3", keyword3);
- WechatTemplateData keyword4 = new WechatTemplateData();
- keyword4.setColor("#000000");
- keyword4.setValue(name);
- m.put("keyword4", keyword4);
- WechatTemplateData keyword5 = new WechatTemplateData();
- keyword5.setColor("#000000");
- keyword5.setValue(json.getString("content"));
- m.put("keyword5", keyword5);
- } else if (type == 5) {
- temp.setUrl(url + "ssgg/html/doctor-homepage-new.html?openid=" + openid + "&state=" + json.getString("doctor") + "&toUser=" + json.getString("toUser") + "&toName=" + name + "&represented=" + (StringUtils.isNotEmpty(json.getString("represented"))?json.getString("represented"):""));
- temp_id = template_termination;
- temp.setTemplate_id(temp_id);
- WechatTemplateData keyword1 = new WechatTemplateData();
- keyword1.setColor("#000000");
- keyword1.setValue(json.getString("doctorName"));
- m.put("keyword1", keyword1);
- WechatTemplateData keyword2 = new WechatTemplateData();
- keyword2.setColor("#000000");
- keyword2.setValue(name);
- m.put("keyword2", keyword2);
- WechatTemplateData keyword3 = new WechatTemplateData();
- keyword3.setColor("#000000");
- keyword3.setValue(json.getString("orgName"));
- m.put("keyword3", keyword3);
- WechatTemplateData keyword4 = new WechatTemplateData();
- keyword4.setColor("#000000");
- keyword4.setValue(json.getString("date"));
- m.put("keyword4", keyword4);
- } else if (type == 6) {
- temp.setUrl(url + "wdyy/html/detail-appointment.html?openid=" + openid + "&orgCode=" + json.get("orgCode") + "&id=" + json.getString("id") + "&toUser=" + json.getString("toUser") + "&toName=" + name + "&represented=" + (StringUtils.isNotEmpty(json.getString("represented"))?json.getString("represented"):""));
- temp_id = template_appoint_success;
- temp.setTemplate_id(temp_id);
- WechatTemplateData keyword1 = new WechatTemplateData();
- keyword1.setColor("#000000");
- keyword1.setValue(json.getString("orgName"));
- m.put("hospitalname", keyword1);
- WechatTemplateData keyword2 = new WechatTemplateData();
- keyword2.setColor("#000000");
- keyword2.setValue(json.getString("deptName"));
- m.put("deptname", keyword2);
- WechatTemplateData keyword3 = new WechatTemplateData();
- keyword3.setColor("#000000");
- keyword3.setValue(json.getString("doctorName"));
- m.put("doctorname", keyword3);
- WechatTemplateData keyword4 = new WechatTemplateData();
- keyword4.setColor("#000000");
- keyword4.setValue(json.getString("date"));
- m.put("planstarttime", keyword4);
- } else if (type == 7) {
- temp.setUrl(url + "wdyy/html/my-appointment.html?openid=" + openid + "&toUser=" + json.getString("toUser") + "&toName=" + name + "&represented=" + (StringUtils.isNotEmpty(json.getString("represented"))?json.getString("represented"):""));
- temp_id = template_appoint_failed;
- temp.setTemplate_id(temp_id);
- WechatTemplateData keyword1 = new WechatTemplateData();
- keyword1.setColor("#000000");
- keyword1.setValue(json.getString("name"));
- m.put("keynote1", keyword1);
- WechatTemplateData keyword2 = new WechatTemplateData();
- keyword2.setColor("#000000");
- keyword2.setValue(json.getString("date"));
- m.put("keynote2", keyword2);
- WechatTemplateData keyword3 = new WechatTemplateData();
- keyword3.setColor("#000000");
- keyword3.setValue(json.getString("doctorName"));
- m.put("keynote3", keyword3);
- WechatTemplateData keyword4 = new WechatTemplateData();
- keyword4.setColor("#000000");
- keyword4.setValue(json.getString("orgName"));
- m.put("keynote4", keyword4);
- } else if (type == 8) {
- //temp.setUrl(url + "wdyy/html/my-appointment.html?openid=" + openid + "&toUser=" + json.getString("toUser"));
- temp_id = template_expenses_remind;
- temp.setTemplate_id(temp_id);
- WechatTemplateData keyword1 = new WechatTemplateData();
- keyword1.setColor("#000000");
- keyword1.setValue(json.getString("doctorName"));
- m.put("first", keyword1);
- WechatTemplateData keyword2 = new WechatTemplateData();
- keyword2.setColor("#000000");
- keyword2.setValue("以协议为准");
- m.put("keyword1", keyword2);
- WechatTemplateData keyword3 = new WechatTemplateData();
- keyword3.setColor("#000000");
- keyword3.setValue("家庭医生签约");
- m.put("keyword2", keyword3);
- WechatTemplateData keyword4 = new WechatTemplateData();
- keyword4.setColor("#000000");
- keyword4.setValue(json.getString("content"));
- m.put("remark", keyword4);
- } else if (type == 9) {
- temp.setUrl(url + "jkjy/html/article.html?openid=" + openid + "&dataId=" + json.getString("article") + "&toUser=" + json.getString("toUser") + "&toName=" + name + "&represented=" + (StringUtils.isNotEmpty(json.getString("represented"))?json.getString("represented"):""));
- temp_id = template_healthy_article;
- temp.setTemplate_id(temp_id);
- WechatTemplateData keyword1 = new WechatTemplateData();
- keyword1.setColor("#000000");
- keyword1.setValue(json.getString("first"));
- m.put("first", keyword1);
- WechatTemplateData keyword2 = new WechatTemplateData();
- keyword2.setColor("#000000");
- keyword2.setValue(json.getString("title"));
- m.put("keyword1", keyword2);
- WechatTemplateData keyword3 = new WechatTemplateData();
- keyword3.setColor("#000000");
- keyword3.setValue(json.getString("doctorName"));
- m.put("keyword2", keyword3);
- WechatTemplateData keyword4 = new WechatTemplateData();
- keyword4.setColor("#000000");
- keyword4.setValue(json.getString("date"));
- m.put("keyword3", keyword4);
- WechatTemplateData keyword5 = new WechatTemplateData();
- keyword5.setColor("#000000");
- keyword5.setValue(json.getString("remark"));
- m.put("remark", keyword5);
- } else if (type == 10) {
- if (json.has("url")) {
- temp.setUrl(url + json.getString("url"));
- } else {
- temp.setUrl(url + "qygl/html/signing-doctors.html?openid=" + openid + "&state=" + openid + "&toUser=" + json.getString("toUser") + "&toName=" + name + "&represented=" + (StringUtils.isNotEmpty(json.getString("represented"))?json.getString("represented"):""));
- }
- temp.setTemplate_id(template_doctor_change);
- WechatTemplateData keyword1 = new WechatTemplateData();
- keyword1.setColor("#000000");
- keyword1.setValue(json.getString("keyword1"));
- m.put("keyword1", keyword1);
- WechatTemplateData keyword2 = new WechatTemplateData();
- keyword2.setColor("#000000");
- keyword2.setValue(json.getString("keyword2"));
- m.put("keyword2", keyword2);
- WechatTemplateData keyword3 = new WechatTemplateData();
- keyword3.setColor("#000000");
- keyword3.setValue(json.getString("keyword3"));
- m.put("keyword3", keyword3);
- } else if (type == 11) {
- if (json.has("url")) {
- temp.setUrl(url + json.getString("url"));
- } else {
- String xinurl = url + "survey/html/survey_info.html?openid=" + openid + "&state=" + openid + "&survey_id=" + json.getString("survey_id") + "&toUser=" + json.getString("toUser") + "&toName=" + name + "&represented=" + (StringUtils.isNotEmpty(json.getString("represented"))?json.getString("represented"):"");
- // temp.setUrl(url + "survey/html/survey_info.html?openid=" + openid + "&state=" + openid + "&survey_id=" + json.getString("survey_id") + "&toUser=" + json.getString("toUser") + "&toName=" + name);
- temp.setUrl(xinurl);
- }
- temp.setTemplate_id(template_doctor_survey);
- WechatTemplateData keyword1 = new WechatTemplateData();
- keyword1.setColor("#000000");
- keyword1.setValue(json.getString("keyword1"));
- m.put("keyword1", keyword1);
- WechatTemplateData keyword2 = new WechatTemplateData();
- keyword2.setColor("#000000");
- keyword2.setValue(json.getString("keyword2"));
- m.put("keyword2", keyword2);
- logger.info("type=====>openId " + openid);
- } else if (type == 12) {
- temp.setUrl(url + "jtgx/html/application-msg-list.html?openid=" + openid + "&member=" + json.getString("member") + "&toUser=" + json.getString("member") + "&toName=" + name);
- temp.setTemplate_id(template_doctor_survey);
- WechatTemplateData keyword1 = new WechatTemplateData();
- keyword1.setColor("#000000");
- keyword1.setValue(json.getString("keyword1"));
- m.put("keyword1", keyword1);
- WechatTemplateData keyword2 = new WechatTemplateData();
- keyword2.setColor("#000000");
- keyword2.setValue(json.getString("keyword2"));
- m.put("keyword2", keyword2);
- // WechatTemplateData keyword3= new WechatTemplateData();
- // keyword3.setColor("#000000");
- // keyword3.setValue(json.getString("keyword3"));
- // m.put("keyword3", keyword3);
- //
- // WechatTemplateData keyword4= new WechatTemplateData();
- // keyword4.setColor("#000000");
- // keyword4.setValue(json.getString("keyword4"));
- // m.put("keyword4", keyword4);
- } else if (type == 13) {
- temp.setUrl(url + "jtgx/html/family.html?openid=" + openid);
- temp.setTemplate_id(template_doctor_survey);
- WechatTemplateData keyword1 = new WechatTemplateData();
- keyword1.setColor("#000000");
- keyword1.setValue(json.getString("keyword1"));
- m.put("keyword1", keyword1);
- WechatTemplateData keyword2 = new WechatTemplateData();
- keyword2.setColor("#000000");
- keyword2.setValue(json.getString("keyword2"));
- m.put("keyword2", keyword2);
- // WechatTemplateData keyword3= new WechatTemplateData();
- // keyword3.setColor("#000000");
- // keyword3.setValue(json.getString("keyword3"));
- // m.put("keyword3", keyword3);
- //
- // WechatTemplateData keyword4= new WechatTemplateData();
- // keyword4.setColor("#000000");
- // keyword4.setValue(json.getString("keyword4"));
- // m.put("keyword4", keyword4);
- } else if (type == 14) {
- temp.setTemplate_id(template_doctor_survey);
- WechatTemplateData keyword1 = new WechatTemplateData();
- keyword1.setColor("#000000");
- keyword1.setValue(json.getString("keyword1"));
- m.put("keyword1", keyword1);
- WechatTemplateData keyword2 = new WechatTemplateData();
- keyword2.setColor("#000000");
- keyword2.setValue(json.getString("keyword2"));
- m.put("keyword2", keyword2);
- } else if (type == 15) {
- temp.setTemplate_id(template_doctor_survey);
- WechatTemplateData keyword1 = new WechatTemplateData();
- keyword1.setColor("#000000");
- keyword1.setValue(json.getString("keyword1"));
- m.put("keyword1", keyword1);
- } else if (type == 16) {
- temp.setUrl(url + "xuqian/html/information.html?openid=" + openid + "&changeDoctor=" + 1 + "&toUser=" + json.getString("toUser") + "&toName=" + name + "&represented=" + (StringUtils.isNotEmpty(json.getString("represented"))?json.getString("represented"):""));
- temp.setTemplate_id(template_doctor_survey);
- WechatTemplateData keyword1 = new WechatTemplateData();
- keyword1.setColor("#000000");
- keyword1.setValue(json.getString("keyword1"));
- m.put("keyword1", keyword1);
- WechatTemplateData keyword2 = new WechatTemplateData();
- keyword2.setColor("#000000");
- keyword2.setValue(json.getString("keyword2"));
- m.put("keyword2", keyword2);
- } else if (type == 17) {
- temp.setUrl(url + "yszx/html/manyidu.html?openid=" + openid + "&consult=" + json.getString("consult") + "&toUser=" + json.getString("toUser") + "&toName=" + name + "&represented=" + (StringUtils.isNotEmpty(json.getString("represented"))?json.getString("represented"):""));
- temp.setTemplate_id(template_doctor_survey);
- WechatTemplateData keyword1 = new WechatTemplateData();
- keyword1.setColor("#000000");
- keyword1.setValue(json.getString("keyword1"));
- m.put("keyword1", keyword1);
- WechatTemplateData keyword2 = new WechatTemplateData();
- keyword2.setColor("#000000");
- keyword2.setValue(json.getString("keyword2"));
- m.put("keyword2", keyword2);
- } else if (type == 18) {
- if (json.has("wlyygc")) {
- temp.setUrl(json.getString("url"));
- }else {
- temp.setUrl(url + json.getString("url"));
- }
- temp.setTemplate_id(template_doctor_survey);
- WechatTemplateData keyword1 = new WechatTemplateData();
- keyword1.setColor("#000000");
- keyword1.setValue(json.getString("keyword1"));
- m.put("keyword1", keyword1);
- WechatTemplateData keyword2 = new WechatTemplateData();
- keyword2.setColor("#000000");
- keyword2.setValue(json.getString("keyword2"));
- m.put("keyword2", keyword2);
- } else if (type == 19) {
- temp.setUrl(url + json.getString("url"));
- temp.setTemplate_id(template_doctor_audit);
- WechatTemplateData keyword1 = new WechatTemplateData();
- keyword1.setColor("#000000");
- keyword1.setValue(json.getString("keyword1"));
- m.put("keyword1", keyword1);
- WechatTemplateData keyword2 = new WechatTemplateData();
- keyword2.setColor("#000000");
- keyword2.setValue(json.getString("keyword2"));
- m.put("keyword2", keyword2);
- } else if (type == 20) {
- temp.setUrl(url + json.getString("url"));
- temp.setTemplate_id(template_doctor_service);
- WechatTemplateData keyword1 = new WechatTemplateData();
- keyword1.setColor("#000000");
- keyword1.setValue(json.getString("keyword1"));
- m.put("keyword1", keyword1);
- WechatTemplateData keyword2 = new WechatTemplateData();
- keyword2.setColor("#000000");
- keyword2.setValue(json.getString("keyword2"));
- m.put("keyword2", keyword2);
- WechatTemplateData keyword3 = new WechatTemplateData();
- keyword3.setColor("#000000");
- keyword3.setValue(json.getString("keyword3"));
- m.put("keyword3", keyword3);
- }
- //@TODO 以后需要了释放出来 要做易联众对接支付消息
- /*else if (type == 21) {
- if (json.has("url")) {
- temp.setUrl(url + json.getString("url"));
- }
- temp.setTemplate_id(template_physical_examination);
- WechatTemplateData keyword1 = new WechatTemplateData();
- keyword1.setColor("#000000");
- keyword1.setValue(json.getString("keyword1"));
- m.put("keyword1", keyword1);
- WechatTemplateData keyword2 = new WechatTemplateData();
- keyword2.setColor("#000000");
- keyword2.setValue(json.getString("keyword2"));
- m.put("keyword2", keyword2);
- WechatTemplateData keyword3 = new WechatTemplateData();
- keyword3.setColor("#000000");
- keyword3.setValue(json.getString("keyword3"));
- m.put("keyword3", keyword3);
- WechatTemplateData keyword4 = new WechatTemplateData();
- keyword4.setColor("#000000");
- keyword4.setValue(json.getString("keyword4"));
- m.put("keyword4", keyword4);
- WechatTemplateData keyword5 = new WechatTemplateData();
- keyword5.setColor("#000000");
- keyword5.setValue(json.getString("keyword5"));
- m.put("keyword5", keyword5);
- }*/else if (type == 22) {//设备绑定
- if (json.has("url")) {
- temp.setUrl(url + json.getString("url"));
- }
- temp.setTemplate_id(template_patient_bind_device);
- WechatTemplateData keyword1 = new WechatTemplateData();
- keyword1.setColor("#000000");
- keyword1.setValue(json.getString("keyword1"));
- m.put("keyword1", keyword1);
- WechatTemplateData keyword2 = new WechatTemplateData();
- keyword2.setColor("#000000");
- keyword2.setValue(json.getString("keyword2"));
- m.put("keyword2", keyword2);
- WechatTemplateData keyword3 = new WechatTemplateData();
- keyword3.setColor("#000000");
- keyword3.setValue(json.getString("keyword3"));
- m.put("keyword3", keyword3);
- }else if (type == 23) {//健康银行积分提醒
- if (json.has("url")) {
- temp.setUrl(url + json.getString("url"));
- }
- temp.setTemplate_id(template_healthbank_credit);
- WechatTemplateData keyword1 = new WechatTemplateData();
- keyword1.setColor("#000000");
- keyword1.setValue(json.getString("keyword1"));
- m.put("keyword1", keyword1);
- WechatTemplateData keyword2 = new WechatTemplateData();
- keyword2.setColor("#000000");
- keyword2.setValue(json.getString("keyword2"));
- m.put("keyword2", keyword2);
- WechatTemplateData keyword3 = new WechatTemplateData();
- keyword3.setColor("#000000");
- keyword3.setValue(json.getString("keyword3"));
- m.put("keyword3", keyword3);
- }else if (type == 24) {//结果处理通知
- temp.setTemplate_id(template_deal_with);
- WechatTemplateData keyword1 = new WechatTemplateData();
- keyword1.setColor("#000000");
- keyword1.setValue(json.getString("keyword1"));
- m.put("keyword1", keyword1);
- WechatTemplateData keyword2 = new WechatTemplateData();
- keyword2.setColor("#000000");
- keyword2.setValue(json.getString("keyword2"));
- m.put("keyword2", keyword2);
- }else if (type==25){
- temp.setUrl(url + "kfgl/html/plan-item-detail.html?openid=" + openid + "&planIds=" + json.getString("planIds") + "&toUser=" + json.getString("toUser") + "&toName=" + name + "&represented=" + (StringUtils.isNotEmpty(json.getString("represented"))?json.getString("represented"):"")+"&doctor="+json.getString("doctor"));
- temp.setTemplate_id(template_doctor_service);
- WechatTemplateData keyword1 = new WechatTemplateData();
- keyword1.setColor("#000000");
- keyword1.setValue(json.getString("keyword1"));
- m.put("keyword1", keyword1);
- WechatTemplateData keyword2 = new WechatTemplateData();
- keyword2.setColor("#000000");
- keyword2.setValue(json.getString("keyword2"));
- m.put("keyword2", keyword2);
- WechatTemplateData keyword3 = new WechatTemplateData();
- keyword3.setColor("#000000");
- keyword3.setValue(json.getString("keyword3"));
- m.put("keyword3", keyword3);
- }
- temp.setData(m);
- ObjectMapper mapper = new ObjectMapper();
- String strJson = mapper.writeValueAsString(temp);
- //System.out.println("send message================>" + strJson);
- logger.error("send message================>" + strJson);
- return strJson;
- } catch (Exception e) {
- e.printStackTrace();
- return "";
- }
- }
- /**
- * 添加含发送代理人微信消息
- *
- * @param code 居民code
- * @param type 模板类型
- * @param json 模板消息体加上跳转URL
- * @return
- */
- public Boolean putAgentWxMsg(String code, int type, JSONObject json) {
- Boolean flag = false;
- try {
- String url = json.has("url") ? json.getString("url") : null;
- String first = json.has("first") ? json.getString("first") : "";
- Patient patient = patientDao.findByCode(code);
- String name = patient.getName();
- String openId = patient.getOpenid();
- if (StringUtils.isNotEmpty(openId) && !("undefined".equals(openId))) {
- putWxMsg(accessTokenUtils.getAccessToken(), type, openId, name, json);
- flag = true;
- } else {
- //发送代理人
- org.json.JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(code, openId);
- if (jsonArray != null && jsonArray.length() > 0) {
- for (int i = 0; i < jsonArray.length(); i++) {
- org.json.JSONObject j = jsonArray.getJSONObject(i);
- Patient member = (Patient) j.get("member");
- org.json.JSONObject data = json;
- data.remove("first");
- data.remove("url");
- data.put("url", url + "&represented=" + member.getCode());
- data.put("first", weiXinOpenIdUtils.getTitleMes(patient, j.getInt("relation"), name) + first);
- if (StringUtils.isNotEmpty(member.getOpenid()) && !("undefined".equals(member.getOpenid()))) {
- putWxMsg(accessTokenUtils.getAccessToken(), type, member.getOpenid(), name, data);
- flag = true;
- }
- }
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- return flag;
- }
- /**
- * 添加含发送代理人微信消息
- *
- * @param code 发送对象code
- * @param type 模板类型
- * @param scene 模板场景值
- * @param wechatTemplate 微信消息模板推送内容
- * @return
- */
- public Boolean putAgentWxMsg(String code, int type,String scene, WechatTemplate wechatTemplate) {
- Boolean flag = false;
- try {
- Patient patient = patientDao.findByCode(code);
- String name = patient.getName();
- String openId = patient.getOpenid();
- ObjectMapper mapper = new ObjectMapper();
- String data = mapper.writeValueAsString(wechatTemplate);
- JSONObject wechatContent = new JSONObject(data);
- if (StringUtils.isNotEmpty(openId) && !("undefined".equals(openId))) {
- putWxMsg(accessTokenUtils.getAccessToken(), type, scene, openId, name, wechatContent);
- flag = true;
- } else {
- //发送代理人
- org.json.JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(code, openId);
- if (jsonArray != null && jsonArray.length() > 0) {
- for (int i = 0; i < jsonArray.length(); i++) {
- org.json.JSONObject j = jsonArray.getJSONObject(i);
- Patient member = (Patient) j.get("member");
- Map<String, WechatTemplateData> contentData = wechatTemplate.getData();
- WechatTemplateData firstData = contentData.get("first");
- String url = wechatTemplate.getUrl();
- String first = firstData.getValue();
- WechatTemplateData firstKeyword = new WechatTemplateData();
- firstKeyword.setColor("#000000");
- firstKeyword.setValue(weiXinOpenIdUtils.getTitleMes(patient, j.getInt("relation"), name) + first);
- contentData.put("first", firstKeyword);
- //替换掉原toUser、toName的值
- int start = url.indexOf("&toUser=");
- int end = url.indexOf("&", start + 1);
- String touser = url.substring(start, end);
- url = url.replace(touser, "&toUser=" + member.getCode());
- wechatTemplate.setTouser(member.getOpenid());
- wechatTemplate.setUrl(url);
- wechatTemplate.setData(contentData);
- String data1 = mapper.writeValueAsString(wechatTemplate);
- JSONObject wechatContent1 = new JSONObject(data1);
- if (StringUtils.isNotEmpty(member.getOpenid()) && !("undefined".equals(member.getOpenid()))) {
- putWxMsg(accessTokenUtils.getAccessToken(), type, scene, openId, name, wechatContent1);
- flag = true;
- }
- }
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- return flag;
- }
- /**
- * 根据type 匹配对应模板ID
- *
- * @param type 见WechatPushLog说明
- * @return
- */
- private String getTemplateId(int type) throws Exception {
- String templateId = null;
- switch (type) {
- case 1:
- templateId = template_sign_success;
- break;
- case 2:
- templateId = template_sign_failed;
- break;
- case 3:
- templateId = template_consult_notice;
- break;
- case 4:
- templateId = template_health_notice;
- break;
- case 5:
- templateId = template_termination;
- break;
- case 6:
- templateId = template_appoint_success;
- break;
- case 7:
- templateId = template_appoint_failed;
- break;
- case 8:
- templateId = template_expenses_remind;
- break;
- case 9:
- templateId = template_healthy_article;
- break;
- case 10:
- templateId = template_doctor_change;
- break;
- case 11:
- templateId = template_doctor_survey;
- break;
- case 12:
- templateId = template_doctor_audit;
- break;
- case 13:
- templateId = template_doctor_service;
- break;
- case 14:
- templateId = template_physical_examination;
- break;
- case 15:
- templateId = doctor_invitel_template;
- break;
- case 16:
- templateId = template_deal_with;
- break;
- }
- return templateId;
- }
- /**
- * 构建微信模板数据 默认字体黑色
- *
- * @param type 模板类型见日志实体类
- * @param openid 发送对象openid
- * @param first 消息头
- * @param remark 备注
- * @param url 带参全路径跳转链接
- * @param keywords 消息体
- * @return
- */
- public WechatTemplate packageTemplate(int type,String openid, String first, String remark, String url, List<String> keywords) throws Exception{
- WechatTemplate temp = new WechatTemplate();
- try {
- String templateId = getTemplateId(type);
- Map<String, WechatTemplateData> m = new HashMap<String, WechatTemplateData>();
- WechatTemplateData firstKeyword = new WechatTemplateData();
- firstKeyword.setColor("#000000");
- firstKeyword.setValue(first);
- m.put("first", firstKeyword);
- WechatTemplateData remarkKeyword = new WechatTemplateData();
- remarkKeyword.setColor("#000000");
- remarkKeyword.setValue(remark);
- m.put("remark", remarkKeyword);
- for (int i=0;i<keywords.size();i++){
- WechatTemplateData tempKeyword = new WechatTemplateData();
- tempKeyword.setColor("#000000");
- tempKeyword.setValue(keywords.get(i));
- m.put("keyword"+(i+1), tempKeyword);
- }
- temp.setTouser(openid);
- temp.setTemplate_id(templateId);
- temp.setTopcolor("#000000");
- temp.setUrl(url);
- temp.setData(m);
- /* ObjectMapper mapper = new ObjectMapper();
- String data = mapper.writeValueAsString(temp);
- result = new JSONObject(data);*/
- } catch (JSONException e) {
- e.printStackTrace();
- }
- return temp;
- }
- }
|