MessageAction.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. package net.mingsoft.tf.action;
  2. import java.util.List;
  3. import java.io.File;
  4. import java.util.ArrayList;
  5. import java.util.Map;
  6. import java.util.regex.Matcher;
  7. import java.util.regex.Pattern;
  8. import cn.hutool.core.util.ObjectUtil;
  9. import java.util.*;
  10. import net.mingsoft.base.entity.ResultData;
  11. import org.apache.commons.lang3.StringUtils;
  12. import org.apache.shiro.authz.annotation.RequiresPermissions;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.stereotype.Controller;
  15. import org.springframework.web.bind.annotation.RequestMapping;
  16. import org.springframework.web.bind.annotation.ResponseBody;
  17. import org.springframework.web.bind.annotation.ModelAttribute;
  18. import org.springframework.web.bind.annotation.GetMapping;
  19. import org.springframework.web.bind.annotation.PostMapping;
  20. import org.springframework.web.bind.annotation.RequestBody;
  21. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  22. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  23. import java.util.stream.Collectors;
  24. import org.springframework.web.bind.annotation.*;
  25. import net.mingsoft.tf.biz.IMessageBiz;
  26. import net.mingsoft.tf.entity.MessageEntity;
  27. import net.mingsoft.base.entity.BaseEntity;
  28. import net.mingsoft.basic.util.BasicUtil;
  29. import net.mingsoft.basic.util.StringUtil;
  30. import net.mingsoft.basic.bean.EUListBean;
  31. import net.mingsoft.basic.annotation.LogAnn;
  32. import net.mingsoft.basic.constant.e.BusinessTypeEnum;
  33. import org.apache.commons.lang3.StringUtils;
  34. import io.swagger.v3.oas.annotations.tags.Tag;
  35. import io.swagger.v3.oas.annotations.Parameter;
  36. import io.swagger.v3.oas.annotations.Parameters;
  37. import io.swagger.v3.oas.annotations.Operation;
  38. import io.swagger.v3.oas.annotations.Hidden;
  39. import io.swagger.v3.oas.annotations.enums.ParameterIn;
  40. /**
  41. * 留言管理控制层
  42. * @author 阿白
  43. * 创建日期:2025年12月13日 下午2:14:43<br/>
  44. * 历史修订:<br/>
  45. */
  46. @Tag(name = "后台-留言接口")
  47. @Controller("tfMessageAction")
  48. @RequestMapping("/${ms.manager.path}/tf/message")
  49. public class MessageAction extends net.mingsoft.tf.action.BaseAction{
  50. /**
  51. * 注入留言业务层
  52. */
  53. @Autowired
  54. private IMessageBiz messageBiz;
  55. /**
  56. * 返回主界面index
  57. */
  58. @Hidden
  59. @GetMapping("/index")
  60. public String index() {
  61. return "/tf/message/index";
  62. }
  63. /**
  64. * 返回编辑界面message的form
  65. */
  66. @Hidden
  67. @GetMapping("/form")
  68. public String form() {
  69. return "/tf/message/form";
  70. }
  71. /**
  72. * 查询留言列表
  73. * @param message 留言实体
  74. */
  75. @Operation(summary = "查询留言列表接口")
  76. @Parameters({
  77. @Parameter(name = "messageName", description = "姓名", in = ParameterIn.QUERY),
  78. @Parameter(name = "messageCompany", description = "公司", in = ParameterIn.QUERY),
  79. @Parameter(name = "messageEmail", description = "邮箱", in = ParameterIn.QUERY),
  80. @Parameter(name = "messageTel", description = "电话", in = ParameterIn.QUERY),
  81. @Parameter(name = "messageType", description = "咨询类型", in = ParameterIn.QUERY),
  82. @Parameter(name = "messageContent", description = "内容", in = ParameterIn.QUERY),
  83. })
  84. @RequestMapping(value ="/list",method = {RequestMethod.GET,RequestMethod.POST})
  85. @ResponseBody
  86. @RequiresPermissions("tf:message:view")
  87. public ResultData list(@ModelAttribute @Parameter(hidden = true) MessageEntity message) {
  88. BasicUtil.startPage();
  89. List messageList = null;
  90. if ( message.getSqlWhere() != null){
  91. messageList = messageBiz.query(message);
  92. } else {
  93. LambdaQueryWrapper<MessageEntity> wrapper = new LambdaQueryWrapper<>(message).orderByDesc(MessageEntity::getCreateDate);
  94. messageList = messageBiz.list(wrapper);
  95. }
  96. return ResultData.build().success(new EUListBean(messageList,(int)BasicUtil.endPage(messageList).getTotal()));
  97. }
  98. /**
  99. * 获取留言
  100. * @param message 留言实体
  101. */
  102. @Operation(summary = "获取留言列表接口")
  103. @Parameter(name = "id", description = "主键ID", required =true,in = ParameterIn.QUERY)
  104. @GetMapping("/get")
  105. @ResponseBody
  106. @RequiresPermissions("tf:message:view")
  107. public ResultData get(@ModelAttribute @Parameter(hidden = true) MessageEntity message) {
  108. if (StringUtils.isBlank(message.getId())) {
  109. return ResultData.build().error(getResString("err.error",this.getResString("id")));
  110. }
  111. MessageEntity _message = (MessageEntity)messageBiz.getById(message.getId());
  112. return ResultData.build().success(_message);
  113. }
  114. /**
  115. * 保存留言
  116. * @param message 留言实体
  117. */
  118. @Operation(summary = "保存留言列表接口")
  119. @Parameters({
  120. @Parameter(name = "messageName", description = "姓名", required = false, in = ParameterIn.QUERY),
  121. @Parameter(name = "messageCompany", description = "公司", required = false, in = ParameterIn.QUERY),
  122. @Parameter(name = "messageEmail", description = "邮箱", required = false, in = ParameterIn.QUERY),
  123. @Parameter(name = "messageTel", description = "电话", required = false, in = ParameterIn.QUERY),
  124. @Parameter(name = "messageType", description = "咨询类型", required = false, in = ParameterIn.QUERY),
  125. @Parameter(name = "messageContent", description = "内容", required = false, in = ParameterIn.QUERY),
  126. })
  127. @PostMapping("/save")
  128. @ResponseBody
  129. @LogAnn(title = "保存留言", businessType = BusinessTypeEnum.INSERT)
  130. @RequiresPermissions("tf:message:save")
  131. public ResultData save(@ModelAttribute @Parameter(hidden = true) MessageEntity message) {
  132. if ( StringUtils.isNotBlank(message.getMessageName()) && !StringUtil.checkLength(message.getMessageName()+"", 0, 255)) {
  133. return ResultData.build().error(getResString("err.length", this.getResString("message.name"), "0", "255"));
  134. }
  135. if ( StringUtils.isNotBlank(message.getMessageCompany()) && !StringUtil.checkLength(message.getMessageCompany()+"", 0, 255)) {
  136. return ResultData.build().error(getResString("err.length", this.getResString("message.company"), "0", "255"));
  137. }
  138. if ( StringUtils.isNotBlank(message.getMessageEmail()) && !StringUtil.checkLength(message.getMessageEmail()+"", 0, 255)) {
  139. return ResultData.build().error(getResString("err.length", this.getResString("message.email"), "0", "255"));
  140. }
  141. if ( StringUtils.isNotBlank(message.getMessageTel()) && !StringUtil.checkLength(message.getMessageTel()+"", 0, 255)) {
  142. return ResultData.build().error(getResString("err.length", this.getResString("message.tel"), "0", "255"));
  143. }
  144. if ( StringUtils.isNotBlank(message.getMessageType()) && !StringUtil.checkLength(message.getMessageType()+"", 0, 255)) {
  145. return ResultData.build().error(getResString("err.length", this.getResString("message.type"), "0", "255"));
  146. }
  147. messageBiz.save(message);
  148. return ResultData.build().success(message);
  149. }
  150. /**
  151. * 删除留言
  152. *
  153. * @param messages 留言实体
  154. */
  155. @Operation(summary = "批量删除留言列表接口")
  156. @PostMapping("/delete")
  157. @ResponseBody
  158. @LogAnn(title = "删除留言", businessType = BusinessTypeEnum.DELETE)
  159. @RequiresPermissions("tf:message:del")
  160. public ResultData delete(@RequestBody List<MessageEntity> messages) {
  161. List<String> ids = (List)messages.stream().map((p) -> {return p.getId();}).collect(Collectors.toList());
  162. return this.messageBiz.removeByIds(ids) ? ResultData.build().success() : ResultData.build().error(this.getResString("err.error", new String[]{this.getResString("id")}));
  163. }
  164. /**
  165. * 更新留言列表
  166. *
  167. * @param message 留言实体
  168. */
  169. @Operation(summary = "更新留言列表接口")
  170. @Parameters({
  171. @Parameter(name = "id", description = "主键ID", required =true,in = ParameterIn.QUERY),
  172. @Parameter(name = "messageName", description = "姓名", required = false, in = ParameterIn.QUERY),
  173. @Parameter(name = "messageCompany", description = "公司", required = false, in = ParameterIn.QUERY),
  174. @Parameter(name = "messageEmail", description = "邮箱", required = false, in = ParameterIn.QUERY),
  175. @Parameter(name = "messageTel", description = "电话", required = false, in = ParameterIn.QUERY),
  176. @Parameter(name = "messageType", description = "咨询类型", required = false, in = ParameterIn.QUERY),
  177. @Parameter(name = "messageContent", description = "内容", required = false, in = ParameterIn.QUERY),
  178. })
  179. @PostMapping("/update")
  180. @ResponseBody
  181. @LogAnn(title = "更新留言", businessType = BusinessTypeEnum.UPDATE)
  182. @RequiresPermissions("tf:message:update")
  183. public ResultData update(@ModelAttribute @Parameter(hidden = true) MessageEntity message) {
  184. //先查询数据是否存在
  185. MessageEntity _message = (MessageEntity)messageBiz.getById(message.getId());
  186. if(_message == null) {
  187. return ResultData.build().error(getResString("err.not.exist",message.getId() ));
  188. }
  189. if ( StringUtils.isNotBlank(message.getMessageName()) && !StringUtil.checkLength(message.getMessageName()+"", 0, 255)) {
  190. return ResultData.build().error(getResString("err.length", this.getResString("message.name"), "0", "255"));
  191. }
  192. if ( StringUtils.isNotBlank(message.getMessageCompany()) && !StringUtil.checkLength(message.getMessageCompany()+"", 0, 255)) {
  193. return ResultData.build().error(getResString("err.length", this.getResString("message.company"), "0", "255"));
  194. }
  195. if ( StringUtils.isNotBlank(message.getMessageEmail()) && !StringUtil.checkLength(message.getMessageEmail()+"", 0, 255)) {
  196. return ResultData.build().error(getResString("err.length", this.getResString("message.email"), "0", "255"));
  197. }
  198. if ( StringUtils.isNotBlank(message.getMessageTel()) && !StringUtil.checkLength(message.getMessageTel()+"", 0, 255)) {
  199. return ResultData.build().error(getResString("err.length", this.getResString("message.tel"), "0", "255"));
  200. }
  201. if ( StringUtils.isNotBlank(message.getMessageType()) && !StringUtil.checkLength(message.getMessageType()+"", 0, 255)) {
  202. return ResultData.build().error(getResString("err.length", this.getResString("message.type"), "0", "255"));
  203. }
  204. messageBiz.updateById(message);
  205. return ResultData.build().success(message);
  206. }
  207. @GetMapping("verify")
  208. @ResponseBody
  209. public ResultData verify(String fieldName, String fieldValue, String id,String idName) {
  210. boolean verify = false;
  211. if (StringUtils.isBlank(id)) {
  212. verify = super.validated("MESSAGE",fieldName,fieldValue);
  213. } else {
  214. verify = super.validated("MESSAGE",fieldName,fieldValue,id,idName);
  215. }
  216. if (verify) {
  217. return ResultData.build().success(false);
  218. }else {
  219. return ResultData.build().success(true);
  220. }
  221. }
  222. }