feat:第三方敏感词

This commit is contained in:
dzc committed 2025-11-26 10:26:35 +08:00
1 parent be41d903ed
commit 30424cc145
8 files changed
+257

No files matched your search

@@ -1,9 +1,21 @@
package com.bx.implatform.controller.third;
import com.bx.implatform.dto.third.sensitive.ThirdSensitiveDTO;
import com.bx.implatform.dto.third.sensitive.ThirdSensitiveDelDTO;
import com.bx.implatform.dto.third.sensitive.ThirdSensitiveInfoDTO;
import com.bx.implatform.dto.third.sensitive.ThirdSensitiveSaveDTO;
import com.bx.implatform.result.Result;
import com.bx.implatform.result.ResultUtils;
import com.bx.implatform.service.third.ThirdSensitiveService;
import com.bx.implatform.vo.third.ThirdTableVO;
import com.bx.implatform.vo.third.sensitive.ThirdSensitiveVO;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -16,4 +28,31 @@ public class ThirdSensitiveController {
private final ThirdSensitiveService thirdSensitiveService;
@PostMapping("/page")
@Operation(summary = "查询敏感词列表", description = "查询敏感词列表")
public Result<ThirdTableVO<ThirdSensitiveVO>> page(@Valid @RequestBody ThirdSensitiveDTO dto) {
ThirdTableVO<ThirdSensitiveVO> vo = thirdSensitiveService.page(dto);
return ResultUtils.success(vo);
}
@PostMapping("/getById")
@Operation(summary = "获取敏感词详细信息", description = "获取敏感词详细信息")
public Result<ThirdSensitiveVO> getInfo(@Valid @RequestBody ThirdSensitiveInfoDTO dto) {
ThirdSensitiveVO vo = thirdSensitiveService.getInfo(dto);
return ResultUtils.success(vo);
}
@PostMapping("/createOrUpdate")
@Operation(summary = "创建或者更新敏感词", description = "创建或者更新敏感词")
public Result<Boolean> createOrUpdate(@Valid @RequestBody ThirdSensitiveSaveDTO dto) {
thirdSensitiveService.createOrUpdate(dto);
return ResultUtils.success(true);
}
@PostMapping("/delByIds")
@Operation(summary = "删除敏感词", description = "删除敏感词")
public Result<Boolean> delByIds(@Valid @RequestBody ThirdSensitiveDelDTO dto) {
return ResultUtils.success(thirdSensitiveService.delByIds(dto));
}
}
@@ -0,0 +1,30 @@
package com.bx.implatform.dto.third.sensitive;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.Date;
@Data
@Schema(description = "third敏感词DTO")
public class ThirdSensitiveDTO {
@Schema(description = "分页大小")
private Integer pageSize;
@Schema(description = "当前页数")
private Integer pageNum;
@Schema(description = "敏感词内容")
private String content;
@Schema(description = "是否启用")
private Boolean enabled;
@Schema(description = "创建者")
private Long creator;
@Schema(description = "创建时间")
private Date createTime;
}
@@ -0,0 +1,17 @@
package com.bx.implatform.dto.third.sensitive;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotEmpty;
import lombok.Data;
import java.util.List;
@Data
@Schema(description = "third敏感词删除DTO")
public class ThirdSensitiveDelDTO {
@NotEmpty(message = "敏感词ids不能为空")
@Schema(description = "敏感词ids")
private List<Long> sensitiveIds;
}
@@ -0,0 +1,13 @@
package com.bx.implatform.dto.third.sensitive;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(description = "third敏感词详情DTO")
public class ThirdSensitiveInfoDTO {
@Schema(description = "敏感词id")
private Long sensitiveId;
}
@@ -0,0 +1,21 @@
package com.bx.implatform.dto.third.sensitive;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotEmpty;
import lombok.Data;
@Data
@Schema(description = "third新增或修改DTO")
public class ThirdSensitiveSaveDTO {
@Schema(description = "id")
private Long id;
@NotEmpty(message = "敏感词内容不能为空")
@Schema(description = "敏感词内容")
private String content;
@Schema(description = "是否启用")
private Boolean enabled;
}
@@ -1,5 +1,32 @@
package com.bx.implatform.service.third;
import com.bx.implatform.dto.third.sensitive.ThirdSensitiveDTO;
import com.bx.implatform.dto.third.sensitive.ThirdSensitiveDelDTO;
import com.bx.implatform.dto.third.sensitive.ThirdSensitiveInfoDTO;
import com.bx.implatform.dto.third.sensitive.ThirdSensitiveSaveDTO;
import com.bx.implatform.vo.third.ThirdTableVO;
import com.bx.implatform.vo.third.sensitive.ThirdSensitiveVO;
import jakarta.validation.Valid;
public interface ThirdSensitiveService {
/**
* 查询敏感词列表
*/
ThirdTableVO<ThirdSensitiveVO> page(@Valid ThirdSensitiveDTO dto);
/**
* 获取敏感词详细信息
*/
ThirdSensitiveVO getInfo(@Valid ThirdSensitiveInfoDTO dto);
/**
* 创建或者更新敏感词
*/
void createOrUpdate(@Valid ThirdSensitiveSaveDTO dto);
/**
* 删除敏感词
*/
Boolean delByIds(@Valid ThirdSensitiveDelDTO dto);
}
@@ -1,13 +1,26 @@
package com.bx.implatform.service.third.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bx.implatform.dto.third.sensitive.ThirdSensitiveDTO;
import com.bx.implatform.dto.third.sensitive.ThirdSensitiveDelDTO;
import com.bx.implatform.dto.third.sensitive.ThirdSensitiveInfoDTO;
import com.bx.implatform.dto.third.sensitive.ThirdSensitiveSaveDTO;
import com.bx.implatform.entity.SensitiveWord;
import com.bx.implatform.mapper.SensitiveWordMapper;
import com.bx.implatform.service.third.ThirdSensitiveService;
import com.bx.implatform.vo.third.ThirdTableVO;
import com.bx.implatform.vo.third.sensitive.ThirdSensitiveVO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
/**
* 第三方敏感词
*/
@@ -16,4 +29,71 @@ import org.springframework.stereotype.Service;
@RequiredArgsConstructor
public class ThirdSensitiveServiceImpl extends ServiceImpl<SensitiveWordMapper, SensitiveWord> implements ThirdSensitiveService {
/**
* 查询敏感词列表
*/
@Override
public ThirdTableVO<ThirdSensitiveVO> page(ThirdSensitiveDTO dto) {
ThirdTableVO<ThirdSensitiveVO> result = new ThirdTableVO<ThirdSensitiveVO>();
Page<SensitiveWord> page = baseMapper.selectPage(new Page(dto.getPageNum(), dto.getPageSize()), buildQueryWrapper(dto));
result.setTotal(page.getTotal());
if (ObjectUtil.isNotEmpty(page.getRecords())) {
result.setRows(BeanUtil.copyToList(page.getRecords(), ThirdSensitiveVO.class));
}
return result;
}
/**
* 获取敏感词详细信息
*/
@Override
public ThirdSensitiveVO getInfo(ThirdSensitiveInfoDTO dto) {
SensitiveWord detail = baseMapper.selectById(dto.getSensitiveId());
if (ObjectUtil.isNotEmpty(detail)) {
return BeanUtil.copyProperties(detail, ThirdSensitiveVO.class);
}
return null;
}
/**
* 创建或者更新敏感词
*/
@Override
public void createOrUpdate(ThirdSensitiveSaveDTO dto) {
if (ObjectUtil.isNotEmpty(dto.getId())) {
// 修改
SensitiveWord detail = baseMapper.selectById(dto.getId());
if (ObjectUtil.isNotEmpty(detail)) {
SensitiveWord updateObj = BeanUtil.toBean(dto, SensitiveWord.class);
baseMapper.updateById(updateObj);
}
} else {
SensitiveWord saveObj = BeanUtil.toBean(dto, SensitiveWord.class);
if (ObjectUtil.isNotEmpty(saveObj.getEnabled())) {
saveObj.setEnabled(true);
}
saveObj.setCreator(-1L);
saveObj.setCreateTime(LocalDateTime.now());
baseMapper.insert(saveObj);
}
}
/**
* 删除敏感词
*/
@Override
public Boolean delByIds(ThirdSensitiveDelDTO dto) {
return baseMapper.deleteByIds(dto.getSensitiveIds()) > 0;
}
private LambdaQueryWrapper<SensitiveWord> buildQueryWrapper(ThirdSensitiveDTO bo) {
LambdaQueryWrapper<SensitiveWord> wrapper = Wrappers.lambdaQuery();
wrapper.like(ObjectUtil.isNotEmpty(bo.getContent()), SensitiveWord::getContent, bo.getContent());
wrapper.eq(bo.getEnabled() != null, SensitiveWord::getEnabled, bo.getEnabled());
wrapper.orderByDesc(SensitiveWord::getId);
return wrapper;
}
}
@@ -0,0 +1,30 @@
package com.bx.implatform.vo.third.sensitive;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.Date;
@Data
@Schema(description = "third敏感词VO")
public class ThirdSensitiveVO {
@Schema(description = "id")
private Long id;
@Schema(description = "敏感词内容")
private String content;
@Schema(description = "是否启用")
private Boolean enabled;
@Schema(description = "创建者")
private Long creator;
@Schema(description = "创建者")
private String creatorName;
@Schema(description = "创建时间")
private Date createTime;
}