瀏覽代碼

关键词增删改查

pans 8 月之前
父節點
當前提交
49504be525

+ 136 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/KeyWordController.java

@@ -0,0 +1,136 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.disk.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.github.xiaoymin.knife4j.annotations.ApiSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+import vip.xiaonuo.common.annotation.CommonLog;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.common.pojo.CommonValidList;
+import vip.xiaonuo.disk.domain.KeyWord;
+import vip.xiaonuo.disk.param.KeyWordAddParam;
+import vip.xiaonuo.disk.param.KeyWordEditParam;
+import vip.xiaonuo.disk.param.KeyWordIdParam;
+import vip.xiaonuo.disk.param.KeyWordPageParam;
+import vip.xiaonuo.disk.service.KeyWordService;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import javax.validation.constraints.NotEmpty;
+import java.util.List;
+
+/**
+ * key_word控制器
+ *
+ * @author pans
+ * @date  2025/06/27 10:08
+ */
+@Api(tags = "key_word控制器")
+@ApiSupport(author = "SNOWY_TEAM", order = 1)
+@RestController
+@Validated
+public class KeyWordController {
+
+    @Resource
+    private KeyWordService keyWordService;
+
+    /**
+     * 获取key_word分页
+     *
+     * @author pans
+     * @date  2025/06/27 10:08
+     */
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("获取key_word分页")
+    @GetMapping("/disk/word/page")
+    public CommonResult<Page<KeyWord>> page(KeyWordPageParam keyWordPageParam) {
+        return CommonResult.data(keyWordService.page(keyWordPageParam));
+    }
+
+    /**
+     * 添加key_word
+     *
+     * @author pans
+     * @date  2025/06/27 10:08
+     */
+    @ApiOperationSupport(order = 2)
+    @ApiOperation("添加key_word")
+    @CommonLog("添加key_word")
+    @PostMapping("/disk/word/add")
+    public CommonResult<String> add(@RequestBody @Valid KeyWordAddParam keyWordAddParam) {
+        keyWordService.add(keyWordAddParam);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 编辑key_word
+     *
+     * @author pans
+     * @date  2025/06/27 10:08
+     */
+    @ApiOperationSupport(order = 3)
+    @ApiOperation("编辑key_word")
+    @CommonLog("编辑key_word")
+    @PostMapping("/disk/word/edit")
+    public CommonResult<String> edit(@RequestBody @Valid KeyWordEditParam keyWordEditParam) {
+        keyWordService.edit(keyWordEditParam);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 删除key_word
+     *
+     * @author pans
+     * @date  2025/06/27 10:08
+     */
+    @ApiOperationSupport(order = 4)
+    @ApiOperation("删除key_word")
+    @CommonLog("删除key_word")
+    @PostMapping("/disk/word/delete")
+    public CommonResult<String> delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空")
+                                                   CommonValidList<KeyWordIdParam> keyWordIdParamList) {
+        keyWordService.delete(keyWordIdParamList);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 获取key_word详情
+     *
+     * @author pans
+     * @date  2025/06/27 10:08
+     */
+    @ApiOperationSupport(order = 5)
+    @ApiOperation("获取key_word详情")
+    @GetMapping("/disk/word/detail")
+    public CommonResult<KeyWord> detail(@Valid KeyWordIdParam keyWordIdParam) {
+        return CommonResult.data(keyWordService.detail(keyWordIdParam));
+    }
+
+    @ApiOperationSupport(order = 6)
+    @GetMapping("/disk/word/select")
+    public CommonResult<List<KeyWord>> select() {
+        return CommonResult.data(keyWordService.select());
+    }
+
+
+
+
+}

+ 54 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/domain/KeyWord.java

@@ -0,0 +1,54 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.disk.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import vip.xiaonuo.common.pojo.CommonEntity;
+
+/**
+ * key_word实体
+ *
+ * @author pans
+ * @date  2025/06/27 10:08
+ **/
+@Getter
+@Setter
+@TableName("key_word")
+public class KeyWord extends CommonEntity {
+
+    /**
+     * 主键id
+     */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "主键id", position = 1)
+    private Integer id;
+
+    /**
+     * 名称
+     */
+    @ApiModelProperty(value = "名称", position = 2)
+    private String wordName;
+
+    /**
+     * 是否热门  1 热门 0不热门
+     */
+    @ApiModelProperty(value = "是否热门  1 热门 0不热门", position = 3)
+    private String popular;
+
+
+}

+ 34 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/enums/KeyWordEnum.java

@@ -0,0 +1,34 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.disk.enums;
+
+import lombok.Getter;
+
+/**
+ * key_word枚举
+ *
+ * @author pans
+ * @date  2025/06/27 10:08
+ **/
+@Getter
+public enum KeyWordEnum {
+
+    /** 测试 */
+    TEST("TEST");
+
+    private final String value;
+
+    KeyWordEnum(String value) {
+        this.value = value;
+    }
+}

+ 26 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/KeyWordMapper.java

@@ -0,0 +1,26 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.disk.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import vip.xiaonuo.disk.domain.KeyWord;
+
+
+/**
+ * key_wordMapper接口
+ *
+ * @author pans
+ * @date  2025/06/27 10:08
+ **/
+public interface KeyWordMapper extends BaseMapper<KeyWord> {
+}

+ 5 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/KeyWordMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="vip.xiaonuo.disk.modular.word.mapper.KeyWordMapper">
+
+</mapper>

+ 37 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/KeyWordAddParam.java

@@ -0,0 +1,37 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.disk.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * key_word添加参数
+ *
+ * @author pans
+ * @date  2025/06/27 10:08
+ **/
+@Getter
+@Setter
+public class KeyWordAddParam {
+
+    /** 名称 */
+    @ApiModelProperty(value = "名称", position = 2)
+    private String wordName;
+
+    /** 是否热门  1 热门 0不热门 */
+    @ApiModelProperty(value = "是否热门  1 热门 0不热门", position = 3)
+    private String popular;
+
+}

+ 44 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/KeyWordEditParam.java

@@ -0,0 +1,44 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.disk.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * key_word编辑参数
+ *
+ * @author pans
+ * @date  2025/06/27 10:08
+ **/
+@Getter
+@Setter
+public class KeyWordEditParam {
+
+    /** 主键id */
+    @ApiModelProperty(value = "主键id", required = true, position = 1)
+    @NotNull(message = "id不能为空")
+    private Integer id;
+
+    /** 名称 */
+    @ApiModelProperty(value = "名称", position = 2)
+    private String wordName;
+
+    /** 是否热门  1 热门 0不热门 */
+    @ApiModelProperty(value = "是否热门  1 热门 0不热门", position = 3)
+    private String popular;
+
+}

+ 35 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/KeyWordIdParam.java

@@ -0,0 +1,35 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.disk.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * key_wordId参数
+ *
+ * @author pans
+ * @date  2025/06/27 10:08
+ **/
+@Getter
+@Setter
+public class KeyWordIdParam {
+
+    /** 主键id */
+    @ApiModelProperty(value = "主键id", required = true)
+    @NotNull(message = "id不能为空")
+    private Integer id;
+}

+ 49 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/KeyWordPageParam.java

@@ -0,0 +1,49 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.disk.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * key_word查询参数
+ *
+ * @author pans
+ * @date  2025/06/27 10:08
+ **/
+@Getter
+@Setter
+public class KeyWordPageParam {
+
+    /** 当前页 */
+    @ApiModelProperty(value = "当前页码")
+    private Integer current;
+
+    /** 每页条数 */
+    @ApiModelProperty(value = "每页条数")
+    private Integer size;
+
+    /** 排序字段 */
+    @ApiModelProperty(value = "排序字段,字段驼峰名称,如:userName")
+    private String sortField;
+
+    /** 排序方式 */
+    @ApiModelProperty(value = "排序方式,升序:ASCEND;降序:DESCEND")
+    private String sortOrder;
+
+    /** 关键词 */
+    @ApiModelProperty(value = "关键词")
+    private String searchKey;
+
+}

+ 82 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/KeyWordService.java

@@ -0,0 +1,82 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.disk.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.disk.domain.KeyWord;
+import vip.xiaonuo.disk.param.KeyWordAddParam;
+import vip.xiaonuo.disk.param.KeyWordEditParam;
+import vip.xiaonuo.disk.param.KeyWordIdParam;
+import vip.xiaonuo.disk.param.KeyWordPageParam;
+
+import java.util.List;
+
+/**
+ * key_wordService接口
+ *
+ * @author pans
+ * @date  2025/06/27 10:08
+ **/
+public interface KeyWordService extends IService<KeyWord> {
+
+    /**
+     * 获取key_word分页
+     *
+     * @author pans
+     * @date  2025/06/27 10:08
+     */
+    Page<KeyWord> page(KeyWordPageParam keyWordPageParam);
+
+    /**
+     * 添加key_word
+     *
+     * @author pans
+     * @date  2025/06/27 10:08
+     */
+    void add(KeyWordAddParam keyWordAddParam);
+
+    /**
+     * 编辑key_word
+     *
+     * @author pans
+     * @date  2025/06/27 10:08
+     */
+    void edit(KeyWordEditParam keyWordEditParam);
+
+    /**
+     * 删除key_word
+     *
+     * @author pans
+     * @date  2025/06/27 10:08
+     */
+    void delete(List<KeyWordIdParam> keyWordIdParamList);
+
+    /**
+     * 获取key_word详情
+     *
+     * @author pans
+     * @date  2025/06/27 10:08
+     */
+    KeyWord detail(KeyWordIdParam keyWordIdParam);
+
+    /**
+     * 获取key_word详情
+     *
+     * @author pans
+     * @date  2025/06/27 10:08
+     **/
+    KeyWord queryEntity(Integer id);
+
+    List<KeyWord> select();
+}

+ 107 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/impl/KeyWordServiceImpl.java

@@ -0,0 +1,107 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.disk.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollStreamUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import vip.xiaonuo.common.enums.CommonSortOrderEnum;
+import vip.xiaonuo.common.exception.CommonException;
+import vip.xiaonuo.common.page.CommonPageRequest;
+import vip.xiaonuo.disk.domain.KeyWord;
+import vip.xiaonuo.disk.mapper.KeyWordMapper;
+import vip.xiaonuo.disk.param.KeyWordAddParam;
+import vip.xiaonuo.disk.param.KeyWordEditParam;
+import vip.xiaonuo.disk.param.KeyWordIdParam;
+import vip.xiaonuo.disk.param.KeyWordPageParam;
+import vip.xiaonuo.disk.service.KeyWordService;
+
+import java.util.List;
+
+/**
+ * key_wordService接口实现类
+ *
+ * @author pans
+ * @date  2025/06/27 10:08
+ **/
+@Service
+public class KeyWordServiceImpl extends ServiceImpl<KeyWordMapper, KeyWord> implements KeyWordService {
+    @Autowired
+    private KeyWordMapper keyWordMapper;
+    @Override
+    public Page<KeyWord> page(KeyWordPageParam keyWordPageParam) {
+        QueryWrapper<KeyWord> queryWrapper = new QueryWrapper<>();
+        if(ObjectUtil.isNotEmpty(keyWordPageParam.getSearchKey())) {
+            queryWrapper.lambda().like(KeyWord::getWordName, keyWordPageParam.getSearchKey());
+        }
+        if(ObjectUtil.isAllNotEmpty(keyWordPageParam.getSortField(), keyWordPageParam.getSortOrder())) {
+            CommonSortOrderEnum.validate(keyWordPageParam.getSortOrder());
+            queryWrapper.orderBy(true, keyWordPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),
+                    StrUtil.toUnderlineCase(keyWordPageParam.getSortField()));
+        } else {
+            queryWrapper.lambda().orderByAsc(KeyWord::getId);
+        }
+        return this.page(CommonPageRequest.defaultPage(), queryWrapper);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void add(KeyWordAddParam keyWordAddParam) {
+        KeyWord keyWord = BeanUtil.toBean(keyWordAddParam, KeyWord.class);
+        this.save(keyWord);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void edit(KeyWordEditParam keyWordEditParam) {
+        KeyWord keyWord = this.queryEntity(keyWordEditParam.getId());
+        BeanUtil.copyProperties(keyWordEditParam, keyWord);
+        this.updateById(keyWord);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void delete(List<KeyWordIdParam> keyWordIdParamList) {
+        // 执行删除
+        this.removeByIds(CollStreamUtil.toList(keyWordIdParamList, KeyWordIdParam::getId));
+    }
+
+    @Override
+    public KeyWord detail(KeyWordIdParam keyWordIdParam) {
+        return this.queryEntity(keyWordIdParam.getId());
+    }
+
+    @Override
+    public KeyWord queryEntity(Integer id) {
+        KeyWord keyWord = this.getById(id);
+        if(ObjectUtil.isEmpty(keyWord)) {
+            throw new CommonException("key_word不存在,id值为:{}", id);
+        }
+        return keyWord;
+    }
+
+    @Override
+    public List<KeyWord> select() {
+        QueryWrapper<KeyWord> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().orderByAsc(KeyWord::getId);
+        return keyWordMapper.selectList(queryWrapper);
+    }
+
+}