MessageTemplateConfigController.java 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614
  1. package jnpf.message.controller;
  2. import cn.dev33.satoken.annotation.SaCheckPermission;
  3. import cn.dev33.satoken.annotation.SaMode;
  4. import io.swagger.v3.oas.annotations.Parameter;
  5. import io.swagger.v3.oas.annotations.Parameters;
  6. import jnpf.base.controller.SuperController;
  7. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  8. import io.swagger.v3.oas.annotations.tags.Tag;
  9. import io.swagger.v3.oas.annotations.Operation;
  10. import jnpf.base.ActionResult;
  11. import jnpf.base.entity.DictionaryDataEntity;
  12. import jnpf.base.service.BillRuleService;
  13. import jnpf.base.service.DictionaryDataService;
  14. import jnpf.base.vo.PageListVO;
  15. import jnpf.base.vo.PaginationVO;
  16. import jnpf.base.UserInfo;
  17. import jnpf.base.vo.DownloadVO;
  18. import jnpf.config.ConfigValueUtil;
  19. import jnpf.constant.FileTypeConstant;
  20. import jnpf.constant.MsgCode;
  21. import jnpf.exception.DataException;
  22. import jnpf.message.entity.MessageTemplateConfigEntity;
  23. import jnpf.message.entity.SmsFieldEntity;
  24. import jnpf.message.entity.TemplateParamEntity;
  25. import jnpf.message.model.messagetemplateconfig.MessageTemplateConfigForm;
  26. import jnpf.message.model.messagetemplateconfig.MessageTemplateConfigInfoVO;
  27. import jnpf.message.model.messagetemplateconfig.MessageTemplateConfigListVO;
  28. import jnpf.message.model.messagetemplateconfig.MessageTemplateConfigPagination;
  29. import jnpf.message.service.MessageTemplateConfigService;
  30. import jnpf.message.service.SendConfigTemplateService;
  31. import jnpf.message.service.SmsFieldService;
  32. import jnpf.message.service.TemplateParamService;
  33. import jnpf.permission.entity.UserEntity;
  34. import jnpf.permission.service.UserService;
  35. import jnpf.emnus.ModuleTypeEnum;
  36. import jnpf.util.FileExport;
  37. import org.springframework.http.MediaType;
  38. import org.springframework.transaction.annotation.Transactional;
  39. import jnpf.util.*;
  40. import lombok.extern.slf4j.Slf4j;
  41. import org.springframework.web.bind.annotation.RequestMapping;
  42. import org.springframework.web.bind.annotation.RestController;
  43. import org.springframework.web.bind.annotation.*;
  44. import org.springframework.beans.factory.annotation.Autowired;
  45. import org.springframework.web.multipart.MultipartFile;
  46. import jakarta.validation.Valid;
  47. import java.io.IOException;
  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-18
  57. */
  58. @Slf4j
  59. @RestController
  60. @Tag(name = "消息模板(新)", description = "message")
  61. @RequestMapping("/api/message/MessageTemplateConfig")
  62. public class MessageTemplateConfigController extends SuperController<MessageTemplateConfigService, MessageTemplateConfigEntity> {
  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 MessageTemplateConfigService messageTemplateConfigService;
  73. @Autowired
  74. private TemplateParamService templateParamService;
  75. @Autowired
  76. private SmsFieldService smsFieldService;
  77. @Autowired
  78. private DictionaryDataService dictionaryDataApi;
  79. @Autowired
  80. private SendConfigTemplateService sendConfigTemplateService;
  81. /**
  82. * 列表
  83. *
  84. * @param messageTemplateConfigPagination 消息模板分页模型
  85. * @return
  86. */
  87. @Operation(summary = "列表")
  88. @SaCheckPermission(value = {"msgCenter.msgTemplate", "integrationCenter.sms", "integrationCenter.email"}, mode = SaMode.OR)
  89. @GetMapping
  90. public ActionResult<PageListVO<MessageTemplateConfigListVO>> list(MessageTemplateConfigPagination messageTemplateConfigPagination) throws IOException {
  91. List<MessageTemplateConfigEntity> list = messageTemplateConfigService.getList(messageTemplateConfigPagination);
  92. List<DictionaryDataEntity> msgSendTypeList = dictionaryDataApi.getListByTypeDataCode("msgSendType");
  93. List<DictionaryDataEntity> msgSourceTypeList = dictionaryDataApi.getListByTypeDataCode("msgSourceType");
  94. //处理id字段转名称,若无需转或者为空可删除
  95. UserEntity userEntity = new UserEntity();
  96. List<MessageTemplateConfigListVO> listVO = JsonUtil.getJsonToList(list, MessageTemplateConfigListVO.class);
  97. for (MessageTemplateConfigListVO messageTemplateNewVO : listVO) {
  98. //消息类型
  99. if(StringUtil.isNotEmpty(messageTemplateNewVO.getMessageType())){
  100. msgSendTypeList.stream().filter(t -> messageTemplateNewVO.getMessageType().equals(t.getEnCode())).findFirst()
  101. .ifPresent(dataTypeEntity -> messageTemplateNewVO.setMessageType(dataTypeEntity.getFullName()));
  102. }
  103. //创建人员
  104. if(StringUtil.isNotBlank(messageTemplateNewVO.getCreatorUserId()) && !"null".equals(messageTemplateNewVO.getCreatorUserId())){
  105. userEntity = userApi.getInfo(messageTemplateNewVO.getCreatorUserId());
  106. if(userEntity != null){
  107. messageTemplateNewVO.setCreatorUser(userEntity.getRealName() +"/"+ userEntity.getAccount());
  108. }
  109. }
  110. //消息来源
  111. if(StringUtil.isNotEmpty(messageTemplateNewVO.getMessageSource())) {
  112. msgSourceTypeList.stream().filter(t -> messageTemplateNewVO.getMessageSource().equals(t.getEnCode())).findFirst()
  113. .ifPresent(dataTypeEntity -> messageTemplateNewVO.setMessageSource(dataTypeEntity.getFullName()));
  114. }
  115. }
  116. PageListVO vo = new PageListVO();
  117. vo.setList(listVO);
  118. PaginationVO page = JsonUtil.getJsonToBean(messageTemplateConfigPagination, PaginationVO.class);
  119. vo.setPagination(page);
  120. return ActionResult.success(vo);
  121. }
  122. /**
  123. * 创建
  124. *
  125. * @param messageTemplateConfigForm 消息模板页模型
  126. * @return ignore
  127. */
  128. @Operation(summary = "创建")
  129. @Parameters({
  130. @Parameter(name = "messageTemplateConfigForm", description = "消息模板页模型", required = true)
  131. })
  132. @SaCheckPermission("msgCenter.msgTemplate")
  133. @PostMapping
  134. @Transactional
  135. public ActionResult create(@RequestBody @Valid MessageTemplateConfigForm messageTemplateConfigForm) throws DataException {
  136. boolean b = messageTemplateConfigService.checkForm(messageTemplateConfigForm, 0,"");
  137. if (b) {
  138. return ActionResult.fail(MsgCode.EXIST002.get());
  139. }
  140. if(!"1".equals(messageTemplateConfigForm.getTemplateType())){
  141. if(messageTemplateConfigForm.getEnCode().contains("MBXT")){
  142. return ActionResult.fail(MsgCode.MSERR114.get());
  143. }
  144. }
  145. if (messageTemplateConfigForm.getSmsFieldList() != null && "7".equals(messageTemplateConfigForm.getMessageType())) {
  146. List<SmsFieldEntity> SmsFieldList = JsonUtil.getJsonToList(messageTemplateConfigForm.getSmsFieldList(), SmsFieldEntity.class);
  147. List<SmsFieldEntity> list = SmsFieldList.stream().filter(t->StringUtil.isNotEmpty(String.valueOf(t.getIsTitle())) &&!"null".equals(String.valueOf(t.getIsTitle())) && t.getIsTitle()==1).collect(Collectors.toList());
  148. if (list != null) {
  149. if(list.size() > 1) {
  150. return ActionResult.fail(MsgCode.MSERR115.get());
  151. }
  152. }else {
  153. return ActionResult.fail(MsgCode.MSERR116.get());
  154. }
  155. }
  156. String mainId = RandomUtil.uuId();
  157. UserInfo userInfo = UserProvider.getUser();
  158. MessageTemplateConfigEntity entity = JsonUtil.getJsonToBean(messageTemplateConfigForm, MessageTemplateConfigEntity.class);
  159. entity.setCreatorTime(DateUtil.getNowDate());
  160. entity.setCreatorUserId(userInfo.getUserId());
  161. entity.setId(mainId);
  162. if("1".equals(entity.getMessageType()) && "2".equals(entity.getMessageSource())){
  163. entity.setContent(null);
  164. }
  165. messageTemplateConfigService.save(entity);
  166. if (messageTemplateConfigForm.getTemplateParamList() != null) {
  167. List<TemplateParamEntity> TemplateParamList = JsonUtil.getJsonToList(messageTemplateConfigForm.getTemplateParamList(), TemplateParamEntity.class);
  168. for (TemplateParamEntity entitys : TemplateParamList) {
  169. entitys.setId(RandomUtil.uuId());
  170. entitys.setTemplateId(entity.getId());
  171. templateParamService.save(entitys);
  172. }
  173. }
  174. if (messageTemplateConfigForm.getSmsFieldList() != null) {
  175. List<SmsFieldEntity> SmsFieldList = JsonUtil.getJsonToList(messageTemplateConfigForm.getSmsFieldList(), SmsFieldEntity.class);
  176. for (SmsFieldEntity entitys : SmsFieldList) {
  177. entitys.setId(RandomUtil.uuId());
  178. entitys.setTemplateId(entity.getId());
  179. smsFieldService.save(entitys);
  180. }
  181. }
  182. return ActionResult.success(MsgCode.SU001.get());
  183. }
  184. /**
  185. * 信息
  186. *
  187. * @param id 主键
  188. * @return ignore
  189. */
  190. @Operation(summary = "信息")
  191. @Parameters({
  192. @Parameter(name = "id", description = "主键", required = true)
  193. })
  194. @SaCheckPermission(value = {"msgCenter.msgTemplate", "integrationCenter.sms", "integrationCenter.email"}, mode = SaMode.OR)
  195. @GetMapping("/{id}")
  196. public ActionResult<MessageTemplateConfigInfoVO> info(@PathVariable("id") String id) {
  197. MessageTemplateConfigEntity entity = messageTemplateConfigService.getInfo(id);
  198. MessageTemplateConfigInfoVO vo = JsonUtil.getJsonToBean(entity, MessageTemplateConfigInfoVO.class);
  199. //子表
  200. List<TemplateParamEntity> BaseTemplateParamList = messageTemplateConfigService.getTemplateParamList(id);
  201. // for (TemplateParamEntity basetemplateparamEntity : BaseTemplateParamList) {
  202. // }
  203. vo.setTemplateParamList(BaseTemplateParamList);
  204. List<SmsFieldEntity> BaseSmsFieldList = messageTemplateConfigService.getSmsFieldList(id);
  205. // for (SmsFieldEntity basesmsfieldEntity : BaseSmsFieldList) {
  206. // }
  207. vo.setSmsFieldList(BaseSmsFieldList);
  208. //副表
  209. return ActionResult.success(vo);
  210. }
  211. /**
  212. * 表单信息(详情页)
  213. *
  214. * @param id 主键
  215. * @return ignore
  216. */
  217. @Operation(summary = "表单信息(详情页)")
  218. @Parameters({
  219. @Parameter(name = "id", description = "主键", required = true)
  220. })
  221. @SaCheckPermission("msgCenter.msgTemplate")
  222. @GetMapping("/detail/{id}")
  223. public ActionResult<MessageTemplateConfigInfoVO> detailInfo(@PathVariable("id") String id) {
  224. MessageTemplateConfigEntity entity = messageTemplateConfigService.getInfo(id);
  225. UserEntity userEntity = new UserEntity();
  226. MessageTemplateConfigInfoVO vo = JsonUtil.getJsonToBean(entity, MessageTemplateConfigInfoVO.class);
  227. //子表数据转换
  228. List<TemplateParamEntity> BaseTemplateParamList = messageTemplateConfigService.getTemplateParamList(id);
  229. // for (TemplateParamEntity basetemplateparamEntity : BaseTemplateParamList) {
  230. // }
  231. vo.setTemplateParamList(BaseTemplateParamList);
  232. List<SmsFieldEntity> BaseSmsFieldList = messageTemplateConfigService.getSmsFieldList(id);
  233. // for (SmsFieldEntity basesmsfieldEntity : BaseSmsFieldList) {
  234. // }
  235. vo.setSmsFieldList(BaseSmsFieldList);
  236. return ActionResult.success(vo);
  237. }
  238. /**
  239. * 更新
  240. *
  241. * @param id 主键
  242. * @param messageTemplateConfigForm 消息模板页模型
  243. * @return
  244. */
  245. @Operation(summary = "更新")
  246. @Parameters({
  247. @Parameter(name = "id", description = "主键", required = true),
  248. @Parameter(name = "messageTemplateConfigForm", description = "消息模板页模型", required = true)
  249. })
  250. @SaCheckPermission("msgCenter.msgTemplate")
  251. @PutMapping("/{id}")
  252. @Transactional
  253. public ActionResult update(@PathVariable("id") String id, @RequestBody @Valid MessageTemplateConfigForm messageTemplateConfigForm) throws DataException {
  254. boolean b = messageTemplateConfigService.checkForm(messageTemplateConfigForm, 0, messageTemplateConfigForm.getId());
  255. if (b) {
  256. return ActionResult.fail(MsgCode.EXIST002.get());
  257. }
  258. if(!"1".equals(messageTemplateConfigForm.getTemplateType())){
  259. if(messageTemplateConfigForm.getEnCode().contains("MBXT")){
  260. return ActionResult.fail(MsgCode.MSERR114.get());
  261. }
  262. }
  263. //判断配置是否被引用
  264. if("0".equals(String.valueOf(messageTemplateConfigForm.getEnabledMark()))){
  265. if(sendConfigTemplateService.isUsedTemplate(messageTemplateConfigForm.getId())) {
  266. return ActionResult.fail(MsgCode.FA049.get());
  267. }
  268. }
  269. if (messageTemplateConfigForm.getSmsFieldList() != null && "7".equals(messageTemplateConfigForm.getMessageType())) {
  270. List<SmsFieldEntity> SmsFieldList = JsonUtil.getJsonToList(messageTemplateConfigForm.getSmsFieldList(), SmsFieldEntity.class);
  271. List<SmsFieldEntity> list = SmsFieldList.stream().filter(t->StringUtil.isNotEmpty(String.valueOf(t.getIsTitle())) &&!"null".equals(String.valueOf(t.getIsTitle())) && t.getIsTitle()==1).collect(Collectors.toList());
  272. if (list != null) {
  273. if(list.size() > 1) {
  274. return ActionResult.fail(MsgCode.MSERR117.get());
  275. }
  276. }else {
  277. return ActionResult.fail(MsgCode.MSERR118.get());
  278. }
  279. }
  280. UserInfo userInfo = UserProvider.getUser();
  281. MessageTemplateConfigEntity entity = messageTemplateConfigService.getInfo(id);
  282. if (entity != null) {
  283. MessageTemplateConfigEntity subentity = JsonUtil.getJsonToBean(messageTemplateConfigForm, MessageTemplateConfigEntity.class);
  284. subentity.setCreatorTime(entity.getCreatorTime());
  285. subentity.setCreatorUserId(entity.getCreatorUserId());
  286. subentity.setLastModifyTime(DateUtil.getNowDate());
  287. subentity.setLastModifyUserId(userInfo.getUserId());
  288. if("1".equals(subentity.getMessageType()) && "2".equals(subentity.getMessageSource())){
  289. subentity.setContent(null);
  290. }
  291. boolean b1 = messageTemplateConfigService.updateById(subentity);
  292. if (!b1) {
  293. return ActionResult.fail(MsgCode.VS405.get());
  294. }
  295. //明细表数据更新
  296. List<TemplateParamEntity> addParamList = new ArrayList<>();
  297. List<TemplateParamEntity> updParamList = new ArrayList<>();
  298. List<TemplateParamEntity> delParamList = new ArrayList<>();
  299. if (messageTemplateConfigForm.getTemplateParamList() != null) {
  300. List<TemplateParamEntity> templateParamList = JsonUtil.getJsonToList(messageTemplateConfigForm.getTemplateParamList(), TemplateParamEntity.class);
  301. for (TemplateParamEntity entitys : templateParamList) {
  302. if (StringUtil.isNotBlank(entitys.getId()) && !"null".equals(entitys.getId())) {
  303. TemplateParamEntity paramEntity = templateParamService.getInfo(entitys.getId());
  304. if (paramEntity != null) {
  305. paramEntity.setId(entitys.getId());
  306. paramEntity.setTemplateId(entitys.getTemplateId());
  307. paramEntity.setField(entitys.getField());
  308. paramEntity.setFieldName(entitys.getFieldName());
  309. paramEntity.setCreatorUserId(entity.getCreatorUserId());
  310. paramEntity.setCreatorTime(entitys.getCreatorTime());
  311. paramEntity.setLastModifyUserId(userInfo.getUserId());
  312. paramEntity.setLastModifyTime(DateUtil.getNowDate());
  313. updParamList.add(paramEntity);
  314. }
  315. } else {
  316. entitys.setId(RandomUtil.uuId());
  317. entitys.setTemplateId(entity.getId());
  318. entitys.setCreatorUserId(userInfo.getUserId());
  319. entitys.setCreatorTime(DateUtil.getNowDate());
  320. addParamList.add(entitys);
  321. }
  322. }
  323. //删除参数记录
  324. List<TemplateParamEntity> paramEntityList = templateParamService.getDetailListByParentId(entity.getId());
  325. if (paramEntityList != null) {
  326. for (TemplateParamEntity paramEntity : paramEntityList) {
  327. TemplateParamEntity paramEntity1 = templateParamList.stream().filter(t -> t.getId().equals(paramEntity.getId())).findFirst().orElse(null);
  328. if (paramEntity1 == null) {
  329. delParamList.add(paramEntity);
  330. }
  331. }
  332. }
  333. if (addParamList != null && addParamList.size() > 0) {
  334. templateParamService.saveBatch(addParamList);
  335. }
  336. if (updParamList != null && updParamList.size() > 0) {
  337. templateParamService.updateBatchById(updParamList);
  338. }
  339. if (delParamList != null && delParamList.size() > 0) {
  340. templateParamService.removeByIds(delParamList.stream().map(TemplateParamEntity::getId).collect(Collectors.toList()));
  341. }
  342. }
  343. //短信参数明细表数据更新
  344. List<SmsFieldEntity> addSmsList = new ArrayList<>();
  345. List<SmsFieldEntity> updSmsList = new ArrayList<>();
  346. List<SmsFieldEntity> delSmsList = new ArrayList<>();
  347. if (messageTemplateConfigForm.getSmsFieldList() != null) {
  348. List<SmsFieldEntity> smsFieldList = JsonUtil.getJsonToList(messageTemplateConfigForm.getSmsFieldList(), SmsFieldEntity.class);
  349. for (SmsFieldEntity entitys : smsFieldList) {
  350. if (StringUtil.isNotBlank(entitys.getId()) && !"null".equals(entitys.getId())) {
  351. SmsFieldEntity smsFieldEntity = smsFieldService.getInfo(entitys.getId());
  352. if (smsFieldEntity != null) {
  353. smsFieldEntity.setId(entitys.getId());
  354. smsFieldEntity.setTemplateId(entity.getId());
  355. smsFieldEntity.setFieldId(entitys.getFieldId());
  356. smsFieldEntity.setField(entitys.getField());
  357. smsFieldEntity.setSmsField(entitys.getSmsField());
  358. smsFieldEntity.setCreatorTime(entitys.getCreatorTime());
  359. smsFieldEntity.setCreatorUserId(entitys.getCreatorUserId());
  360. smsFieldEntity.setLastModifyTime(DateUtil.getNowDate());
  361. smsFieldEntity.setLastModifyUserId(userInfo.getUserId());
  362. smsFieldEntity.setIsTitle(entitys.getIsTitle());
  363. updSmsList.add(smsFieldEntity);
  364. }
  365. } else {
  366. entitys.setId(RandomUtil.uuId());
  367. entitys.setTemplateId(entity.getId());
  368. entitys.setCreatorTime(DateUtil.getNowDate());
  369. entitys.setCreatorUserId(userInfo.getUserId());
  370. addSmsList.add(entitys);
  371. }
  372. }
  373. //删除短信参数明细表
  374. List<SmsFieldEntity> smsFieldEntityList = smsFieldService.getDetailListByParentId(entity.getId());
  375. if (smsFieldEntityList != null && smsFieldEntityList.size() > 0) {
  376. for (SmsFieldEntity smsFieldEntity : smsFieldEntityList) {
  377. SmsFieldEntity smsFieldEntity1 = smsFieldList.stream().filter(t -> t.getId().equals(smsFieldEntity.getId())).findFirst().orElse(null);
  378. if (smsFieldEntity1 == null) {
  379. delSmsList.add(smsFieldEntity);
  380. }
  381. }
  382. }
  383. if (addSmsList != null && addSmsList.size() > 0) {
  384. smsFieldService.saveBatch(addSmsList);
  385. }
  386. if (updSmsList != null && updSmsList.size() > 0) {
  387. smsFieldService.updateBatchById(updSmsList);
  388. }
  389. if (delSmsList != null && delSmsList.size() > 0) {
  390. smsFieldService.removeByIds(delSmsList.stream().map(SmsFieldEntity::getId).collect(Collectors.toList()));
  391. }
  392. }
  393. return ActionResult.success(MsgCode.SU004.get());
  394. } else {
  395. return ActionResult.fail(MsgCode.FA002.get());
  396. }
  397. }
  398. /**
  399. * 删除
  400. *
  401. * @param id 主键
  402. * @return ignore
  403. */
  404. @Operation(summary = "删除")
  405. @Parameters({
  406. @Parameter(name = "id", description = "主键", required = true)
  407. })
  408. @SaCheckPermission("msgCenter.msgTemplate")
  409. @DeleteMapping("/{id}")
  410. @Transactional
  411. public ActionResult delete(@PathVariable("id") String id) {
  412. MessageTemplateConfigEntity entity = messageTemplateConfigService.getInfo(id);
  413. if (entity != null) {
  414. if(sendConfigTemplateService.isUsedTemplate(entity.getId())) {
  415. return ActionResult.fail(MsgCode.FA050.get());
  416. }
  417. messageTemplateConfigService.delete(entity);
  418. QueryWrapper<TemplateParamEntity> queryWrapperTemplateParam = new QueryWrapper<>();
  419. queryWrapperTemplateParam.lambda().eq(TemplateParamEntity::getTemplateId, entity.getId());
  420. templateParamService.remove(queryWrapperTemplateParam);
  421. QueryWrapper<SmsFieldEntity> queryWrapperSmsField = new QueryWrapper<>();
  422. queryWrapperSmsField.lambda().eq(SmsFieldEntity::getTemplateId, entity.getId());
  423. smsFieldService.remove(queryWrapperSmsField);
  424. }
  425. return ActionResult.success(MsgCode.SU003.get());
  426. }
  427. /**
  428. * 开启或禁用
  429. *
  430. * @param id
  431. * @return
  432. */
  433. @Operation(summary = "开启或禁用")
  434. @Parameters({
  435. @Parameter(name = "id", description = "主键", required = true)
  436. })
  437. @SaCheckPermission("msgCenter.msgTemplate")
  438. @PostMapping("/unable/{id}")
  439. @Transactional
  440. public ActionResult unable(@PathVariable("id") String id) {
  441. MessageTemplateConfigEntity entity = messageTemplateConfigService.getInfo(id);
  442. if (entity != null) {
  443. if("1".equals(String.valueOf(entity.getEnabledMark()))){
  444. entity.setEnabledMark(0);
  445. return ActionResult.success(MsgCode.WF027.get());
  446. }else {
  447. //判断是否被引用
  448. entity.setEnabledMark(1);
  449. return ActionResult.success(MsgCode.WF026.get());
  450. }
  451. }else {
  452. return ActionResult.fail(MsgCode.FA007.get());
  453. }
  454. }
  455. /**
  456. * 复制
  457. *
  458. * @param id
  459. * @return
  460. */
  461. @Operation(summary = "复制")
  462. @Parameters({
  463. @Parameter(name = "id", description = "主键", required = true)
  464. })
  465. @SaCheckPermission("msgCenter.msgTemplate")
  466. @PostMapping("/{id}/Actions/Copy")
  467. @Transactional
  468. public ActionResult copy(@PathVariable("id") String id) {
  469. UserInfo userInfo = UserProvider.getUser();
  470. MessageTemplateConfigEntity entity = messageTemplateConfigService.getInfo(id);
  471. if (entity != null) {
  472. entity.setEnabledMark(0);
  473. String copyNum = UUID.randomUUID().toString().substring(0, 5);
  474. entity.setFullName(entity.getFullName()+".副本"+copyNum);
  475. entity.setEnCode(entity.getEnCode()+copyNum);
  476. entity.setCreatorTime(DateUtil.getNowDate());
  477. entity.setCreatorUserId(userInfo.getUserId());
  478. entity.setLastModifyTime(null);
  479. entity.setLastModifyUserId(null);
  480. entity.setTemplateType("0");
  481. entity.setId(RandomUtil.uuId());
  482. MessageTemplateConfigEntity copyEntity = JsonUtil.getJsonToBean(entity, MessageTemplateConfigEntity.class);
  483. if(copyEntity.getEnCode().length()>50 || copyEntity.getFullName().length()>50){
  484. return ActionResult.fail(MsgCode.PRI006.get());
  485. }
  486. messageTemplateConfigService.create(copyEntity);
  487. List<TemplateParamEntity> copyParamList = new ArrayList<>();
  488. List<TemplateParamEntity> baseParamList = templateParamService.getDetailListByParentId(id);
  489. if(baseParamList != null && baseParamList.size()>0){
  490. for(TemplateParamEntity entitys : baseParamList){
  491. entitys.setId(RandomUtil.uuId());
  492. entitys.setTemplateId(copyEntity.getId());
  493. entitys.setCreatorTime(DateUtil.getNowDate());
  494. entitys.setCreatorUserId(userInfo.getUserId());
  495. entitys.setLastModifyTime(null);
  496. entitys.setLastModifyUserId(null);
  497. copyParamList.add(entitys);
  498. }
  499. }
  500. if(copyParamList != null && copyParamList.size()>0) {
  501. templateParamService.saveBatch(copyParamList);
  502. }
  503. List<SmsFieldEntity> copySmsList = new ArrayList<>();
  504. List<SmsFieldEntity> baseSmsFieldList = smsFieldService.getDetailListByParentId(id);
  505. if(baseSmsFieldList != null && baseSmsFieldList.size()>0){
  506. for(SmsFieldEntity entitys : baseSmsFieldList){
  507. entitys.setId(RandomUtil.uuId());
  508. entitys.setTemplateId(copyEntity.getId());
  509. entitys.setCreatorTime(DateUtil.getNowDate());
  510. entitys.setCreatorUserId(userInfo.getUserId());
  511. entitys.setLastModifyTime(null);
  512. entitys.setLastModifyUserId(null);
  513. copySmsList.add(entitys);
  514. }
  515. }
  516. if(copySmsList != null && copySmsList.size()>0){
  517. smsFieldService.saveBatch(copySmsList);
  518. }
  519. return ActionResult.success(MsgCode.SU007.get());
  520. }else {
  521. return ActionResult.fail(MsgCode.FA004.get());
  522. }
  523. }
  524. /**
  525. * 导出消息模板
  526. *
  527. * @param id 消息模板id
  528. * @return ignore
  529. */
  530. @Operation(summary = "导出")
  531. @GetMapping("/{id}/Action/Export")
  532. public ActionResult export(@PathVariable String id) {
  533. MessageTemplateConfigEntity entity = messageTemplateConfigService.getInfo(id);
  534. MessageTemplateConfigInfoVO vo = JsonUtil.getJsonToBean(entity, MessageTemplateConfigInfoVO.class);
  535. //子表
  536. List<TemplateParamEntity> BaseTemplateParamList = messageTemplateConfigService.getTemplateParamList(id);
  537. vo.setTemplateParamList(BaseTemplateParamList);
  538. List<SmsFieldEntity> BaseSmsFieldList = messageTemplateConfigService.getSmsFieldList(id);
  539. vo.setSmsFieldList(BaseSmsFieldList);
  540. //导出文件
  541. DownloadVO downloadVO = fileExport.exportFile(vo, FileTypeConstant.TEMPORARY, entity.getFullName(), ModuleTypeEnum.MESSAGE_TEMPLATE.getTableName());
  542. return ActionResult.success(downloadVO);
  543. }
  544. /**
  545. * 导入消息模板
  546. *
  547. * @param multipartFile 备份json文件
  548. * @return 执行结果标识
  549. */
  550. @Operation(summary = "导入")
  551. @PostMapping(value = "/Action/Import", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
  552. public ActionResult importData(@RequestPart("file") MultipartFile multipartFile) throws DataException {
  553. UserInfo userInfo = UserProvider.getUser();
  554. //判断是否为.json结尾
  555. if (FileUtil.existsSuffix(multipartFile, ModuleTypeEnum.MESSAGE_TEMPLATE.getTableName())) {
  556. return ActionResult.fail(MsgCode.IMP002.get());
  557. }
  558. //获取文件内容
  559. String fileContent = FileUtil.getFileContent(multipartFile);
  560. MessageTemplateConfigInfoVO infoVO = JsonUtil.getJsonToBean(fileContent, MessageTemplateConfigInfoVO.class);
  561. MessageTemplateConfigEntity entity = JsonUtil.getJsonToBean(infoVO, MessageTemplateConfigEntity.class);
  562. entity.setCreatorUserId(userInfo.getUserId());
  563. entity.setCreatorTime(DateUtil.getNowDate());
  564. //子表数据导入
  565. if (infoVO.getTemplateParamList() != null && infoVO.getTemplateParamList().size()>0) {
  566. List<TemplateParamEntity> templateParamList = JsonUtil.getJsonToList(infoVO.getTemplateParamList(), TemplateParamEntity.class);
  567. templateParamService.saveBatch(templateParamList);
  568. }
  569. if(infoVO.getSmsFieldList() != null && infoVO.getSmsFieldList().size()>0){
  570. List<SmsFieldEntity> smsFieldList = JsonUtil.getJsonToList(infoVO.getSmsFieldList(), SmsFieldEntity.class);
  571. smsFieldService.saveBatch(smsFieldList);
  572. }
  573. return messageTemplateConfigService.ImportData(entity);
  574. }
  575. }