package net.mingsoft.tf.action; import java.util.List; import java.io.File; import java.util.ArrayList; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; import cn.hutool.core.util.ObjectUtil; import java.util.*; import net.mingsoft.base.entity.ResultData; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import java.util.stream.Collectors; import org.springframework.web.bind.annotation.*; import net.mingsoft.tf.biz.IMessageBiz; import net.mingsoft.tf.entity.MessageEntity; import net.mingsoft.base.entity.BaseEntity; import net.mingsoft.basic.util.BasicUtil; import net.mingsoft.basic.util.StringUtil; import net.mingsoft.basic.bean.EUListBean; import net.mingsoft.basic.annotation.LogAnn; import net.mingsoft.basic.constant.e.BusinessTypeEnum; import org.apache.commons.lang3.StringUtils; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameters; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Hidden; import io.swagger.v3.oas.annotations.enums.ParameterIn; /** * 留言管理控制层 * @author 阿白 * 创建日期:2025年12月13日 下午2:14:43
* 历史修订:
*/ @Tag(name = "后台-留言接口") @Controller("tfMessageAction") @RequestMapping("/${ms.manager.path}/tf/message") public class MessageAction extends net.mingsoft.tf.action.BaseAction{ /** * 注入留言业务层 */ @Autowired private IMessageBiz messageBiz; /** * 返回主界面index */ @Hidden @GetMapping("/index") public String index() { return "/tf/message/index"; } /** * 返回编辑界面message的form */ @Hidden @GetMapping("/form") public String form() { return "/tf/message/form"; } /** * 查询留言列表 * @param message 留言实体 */ @Operation(summary = "查询留言列表接口") @Parameters({ @Parameter(name = "messageName", description = "姓名", in = ParameterIn.QUERY), @Parameter(name = "messageCompany", description = "公司", in = ParameterIn.QUERY), @Parameter(name = "messageEmail", description = "邮箱", in = ParameterIn.QUERY), @Parameter(name = "messageTel", description = "电话", in = ParameterIn.QUERY), @Parameter(name = "messageType", description = "咨询类型", in = ParameterIn.QUERY), @Parameter(name = "messageContent", description = "内容", in = ParameterIn.QUERY), }) @RequestMapping(value ="/list",method = {RequestMethod.GET,RequestMethod.POST}) @ResponseBody @RequiresPermissions("tf:message:view") public ResultData list(@ModelAttribute @Parameter(hidden = true) MessageEntity message) { BasicUtil.startPage(); List messageList = null; if ( message.getSqlWhere() != null){ messageList = messageBiz.query(message); } else { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(message).orderByDesc(MessageEntity::getCreateDate); messageList = messageBiz.list(wrapper); } return ResultData.build().success(new EUListBean(messageList,(int)BasicUtil.endPage(messageList).getTotal())); } /** * 获取留言 * @param message 留言实体 */ @Operation(summary = "获取留言列表接口") @Parameter(name = "id", description = "主键ID", required =true,in = ParameterIn.QUERY) @GetMapping("/get") @ResponseBody @RequiresPermissions("tf:message:view") public ResultData get(@ModelAttribute @Parameter(hidden = true) MessageEntity message) { if (StringUtils.isBlank(message.getId())) { return ResultData.build().error(getResString("err.error",this.getResString("id"))); } MessageEntity _message = (MessageEntity)messageBiz.getById(message.getId()); return ResultData.build().success(_message); } /** * 保存留言 * @param message 留言实体 */ @Operation(summary = "保存留言列表接口") @Parameters({ @Parameter(name = "messageName", description = "姓名", required = false, in = ParameterIn.QUERY), @Parameter(name = "messageCompany", description = "公司", required = false, in = ParameterIn.QUERY), @Parameter(name = "messageEmail", description = "邮箱", required = false, in = ParameterIn.QUERY), @Parameter(name = "messageTel", description = "电话", required = false, in = ParameterIn.QUERY), @Parameter(name = "messageType", description = "咨询类型", required = false, in = ParameterIn.QUERY), @Parameter(name = "messageContent", description = "内容", required = false, in = ParameterIn.QUERY), }) @PostMapping("/save") @ResponseBody @LogAnn(title = "保存留言", businessType = BusinessTypeEnum.INSERT) @RequiresPermissions("tf:message:save") public ResultData save(@ModelAttribute @Parameter(hidden = true) MessageEntity message) { if ( StringUtils.isNotBlank(message.getMessageName()) && !StringUtil.checkLength(message.getMessageName()+"", 0, 255)) { return ResultData.build().error(getResString("err.length", this.getResString("message.name"), "0", "255")); } if ( StringUtils.isNotBlank(message.getMessageCompany()) && !StringUtil.checkLength(message.getMessageCompany()+"", 0, 255)) { return ResultData.build().error(getResString("err.length", this.getResString("message.company"), "0", "255")); } if ( StringUtils.isNotBlank(message.getMessageEmail()) && !StringUtil.checkLength(message.getMessageEmail()+"", 0, 255)) { return ResultData.build().error(getResString("err.length", this.getResString("message.email"), "0", "255")); } if ( StringUtils.isNotBlank(message.getMessageTel()) && !StringUtil.checkLength(message.getMessageTel()+"", 0, 255)) { return ResultData.build().error(getResString("err.length", this.getResString("message.tel"), "0", "255")); } if ( StringUtils.isNotBlank(message.getMessageType()) && !StringUtil.checkLength(message.getMessageType()+"", 0, 255)) { return ResultData.build().error(getResString("err.length", this.getResString("message.type"), "0", "255")); } messageBiz.save(message); return ResultData.build().success(message); } /** * 删除留言 * * @param messages 留言实体 */ @Operation(summary = "批量删除留言列表接口") @PostMapping("/delete") @ResponseBody @LogAnn(title = "删除留言", businessType = BusinessTypeEnum.DELETE) @RequiresPermissions("tf:message:del") public ResultData delete(@RequestBody List messages) { List ids = (List)messages.stream().map((p) -> {return p.getId();}).collect(Collectors.toList()); return this.messageBiz.removeByIds(ids) ? ResultData.build().success() : ResultData.build().error(this.getResString("err.error", new String[]{this.getResString("id")})); } /** * 更新留言列表 * * @param message 留言实体 */ @Operation(summary = "更新留言列表接口") @Parameters({ @Parameter(name = "id", description = "主键ID", required =true,in = ParameterIn.QUERY), @Parameter(name = "messageName", description = "姓名", required = false, in = ParameterIn.QUERY), @Parameter(name = "messageCompany", description = "公司", required = false, in = ParameterIn.QUERY), @Parameter(name = "messageEmail", description = "邮箱", required = false, in = ParameterIn.QUERY), @Parameter(name = "messageTel", description = "电话", required = false, in = ParameterIn.QUERY), @Parameter(name = "messageType", description = "咨询类型", required = false, in = ParameterIn.QUERY), @Parameter(name = "messageContent", description = "内容", required = false, in = ParameterIn.QUERY), }) @PostMapping("/update") @ResponseBody @LogAnn(title = "更新留言", businessType = BusinessTypeEnum.UPDATE) @RequiresPermissions("tf:message:update") public ResultData update(@ModelAttribute @Parameter(hidden = true) MessageEntity message) { //先查询数据是否存在 MessageEntity _message = (MessageEntity)messageBiz.getById(message.getId()); if(_message == null) { return ResultData.build().error(getResString("err.not.exist",message.getId() )); } if ( StringUtils.isNotBlank(message.getMessageName()) && !StringUtil.checkLength(message.getMessageName()+"", 0, 255)) { return ResultData.build().error(getResString("err.length", this.getResString("message.name"), "0", "255")); } if ( StringUtils.isNotBlank(message.getMessageCompany()) && !StringUtil.checkLength(message.getMessageCompany()+"", 0, 255)) { return ResultData.build().error(getResString("err.length", this.getResString("message.company"), "0", "255")); } if ( StringUtils.isNotBlank(message.getMessageEmail()) && !StringUtil.checkLength(message.getMessageEmail()+"", 0, 255)) { return ResultData.build().error(getResString("err.length", this.getResString("message.email"), "0", "255")); } if ( StringUtils.isNotBlank(message.getMessageTel()) && !StringUtil.checkLength(message.getMessageTel()+"", 0, 255)) { return ResultData.build().error(getResString("err.length", this.getResString("message.tel"), "0", "255")); } if ( StringUtils.isNotBlank(message.getMessageType()) && !StringUtil.checkLength(message.getMessageType()+"", 0, 255)) { return ResultData.build().error(getResString("err.length", this.getResString("message.type"), "0", "255")); } messageBiz.updateById(message); return ResultData.build().success(message); } @GetMapping("verify") @ResponseBody public ResultData verify(String fieldName, String fieldValue, String id,String idName) { boolean verify = false; if (StringUtils.isBlank(id)) { verify = super.validated("MESSAGE",fieldName,fieldValue); } else { verify = super.validated("MESSAGE",fieldName,fieldValue,id,idName); } if (verify) { return ResultData.build().success(false); }else { return ResultData.build().success(true); } } }