From 30424cc145fb6bbc882408879908b08f36cbf26e Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Wed, 26 Nov 2025 10:26:35 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E7=AC=AC=E4=B8=89=E6=96=B9=E6=95=8F?= =?UTF-8?q?=E6=84=9F=E8=AF=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../third/ThirdSensitiveController.java | 39 +++++++++ .../third/sensitive/ThirdSensitiveDTO.java | 30 +++++++ .../third/sensitive/ThirdSensitiveDelDTO.java | 17 ++++ .../sensitive/ThirdSensitiveInfoDTO.java | 13 +++ .../sensitive/ThirdSensitiveSaveDTO.java | 21 +++++ .../service/third/ThirdSensitiveService.java | 27 +++++++ .../third/impl/ThirdSensitiveServiceImpl.java | 80 +++++++++++++++++++ .../vo/third/sensitive/ThirdSensitiveVO.java | 30 +++++++ 8 files changed, 257 insertions(+) create mode 100644 im-platform/src/main/java/com/bx/implatform/dto/third/sensitive/ThirdSensitiveDTO.java create mode 100644 im-platform/src/main/java/com/bx/implatform/dto/third/sensitive/ThirdSensitiveDelDTO.java create mode 100644 im-platform/src/main/java/com/bx/implatform/dto/third/sensitive/ThirdSensitiveInfoDTO.java create mode 100644 im-platform/src/main/java/com/bx/implatform/dto/third/sensitive/ThirdSensitiveSaveDTO.java create mode 100644 im-platform/src/main/java/com/bx/implatform/vo/third/sensitive/ThirdSensitiveVO.java diff --git a/im-platform/src/main/java/com/bx/implatform/controller/third/ThirdSensitiveController.java b/im-platform/src/main/java/com/bx/implatform/controller/third/ThirdSensitiveController.java index 1f0a9ff..1c098f2 100644 --- a/im-platform/src/main/java/com/bx/implatform/controller/third/ThirdSensitiveController.java +++ b/im-platform/src/main/java/com/bx/implatform/controller/third/ThirdSensitiveController.java @@ -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> page(@Valid @RequestBody ThirdSensitiveDTO dto) { + ThirdTableVO vo = thirdSensitiveService.page(dto); + return ResultUtils.success(vo); + } + + @PostMapping("/getById") + @Operation(summary = "获取敏感词详细信息", description = "获取敏感词详细信息") + public Result getInfo(@Valid @RequestBody ThirdSensitiveInfoDTO dto) { + ThirdSensitiveVO vo = thirdSensitiveService.getInfo(dto); + return ResultUtils.success(vo); + } + + @PostMapping("/createOrUpdate") + @Operation(summary = "创建或者更新敏感词", description = "创建或者更新敏感词") + public Result createOrUpdate(@Valid @RequestBody ThirdSensitiveSaveDTO dto) { + thirdSensitiveService.createOrUpdate(dto); + return ResultUtils.success(true); + } + + @PostMapping("/delByIds") + @Operation(summary = "删除敏感词", description = "删除敏感词") + public Result delByIds(@Valid @RequestBody ThirdSensitiveDelDTO dto) { + return ResultUtils.success(thirdSensitiveService.delByIds(dto)); + } + } diff --git a/im-platform/src/main/java/com/bx/implatform/dto/third/sensitive/ThirdSensitiveDTO.java b/im-platform/src/main/java/com/bx/implatform/dto/third/sensitive/ThirdSensitiveDTO.java new file mode 100644 index 0000000..b2b5679 --- /dev/null +++ b/im-platform/src/main/java/com/bx/implatform/dto/third/sensitive/ThirdSensitiveDTO.java @@ -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; + +} diff --git a/im-platform/src/main/java/com/bx/implatform/dto/third/sensitive/ThirdSensitiveDelDTO.java b/im-platform/src/main/java/com/bx/implatform/dto/third/sensitive/ThirdSensitiveDelDTO.java new file mode 100644 index 0000000..98c4655 --- /dev/null +++ b/im-platform/src/main/java/com/bx/implatform/dto/third/sensitive/ThirdSensitiveDelDTO.java @@ -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 sensitiveIds; + +} diff --git a/im-platform/src/main/java/com/bx/implatform/dto/third/sensitive/ThirdSensitiveInfoDTO.java b/im-platform/src/main/java/com/bx/implatform/dto/third/sensitive/ThirdSensitiveInfoDTO.java new file mode 100644 index 0000000..1a02e8b --- /dev/null +++ b/im-platform/src/main/java/com/bx/implatform/dto/third/sensitive/ThirdSensitiveInfoDTO.java @@ -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; + +} diff --git a/im-platform/src/main/java/com/bx/implatform/dto/third/sensitive/ThirdSensitiveSaveDTO.java b/im-platform/src/main/java/com/bx/implatform/dto/third/sensitive/ThirdSensitiveSaveDTO.java new file mode 100644 index 0000000..87463dc --- /dev/null +++ b/im-platform/src/main/java/com/bx/implatform/dto/third/sensitive/ThirdSensitiveSaveDTO.java @@ -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; + +} diff --git a/im-platform/src/main/java/com/bx/implatform/service/third/ThirdSensitiveService.java b/im-platform/src/main/java/com/bx/implatform/service/third/ThirdSensitiveService.java index cdf1b54..c474b4c 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/third/ThirdSensitiveService.java +++ b/im-platform/src/main/java/com/bx/implatform/service/third/ThirdSensitiveService.java @@ -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 page(@Valid ThirdSensitiveDTO dto); + + /** + * 获取敏感词详细信息 + */ + ThirdSensitiveVO getInfo(@Valid ThirdSensitiveInfoDTO dto); + + /** + * 创建或者更新敏感词 + */ + void createOrUpdate(@Valid ThirdSensitiveSaveDTO dto); + + /** + * 删除敏感词 + */ + Boolean delByIds(@Valid ThirdSensitiveDelDTO dto); } diff --git a/im-platform/src/main/java/com/bx/implatform/service/third/impl/ThirdSensitiveServiceImpl.java b/im-platform/src/main/java/com/bx/implatform/service/third/impl/ThirdSensitiveServiceImpl.java index aca5bc0..1d4d078 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/third/impl/ThirdSensitiveServiceImpl.java +++ b/im-platform/src/main/java/com/bx/implatform/service/third/impl/ThirdSensitiveServiceImpl.java @@ -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 implements ThirdSensitiveService { + /** + * 查询敏感词列表 + */ + @Override + public ThirdTableVO page(ThirdSensitiveDTO dto) { + ThirdTableVO result = new ThirdTableVO(); + + Page 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 buildQueryWrapper(ThirdSensitiveDTO bo) { + LambdaQueryWrapper 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; + } } diff --git a/im-platform/src/main/java/com/bx/implatform/vo/third/sensitive/ThirdSensitiveVO.java b/im-platform/src/main/java/com/bx/implatform/vo/third/sensitive/ThirdSensitiveVO.java new file mode 100644 index 0000000..a2dc90a --- /dev/null +++ b/im-platform/src/main/java/com/bx/implatform/vo/third/sensitive/ThirdSensitiveVO.java @@ -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; + +}