diff --git a/src/main/java/com/example/venue_reservation_service/controller/SensitiveWordController.java b/src/main/java/com/example/venue_reservation_service/controller/SensitiveWordController.java new file mode 100644 index 0000000..96d9920 --- /dev/null +++ b/src/main/java/com/example/venue_reservation_service/controller/SensitiveWordController.java @@ -0,0 +1,66 @@ +package com.example.venue_reservation_service.controller; + +import com.example.venue_reservation_service.dto.PageDTO; +import com.example.venue_reservation_service.dto.SensitiveWordDTO; +import com.example.venue_reservation_service.service.SensitiveWordService; +import com.example.venue_reservation_service.vo.Result; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +/** + * 敏感词管理Controller + */ +@RestController +@RequestMapping("/sensitiveword") +@CrossOrigin +@Api("敏感词管理") +@Slf4j +public class SensitiveWordController { + + @Resource + private SensitiveWordService sensitiveWordService; + + /** + * 分页查询敏感词列表 + */ + @ApiOperation("获取敏感词数据") + @PostMapping("/query") + public Result query(@RequestBody PageDTO dto) { + return sensitiveWordService.getSensitiveWords(dto); + } + + /** + * 添加敏感词 + */ + @ApiOperation("添加敏感词") + @PostMapping("/create") + public Result create(@RequestBody SensitiveWordDTO dto) { + log.info("添加敏感词{}", dto); + return sensitiveWordService.addSensitiveWord(dto); + } + + /** + * 修改敏感词信息 + */ + @ApiOperation("修改敏感词") + @PostMapping("/update") + public Result update(@RequestParam("id") Integer id, + @RequestBody SensitiveWordDTO dto) { + return sensitiveWordService.updateSensitiveWord(id, dto); + } + + /** + * 删除敏感词 + */ + @ApiOperation("移除敏感词") + @DeleteMapping("/remove") + public Result remove(@RequestParam("id") Integer id) { + log.info("移除敏感词{}", id); + return sensitiveWordService.removeSensitiveWord(id); + } + + +} diff --git a/src/main/java/com/example/venue_reservation_service/domain/SensitiveWord.java b/src/main/java/com/example/venue_reservation_service/domain/SensitiveWord.java new file mode 100644 index 0000000..5770f81 --- /dev/null +++ b/src/main/java/com/example/venue_reservation_service/domain/SensitiveWord.java @@ -0,0 +1,33 @@ +package com.example.venue_reservation_service.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; + +@TableName(value ="venue_word") +@Data +public class SensitiveWord { + + @TableId(type = IdType.AUTO) + private Integer id; + + private String word; + + private String level; + + private String status; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime updateTime; + +} diff --git a/src/main/java/com/example/venue_reservation_service/dto/SensitiveWordDTO.java b/src/main/java/com/example/venue_reservation_service/dto/SensitiveWordDTO.java new file mode 100644 index 0000000..d6979b0 --- /dev/null +++ b/src/main/java/com/example/venue_reservation_service/dto/SensitiveWordDTO.java @@ -0,0 +1,14 @@ +package com.example.venue_reservation_service.dto; + +import lombok.Data; + +@Data +public class SensitiveWordDTO { + + //敏感词 + private String word; + + + //敏感词等级 + private String level; +} diff --git a/src/main/java/com/example/venue_reservation_service/mapper/SensitiveWordMapper.java b/src/main/java/com/example/venue_reservation_service/mapper/SensitiveWordMapper.java new file mode 100644 index 0000000..0dfc2dd --- /dev/null +++ b/src/main/java/com/example/venue_reservation_service/mapper/SensitiveWordMapper.java @@ -0,0 +1,9 @@ +package com.example.venue_reservation_service.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.example.venue_reservation_service.domain.SensitiveWord; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface SensitiveWordMapper extends BaseMapper { +} diff --git a/src/main/java/com/example/venue_reservation_service/service/SensitiveWordService.java b/src/main/java/com/example/venue_reservation_service/service/SensitiveWordService.java new file mode 100644 index 0000000..a21f17a --- /dev/null +++ b/src/main/java/com/example/venue_reservation_service/service/SensitiveWordService.java @@ -0,0 +1,23 @@ +package com.example.venue_reservation_service.service; + +import com.example.venue_reservation_service.dto.PageDTO; +import com.example.venue_reservation_service.dto.SensitiveWordDTO; +import com.example.venue_reservation_service.vo.Result; + +public interface SensitiveWordService { + + // 获取敏感词数据 + Result getSensitiveWords(PageDTO dto); + + + // 添加敏感词 + Result addSensitiveWord(SensitiveWordDTO dto); + + + // 更新敏感词 + + Result updateSensitiveWord(Integer id, SensitiveWordDTO dto); + + // 移除敏感词 + Result removeSensitiveWord(Integer id); +} diff --git a/src/main/java/com/example/venue_reservation_service/service/impl/SensitiveWordServiceImpl.java b/src/main/java/com/example/venue_reservation_service/service/impl/SensitiveWordServiceImpl.java new file mode 100644 index 0000000..d56ad3f --- /dev/null +++ b/src/main/java/com/example/venue_reservation_service/service/impl/SensitiveWordServiceImpl.java @@ -0,0 +1,97 @@ +package com.example.venue_reservation_service.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.example.venue_reservation_service.domain.SensitiveWord; +import com.example.venue_reservation_service.dto.PageDTO; +import com.example.venue_reservation_service.dto.SensitiveWordDTO; +import com.example.venue_reservation_service.mapper.SensitiveWordMapper; +import com.example.venue_reservation_service.service.SensitiveWordService; +import com.example.venue_reservation_service.vo.QueryVO; +import com.example.venue_reservation_service.vo.Result; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +import java.time.LocalDateTime; + +/** + * 敏感词业务实现类 + */ +@Service +public class SensitiveWordServiceImpl extends ServiceImpl implements SensitiveWordService { + + @Resource + private SensitiveWordMapper sensitiveWordMapper; + + /** + * 分页查询敏感词列表 + */ + @Override + public Result getSensitiveWords(PageDTO dto) { + Page page = new Page<>(dto.getCurrent(), dto.getSize()); + page = page(page, null); + QueryVO vo = new QueryVO<>(); + vo.setList(page.getRecords()); + vo.setTotal(page.getTotal()); + return Result.ok(vo).message("查询成功"); + } + + /** + * 添加敏感词 + */ + @Override + public Result addSensitiveWord(SensitiveWordDTO sensitiveWordDTO) { + // 去空格后判断是否重复 + String word = sensitiveWordDTO.getWord().trim(); + if (count(new LambdaQueryWrapper().eq(SensitiveWord::getWord, word)) > 0) { + return Result.fail().message("该敏感词已存在"); + } + + SensitiveWord sensitiveWord = new SensitiveWord(); + sensitiveWord.setWord(word); + sensitiveWord.setLevel(sensitiveWordDTO.getLevel()); + sensitiveWord.setStatus("0"); // 默认不启用 + sensitiveWord.setCreateTime(LocalDateTime.now()); + sensitiveWord.setUpdateTime(LocalDateTime.now()); + save(sensitiveWord); + + return Result.ok().message("添加成功"); + } + + + /** + * 修改敏感词信息 + */ + @Override + public Result updateSensitiveWord(Integer id, SensitiveWordDTO sensitiveWordDTO) { + SensitiveWord sensitiveWord = getById(id); + if (sensitiveWord == null) { + return Result.fail().message("未找到对应敏感词"); + } + + sensitiveWord.setWord(sensitiveWordDTO.getWord().trim()); + sensitiveWord.setLevel(sensitiveWordDTO.getLevel()); + + updateById(sensitiveWord); + return Result.ok().message("修改成功"); + } + + /** + * 删除敏感词 + */ + @Override + public Result removeSensitiveWord(Integer id) { + if (!exists(id)) { + return Result.fail().message("未找到对应敏感词"); + } + removeById(id); + return Result.ok().message("删除成功"); + } + + // 辅助方法:检查是否存在 + private boolean exists(Integer id) { + return count(new LambdaQueryWrapper().eq(SensitiveWord::getId, id)) > 0; + } +}