TestSendConfigUtil.java 52 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063
  1. package jnpf.base.util;
  2. import cn.hutool.core.util.ObjectUtil;
  3. import com.alibaba.fastjson.JSONObject;
  4. import jnpf.base.SmsModel;
  5. import jnpf.base.UserInfo;
  6. import jnpf.base.service.MessageTemplateService;
  7. import jnpf.base.service.SmsTemplateService;
  8. import jnpf.base.service.SysconfigService;
  9. import jnpf.constant.MsgCode;
  10. import jnpf.message.entity.*;
  11. import jnpf.message.enums.MessageTypeEnum;
  12. import jnpf.message.model.WxgzhMessageModel;
  13. import jnpf.message.model.message.EmailModel;
  14. import jnpf.message.model.messagetemplateconfig.TemplateParamModel;
  15. import jnpf.message.model.sendmessageconfig.SendConfigTemplateModel;
  16. import jnpf.message.service.*;
  17. import jnpf.message.util.EmailUtil;
  18. import jnpf.message.util.JnpfMessageUtil;
  19. import jnpf.message.util.QyWebChatUtil;
  20. import jnpf.message.util.WebHookUtil;
  21. import jnpf.util.wxutil.mp.WXGZHWebChatUtil;
  22. import jnpf.model.SocialsSysConfig;
  23. import jnpf.permission.entity.UserEntity;
  24. import jnpf.permission.service.UserService;
  25. import jnpf.util.*;
  26. import jnpf.util.message.SmsUtil;
  27. import jnpf.util.third.DingTalkUtil;
  28. import lombok.extern.slf4j.Slf4j;
  29. import org.apache.commons.text.StringSubstitutor;
  30. import org.springframework.beans.factory.annotation.Autowired;
  31. import org.springframework.stereotype.Component;
  32. import java.util.*;
  33. import java.util.regex.Pattern;
  34. @Component
  35. @Slf4j
  36. public class TestSendConfigUtil {
  37. @Autowired
  38. private UserService userService;
  39. @Autowired
  40. private SysconfigService sysconfigService;
  41. @Autowired
  42. private MessageService messageService;
  43. @Autowired
  44. private MessagereceiveService messagereceiveService;
  45. @Autowired
  46. private SynThirdInfoService synThirdInfoService;
  47. @Autowired
  48. private MessageTemplateService messageTemplateService;
  49. @Autowired
  50. private SmsTemplateService smsTemplateService;
  51. @Autowired
  52. private MessageTemplateConfigService messageTemplateConfigService;
  53. @Autowired
  54. private TemplateParamService templateParamService;
  55. @Autowired
  56. private SmsFieldService smsFieldService;
  57. @Autowired
  58. private AccountConfigService accountConfigService;
  59. @Autowired
  60. private MessageMonitorService messageMonitorService;
  61. @Autowired
  62. private WechatUserService wechatUserService;
  63. /**
  64. * 测试发送配置
  65. */
  66. public String sendMessage(SendConfigTemplateModel model, UserInfo userInfo) {
  67. List<String> toUserIdsList = model.getToUser();
  68. // 模板id
  69. String templateId = model.getTemplateId();
  70. // 参数
  71. Map<String, Object> parameterMap = new HashMap<>();
  72. List<TemplateParamModel> paramModelList = JsonUtil.getJsonToList(model.getParamJson(), TemplateParamModel.class);
  73. if (paramModelList != null && paramModelList.size() > 0) {
  74. for (TemplateParamModel paramModel : paramModelList) {
  75. parameterMap.put(paramModel.getField(), paramModel.getValue());
  76. }
  77. }
  78. boolean flag = true;
  79. if (!"webhook".equals(model.getMessageType())) {
  80. if (!(toUserIdsList != null && toUserIdsList.size() > 0)) {
  81. log.error("接收人员为空");
  82. flag = false;
  83. }
  84. }
  85. if (StringUtil.isEmpty(templateId)) {
  86. log.error("模板Id为空");
  87. flag = false;
  88. }
  89. if (flag) {
  90. // 获取消息模板详情
  91. MessageTemplateConfigEntity entity = messageTemplateConfigService.getInfo(templateId);
  92. // 替换参数
  93. String content = entity.getContent();
  94. // 替换参数
  95. if (StringUtil.isNotEmpty(content)) {
  96. StringSubstitutor strSubstitutor = new StringSubstitutor(parameterMap, "{", "}");
  97. content = strSubstitutor.replace(content);
  98. }
  99. if (entity != null) {
  100. MessageTypeEnum typeEnum = MessageTypeEnum.getByCode(entity.getMessageType());
  101. String sendType = entity.getMessageType();
  102. switch (typeEnum) {
  103. case SysMessage:
  104. // 站内消息
  105. String title = entity.getTitle();
  106. if (StringUtil.isNotEmpty(title)) {
  107. StringSubstitutor strSubstitutor = new StringSubstitutor(parameterMap, "{", "}");
  108. title = strSubstitutor.replace(title);
  109. }
  110. MessageTemplateConfigEntity msgTemEntity = messageTemplateConfigService.getInfo(model.getTemplateId());
  111. Integer source = Integer.parseInt(msgTemEntity.getMessageSource());
  112. Integer type = Integer.parseInt(msgTemEntity.getMessageType());
  113. messageService.sentMessage(toUserIdsList, title, content, userInfo, source, type, true);
  114. if ("1".equals(msgTemEntity.getMessageSource())) {
  115. content = null;
  116. }
  117. // MessageMonitorEntity monitorEntity = createSysMessageMonitor(msgTemEntity, content, userInfo, toUser, title);
  118. // messageMonitorService.create(monitorEntity);
  119. break;
  120. case SmsMessage:
  121. // 发送短信
  122. JSONObject jsonObject1 = sendSms(toUserIdsList, model, parameterMap);
  123. if (!(Boolean) jsonObject1.get("code")) {
  124. return "发送短信消息失败,错误:" + jsonObject1.get("error");
  125. }
  126. break;
  127. case MailMessage:
  128. // 邮件
  129. JSONObject jsonObject2 = SendMail(toUserIdsList, userInfo, sendType, model, parameterMap);
  130. if (!(Boolean) jsonObject2.get("code")) {
  131. return "发送邮件消息失败,错误:" + jsonObject2.get("error");
  132. }
  133. break;
  134. case QyMessage:
  135. // 企业微信
  136. JSONObject jsonObject3 = SendQyWebChat(toUserIdsList, userInfo, sendType, model, parameterMap);
  137. if (!(Boolean) jsonObject3.get("code")) {
  138. return "发送企业微信消息失败,错误:" + jsonObject3.get("error");
  139. }
  140. break;
  141. case DingMessage:
  142. // 钉钉
  143. JSONObject jsonObject4 = SendDingTalk(toUserIdsList, userInfo, sendType, model, parameterMap);
  144. if (!(Boolean) jsonObject4.get("code")) {
  145. return "发送钉钉消息失败,错误:" + jsonObject4.get("error");
  146. }
  147. break;
  148. case WebHookMessage:
  149. // webhook
  150. JSONObject jsonObject5 = SendWebHook(sendType, userInfo, model, parameterMap);
  151. if (!(Boolean) jsonObject5.get("code")) {
  152. return "发送webhook消息失败,错误:" + jsonObject5.get("error");
  153. }
  154. break;
  155. case WechatMessage:
  156. // 微信公众号
  157. JSONObject jsonObject6 = SendWXGzhChat(toUserIdsList, userInfo, sendType, model, parameterMap);
  158. if (!(Boolean) jsonObject6.get("code")) {
  159. return "发送微信公众号消息失败,错误:" + jsonObject6.get("error");
  160. }
  161. break;
  162. default:
  163. break;
  164. }
  165. }
  166. }
  167. return null;
  168. }
  169. private JSONObject SendWebHook(String sendType, UserInfo userInfo, SendConfigTemplateModel model, Map<String, Object> parameterMap) {
  170. MessageTemplateConfigEntity entity = messageTemplateConfigService.getInfo(model.getTemplateId());
  171. String content = entity.getContent();
  172. JSONObject retJson = new JSONObject();
  173. MessageMonitorEntity monitorEntity = new MessageMonitorEntity();
  174. monitorEntity.setId(RandomUtil.uuId());
  175. monitorEntity.setSendTime(DateUtil.getNowDate());
  176. monitorEntity.setCreatorTime(DateUtil.getNowDate());
  177. monitorEntity.setCreatorUserId(userInfo.getUserId());
  178. // 替换参数
  179. if (StringUtil.isNotEmpty(content)) {
  180. StringSubstitutor strSubstitutor = new StringSubstitutor(parameterMap, "{", "}");
  181. content = strSubstitutor.replace(content);
  182. }
  183. AccountConfigEntity entity1 = accountConfigService.getInfo(model.getAccountConfigId());
  184. if (entity != null) {
  185. //消息监控-消息模板写入
  186. monitorEntity.setMessageType(entity.getMessageType());
  187. monitorEntity.setMessageTemplateId(entity.getId());
  188. String title = entity.getTitle();
  189. if (StringUtil.isNotEmpty(title)) {
  190. StringSubstitutor strSubstitutor = new StringSubstitutor(parameterMap, "{", "}");
  191. title = strSubstitutor.replace(title);
  192. }
  193. monitorEntity.setTitle(title);
  194. monitorEntity.setReceiveUser(entity1.getWebhookAddress());
  195. monitorEntity.setContent(content);
  196. monitorEntity.setMessageSource(entity.getMessageSource());
  197. if (entity1 != null) {
  198. //消息监控-账号配置写入
  199. monitorEntity.setAccountId(entity1.getId());
  200. monitorEntity.setAccountCode(entity1.getEnCode());
  201. monitorEntity.setAccountName(entity1.getFullName());
  202. switch (entity1.getWebhookType()) {
  203. case 1:
  204. //钉钉
  205. if (Objects.equals(1, entity1.getApproveType())) {
  206. JSONObject result = WebHookUtil.sendDDMessage(entity1.getWebhookAddress(), content);
  207. messageMonitorService.create(monitorEntity);
  208. if (ObjectUtil.isNotEmpty(result)) {
  209. if (!"0".equals(result.get("errcode").toString())) {
  210. retJson.put("code", false);
  211. retJson.put("error", result.get("errmsg"));
  212. return retJson;
  213. }
  214. } else {
  215. retJson.put("code", false);
  216. retJson.put("error", "webhook账号地址配置错误!");
  217. return retJson;
  218. }
  219. } else if (Objects.equals(2, entity1.getApproveType())) {
  220. JSONObject result = WebHookUtil.sendDingDing(entity1.getWebhookAddress(), entity1.getBearer(), content);
  221. messageMonitorService.create(monitorEntity);
  222. if (ObjectUtil.isNotEmpty(result)) {
  223. if (!"0".equals(result.get("errcode").toString())) {
  224. retJson.put("code", false);
  225. retJson.put("error", result.get("errmsg"));
  226. return retJson;
  227. }
  228. } else {
  229. retJson.put("code", false);
  230. retJson.put("error", "webhook账号地址配置错误!");
  231. return retJson;
  232. }
  233. }
  234. break;
  235. case 2:
  236. if (Objects.equals(1, entity1.getApproveType())) {
  237. JSONObject result = WebHookUtil.callWeChatBot(entity1.getWebhookAddress(), content);
  238. messageMonitorService.create(monitorEntity);
  239. if (!"0".equals(result.get("errcode").toString())) {
  240. retJson.put("code", false);
  241. retJson.put("error", result.get("errmsg"));
  242. return retJson;
  243. }
  244. }
  245. break;
  246. default:
  247. break;
  248. }
  249. } else {
  250. retJson.put("code", false);
  251. retJson.put("error", "账号配置数据不存在!");
  252. messageMonitorService.create(monitorEntity);
  253. return retJson;
  254. }
  255. } else {
  256. retJson.put("code", false);
  257. retJson.put("error", "消息模板数据不存在!");
  258. messageMonitorService.create(monitorEntity);
  259. return retJson;
  260. }
  261. retJson.put("code", true);
  262. retJson.put("error", MsgCode.SU012.get());
  263. return retJson;
  264. }
  265. /**
  266. * 发送企业微信消息
  267. *
  268. * @param toUserIdsList
  269. * @param userInfo
  270. * @param sendType
  271. * @param parameterMap
  272. * @return
  273. */
  274. private JSONObject SendQyWebChat(List<String> toUserIdsList, UserInfo userInfo, String sendType, SendConfigTemplateModel model, Map<String, Object> parameterMap) {
  275. JSONObject retJson = new JSONObject();
  276. boolean code = true;
  277. StringBuilder error = new StringBuilder();
  278. MessageTemplateConfigEntity entity = messageTemplateConfigService.getInfo(model.getTemplateId());
  279. //创建消息监控
  280. MessageMonitorEntity monitorEntity = new MessageMonitorEntity();
  281. monitorEntity.setId(RandomUtil.uuId());
  282. monitorEntity.setSendTime(DateUtil.getNowDate());
  283. monitorEntity.setReceiveUser(JsonUtil.getObjectToString(toUserIdsList));
  284. monitorEntity.setCreatorTime(DateUtil.getNowDate());
  285. monitorEntity.setCreatorUserId(userInfo.getUserId());
  286. //消息监控-消息模板写入
  287. monitorEntity.setMessageType(entity.getMessageType());
  288. monitorEntity.setMessageSource(entity.getMessageSource());
  289. monitorEntity.setMessageTemplateId(entity.getId());
  290. String content = entity.getContent();
  291. // 替换参数
  292. if (StringUtil.isNotEmpty(content)) {
  293. StringSubstitutor strSubstitutor = new StringSubstitutor(parameterMap, "{", "}");
  294. content = strSubstitutor.replace(content);
  295. }
  296. String title = entity.getTitle();
  297. if (StringUtil.isNotEmpty(title)) {
  298. StringSubstitutor strSubstitutor = new StringSubstitutor(parameterMap, "{", "}");
  299. title = strSubstitutor.replace(title);
  300. }
  301. monitorEntity.setTitle(title);
  302. monitorEntity.setContent(content);
  303. for (String userId : toUserIdsList) {
  304. UserEntity userEntity = userService.getInfo(userId);
  305. if (entity != null) {
  306. // 获取系统配置
  307. SocialsSysConfig config = sysconfigService.getSocialsConfig();
  308. String corpId = config.getQyhCorpId();
  309. String agentId = config.getQyhAgentId();
  310. // 获取的应用的Secret值(某个修复导致俩个秘钥反了,只能反正修复了)
  311. String corpSecret = config.getQyhCorpSecret();
  312. String wxUserId = "";
  313. StringBuilder toWxUserId = new StringBuilder();
  314. String toUserIdAll = "";
  315. StringBuilder nullUserInfo = new StringBuilder();
  316. List<MessageReceiveEntity> messageReceiveList = new ArrayList<>();
  317. // 相关参数验证
  318. if (StringUtil.isEmpty(corpId)) {
  319. log.error("企业ID为空");
  320. code = false;
  321. error = error.append(";").append(userEntity.getRealName() + ":企业ID为空!");
  322. continue;
  323. }
  324. if (StringUtil.isEmpty(corpSecret)) {
  325. code = false;
  326. error = error.append(";").append(userEntity.getRealName() + ":凭证密钥为空!");
  327. continue;
  328. }
  329. if (StringUtil.isEmpty(agentId)) {
  330. code = false;
  331. error = error.append(";").append(userEntity.getRealName() + ":企业微信应用凭证为空!");
  332. continue;
  333. }
  334. if (StringUtil.isEmpty(content)) {
  335. code = false;
  336. error = error.append(";").append(userEntity.getRealName() + ":内容为空!");
  337. continue;
  338. }
  339. if (StringUtil.isEmpty(userId)) {
  340. code = false;
  341. error = error.append(";").append("接收人为空!");
  342. continue;
  343. }
  344. // 创建消息实体
  345. MessageEntity messageEntity = JnpfMessageUtil.setMessageEntity(userInfo.getUserId(), content, null, Integer.parseInt(sendType));
  346. // 获取接收人员的企业微信号、创建消息用户实体
  347. wxUserId = "";
  348. // 从同步表获取对应的企业微信ID
  349. SynThirdInfoEntity synThirdInfoEntity = synThirdInfoService.getInfoBySysObjId("1", "2", userId);
  350. if (synThirdInfoEntity == null) {
  351. synThirdInfoEntity = synThirdInfoService.getInfoBySysObjId("11", "2", userId);
  352. }
  353. if (synThirdInfoEntity != null) {
  354. wxUserId = synThirdInfoEntity.getThirdObjId();
  355. }
  356. if (StringUtil.isEmpty(wxUserId)) {
  357. nullUserInfo = nullUserInfo.append(",").append(userId);
  358. } else {
  359. toWxUserId = toWxUserId.append("|").append(wxUserId);
  360. }
  361. messageReceiveList.add(JnpfMessageUtil.setMessageReceiveEntity(userId, title, Integer.valueOf(sendType)));
  362. // 处理企业微信号信息串并验证
  363. toUserIdAll = toWxUserId.toString();
  364. if (StringUtil.isNotEmpty(toUserIdAll)) {
  365. toUserIdAll = toUserIdAll.substring(1);
  366. }
  367. if (StringUtil.isEmpty(toUserIdAll)) {
  368. code = false;
  369. error = error.append(";").append(userEntity.getRealName() + ":接收人对应的企业微信号全部为空!");
  370. continue;
  371. }
  372. // 批量发送企业信息信息
  373. retJson = QyWebChatUtil.sendWxMessage(corpId, corpSecret, agentId, toUserIdAll, content);
  374. if (!retJson.getBoolean("code")) {
  375. code = false;
  376. error = error.append(";").append(userEntity.getRealName() + ":" + retJson.get("error"));
  377. continue;
  378. }
  379. // 企业微信号为空的信息写入备注
  380. if (StringUtil.isNotEmpty(nullUserInfo.toString())) {
  381. messageEntity.setExcerpt(nullUserInfo.substring(1) + "对应的企业微信号为空");
  382. }
  383. continue;
  384. } else {
  385. code = false;
  386. error = error.append(";").append(userEntity.getRealName() + ":消息模板数据不存在!");
  387. continue;
  388. }
  389. }
  390. messageMonitorService.create(monitorEntity);
  391. if (code) {
  392. retJson.put("code", true);
  393. retJson.put("error", MsgCode.SU012.get());
  394. } else {
  395. String msg = error.toString();
  396. msg = msg.substring(1);
  397. retJson.put("code", false);
  398. retJson.put("error", msg);
  399. }
  400. return retJson;
  401. }
  402. /**
  403. * List<String> toUserIdsList, UserInfo userInfo, String sendType, MessageTemplateEntity entity, Map<String, String> parameterMap
  404. *
  405. * @param toUserIdsList
  406. * @param userInfo
  407. * @param sendType
  408. * @param parameterMap
  409. * @return
  410. */
  411. private JSONObject SendDingTalk(List<String> toUserIdsList, UserInfo userInfo, String sendType, SendConfigTemplateModel model, Map<String, Object> parameterMap) {
  412. JSONObject retJson = new JSONObject();
  413. boolean code = true;
  414. StringBuilder error = new StringBuilder();
  415. //创建消息监控
  416. MessageTemplateConfigEntity entity = messageTemplateConfigService.getInfo(model.getTemplateId());
  417. MessageMonitorEntity monitorEntity = new MessageMonitorEntity();
  418. monitorEntity.setId(RandomUtil.uuId());
  419. monitorEntity.setSendTime(DateUtil.getNowDate());
  420. monitorEntity.setReceiveUser(JsonUtil.getObjectToString(toUserIdsList));
  421. monitorEntity.setCreatorTime(DateUtil.getNowDate());
  422. monitorEntity.setCreatorUserId(userInfo.getUserId());
  423. //消息监控-消息模板写入
  424. monitorEntity.setMessageType(entity.getMessageType());
  425. monitorEntity.setMessageSource(entity.getMessageSource());
  426. monitorEntity.setMessageTemplateId(entity.getId());
  427. String content = entity.getContent();
  428. // 替换参数
  429. if (StringUtil.isNotEmpty(content)) {
  430. StringSubstitutor strSubstitutor = new StringSubstitutor(parameterMap, "{", "}");
  431. content = strSubstitutor.replace(content);
  432. }
  433. String title = entity.getTitle();
  434. if (StringUtil.isNotEmpty(title)) {
  435. StringSubstitutor strSubstitutor = new StringSubstitutor(parameterMap, "{", "}");
  436. title = strSubstitutor.replace(title);
  437. }
  438. monitorEntity.setTitle(title);
  439. monitorEntity.setContent(content);
  440. for (String userId : toUserIdsList) {
  441. UserEntity userEntity = userService.getInfo(userId);
  442. if (entity != null) {
  443. // 获取系统配置
  444. SocialsSysConfig config = sysconfigService.getSocialsConfig();
  445. String appKey = config.getDingSynAppKey();
  446. String appSecret = config.getDingSynAppSecret();
  447. String agentId = config.getDingAgentId();
  448. String dingUserId = "";
  449. StringBuilder toDingUserId = new StringBuilder();
  450. String toUserIdAll = "";
  451. StringBuilder nullUserInfo = new StringBuilder();
  452. List<MessageReceiveEntity> messageReceiveList = new ArrayList<>();
  453. // 相关参数验证
  454. if (StringUtil.isEmpty(appKey)) {
  455. code = false;
  456. error = error.append(";").append(userEntity.getRealName() + ":AppKey为空!");
  457. continue;
  458. }
  459. if (StringUtil.isEmpty(appSecret)) {
  460. code = false;
  461. error = error.append(";").append(userEntity.getRealName() + ":AppSecret为空!");
  462. continue;
  463. }
  464. if (StringUtil.isEmpty(agentId)) {
  465. code = false;
  466. error = error.append(";").append(userEntity.getRealName() + ":AgentId为空!");
  467. continue;
  468. }
  469. if (StringUtil.isEmpty(content)) {
  470. code = false;
  471. error = error.append(";").append(userEntity.getRealName() + ":内容为空!");
  472. continue;
  473. }
  474. if (StringUtil.isEmpty(userId)) {
  475. code = false;
  476. error = error.append(";").append(userEntity.getRealName() + ":接收人为空!");
  477. continue;
  478. }
  479. // 创建消息实体
  480. MessageEntity messageEntity = JnpfMessageUtil.setMessageEntity(userInfo.getUserId(), content, null, Integer.parseInt(sendType));
  481. // 获取接收人员的钉钉号、创建消息用户实体
  482. dingUserId = "";
  483. // 从同步表获取对应用户的钉钉ID
  484. SynThirdInfoEntity synThirdInfoEntity = synThirdInfoService.getInfoBySysObjId("2", "2", userId);
  485. if (synThirdInfoEntity == null) {
  486. synThirdInfoEntity = synThirdInfoService.getInfoBySysObjId("22", "2", userId);
  487. }
  488. if (synThirdInfoEntity != null) {
  489. dingUserId = synThirdInfoEntity.getThirdObjId();
  490. }
  491. if (StringUtil.isEmpty(dingUserId)) {
  492. nullUserInfo = nullUserInfo.append(",").append(userId);
  493. } else {
  494. toDingUserId = toDingUserId.append(",").append(dingUserId);
  495. }
  496. messageReceiveList.add(JnpfMessageUtil.setMessageReceiveEntity(userId, title, Integer.valueOf(sendType)));
  497. // 处理接收人员的钉钉号信息串并验证
  498. toUserIdAll = toDingUserId.toString();
  499. if (StringUtil.isNotEmpty(toUserIdAll)) {
  500. toUserIdAll = toUserIdAll.substring(1);
  501. }
  502. if (StringUtil.isEmpty(toUserIdAll)) {
  503. code = false;
  504. error = error.append(";").append(userEntity.getRealName() + ":接收人对应的钉钉号为空!");
  505. continue;
  506. }
  507. // 批量发送钉钉信息
  508. retJson = DingTalkUtil.sendDingMessage(appKey, appSecret, agentId, toUserIdAll, content);
  509. if (!retJson.getBoolean("code")) {
  510. code = false;
  511. error = error.append(";").append(userEntity.getRealName() + ":" + retJson.get("error"));
  512. continue;
  513. }
  514. // 钉钉号为空的信息写入备注
  515. if (StringUtil.isNotEmpty(nullUserInfo.toString())) {
  516. messageEntity.setExcerpt(nullUserInfo.toString().substring(1) + "对应的钉钉号为空!");
  517. }
  518. continue;
  519. } else {
  520. code = false;
  521. error = error.append(";").append(userEntity.getRealName() + ":消息模板数据不存在!");
  522. continue;
  523. }
  524. }
  525. messageMonitorService.create(monitorEntity);
  526. if (code) {
  527. retJson.put("code", true);
  528. retJson.put("error", MsgCode.SU012.get());
  529. } else {
  530. String msg = error.toString();
  531. msg = msg.substring(1);
  532. retJson.put("code", false);
  533. retJson.put("error", msg);
  534. }
  535. return retJson;
  536. }
  537. /**
  538. * 发送邮件
  539. *
  540. * @param toUserIdsList
  541. * @param userInfo
  542. * @param sendType
  543. * @param parameterMap
  544. * @return
  545. */
  546. private JSONObject SendMail(List<String> toUserIdsList, UserInfo userInfo, String sendType, SendConfigTemplateModel model, Map<String, Object> parameterMap) {
  547. JSONObject retJson = new JSONObject();
  548. boolean code = true;
  549. StringBuilder error = new StringBuilder();
  550. //创建消息监控
  551. MessageTemplateConfigEntity entity = messageTemplateConfigService.getInfo(model.getTemplateId());
  552. AccountConfigEntity entity1 = accountConfigService.getInfo(model.getAccountConfigId());
  553. MessageMonitorEntity monitorEntity = new MessageMonitorEntity();
  554. monitorEntity.setId(RandomUtil.uuId());
  555. monitorEntity.setSendTime(DateUtil.getNowDate());
  556. monitorEntity.setReceiveUser(JsonUtil.getObjectToString(toUserIdsList));
  557. monitorEntity.setCreatorTime(DateUtil.getNowDate());
  558. monitorEntity.setCreatorUserId(userInfo.getUserId());
  559. //消息监控-消息模板写入
  560. monitorEntity.setMessageType(entity.getMessageType());
  561. monitorEntity.setMessageSource(entity.getMessageSource());
  562. monitorEntity.setMessageTemplateId(entity.getId());
  563. //消息监控-账号配置写入
  564. monitorEntity.setAccountId(entity1.getId());
  565. monitorEntity.setAccountCode(entity1.getEnCode());
  566. monitorEntity.setAccountName(entity1.getFullName());
  567. String content = entity.getContent();
  568. // 替换参数
  569. if (StringUtil.isNotEmpty(content)) {
  570. StringSubstitutor strSubstitutor = new StringSubstitutor(parameterMap, "{", "}");
  571. content = strSubstitutor.replace(content);
  572. }
  573. String title = entity.getTitle();
  574. if (StringUtil.isNotEmpty(title)) {
  575. StringSubstitutor strSubstitutor = new StringSubstitutor(parameterMap, "{", "}");
  576. title = strSubstitutor.replace(title);
  577. }
  578. monitorEntity.setTitle(title);
  579. monitorEntity.setContent(content);
  580. for (String userId : toUserIdsList) {
  581. UserEntity userEntity = userService.getInfo(userId);
  582. if (userEntity != null) {
  583. if (entity != null) {
  584. if (entity1 != null) {
  585. Map<String, String> objModel = new HashMap<>();
  586. objModel.put("emailSmtpHost", entity1.getSmtpServer());
  587. objModel.put("emailSmtpPort", entity1.getSmtpPort().toString());
  588. objModel.put("emailSenderName", entity1.getAddressorName());
  589. objModel.put("emailAccount", entity1.getSmtpUser());
  590. objModel.put("emailPassword", entity1.getSmtpPassword());
  591. objModel.put("emailSsl", entity1.getSslLink().equals(1) ? "true" : "false");
  592. EmailModel emailModel = JsonUtil.getJsonToBean(objModel, EmailModel.class);
  593. StringBuilder nullUserInfo = new StringBuilder();
  594. List<MessageReceiveEntity> messageReceiveList = new ArrayList<>();
  595. StringBuilder toUserMail = new StringBuilder();
  596. String userEmailAll = "";
  597. String userEmail = "";
  598. String userName = "";
  599. // 相关参数验证
  600. if (StringUtil.isEmpty(emailModel.getEmailSmtpHost())) {
  601. code = false;
  602. error = error.append(";").append(userEntity.getRealName() + ":SMTP服务为空!");
  603. continue;
  604. } else if (StringUtil.isEmpty(emailModel.getEmailSmtpPort())) {
  605. code = false;
  606. error = error.append(";").append(userEntity.getRealName() + ":SMTP端口为空!");
  607. continue;
  608. } else if (StringUtil.isEmpty(emailModel.getEmailAccount())) {
  609. code = false;
  610. error = error.append(";").append(userEntity.getRealName() + ":发件人邮箱为空!");
  611. continue;
  612. } else if (StringUtil.isEmpty(emailModel.getEmailPassword())) {
  613. code = false;
  614. error = error.append(";").append(userEntity.getRealName() + ":发件人密码为空!");
  615. continue;
  616. } else if (StringUtil.isEmpty(userId)) {
  617. code = false;
  618. error = error.append(";").append("接收人为空!");
  619. continue;
  620. } else {
  621. // 设置邮件标题
  622. emailModel.setEmailTitle(title);
  623. // 设置邮件内容
  624. emailModel.setEmailContent(content);
  625. // 创建消息实体
  626. MessageEntity messageEntity = JnpfMessageUtil.setMessageEntity(userInfo.getUserId(), emailModel.getEmailTitle(), emailModel.getEmailContent(), Integer.parseInt(sendType));
  627. // 获取收件人的邮箱地址、创建消息用户实体
  628. if (userEntity != null) {
  629. userEmail = StringUtil.isEmpty(userEntity.getEmail()) ? "" : userEntity.getEmail();
  630. userName = userEntity.getRealName();
  631. }
  632. if (userEmail != null && !"".equals(userEmail)) {
  633. if (EmailUtil.isEmail(userEmail)) {
  634. toUserMail = toUserMail.append(",").append(userName).append("<").append(userEmail).append(">");
  635. }
  636. } else {
  637. nullUserInfo = nullUserInfo.append(",").append(userId);
  638. }
  639. messageReceiveList.add(JnpfMessageUtil.setMessageReceiveEntity(userId, title, Integer.valueOf(sendType)));
  640. // 处理接收人员的邮箱信息串并验证
  641. userEmailAll = toUserMail.toString();
  642. if (StringUtil.isNotEmpty(userEmailAll)) {
  643. userEmailAll = userEmailAll.substring(1);
  644. }
  645. if (StringUtil.isEmpty(userEmailAll)) {
  646. code = false;
  647. error = error.append(";").append(userEntity.getRealName() + ":接收人为空!");
  648. continue;
  649. } else {
  650. // 设置接收人员
  651. emailModel.setEmailToUsers(userEmailAll);
  652. // 发送邮件
  653. retJson = EmailUtil.sendMail(emailModel);
  654. if (!retJson.getBoolean("code")) {
  655. code = false;
  656. error = error.append(";").append(userEntity.getRealName() + ":" + retJson.get("error"));
  657. continue;
  658. } else {
  659. // 邮箱地址为空的信息写入备注
  660. if (StringUtil.isNotEmpty(nullUserInfo.toString())) {
  661. messageEntity.setExcerpt(nullUserInfo.substring(1) + "对应的邮箱为空");
  662. }
  663. continue;
  664. // 写入系统的消息表、消息用户表
  665. }
  666. }
  667. }
  668. } else {
  669. code = false;
  670. error = error.append(";").append(userEntity.getRealName() + ":账号配置数据不存在!");
  671. continue;
  672. }
  673. } else {
  674. code = false;
  675. error = error.append(";").append(userEntity.getRealName() + ":消息模板数据不存在!");
  676. continue;
  677. }
  678. }
  679. }
  680. messageMonitorService.create(monitorEntity);
  681. if (code) {
  682. retJson.put("code", true);
  683. retJson.put("error", MsgCode.SU012.get());
  684. } else {
  685. String msg = error.toString();
  686. msg = msg.substring(1);
  687. retJson.put("code", false);
  688. retJson.put("error", msg);
  689. }
  690. return retJson;
  691. }
  692. /**
  693. * 发送短信
  694. *
  695. * @param toUserIdsList
  696. * @param parameterMap
  697. * @return
  698. */
  699. private JSONObject sendSms(List<String> toUserIdsList, SendConfigTemplateModel model, Map<String, Object> parameterMap) {
  700. UserInfo userInfo = UserProvider.getUser();
  701. JSONObject retJson = new JSONObject();
  702. boolean code = true;
  703. StringBuilder error = new StringBuilder();
  704. //创建消息监控
  705. MessageTemplateConfigEntity entity = messageTemplateConfigService.getInfo(model.getTemplateId());
  706. AccountConfigEntity entity1 = accountConfigService.getInfo(model.getAccountConfigId());
  707. MessageMonitorEntity monitorEntity = new MessageMonitorEntity();
  708. monitorEntity.setId(RandomUtil.uuId());
  709. monitorEntity.setSendTime(DateUtil.getNowDate());
  710. monitorEntity.setReceiveUser(JsonUtil.getObjectToString(toUserIdsList));
  711. monitorEntity.setCreatorTime(DateUtil.getNowDate());
  712. monitorEntity.setCreatorUserId(userInfo.getUserId());
  713. //消息监控-消息模板写入
  714. monitorEntity.setMessageType(entity.getMessageType());
  715. monitorEntity.setMessageSource(entity.getMessageSource());
  716. monitorEntity.setMessageTemplateId(entity.getId());
  717. //消息监控-账号配置写入
  718. monitorEntity.setAccountId(entity1.getId());
  719. monitorEntity.setAccountCode(entity1.getEnCode());
  720. monitorEntity.setAccountName(entity1.getFullName());
  721. String content = entity.getContent();
  722. // 替换参数
  723. if (StringUtil.isNotEmpty(content)) {
  724. StringSubstitutor strSubstitutor = new StringSubstitutor(parameterMap, "{", "}");
  725. content = strSubstitutor.replace(content);
  726. }
  727. String title = entity.getTitle();
  728. if (StringUtil.isNotEmpty(title)) {
  729. StringSubstitutor strSubstitutor = new StringSubstitutor(parameterMap, "{", "}");
  730. title = strSubstitutor.replace(title);
  731. }
  732. monitorEntity.setTitle(title);
  733. monitorEntity.setContent(content);
  734. for (String userId : toUserIdsList) {
  735. UserEntity userEntity = userService.getInfo(userId);
  736. if (entity != null) {
  737. if (entity1 != null) {
  738. //账号配置——短信
  739. Map<String, String> objModel = new HashMap<>(16);
  740. objModel.put("aliAccessKey", entity1.getAppId());
  741. objModel.put("aliSecret", entity1.getAppSecret());
  742. objModel.put("tencentSecretId", entity1.getAppId());
  743. objModel.put("tencentSecretKey", entity1.getAppSecret());
  744. objModel.put("tencentAppId", entity1.getSdkAppId());
  745. objModel.put("tencentAppKey", entity1.getAppKey());
  746. SmsModel smsConfig = JsonUtil.getJsonToBean(objModel, SmsModel.class);
  747. int company = entity1.getChannel();
  748. // 组装接受用户
  749. StringBuffer toUserIdList = new StringBuffer();
  750. if (isPhone(userEntity.getMobilePhone())) {
  751. toUserIdList.append(userEntity.getMobilePhone() + ",");
  752. }
  753. //短信参数
  754. Map<String, Object> smsMap = new HashMap<>();
  755. if (entity != null) {
  756. smsMap = smsFieldService.getParamMap(entity.getId(), parameterMap);
  757. } else {
  758. code = false;
  759. error = error.append(";").append(userEntity.getRealName() + ":消息模板数据不存在!");
  760. continue;
  761. }
  762. // 发送短信
  763. String endPoint = "";
  764. if (Objects.equals(1, entity1.getChannel())) {
  765. endPoint = entity1.getEndPoint();
  766. } else if (Objects.equals(2, entity1.getChannel())) {
  767. endPoint = entity1.getZoneName();
  768. }
  769. content = SmsUtil.querySmsTemplateContent(company, smsConfig, endPoint, entity1.getZoneParam(), entity.getTemplateCode());
  770. if (StringUtil.isNotBlank(content) && !"null".equals(content)) {
  771. if (Objects.equals(1, entity1.getChannel())) {
  772. if (content.contains("${")) {
  773. for (String key : smsMap.keySet()) {
  774. if (StringUtil.isNotBlank(String.valueOf(smsMap.get(key))) && smsMap.get(key) != null) {
  775. String v = String.valueOf(smsMap.get(key));
  776. content = content.replace("${" + key + "}", smsMap.get(key).toString());
  777. }
  778. }
  779. }
  780. } else if (Objects.equals(2, entity1.getChannel())) {
  781. if (content.contains("{")) {
  782. for (String key : smsMap.keySet()) {
  783. if (StringUtil.isNotBlank(String.valueOf(smsMap.get(key))) && smsMap.get(key) != null) {
  784. content = content.replace("{" + key + "}", smsMap.get(key).toString());
  785. }
  786. }
  787. }
  788. }
  789. }
  790. monitorEntity.setContent(content);
  791. if (StringUtil.isEmpty(toUserIdList)) {
  792. code = false;
  793. error = error.append(";").append(userEntity.getRealName() + ":手机号码格式错误!");
  794. continue;
  795. }
  796. String result = SmsUtil.sentSms(company, smsConfig, endPoint, entity1.getZoneParam(), toUserIdList.toString(), entity1.getSmsSignature(), entity.getTemplateCode(), smsMap);
  797. if (!"Ok".equalsIgnoreCase(result)) {
  798. code = false;
  799. error = error.append(";").append(userEntity.getRealName() + ":" + result);
  800. continue;
  801. }
  802. continue;
  803. } else {
  804. code = false;
  805. error = error.append(";").append(userEntity.getRealName() + ":账号配置数据不存在!");
  806. continue;
  807. }
  808. } else {
  809. code = false;
  810. error = error.append(";").append(userEntity.getRealName() + ":消息模板数据不存在!");
  811. continue;
  812. }
  813. }
  814. messageMonitorService.create(monitorEntity);
  815. if (code) {
  816. retJson.put("code", true);
  817. retJson.put("error", MsgCode.SU012.get());
  818. } else {
  819. String msg = error.toString();
  820. msg = msg.substring(1);
  821. retJson.put("code", false);
  822. retJson.put("error", msg);
  823. }
  824. return retJson;
  825. }
  826. /**
  827. * 发送微信公众号消息
  828. *
  829. * @param toUserIdsList
  830. * @param userInfo
  831. * @param sendType
  832. * @param parameterMap
  833. * @return
  834. */
  835. public JSONObject SendWXGzhChat(List<String> toUserIdsList, UserInfo userInfo, String sendType, SendConfigTemplateModel model, Map<String, Object> parameterMap) {
  836. JSONObject retJson = new JSONObject();
  837. boolean code = true;
  838. StringBuilder error = new StringBuilder();
  839. //创建消息监控
  840. MessageTemplateConfigEntity entity = messageTemplateConfigService.getInfo(model.getTemplateId());
  841. AccountConfigEntity entity1 = accountConfigService.getInfo(model.getAccountConfigId());
  842. MessageMonitorEntity monitorEntity = new MessageMonitorEntity();
  843. monitorEntity.setId(RandomUtil.uuId());
  844. monitorEntity.setSendTime(DateUtil.getNowDate());
  845. monitorEntity.setReceiveUser(JsonUtil.getObjectToString(toUserIdsList));
  846. monitorEntity.setCreatorTime(DateUtil.getNowDate());
  847. monitorEntity.setCreatorUserId(userInfo.getUserId());
  848. //消息监控-消息模板写入
  849. monitorEntity.setMessageType(entity.getMessageType());
  850. monitorEntity.setMessageSource(entity.getMessageSource());
  851. monitorEntity.setMessageTemplateId(entity.getId());
  852. //消息监控-账号配置写入
  853. monitorEntity.setAccountId(entity1.getId());
  854. monitorEntity.setAccountCode(entity1.getEnCode());
  855. monitorEntity.setAccountName(entity1.getFullName());
  856. String content = entity.getContent();
  857. // 替换参数
  858. if (StringUtil.isNotEmpty(content)) {
  859. StringSubstitutor strSubstitutor = new StringSubstitutor(parameterMap, "{", "}");
  860. content = strSubstitutor.replace(content);
  861. }
  862. String title = entity.getTitle();
  863. if (StringUtil.isNotEmpty(title)) {
  864. StringSubstitutor strSubstitutor = new StringSubstitutor(parameterMap, "{", "}");
  865. title = strSubstitutor.replace(title);
  866. }
  867. monitorEntity.setTitle(title);
  868. monitorEntity.setContent(content);
  869. for (String userId : toUserIdsList) {
  870. if (StringUtil.isEmpty(userId)) {
  871. code = false;
  872. error = error.append(";").append("接收人为空!");
  873. continue;
  874. }
  875. UserEntity userEntity = userService.getById(userId);
  876. AccountConfigEntity accountEntity = accountConfigService.getInfo(model.getAccountConfigId());
  877. // 获取消息模板详情
  878. MessageTemplateConfigEntity msgTemEntity = messageTemplateConfigService.getInfo(model.getTemplateId());
  879. if (msgTemEntity != null) {
  880. String templateKId = msgTemEntity.getTemplateCode();
  881. //微信公众号参数
  882. Map<String, Object> smsMap = new HashMap<>();
  883. if (model != null) {
  884. smsMap = smsFieldService.getParamMap(model.getTemplateId(), parameterMap);
  885. }
  886. if (smsMap.containsKey("title")) {
  887. title = smsMap.get("title").toString();
  888. smsMap.keySet().removeIf(k -> k.equals("title"));
  889. }
  890. monitorEntity.setTitle(title);
  891. if (ObjectUtil.isNotEmpty(accountEntity)) {
  892. // 获取系统配置
  893. String appId = accountEntity.getAppId();
  894. String appsecret = accountEntity.getAppSecret();
  895. String wxxcxAppId = msgTemEntity.getXcxAppId();
  896. String type = msgTemEntity.getWxSkip();
  897. // 相关参数验证
  898. if (StringUtil.isEmpty(templateKId)) {
  899. code = false;
  900. error = error.append(";").append(userEntity.getRealName() + ":微信公众号模板id未创建!");
  901. messageMonitorService.create(monitorEntity);
  902. continue;
  903. }
  904. if (StringUtil.isEmpty(appId)) {
  905. code = false;
  906. error = error.append(";").append(userEntity.getRealName() + ":公众号appid为空为空!");
  907. messageMonitorService.create(monitorEntity);
  908. continue;
  909. }
  910. if (StringUtil.isEmpty(appsecret)) {
  911. code = false;
  912. error = error.append(";").append(userEntity.getRealName() + ":公众号appsecret为空为空!");
  913. messageMonitorService.create(monitorEntity);
  914. continue;
  915. }
  916. // 获取微信公众号的token
  917. String token = WXGZHWebChatUtil.getAccessToken(appId, appsecret);
  918. if (StringUtil.isEmpty(token)) {
  919. code = false;
  920. error = error.append(";").append(userEntity.getRealName() + ":获取微信公众号token失败!");
  921. messageMonitorService.create(monitorEntity);
  922. continue;
  923. }
  924. // 微信公众号发送消息
  925. //获取用户在对应微信公众号上的openid
  926. WechatUserEntity wechatUserEntity = wechatUserService.getInfoByGzhId(userId, accountEntity.getAppKey());
  927. if (wechatUserEntity != null) {
  928. if (StringUtil.isNotBlank(wechatUserEntity.getOpenId())) {
  929. String openid = wechatUserEntity.getOpenId();
  930. String pagepath = "pages/login/index?tag=1&flowId=";
  931. //参数封装
  932. String message = WXGZHWebChatUtil.messageJson(templateKId, openid, wxxcxAppId, pagepath, smsMap, title, "2", null);
  933. //发送信息
  934. retJson = WXGZHWebChatUtil.sendMessage(token, message);
  935. JSONObject rstObj = WXGZHWebChatUtil.getMessageList(token);
  936. List<WxgzhMessageModel> wxgzhMessageModelList = JsonUtil.getJsonToList(rstObj.get("template_list"), WxgzhMessageModel.class);
  937. WxgzhMessageModel messageModel = wxgzhMessageModelList.stream().filter(t -> t.getTemplateId().equals(templateKId)).findFirst().orElse(null);
  938. if (ObjectUtil.isNotEmpty(messageModel)) {
  939. content = messageModel.getContent();
  940. if (StringUtil.isNotBlank(content) && !"null".equals(content)) {
  941. if (ObjectUtil.isNotEmpty(smsMap) && !"null".equals(smsMap)) {
  942. if (content.contains(".DATA}")) {
  943. for (String key : smsMap.keySet()) {
  944. content = content.replace(key, smsMap.get(key).toString());
  945. }
  946. }
  947. }
  948. }
  949. }
  950. //创建消息监控
  951. monitorEntity.setContent(content);
  952. if (!retJson.getBoolean("code")) {
  953. code = false;
  954. error = error.append(";").append(userEntity.getRealName() + ":" + retJson.get("error"));
  955. messageMonitorService.create(monitorEntity);
  956. continue;
  957. }
  958. messageMonitorService.create(monitorEntity);
  959. continue;
  960. } else {
  961. code = false;
  962. error = error.append(";").append(userEntity.getRealName() + ":" + "账号未绑定公众号!");
  963. messageMonitorService.create(monitorEntity);
  964. continue;
  965. }
  966. } else {
  967. code = false;
  968. error = error.append(";").append(userEntity.getRealName() + ":" + "账号未绑定公众号!");
  969. messageMonitorService.create(monitorEntity);
  970. continue;
  971. }
  972. } else {
  973. code = false;
  974. error = error.append(";").append(userEntity.getRealName() + ":账号配置数据不存在!");
  975. messageMonitorService.create(monitorEntity);
  976. continue;
  977. }
  978. } else {
  979. code = false;
  980. error = error.append(";").append(userEntity.getRealName() + ":消息模板数据不存在!");
  981. messageMonitorService.create(monitorEntity);
  982. continue;
  983. }
  984. }
  985. if (code) {
  986. retJson.put("code", true);
  987. retJson.put("error", MsgCode.SU012.get());
  988. } else {
  989. String msg = error.toString();
  990. msg = msg.substring(1);
  991. retJson.put("code", false);
  992. retJson.put("error", msg);
  993. }
  994. return retJson;
  995. }
  996. private MessageMonitorEntity createSysMessageMonitor(MessageTemplateConfigEntity msgTemEntity, String content, UserInfo userInfo, List<String> toUserIdsList, String title) {
  997. MessageMonitorEntity monitorEntity = new MessageMonitorEntity();
  998. monitorEntity.setId(RandomUtil.uuId());
  999. monitorEntity.setMessageType(msgTemEntity.getMessageType());
  1000. monitorEntity.setMessageSource(msgTemEntity.getMessageSource());
  1001. monitorEntity.setSendTime(DateUtil.getNowDate());
  1002. monitorEntity.setMessageTemplateId(msgTemEntity.getId());
  1003. monitorEntity.setTitle(title);
  1004. monitorEntity.setReceiveUser(JsonUtil.getObjectToString(toUserIdsList));
  1005. monitorEntity.setContent(content);
  1006. monitorEntity.setCreatorTime(DateUtil.getNowDate());
  1007. monitorEntity.setCreatorUserId(userInfo.getUserId());
  1008. return monitorEntity;
  1009. }
  1010. public static boolean isPhone(String phone) {
  1011. if (StringUtil.isNotBlank(phone) && !"null".equals(phone)) {
  1012. return Pattern.matches("^1[3-9]\\d{9}$", phone);
  1013. }
  1014. return false;
  1015. }
  1016. }