Browse Source

导出敏感词模板

导入值敏感字
develop
Mr.Wang 10 months ago
parent
commit
67970ce70d
  1. 59
      zc-business/src/main/java/com/zc/business/controller/DcInfoBoardVocabularyController.java
  2. 27
      zc-business/src/main/java/com/zc/business/mapper/DcInfoBoardVocabularyMapper.java
  3. 22
      zc-business/src/main/java/com/zc/business/service/IDcInfoBoardVocabularyService.java
  4. 78
      zc-business/src/main/java/com/zc/business/service/impl/DcInfoBoardVocabularyServiceImpl.java
  5. BIN
      zc-business/src/main/resources/excelTemplate/敏感字模板.xlsx
  6. 16
      zc-business/src/main/resources/mapper/business/DcInfoBoardVocabularyMapper.xml

59
zc-business/src/main/java/com/zc/business/controller/DcInfoBoardVocabularyController.java

@ -1,33 +1,28 @@
package com.zc.business.controller; package com.zc.business.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.zc.business.domain.DcInfoBoardVocabulary; import com.zc.business.domain.DcInfoBoardVocabulary;
import com.zc.business.service.IDcInfoBoardVocabularyService; import com.zc.business.service.IDcInfoBoardVocabularyService;
import com.ruoyi.common.utils.poi.ExcelUtil; import io.swagger.annotations.Api;
import com.ruoyi.common.core.page.TableDataInfo; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.util.List;
/** /**
* 情报板敏感字管理Controller * 情报板敏感字管理Controller
* *
* @author ruoyi * @author ruoyi
* @date 2024-01-05 * @date 2024-01-05
*/ */
@ -66,6 +61,32 @@ public class DcInfoBoardVocabularyController extends BaseController
util.exportExcel(response, list, "情报板敏感字管理数据"); util.exportExcel(response, list, "情报板敏感字管理数据");
} }
@ApiOperation("导出敏感词模板")
@Log(title = "导出敏感词模板", businessType = BusinessType.EXPORT)
@PostMapping("/exportModel")
public void exportModel(HttpServletResponse response)
{
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("utf-8");
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("excelTemplate/敏感字模板.xlsx");
try {
XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
workbook.write(response.getOutputStream());
}catch (Exception e){
e.printStackTrace();
}
}
/**
* 导入值敏感字
*/
@ApiOperation("导入值敏感字")
@PostMapping("/importVocabulary")
public AjaxResult importVocabulary(MultipartFile file) throws Exception{
return dcInfoBoardVocabularyService.importVocabulary(file);
}
/** /**
* 获取情报板敏感字管理详细信息 * 获取情报板敏感字管理详细信息
*/ */

27
zc-business/src/main/java/com/zc/business/mapper/DcInfoBoardVocabularyMapper.java

@ -1,29 +1,34 @@
package com.zc.business.mapper; package com.zc.business.mapper;
import java.util.List;
import com.zc.business.domain.DcInfoBoardVocabulary; import com.zc.business.domain.DcInfoBoardVocabulary;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* 情报板敏感字管理Mapper接口 * 情报板敏感字管理Mapper接口
* *
* @author ruoyi * @author ruoyi
* @date 2024-01-05 * @date 2024-01-05
*/ */
public interface DcInfoBoardVocabularyMapper public interface DcInfoBoardVocabularyMapper {
{
/** /**
* 查询情报板敏感字管理 * 查询情报板敏感字管理
* *
* @param id 情报板敏感字管理主键 * @param id 情报板敏感字管理主键
* @return 情报板敏感字管理 * @return 情报板敏感字管理
*/ */
public DcInfoBoardVocabulary selectDcInfoBoardVocabularyById(Long id); public DcInfoBoardVocabulary selectDcInfoBoardVocabularyById(Long id);
int selectWordNum(DcInfoBoardVocabulary dcInfoBoardVocabulary); int selectWordNum(DcInfoBoardVocabulary dcInfoBoardVocabulary);
/**
* 导入敏感字
*/
int importVocabulary(List<DcInfoBoardVocabulary> dcInfoBoardVocabularyList);
/** /**
* 查询情报板敏感字管理列表 * 查询情报板敏感字管理列表
* *
* @param dcInfoBoardVocabulary 情报板敏感字管理 * @param dcInfoBoardVocabulary 情报板敏感字管理
* @return 情报板敏感字管理集合 * @return 情报板敏感字管理集合
*/ */
@ -31,7 +36,7 @@ public interface DcInfoBoardVocabularyMapper
/** /**
* 新增情报板敏感字管理 * 新增情报板敏感字管理
* *
* @param dcInfoBoardVocabulary 情报板敏感字管理 * @param dcInfoBoardVocabulary 情报板敏感字管理
* @return 结果 * @return 结果
*/ */
@ -39,7 +44,7 @@ public interface DcInfoBoardVocabularyMapper
/** /**
* 修改情报板敏感字管理 * 修改情报板敏感字管理
* *
* @param dcInfoBoardVocabulary 情报板敏感字管理 * @param dcInfoBoardVocabulary 情报板敏感字管理
* @return 结果 * @return 结果
*/ */
@ -47,7 +52,7 @@ public interface DcInfoBoardVocabularyMapper
/** /**
* 删除情报板敏感字管理 * 删除情报板敏感字管理
* *
* @param id 情报板敏感字管理主键 * @param id 情报板敏感字管理主键
* @return 结果 * @return 结果
*/ */
@ -55,7 +60,7 @@ public interface DcInfoBoardVocabularyMapper
/** /**
* 批量删除情报板敏感字管理 * 批量删除情报板敏感字管理
* *
* @param ids 需要删除的数据主键集合 * @param ids 需要删除的数据主键集合
* @return 结果 * @return 结果
*/ */

22
zc-business/src/main/java/com/zc/business/service/IDcInfoBoardVocabularyService.java

@ -4,18 +4,19 @@ import java.util.List;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.zc.business.domain.DcInfoBoardVocabulary; import com.zc.business.domain.DcInfoBoardVocabulary;
import org.springframework.web.multipart.MultipartFile;
/** /**
* 情报板敏感字管理Service接口 * 情报板敏感字管理Service接口
* *
* @author ruoyi * @author ruoyi
* @date 2024-01-05 * @date 2024-01-05
*/ */
public interface IDcInfoBoardVocabularyService public interface IDcInfoBoardVocabularyService
{ {
/** /**
* 查询情报板敏感字管理 * 查询情报板敏感字管理
* *
* @param id 情报板敏感字管理主键 * @param id 情报板敏感字管理主键
* @return 情报板敏感字管理 * @return 情报板敏感字管理
*/ */
@ -23,15 +24,20 @@ public interface IDcInfoBoardVocabularyService
/** /**
* 查询情报板敏感字管理列表 * 查询情报板敏感字管理列表
* *
* @param dcInfoBoardVocabulary 情报板敏感字管理 * @param dcInfoBoardVocabulary 情报板敏感字管理
* @return 情报板敏感字管理集合 * @return 情报板敏感字管理集合
*/ */
List<DcInfoBoardVocabulary> selectDcInfoBoardVocabularyList(DcInfoBoardVocabulary dcInfoBoardVocabulary); List<DcInfoBoardVocabulary> selectDcInfoBoardVocabularyList(DcInfoBoardVocabulary dcInfoBoardVocabulary);
/**
* 导入敏感字
*/
AjaxResult importVocabulary(MultipartFile file) throws Exception;
/** /**
* 新增情报板敏感字管理 * 新增情报板敏感字管理
* *
* @param dcInfoBoardVocabulary 情报板敏感字管理 * @param dcInfoBoardVocabulary 情报板敏感字管理
* @return 结果 * @return 结果
*/ */
@ -39,7 +45,7 @@ public interface IDcInfoBoardVocabularyService
/** /**
* 修改情报板敏感字管理 * 修改情报板敏感字管理
* *
* @param dcInfoBoardVocabulary 情报板敏感字管理 * @param dcInfoBoardVocabulary 情报板敏感字管理
* @return 结果 * @return 结果
*/ */
@ -47,7 +53,7 @@ public interface IDcInfoBoardVocabularyService
/** /**
* 批量删除情报板敏感字管理 * 批量删除情报板敏感字管理
* *
* @param ids 需要删除的情报板敏感字管理主键集合 * @param ids 需要删除的情报板敏感字管理主键集合
* @return 结果 * @return 结果
*/ */
@ -55,7 +61,7 @@ public interface IDcInfoBoardVocabularyService
/** /**
* 删除情报板敏感字管理信息 * 删除情报板敏感字管理信息
* *
* @param id 情报板敏感字管理主键 * @param id 情报板敏感字管理主键
* @return 结果 * @return 结果
*/ */

78
zc-business/src/main/java/com/zc/business/service/impl/DcInfoBoardVocabularyServiceImpl.java

@ -1,15 +1,23 @@
package com.zc.business.service.impl; package com.zc.business.service.impl;
import java.net.URLDecoder;
import java.util.List;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired; import com.ruoyi.common.utils.StringUtils;
import org.springframework.stereotype.Service; import com.ruoyi.common.utils.bean.BeanValidators;
import com.zc.business.mapper.DcInfoBoardVocabularyMapper; import com.ruoyi.common.utils.poi.ExcelUtil;
import com.zc.business.domain.DcInfoBoardVocabulary; import com.zc.business.domain.DcInfoBoardVocabulary;
import com.zc.business.mapper.DcInfoBoardVocabularyMapper;
import com.zc.business.service.IDcInfoBoardVocabularyService; import com.zc.business.service.IDcInfoBoardVocabularyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.validation.Validator;
import java.net.URLDecoder;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/** /**
* 情报板敏感字管理Service业务层处理 * 情报板敏感字管理Service业务层处理
@ -18,11 +26,13 @@ import com.zc.business.service.IDcInfoBoardVocabularyService;
* @date 2024-01-05 * @date 2024-01-05
*/ */
@Service @Service
public class DcInfoBoardVocabularyServiceImpl implements IDcInfoBoardVocabularyService public class DcInfoBoardVocabularyServiceImpl implements IDcInfoBoardVocabularyService {
{
@Autowired @Autowired
private DcInfoBoardVocabularyMapper dcInfoBoardVocabularyMapper; private DcInfoBoardVocabularyMapper dcInfoBoardVocabularyMapper;
@Resource
protected Validator validator;
/** /**
* 查询情报板敏感字管理 * 查询情报板敏感字管理
* *
@ -30,8 +40,7 @@ public class DcInfoBoardVocabularyServiceImpl implements IDcInfoBoardVocabularyS
* @return 情报板敏感字管理 * @return 情报板敏感字管理
*/ */
@Override @Override
public DcInfoBoardVocabulary selectDcInfoBoardVocabularyById(Long id) public DcInfoBoardVocabulary selectDcInfoBoardVocabularyById(Long id) {
{
return dcInfoBoardVocabularyMapper.selectDcInfoBoardVocabularyById(id); return dcInfoBoardVocabularyMapper.selectDcInfoBoardVocabularyById(id);
} }
@ -42,11 +51,36 @@ public class DcInfoBoardVocabularyServiceImpl implements IDcInfoBoardVocabularyS
* @return 情报板敏感字管理 * @return 情报板敏感字管理
*/ */
@Override @Override
public List<DcInfoBoardVocabulary> selectDcInfoBoardVocabularyList(DcInfoBoardVocabulary dcInfoBoardVocabulary) public List<DcInfoBoardVocabulary> selectDcInfoBoardVocabularyList(DcInfoBoardVocabulary dcInfoBoardVocabulary) {
{
return dcInfoBoardVocabularyMapper.selectDcInfoBoardVocabularyList(dcInfoBoardVocabulary); return dcInfoBoardVocabularyMapper.selectDcInfoBoardVocabularyList(dcInfoBoardVocabulary);
} }
/**
* 导入敏感字
*
* @param file
* @return
*/
@Override
public AjaxResult importVocabulary(MultipartFile file) throws Exception {
ExcelUtil<DcInfoBoardVocabulary> util = new ExcelUtil<>(DcInfoBoardVocabulary.class);
List<DcInfoBoardVocabulary> vocabularyList = util.importExcel(file.getInputStream());
BeanValidators.validateWithException(validator, vocabularyList);//对象属性验证
Date nowDate = DateUtils.getNowDate();
List<DcInfoBoardVocabulary> dcInfoBoardVocabularies = dcInfoBoardVocabularyMapper.selectDcInfoBoardVocabularyList(new DcInfoBoardVocabulary());
List<DcInfoBoardVocabulary> wordsNotInDcInfoBoard = vocabularyList.stream()
.filter(dcInfoBoardVocabulary -> StringUtils.isNotEmpty(dcInfoBoardVocabulary.getWord()))
.filter(v -> dcInfoBoardVocabularies.stream().noneMatch(d -> d.getWord().equals(v.getWord())))
.collect(Collectors.toList());
wordsNotInDcInfoBoard.forEach(dcInfoBoardVocabulary -> {
dcInfoBoardVocabulary.setCreateTime(nowDate);
});
if (wordsNotInDcInfoBoard.size() > 0) {
return AjaxResult.success(dcInfoBoardVocabularyMapper.importVocabulary(wordsNotInDcInfoBoard));
}
return AjaxResult.success().put("msg", "请检查数据是否重复,或存在空值");
}
/** /**
* 新增情报板敏感字管理 * 新增情报板敏感字管理
* *
@ -54,11 +88,10 @@ public class DcInfoBoardVocabularyServiceImpl implements IDcInfoBoardVocabularyS
* @return 结果 * @return 结果
*/ */
@Override @Override
public AjaxResult insertDcInfoBoardVocabulary(DcInfoBoardVocabulary dcInfoBoardVocabulary) public AjaxResult insertDcInfoBoardVocabulary(DcInfoBoardVocabulary dcInfoBoardVocabulary) {
{
dcInfoBoardVocabulary.setCreateTime(DateUtils.getNowDate()); dcInfoBoardVocabulary.setCreateTime(DateUtils.getNowDate());
int oldNum = dcInfoBoardVocabularyMapper.selectWordNum(dcInfoBoardVocabulary); int oldNum = dcInfoBoardVocabularyMapper.selectWordNum(dcInfoBoardVocabulary);
if (oldNum > 0){ if (oldNum > 0) {
return AjaxResult.error("该关键词已存在!"); return AjaxResult.error("该关键词已存在!");
} }
dcInfoBoardVocabularyMapper.insertDcInfoBoardVocabulary(dcInfoBoardVocabulary); dcInfoBoardVocabularyMapper.insertDcInfoBoardVocabulary(dcInfoBoardVocabulary);
@ -72,10 +105,9 @@ public class DcInfoBoardVocabularyServiceImpl implements IDcInfoBoardVocabularyS
* @return 结果 * @return 结果
*/ */
@Override @Override
public AjaxResult updateDcInfoBoardVocabulary(DcInfoBoardVocabulary dcInfoBoardVocabulary) public AjaxResult updateDcInfoBoardVocabulary(DcInfoBoardVocabulary dcInfoBoardVocabulary) {
{
int oldNum = dcInfoBoardVocabularyMapper.selectWordNum(dcInfoBoardVocabulary); int oldNum = dcInfoBoardVocabularyMapper.selectWordNum(dcInfoBoardVocabulary);
if (oldNum > 0){ if (oldNum > 0) {
return AjaxResult.error("该关键词已存在!"); return AjaxResult.error("该关键词已存在!");
} }
dcInfoBoardVocabularyMapper.updateDcInfoBoardVocabulary(dcInfoBoardVocabulary); dcInfoBoardVocabularyMapper.updateDcInfoBoardVocabulary(dcInfoBoardVocabulary);
@ -89,8 +121,7 @@ public class DcInfoBoardVocabularyServiceImpl implements IDcInfoBoardVocabularyS
* @return 结果 * @return 结果
*/ */
@Override @Override
public int deleteDcInfoBoardVocabularyByIds(Long[] ids) public int deleteDcInfoBoardVocabularyByIds(Long[] ids) {
{
return dcInfoBoardVocabularyMapper.deleteDcInfoBoardVocabularyByIds(ids); return dcInfoBoardVocabularyMapper.deleteDcInfoBoardVocabularyByIds(ids);
} }
@ -101,8 +132,7 @@ public class DcInfoBoardVocabularyServiceImpl implements IDcInfoBoardVocabularyS
* @return 结果 * @return 结果
*/ */
@Override @Override
public int deleteDcInfoBoardVocabularyById(Long id) public int deleteDcInfoBoardVocabularyById(Long id) {
{
return dcInfoBoardVocabularyMapper.deleteDcInfoBoardVocabularyById(id); return dcInfoBoardVocabularyMapper.deleteDcInfoBoardVocabularyById(id);
} }
@ -113,7 +143,7 @@ public class DcInfoBoardVocabularyServiceImpl implements IDcInfoBoardVocabularyS
* @return 结果 * @return 结果
*/ */
@Override @Override
public AjaxResult checkBoardContent(String content){ public AjaxResult checkBoardContent(String content) {
if (content == null || content.equals("")) { if (content == null || content.equals("")) {
return AjaxResult.error("情报板内容为空"); return AjaxResult.error("情报板内容为空");
} else { } else {
@ -125,7 +155,7 @@ public class DcInfoBoardVocabularyServiceImpl implements IDcInfoBoardVocabularyS
e.printStackTrace(); e.printStackTrace();
return AjaxResult.error(); return AjaxResult.error();
} }
for (int i = 0;i < boardVocabularies.size();i++) { for (int i = 0; i < boardVocabularies.size(); i++) {
String word = boardVocabularies.get(i).getWord(); String word = boardVocabularies.get(i).getWord();
if (content.contains(word)) { if (content.contains(word)) {
return AjaxResult.error("当前发布内容包含敏感字段'" + word + "',请修改"); return AjaxResult.error("当前发布内容包含敏感字段'" + word + "',请修改");

BIN
zc-business/src/main/resources/excelTemplate/敏感字模板.xlsx

Binary file not shown.

16
zc-business/src/main/resources/mapper/business/DcInfoBoardVocabularyMapper.xml

@ -3,7 +3,7 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zc.business.mapper.DcInfoBoardVocabularyMapper"> <mapper namespace="com.zc.business.mapper.DcInfoBoardVocabularyMapper">
<resultMap type="DcInfoBoardVocabulary" id="DcInfoBoardVocabularyResult"> <resultMap type="DcInfoBoardVocabulary" id="DcInfoBoardVocabularyResult">
<result property="id" column="id" /> <result property="id" column="id" />
<result property="word" column="word" /> <result property="word" column="word" />
@ -16,7 +16,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectDcInfoBoardVocabularyList" parameterType="DcInfoBoardVocabulary" resultMap="DcInfoBoardVocabularyResult"> <select id="selectDcInfoBoardVocabularyList" parameterType="DcInfoBoardVocabulary" resultMap="DcInfoBoardVocabularyResult">
<include refid="selectDcInfoBoardVocabularyVo"/> <include refid="selectDcInfoBoardVocabularyVo"/>
<where> <where>
<if test="word != null and word != ''"> and word like concat('%', #{word}, '%')</if> <if test="word != null and word != ''"> and word like concat('%', #{word}, '%')</if>
</where> </where>
</select> </select>
@ -35,6 +35,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</where> </where>
</select> </select>
<insert id="importVocabulary" parameterType="list">
insert into dc_info_board_vocabulary (word,create_time)
values
<foreach collection="list" item="dcInfoBoardVocabulary" separator=",">
(#{dcInfoBoardVocabulary.word}, #{dcInfoBoardVocabulary.createTime})
</foreach>
</insert>
<insert id="insertDcInfoBoardVocabulary" parameterType="DcInfoBoardVocabulary" useGeneratedKeys="true" keyProperty="id"> <insert id="insertDcInfoBoardVocabulary" parameterType="DcInfoBoardVocabulary" useGeneratedKeys="true" keyProperty="id">
insert into dc_info_board_vocabulary insert into dc_info_board_vocabulary
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
@ -61,9 +69,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</delete> </delete>
<delete id="deleteDcInfoBoardVocabularyByIds" parameterType="String"> <delete id="deleteDcInfoBoardVocabularyByIds" parameterType="String">
delete from dc_info_board_vocabulary where id in delete from dc_info_board_vocabulary where id in
<foreach item="id" collection="array" open="(" separator="," close=")"> <foreach item="id" collection="array" open="(" separator="," close=")">
#{id} #{id}
</foreach> </foreach>
</delete> </delete>
</mapper> </mapper>

Loading…
Cancel
Save