PushMsgTask.java 54 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106
  1. package com.yihu.wlyy.task;
  2. import com.fasterxml.jackson.databind.ObjectMapper;
  3. import com.yihu.wlyy.entity.patient.Patient;
  4. import com.yihu.wlyy.entity.wechat.WechatPushLog;
  5. import com.yihu.wlyy.entity.wechat.WechatTemplate;
  6. import com.yihu.wlyy.entity.wechat.WechatTemplateData;
  7. import com.yihu.wlyy.repository.patient.PatientDao;
  8. import com.yihu.wlyy.repository.wechat.WechatPushLogDao;
  9. import com.yihu.wlyy.util.HttpUtil;
  10. import com.yihu.wlyy.wechat.util.WeiXinAccessTokenUtils;
  11. import com.yihu.wlyy.wechat.util.WeiXinOpenIdUtils;
  12. import org.apache.commons.lang3.StringUtils;
  13. import org.json.JSONArray;
  14. import org.json.JSONException;
  15. import org.json.JSONObject;
  16. import org.slf4j.Logger;
  17. import org.slf4j.LoggerFactory;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.beans.factory.annotation.Value;
  20. import org.springframework.data.redis.core.StringRedisTemplate;
  21. import org.springframework.stereotype.Component;
  22. import javax.annotation.PostConstruct;
  23. import java.util.Date;
  24. import java.util.HashMap;
  25. import java.util.List;
  26. import java.util.Map;
  27. import java.util.concurrent.LinkedBlockingQueue;
  28. @Component
  29. public class PushMsgTask {
  30. private static Logger logger = LoggerFactory.getLogger(PushMsgTask.class);
  31. // 最大容量为50的数组堵塞队列
  32. private static LinkedBlockingQueue<JSONObject> queue = new LinkedBlockingQueue<JSONObject>();
  33. @Autowired
  34. private HttpUtil httpUtil;
  35. @Value("${server.server_url}")
  36. private String server_url;
  37. @Value("${pushMes.method}")
  38. private String putMesMethod;
  39. @Value("${pushMes.redis_prescription_title}")
  40. private String redisQueue;
  41. @Value("${putMesType.wechat}")
  42. private String putMesType;
  43. //模板id
  44. @Value("${wechat.message.template_sign_success}")
  45. private String template_sign_success;
  46. @Value("${wechat.message.template_sign_failed}")
  47. private String template_sign_failed;
  48. @Value("${wechat.message.template_consult_notice}")
  49. private String template_consult_notice;
  50. @Value("${wechat.message.template_health_notice}")
  51. private String template_health_notice;
  52. @Value("${wechat.message.template_termination}")
  53. private String template_termination;
  54. @Value("${wechat.message.template_appoint_success}")
  55. private String template_appoint_success;
  56. @Value("${wechat.message.template_appoint_failed}")
  57. private String template_appoint_failed;
  58. @Value("${wechat.message.template_expenses_remind}")
  59. private String template_expenses_remind;
  60. @Value("${wechat.message.template_healthy_article}")
  61. private String template_healthy_article;
  62. @Value("${wechat.message.template_doctor_change}")
  63. private String template_doctor_change;
  64. @Value("${wechat.message.template_doctor_survey}")
  65. private String template_doctor_survey;
  66. @Value("${wechat.message.template_doctor_audit}")
  67. private String template_doctor_audit;//审核结果通知
  68. @Value("${wechat.message.template_doctor_service}")
  69. private String template_doctor_service;//服务结果通知
  70. @Value("${wechat.message.template_physical_examination}")
  71. private String template_physical_examination;//体检提醒
  72. @Value("${wechat.message.doctor_invitel_template}")
  73. private String doctor_invitel_template;
  74. @Value("${wechat.message.template_deal_with}")
  75. private String template_deal_with;
  76. @Value("${wechat.message.template_patient_bind_device}")
  77. private String template_patient_bind_device;
  78. @Value("${wechat.message.template_healthbank_credit}")
  79. private String template_healthbank_credit;
  80. @Autowired
  81. private StringRedisTemplate redisTemplate;
  82. @Autowired
  83. private WechatPushLogDao wechatPushLogDao;
  84. @Autowired
  85. private WeiXinAccessTokenUtils accessTokenUtils;
  86. @Autowired
  87. private WeiXinOpenIdUtils weiXinOpenIdUtils;
  88. @Autowired
  89. private PatientDao patientDao;
  90. /**
  91. * 添加一条推送消息
  92. *
  93. * @param receiver 接收人
  94. * @param type 消息类型
  95. * @param title 消息标题
  96. * @param msg 消息内容
  97. * @param data 消息数据
  98. */
  99. public void put(String receiver, String type, String title, String msg, String data) {
  100. try {
  101. JSONObject json = new JSONObject();
  102. json.put("receiver", receiver);
  103. json.put("type", type);
  104. json.put("title", title);
  105. json.put("msg", msg);
  106. json.put("data", data);
  107. queue.put(json);
  108. } catch (Exception e) {
  109. logger.error("添加到消息队列失败!", e);
  110. e.printStackTrace();
  111. }
  112. }
  113. /**
  114. * 添加微信消息
  115. *
  116. * @param type
  117. * @param data
  118. */
  119. public void putWxMsg(String access_token, int type, String openid, String name, JSONObject data) {
  120. try {
  121. JSONObject json = new JSONObject();
  122. json.put("wx", true);
  123. json.put("access_token", access_token);
  124. json.put("type", type);
  125. json.put("openid", openid);
  126. json.put("name", name);
  127. json.put("data", data);
  128. //如果是内网推送到redis,如果是外网推送到内存队列
  129. if (putMesMethod.equals("1")) {
  130. JSONObject mes = new JSONObject();
  131. mes.put("title", putMesType);
  132. mes.put("value", json.toString());
  133. redisTemplate.opsForList().leftPush(redisQueue, mes.toString());
  134. } else {
  135. queue.put(json);
  136. }
  137. } catch (Exception e) {
  138. logger.error("添加到微信消息列队列失败!", e);
  139. e.printStackTrace();
  140. }
  141. }
  142. /**
  143. * 根据type及场景值添加微信消息
  144. * @param access_token
  145. * @param type
  146. * @param scene
  147. * @param openid
  148. * @param name
  149. * @param data packageTemplate方法打包后的模板数据
  150. */
  151. public void putWxMsg(String access_token, int type,String scene, String openid, String name, JSONObject data) {
  152. try {
  153. JSONObject json = new JSONObject();
  154. json.put("wx", true);
  155. json.put("access_token", access_token);
  156. json.put("type", type);
  157. json.put("scene", scene);
  158. json.put("openid", openid);
  159. json.put("name", name);
  160. json.put("data", data);
  161. //如果是内网推送到redis,如果是外网推送到内存队列
  162. if (putMesMethod.equals("1")) {
  163. JSONObject mes = new JSONObject();
  164. mes.put("title", putMesType);
  165. mes.put("value", json.toString());
  166. redisTemplate.opsForList().leftPush(redisQueue, mes.toString());
  167. } else {
  168. queue.put(json);
  169. }
  170. } catch (Exception e) {
  171. logger.error("添加到微信消息列队列失败!", e);
  172. e.printStackTrace();
  173. }
  174. }
  175. public void put(JSONArray array) {
  176. if (array == null || array.length() == 0) {
  177. return;
  178. }
  179. for (int i = 0; i < array.length(); i++) {
  180. JSONObject json = array.getJSONObject(i);
  181. if (json == null) {
  182. continue;
  183. }
  184. try {
  185. queue.put(json);
  186. } catch (Exception e) {
  187. logger.error("批量添加到消息队列失败!", e);
  188. }
  189. }
  190. }
  191. @PostConstruct
  192. private void run() {
  193. new Thread(new ConsumerTask(httpUtil)).start();
  194. }
  195. // 消费者
  196. class ConsumerTask implements Runnable {
  197. private HttpUtil httpUtil;
  198. public ConsumerTask(HttpUtil httpUtil) {
  199. this.httpUtil = httpUtil;
  200. }
  201. @Override
  202. public void run() {
  203. while (true) {
  204. try {
  205. // 如果queue为空,则当前线程会堵塞,直到有新数据加入
  206. JSONObject json = queue.take();
  207. boolean wx = json.has("wx") ? json.getBoolean("wx") : false;
  208. if (wx) {
  209. // 推送微信消息
  210. JSONObject data = json.has("data") ? json.getJSONObject("data") : null;
  211. if (data == null) {
  212. continue;
  213. }
  214. // 消息类型:1:签约成功 2:签约失败 3:咨询回复通知 4:健康指导提醒
  215. int type = json.has("type") ? json.getInt("type") : -1;
  216. if (type == -1) {
  217. continue;
  218. }
  219. String scene = json.has("scene") ? json.getString("scene") : "";
  220. String access_token = json.has("access_token") ? json.getString("access_token") : "";
  221. String openid = json.has("openid") ? json.getString("openid") : "";
  222. String name = json.has("name") ? json.getString("name") : "";
  223. // String name = data.has("name") ? json.getString("name") : "";
  224. // 发送消息到微信端
  225. sendWeixinMessage(access_token, type, openid, name, data);
  226. // sendWeixinMessage(access_token, type,scene, openid, name, data);
  227. } else {
  228. // 推送平台消息
  229. String receiver = json.has("receiver") ? json.getString("receiver") : "";
  230. String type = json.has("type") ? json.getString("type") : "";
  231. String title = json.has("title") ? json.getString("title") : "";
  232. String msg = json.has("msg") ? json.getString("msg") : "";
  233. String data = json.has("data") ? json.getString("data") : "";
  234. boolean res = httpUtil.pushMessage(receiver, type, title, msg, data);
  235. if (res) {
  236. logger.info("消息推送成功!");
  237. } else {
  238. logger.error("消息推送失败!");
  239. }
  240. }
  241. } catch (Exception ex) {
  242. ex.printStackTrace();
  243. }
  244. }
  245. }
  246. }
  247. // private static final String signSuccess = "0D2vYZVRzFz15p9Y_pkZ1DKutDq8UOsks79FXUKS0tA";
  248. // private static final String signFalied = "My2VNERjJt4NXR4Ibh42pdrP6B6ka8rQxZeWinQh99s";
  249. // private static final String consultNotice = "0mF_vHj-ILx8EH8DwzmAi7LqzjqYiU9IrSRRmziTZyc";
  250. // private static final String healthNotice = "uv31ES_VCmq3tBYtyGmEQvIwU_zh9LDhF3bFpbIUt5g";
  251. // private static final String termination = "C0tdXtA_8k-Cy4a1EkzQuI877vqaqAtRkc-e_Gsd7sk";
  252. // private static final String appointmentSuccess = "FY3Pqa66tHIE1Fv-irbFBPOh5cYP71fkOzfZKH4S-Fo";
  253. // private static final String appointmentCancel = "tldWEb9AN7p_RoHoD8ml0GxWW3V1V_mpEEhp2v6p56s";
  254. // private static final String url = "http://www.xmtyw.cn/wlyy/wx/html/";
  255. /**
  256. * 发送微信模板消息
  257. *
  258. * @param type 1:签约成功 2:签约失败 3:咨询回复通知 4:健康指导提醒 5:解约申请通知 6:预约挂号成功通知 7:预约取消通知 8 缴费提醒 9 健康教育 10 签约医生变更(信息变更通知)
  259. * 18 产检提醒和产检就诊提醒 19:续方审核结果通知(0.不通过 1.通过 2。调整处方并通过) 20:服务结果通知 11.代办事项通知 21体检提醒
  260. * @param json 当type==1||type==2时:{"first":"消息主题",”doctor":"医生code","doctorName":"医生名","date":"签约时间","content":"签约内容","remark":"消息备注"}
  261. * type==3时:{"first":"消息主题","consult":"医生咨询编号","consultcontent":"咨询内容","replycontent":"回复内容","doctorName":"医生名","remark":"消息备注"}
  262. * type==4时:{"first":"消息主题","date":"指导时间","orgName":"指导机构","doctorName":"指导医生名","content":"指导内容","remark":"消息备注"}
  263. * type==5时:{"first":"消息主题","date":"解约时间",”doctor":"医生code","doctorName":"医生名","orgName":"解约机构","remark":"消息备注"}
  264. * type==6时:{"first":"消息主题","date":"预约时间",”id":"预约ID","doctorName":"医生名","orgName":"预约医院","deptName":"预约科室","remark":"消息备注"}
  265. * type==7时:{"first":"消息主题","name":"就诊人名","date":"预约时间","doctorName":"医生名","orgName":"预约医院","remark":"消息备注"}
  266. * type==9时:{"first":"消息主题","name":"患教标题","doctorName":"医生名","date":"发送时间","remark":"消息备注"}
  267. * type==10时:{"first":"消息主题","name":"患教标题","doctorName":"医生名","date":"发送时间","remark":"消息备注"}
  268. * <p>
  269. * type==11时:{"first":"消息主题","name":"患教标题","doctorName":"医生名","date":"发送时间","remark":"消息备注"}
  270. * type==19时:{"first":"消息主题","keyword1":"审核结果","keyword2":"审核医生","remark":"消息备注"}
  271. * type==20时:{"first":"消息主题","keyword1":"服务项目","keyword2":"操作医生","keyword3":"服务时间","remark":"消息备注"}
  272. * @return
  273. */
  274. public boolean sendWeixinMessage(String access_token, int type, String openid, String name, JSONObject json) {
  275. try {
  276. if (StringUtils.isEmpty(openid)) {
  277. logger.error("send wechat message failed:openid is empty");
  278. return false;
  279. }
  280. if (access_token != null) {
  281. String token_url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + access_token;
  282. String params = typeMsg(type, openid, name, json);
  283. if (params == "") {
  284. logger.error("参数错误!error");
  285. return false;
  286. }
  287. WechatPushLog log = new WechatPushLog();
  288. log.setType(type);
  289. log.setCreateTime(new Date());
  290. log.setName(name);
  291. log.setOpenid(openid);
  292. if (!json.isNull("toUser")) {
  293. log.setPatient(json.getString("toUser"));
  294. }
  295. log.setRequest(json.toString());
  296. String result = httpUtil.sendPost(token_url, params);
  297. JSONObject jsonResult = new JSONObject(result);
  298. log.setResponse(result);
  299. if (Integer.parseInt(jsonResult.get("errcode").toString()) == 0) {
  300. logger.info("微信信息推送成功!success");
  301. log.setStatus(1);
  302. wechatPushLogDao.save(log);
  303. return true;
  304. } else {
  305. log.setStatus(0);
  306. wechatPushLogDao.save(log);
  307. logger.error("错误编码:" + jsonResult.get("errcode").toString() + " 错误提示:" + jsonResult.get("errmsg").toString());
  308. return false;
  309. }
  310. } else {
  311. logger.error("获取access_token失败!");
  312. return false;
  313. }
  314. } catch (Exception e) {
  315. e.printStackTrace();
  316. logger.error("微信信息推送失败!");
  317. return false;
  318. }
  319. }
  320. /**
  321. *
  322. * @param access_token
  323. * @param type
  324. * @param openid
  325. * @param name
  326. * @param json
  327. * @return
  328. */
  329. public boolean sendWeixinMessage(String access_token, int type,String scene, String openid, String name, JSONObject json) {
  330. try {
  331. if (StringUtils.isEmpty(openid)) {
  332. logger.error("send wechat message failed:openid is empty");
  333. return false;
  334. }
  335. if (access_token != null) {
  336. String token_url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + access_token;
  337. String params = json.toString();
  338. if (params == "") {
  339. logger.error("参数错误!error");
  340. return false;
  341. }
  342. WechatPushLog log = new WechatPushLog();
  343. log.setType(type);
  344. log.setScene(scene);
  345. log.setCreateTime(new Date());
  346. log.setName(name);
  347. log.setOpenid(openid);
  348. if (!json.isNull("toUser")) {
  349. log.setPatient(json.getString("toUser"));
  350. }
  351. log.setRequest(json.toString());
  352. String result = httpUtil.sendPost(token_url, params);
  353. JSONObject jsonResult = new JSONObject(result);
  354. log.setResponse(result);
  355. if (Integer.parseInt(jsonResult.get("errcode").toString()) == 0) {
  356. logger.info("微信信息推送成功!success");
  357. log.setStatus(1);
  358. wechatPushLogDao.save(log);
  359. return true;
  360. } else {
  361. log.setStatus(0);
  362. wechatPushLogDao.save(log);
  363. logger.error("错误编码:" + jsonResult.get("errcode").toString() + " 错误提示:" + jsonResult.get("errmsg").toString());
  364. return false;
  365. }
  366. } else {
  367. logger.error("获取access_token失败!");
  368. return false;
  369. }
  370. } catch (Exception e) {
  371. e.printStackTrace();
  372. logger.error("微信信息推送失败!");
  373. return false;
  374. }
  375. }
  376. /**
  377. * 拼接参数
  378. *
  379. * @param type
  380. * @return
  381. */
  382. public String typeMsg(int type, String openid, String name, JSONObject json) {
  383. try {
  384. String url = server_url + "wx/html/";
  385. WechatTemplate temp = new WechatTemplate();
  386. temp.setTouser(openid);
  387. temp.setTopcolor("#000000");
  388. Map<String, WechatTemplateData> m = new HashMap<String, WechatTemplateData>();
  389. WechatTemplateData first = new WechatTemplateData();
  390. first.setColor("#000000");
  391. first.setValue(json.getString("first"));
  392. m.put("first", first);
  393. WechatTemplateData remark = new WechatTemplateData();
  394. remark.setColor("#000000");
  395. remark.setValue(json.getString("remark"));
  396. m.put("remark", remark);
  397. String temp_id = "";
  398. if (type == 3) {
  399. if (json.has("isPublic") && json.getInt("isPublic") == 1) {
  400. 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"):""));
  401. } else {
  402. 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"):""));
  403. }
  404. temp_id = template_consult_notice;
  405. temp.setTemplate_id(temp_id);
  406. WechatTemplateData keyword1 = new WechatTemplateData();
  407. keyword1.setColor("#000000");
  408. keyword1.setValue(json.getString("consultcontent"));
  409. m.put("keyword1", keyword1);
  410. WechatTemplateData keyword2 = new WechatTemplateData();
  411. keyword2.setColor("#000000");
  412. keyword2.setValue(json.getString("replycontent"));
  413. m.put("keyword2", keyword2);
  414. WechatTemplateData keyword3 = new WechatTemplateData();
  415. keyword3.setColor("#000000");
  416. keyword3.setValue(json.getString("doctorName"));
  417. m.put("keyword3", keyword3);
  418. } else if (type == 1 || type == 2) {
  419. if (type == 1) {
  420. temp_id = template_sign_success;
  421. } else {
  422. temp_id = template_sign_failed;
  423. }
  424. String isRenew = "0";
  425. if (json.has("isRenew")) {
  426. isRenew = "1";
  427. }
  428. String signState = "0";
  429. if (json.has("signState")) {
  430. signState = (String) json.get("signState");
  431. }
  432. if (json.has("isRenew") && type == 2) {
  433. //如果续签失败,不发送详情
  434. } else {
  435. if (json.has("agent") && ("1".equals(json.getString("agent")))) {
  436. // 发送给授权代理人
  437. 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"));
  438. } else if (json.has("agent") && ("0".equals(json.getString("agent")))) {
  439. // 发送给自己
  440. 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"));
  441. }
  442. }
  443. temp.setTouser(openid);
  444. temp.setTopcolor("#000000");
  445. temp.setTemplate_id(temp_id);
  446. WechatTemplateData keyword1 = new WechatTemplateData();
  447. keyword1.setColor("#000000");
  448. keyword1.setValue(json.getString("doctorName"));
  449. m.put("keyword1", keyword1);
  450. WechatTemplateData keyword2 = new WechatTemplateData();
  451. keyword2.setColor("#000000");
  452. keyword2.setValue(name);
  453. m.put("keyword2", keyword2);
  454. WechatTemplateData keyword3 = new WechatTemplateData();
  455. keyword3.setColor("#000000");
  456. keyword3.setValue(json.getString("date"));
  457. m.put("keyword3", keyword3);
  458. WechatTemplateData keyword4 = new WechatTemplateData();
  459. keyword4.setColor("#000000");
  460. keyword4.setValue(json.getString("content"));
  461. m.put("keyword4", keyword4);
  462. } else if (type == 4) {
  463. 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"):""));
  464. temp_id = template_health_notice;
  465. temp.setTemplate_id(temp_id);
  466. WechatTemplateData keyword1 = new WechatTemplateData();
  467. keyword1.setColor("#000000");
  468. keyword1.setValue(json.getString("date"));
  469. m.put("keyword1", keyword1);
  470. WechatTemplateData keyword2 = new WechatTemplateData();
  471. keyword2.setColor("#000000");
  472. keyword2.setValue(json.getString("orgName"));
  473. m.put("keyword2", keyword2);
  474. WechatTemplateData keyword3 = new WechatTemplateData();
  475. keyword3.setColor("#000000");
  476. keyword3.setValue(json.getString("doctorName"));
  477. m.put("keyword3", keyword3);
  478. WechatTemplateData keyword4 = new WechatTemplateData();
  479. keyword4.setColor("#000000");
  480. keyword4.setValue(name);
  481. m.put("keyword4", keyword4);
  482. WechatTemplateData keyword5 = new WechatTemplateData();
  483. keyword5.setColor("#000000");
  484. keyword5.setValue(json.getString("content"));
  485. m.put("keyword5", keyword5);
  486. } else if (type == 5) {
  487. 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"):""));
  488. temp_id = template_termination;
  489. temp.setTemplate_id(temp_id);
  490. WechatTemplateData keyword1 = new WechatTemplateData();
  491. keyword1.setColor("#000000");
  492. keyword1.setValue(json.getString("doctorName"));
  493. m.put("keyword1", keyword1);
  494. WechatTemplateData keyword2 = new WechatTemplateData();
  495. keyword2.setColor("#000000");
  496. keyword2.setValue(name);
  497. m.put("keyword2", keyword2);
  498. WechatTemplateData keyword3 = new WechatTemplateData();
  499. keyword3.setColor("#000000");
  500. keyword3.setValue(json.getString("orgName"));
  501. m.put("keyword3", keyword3);
  502. WechatTemplateData keyword4 = new WechatTemplateData();
  503. keyword4.setColor("#000000");
  504. keyword4.setValue(json.getString("date"));
  505. m.put("keyword4", keyword4);
  506. } else if (type == 6) {
  507. 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"):""));
  508. temp_id = template_appoint_success;
  509. temp.setTemplate_id(temp_id);
  510. WechatTemplateData keyword1 = new WechatTemplateData();
  511. keyword1.setColor("#000000");
  512. keyword1.setValue(json.getString("orgName"));
  513. m.put("hospitalname", keyword1);
  514. WechatTemplateData keyword2 = new WechatTemplateData();
  515. keyword2.setColor("#000000");
  516. keyword2.setValue(json.getString("deptName"));
  517. m.put("deptname", keyword2);
  518. WechatTemplateData keyword3 = new WechatTemplateData();
  519. keyword3.setColor("#000000");
  520. keyword3.setValue(json.getString("doctorName"));
  521. m.put("doctorname", keyword3);
  522. WechatTemplateData keyword4 = new WechatTemplateData();
  523. keyword4.setColor("#000000");
  524. keyword4.setValue(json.getString("date"));
  525. m.put("planstarttime", keyword4);
  526. } else if (type == 7) {
  527. 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"):""));
  528. temp_id = template_appoint_failed;
  529. temp.setTemplate_id(temp_id);
  530. WechatTemplateData keyword1 = new WechatTemplateData();
  531. keyword1.setColor("#000000");
  532. keyword1.setValue(json.getString("name"));
  533. m.put("keynote1", keyword1);
  534. WechatTemplateData keyword2 = new WechatTemplateData();
  535. keyword2.setColor("#000000");
  536. keyword2.setValue(json.getString("date"));
  537. m.put("keynote2", keyword2);
  538. WechatTemplateData keyword3 = new WechatTemplateData();
  539. keyword3.setColor("#000000");
  540. keyword3.setValue(json.getString("doctorName"));
  541. m.put("keynote3", keyword3);
  542. WechatTemplateData keyword4 = new WechatTemplateData();
  543. keyword4.setColor("#000000");
  544. keyword4.setValue(json.getString("orgName"));
  545. m.put("keynote4", keyword4);
  546. } else if (type == 8) {
  547. //temp.setUrl(url + "wdyy/html/my-appointment.html?openid=" + openid + "&toUser=" + json.getString("toUser"));
  548. temp_id = template_expenses_remind;
  549. temp.setTemplate_id(temp_id);
  550. WechatTemplateData keyword1 = new WechatTemplateData();
  551. keyword1.setColor("#000000");
  552. keyword1.setValue(json.getString("doctorName"));
  553. m.put("first", keyword1);
  554. WechatTemplateData keyword2 = new WechatTemplateData();
  555. keyword2.setColor("#000000");
  556. keyword2.setValue("以协议为准");
  557. m.put("keyword1", keyword2);
  558. WechatTemplateData keyword3 = new WechatTemplateData();
  559. keyword3.setColor("#000000");
  560. keyword3.setValue("家庭医生签约");
  561. m.put("keyword2", keyword3);
  562. WechatTemplateData keyword4 = new WechatTemplateData();
  563. keyword4.setColor("#000000");
  564. keyword4.setValue(json.getString("content"));
  565. m.put("remark", keyword4);
  566. } else if (type == 9) {
  567. 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"):""));
  568. temp_id = template_healthy_article;
  569. temp.setTemplate_id(temp_id);
  570. WechatTemplateData keyword1 = new WechatTemplateData();
  571. keyword1.setColor("#000000");
  572. keyword1.setValue(json.getString("first"));
  573. m.put("first", keyword1);
  574. WechatTemplateData keyword2 = new WechatTemplateData();
  575. keyword2.setColor("#000000");
  576. keyword2.setValue(json.getString("title"));
  577. m.put("keyword1", keyword2);
  578. WechatTemplateData keyword3 = new WechatTemplateData();
  579. keyword3.setColor("#000000");
  580. keyword3.setValue(json.getString("doctorName"));
  581. m.put("keyword2", keyword3);
  582. WechatTemplateData keyword4 = new WechatTemplateData();
  583. keyword4.setColor("#000000");
  584. keyword4.setValue(json.getString("date"));
  585. m.put("keyword3", keyword4);
  586. WechatTemplateData keyword5 = new WechatTemplateData();
  587. keyword5.setColor("#000000");
  588. keyword5.setValue(json.getString("remark"));
  589. m.put("remark", keyword5);
  590. } else if (type == 10) {
  591. if (json.has("url")) {
  592. temp.setUrl(url + json.getString("url"));
  593. } else {
  594. 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"):""));
  595. }
  596. temp.setTemplate_id(template_doctor_change);
  597. WechatTemplateData keyword1 = new WechatTemplateData();
  598. keyword1.setColor("#000000");
  599. keyword1.setValue(json.getString("keyword1"));
  600. m.put("keyword1", keyword1);
  601. WechatTemplateData keyword2 = new WechatTemplateData();
  602. keyword2.setColor("#000000");
  603. keyword2.setValue(json.getString("keyword2"));
  604. m.put("keyword2", keyword2);
  605. WechatTemplateData keyword3 = new WechatTemplateData();
  606. keyword3.setColor("#000000");
  607. keyword3.setValue(json.getString("keyword3"));
  608. m.put("keyword3", keyword3);
  609. } else if (type == 11) {
  610. if (json.has("url")) {
  611. temp.setUrl(url + json.getString("url"));
  612. } else {
  613. 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"):"");
  614. // temp.setUrl(url + "survey/html/survey_info.html?openid=" + openid + "&state=" + openid + "&survey_id=" + json.getString("survey_id") + "&toUser=" + json.getString("toUser") + "&toName=" + name);
  615. temp.setUrl(xinurl);
  616. }
  617. temp.setTemplate_id(template_doctor_survey);
  618. WechatTemplateData keyword1 = new WechatTemplateData();
  619. keyword1.setColor("#000000");
  620. keyword1.setValue(json.getString("keyword1"));
  621. m.put("keyword1", keyword1);
  622. WechatTemplateData keyword2 = new WechatTemplateData();
  623. keyword2.setColor("#000000");
  624. keyword2.setValue(json.getString("keyword2"));
  625. m.put("keyword2", keyword2);
  626. logger.info("type=====>openId " + openid);
  627. } else if (type == 12) {
  628. temp.setUrl(url + "jtgx/html/application-msg-list.html?openid=" + openid + "&member=" + json.getString("member") + "&toUser=" + json.getString("member") + "&toName=" + name);
  629. temp.setTemplate_id(template_doctor_survey);
  630. WechatTemplateData keyword1 = new WechatTemplateData();
  631. keyword1.setColor("#000000");
  632. keyword1.setValue(json.getString("keyword1"));
  633. m.put("keyword1", keyword1);
  634. WechatTemplateData keyword2 = new WechatTemplateData();
  635. keyword2.setColor("#000000");
  636. keyword2.setValue(json.getString("keyword2"));
  637. m.put("keyword2", keyword2);
  638. // WechatTemplateData keyword3= new WechatTemplateData();
  639. // keyword3.setColor("#000000");
  640. // keyword3.setValue(json.getString("keyword3"));
  641. // m.put("keyword3", keyword3);
  642. //
  643. // WechatTemplateData keyword4= new WechatTemplateData();
  644. // keyword4.setColor("#000000");
  645. // keyword4.setValue(json.getString("keyword4"));
  646. // m.put("keyword4", keyword4);
  647. } else if (type == 13) {
  648. temp.setUrl(url + "jtgx/html/family.html?openid=" + openid);
  649. temp.setTemplate_id(template_doctor_survey);
  650. WechatTemplateData keyword1 = new WechatTemplateData();
  651. keyword1.setColor("#000000");
  652. keyword1.setValue(json.getString("keyword1"));
  653. m.put("keyword1", keyword1);
  654. WechatTemplateData keyword2 = new WechatTemplateData();
  655. keyword2.setColor("#000000");
  656. keyword2.setValue(json.getString("keyword2"));
  657. m.put("keyword2", keyword2);
  658. // WechatTemplateData keyword3= new WechatTemplateData();
  659. // keyword3.setColor("#000000");
  660. // keyword3.setValue(json.getString("keyword3"));
  661. // m.put("keyword3", keyword3);
  662. //
  663. // WechatTemplateData keyword4= new WechatTemplateData();
  664. // keyword4.setColor("#000000");
  665. // keyword4.setValue(json.getString("keyword4"));
  666. // m.put("keyword4", keyword4);
  667. } else if (type == 14) {
  668. temp.setTemplate_id(template_doctor_survey);
  669. WechatTemplateData keyword1 = new WechatTemplateData();
  670. keyword1.setColor("#000000");
  671. keyword1.setValue(json.getString("keyword1"));
  672. m.put("keyword1", keyword1);
  673. WechatTemplateData keyword2 = new WechatTemplateData();
  674. keyword2.setColor("#000000");
  675. keyword2.setValue(json.getString("keyword2"));
  676. m.put("keyword2", keyword2);
  677. } else if (type == 15) {
  678. temp.setTemplate_id(template_doctor_survey);
  679. WechatTemplateData keyword1 = new WechatTemplateData();
  680. keyword1.setColor("#000000");
  681. keyword1.setValue(json.getString("keyword1"));
  682. m.put("keyword1", keyword1);
  683. } else if (type == 16) {
  684. 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"):""));
  685. temp.setTemplate_id(template_doctor_survey);
  686. WechatTemplateData keyword1 = new WechatTemplateData();
  687. keyword1.setColor("#000000");
  688. keyword1.setValue(json.getString("keyword1"));
  689. m.put("keyword1", keyword1);
  690. WechatTemplateData keyword2 = new WechatTemplateData();
  691. keyword2.setColor("#000000");
  692. keyword2.setValue(json.getString("keyword2"));
  693. m.put("keyword2", keyword2);
  694. } else if (type == 17) {
  695. 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"):""));
  696. temp.setTemplate_id(template_doctor_survey);
  697. WechatTemplateData keyword1 = new WechatTemplateData();
  698. keyword1.setColor("#000000");
  699. keyword1.setValue(json.getString("keyword1"));
  700. m.put("keyword1", keyword1);
  701. WechatTemplateData keyword2 = new WechatTemplateData();
  702. keyword2.setColor("#000000");
  703. keyword2.setValue(json.getString("keyword2"));
  704. m.put("keyword2", keyword2);
  705. } else if (type == 18) {
  706. if (json.has("wlyygc")) {
  707. temp.setUrl(json.getString("url"));
  708. }else {
  709. temp.setUrl(url + json.getString("url"));
  710. }
  711. temp.setTemplate_id(template_doctor_survey);
  712. WechatTemplateData keyword1 = new WechatTemplateData();
  713. keyword1.setColor("#000000");
  714. keyword1.setValue(json.getString("keyword1"));
  715. m.put("keyword1", keyword1);
  716. WechatTemplateData keyword2 = new WechatTemplateData();
  717. keyword2.setColor("#000000");
  718. keyword2.setValue(json.getString("keyword2"));
  719. m.put("keyword2", keyword2);
  720. } else if (type == 19) {
  721. temp.setUrl(url + json.getString("url"));
  722. temp.setTemplate_id(template_doctor_audit);
  723. WechatTemplateData keyword1 = new WechatTemplateData();
  724. keyword1.setColor("#000000");
  725. keyword1.setValue(json.getString("keyword1"));
  726. m.put("keyword1", keyword1);
  727. WechatTemplateData keyword2 = new WechatTemplateData();
  728. keyword2.setColor("#000000");
  729. keyword2.setValue(json.getString("keyword2"));
  730. m.put("keyword2", keyword2);
  731. } else if (type == 20) {
  732. temp.setUrl(url + json.getString("url"));
  733. temp.setTemplate_id(template_doctor_service);
  734. WechatTemplateData keyword1 = new WechatTemplateData();
  735. keyword1.setColor("#000000");
  736. keyword1.setValue(json.getString("keyword1"));
  737. m.put("keyword1", keyword1);
  738. WechatTemplateData keyword2 = new WechatTemplateData();
  739. keyword2.setColor("#000000");
  740. keyword2.setValue(json.getString("keyword2"));
  741. m.put("keyword2", keyword2);
  742. WechatTemplateData keyword3 = new WechatTemplateData();
  743. keyword3.setColor("#000000");
  744. keyword3.setValue(json.getString("keyword3"));
  745. m.put("keyword3", keyword3);
  746. }
  747. //@TODO 以后需要了释放出来 要做易联众对接支付消息
  748. /*else if (type == 21) {
  749. if (json.has("url")) {
  750. temp.setUrl(url + json.getString("url"));
  751. }
  752. temp.setTemplate_id(template_physical_examination);
  753. WechatTemplateData keyword1 = new WechatTemplateData();
  754. keyword1.setColor("#000000");
  755. keyword1.setValue(json.getString("keyword1"));
  756. m.put("keyword1", keyword1);
  757. WechatTemplateData keyword2 = new WechatTemplateData();
  758. keyword2.setColor("#000000");
  759. keyword2.setValue(json.getString("keyword2"));
  760. m.put("keyword2", keyword2);
  761. WechatTemplateData keyword3 = new WechatTemplateData();
  762. keyword3.setColor("#000000");
  763. keyword3.setValue(json.getString("keyword3"));
  764. m.put("keyword3", keyword3);
  765. WechatTemplateData keyword4 = new WechatTemplateData();
  766. keyword4.setColor("#000000");
  767. keyword4.setValue(json.getString("keyword4"));
  768. m.put("keyword4", keyword4);
  769. WechatTemplateData keyword5 = new WechatTemplateData();
  770. keyword5.setColor("#000000");
  771. keyword5.setValue(json.getString("keyword5"));
  772. m.put("keyword5", keyword5);
  773. }*/else if (type == 22) {//设备绑定
  774. if (json.has("url")) {
  775. temp.setUrl(url + json.getString("url"));
  776. }
  777. temp.setTemplate_id(template_patient_bind_device);
  778. WechatTemplateData keyword1 = new WechatTemplateData();
  779. keyword1.setColor("#000000");
  780. keyword1.setValue(json.getString("keyword1"));
  781. m.put("keyword1", keyword1);
  782. WechatTemplateData keyword2 = new WechatTemplateData();
  783. keyword2.setColor("#000000");
  784. keyword2.setValue(json.getString("keyword2"));
  785. m.put("keyword2", keyword2);
  786. WechatTemplateData keyword3 = new WechatTemplateData();
  787. keyword3.setColor("#000000");
  788. keyword3.setValue(json.getString("keyword3"));
  789. m.put("keyword3", keyword3);
  790. }else if (type == 23) {//健康银行积分提醒
  791. if (json.has("url")) {
  792. temp.setUrl(url + json.getString("url"));
  793. }
  794. temp.setTemplate_id(template_healthbank_credit);
  795. WechatTemplateData keyword1 = new WechatTemplateData();
  796. keyword1.setColor("#000000");
  797. keyword1.setValue(json.getString("keyword1"));
  798. m.put("keyword1", keyword1);
  799. WechatTemplateData keyword2 = new WechatTemplateData();
  800. keyword2.setColor("#000000");
  801. keyword2.setValue(json.getString("keyword2"));
  802. m.put("keyword2", keyword2);
  803. WechatTemplateData keyword3 = new WechatTemplateData();
  804. keyword3.setColor("#000000");
  805. keyword3.setValue(json.getString("keyword3"));
  806. m.put("keyword3", keyword3);
  807. }else if (type == 24) {//结果处理通知
  808. temp.setTemplate_id(template_deal_with);
  809. WechatTemplateData keyword1 = new WechatTemplateData();
  810. keyword1.setColor("#000000");
  811. keyword1.setValue(json.getString("keyword1"));
  812. m.put("keyword1", keyword1);
  813. WechatTemplateData keyword2 = new WechatTemplateData();
  814. keyword2.setColor("#000000");
  815. keyword2.setValue(json.getString("keyword2"));
  816. m.put("keyword2", keyword2);
  817. }else if (type==25){
  818. 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"));
  819. temp.setTemplate_id(template_doctor_service);
  820. WechatTemplateData keyword1 = new WechatTemplateData();
  821. keyword1.setColor("#000000");
  822. keyword1.setValue(json.getString("keyword1"));
  823. m.put("keyword1", keyword1);
  824. WechatTemplateData keyword2 = new WechatTemplateData();
  825. keyword2.setColor("#000000");
  826. keyword2.setValue(json.getString("keyword2"));
  827. m.put("keyword2", keyword2);
  828. WechatTemplateData keyword3 = new WechatTemplateData();
  829. keyword3.setColor("#000000");
  830. keyword3.setValue(json.getString("keyword3"));
  831. m.put("keyword3", keyword3);
  832. }
  833. temp.setData(m);
  834. ObjectMapper mapper = new ObjectMapper();
  835. String strJson = mapper.writeValueAsString(temp);
  836. //System.out.println("send message================>" + strJson);
  837. logger.error("send message================>" + strJson);
  838. return strJson;
  839. } catch (Exception e) {
  840. e.printStackTrace();
  841. return "";
  842. }
  843. }
  844. /**
  845. * 添加含发送代理人微信消息
  846. *
  847. * @param code 居民code
  848. * @param type 模板类型
  849. * @param json 模板消息体加上跳转URL
  850. * @return
  851. */
  852. public Boolean putAgentWxMsg(String code, int type, JSONObject json) {
  853. Boolean flag = false;
  854. try {
  855. String url = json.has("url") ? json.getString("url") : null;
  856. String first = json.has("first") ? json.getString("first") : "";
  857. Patient patient = patientDao.findByCode(code);
  858. String name = patient.getName();
  859. String openId = patient.getOpenid();
  860. if (StringUtils.isNotEmpty(openId) && !("undefined".equals(openId))) {
  861. putWxMsg(accessTokenUtils.getAccessToken(), type, openId, name, json);
  862. flag = true;
  863. } else {
  864. //发送代理人
  865. org.json.JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(code, openId);
  866. if (jsonArray != null && jsonArray.length() > 0) {
  867. for (int i = 0; i < jsonArray.length(); i++) {
  868. org.json.JSONObject j = jsonArray.getJSONObject(i);
  869. Patient member = (Patient) j.get("member");
  870. org.json.JSONObject data = json;
  871. data.remove("first");
  872. data.remove("url");
  873. data.put("url", url + "&represented=" + member.getCode());
  874. data.put("first", weiXinOpenIdUtils.getTitleMes(patient, j.getInt("relation"), name) + first);
  875. if (StringUtils.isNotEmpty(member.getOpenid()) && !("undefined".equals(member.getOpenid()))) {
  876. putWxMsg(accessTokenUtils.getAccessToken(), type, member.getOpenid(), name, data);
  877. flag = true;
  878. }
  879. }
  880. }
  881. }
  882. } catch (Exception e) {
  883. e.printStackTrace();
  884. }
  885. return flag;
  886. }
  887. /**
  888. * 添加含发送代理人微信消息
  889. *
  890. * @param code 发送对象code
  891. * @param type 模板类型
  892. * @param scene 模板场景值
  893. * @param wechatTemplate 微信消息模板推送内容
  894. * @return
  895. */
  896. public Boolean putAgentWxMsg(String code, int type,String scene, WechatTemplate wechatTemplate) {
  897. Boolean flag = false;
  898. try {
  899. Patient patient = patientDao.findByCode(code);
  900. String name = patient.getName();
  901. String openId = patient.getOpenid();
  902. ObjectMapper mapper = new ObjectMapper();
  903. String data = mapper.writeValueAsString(wechatTemplate);
  904. JSONObject wechatContent = new JSONObject(data);
  905. if (StringUtils.isNotEmpty(openId) && !("undefined".equals(openId))) {
  906. putWxMsg(accessTokenUtils.getAccessToken(), type, scene, openId, name, wechatContent);
  907. flag = true;
  908. } else {
  909. //发送代理人
  910. org.json.JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(code, openId);
  911. if (jsonArray != null && jsonArray.length() > 0) {
  912. for (int i = 0; i < jsonArray.length(); i++) {
  913. org.json.JSONObject j = jsonArray.getJSONObject(i);
  914. Patient member = (Patient) j.get("member");
  915. Map<String, WechatTemplateData> contentData = wechatTemplate.getData();
  916. WechatTemplateData firstData = contentData.get("first");
  917. String url = wechatTemplate.getUrl();
  918. String first = firstData.getValue();
  919. WechatTemplateData firstKeyword = new WechatTemplateData();
  920. firstKeyword.setColor("#000000");
  921. firstKeyword.setValue(weiXinOpenIdUtils.getTitleMes(patient, j.getInt("relation"), name) + first);
  922. contentData.put("first", firstKeyword);
  923. //替换掉原toUser、toName的值
  924. int start = url.indexOf("&toUser=");
  925. int end = url.indexOf("&", start + 1);
  926. String touser = url.substring(start, end);
  927. url = url.replace(touser, "&toUser=" + member.getCode());
  928. wechatTemplate.setTouser(member.getOpenid());
  929. wechatTemplate.setUrl(url);
  930. wechatTemplate.setData(contentData);
  931. String data1 = mapper.writeValueAsString(wechatTemplate);
  932. JSONObject wechatContent1 = new JSONObject(data1);
  933. if (StringUtils.isNotEmpty(member.getOpenid()) && !("undefined".equals(member.getOpenid()))) {
  934. putWxMsg(accessTokenUtils.getAccessToken(), type, scene, openId, name, wechatContent1);
  935. flag = true;
  936. }
  937. }
  938. }
  939. }
  940. } catch (Exception e) {
  941. e.printStackTrace();
  942. }
  943. return flag;
  944. }
  945. /**
  946. * 根据type 匹配对应模板ID
  947. *
  948. * @param type 见WechatPushLog说明
  949. * @return
  950. */
  951. private String getTemplateId(int type) throws Exception {
  952. String templateId = null;
  953. switch (type) {
  954. case 1:
  955. templateId = template_sign_success;
  956. break;
  957. case 2:
  958. templateId = template_sign_failed;
  959. break;
  960. case 3:
  961. templateId = template_consult_notice;
  962. break;
  963. case 4:
  964. templateId = template_health_notice;
  965. break;
  966. case 5:
  967. templateId = template_termination;
  968. break;
  969. case 6:
  970. templateId = template_appoint_success;
  971. break;
  972. case 7:
  973. templateId = template_appoint_failed;
  974. break;
  975. case 8:
  976. templateId = template_expenses_remind;
  977. break;
  978. case 9:
  979. templateId = template_healthy_article;
  980. break;
  981. case 10:
  982. templateId = template_doctor_change;
  983. break;
  984. case 11:
  985. templateId = template_doctor_survey;
  986. break;
  987. case 12:
  988. templateId = template_doctor_audit;
  989. break;
  990. case 13:
  991. templateId = template_doctor_service;
  992. break;
  993. case 14:
  994. templateId = template_physical_examination;
  995. break;
  996. case 15:
  997. templateId = doctor_invitel_template;
  998. break;
  999. case 16:
  1000. templateId = template_deal_with;
  1001. break;
  1002. }
  1003. return templateId;
  1004. }
  1005. /**
  1006. * 构建微信模板数据 默认字体黑色
  1007. *
  1008. * @param type 模板类型见日志实体类
  1009. * @param openid 发送对象openid
  1010. * @param first 消息头
  1011. * @param remark 备注
  1012. * @param url 带参全路径跳转链接
  1013. * @param keywords 消息体
  1014. * @return
  1015. */
  1016. public WechatTemplate packageTemplate(int type,String openid, String first, String remark, String url, List<String> keywords) throws Exception{
  1017. WechatTemplate temp = new WechatTemplate();
  1018. try {
  1019. String templateId = getTemplateId(type);
  1020. Map<String, WechatTemplateData> m = new HashMap<String, WechatTemplateData>();
  1021. WechatTemplateData firstKeyword = new WechatTemplateData();
  1022. firstKeyword.setColor("#000000");
  1023. firstKeyword.setValue(first);
  1024. m.put("first", firstKeyword);
  1025. WechatTemplateData remarkKeyword = new WechatTemplateData();
  1026. remarkKeyword.setColor("#000000");
  1027. remarkKeyword.setValue(remark);
  1028. m.put("remark", remarkKeyword);
  1029. for (int i=0;i<keywords.size();i++){
  1030. WechatTemplateData tempKeyword = new WechatTemplateData();
  1031. tempKeyword.setColor("#000000");
  1032. tempKeyword.setValue(keywords.get(i));
  1033. m.put("keyword"+(i+1), tempKeyword);
  1034. }
  1035. temp.setTouser(openid);
  1036. temp.setTemplate_id(templateId);
  1037. temp.setTopcolor("#000000");
  1038. temp.setUrl(url);
  1039. temp.setData(m);
  1040. /* ObjectMapper mapper = new ObjectMapper();
  1041. String data = mapper.writeValueAsString(temp);
  1042. result = new JSONObject(data);*/
  1043. } catch (JSONException e) {
  1044. e.printStackTrace();
  1045. }
  1046. return temp;
  1047. }
  1048. }