From 29298c5dd67752963ebbe5a73409e035db3c1246 Mon Sep 17 00:00:00 2001 From: ziin Date: Tue, 9 Dec 2025 15:22:17 +0800 Subject: [PATCH] =?UTF-8?q?feat(themes):=20=E6=96=B0=E5=A2=9E=E4=B8=BB?= =?UTF-8?q?=E9=A2=98=E6=9F=A5=E8=AF=A2=E4=B8=8E=E9=A3=8E=E6=A0=BC=E7=AD=9B?= =?UTF-8?q?=E9=80=89=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../keyborad/controller/ThemesController.java | 44 +++++++++ .../mapper/KeyboardThemeStylesMapper.java | 12 +++ .../keyborad/mapper/KeyboradThemesMapper.java | 12 +++ .../model/entity/KeyboardThemeStyles.java | 48 +++++++++ .../keyborad/model/entity/KeyboradThemes.java | 97 +++++++++++++++++++ .../model/vo/themes/KeyboradThemesRespVO.java | 62 ++++++++++++ .../service/KeyboardThemeStylesService.java | 13 +++ .../service/KeyboradThemesService.java | 28 ++++++ .../impl/KeyboardThemeStylesServiceImpl.java | 18 ++++ .../impl/KeyboradThemesServiceImpl.java | 38 ++++++++ .../mapper/KeyboardThemeStylesMapper.xml | 17 ++++ .../resources/mapper/KeyboradThemesMapper.xml | 24 +++++ 12 files changed, 413 insertions(+) create mode 100644 src/main/java/com/yolo/keyborad/controller/ThemesController.java create mode 100644 src/main/java/com/yolo/keyborad/mapper/KeyboardThemeStylesMapper.java create mode 100644 src/main/java/com/yolo/keyborad/mapper/KeyboradThemesMapper.java create mode 100644 src/main/java/com/yolo/keyborad/model/entity/KeyboardThemeStyles.java create mode 100644 src/main/java/com/yolo/keyborad/model/entity/KeyboradThemes.java create mode 100644 src/main/java/com/yolo/keyborad/model/vo/themes/KeyboradThemesRespVO.java create mode 100644 src/main/java/com/yolo/keyborad/service/KeyboardThemeStylesService.java create mode 100644 src/main/java/com/yolo/keyborad/service/KeyboradThemesService.java create mode 100644 src/main/java/com/yolo/keyborad/service/impl/KeyboardThemeStylesServiceImpl.java create mode 100644 src/main/java/com/yolo/keyborad/service/impl/KeyboradThemesServiceImpl.java create mode 100644 src/main/resources/mapper/KeyboardThemeStylesMapper.xml create mode 100644 src/main/resources/mapper/KeyboradThemesMapper.xml diff --git a/src/main/java/com/yolo/keyborad/controller/ThemesController.java b/src/main/java/com/yolo/keyborad/controller/ThemesController.java new file mode 100644 index 0000000..ddd0529 --- /dev/null +++ b/src/main/java/com/yolo/keyborad/controller/ThemesController.java @@ -0,0 +1,44 @@ +package com.yolo.keyborad.controller; + +import com.yolo.keyborad.common.BaseResponse; +import com.yolo.keyborad.common.ResultUtils; +import com.yolo.keyborad.model.vo.themes.KeyboradThemesRespVO; +import com.yolo.keyborad.service.KeyboradThemesService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/* + * @author: ziin + * @date: 2025/12/9 14:53 + */ +@RestController +@Slf4j +@RequestMapping("/themes") +@Tag(name = "主题") +public class ThemesController { + + @Resource + private KeyboradThemesService themesService; + + @GetMapping("/list") + @Operation(summary = "查询所有主题", description = "查询所有主题列表接口") + public BaseResponse> list() { + return ResultUtils.success(themesService.selectAllThemes()); + } + + @GetMapping("/listByStyle") + @Operation(summary = "按风格查询主题", description = "按主题风格查询主题列表接口") + public BaseResponse> listByStyle(@RequestParam("themeStyle") Long themeStyleId) { + return ResultUtils.success(themesService.selectThemesByStyle(themeStyleId)); + } + + +} diff --git a/src/main/java/com/yolo/keyborad/mapper/KeyboardThemeStylesMapper.java b/src/main/java/com/yolo/keyborad/mapper/KeyboardThemeStylesMapper.java new file mode 100644 index 0000000..3dc4ceb --- /dev/null +++ b/src/main/java/com/yolo/keyborad/mapper/KeyboardThemeStylesMapper.java @@ -0,0 +1,12 @@ +package com.yolo.keyborad.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.yolo.keyborad.model.entity.KeyboardThemeStyles; + +/* +* @author: ziin +* @date: 2025/12/9 15:20 +*/ + +public interface KeyboardThemeStylesMapper extends BaseMapper { +} \ No newline at end of file diff --git a/src/main/java/com/yolo/keyborad/mapper/KeyboradThemesMapper.java b/src/main/java/com/yolo/keyborad/mapper/KeyboradThemesMapper.java new file mode 100644 index 0000000..b698573 --- /dev/null +++ b/src/main/java/com/yolo/keyborad/mapper/KeyboradThemesMapper.java @@ -0,0 +1,12 @@ +package com.yolo.keyborad.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.yolo.keyborad.model.entity.KeyboradThemes; + +/* +* @author: ziin +* @date: 2025/12/9 14:51 +*/ + +public interface KeyboradThemesMapper extends BaseMapper { +} \ No newline at end of file diff --git a/src/main/java/com/yolo/keyborad/model/entity/KeyboardThemeStyles.java b/src/main/java/com/yolo/keyborad/model/entity/KeyboardThemeStyles.java new file mode 100644 index 0000000..9e88dbc --- /dev/null +++ b/src/main/java/com/yolo/keyborad/model/entity/KeyboardThemeStyles.java @@ -0,0 +1,48 @@ +package com.yolo.keyborad.model.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import java.util.Date; +import lombok.Data; + +/* +* @author: ziin +* @date: 2025/12/9 15:20 +*/ + +@Schema +@Data +@TableName(value = "keyboard_theme_styles") +public class KeyboardThemeStyles { + /** + * 主键 Id + */ + @TableId(value = "id", type = IdType.AUTO) + @Schema(description="主键 Id") + private Long id; + + /** + * 风格名称 + */ + @TableField(value = "style_name") + @Schema(description="风格名称") + private String styleName; + + /** + * 是否删除 + */ + @TableField(value = "deleted") + @Schema(description="是否删除") + private Boolean deleted; + + @TableField(value = "created_at") + @Schema(description="") + private Date createdAt; + + @TableField(value = "updated_at") + @Schema(description="") + private Date updatedAt; +} \ No newline at end of file diff --git a/src/main/java/com/yolo/keyborad/model/entity/KeyboradThemes.java b/src/main/java/com/yolo/keyborad/model/entity/KeyboradThemes.java new file mode 100644 index 0000000..0c47b97 --- /dev/null +++ b/src/main/java/com/yolo/keyborad/model/entity/KeyboradThemes.java @@ -0,0 +1,97 @@ +package com.yolo.keyborad.model.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import java.math.BigDecimal; +import java.util.Date; +import lombok.Data; + +/* +* @author: ziin +* @date: 2025/12/9 14:51 +*/ + +@Schema +@Data +@TableName(value = "keyborad_themes") +public class KeyboradThemes { + /** + * 主键 Id + */ + @TableId(value = "id", type = IdType.AUTO) + @Schema(description="主键 Id") + private Long id; + + /** + * 键盘皮肤名称 + */ + @TableField(value = "theme_name") + @Schema(description="键盘皮肤名称") + private String themeName; + + /** + * 键盘价格 + */ + @TableField(value = "theme_price") + @Schema(description="键盘价格") + private BigDecimal themePrice; + + /** + * 主题标签 + */ + @TableField(value = "theme_tag") + @Schema(description="主题标签") + private String themeTag; + + /** + * 主题下载次数 + */ + @TableField(value = "theme_download") + @Schema(description="主题下载次数") + private String themeDownload; + + /** + * 主题风格 + */ + @TableField(value = "theme_style") + @Schema(description="主题风格") + private Long themeStyle; + + /** + * 主题状态 + */ + @TableField(value = "theme_status") + @Schema(description="主题状态") + private Boolean themeStatus; + + /** + * 主题购买次数 + */ + @TableField(value = "theme_purchases_number") + @Schema(description="主题购买次数") + private Long themePurchasesNumber; + + /** + * 是否删除 + */ + @TableField(value = "deleted") + @Schema(description="是否删除") + private Boolean deleted; + + /** + * 创建时间 + */ + @TableField(value = "created_at") + @Schema(description="创建时间") + private Date createdAt; + + /** + * 更新时间 + */ + @TableField(value = "updated_at") + @Schema(description="更新时间") + private Date updatedAt; +} \ No newline at end of file diff --git a/src/main/java/com/yolo/keyborad/model/vo/themes/KeyboradThemesRespVO.java b/src/main/java/com/yolo/keyborad/model/vo/themes/KeyboradThemesRespVO.java new file mode 100644 index 0000000..a18d3a0 --- /dev/null +++ b/src/main/java/com/yolo/keyborad/model/vo/themes/KeyboradThemesRespVO.java @@ -0,0 +1,62 @@ +package com.yolo.keyborad.model.vo.themes; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +/* + * @author: ziin + * @date: 2025/12/9 + */ +@Schema(description = "主题返回对象") +@Data +public class KeyboradThemesRespVO { + /** + * 主键 Id + */ + @Schema(description = "主键 Id") + private Long id; + + /** + * 键盘皮肤名称 + */ + @Schema(description = "键盘皮肤名称") + private String themeName; + + /** + * 键盘价格 + */ + @Schema(description = "键盘价格") + private BigDecimal themePrice; + + /** + * 主题标签 + */ + @Schema(description = "主题标签") + private String themeTag; + + /** + * 主题下载次数 + */ + @Schema(description = "主题下载次数") + private String themeDownload; + + /** + * 主题风格 + */ + @Schema(description = "主题风格") + private Long themeStyle; + + /** + * 主题状态 + */ + @Schema(description = "主题状态") + private Boolean themeStatus; + + /** + * 主题购买次数 + */ + @Schema(description = "主题购买次数") + private Long themePurchasesNumber; +} diff --git a/src/main/java/com/yolo/keyborad/service/KeyboardThemeStylesService.java b/src/main/java/com/yolo/keyborad/service/KeyboardThemeStylesService.java new file mode 100644 index 0000000..29dfd84 --- /dev/null +++ b/src/main/java/com/yolo/keyborad/service/KeyboardThemeStylesService.java @@ -0,0 +1,13 @@ +package com.yolo.keyborad.service; + +import com.yolo.keyborad.model.entity.KeyboardThemeStyles; +import com.baomidou.mybatisplus.extension.service.IService; + /* +* @author: ziin +* @date: 2025/12/9 15:20 +*/ + +public interface KeyboardThemeStylesService extends IService{ + + +} diff --git a/src/main/java/com/yolo/keyborad/service/KeyboradThemesService.java b/src/main/java/com/yolo/keyborad/service/KeyboradThemesService.java new file mode 100644 index 0000000..234a1b5 --- /dev/null +++ b/src/main/java/com/yolo/keyborad/service/KeyboradThemesService.java @@ -0,0 +1,28 @@ +package com.yolo.keyborad.service; + +import com.yolo.keyborad.model.entity.KeyboradThemes; +import com.baomidou.mybatisplus.extension.service.IService; +import com.yolo.keyborad.model.vo.themes.KeyboradThemesRespVO; + +import java.util.List; +/* +* @author: ziin +* @date: 2025/12/9 14:51 +*/ + +public interface KeyboradThemesService extends IService{ + + /** + * 查询所有主题列表(未删除且上架) + * @return 主题列表 + */ + List selectAllThemes(); + + /** + * 按主题风格查询主题列表(未删除且上架) + * @param themeStyle 主题风格 + * @return 主题列表 + */ + List selectThemesByStyle(Long themeStyle); + +} diff --git a/src/main/java/com/yolo/keyborad/service/impl/KeyboardThemeStylesServiceImpl.java b/src/main/java/com/yolo/keyborad/service/impl/KeyboardThemeStylesServiceImpl.java new file mode 100644 index 0000000..43a2880 --- /dev/null +++ b/src/main/java/com/yolo/keyborad/service/impl/KeyboardThemeStylesServiceImpl.java @@ -0,0 +1,18 @@ +package com.yolo.keyborad.service.impl; + +import org.springframework.stereotype.Service; +import org.springframework.beans.factory.annotation.Autowired; +import java.util.List; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.yolo.keyborad.mapper.KeyboardThemeStylesMapper; +import com.yolo.keyborad.model.entity.KeyboardThemeStyles; +import com.yolo.keyborad.service.KeyboardThemeStylesService; +/* +* @author: ziin +* @date: 2025/12/9 15:20 +*/ + +@Service +public class KeyboardThemeStylesServiceImpl extends ServiceImpl implements KeyboardThemeStylesService{ + +} diff --git a/src/main/java/com/yolo/keyborad/service/impl/KeyboradThemesServiceImpl.java b/src/main/java/com/yolo/keyborad/service/impl/KeyboradThemesServiceImpl.java new file mode 100644 index 0000000..ebff0a5 --- /dev/null +++ b/src/main/java/com/yolo/keyborad/service/impl/KeyboradThemesServiceImpl.java @@ -0,0 +1,38 @@ +package com.yolo.keyborad.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import org.springframework.stereotype.Service; +import org.springframework.beans.factory.annotation.Autowired; +import java.util.List; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.yolo.keyborad.mapper.KeyboradThemesMapper; +import com.yolo.keyborad.model.entity.KeyboradThemes; +import com.yolo.keyborad.model.vo.themes.KeyboradThemesRespVO; +import com.yolo.keyborad.service.KeyboradThemesService; +/* +* @author: ziin +* @date: 2025/12/9 14:51 +*/ + +@Service +public class KeyboradThemesServiceImpl extends ServiceImpl implements KeyboradThemesService{ + + @Override + public List selectAllThemes() { + List themesList = this.lambdaQuery() + .eq(KeyboradThemes::getDeleted, false) + .eq(KeyboradThemes::getThemeStatus, false) + .list(); + return BeanUtil.copyToList(themesList, KeyboradThemesRespVO.class); + } + + @Override + public List selectThemesByStyle(Long themeStyle) { + List themesList = this.lambdaQuery() + .eq(KeyboradThemes::getDeleted, false) + .eq(KeyboradThemes::getThemeStatus, false) + .eq(KeyboradThemes::getThemeStyle, themeStyle) + .list(); + return BeanUtil.copyToList(themesList, KeyboradThemesRespVO.class); + } +} diff --git a/src/main/resources/mapper/KeyboardThemeStylesMapper.xml b/src/main/resources/mapper/KeyboardThemeStylesMapper.xml new file mode 100644 index 0000000..b788332 --- /dev/null +++ b/src/main/resources/mapper/KeyboardThemeStylesMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + id, style_name, deleted, created_at, updated_at + + \ No newline at end of file diff --git a/src/main/resources/mapper/KeyboradThemesMapper.xml b/src/main/resources/mapper/KeyboradThemesMapper.xml new file mode 100644 index 0000000..4dc7809 --- /dev/null +++ b/src/main/resources/mapper/KeyboradThemesMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + id, theme_name, theme_price, theme_tag, theme_download, theme_style, theme_status, + theme_purchases_number, deleted, created_at, updated_at + + \ No newline at end of file