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);
}
}
}