From 495485cc078cc6486a31fa1e7d14b83a1b4f55ad Mon Sep 17 00:00:00 2001 From: ziin Date: Tue, 16 Dec 2025 16:59:56 +0800 Subject: [PATCH] =?UTF-8?q?feat(quota):=20=E6=96=B0=E5=A2=9E=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E9=A2=9D=E5=BA=A6=E6=80=BB=E8=AE=A1=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=20=E5=A2=9E=E5=8A=A0=E7=94=A8=E6=88=B7=E5=85=8D=E8=B4=B9?= =?UTF-8?q?=E4=BD=93=E9=AA=8C=E9=A2=9D=E5=BA=A6=E9=85=8D=E7=BD=AE=EF=BC=8C?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=96=B0=E7=94=A8=E6=88=B7=E6=B3=A8=E5=86=8C?= =?UTF-8?q?=E6=97=B6=E7=9A=84=E9=A2=9D=E5=BA=A6=E5=88=86=E9=85=8D=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/KeyboardUserQuotaTotalMapper.java | 12 ++++ .../model/entity/KeyboardUserQuotaTotal.java | 64 +++++++++++++++++++ .../KeyboardUserQuotaTotalService.java | 13 ++++ .../KeyboardUserQuotaTotalServiceImpl.java | 18 ++++++ src/main/resources/application-dev.yml | 6 ++ src/main/resources/application-prod.yml | 6 ++ .../mapper/KeyboardUserQuotaTotalMapper.xml | 18 ++++++ 7 files changed, 137 insertions(+) create mode 100644 src/main/java/com/yolo/keyborad/mapper/KeyboardUserQuotaTotalMapper.java create mode 100644 src/main/java/com/yolo/keyborad/model/entity/KeyboardUserQuotaTotal.java create mode 100644 src/main/java/com/yolo/keyborad/service/KeyboardUserQuotaTotalService.java create mode 100644 src/main/java/com/yolo/keyborad/service/impl/KeyboardUserQuotaTotalServiceImpl.java create mode 100644 src/main/resources/mapper/KeyboardUserQuotaTotalMapper.xml diff --git a/src/main/java/com/yolo/keyborad/mapper/KeyboardUserQuotaTotalMapper.java b/src/main/java/com/yolo/keyborad/mapper/KeyboardUserQuotaTotalMapper.java new file mode 100644 index 0000000..1e014ba --- /dev/null +++ b/src/main/java/com/yolo/keyborad/mapper/KeyboardUserQuotaTotalMapper.java @@ -0,0 +1,12 @@ +package com.yolo.keyborad.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.yolo.keyborad.model.entity.KeyboardUserQuotaTotal; + +/* +* @author: ziin +* @date: 2025/12/16 16:00 +*/ + +public interface KeyboardUserQuotaTotalMapper extends BaseMapper { +} \ No newline at end of file diff --git a/src/main/java/com/yolo/keyborad/model/entity/KeyboardUserQuotaTotal.java b/src/main/java/com/yolo/keyborad/model/entity/KeyboardUserQuotaTotal.java new file mode 100644 index 0000000..e3975b4 --- /dev/null +++ b/src/main/java/com/yolo/keyborad/model/entity/KeyboardUserQuotaTotal.java @@ -0,0 +1,64 @@ +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/16 16:00 +*/ + +/** + * 用户免费功能永久总次数额度表(所有功能共用) + */ +@Schema(description="用户免费功能永久总次数额度表(所有功能共用)") +@Data +@TableName(value = "keyboard_user_quota_total") +public class KeyboardUserQuotaTotal { + /** + * 用户唯一ID,对应系统用户 + */ + @TableId(value = "user_id", type = IdType.AUTO) + @Schema(description="用户唯一ID,对应系统用户") + private Long userId; + + /** + * 免费体验的永久总次数上限(可通过运营活动增加) + */ + @TableField(value = "total_quota") + @Schema(description="免费体验的永久总次数上限(可通过运营活动增加)") + private Integer totalQuota; + + /** + * 已消耗的免费次数 + */ + @TableField(value = "used_quota") + @Schema(description="已消耗的免费次数") + private Integer usedQuota; + + /** + * 乐观锁版本号(并发控制预留字段) + */ + @TableField(value = "version") + @Schema(description="乐观锁版本号(并发控制预留字段)") + private Integer version; + + /** + * 首次创建额度记录的时间(通常为注册时间) + */ + @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/service/KeyboardUserQuotaTotalService.java b/src/main/java/com/yolo/keyborad/service/KeyboardUserQuotaTotalService.java new file mode 100644 index 0000000..faae03d --- /dev/null +++ b/src/main/java/com/yolo/keyborad/service/KeyboardUserQuotaTotalService.java @@ -0,0 +1,13 @@ +package com.yolo.keyborad.service; + +import com.yolo.keyborad.model.entity.KeyboardUserQuotaTotal; +import com.baomidou.mybatisplus.extension.service.IService; + /* +* @author: ziin +* @date: 2025/12/16 16:00 +*/ + +public interface KeyboardUserQuotaTotalService extends IService{ + + +} diff --git a/src/main/java/com/yolo/keyborad/service/impl/KeyboardUserQuotaTotalServiceImpl.java b/src/main/java/com/yolo/keyborad/service/impl/KeyboardUserQuotaTotalServiceImpl.java new file mode 100644 index 0000000..7bfa1e2 --- /dev/null +++ b/src/main/java/com/yolo/keyborad/service/impl/KeyboardUserQuotaTotalServiceImpl.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.model.entity.KeyboardUserQuotaTotal; +import com.yolo.keyborad.mapper.KeyboardUserQuotaTotalMapper; +import com.yolo.keyborad.service.KeyboardUserQuotaTotalService; +/* +* @author: ziin +* @date: 2025/12/16 16:00 +*/ + +@Service +public class KeyboardUserQuotaTotalServiceImpl extends ServiceImpl implements KeyboardUserQuotaTotalService{ + +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index f86a8b1..3971298 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -76,6 +76,12 @@ mailgun: from-email: no-reply@yourdomain.com # 发件人邮箱 from-name: Key Of Love # 发件人名称(可选) +# 用户注册配置 +user: + register: + # 新用户注册时的免费体验额度 + free-trial-credits: 5 + ############## Sa-Token 配置 (文档: https://sa-token.cc) ############## diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index d0a1dbe..383137a 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -28,3 +28,9 @@ logging: max-size: 10MB # 保留的日志文件数量 max-history: 30 + +# 用户注册配置 +user: + register: + # 新用户注册时的免费体验额度 + free-trial-credits: 5 diff --git a/src/main/resources/mapper/KeyboardUserQuotaTotalMapper.xml b/src/main/resources/mapper/KeyboardUserQuotaTotalMapper.xml new file mode 100644 index 0000000..be854c6 --- /dev/null +++ b/src/main/resources/mapper/KeyboardUserQuotaTotalMapper.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + user_id, total_quota, used_quota, version, created_at, updated_at + + \ No newline at end of file