MessageTemplateController.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  1. package jnpf.base.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 io.swagger.v3.oas.annotations.tags.Tag;
  6. import io.swagger.v3.oas.annotations.Operation;
  7. import jnpf.base.ActionResult;
  8. import jnpf.base.Pagination;
  9. import jnpf.base.entity.MessageTemplateEntity;
  10. import jnpf.base.entity.SmsTemplateEntity;
  11. import jnpf.base.model.messagetemplate.*;
  12. import jnpf.base.SmsModel;
  13. import jnpf.base.service.MessageTemplateService;
  14. import jnpf.base.service.SmsTemplateService;
  15. import jnpf.util.message.SmsUtil;
  16. import jnpf.base.vo.PageListVO;
  17. import jnpf.base.vo.PaginationVO;
  18. import jnpf.constant.MsgCode;
  19. import jnpf.permission.entity.UserEntity;
  20. import jnpf.permission.service.UserService;
  21. import jnpf.util.JsonUtil;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.web.bind.annotation.*;
  24. import jakarta.validation.Valid;
  25. import java.util.List;
  26. import java.util.Map;
  27. /**
  28. * 消息模板控制类
  29. *
  30. * @author JNPF开发平台组
  31. * @version V3.1.0
  32. * @copyright 引迈信息技术有限公司(https://www.jnpfsoft.com)
  33. * @date 2021-12-08
  34. */
  35. @Tag(description = "BaseMessageTemplateController", name = "消息模板控制类")
  36. @RestController
  37. @RequestMapping("/api/system/MessageTemplate")
  38. public class MessageTemplateController extends SuperController<MessageTemplateService, MessageTemplateEntity> {
  39. @Autowired
  40. private MessageTemplateService messageTemplateService;
  41. @Autowired
  42. private SmsTemplateService smsTemplateService;
  43. @Autowired
  44. private UserService userService;
  45. /**
  46. * 消息模板列表
  47. *
  48. * @param pagination 分页模型
  49. * @return
  50. */
  51. @Operation(summary = "消息模板列表")
  52. @SaCheckPermission("msgTemplate")
  53. @GetMapping
  54. public ActionResult<PageListVO<MessageTemplateListVO>> list(Pagination pagination) {
  55. List<MessageTemplateEntity> list = messageTemplateService.getList(pagination, false);
  56. List<MessageTemplateListVO> listVO = JsonUtil.getJsonToList(list, MessageTemplateListVO.class);
  57. for (MessageTemplateListVO messageTemplateListVO : listVO) {
  58. StringBuilder noticeMethod = new StringBuilder();
  59. if (messageTemplateListVO.getIsDingTalk() == 1) {
  60. noticeMethod.append("、阿里钉钉");
  61. }
  62. if (messageTemplateListVO.getIsEmail() == 1) {
  63. noticeMethod.append("、电子邮箱");
  64. }
  65. if (messageTemplateListVO.getIsSms() == 1) {
  66. noticeMethod.append("、短信");
  67. }
  68. if (messageTemplateListVO.getIsStationLetter() == 1) {
  69. noticeMethod.append("、站内信");
  70. }
  71. if (messageTemplateListVO.getIsWecom() == 1) {
  72. noticeMethod.append("、企业微信");
  73. }
  74. if (noticeMethod.length() > 0) {
  75. messageTemplateListVO.setNoticeMethod(noticeMethod.toString().replaceFirst("、", ""));
  76. }
  77. if ("1".equals(messageTemplateListVO.getCategory())) {
  78. messageTemplateListVO.setCategory("普通");
  79. } else if ("2".equals(messageTemplateListVO.getCategory())) {
  80. messageTemplateListVO.setCategory("重要");
  81. } else if ("3".equals(messageTemplateListVO.getCategory())) {
  82. messageTemplateListVO.setCategory("紧急");
  83. }
  84. UserEntity entity = userService.getInfo(messageTemplateListVO.getCreatorUserId());
  85. messageTemplateListVO.setCreatorUser(entity!= null ? entity.getRealName() + "/" + entity.getAccount() : null);
  86. }
  87. PaginationVO paginationVO = JsonUtil.getJsonToBean(pagination, PaginationVO.class);
  88. return ActionResult.page(listVO, paginationVO);
  89. }
  90. /**
  91. * 消息模板下拉框
  92. *
  93. * @param pagination 分页模型
  94. * @return
  95. */
  96. @Operation(summary = "消息模板下拉框")
  97. @GetMapping("/Selector")
  98. public ActionResult selector(Pagination pagination) {
  99. List<MessageTemplateEntity> list = messageTemplateService.getList(pagination, true);
  100. for (MessageTemplateEntity entity : list) {
  101. if ("1".equals(entity.getCategory())) {
  102. entity.setCategory("普通");
  103. } else if ("2".equals(entity.getCategory())) {
  104. entity.setCategory("重要");
  105. } else if ("3".equals(entity.getCategory())) {
  106. entity.setCategory("紧急");
  107. }
  108. }
  109. List<MessageTemplateSelector> listVO = JsonUtil.getJsonToList(list, MessageTemplateSelector.class);
  110. PaginationVO paginationVO = JsonUtil.getJsonToBean(pagination, PaginationVO.class);
  111. return ActionResult.page(listVO, paginationVO);
  112. }
  113. /**
  114. * 获取消息模板
  115. *
  116. * @param id
  117. * @return
  118. */
  119. @Operation(summary = "获取消息模板")
  120. @Parameter(name = "id", description = "主键", required = true)
  121. @GetMapping("/{id}")
  122. public ActionResult<MessageTemplateVO> info(@PathVariable("id") String id) {
  123. MessageTemplateEntity entity = messageTemplateService.getInfo(id);
  124. MessageTemplateVO vo = JsonUtil.getJsonToBean(entity, MessageTemplateVO.class);
  125. SmsTemplateEntity info = smsTemplateService.getInfo(vo.getSmsId());
  126. vo.setSmsTemplateName(info != null ? info.getFullName() : null);
  127. return ActionResult.success(vo);
  128. }
  129. /**
  130. * 获取消息模板参数
  131. *
  132. * @param id 主键
  133. * @return
  134. */
  135. @Operation(summary = "获取消息模板参数")
  136. @Parameter(name = "id", description = "主键", required = true)
  137. @GetMapping("/getTemplate/{id}")
  138. public ActionResult<?> getParameter(@PathVariable("id") String id) {
  139. MessageTemplateEntity entity = messageTemplateService.getInfo(id);
  140. if (entity == null) {
  141. return ActionResult.fail(MsgCode.SYS015.get());
  142. }
  143. // 获取参数
  144. String templateJson = entity.getTemplateJson();
  145. Map<String, Object> map = JsonUtil.stringToMap(templateJson);
  146. // 如果是短信,获取短信模板参数
  147. if (entity.getIsSms() == 1) {
  148. SmsModel smsModel = smsTemplateService.getSmsConfig();
  149. String smsId = entity.getSmsId();
  150. SmsTemplateEntity info = smsTemplateService.getInfo(smsId);
  151. List<String> list = SmsUtil.querySmsTemplateRequest(info.getCompany(), smsModel, info.getEndpoint(), info.getRegion(), info.getTemplateId());
  152. for (String key : list) {
  153. map.put(key, null);
  154. }
  155. }
  156. return ActionResult.success(map);
  157. }
  158. /**
  159. * 新建
  160. *
  161. * @param messageTemplateCrForm 新建消息模板
  162. * @return
  163. */
  164. @Operation(summary = "新建")
  165. @Parameter(name = "messageTemplateCrForm", description = "新建消息模板", required = true)
  166. @SaCheckPermission("msgTemplate")
  167. @PostMapping
  168. public ActionResult<String> create(@RequestBody @Valid MessageTemplateCrForm messageTemplateCrForm) {
  169. MessageTemplateEntity entity = JsonUtil.getJsonToBean(messageTemplateCrForm, MessageTemplateEntity.class);
  170. if (messageTemplateService.isExistByFullName(entity.getFullName(), entity.getId())) {
  171. return ActionResult.fail(MsgCode.EXIST001.get());
  172. }
  173. if (messageTemplateService.isExistByEnCode(entity.getEnCode(), entity.getId())) {
  174. return ActionResult.fail(MsgCode.EXIST002.get());
  175. }
  176. messageTemplateService.create(entity);
  177. return ActionResult.success(MsgCode.SU001.get());
  178. }
  179. /**
  180. * 修改
  181. *
  182. * @param id 主键
  183. * @param messageTemplateUpForm 修改消息模板
  184. * @return
  185. */
  186. @Operation(summary = "修改")
  187. @Parameters({
  188. @Parameter(name = "id", description = "主键", required = true),
  189. @Parameter(name = "messageTemplateUpForm", description = "修改消息模板", required = true)
  190. })
  191. @SaCheckPermission("msgTemplate")
  192. @PutMapping("/{id}")
  193. public ActionResult<String> update(@PathVariable("id") String id, @RequestBody @Valid MessageTemplateUpForm messageTemplateUpForm) {
  194. MessageTemplateEntity entity = JsonUtil.getJsonToBean(messageTemplateUpForm, MessageTemplateEntity.class);
  195. if (entity != null) {
  196. if (messageTemplateService.isExistByFullName(entity.getFullName(), id)) {
  197. return ActionResult.fail(MsgCode.EXIST001.get());
  198. }
  199. if (messageTemplateService.isExistByEnCode(entity.getEnCode(), id)) {
  200. return ActionResult.fail(MsgCode.EXIST002.get());
  201. }
  202. boolean flag = messageTemplateService.update(id, entity);
  203. if (!flag) {
  204. return ActionResult.fail(MsgCode.FA002.get());
  205. }
  206. return ActionResult.success(MsgCode.SU004.get());
  207. }
  208. return ActionResult.fail(MsgCode.FA002.get());
  209. }
  210. /**
  211. * 删除
  212. *
  213. * @param id 主键
  214. * @return
  215. */
  216. @Operation(summary = "删除")
  217. @Parameters({
  218. @Parameter(name = "id", description = "主键", required = true)
  219. })
  220. @SaCheckPermission("msgTemplate")
  221. @DeleteMapping("/{id}")
  222. public ActionResult<String> delete(@PathVariable("id") String id) {
  223. MessageTemplateEntity entity = messageTemplateService.getInfo(id);
  224. if (entity == null) {
  225. return ActionResult.fail(MsgCode.FA003.get());
  226. }
  227. messageTemplateService.delete(entity);
  228. return ActionResult.success(MsgCode.SU003.get());
  229. }
  230. /**
  231. * 修改状态
  232. *
  233. * @param id 主键
  234. * @return
  235. */
  236. @Operation(summary = "修改状态")
  237. @Parameters({
  238. @Parameter(name = "id", description = "主键", required = true)
  239. })
  240. @SaCheckPermission("msgTemplate")
  241. @PutMapping("/{id}/Actions/State")
  242. public ActionResult<String> update(@PathVariable("id") String id) {
  243. MessageTemplateEntity entity = messageTemplateService.getInfo(id);
  244. if (entity != null) {
  245. if (entity.getEnabledMark() == 0) {
  246. entity.setEnabledMark(1);
  247. } else {
  248. entity.setEnabledMark(0);
  249. }
  250. boolean flag = messageTemplateService.update(id, entity);
  251. if (!flag) {
  252. return ActionResult.fail(MsgCode.FA002.get());
  253. }
  254. return ActionResult.success(MsgCode.SU004.get());
  255. }
  256. return ActionResult.success(MsgCode.FA002.get());
  257. }
  258. }