SendMessageConfigController.java 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783
  1. package jnpf.message.controller;
  2. import cn.dev33.satoken.annotation.SaCheckPermission;
  3. import io.swagger.v3.oas.annotations.Parameter;
  4. import io.swagger.v3.oas.annotations.Parameters;
  5. import jnpf.base.controller.SuperController;
  6. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  7. import io.swagger.v3.oas.annotations.tags.Tag;
  8. import io.swagger.v3.oas.annotations.Operation;
  9. import jnpf.base.ActionResult;
  10. import jnpf.base.entity.DictionaryDataEntity;
  11. import jnpf.base.entity.SysConfigEntity;
  12. import jnpf.base.service.BillRuleService;
  13. import jnpf.base.service.DictionaryDataService;
  14. import jnpf.base.service.SysconfigService;
  15. import jnpf.base.vo.PageListVO;
  16. import jnpf.base.vo.PaginationVO;
  17. import jnpf.base.UserInfo;
  18. import jnpf.base.vo.DownloadVO;
  19. import jnpf.config.ConfigValueUtil;
  20. import jnpf.constant.FileTypeConstant;
  21. import jnpf.constant.MsgCode;
  22. import jnpf.exception.DataException;
  23. import jnpf.message.entity.*;
  24. import jnpf.message.model.message.DingTalkModel;
  25. import jnpf.message.model.messagetemplateconfig.TemplateParamModel;
  26. import jnpf.message.model.sendmessageconfig.*;
  27. import jnpf.message.service.*;
  28. import jnpf.base.util.TestSendConfigUtil;
  29. import jnpf.model.BaseSystemInfo;
  30. import jnpf.model.SocialsSysConfig;
  31. import jnpf.permission.entity.UserEntity;
  32. import jnpf.permission.service.UserService;
  33. import jnpf.emnus.ModuleTypeEnum;
  34. import jnpf.util.FileExport;
  35. import org.springframework.http.MediaType;
  36. import org.springframework.transaction.annotation.Transactional;
  37. import jnpf.util.*;
  38. import lombok.extern.slf4j.Slf4j;
  39. import org.springframework.web.bind.annotation.RequestMapping;
  40. import org.springframework.web.bind.annotation.RestController;
  41. import org.springframework.web.bind.annotation.*;
  42. import org.springframework.beans.factory.annotation.Autowired;
  43. import org.springframework.web.multipart.MultipartFile;
  44. import jakarta.validation.Valid;
  45. import java.io.IOException;
  46. import java.security.InvalidKeyException;
  47. import java.security.NoSuchAlgorithmException;
  48. import java.util.stream.Collectors;
  49. import java.util.*;
  50. /**
  51. * 消息发送配置
  52. *
  53. * @版本: V3.2.0
  54. * @版权: 引迈信息技术有限公司(https://www.jnpfsoft.com)
  55. * @作者: JNPF开发平台组
  56. * @日期: 2022-08-19
  57. */
  58. @Slf4j
  59. @RestController
  60. @Tag(name = "消息发送配置", description = "message")
  61. @RequestMapping("/api/message/SendMessageConfig")
  62. public class SendMessageConfigController extends SuperController<SendMessageConfigService, SendMessageConfigEntity> {
  63. @Autowired
  64. private FileExport fileExport;
  65. @Autowired
  66. private BillRuleService billRuleService;
  67. @Autowired
  68. private ConfigValueUtil configValueUtil;
  69. @Autowired
  70. private UserService userApi;
  71. @Autowired
  72. private SysconfigService sysconfigService;
  73. @Autowired
  74. private SendMessageConfigService sendMessageConfigService;
  75. @Autowired
  76. private SendConfigTemplateService sendConfigTemplateService;
  77. @Autowired
  78. private AccountConfigService accountConfigService;
  79. @Autowired
  80. private MessageTemplateConfigService messageTemplateConfigService;
  81. @Autowired
  82. private DictionaryDataService dictionaryDataApi;
  83. @Autowired
  84. private TestSendConfigUtil testSendConfigUtil;
  85. /**
  86. * 列表
  87. *
  88. * @param sendMessageConfigPagination 分页模型
  89. * @return
  90. */
  91. @Operation(summary = "消息发送配置列表")
  92. @SaCheckPermission("msgCenter.sendConfig")
  93. @GetMapping
  94. public ActionResult<PageListVO<SendMessageConfigListVO>> list(SendMessageConfigPagination sendMessageConfigPagination) throws IOException {
  95. List<SendMessageConfigEntity> list = sendMessageConfigService.getList(sendMessageConfigPagination, null);
  96. List<DictionaryDataEntity> msgSendTypeList = dictionaryDataApi.getListByTypeDataCode("msgSendType");
  97. List<DictionaryDataEntity> msgSourceTypeList = dictionaryDataApi.getListByTypeDataCode("msgSourceType");
  98. //处理id字段转名称,若无需转或者为空可删除
  99. UserEntity userEntity = new UserEntity();
  100. List<SendMessageConfigListVO> listVO = JsonUtil.getJsonToList(list, SendMessageConfigListVO.class);
  101. for (SendMessageConfigListVO sendMessageConfigVO : listVO) {
  102. List<Map<String,String>> mapList = new ArrayList<>();
  103. //子表数据转换
  104. List<SendConfigTemplateEntity> sendConfigTemplateList = sendConfigTemplateService.getDetailListByParentId(sendMessageConfigVO.getId());
  105. if (sendConfigTemplateList != null && sendConfigTemplateList.size()>0) {
  106. sendConfigTemplateList = sendConfigTemplateList.stream().sorted((a,b)->a.getMessageType().compareTo(b.getMessageType())).collect(Collectors.toList());
  107. List<String> typeList = sendConfigTemplateList.stream().map(t -> t.getMessageType()).distinct().collect(Collectors.toList());
  108. if (typeList != null && typeList.size()>0) {
  109. for(String type : typeList) {
  110. String messageType = "";
  111. Map<String,String> map = new HashMap<>();
  112. DictionaryDataEntity dataTypeEntity = msgSendTypeList.stream().filter(t -> t.getEnCode().equals(type)).findFirst().orElse(null);
  113. if (dataTypeEntity != null) {
  114. messageType = dataTypeEntity.getFullName();
  115. map.put("fullName",messageType);
  116. map.put("type",type);
  117. mapList.add(map);
  118. }
  119. }
  120. sendMessageConfigVO.setMessageType(mapList);
  121. }
  122. }
  123. if(StringUtil.isNotEmpty(sendMessageConfigVO.getCreatorUserId())){
  124. userEntity = userApi.getInfo(sendMessageConfigVO.getCreatorUserId());
  125. if(userEntity != null){
  126. sendMessageConfigVO.setCreatorUser(userEntity.getRealName() +"/"+ userEntity.getAccount());
  127. }
  128. }
  129. //消息来源
  130. if(StringUtil.isNotBlank(sendMessageConfigVO.getMessageSource())) {
  131. msgSourceTypeList.stream().filter(t -> sendMessageConfigVO.getMessageSource().equals(t.getEnCode())).findFirst()
  132. .ifPresent(dataTypeEntity -> sendMessageConfigVO.setMessageSource(dataTypeEntity.getFullName()));
  133. }
  134. }
  135. PageListVO vo = new PageListVO();
  136. vo.setList(listVO);
  137. PaginationVO page = JsonUtil.getJsonToBean(sendMessageConfigPagination, PaginationVO.class);
  138. vo.setPagination(page);
  139. return ActionResult.success(vo);
  140. }
  141. /**
  142. * 获取发送配置下拉框
  143. *
  144. * @return
  145. */
  146. @Operation(summary = "获取发送配置下拉框")
  147. @GetMapping("/Selector")
  148. public ActionResult<PageListVO<SendMessageConfigListVO>> selector(SendMessageConfigPagination sendMessageConfigPagination) {
  149. List<SendMessageConfigEntity> list = sendMessageConfigService.getSelectorList(sendMessageConfigPagination);
  150. List<SendMessageConfigListVO> listVO = JsonUtil.getJsonToList(list, SendMessageConfigListVO.class);
  151. PageListVO vo = new PageListVO();
  152. vo.setList(listVO);
  153. PaginationVO page = JsonUtil.getJsonToBean(sendMessageConfigPagination, PaginationVO.class);
  154. vo.setPagination(page);
  155. return ActionResult.success(vo);
  156. }
  157. /**
  158. * 消息发送配置弹窗列表
  159. *
  160. * @param sendMessageConfigPagination 分页模型
  161. * @return
  162. */
  163. @Operation(summary = "消息发送配置弹窗列表")
  164. @GetMapping("/getSendConfigList")
  165. public ActionResult<PageListVO<SendConfigListVO>> getSendConfigList(SendMessageConfigPagination sendMessageConfigPagination) throws IOException {
  166. if(StringUtil.isBlank(sendMessageConfigPagination.getEnabledMark())) {
  167. sendMessageConfigPagination.setEnabledMark("1");
  168. }
  169. if(StringUtil.isBlank(sendMessageConfigPagination.getTemplateType())){
  170. sendMessageConfigPagination.setTemplateType("0");
  171. }
  172. List<SendMessageConfigEntity> list = sendMessageConfigService.getList(sendMessageConfigPagination, null);
  173. //处理id字段转名称,若无需转或者为空可删除
  174. List<DictionaryDataEntity> msgSendTypeList = dictionaryDataApi.getListByTypeDataCode("msgSendType");
  175. List<SendConfigListVO> listVO = JsonUtil.getJsonToList(list, SendConfigListVO.class);
  176. for (SendConfigListVO sendConfigVO : listVO) {
  177. //子表数据转换
  178. List<SendConfigTemplateEntity> sendConfigTemplateList = sendConfigTemplateService.getDetailListByParentId(sendConfigVO.getId());
  179. sendConfigTemplateList = sendConfigTemplateList.stream().filter(t->"1".equals(String.valueOf(t.getEnabledMark()))).collect(Collectors.toList());
  180. List<SendConfigTemplateModel> modelList = JsonUtil.getJsonToList(sendConfigTemplateList, SendConfigTemplateModel.class);
  181. for(SendConfigTemplateModel model:modelList) {
  182. if (modelList != null && modelList.size() > 0) {
  183. List<TemplateParamModel> list1 = messageTemplateConfigService.getParamJson(model.getTemplateId());
  184. // if (list != null && list.size() > 0) {
  185. // model.setParamJson(JsonUtil.getObjectToString(list1));
  186. // }
  187. List<MsgTemplateJsonModel> jsonModels = new ArrayList<>();
  188. for(TemplateParamModel paramModel : list1){
  189. MsgTemplateJsonModel jsonModel = new MsgTemplateJsonModel();
  190. jsonModel.setField(paramModel.getField());
  191. jsonModel.setFieldName(paramModel.getFieldName());
  192. jsonModel.setMsgTemplateId(model.getId());
  193. jsonModels.add(jsonModel);
  194. }
  195. model.setParamJson(jsonModels);
  196. MessageTemplateConfigEntity msgTemEntity = messageTemplateConfigService.getInfo(model.getTemplateId());
  197. if (msgTemEntity != null) {
  198. model.setMsgTemplateName(msgTemEntity.getFullName());
  199. }
  200. if (StringUtil.isNotEmpty(model.getMessageType())) {
  201. msgSendTypeList.stream().filter(t -> model.getMessageType().equals(t.getEnCode())).findFirst()
  202. .ifPresent(dataTypeEntity -> model.setMessageType(dataTypeEntity.getFullName()));
  203. }
  204. }
  205. sendConfigVO.setTemplateJson(modelList);
  206. }
  207. }
  208. PageListVO vo = new PageListVO();
  209. vo.setList(listVO);
  210. PaginationVO page = JsonUtil.getJsonToBean(sendMessageConfigPagination, PaginationVO.class);
  211. vo.setPagination(page);
  212. return ActionResult.success(vo);
  213. }
  214. /**
  215. * 创建
  216. *
  217. * @param sendMessageConfigForm 发送消息配置模型
  218. * @return
  219. */
  220. @Operation(summary = "创建")
  221. @Parameters({
  222. @Parameter(name = "sendMessageConfigForm", description = "发送消息配置模型", required = true)
  223. })
  224. @SaCheckPermission("msgCenter.sendConfig")
  225. @PostMapping
  226. @Transactional
  227. public ActionResult create(@RequestBody @Valid SendMessageConfigForm sendMessageConfigForm) throws DataException {
  228. boolean b = sendMessageConfigService.checkForm(sendMessageConfigForm, 0,"");
  229. if (b) {
  230. return ActionResult.fail(MsgCode.EXIST002.get());
  231. }
  232. if(!"1".equals(sendMessageConfigForm.getTemplateType())){
  233. if(sendMessageConfigForm.getEnCode().contains("PZXT")){
  234. return ActionResult.fail(MsgCode.MSERR114.get());
  235. }
  236. }
  237. String mainId = RandomUtil.uuId();
  238. UserInfo userInfo = UserProvider.getUser();
  239. SendMessageConfigEntity entity = JsonUtil.getJsonToBean(sendMessageConfigForm, SendMessageConfigEntity.class);
  240. entity.setCreatorUserId(userInfo.getUserId());
  241. entity.setCreatorTime(DateUtil.getNowDate());
  242. entity.setId(mainId);
  243. if (sendMessageConfigForm.getSendConfigTemplateList() != null) {
  244. List<SendConfigTemplateEntity> SendConfigTemplateList = JsonUtil.getJsonToList(sendMessageConfigForm.getSendConfigTemplateList(), SendConfigTemplateEntity.class);
  245. long dd = SendConfigTemplateList.stream().filter(t->t.getMessageType().equals("4")).count();
  246. long qy = SendConfigTemplateList.stream().filter(t->t.getMessageType().equals("5")).count();
  247. boolean isQy = true;
  248. boolean isDd = true;
  249. Map<String, String> objModel = getSysConfig();
  250. if(qy > 0){
  251. SocialsSysConfig config = sysconfigService.getSocialsConfig();
  252. // 企业号id
  253. String corpId = config.getQyhCorpId();
  254. // 应用凭证
  255. String agentId = config.getQyhAgentId();
  256. // 凭证密钥
  257. String agentSecret = config.getQyhAgentSecret();
  258. // 同步密钥
  259. String corpSecret = config.getQyhCorpSecret();
  260. if(StringUtil.isNotEmpty(corpId) && StringUtil.isNotEmpty(agentId) && StringUtil.isNotEmpty(corpSecret) && StringUtil.isNotEmpty(agentSecret)){
  261. isQy = true;
  262. }else {
  263. isQy = false;
  264. }
  265. }
  266. if(dd > 0){
  267. DingTalkModel dingTalkModel = JsonUtil.getJsonToBean(objModel, DingTalkModel.class);
  268. // 钉钉企业号Id
  269. String dingAgentId = dingTalkModel.getDingAgentId();
  270. // 应用凭证
  271. String dingSynAppKey = dingTalkModel.getDingSynAppKey();
  272. // 凭证密钥
  273. String dingSynAppSecret = dingTalkModel.getDingSynAppSecret();
  274. if(StringUtil.isNotEmpty(dingSynAppKey) && StringUtil.isNotEmpty(dingSynAppSecret) && StringUtil.isNotEmpty(dingAgentId)){
  275. isDd = true;
  276. }else {
  277. isDd = false;
  278. }
  279. }
  280. if(!isQy){
  281. return ActionResult.fail(MsgCode.MSERR120.get());
  282. }
  283. if(!isDd){
  284. return ActionResult.fail(MsgCode.MSERR119.get());
  285. }
  286. for (SendConfigTemplateEntity entitys : SendConfigTemplateList) {
  287. entitys.setId(RandomUtil.uuId());
  288. entitys.setSendConfigId(entity.getId());
  289. sendConfigTemplateService.save(entitys);
  290. }
  291. }
  292. sendMessageConfigService.save(entity);
  293. return ActionResult.success(MsgCode.SU001.get());
  294. }
  295. /**
  296. * 信息
  297. *
  298. * @param id 主键
  299. * @return
  300. */
  301. @Operation(summary = "信息")
  302. @Parameters({
  303. @Parameter(name = "id", description = "主键", required = true)
  304. })
  305. @GetMapping("/{id}")
  306. public ActionResult<SendMessageConfigInfoVO> info(@PathVariable("id") String id) {
  307. SendMessageConfigEntity entity = sendMessageConfigService.getInfo(id);
  308. SendMessageConfigInfoVO vo = JsonUtil.getJsonToBean(entity, SendMessageConfigInfoVO.class);
  309. List<DictionaryDataEntity> msgSourceTypeList = dictionaryDataApi.getListByTypeDataCode("msgSourceType");
  310. if (StringUtil.isNotEmpty(vo.getMessageSource())) {
  311. msgSourceTypeList.stream().filter(t -> vo.getMessageSource().equals(t.getEnCode())).findFirst()
  312. .ifPresent(dataTypeEntity -> vo.setMessageSourceName(dataTypeEntity.getFullName()));
  313. }
  314. //子表
  315. List<SendConfigTemplateEntity> sendConfigTemplateList = sendMessageConfigService.getSendConfigTemplateList(id);
  316. for (SendConfigTemplateEntity sendconfigtemplateEntity : sendConfigTemplateList) {
  317. AccountConfigEntity accountConfigEntity = accountConfigService.getInfo(sendconfigtemplateEntity.getAccountConfigId());
  318. if(accountConfigEntity != null){
  319. sendconfigtemplateEntity.setAccountCode(accountConfigEntity.getEnCode());
  320. sendconfigtemplateEntity.setAccountName(accountConfigEntity.getFullName());
  321. }
  322. MessageTemplateConfigEntity messageTemplateConfigEntity = messageTemplateConfigService.getInfo(sendconfigtemplateEntity.getTemplateId());
  323. if(messageTemplateConfigEntity != null){
  324. sendconfigtemplateEntity.setTemplateCode(messageTemplateConfigEntity.getEnCode());
  325. sendconfigtemplateEntity.setTemplateName(messageTemplateConfigEntity.getFullName());
  326. }
  327. }
  328. vo.setSendConfigTemplateList(sendConfigTemplateList);
  329. //副表
  330. return ActionResult.success(vo);
  331. }
  332. /**
  333. * 根据编码获取信息
  334. *
  335. * @param enCode 编码
  336. * @return
  337. */
  338. @Operation(summary = "根据编码获取信息")
  339. @Parameters({
  340. @Parameter(name = "enCode", description = "编码", required = true)
  341. })
  342. @SaCheckPermission("msgCenter.sendConfig")
  343. @GetMapping("/getInfoByEnCode/{enCode}")
  344. public ActionResult<SendMessageConfigInfoVO> getInfo(@PathVariable("enCode") String enCode) {
  345. SendMessageConfigEntity entity = sendMessageConfigService.getInfoByEnCode(enCode);
  346. SendMessageConfigInfoVO vo = JsonUtil.getJsonToBean(entity, SendMessageConfigInfoVO.class);
  347. //子表
  348. List<SendConfigTemplateEntity> sendConfigTemplateList = sendMessageConfigService.getSendConfigTemplateList(entity.getId());
  349. for (SendConfigTemplateEntity sendconfigtemplateEntity : sendConfigTemplateList) {
  350. AccountConfigEntity accountConfigEntity = accountConfigService.getInfo(sendconfigtemplateEntity.getAccountConfigId());
  351. if(accountConfigEntity != null){
  352. sendconfigtemplateEntity.setAccountCode(accountConfigEntity.getEnCode());
  353. sendconfigtemplateEntity.setAccountName(accountConfigEntity.getFullName());
  354. }
  355. MessageTemplateConfigEntity messageTemplateConfigEntity = messageTemplateConfigService.getInfo(sendconfigtemplateEntity.getTemplateId());
  356. if(messageTemplateConfigEntity != null){
  357. sendconfigtemplateEntity.setTemplateCode(messageTemplateConfigEntity.getEnCode());
  358. sendconfigtemplateEntity.setTemplateName(messageTemplateConfigEntity.getFullName());
  359. }
  360. }
  361. vo.setSendConfigTemplateList(sendConfigTemplateList);
  362. //副表
  363. return ActionResult.success(vo);
  364. }
  365. /**
  366. * 表单信息(详情页)
  367. *
  368. * @param id 主键
  369. * @return
  370. */
  371. @Operation(summary = "表单信息(详情页)")
  372. @Parameters({
  373. @Parameter(name = "id", description = "主键", required = true)
  374. })
  375. @SaCheckPermission("msgCenter.sendConfig")
  376. @GetMapping("/detail/{id}")
  377. public ActionResult<SendMessageConfigInfoVO> detailInfo(@PathVariable("id") String id) {
  378. SendMessageConfigEntity entity = sendMessageConfigService.getInfo(id);
  379. SendMessageConfigInfoVO vo = JsonUtil.getJsonToBean(entity, SendMessageConfigInfoVO.class);
  380. //子表数据转换
  381. List<SendConfigTemplateEntity> sendConfigTemplateList = sendMessageConfigService.getSendConfigTemplateList(id);
  382. for(SendConfigTemplateEntity sendconfigtemplateEntity : sendConfigTemplateList){
  383. AccountConfigEntity accountConfigEntity = accountConfigService.getInfo(sendconfigtemplateEntity.getAccountConfigId());
  384. if(accountConfigEntity != null){
  385. sendconfigtemplateEntity.setAccountCode(accountConfigEntity.getEnCode());
  386. sendconfigtemplateEntity.setAccountName(accountConfigEntity.getFullName());
  387. }
  388. MessageTemplateConfigEntity messageTemplateConfigEntity = messageTemplateConfigService.getInfo(sendconfigtemplateEntity.getTemplateId());
  389. if(messageTemplateConfigEntity != null){
  390. sendconfigtemplateEntity.setTemplateCode(messageTemplateConfigEntity.getEnCode());
  391. sendconfigtemplateEntity.setTemplateName(messageTemplateConfigEntity.getFullName());
  392. }
  393. }
  394. vo.setSendConfigTemplateList(sendConfigTemplateList);
  395. return ActionResult.success(vo);
  396. }
  397. /**
  398. * 更新
  399. *
  400. * @param id 主键
  401. * @param sendMessageConfigForm 发送信息配置模型
  402. * @return
  403. */
  404. @Operation(summary = "更新")
  405. @Parameters({
  406. @Parameter(name = "id", description = "主键", required = true),
  407. @Parameter(name = "sendMessageConfigForm", description = "发送信息配置模型", required = true)
  408. })
  409. @SaCheckPermission("msgCenter.sendConfig")
  410. @PutMapping("/{id}")
  411. @Transactional
  412. public ActionResult update(@PathVariable("id") String id, @RequestBody @Valid SendMessageConfigForm sendMessageConfigForm) throws DataException {
  413. boolean b = sendMessageConfigService.checkForm(sendMessageConfigForm, 0,sendMessageConfigForm.getId());
  414. if (b) {
  415. return ActionResult.fail(MsgCode.EXIST002.get());
  416. }
  417. if("0".equals(sendMessageConfigForm.getEnabledMark())){
  418. if(sendMessageConfigService.idUsed(id)){
  419. return ActionResult.fail(MsgCode.FA049.get());
  420. }
  421. }
  422. if(!"1".equals(sendMessageConfigForm.getTemplateType())){
  423. if(sendMessageConfigForm.getEnCode().contains("PZXT")){
  424. return ActionResult.fail(MsgCode.MSERR114.get());
  425. }
  426. }
  427. UserInfo userInfo = UserProvider.getUser();
  428. SendMessageConfigEntity entity = sendMessageConfigService.getInfo(id);
  429. if (entity != null) {
  430. SendMessageConfigEntity subentity = JsonUtil.getJsonToBean(sendMessageConfigForm, SendMessageConfigEntity.class);
  431. subentity.setCreatorUserId(entity.getCreatorUserId());
  432. subentity.setCreatorTime(entity.getCreatorTime());
  433. subentity.setLastModifyUserId(userInfo.getUserId());
  434. subentity.setLastModifyTime(DateUtil.getNowDate());
  435. //明细表数据更新
  436. List<SendConfigTemplateEntity> addTemplateList = new ArrayList<>();
  437. List<SendConfigTemplateEntity> updTemplateList = new ArrayList<>();
  438. List<SendConfigTemplateEntity> delTemplateList = new ArrayList<>();
  439. if (sendMessageConfigForm.getSendConfigTemplateList() != null) {
  440. List<SendConfigTemplateEntity> sendConfigTemplateEntityList = JsonUtil.getJsonToList(sendMessageConfigForm.getSendConfigTemplateList(), SendConfigTemplateEntity.class);
  441. long dd = sendConfigTemplateEntityList.stream().filter(t->t.getMessageType().equals("4")).count();
  442. long qy = sendConfigTemplateEntityList.stream().filter(t->t.getMessageType().equals("5")).count();
  443. boolean isQy = true;
  444. boolean isDd = true;
  445. Map<String, String> objModel = getSysConfig();
  446. if(qy > 0){
  447. SocialsSysConfig config = sysconfigService.getSocialsConfig();
  448. // 企业号id
  449. String corpId = config.getQyhCorpId();
  450. // 应用凭证
  451. String agentId = config.getQyhAgentId();
  452. // 凭证密钥
  453. String agentSecret = config.getQyhAgentSecret();
  454. // 同步密钥
  455. String corpSecret = config.getQyhCorpSecret();
  456. if(StringUtil.isNotEmpty(corpId) && StringUtil.isNotEmpty(agentId) && StringUtil.isNotEmpty(corpSecret) && StringUtil.isNotEmpty(agentSecret)){
  457. isQy = true;
  458. }else {
  459. isQy = false;
  460. }
  461. }
  462. if(dd > 0){
  463. DingTalkModel dingTalkModel = JsonUtil.getJsonToBean(objModel, DingTalkModel.class);
  464. // 钉钉企业号Id
  465. String dingAgentId = dingTalkModel.getDingAgentId();
  466. // 应用凭证
  467. String dingSynAppKey = dingTalkModel.getDingSynAppKey();
  468. // 凭证密钥
  469. String dingSynAppSecret = dingTalkModel.getDingSynAppSecret();
  470. if(StringUtil.isNotEmpty(dingSynAppKey) && StringUtil.isNotEmpty(dingSynAppSecret) && StringUtil.isNotEmpty(dingAgentId)){
  471. isDd = true;
  472. }else {
  473. isDd = false;
  474. }
  475. }
  476. if(!isQy){
  477. return ActionResult.fail(MsgCode.MSERR120.get());
  478. }
  479. if(!isDd){
  480. return ActionResult.fail(MsgCode.MSERR119.get());
  481. }
  482. for (SendConfigTemplateEntity entitys : sendConfigTemplateEntityList) {
  483. SendConfigTemplateEntity templateEntity = StringUtil.isNotEmpty(entitys.getId())?sendConfigTemplateService.getInfo(entitys.getId()):null;
  484. if(templateEntity != null){
  485. templateEntity.setSendConfigId(entity.getId());
  486. templateEntity.setId(entitys.getId());
  487. templateEntity.setEnabledMark(entitys.getEnabledMark());
  488. templateEntity.setCreatorTime(entitys.getCreatorTime());
  489. templateEntity.setCreatorUserId(entitys.getCreatorUserId());
  490. templateEntity.setDescription(entitys.getDescription());
  491. templateEntity.setAccountConfigId(entitys.getAccountConfigId());
  492. templateEntity.setSortCode(entitys.getSortCode());
  493. templateEntity.setLastModifyTime(DateUtil.getNowDate());
  494. templateEntity.setLastModifyUserId(userInfo.getUserId());
  495. templateEntity.setTemplateId(entitys.getTemplateId());
  496. updTemplateList.add(templateEntity);
  497. }else {
  498. entitys.setId(RandomUtil.uuId());
  499. entitys.setSendConfigId(entity.getId());
  500. entitys.setCreatorUserId(userInfo.getUserId());
  501. entitys.setCreatorTime(DateUtil.getNowDate());
  502. addTemplateList.add(entitys);
  503. }
  504. }
  505. //删除参数记录
  506. List<SendConfigTemplateEntity> paramEntityList = sendConfigTemplateService.getDetailListByParentId(entity.getId());
  507. if (paramEntityList != null) {
  508. for (SendConfigTemplateEntity templateEntity : paramEntityList) {
  509. SendConfigTemplateEntity templateEntity1 = sendConfigTemplateEntityList.stream().filter(t -> t.getId().equals(templateEntity.getId())).findFirst().orElse(null);
  510. if (templateEntity1 == null) {
  511. delTemplateList.add(templateEntity);
  512. }
  513. }
  514. }
  515. if (addTemplateList != null && addTemplateList.size() > 0) {
  516. sendConfigTemplateService.saveBatch(addTemplateList);
  517. }
  518. if (updTemplateList != null && updTemplateList.size() > 0) {
  519. sendConfigTemplateService.updateBatchById(updTemplateList);
  520. }
  521. if (delTemplateList != null && delTemplateList.size() > 0) {
  522. sendConfigTemplateService.removeByIds(delTemplateList.stream().map(SendConfigTemplateEntity::getId).collect(Collectors.toList()));
  523. }
  524. }
  525. boolean b1 = sendMessageConfigService.updateById(subentity);
  526. if (!b1) {
  527. return ActionResult.fail(MsgCode.VS405.get());
  528. }
  529. return ActionResult.success(MsgCode.SU004.get());
  530. } else {
  531. return ActionResult.fail(MsgCode.FA002.get());
  532. }
  533. }
  534. /**
  535. * 删除
  536. *
  537. * @param id 主键
  538. * @return
  539. */
  540. @Operation(summary = "删除")
  541. @Parameters({
  542. @Parameter(name = "id", description = "主键", required = true)
  543. })
  544. @SaCheckPermission("msgCenter.sendConfig")
  545. @DeleteMapping("/{id}")
  546. @Transactional
  547. public ActionResult delete(@PathVariable("id") String id) {
  548. SendMessageConfigEntity entity = sendMessageConfigService.getInfo(id);
  549. if (entity != null) {
  550. if(sendMessageConfigService.idUsed(id)){
  551. return ActionResult.fail(MsgCode.FA050.get());
  552. }
  553. sendMessageConfigService.delete(entity);
  554. QueryWrapper<SendConfigTemplateEntity> queryWrapperSendConfigTemplate = new QueryWrapper<>();
  555. queryWrapperSendConfigTemplate.lambda().eq(SendConfigTemplateEntity::getSendConfigId, entity.getId());
  556. sendConfigTemplateService.remove(queryWrapperSendConfigTemplate);
  557. }
  558. return ActionResult.success(MsgCode.SU003.get());
  559. }
  560. /**
  561. * 获取消息发送配置
  562. *
  563. * @param id 发送配置id
  564. * @return
  565. */
  566. @Operation(summary = "获取消息发送配置")
  567. @Parameters({
  568. @Parameter(name = "id", description = "主键", required = true)
  569. })
  570. @SaCheckPermission("msgCenter.sendConfig")
  571. @PostMapping("/getTestConfig/{id}")
  572. @Transactional
  573. public ActionResult getTestConfig(@PathVariable("id") String id){
  574. List<SendConfigTemplateEntity> configTemplateList = sendConfigTemplateService.getConfigTemplateListByConfigId(id);
  575. List<DictionaryDataEntity> msgSendTypeList = dictionaryDataApi.getListByTypeDataCode("msgSendType");
  576. if(configTemplateList != null && configTemplateList.size()>0){
  577. List<SendConfigTemplateModel> modelList = JsonUtil.getJsonToList(configTemplateList, SendConfigTemplateModel.class);
  578. for(SendConfigTemplateModel model:modelList){
  579. List<TemplateParamModel> list = messageTemplateConfigService.getParamJson(model.getTemplateId());
  580. if(list!=null && list.size()>0){
  581. model.setParamJson(list);
  582. }
  583. MessageTemplateConfigEntity msgTemEntity = messageTemplateConfigService.getInfo(model.getTemplateId());
  584. if(msgTemEntity != null){
  585. model.setMsgTemplateName(msgTemEntity.getFullName());
  586. }
  587. if(StringUtil.isNotEmpty(model.getMessageType())){
  588. msgSendTypeList.stream().filter(t -> model.getMessageType().equals(t.getEnCode())).findFirst()
  589. .ifPresent(dataTypeEntity -> model.setMessageType(dataTypeEntity.getFullName()));
  590. }
  591. }
  592. return ActionResult.success(modelList);
  593. }else {
  594. return ActionResult.fail(MsgCode.MSERR121.get());
  595. }
  596. }
  597. /**
  598. * 测试消息发送配置
  599. *
  600. * @param modelList 发送配置
  601. * @return
  602. */
  603. @Operation(summary = "测试消息发送配置")
  604. @Parameters({
  605. @Parameter(name = "modelList", description = "发送配置", required = true)
  606. })
  607. @SaCheckPermission("msgCenter.sendConfig")
  608. @PostMapping("/testSendConfig")
  609. @Transactional
  610. public ActionResult testSendConfig(@RequestBody @Valid List<SendConfigTemplateModel> modelList) throws NoSuchAlgorithmException, InvalidKeyException {
  611. UserInfo userInfo = UserProvider.getUser();
  612. List<SendConfigTestResultModel> resultList = new ArrayList<>();
  613. List<DictionaryDataEntity> msgSendTypeList = dictionaryDataApi.getListByTypeDataCode("msgSendType");
  614. if(modelList != null && modelList.size()>0){
  615. for(SendConfigTemplateModel model: modelList){
  616. SendConfigTestResultModel resultModel = new SendConfigTestResultModel();
  617. String result = testSendConfigUtil.sendMessage(model,userInfo);
  618. MessageTemplateConfigEntity msgTemEntity = messageTemplateConfigService.getInfo(model.getTemplateId());
  619. if(msgTemEntity != null) {
  620. msgSendTypeList.stream().filter(t -> msgTemEntity.getMessageType().equals(t.getEnCode())).findFirst()
  621. .ifPresent(dataTypeEntity -> resultModel.setMessageType("消息类型:" + dataTypeEntity.getFullName()));
  622. resultModel.setResult(result);
  623. if (result != null) {
  624. resultModel.setIsSuccess("0");
  625. } else {
  626. resultModel.setIsSuccess("1");
  627. }
  628. }
  629. resultList.add(resultModel);
  630. }
  631. }
  632. return ActionResult.success(resultList);
  633. }
  634. /**
  635. * 复制
  636. *
  637. * @param id 主键
  638. * @return
  639. */
  640. @Operation(summary = "复制")
  641. @Parameters({
  642. @Parameter(name = "id", description = "主键", required = true)
  643. })
  644. @SaCheckPermission("msgCenter.sendConfig")
  645. @PostMapping("/{id}/Actions/Copy")
  646. @Transactional
  647. public ActionResult copy(@PathVariable("id") String id) {
  648. UserInfo userInfo = UserProvider.getUser();
  649. SendMessageConfigEntity entity = sendMessageConfigService.getInfo(id);
  650. if (entity != null) {
  651. entity.setEnabledMark(0);
  652. String copyNum = UUID.randomUUID().toString().substring(0, 5);
  653. entity.setFullName(entity.getFullName()+".副本"+copyNum);
  654. entity.setEnCode(entity.getEnCode()+copyNum);
  655. entity.setCreatorTime(DateUtil.getNowDate());
  656. entity.setCreatorUserId(userInfo.getUserId());
  657. entity.setLastModifyTime(null);
  658. entity.setLastModifyUserId(null);
  659. entity.setTemplateType("0");
  660. entity.setId(RandomUtil.uuId());
  661. SendMessageConfigEntity copyEntity = JsonUtil.getJsonToBean(entity, SendMessageConfigEntity.class);
  662. if(copyEntity.getEnCode().length()>50 || copyEntity.getFullName().length()>50){
  663. return ActionResult.fail(MsgCode.PRI006.get());
  664. }
  665. sendMessageConfigService.create(copyEntity);
  666. List<SendConfigTemplateEntity> copyConfigTemplateList = new ArrayList<>();
  667. List<SendConfigTemplateEntity> configTemplateList = sendConfigTemplateService.getDetailListByParentId(id);
  668. if(configTemplateList != null && configTemplateList.size()>0){
  669. for(SendConfigTemplateEntity entitys : configTemplateList){
  670. entitys.setId(RandomUtil.uuId());
  671. entitys.setSendConfigId(copyEntity.getId());
  672. entitys.setCreatorTime(DateUtil.getNowDate());
  673. entitys.setCreatorUserId(userInfo.getUserId());
  674. entitys.setLastModifyTime(null);
  675. entitys.setLastModifyUserId(null);
  676. copyConfigTemplateList.add(entitys);
  677. }
  678. }
  679. if(copyConfigTemplateList != null && copyConfigTemplateList.size()>0) {
  680. sendConfigTemplateService.saveBatch(copyConfigTemplateList);
  681. }
  682. return ActionResult.success(MsgCode.SU007.get());
  683. }else {
  684. return ActionResult.fail(MsgCode.FA004.get());
  685. }
  686. }
  687. /**
  688. * 导出消息发送配置
  689. *
  690. * @param id 账号配置id
  691. * @return ignore
  692. */
  693. @Operation(summary = "导出")
  694. @GetMapping("/{id}/Action/Export")
  695. public ActionResult export(@PathVariable String id) {
  696. SendMessageConfigEntity entity = sendMessageConfigService.getInfo(id);
  697. SendMessageConfigInfoVO vo = JsonUtil.getJsonToBean(entity, SendMessageConfigInfoVO.class);
  698. //子表数据
  699. List<SendConfigTemplateEntity> sendConfigTemplateList = sendMessageConfigService.getSendConfigTemplateList(id);
  700. vo.setSendConfigTemplateList(sendConfigTemplateList);
  701. //导出文件
  702. DownloadVO downloadVO = fileExport.exportFile(vo, FileTypeConstant.TEMPORARY, entity.getFullName(), ModuleTypeEnum.MESSAGE_SEND_CONFIG.getTableName());
  703. return ActionResult.success(downloadVO);
  704. }
  705. /**
  706. * 导入账号配置
  707. *
  708. * @param multipartFile 备份json文件
  709. * @return 执行结果标识
  710. */
  711. @Operation(summary = "导入")
  712. @PostMapping(value = "/Action/Import", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
  713. public ActionResult importData(@RequestPart("file") MultipartFile multipartFile) throws DataException {
  714. UserInfo userInfo = UserProvider.getUser();
  715. //判断是否为.json结尾
  716. if (FileUtil.existsSuffix(multipartFile, ModuleTypeEnum.MESSAGE_SEND_CONFIG.getTableName())) {
  717. return ActionResult.fail(MsgCode.IMP002.get());
  718. }
  719. //获取文件内容
  720. String fileContent = FileUtil.getFileContent(multipartFile);
  721. SendMessageConfigInfoVO infoVO = JsonUtil.getJsonToBean(fileContent, SendMessageConfigInfoVO.class);
  722. SendMessageConfigEntity entity = JsonUtil.getJsonToBean(infoVO, SendMessageConfigEntity.class);
  723. entity.setCreatorUserId(userInfo.getUserId());
  724. entity.setCreatorTime(DateUtil.getNowDate());
  725. if (infoVO.getSendConfigTemplateList() != null) {
  726. List<SendConfigTemplateEntity> sendConfigTemplateList = JsonUtil.getJsonToList(infoVO.getSendConfigTemplateList(), SendConfigTemplateEntity.class);
  727. sendConfigTemplateService.saveBatch(sendConfigTemplateList);
  728. }
  729. return sendMessageConfigService.ImportData(entity);
  730. }
  731. public Map<String, String> getSysConfig() {
  732. Map<String, String> objModel = new HashMap<>();
  733. List<SysConfigEntity> configList = sysconfigService.getList("SysConfig");
  734. for (SysConfigEntity entity : configList) {
  735. objModel.put(entity.getFkey(), entity.getValue());
  736. }
  737. return objModel;
  738. }
  739. }