feat(themes): 支持主题标签数组存储与按风格查询

- 新增 StringArrayTypeHandler 实现 PostgreSQL text[] ↔ Java String[] 映射
- 将 theme_tag 字段类型由 VARCHAR 改为 ARRAY,实体与 VO 同步调整为 String[]
- 移除废弃的 selectAllThemes 方法,统一使用 selectThemesByStyle(Long)
- 9999 风格 ID 保留查询全部上架主题逻辑,其余按风格过滤
- 开放 /themes/listByStyle 接口免鉴权,并修正 theme_status=true 查询条件
This commit is contained in:
2025-12-10 15:55:55 +08:00
parent 0447959f52
commit 5227b81acb
12 changed files with 117 additions and 27 deletions

View File

@@ -5,7 +5,23 @@ spring:
username: root
password: 123asd
# 日志配置
logging:
level:
# 设置 mapper 包的日志级别为 DEBUG打印 SQL 语句
com.yolo.keyborad.mapper: DEBUG
# 设置根日志级别
root: INFO
# Spring 框架日志
org.springframework: INFO
# MyBatis 日志
org.mybatis: DEBUG
pattern:
# 彩色控制台日志格式
# 时间-无颜色,日志级别-根据级别变色进程ID-品红,线程-黄色,类名-青色,消息-默认色
console: "%d{yyyy-MM-dd HH:mm:ss.SSS} | %clr(%-5level){highlight} %clr(${PID:- }){magenta} | %clr(%-15thread){yellow} %clr(%-50logger{50}){cyan} | %msg%n"
knife4j:
enable: true
openapi:

View File

@@ -3,4 +3,28 @@ spring:
driver-class-name: org.postgresql.Driver
url: jdbc:postgresql://localhost:5432/keyborad_db
username: root
password: 123asd
password: 123asd
# 生产环境日志配置
logging:
level:
# 生产环境不打印 SQL 日志
com.yolo.keyborad.mapper: INFO
# 设置根日志级别
root: INFO
# Spring 框架日志
org.springframework: WARN
# MyBatis 日志
org.mybatis: WARN
pattern:
# 生产环境控制台日志格式
console: "%d{yyyy-MM-dd HH:mm:ss.SSS} | %clr(%-5level){highlight} %clr(${PID:- }){magenta} | %clr(%-15thread){yellow} %clr(%-50logger{50}){cyan} | %msg%n"
# 文件日志格式(无颜色代码)
file: "%d{yyyy-MM-dd HH:mm:ss.SSS} | %-5level ${PID:- } | %-15thread %-50logger{50} | %msg%n"
file:
# 生产环境日志文件路径
name: logs/keyborad-backend.log
# 日志文件大小限制
max-size: 10MB
# 保留的日志文件数量
max-history: 30

View File

@@ -28,6 +28,10 @@ spring:
port: 6379
host: localhost
database: 0
# 启用 ANSI 彩色输出
output:
ansi:
enabled: always
server:
port: 7529
@@ -46,6 +50,8 @@ mybatis-plus:
logic-delete-field: isDelete # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
logic-delete-value: 1 # 逻辑已删除值(默认为 1)
logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
# 扫描 TypeHandler 包
type-handlers-package: com.yolo.keyborad.typehandler
appid: loveKeyboard
appsecret: kZJM39HYvhxwbJkG1fmquQRVkQiLAh2H

View File

@@ -14,7 +14,7 @@
<result column="updated_at" jdbcType="TIMESTAMP" property="updatedAt" />
<result column="prompt" jdbcType="VARCHAR" property="prompt" />
<result column="rank" jdbcType="INTEGER" property="rank" />
<result column="emoji" jdbcType="BOOLEAN" property="emoji" />
<result column="emoji" jdbcType="VARCHAR" property="emoji" />
</resultMap>
<sql id="Base_Column_List">
id, character_name, "character_background", avatar_url, download, tag, deleted, created_at,

View File

@@ -7,7 +7,7 @@
<id column="id" jdbcType="BIGINT" property="id" />
<result column="theme_name" jdbcType="VARCHAR" property="themeName" />
<result column="theme_price" jdbcType="NUMERIC" property="themePrice" />
<result column="theme_tag" jdbcType="VARCHAR" property="themeTag" />
<result column="theme_tag" jdbcType="ARRAY" property="themeTag" typeHandler="com.yolo.keyborad.typehandler.StringArrayTypeHandler" />
<result column="theme_download" jdbcType="VARCHAR" property="themeDownload" />
<result column="theme_style" jdbcType="BIGINT" property="themeStyle" />
<result column="theme_status" jdbcType="BOOLEAN" property="themeStatus" />