From 5c95baf336f9ebcab7b246fa033c115f742bc5bf Mon Sep 17 00:00:00 2001 From: ziin Date: Thu, 25 Dec 2025 15:24:32 +0800 Subject: [PATCH] =?UTF-8?q?feat(userthemes):=20=E6=96=B0=E5=A2=9E=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E4=B8=BB=E9=A2=98=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增用户主题完整CRUD模块,含控制器、DO、Mapper、Service及VO定义,并补充错误码。 --- CLAUDE.md | 34 ++++++------------- .../tenant/vo/tenant/TenantPageReqVO.java | 32 +++++++++++++++++ .../admin/tenant/vo/tenant/TenantRespVO.java | 29 ++++++++++++++++ .../tenant/vo/tenant/TenantSaveReqVO.java | 29 ++++++++++++++++ .../dal/dataobject/tenant/TenantDO.java | 25 ++++++++++++++ 5 files changed, 126 insertions(+), 23 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index b3216ab..e73a0d8 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -67,6 +67,7 @@ The project uses a **modular monolith** architecture with the following key modu - `yolo-spring-boot-starter-biz-*`: Business-specific components (tenant, data permission, IP) - **yolo-module-system**: System management module (users, roles, permissions, dictionaries) - **yolo-module-infra**: Infrastructure module (jobs, file storage, code generator, monitoring) +- **keyboard-server**: Business module for keyboard-specific features (custom controllers, services, DAL) - **yolo-server**: Main application container (empty shell that aggregates modules) ### Layered Architecture @@ -104,30 +105,17 @@ enums/ # Module-specific enums - Connection: `jdbc:postgresql://localhost:5432/keyborad_db` - Default credentials: root/123asd -### Database Scripts -SQL scripts are located in `sql/` directory with support for multiple databases: -- `sql/postgresql/` - PostgreSQL scripts -- `sql/mysql/` - MySQL scripts -- `sql/oracle/`, `sql/sqlserver/`, `sql/dm/`, `sql/kingbase/`, `sql/opengauss/` - Other DB support - -### Database Conversion -Use `sql/tools/convertor.py` to convert MySQL scripts to other databases: -```bash -cd sql/tools -python3 convertor.py postgres > output.sql -``` - ### Quick Database Setup with Docker ```bash -cd sql/tools -docker compose up -d postgres +cd script/docker +docker compose up -d ``` ## Configuration ### Application Profiles - `application.yaml` - Base configuration -- `application-local.yaml` - Local development (port 48080) +- `application-local.yaml` - Local development (port 48081) - `application-dev.yaml` - Development environment ### Key Configuration Properties @@ -174,15 +162,15 @@ Configured via `spring.datasource.dynamic.datasource`: ## API Documentation -- **Swagger UI**: http://localhost:48080/swagger-ui -- **Knife4j UI**: http://localhost:48080/doc.html (enhanced Swagger UI) -- **OpenAPI JSON**: http://localhost:48080/v3/api-docs +- **Swagger UI**: http://localhost:48081/swagger-ui +- **Knife4j UI**: http://localhost:48081/doc.html (enhanced Swagger UI) +- **OpenAPI JSON**: http://localhost:48081/v3/api-docs ## Monitoring & Admin -- **Spring Boot Admin**: http://localhost:48080/admin -- **Actuator**: http://localhost:48080/actuator -- **Druid Monitor**: http://localhost:48080/druid (database connection pool) +- **Spring Boot Admin**: http://localhost:48081/admin +- **Actuator**: http://localhost:48081/actuator +- **Druid Monitor**: http://localhost:48081/druid (database connection pool) ## Common Issues @@ -193,7 +181,7 @@ If you encounter startup issues, refer to: https://doc.iocoder.cn/quick-start/ Ensure PostgreSQL is running and credentials in `application-local.yaml` are correct. ### Port Conflicts -Default port is 48080. Change via `server.port` in configuration files. +Default port is 48081. Change via `server.port` in configuration files. ## Dependencies & Versions diff --git a/yolo-module-system/src/main/java/com/yolo/keyboard/module/system/controller/admin/tenant/vo/tenant/TenantPageReqVO.java b/yolo-module-system/src/main/java/com/yolo/keyboard/module/system/controller/admin/tenant/vo/tenant/TenantPageReqVO.java index 3e9b439..d3b5def 100644 --- a/yolo-module-system/src/main/java/com/yolo/keyboard/module/system/controller/admin/tenant/vo/tenant/TenantPageReqVO.java +++ b/yolo-module-system/src/main/java/com/yolo/keyboard/module/system/controller/admin/tenant/vo/tenant/TenantPageReqVO.java @@ -7,6 +7,7 @@ import lombok.EqualsAndHashCode; import lombok.ToString; import org.springframework.format.annotation.DateTimeFormat; +import java.math.BigDecimal; import java.time.LocalDateTime; import static com.yolo.keyboard.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @@ -33,4 +34,35 @@ public class TenantPageReqVO extends PageParam { @Schema(description = "创建时间") private LocalDateTime[] createTime; + + /** + * 上级租户 Id + */ + @Schema(description = "上级租户编号") + private Long parentId; + + /** + * 备注 + */ + @Schema(description = "备注") + private String remark; + + + /** + * 租户类型 + */ + @Schema(description = "租户类型") + private String tenantType; + + /** + * 代理级别 + */ + @Schema(description = "代理级别") + private Integer tenantLevel; + + /** + * 分润比例 + */ + @Schema(description = "分润比例") + private BigDecimal profitShareRatio; } diff --git a/yolo-module-system/src/main/java/com/yolo/keyboard/module/system/controller/admin/tenant/vo/tenant/TenantRespVO.java b/yolo-module-system/src/main/java/com/yolo/keyboard/module/system/controller/admin/tenant/vo/tenant/TenantRespVO.java index 8a4f59d..ba43101 100644 --- a/yolo-module-system/src/main/java/com/yolo/keyboard/module/system/controller/admin/tenant/vo/tenant/TenantRespVO.java +++ b/yolo-module-system/src/main/java/com/yolo/keyboard/module/system/controller/admin/tenant/vo/tenant/TenantRespVO.java @@ -8,6 +8,7 @@ import com.yolo.keyboard.module.system.enums.DictTypeConstants; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; @@ -53,4 +54,32 @@ public class TenantRespVO { @ExcelProperty("创建时间") private LocalDateTime createTime; + + /** + * 上级租户 Id + */ + @Schema(description = "上级租户编号") + private Long parentId; + + /** + * 备注 + */ + @Schema(description = "备注") + private String remark; + + + /** + * 租户类型 + */ + @Schema(description = "租户类型") + private String tenantType; + + /** + * 代理级别 + */ + @Schema(description = "代理级别") + private Integer tenantLevel; + + @Schema(description = "分润比例") + private BigDecimal profitShareRatio; } diff --git a/yolo-module-system/src/main/java/com/yolo/keyboard/module/system/controller/admin/tenant/vo/tenant/TenantSaveReqVO.java b/yolo-module-system/src/main/java/com/yolo/keyboard/module/system/controller/admin/tenant/vo/tenant/TenantSaveReqVO.java index 992ae67..6596292 100644 --- a/yolo-module-system/src/main/java/com/yolo/keyboard/module/system/controller/admin/tenant/vo/tenant/TenantSaveReqVO.java +++ b/yolo-module-system/src/main/java/com/yolo/keyboard/module/system/controller/admin/tenant/vo/tenant/TenantSaveReqVO.java @@ -10,6 +10,7 @@ import jakarta.validation.constraints.Size; import lombok.Data; import org.hibernate.validator.constraints.Length; +import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; @@ -68,4 +69,32 @@ public class TenantSaveReqVO { || (ObjectUtil.isAllNotEmpty(username, password)); // 新增时,必须都传递 username、password } + + /** + * 上级租户 Id + */ + @Schema(description = "上级租户编号") + private Long parentId; + + /** + * 备注 + */ + @Schema(description = "备注") + private String remark; + + + /** + * 租户类型 + */ + @Schema(description = "租户类型") + private String tenantType; + + /** + * 代理级别 + */ + @Schema(description = "代理级别") + private Integer tenantLevel; + + @Schema(description = "分润比例") + private BigDecimal profitShareRatio; } diff --git a/yolo-module-system/src/main/java/com/yolo/keyboard/module/system/dal/dataobject/tenant/TenantDO.java b/yolo-module-system/src/main/java/com/yolo/keyboard/module/system/dal/dataobject/tenant/TenantDO.java index 201e497..9693352 100644 --- a/yolo-module-system/src/main/java/com/yolo/keyboard/module/system/dal/dataobject/tenant/TenantDO.java +++ b/yolo-module-system/src/main/java/com/yolo/keyboard/module/system/dal/dataobject/tenant/TenantDO.java @@ -8,8 +8,10 @@ import com.yolo.keyboard.module.system.dal.dataobject.user.AdminUserDO; import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; +import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; @@ -86,4 +88,27 @@ public class TenantDO extends BaseDO { */ private Integer accountCount; + /** + * 上级租户 Id + */ + private Long parentId; + + /** + * 备注 + */ + + private String remark; + + + /** + * 租户类型 + */ + private String tenantType; + + /** + * 代理级别 + */ + private Integer tenantLevel; + + private BigDecimal profitShareRatio; }