From 26fc4370dc260ecbde517a59331c3cb3e986d24c Mon Sep 17 00:00:00 2001 From: Kevin-Laptop Date: Tue, 8 Apr 2025 14:29:54 +0800 Subject: [PATCH] init --- .cursor/rules/springboot.mdc | 57 +++++++++ .vscode/settings.json | 22 ++++ pom.xml | 108 ++++++++++++++++++ weight-loss-camp-api-base/pom.xml | 33 ++++++ .../api/base/constant/WebParamConstant.java | 11 ++ .../api/base/core/ApiErrorCode.java | 20 ++++ .../api/base/core/ApiResult.java | 40 +++++++ .../weightlosscamp/api/base/core/IdParam.java | 11 ++ .../api/base/core/PageParam.java | 14 +++ .../api/base/entity/BaseEntity.java | 69 +++++++++++ .../api/base/exception/ApiException.java | 27 +++++ .../api/base/filter/WebLogFilter.java | 83 ++++++++++++++ .../api/base/filter/WebParamFilter.java | 56 +++++++++ .../api/base/util/ApiAssert.java | 33 ++++++ .../api/base/validation/group/Create.java | 7 ++ .../api/base/validation/group/Update.java | 7 ++ .../api/base/web/GlobalExceptionHandler.java | 43 +++++++ .../api/base/web/WebContextHolder.java | 40 +++++++ .../api/base/constant/WebParamConstant.class | Bin 0 -> 554 bytes .../api/base/core/ApiErrorCode.class | Bin 0 -> 1886 bytes .../api/base/core/ApiResult.class | Bin 0 -> 4775 bytes .../api/base/core/IdParam.class | Bin 0 -> 1850 bytes .../api/base/core/PageParam.class | Bin 0 -> 3461 bytes .../api/base/entity/BaseEntity.class | Bin 0 -> 6408 bytes .../api/base/exception/ApiException.class | Bin 0 -> 1067 bytes .../api/base/filter/WebLogFilter.class | Bin 0 -> 4446 bytes .../api/base/filter/WebParamFilter.class | Bin 0 -> 2164 bytes .../api/base/util/ApiAssert.class | Bin 0 -> 1250 bytes .../api/base/validation/group/Create.class | Bin 0 -> 143 bytes .../api/base/validation/group/Update.class | Bin 0 -> 143 bytes .../api/base/web/GlobalExceptionHandler.class | Bin 0 -> 2967 bytes .../api/base/web/WebContextHolder.class | Bin 0 -> 1471 bytes .../target/maven-archiver/pom.properties | 3 + .../compile/default-compile/inputFiles.lst | 14 +++ ...ight-loss-camp-api-base-1.0.0-SNAPSHOT.jar | Bin 0 -> 20029 bytes weight-loss-camp-api-data/pom.xml | 44 +++++++ .../api/data/config/CustomTenantHandler.java | 30 +++++ .../api/data/config/MybatisPlusConfig.java | 32 ++++++ .../config/MybatisPlusFieldFillConfig.java | 35 ++++++ .../api/data/config/CustomTenantHandler.class | Bin 0 -> 997 bytes .../api/data/config/MybatisPlusConfig.class | Bin 0 -> 1981 bytes .../config/MybatisPlusFieldFillConfig.class | Bin 0 -> 1579 bytes .../target/maven-archiver/pom.properties | 3 + .../compile/default-compile/inputFiles.lst | 3 + ...ight-loss-camp-api-data-1.0.0-SNAPSHOT.jar | Bin 0 -> 5168 bytes weight-loss-camp-service-api/pom.xml | 49 ++++++++ .../WeightLossCampServiceApiApplication.java | 17 +++ .../src/main/resources/application.yml | 37 ++++++ .../src/main/resources/log4j2.xml | 30 +++++ .../target/classes/application.yml | 37 ++++++ .../WeightLossCampServiceApiApplication.class | Bin 0 -> 874 bytes .../target/classes/log4j2.xml | 30 +++++ 52 files changed, 1045 insertions(+) create mode 100644 .cursor/rules/springboot.mdc create mode 100644 .vscode/settings.json create mode 100644 pom.xml create mode 100644 weight-loss-camp-api-base/pom.xml create mode 100644 weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/constant/WebParamConstant.java create mode 100644 weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/core/ApiErrorCode.java create mode 100644 weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/core/ApiResult.java create mode 100644 weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/core/IdParam.java create mode 100644 weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/core/PageParam.java create mode 100644 weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/entity/BaseEntity.java create mode 100644 weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/exception/ApiException.java create mode 100644 weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/filter/WebLogFilter.java create mode 100644 weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/filter/WebParamFilter.java create mode 100644 weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/util/ApiAssert.java create mode 100644 weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/validation/group/Create.java create mode 100644 weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/validation/group/Update.java create mode 100644 weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/web/GlobalExceptionHandler.java create mode 100644 weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/web/WebContextHolder.java create mode 100644 weight-loss-camp-api-base/target/classes/com/wjbl/weightlosscamp/api/base/constant/WebParamConstant.class create mode 100644 weight-loss-camp-api-base/target/classes/com/wjbl/weightlosscamp/api/base/core/ApiErrorCode.class create mode 100644 weight-loss-camp-api-base/target/classes/com/wjbl/weightlosscamp/api/base/core/ApiResult.class create mode 100644 weight-loss-camp-api-base/target/classes/com/wjbl/weightlosscamp/api/base/core/IdParam.class create mode 100644 weight-loss-camp-api-base/target/classes/com/wjbl/weightlosscamp/api/base/core/PageParam.class create mode 100644 weight-loss-camp-api-base/target/classes/com/wjbl/weightlosscamp/api/base/entity/BaseEntity.class create mode 100644 weight-loss-camp-api-base/target/classes/com/wjbl/weightlosscamp/api/base/exception/ApiException.class create mode 100644 weight-loss-camp-api-base/target/classes/com/wjbl/weightlosscamp/api/base/filter/WebLogFilter.class create mode 100644 weight-loss-camp-api-base/target/classes/com/wjbl/weightlosscamp/api/base/filter/WebParamFilter.class create mode 100644 weight-loss-camp-api-base/target/classes/com/wjbl/weightlosscamp/api/base/util/ApiAssert.class create mode 100644 weight-loss-camp-api-base/target/classes/com/wjbl/weightlosscamp/api/base/validation/group/Create.class create mode 100644 weight-loss-camp-api-base/target/classes/com/wjbl/weightlosscamp/api/base/validation/group/Update.class create mode 100644 weight-loss-camp-api-base/target/classes/com/wjbl/weightlosscamp/api/base/web/GlobalExceptionHandler.class create mode 100644 weight-loss-camp-api-base/target/classes/com/wjbl/weightlosscamp/api/base/web/WebContextHolder.class create mode 100644 weight-loss-camp-api-base/target/maven-archiver/pom.properties create mode 100644 weight-loss-camp-api-base/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 weight-loss-camp-api-base/target/weight-loss-camp-api-base-1.0.0-SNAPSHOT.jar create mode 100644 weight-loss-camp-api-data/pom.xml create mode 100644 weight-loss-camp-api-data/src/main/java/com/wjbl/weightlosscamp/api/data/config/CustomTenantHandler.java create mode 100644 weight-loss-camp-api-data/src/main/java/com/wjbl/weightlosscamp/api/data/config/MybatisPlusConfig.java create mode 100644 weight-loss-camp-api-data/src/main/java/com/wjbl/weightlosscamp/api/data/config/MybatisPlusFieldFillConfig.java create mode 100644 weight-loss-camp-api-data/target/classes/com/wjbl/weightlosscamp/api/data/config/CustomTenantHandler.class create mode 100644 weight-loss-camp-api-data/target/classes/com/wjbl/weightlosscamp/api/data/config/MybatisPlusConfig.class create mode 100644 weight-loss-camp-api-data/target/classes/com/wjbl/weightlosscamp/api/data/config/MybatisPlusFieldFillConfig.class create mode 100644 weight-loss-camp-api-data/target/maven-archiver/pom.properties create mode 100644 weight-loss-camp-api-data/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 weight-loss-camp-api-data/target/weight-loss-camp-api-data-1.0.0-SNAPSHOT.jar create mode 100644 weight-loss-camp-service-api/pom.xml create mode 100644 weight-loss-camp-service-api/src/main/java/com/wjbl/weightlosscamp/service/api/WeightLossCampServiceApiApplication.java create mode 100644 weight-loss-camp-service-api/src/main/resources/application.yml create mode 100644 weight-loss-camp-service-api/src/main/resources/log4j2.xml create mode 100644 weight-loss-camp-service-api/target/classes/application.yml create mode 100644 weight-loss-camp-service-api/target/classes/com/wjbl/weightlosscamp/service/api/WeightLossCampServiceApiApplication.class create mode 100644 weight-loss-camp-service-api/target/classes/log4j2.xml diff --git a/.cursor/rules/springboot.mdc b/.cursor/rules/springboot.mdc new file mode 100644 index 0000000..a727beb --- /dev/null +++ b/.cursor/rules/springboot.mdc @@ -0,0 +1,57 @@ +--- +description: +globs: +alwaysApply: true +--- +您是Java编程、Spring Boot、Spring Framework、Maven、JUnit和相关Java技术方面的专家。 +代码风格和结构 + -使用准确的Spring Boot示例编写干净、高效且文档齐全的Java代码。 + -在整个代码中使用Spring Boot最佳实践和约定。 + -在创建Web服务时实施RESTful API设计模式。 + -按照camelCase约定使用描述性方法和变量名。 + -构建Spring Boot应用程序:控制器、服务、存储库、模型、配置。 +Spring Boot规范 + -使用Spring Boot启动器进行快速项目设置和依赖管理。 + -正确使用注释(例如@SpringBootApplication、@RestController、@Service)。 + -有效利用Spring Boot的自动配置功能。 + -使用@ControlllerAddge和@ExceptionHandler实施正确的异常处理。 +命名约定 + -将PascalCase用于类名(例如,UserController、OrderService)。 + -将camelCase用于方法和变量名(例如,findUserById、isOrderValid)。 + -将ALL_CAPS用于常量(例如,MAX_RETRY_ATTEMPTS、DEFAULT_PAGE_SIZE)。 +Java和Spring Boot用法 + -在适用的情况下使用Java21或更高版本的功能(例如,记录、密封类、模式匹配)。 + -利用Spring Boot 3.x功能和最佳实践。 + -在适用的情况下将Spring Data JPA用于数据库操作。 + -使用Bean验证(例如,@Valid、自定义验证器)实现正确的验证。 +配置和属性 + -使用application.properties或application.yml进行配置。 + -使用Spring Profiles实现environment-specific配置。 + -使用@ConfigurationProperties进行类型安全的配置属性。依赖注入和IoC + -使用构造函数注入而不是字段注入以获得更好的可测试性。 + -利用Spring的IoC容器来管理bean生命周期。 +测试 + -使用JUnit 5和Spring Boot Test编写单元测试。 + -使用@SpringBootTest实现集成测试。 + -使用@DataJpaTest进行存储库层测试。性能和可扩展性 + -使用Spring Cache抽象实现缓存策略。-使用@Async进行异步处理进行非阻塞操作。 + -实施适当的数据库索引和查询优化。 +日志记录和监控 + -使用SLF4J和Logback进行日志记录。 + -实施适当的日志级别(ERROR、WARN、INFO、DEBUG)。 + -使用Spring Boot Actuator进行应用程序监控和指标。 +API文档 + -使用Springdoc OpenAPI(以前的Swagger)进行API留档。 +数据访问和ORM + -使用mybatis plus进行数据库操作。 + -实现适当的实体关系和级联。 +构建和部署 + -使用Maven进行依赖管理和构建流程。 + -为不同的环境(开发、测试、产品)实施适当的配置文件。 +遵循以下最佳实践: + -RESTful API设计(正确使用HTTP方法、状态代码等)。 + -微服务架构(如果适用)。 + -使用Spring的@Async进行异步处理. +所有生成的代码都需要加上java注释,注意父级maven依赖,尽量使用lombok的getter和setter +工程依赖的包使用的版本号都使用父项目中定义的版本,如果父项目不存在则空 + diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..f2dadba --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,22 @@ +{ + "maven.view": "hierarchical", + "java.configuration.updateBuildConfiguration": "automatic", + "cSpell.words": [ + "Appender", + "Appenders", + "baomidou", + "Hikari", + "ibatis", + "jdbc", + "jsqlparser", + "mybatis", + "Nacos", + "projectlombok", + "springframework", + "wjbl", + "xiaoymin", + "zaxxer" + ], + "java.compile.nullAnalysis.mode": "automatic", + "java.format.settings.url": ".vscode/java-formatter.xml" +} diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..c3e96c3 --- /dev/null +++ b/pom.xml @@ -0,0 +1,108 @@ + + + 4.0.0 + + com.wjbl + weight-loss-camp + 1.0.0-SNAPSHOT + pom + + + 21 + ${java.version} + ${java.version} + UTF-8 + UTF-8 + 3.3.10 + 2023.0.5 + 2023.0.3.2 + 3.5.11 + 4.5.0 + + + + weight-loss-camp-api-base + weight-loss-camp-api-data + weight-loss-camp-service-api + + + + + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud.version} + pom + import + + + + + com.alibaba.cloud + spring-cloud-alibaba-dependencies + ${spring-cloud-alibaba.version} + pom + import + + + + + com.baomidou + mybatis-plus-bom + ${mybatis-plus.version} + pom + import + + + + + com.github.xiaoymin + knife4j-openapi3-jakarta-spring-boot-starter + ${knife4j.version} + + + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-logging + + + + + + + org.springframework.boot + spring-boot-starter-log4j2 + + + + + org.projectlombok + lombok + true + + + + + + + + \ No newline at end of file diff --git a/weight-loss-camp-api-base/pom.xml b/weight-loss-camp-api-base/pom.xml new file mode 100644 index 0000000..2cd1fb0 --- /dev/null +++ b/weight-loss-camp-api-base/pom.xml @@ -0,0 +1,33 @@ + + + + com.wjbl + weight-loss-camp + 1.0.0-SNAPSHOT + + 4.0.0 + + weight-loss-camp-api-base + jar + + + + + org.springframework.boot + spring-boot-starter-web + + + + + com.baomidou + mybatis-plus-annotation + + + + + org.springframework.boot + spring-boot-starter-validation + + + \ No newline at end of file diff --git a/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/constant/WebParamConstant.java b/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/constant/WebParamConstant.java new file mode 100644 index 0000000..cb3ef34 --- /dev/null +++ b/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/constant/WebParamConstant.java @@ -0,0 +1,11 @@ +package com.wjbl.weightlosscamp.api.base.constant; + +/** + * Web参数常量 + */ +public class WebParamConstant { + public static final String TENANT_ID = "tenantId"; + public static final String OPERATOR = "operator"; + public static final String OPERATOR_ID = "operatorId"; + public static final String SEQ = "seq"; +} \ No newline at end of file diff --git a/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/core/ApiErrorCode.java b/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/core/ApiErrorCode.java new file mode 100644 index 0000000..1c2f3ac --- /dev/null +++ b/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/core/ApiErrorCode.java @@ -0,0 +1,20 @@ +package com.wjbl.weightlosscamp.api.base.core; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * API错误码枚举 + */ +@Getter +@AllArgsConstructor +public enum ApiErrorCode { + SUCCESS(200, "操作成功"), + FAILED(500, "操作失败"), + VALIDATE_FAILED(404, "参数检验失败"), + UNAUTHORIZED(401, "暂未登录或token已经过期"), + FORBIDDEN(403, "没有相关权限"); + + private final int code; + private final String msg; +} \ No newline at end of file diff --git a/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/core/ApiResult.java b/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/core/ApiResult.java new file mode 100644 index 0000000..dc21664 --- /dev/null +++ b/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/core/ApiResult.java @@ -0,0 +1,40 @@ +package com.wjbl.weightlosscamp.api.base.core; + +import lombok.Data; + +/** + * API响应结果 + * @param 数据类型 + */ +@Data +public class ApiResult { + private int code; + private String msg; + private T data; + + private ApiResult(int code, String msg, T data) { + this.code = code; + this.msg = msg; + this.data = data; + } + + public static ApiResult success() { + return new ApiResult<>(ApiErrorCode.SUCCESS.getCode(), ApiErrorCode.SUCCESS.getMsg(), null); + } + + public static ApiResult success(T data) { + return new ApiResult<>(ApiErrorCode.SUCCESS.getCode(), ApiErrorCode.SUCCESS.getMsg(), data); + } + + public static ApiResult failed(String msg) { + return new ApiResult<>(ApiErrorCode.FAILED.getCode(), msg, null); + } + + public static ApiResult failed(ApiErrorCode errorCode) { + return new ApiResult<>(errorCode.getCode(), errorCode.getMsg(), null); + } + + public static ApiResult failed(int code, String msg) { + return new ApiResult<>(code, msg, null); + } +} \ No newline at end of file diff --git a/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/core/IdParam.java b/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/core/IdParam.java new file mode 100644 index 0000000..a8830ba --- /dev/null +++ b/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/core/IdParam.java @@ -0,0 +1,11 @@ +package com.wjbl.weightlosscamp.api.base.core; + +import lombok.Data; + +/** + * ID请求参数 + */ +@Data +public class IdParam { + private String id; +} \ No newline at end of file diff --git a/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/core/PageParam.java b/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/core/PageParam.java new file mode 100644 index 0000000..d930ffb --- /dev/null +++ b/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/core/PageParam.java @@ -0,0 +1,14 @@ +package com.wjbl.weightlosscamp.api.base.core; + +import lombok.Data; + +/** + * 分页请求参数 + * @param 数据类型 + */ +@Data +public class PageParam { + private Integer page = 1; + private Integer pageSize = 10; + private T data; +} \ No newline at end of file diff --git a/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/entity/BaseEntity.java b/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/entity/BaseEntity.java new file mode 100644 index 0000000..94b6c2d --- /dev/null +++ b/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/entity/BaseEntity.java @@ -0,0 +1,69 @@ +package com.wjbl.weightlosscamp.api.base.entity; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.Version; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 基础实体类 + */ +@Data +public class BaseEntity { + /** + * 租户ID + */ + @TableField(fill = FieldFill.INSERT) + private String tenantId; + + /** + * 创建人ID + */ + @TableField(fill = FieldFill.INSERT) + private String createdById; + + /** + * 创建人 + */ + @TableField(fill = FieldFill.INSERT) + private String createdBy; + + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createdTime; + + /** + * 更新人ID + */ + @TableField(fill = FieldFill.UPDATE) + private String updatedById; + + /** + * 更新人 + */ + @TableField(fill = FieldFill.UPDATE) + private String updatedBy; + + /** + * 更新时间 + */ + @TableField(fill = FieldFill.UPDATE) + private LocalDateTime updatedTime; + + /** + * 逻辑删除 + */ + @TableLogic + private Integer deleted; + + /** + * 版本号 + */ + @Version + private Integer revision; +} \ No newline at end of file diff --git a/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/exception/ApiException.java b/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/exception/ApiException.java new file mode 100644 index 0000000..982768e --- /dev/null +++ b/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/exception/ApiException.java @@ -0,0 +1,27 @@ +package com.wjbl.weightlosscamp.api.base.exception; + +import com.wjbl.weightlosscamp.api.base.core.ApiErrorCode; +import lombok.Getter; + +/** + * API异常 + */ +@Getter +public class ApiException extends RuntimeException { + private final int code; + + public ApiException(String message) { + super(message); + this.code = ApiErrorCode.FAILED.getCode(); + } + + public ApiException(ApiErrorCode errorCode) { + super(errorCode.getMsg()); + this.code = errorCode.getCode(); + } + + public ApiException(int code, String message) { + super(message); + this.code = code; + } +} \ No newline at end of file diff --git a/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/filter/WebLogFilter.java b/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/filter/WebLogFilter.java new file mode 100644 index 0000000..c728ccd --- /dev/null +++ b/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/filter/WebLogFilter.java @@ -0,0 +1,83 @@ +package com.wjbl.weightlosscamp.api.base.filter; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; +import org.springframework.web.filter.OncePerRequestFilter; +import org.springframework.web.util.ContentCachingRequestWrapper; +import org.springframework.web.util.ContentCachingResponseWrapper; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import lombok.extern.slf4j.Slf4j; + +/** + * Web日志过滤器 + */ +@Slf4j +@Component +@Order(2) +public class WebLogFilter extends OncePerRequestFilter { + private final ObjectMapper objectMapper = new ObjectMapper(); + + @SuppressWarnings("null") + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) + throws ServletException, IOException { + ContentCachingRequestWrapper requestWrapper = new ContentCachingRequestWrapper(request); + ContentCachingResponseWrapper responseWrapper = new ContentCachingResponseWrapper(response); + + try { + // 记录请求信息 + logRequest(requestWrapper); + + filterChain.doFilter(requestWrapper, responseWrapper); + + // 记录响应信息 + logResponse(responseWrapper); + + responseWrapper.copyBodyToResponse(); + } finally { + responseWrapper.resetBuffer(); + } + } + + private void logRequest(ContentCachingRequestWrapper request) throws IOException { + Map requestInfo = new HashMap<>(); + requestInfo.put("uri", request.getRequestURI()); + requestInfo.put("method", request.getMethod()); + requestInfo.put("params", request.getParameterMap()); + + byte[] content = request.getContentAsByteArray(); + if (content.length > 0) { + requestInfo.put("body", new String(content, request.getCharacterEncoding())); + } + + log.info("Request: {}", objectMapper.writeValueAsString(requestInfo)); + } + + private void logResponse(ContentCachingResponseWrapper response) throws IOException { + Map responseInfo = new HashMap<>(); + responseInfo.put("status", response.getStatus()); + + byte[] content = response.getContentAsByteArray(); + if (content.length > 0) { + String responseBody = new String(content, response.getCharacterEncoding()); + // 如果响应体过长,只记录前1000个字符 + if (responseBody.length() > 1000) { + responseBody = responseBody.substring(0, 1000) + "..."; + } + responseInfo.put("body", responseBody); + } + + log.info("Response: {}", objectMapper.writeValueAsString(responseInfo)); + } + +} \ No newline at end of file diff --git a/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/filter/WebParamFilter.java b/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/filter/WebParamFilter.java new file mode 100644 index 0000000..4d7c31a --- /dev/null +++ b/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/filter/WebParamFilter.java @@ -0,0 +1,56 @@ +package com.wjbl.weightlosscamp.api.base.filter; + +import java.io.IOException; +import java.util.UUID; + +import org.slf4j.MDC; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; +import org.springframework.web.filter.OncePerRequestFilter; + +import com.wjbl.weightlosscamp.api.base.constant.WebParamConstant; +import com.wjbl.weightlosscamp.api.base.web.WebContextHolder; + +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + +/** + * Web参数过滤器 + */ +@Component +@Order(1) +public class WebParamFilter extends OncePerRequestFilter { + @SuppressWarnings("null") + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) + throws ServletException, IOException { + try { + // 设置租户ID + String tenantId = request.getHeader(WebParamConstant.TENANT_ID); + WebContextHolder.setTenantId(tenantId); + + // 设置操作人 + String operator = request.getHeader(WebParamConstant.OPERATOR); + WebContextHolder.setOperator(operator); + + // 设置操作人ID + String operatorId = request.getHeader(WebParamConstant.OPERATOR_ID); + WebContextHolder.setOperatorId(operatorId); + + // 设置序列号 + String seq = request.getHeader(WebParamConstant.SEQ); + if (seq == null || seq.isEmpty()) { + seq = UUID.randomUUID().toString(); + } + MDC.put(WebParamConstant.SEQ, seq); + + filterChain.doFilter(request, response); + } finally { + WebContextHolder.clear(); + MDC.clear(); + } + } + +} \ No newline at end of file diff --git a/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/util/ApiAssert.java b/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/util/ApiAssert.java new file mode 100644 index 0000000..fe3d67f --- /dev/null +++ b/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/util/ApiAssert.java @@ -0,0 +1,33 @@ +package com.wjbl.weightlosscamp.api.base.util; + +import com.wjbl.weightlosscamp.api.base.exception.ApiException; +import org.springframework.util.ObjectUtils; + +/** + * 业务断言类 + */ +public class ApiAssert { + public static void isTrue(boolean expression, String message) { + if (!expression) { + throw new ApiException(message); + } + } + + public static void isEmpty(Object object, String message) { + if (!ObjectUtils.isEmpty(object)) { + throw new ApiException(message); + } + } + + public static void notEmpty(Object object, String message) { + if (ObjectUtils.isEmpty(object)) { + throw new ApiException(message); + } + } + + public static void equals(Object obj1, Object obj2, String message) { + if (!ObjectUtils.nullSafeEquals(obj1, obj2)) { + throw new ApiException(message); + } + } +} \ No newline at end of file diff --git a/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/validation/group/Create.java b/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/validation/group/Create.java new file mode 100644 index 0000000..da597f2 --- /dev/null +++ b/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/validation/group/Create.java @@ -0,0 +1,7 @@ +package com.wjbl.weightlosscamp.api.base.validation.group; + +/** + * 创建验证分组 + */ +public interface Create { +} \ No newline at end of file diff --git a/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/validation/group/Update.java b/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/validation/group/Update.java new file mode 100644 index 0000000..c477080 --- /dev/null +++ b/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/validation/group/Update.java @@ -0,0 +1,7 @@ +package com.wjbl.weightlosscamp.api.base.validation.group; + +/** + * 更新验证分组 + */ +public interface Update { +} \ No newline at end of file diff --git a/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/web/GlobalExceptionHandler.java b/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/web/GlobalExceptionHandler.java new file mode 100644 index 0000000..63e7e3b --- /dev/null +++ b/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/web/GlobalExceptionHandler.java @@ -0,0 +1,43 @@ +package com.wjbl.weightlosscamp.api.base.web; + +import com.wjbl.weightlosscamp.api.base.core.ApiErrorCode; +import com.wjbl.weightlosscamp.api.base.core.ApiResult; +import com.wjbl.weightlosscamp.api.base.exception.ApiException; +import jakarta.validation.ConstraintViolationException; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.BindException; +import org.springframework.web.bind.MethodArgumentNotValidException; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestControllerAdvice; + +/** + * 全局异常处理器 + */ +@Slf4j +@RestControllerAdvice +public class GlobalExceptionHandler { + + @ExceptionHandler(ApiException.class) + public ApiResult handleApiException(ApiException e) { + log.error("API异常", e); + return ApiResult.failed(e.getCode(), e.getMessage()); + } + + @ExceptionHandler({MethodArgumentNotValidException.class, BindException.class}) + public ApiResult handleValidException(Exception e) { + log.error("参数校验异常", e); + return ApiResult.failed(ApiErrorCode.VALIDATE_FAILED); + } + + @ExceptionHandler(ConstraintViolationException.class) + public ApiResult handleConstraintViolationException(ConstraintViolationException e) { + log.error("参数校验异常", e); + return ApiResult.failed(ApiErrorCode.VALIDATE_FAILED); + } + + @ExceptionHandler(Exception.class) + public ApiResult handleException(Exception e) { + log.error("系统异常", e); + return ApiResult.failed(ApiErrorCode.FAILED); + } +} \ No newline at end of file diff --git a/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/web/WebContextHolder.java b/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/web/WebContextHolder.java new file mode 100644 index 0000000..3c95e74 --- /dev/null +++ b/weight-loss-camp-api-base/src/main/java/com/wjbl/weightlosscamp/api/base/web/WebContextHolder.java @@ -0,0 +1,40 @@ +package com.wjbl.weightlosscamp.api.base.web; + +/** + * Web上下文持有者 + */ +public class WebContextHolder { + private static final ThreadLocal tenantThreadLocal = new ThreadLocal<>(); + private static final ThreadLocal operatorThreadLocal = new ThreadLocal<>(); + private static final ThreadLocal operatorIdThreadLocal = new ThreadLocal<>(); + + public static void setTenantId(String tenantId) { + tenantThreadLocal.set(tenantId); + } + + public static String getTenantId() { + return tenantThreadLocal.get(); + } + + public static void setOperator(String operator) { + operatorThreadLocal.set(operator); + } + + public static String getOperator() { + return operatorThreadLocal.get(); + } + + public static void setOperatorId(String operatorId) { + operatorIdThreadLocal.set(operatorId); + } + + public static String getOperatorId() { + return operatorIdThreadLocal.get(); + } + + public static void clear() { + tenantThreadLocal.remove(); + operatorThreadLocal.remove(); + operatorIdThreadLocal.remove(); + } +} \ No newline at end of file diff --git a/weight-loss-camp-api-base/target/classes/com/wjbl/weightlosscamp/api/base/constant/WebParamConstant.class b/weight-loss-camp-api-base/target/classes/com/wjbl/weightlosscamp/api/base/constant/WebParamConstant.class new file mode 100644 index 0000000000000000000000000000000000000000..914678dc86796c548031279db0873d71dd00b7c6 GIT binary patch literal 554 zcmbV}%T5A85JhkEkYNBp6ct~IJ9T02m6#C3goFUX1ec~~=s=Ts;7lXm<;ui`AK*tB zYY0T*(#=hss`RZ#e|>*^0;uCGg9O8k6L@?vwOziDYCO?y5JisgW?ak^w?!nm6Znx9 zzUEKT?uk%%ja4Fp6hmn$UIllBKjvL~Djm&`wVIuJ$9itvGnCuE^??qRKfYxstR05J zol65*2184qdbCCqc6-f!-RkxYyik|vTk$YU3K48^wcWoPc$GPH#4%6Qbk5$;fgD&|!(r6($4sI~up zCR*4W1oP054=V0c`FqFf_(V7d%}O7WLKSIj5oL%HFo?|!&JhJi!8`Pl#XFK# j$bl~zNMF5U|7~e`NE$bYwMv>_#%Ubkn26zoG=b9}Y?pnC literal 0 HcmV?d00001 diff --git a/weight-loss-camp-api-base/target/classes/com/wjbl/weightlosscamp/api/base/core/ApiErrorCode.class b/weight-loss-camp-api-base/target/classes/com/wjbl/weightlosscamp/api/base/core/ApiErrorCode.class new file mode 100644 index 0000000000000000000000000000000000000000..e245ff84a1de55f526b610ac33dec475808f729c GIT binary patch literal 1886 zcmbVN-%}e^6#j00Zqh9!Yej)pQK^!&cBS@*HHf4TN^F420yC)(&L&;crO7U{+0fyw zQ^&D7I;~UdOckf&s4pEK+CT?JhU%l^-(i;a-Dk&hFF`U=N96&|-tV6C?RS1{e*NRe z2LMu-48zB8q+plTOEdYBddV=07u=FvsTB0`tg6qNYF@7xYQc64H8pFd9mjSC?ej($ z0fv?teNIZ!uR<+C!)}{sr)0)O`H2eQKlMJEZR3@7qV%RgC%4UXAlj(Oi5qWAX zH8nXhK9M=c9U{Zy6Q?pmL+LSwK!Fr7undF0Tq!ar*)3(7>zG!NxOb(;rbfGocPdQ+ zkG-=qg;HOkWLl=%Pw(o9Pt(hJIV1!nv@yuujZc4DTkx)4uYY_y3Wld;w4;L(>uUtX zd$w!KWVU1R=?I1IlMzHnLRiAHf3erUyZ3PEdw%_#j4;2JBy>~O^=ntWn|Hl$FF(5T z$(GZLG9>O4kq~F-^1i&{E!0SN8wJ#c0eYv*2dhOv)A9@S7IqyLk5grni zaF}?#+Be?9N9$j$)IV7CzJCAFt?S(B6&X>4_|p*?d(cWv%bJ!kRxRfZXHw6Xs3l6) zF6gCc-7)#O0fvi)%Znx|NImPEs9LUBHZs7&U&FQ78 zL98cw;yW6XD26c-#%YGura_#qxJFq<25-^$>W-t&7wp-2hD5WD@%)TYaFfjwu?c0k zwy@AP{vN|fb68`_<2xB@UXw8yXE07{(M&p6(kqqZ_Hs5?m@hspS5&jBPQe&9dDmmj zUy8%L0+g_37A@VaI&?qWM9Jg(cA~mJInYaO_0xAu8ffQh0+6MB5SB(>Sej#DX;jHm z;X@-V%>vNc!3USlAzG0b-7-8urzPPFTwVpsDSQ1f{GvR$jHedSDUkhv82ep$Mj%}R zc|I6ppDQm2Ji0yz|pu^Y*U0j0RC;D) zgNY@a{DB@eD7g!0&3U-I;ee!g4MQK^_!px7yZ?d6$G?4#Av#N43sSt2IJj>a1Bw0j zaWc^!xR3s=j5p*(g}g4&Wu+l+vx~g*ydEtGP#S|6q9k~}$BCQYwbjs@JL6A0$o27J xkNP`TkUsQx-SksMzCQYk&<12190@{rd7=tStYGwKuz!y8;jCbI8xz86e*)D4yWIc) literal 0 HcmV?d00001 diff --git a/weight-loss-camp-api-base/target/classes/com/wjbl/weightlosscamp/api/base/core/ApiResult.class b/weight-loss-camp-api-base/target/classes/com/wjbl/weightlosscamp/api/base/core/ApiResult.class new file mode 100644 index 0000000000000000000000000000000000000000..327e5ecf77850bacc7a8d2088f46ce1ba00f21bd GIT binary patch literal 4775 zcmbVPTX!2*750b(g`dFUg*Wn&2VjwuRn}s`OIeFw!~>;#d(KE2BgNQWiDu5(XU})`{?5J}|MNee z{}sSAewjf+p#}5A157U{t*gTR~M6k~{vULhnLbX*sAn?&dhPHmtzfzor4WmRoi< zT`OqR36oq|p(H)wxK1#oP%KtD(PEMaV`xobpqnbuWX+hNjd>)|YvLqc;5NmfwHy@s zOr(&O(TgTB$jWHIL=Jg{(+iGk-)`)z+w~P|y+-4D7rd%fTeIqp%p;)@Y&pKdwS^<{ zNjLlV<2~AKV!nPUFO!=VjuXDAJ|n)tQ;OZ7+Y_K-{B3@xkRS#K8ItN z;E_>j+w%5XE!5W zVZK`tJC0}8b3E%(PLB-V47c-34L5Lh?25bR_zo-LwCj3-6*!*D0@S-u^LEy~?eg2U zYuBy7-jMplJev(W!Tv;R^@3D!DC__kznQ8=u_7frO+lEUeencrMjsXA3k|(bqnV-t zQH=yH#U|s66LVnq6)T{P9%bvoi z)?MX_lyKf2x+g&lyA^kZw>&TKgSxf5Xa`%~hM&hCewe{Sg~4_|aNIp_+b(NXv@`Qo zHSp?>#LGttzm5|VX=}h+mb+22{lNv#+ivWR$86AOaml_9S9mRmFGlJg#SprjKm;*k z)oRO5V2__pqmji=6fU($DpuJFC)LO$2CBRy9wyb0f?08yu`@Nx_iaCePZVD1prD&m z8T>-w;=!s6M9lzRV)7&zAW0HTP@cp&KKqFcoTg@hx4Isp^x_5nJ5Omze~%0J8fQcb?NH%J zEJ=hTu_cL%9QQ|(3-~%`qMw7wwHz+do2GRyht}N)_XYa?0`{(x|KekiuLC1$wI4ZPmk z=8bThv1pruw)k7LxYW(qi?JOF(TU}71LG~ci4bo*!s`*dlAt|9SMOhr0rp@L#mK;^ z7U0bg@FoF;qZ0ynZn&FmmqRFhPA8}?QN<5JD_NrD7D$M1QzmRp^DU7y&9M-iD*Xv( zo^TK+G#9fj6@^NhP?1P5@Xsk+{XfwCa_q-}W`E&#I`(G|wEpaIx0u6x7wZ=&6UNhF zdbN{Ehni+albvoQQ97iZb%5XLpp!Mt(c8Fn;4Z_=-^1=A3EF*^3f^ha^==1UYb~F+ zTdYtV?2|4??IO_hNdifVfCLaP1fAZgif~Y+?8@ zGNaFMFO;v28L}{7L@QZ26E0oo&h>STA90;ztyvFiPYO3tltFZYFjIT(kK{k~lfqZ?%XM3IyK_600g{F?NUqm&sbiZrCx+}2Ut51j!8u(lN yGd4fR4scL)>5E)!lP?mm9Q@ zPStS{Q1}8UjeLP-9m<; z>B^yVcem?1cZIjpSH6rQmk&n{A9+rfN5XMsD4b6377zK*g27PS<$K)md9dSr+1(Yc zV#s(shBF(76I&|uf}IwFxg%7ECeK!DY10>Oj|1fmMJL$vBCqRXY1g38y4~fWHE2! zte$4_coh>2q99dYgbbF}P|?NCPa+d@W=nB*u*pY>(0rdqeO)AmY_-!x zhqhVq0#AKB;j*o{yl3NWyu(n~lH<@7H#~h}cG6&1bqi68U6)ctD&(V0q585H74Q+3 zEnH)$95$I3?8$*}V%jmw8{Abgyr=2Y$^CGYWRe{Ne!+vDFQUqZl!Ni8HBJ0T9hRaiW z(-c@}Gc3G3mChoTi#MqIvUJRJarG4<%Oabak^B?n<;W}0c#{4O*^EZB{tN5}WMpuP zzB&c8V3xjioPZ)ulSeI#S5knMDVEVI>y3x7e_W>BH=b&6$CN0}*EtAYW|U zht)j5TDX>b37O|O2ZQ7?Mp9{bPTxa6 z!!*-IYL6{VQ~(7{@-Y^Hmo-`;A;t7NlA`;tV;|w&^gcV@u~{rl3jRJmpfOKmR_MQq PPsq~`^{2Rw&rtpwBZp;Y literal 0 HcmV?d00001 diff --git a/weight-loss-camp-api-base/target/classes/com/wjbl/weightlosscamp/api/base/core/PageParam.class b/weight-loss-camp-api-base/target/classes/com/wjbl/weightlosscamp/api/base/core/PageParam.class new file mode 100644 index 0000000000000000000000000000000000000000..943035e9cd0646d54b322fcd4d7256c344fff59b GIT binary patch literal 3461 zcmbVOZFdt@5Poj6o86|{(iU0>MFA<8rY(VrsOgK8@)l^J(oz%->1I;n1*MdO(0kF zs=0fs%az}l8a0vR}->$97RS6%kja_4Q=uF1e&A*0%i zw_>-0q!x4}1$N9ju6?;)UAAkBl1%V9uP7@^vgYtUVroIzA)Ci%-w-l#*}vW1{q;?o zC*RcA1mQA87CRzj7*)u`+UbbD337j?1;#^5 zFvZIz+=%m`5 zc;n(^xip;%fh?}g$@Qpj%(C>$+;h~`nV|wFHEm%EpHlGiR||7zDUkwURPR6Dn@-!g=7ZaLQr$ulEC)*D(-j+moR5wcH13QG7Fb+g{r+FD|P$IU4bL5iWh5u z$Yd`~i_a`v#e%@@s$8>YJhv!=>rOyPxqcwsfa-fOZY(<4Y^#|Qztzz(f?~pPonR`& zYl-o?ZebDEQuqQl4crjuX__*e-7UIknL^xRV@{+Nyn3x@pL6(nckxUK$JtRfB#@a{ z%*SGjI(e#@MYx{!yuc4?a(&JY%HE2f!ZKD26a@wwQ9160w`S*5MhdWVvKV-^`-~)o z@Le3QNLv}aAl;RU?GMg+-dcTqJQhPUtlJJQ(pYJseluoa^NPk;k%<{usVq2wJ-#Ce zX`(D}cnhQq->OM5a)4LvN2a+SC&iF}Rd8vx&QzrD+rEJ{I@yFntIP~k1>SwRDz$=w z0SD>YC#Vw>Xyc(xR2vVxaHT0m(o{%ypo3_d9VG7}PLg&zXzix|G|_@qJ^M3yek3A+ zo%CcCkcnONw3Gt+&`-PF+c(LQ;9W`_kz5zpaadc&|nDv&3to z?2_5xU(oXtQO(HoD~$*lMvcorBVh}pB*_#;hhFVv@9TQuBDeN3h{IcO9chAVDW22* z*Y&1aiF0b?%QN+;YmaesQ{z}(CzWIQWLjsPL}yx0Cu2%ud4rV3 z@@Cp#B{Nbo(&na;_J{(~nwtEU3UsTK4{##9L4EiJABKq!!of-6C6GlC9}%VDJkH@` zqIAsR6h0v;i3;7zJW&Q}7{EADX4nu4ya!Q3D7zB`&?Ln(49hV8MwbEc5Bd!x=w}kS zN0IGulHAg_K{ML)mJ`IKtIRNSmjBnV`c{@Y<;HWO(XcF24NEWMW+&nl@p!^q>mHxb zCd0z*>mDyt+05?YhcHGT=5@`gv5Ck(V z&*|CNw=ts+`liCBj<%f@sU>4-4b2z1q)dTdK%p5~T;~`lumJ}32`(~*Y8j*DDJ6@S zO}K#wpGGN}qe@BN2`wDnCLTNN&;E*~to8(-)1b?Cr$Qn&i+Tx7eivwT*ZC8)kLbpG op})y5bJ(wjFX`Ea+tK*`3U_F4lFz&JFVS@ZNd#8u%D71X2V+NpqW}N^ literal 0 HcmV?d00001 diff --git a/weight-loss-camp-api-base/target/classes/com/wjbl/weightlosscamp/api/base/entity/BaseEntity.class b/weight-loss-camp-api-base/target/classes/com/wjbl/weightlosscamp/api/base/entity/BaseEntity.class new file mode 100644 index 0000000000000000000000000000000000000000..318e97be6899417a385af0f7f9dbb2feb09b2294 GIT binary patch literal 6408 zcmc&&TaO$^75-}H(sSv(@7if>Oag1zi=7E3F}T+b*y~F+*|m-LVjN@a-kJ99cxR_K zGd(sN?wD)1gm8-q5biM`OMpZSL|XCLPFY} zK6TD_zN$KP>Qwdq{y#7M3cx}9Ktq?np1iY`yK-r%l)GXVmsi}9Q?2H$we_5}Ud%07 zRXb;w-J-jZJ4E@2Cu)cb^j)$pTe*@|Ue29Zx@6~Ffs|{Pt+G2^5Ez&V&2w(0SYDnK zFizFzzh*BMtHq^~eXv}1T+1yw<*L8~GjbeDma|qYIJMl`#u6>n^-`^xv+B6qyhXpG zMY~iWUHoFPR1(N_rcy!}O9Sl4Wb_g^(k;aPsiM`6DE&t3!w)(+YOUW~Ty!kswW%U3=NCknj~mV#Zl6 z=IN5E*q0eor!26$qi8JJ6$zKaU$))(`mzm;jzz{)U$|}l!cCWDH+L@Gz)ZNK-kD4i9?M zcx7qHUVAv3sc=nY|F74f%l`GKNgBp=WZs-D?e*DiiH} zAmO+xc7@@PX+2Wk`Q4s6()P^ZF78qGP|@uH!usk1LPehks8=w#1pSJnLD$m=p5 z#KInhsKsw&QaS~zh529autBFftgGrBMl=mf4ITO*rR$z^t^De&weDAn)QVMIkyS<@ zHaa#fm-oFoHt-~)e)81xEQ_$1X3|vbYON$sr!d^^>_$;0l&@Nl0ntkFT%T{zt1S#IUmj`%~ zKcnOG_=3RJHEY$La>{wjJzaDensU|Uam@X4GfL)H^=7XBucqa}liXh{7u|=w6<(Ap z{H%^I;!BM8oKvghc@-#e`Fq2w$^G)$!T26>9JlILto2#jU2zK448DfvHGExQB)pgu z%a@&1JEsDo0(aEPyG~_8M)Vs3*P?Or(Tea9t6V7A)sY#;S*@*4-ZgX$j`JJqb_@8~ z2t$k2_9>>UQfaQ}+LOIWd^Lq{3tSDSJ{sil0kP}eNFFydBMq6yvKh(ahGwJ@K>hk9 zEx`slAjX*R(`BCgQzfffwW}JwC$O_A%B|w2;kv+%yFkJKwM7lcOy7PK^H)JAO=|3-|I@LcpuZef-rG0I$XC*kabVCED2; z5s$?-BO2|Dh^J~BqFtR4@lb9`nd_8O)hU4^?K$^!%Bc#Rz|r<|f2dPVRT%}2;gNRn z+}A0mDyag~?K$^%%Bf1SkY5bVoiVcnoiTMID?z#sq7(t0HMbO9K%KGVi*?(u}mqBV`2m= zloFT~J5Z#QL=&U{r0+ zLf%sNJ=RPayGET(rhoKJ?vEevw#fFr$rWypRNusPXuEIXJr|^Y&WuZg5%(=Axownb z!Ay82?ikN0Wh4UAX*21Wl64dJk@7lYYMzN($oJ9$(^)g+nNoEVHYw!go zj{LmX%T2k!=QN))e9rzHPw{n*&v`zUYMxN9Ilf+EVZ_}omwWw$7xK%#xmHBJc7BF0 mw?4ZYzjk7{<`t>0;5okKx8XPWd<)-UOa3G8yLbWLhw)zt-==B+ literal 0 HcmV?d00001 diff --git a/weight-loss-camp-api-base/target/classes/com/wjbl/weightlosscamp/api/base/exception/ApiException.class b/weight-loss-camp-api-base/target/classes/com/wjbl/weightlosscamp/api/base/exception/ApiException.class new file mode 100644 index 0000000000000000000000000000000000000000..8baf57805ce629a354fcfaf04f7f70d90f799e41 GIT binary patch literal 1067 zcmb7?Z)?*~6vm(1b**h<+jMQ+R{zY+KWQfhL=dS6MK>vAf=>4SHoIhZCb=a^H$Rkb z6rJD;KY$-fJU7kipoJoVLVGZldzV2Gd4|nXe#UK|ho1d@5+*Vbv;PcvR~-umHe@Kg zkfBUoGPEq`U&&z-$Ju%zQ|5C2gC48#*!=;grQ2f9v^a`;rJ>TsgL#>5sHW>;+R@1 zAF4^@ihZg5Gq29rW8EomdV%}8MrX`9({N08+8B1sAjqb#cX9&+?$FVK zR)Ni&ZM^rm4fL^n7%F7@n-9wvM_~a?9g!+bPab4bl--fDeS}!sreoq z8<3)xVaX<He(gho%u&{+wflMkx#{#tD9nM;mb> zWN(2ms4(Q#^^}p;;gV^)SsAX>v5N((q7p>IK7l=JZHQIZ$ux8cY*T@1TBgBzK89O9!xGT!rbt?O&I4~-0IEVoahgi>RqtOsP9a#*r z0Be~faP)fXZP8_M!aK6?TR0BU(^1XT4gf&bGY*h_ICI1OCDAAr2p1_VI-o<;P>f5sV-=pKb zc#(`IzcO4HTI_c)@g~FXWP#=Ubj-qJeu`R!omjkb*Ah zc)v8QLkcQUbAgJFxdpFCm{Pci56Is33~%DD3%Lg8V;s{HNqmS&9|JzH=hD;ivipdR zkK$vj(|O+xtqIeqT0=p^BCu~ASQ|mChv*adl!i~z@U=sLj!)w=bj^0BJSJqLyqLMc z(l{pawqjpUQMN ze1%~TI8s#^_C9<~$Jg;(lo+fu?y5OxB!zF{+Zw)A%Y0Q5@~-EcrsF$!p0>_ORL7XC z+q*^@;fu+bCVfy!F3B+dK*tZIrdG#tr^Axm`jL(w<3%bDs`)^bg_5;OSnN(a=hdI; zcnLpaB9zTpi#b;?!}E4n;v4;OLt4HnurX(&W${)Lzu??h>)SGAxU4mK82bQx0xh8;9dQNiEPBPqP#2%(9tv+oGIWEiYuCIct>J{W)z=Q}?>W z1<$t(vpygjV}4N$(Jd-4%|wjD{g#~Pg#_2EM0L-AT*YrREDP*i@yT}QyjjbL@QI+U z&$%z*w*t>Krg%&p2|QuCMaK&Ej(Xl~wbIz0Vze8eTg7;eUamuap@F_uISpH}h+)%l z##!0f&8@hS#P3*(qOY%yaU5~^+dxg2V8N; zkJ)lmBu}?wme845#?Hwl?0Ox$SGYGRQ+6VOyZN(ar;;MM$%8#K6+F2YZ>6rid~fCR zKHRTN`X@Q1;kjj`C%c!>J&;&N-(=4c_7AjVIuna{sJAoG*>VL3nvv;jS;X7q*U*dD zIM6EJj&`=bp`I^OUk4uK2b3v&>Z9wR-V`-=P~Q#$uopeZ@WkM!ANz3#4`7hbA@WJz z57RnY6I(6c9>WRcNe&};J1v)cCoxJLDGr&ZaGJh#P~sTQ5bk&I{2ny@hvHf_2n}a7 zoYQbnLs}ydHzqbv2nXI6j0A;8Q2c|c6J$4+@dOcm=c%6d3*C!&_Z67UIN#Gg&4pcC zI9#~Vf^Yum-fPd}uAcU}Wn7%><<9$-@N{(i3Od?9n0XDmdlvEGEBJUbWZV)8p?ypf z(3m96xdR7?)j{GiKxDE+W{|!e!IOAYA(M%Wt0Q9)nbR~riAj7GpQAhd=*8#pERp#F zrONn6XJ6!*#H9`5-#D!yui;DF;(W|+nGkghM3V0<+_6_M_%glu>ScVR?(BD!vj=LP zevh6GBxI(1e{1vKU%g34gp7uZ|Dq`g6{aS)_*Gm(0Y&)2D7aRf`a%texmYy5u$zvoK+l==hygukHk EzZ6W@i~s-t literal 0 HcmV?d00001 diff --git a/weight-loss-camp-api-base/target/classes/com/wjbl/weightlosscamp/api/base/filter/WebParamFilter.class b/weight-loss-camp-api-base/target/classes/com/wjbl/weightlosscamp/api/base/filter/WebParamFilter.class new file mode 100644 index 0000000000000000000000000000000000000000..5bf895d21b39cd30b1784f3f93b652f0d603c724 GIT binary patch literal 2164 zcmbVNU0V}J6n+O1CMGM|U|XYAv04ZOTonW*)>Z?S*zh4Aq1DzpNd{Qh?5?{L(4W#@ z&}(mO>_vOmi~gwEGrLJ1O6UVmpCmJ9X3orc&wD=d*WbVW4&Whb96bzERkv>L?^JAa zUs_w+%65aGD(apoJj<+zK$@GDt)y>m$jY+tMg4KO(*vWZCe4u-O~SaAkT2N=0=!`4ms!un<2=ScEqmml`sS8@7YqB z+e&%nJPoVSM$4Q02^0g*bpqL~8CflC3(LuC3X*fLtI|^zX>+6*1`lIsneM1@oMRZ+ z5qrY4T(h`z;NTO6nPVBLk|iY^)d^~$wUNMihJ=z19TsaTT)<}>7a4{RBl-_k3|zux zhErQo%}Y^}KEsfvlz`g8*)ms^PL}*g_f`^v_?+V^!<}Q{>lCAOB+yE}R`ae+h74T8 zb%srpuIBQ^}eS4|3pFoZx)7C21wBERZ8(Qx)S!wGP zYYE(>WDex3ByMApV}erau*(MSV2XiT!Cc)_Z^Gn%mc(7maNJ|)5A_?$vd#7N;;ex@ z?vr(2I5oGfcc=)mE!H|(d42zZfv@nj4w@U0%W$r(d64oX9$}WFK;XlwwKpes%!S#4 zfjK-TI9@|hn2+GAJ5(d(6z1`SqsVaaaAF+DZ3Ew;M9A7@#xUDmUdL5c=e$)+BV`?k zMFUH^SH!Ef6coZoSR``&sL?QJrcPGH1kabz(+s00xYmL}nYI}=!mx@NE_Gc!Km_%g zbT^F@iB%=4y9>e#TN=kRhV1dcBLo~jv|B(J=Cy6#-H+O3a@B44RY?G-cMkl!Z{N^~ z#*kTQILfNavK3g=QXe{wt3=pcK}C&=0X){hva6UM~IVdt`br6U)S!xROhM5iR4HcoW09^k}r~%k(ud zmP?z_l4tmzNM-mt-1-@*CZ^xv%Nd?FGrWn1kG#YLs+hzkH4ckp zn`9SLq5msLXun$iYw0OgLaQF#Un4H`-a5*m{inp*2CIQK-O-OE% z#PJ>7xrf*X0+Qfh92Ypg=a}cX-T4Ci1JN5hc&=5SC&}cG^gs_e{S(bP94~1W1gcU* F^&fYzMqB^@ literal 0 HcmV?d00001 diff --git a/weight-loss-camp-api-base/target/classes/com/wjbl/weightlosscamp/api/base/util/ApiAssert.class b/weight-loss-camp-api-base/target/classes/com/wjbl/weightlosscamp/api/base/util/ApiAssert.class new file mode 100644 index 0000000000000000000000000000000000000000..57235c22026770e5d5ad6f1d48287e4e4ee63cd5 GIT binary patch literal 1250 zcmb7COK;Oa5dJm^ahj%SZ2BV55}?pLO09B1CEuw@{{U_1W69`(DfJrc5a7`uKHIeZY< zJdk#mN5US)(zSO2xf4Yqj16QMN`3y0+b;Kd_RDTxI59)^vGip8gdtt6br>>F{Wl_y zG-e98f-J*)OM2qPaL^Uu9`Cw>!D{&qcRM_k>aK&C_)ta++pYhU)g%Qn+6#vSyj0z9 z{Sw%YL+SOJwT=Ok;o+sY;@A;EEPYRT-aWhIQNmSaWr1O_It`v7FOGvyL=ojOuzdz& zKsVk?y#6JKVXhr>=jb^Pw0A>ByMrKp&#*DcFs^WO8fPA>xM^UGVcidVb`&V92O%Gb zkslt7J2y^$MNNzfD5LU+evMuuxmjQL(wgAX?+iK5kF~t4cst}Swdv8tI(6;@+IcgS z@{Izjs4*11q3gE!f!Nism)M_>oFU2EG;Op!pa!)4Vd#iwQjJ&fd}Oy&?Qsh6^K zCNedXv>J4?X=f^0KSAyj9a6~Cs-A%v%+gvIf1rIXi4`$V5tZB~$Q13x@<$ZDp!B+N z0_&SXNhc`9gmM;{B)6ELEsZmXp|;A5FMR*0kguN>>Rt9@|tp{j4y8>hIZjciUU)+%yX hgNaH)QWvWYgH#A$5}iLHev7}m+Un}sE?z}+l7fQK?de8sC?@;=|!8^8s| zpdg%WYIqKH@>UL~u+mT(L*2}fxi-|CNPis~Z2%BZSLf9=XQ2qeHP7rrN>;ka5*^o)lqd1-A=!nVn<0#m?{QHz*bZ-|CrCH&Dpz(@1;i?LE$G)<}YABUA$vxW@egcOW zjxF;wZo1ra%$drvutJ7TS2+xslJXrha2E%c&608);pZ7n&(*w8Rz=ZUlYy+bqTqQd zHtUCFzOjTD2nl1x|FMuq^JDxi59U zG1xs6F-)TqFB#}TnplQQl0v#s`VR@F=rc=Et_!O&&OU>iZSPfVZI;<=OYyelV<}%~ zqd5`O+>kh==B4BDu;x?v-#ka?p{Cs`D{1G4iOi{ng32xQbG^QqtG@J{MW0v2y7E^d z0av7Fn>^N<87H$LWpdoL#@!l4c&&Yg_Q`D$uTioJv&GGacQ!XR4&!xX6L^DaWVb{O z$0W=K$7=t7FB zs;J#wG4Kus8PYT}C4zuEG;51bWtwZfR?6I!cD%t1lg-(U#}8BqxBn+sEtNg|Wc5yoa7oz(->FrF7f!2iXPl(q zftC(P*3ynnSo0=T!FB?YxJl>B=681fX5&>1wwA~W_d{+rW&TMv2U6nNbAV~7(#y{r9;u<8xHwBm z%rh8|?>~6_;D>F^ePW=jwbQ*Nne@D>`IZ=`qk>)zt=}L6`a)-DQ#(y3Kiz6{?s=iF zTzbM3>@{hLJkHad-$~CRhL`olPi=yFx=luH5-FsqcbIxPYV|LbVH+^+Bl8P&I&gyi zwE^heaWWdw?&vMhFf*yuvt50^p?9}QCNeSV3vh~9Xyem3L#)n5&R)T*)E=SHbM&46 z0?fjNh|dhI>7cpZd&p!i_WzDco#_7+{q$Ylz`J)NbImRtE$bnp-UzOzZq|S!2gs94 z&2k7gV&LHj`1m$(hlLL;d>CQhYG7wHcA<`a4>(4g9W@6Y3!ImP}DNM(( zGcDqseMU^3pNsoq&PJFY?+JBhj!Szn=eFWpXc1?Y*5~%c)Nyv;(`ZXRiz3vL`5gEc DwJ=FY literal 0 HcmV?d00001 diff --git a/weight-loss-camp-api-base/target/classes/com/wjbl/weightlosscamp/api/base/web/WebContextHolder.class b/weight-loss-camp-api-base/target/classes/com/wjbl/weightlosscamp/api/base/web/WebContextHolder.class new file mode 100644 index 0000000000000000000000000000000000000000..0488af9194998c0db5b220baad4f7be75327ccec GIT binary patch literal 1471 zcmbW0ZBNrs6vzK}1Gbfphdnq%5Ktbrq0}cpWx*H{m1L0@EHl2m?QTX%*OIP)A4@TT zL=)p{Ka}y@w%a<^SMEjIbM86kch33W{rUUj7l5~TokD_P+i*JC<*9CIm%?nHc$U-c z8oYC+@iSA?c~_8M*FFjTz_C5?#rxn`E#amx#xQfrFSurLyR9ARr^4_UW<6nZ+iRS- zg1739!7YYTeGnHp*ki~Xn{AtW=dNJbjE|~C+{d14+U>o4%FH`w!sVXhMhY?%d)~v= zkUw2BEYmiXS3#xWtk?x@HFUvnxH zOfXE>Of3hpQhQH~<7R^u| zT~ehfXIN4301s(uioX>XD7GiJkq$(YrE;T{h}MqM3gyaZkc3rKRIy1g3a4ESg@v>f z9uHlcK+#~Hqfk-mrzc~89voz8jGiUCReFKa$PzYsIBr;iyRxwz6}!HYuIM-yq>OUx zoV$j2XG)ohx9|3ryb@R;m6P;8Nn&1#PF9Mn1kz-a^g}jXfQX%;m`SMQ$x_C9%8|dN zpP2f5gPHHh_rHq$uhKUPN#HI$r+jRRZdDouLe2XppmKB_!=f6!8TrSnH@G)Qm0f^( zkts5i09#UZv9vY*7Ui}CEa2>WRqyA;P>Aok)A`&r0- z9>*@lvzH_67k$Crg!{_-``W$&bxu#Ju{~IS4r8>$RT6NG64y!ZjeaqPm;QoZ{R8Qz B8VCRY literal 0 HcmV?d00001 diff --git a/weight-loss-camp-api-base/target/maven-archiver/pom.properties b/weight-loss-camp-api-base/target/maven-archiver/pom.properties new file mode 100644 index 0000000..c94cb13 --- /dev/null +++ b/weight-loss-camp-api-base/target/maven-archiver/pom.properties @@ -0,0 +1,3 @@ +artifactId=weight-loss-camp-api-base +groupId=com.wjbl +version=1.0.0-SNAPSHOT diff --git a/weight-loss-camp-api-base/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/weight-loss-camp-api-base/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..ed67139 --- /dev/null +++ b/weight-loss-camp-api-base/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,14 @@ +C:\kevin\PROJECT\weigtht-loss-camp\code\service\weight-loss-camp\weight-loss-camp-api-base\src\main\java\com\wjbl\weightlosscamp\api\base\constant\WebParamConstant.java +C:\kevin\PROJECT\weigtht-loss-camp\code\service\weight-loss-camp\weight-loss-camp-api-base\src\main\java\com\wjbl\weightlosscamp\api\base\core\ApiErrorCode.java +C:\kevin\PROJECT\weigtht-loss-camp\code\service\weight-loss-camp\weight-loss-camp-api-base\src\main\java\com\wjbl\weightlosscamp\api\base\core\ApiResult.java +C:\kevin\PROJECT\weigtht-loss-camp\code\service\weight-loss-camp\weight-loss-camp-api-base\src\main\java\com\wjbl\weightlosscamp\api\base\core\IdParam.java +C:\kevin\PROJECT\weigtht-loss-camp\code\service\weight-loss-camp\weight-loss-camp-api-base\src\main\java\com\wjbl\weightlosscamp\api\base\core\PageParam.java +C:\kevin\PROJECT\weigtht-loss-camp\code\service\weight-loss-camp\weight-loss-camp-api-base\src\main\java\com\wjbl\weightlosscamp\api\base\entity\BaseEntity.java +C:\kevin\PROJECT\weigtht-loss-camp\code\service\weight-loss-camp\weight-loss-camp-api-base\src\main\java\com\wjbl\weightlosscamp\api\base\exception\ApiException.java +C:\kevin\PROJECT\weigtht-loss-camp\code\service\weight-loss-camp\weight-loss-camp-api-base\src\main\java\com\wjbl\weightlosscamp\api\base\filter\WebLogFilter.java +C:\kevin\PROJECT\weigtht-loss-camp\code\service\weight-loss-camp\weight-loss-camp-api-base\src\main\java\com\wjbl\weightlosscamp\api\base\filter\WebParamFilter.java +C:\kevin\PROJECT\weigtht-loss-camp\code\service\weight-loss-camp\weight-loss-camp-api-base\src\main\java\com\wjbl\weightlosscamp\api\base\util\ApiAssert.java +C:\kevin\PROJECT\weigtht-loss-camp\code\service\weight-loss-camp\weight-loss-camp-api-base\src\main\java\com\wjbl\weightlosscamp\api\base\validation\group\Create.java +C:\kevin\PROJECT\weigtht-loss-camp\code\service\weight-loss-camp\weight-loss-camp-api-base\src\main\java\com\wjbl\weightlosscamp\api\base\validation\group\Update.java +C:\kevin\PROJECT\weigtht-loss-camp\code\service\weight-loss-camp\weight-loss-camp-api-base\src\main\java\com\wjbl\weightlosscamp\api\base\web\GlobalExceptionHandler.java +C:\kevin\PROJECT\weigtht-loss-camp\code\service\weight-loss-camp\weight-loss-camp-api-base\src\main\java\com\wjbl\weightlosscamp\api\base\web\WebContextHolder.java diff --git a/weight-loss-camp-api-base/target/weight-loss-camp-api-base-1.0.0-SNAPSHOT.jar b/weight-loss-camp-api-base/target/weight-loss-camp-api-base-1.0.0-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..de049987cf8701666e2ad3840aacfe7f684a81b6 GIT binary patch literal 20029 zcmbun1yr3$@;;0^!Gl9^ceexy?(Po3-GT>~z{OnxT-@C?xLa^{3GP8ZGBdlG$!}*i z`~P0fJ?Gw}`+2J0?yl~xt|~c6a0oaM5Eu{;X6;}NkUu@J&)=nml?3R-WkeX{o{OPB z7lZk&*q0@CABE@tmVf>{|Lc!p(gHH#BEpJF^wJ{d(nEt%l63Urh>~>FBSWKA3XES^ zR=4cwC8TM^rN^BLs})Y9X(fjhPwWvCVEU+}M~4&{r&-2XHn;4lhlj++FD3e?5$VOG zq0Cu#w$``6K)%cHyQs83i3;&7gQ1PpZ&Lo}65kv1y@ZRof#p9G!}@bE7h^LMQ%6f1 z2M0raE8Bmlh4&A&^li=lp(fFPscE3^VEhl&seh%qp^deJqrSD{Kj4u68jk%x$wK)n z7{=C)W{$4^APLPcp}aRVwskbKvHl03UlQk?nWdw#{Xd}m(u;9&H2bG9Mf)pFa@Myr zGt&PrZDRf(kxcAuoc?LtlKl#vi?P9bCmA;B&B>pRL)?l6Cr1oBFR+;{@m5(@jKmUnHh53Z!qgYT0N z{I9?R@2UCIq+_w{i`10j@mPB2Ch0(A}+gzrshqt04ZW-7nIz~L~&1B_Pu0!Y3HQjz!x@Y+<>WZvosBp zLQZ^9&%GNtFnlcR!U%wOkovsKC;ZWtTy#*;E#uK6m(gz{E=MlMkGH)M*C5%9^c}sn z*`}&rJ}L%Ox{WhR?krVmm%O|js4kREF&8MqF&}qEU}Lj-hu7;oam6Jh_(A_V_BF7` zc!|0IyGTVpvO2_(8)$|g>hSc5r5_nb%Ge|W*K+E|RTe|BtQI=F#HhE8wNN=Ud zH@?HN;1I5aepsV|v@*@>a7z(BJt~>6oGVfD zV3yjtLx(_#ChC9xF0JKs>HeYn_}f_(9BC`<;BHm{t}25&$I<&09XH#%7*TNs%1BoQ zHIdZJ$-A>k4j1>sZ3)B6K$k7}nN~fu@SNNEfvLMUp1Z?K>txUv{;uM0d-T^Y_gCIK z5SDn>EZ*pK+}%DvbCjKCCt$oqUbhiNKM;UVif5rS%vPbo8mZTz#9f4G%1@wh>fKzC zmZQeD*5DN35leRpo1&d5#!|QFDNc@!uB2U<(w?j>OwF=Xg}Z{htk%Z{9O3LlH}6=$ zISXVSx{Rj8Vi1q$TR$ux-AoT}LfTNiM`$8BA?fDh>KO{^kAnfJ-Ynj$>VoH4Ybra+Ov=8GMJI(V%#pMNg*s1~X?4LDm}#}y z>ykSifdXm5C^2I|V%Au!TGW5oc>l0ISrcsPJWPe-N6x|781=|Fn&ZP(Wwd8KoO#(H zec8ezzm#xrOr-g6K^SwlaKi>lDKSjRVOWn%!b{wP6dvsO@U*+k$j{;IH9BC-wef{rjBs5l7yl`~^Y$cePNSt+QHF2f|9_2vYQZy|tKc=w2S zt5^IQnd*(?IUa`ktHWNH>oxzxpf%-C51hDV>~1{+6bf&(JOo%q+JU$>)JSwIEVt9! zHss5tZ%A)nKOQdx?$X)Q^=XUYE!O!zc0D$6CYi!73a{LgPY3HAqSN;#7b9t3l-*%v z9GM}oF7e1LdX&@v((kdo*L7MGY_7`N46&1hQk<$TAK)hu``EZp{evHw;?;UiM)jVw zc7U!o=T>1M`46yv)gK?FL^%tfKtS?PK|t947yY4N?BHbS_`C9GQPosL7e#+ePMb>s zg26Q!oS?D}f|a_EU?SR&EA#840Li2DvGw(mI?~j`8hV>IDYDO^>u%PCq=coD3YE?b z3eP^CAsdeDC26apRHD(j8UmOTj*`D?t&k9ed^#Cx7c%B7x1L6ioSpS& z%CLPjSHGG%2RAP%hQ#KpkWd~gZZJ`(={;HIDle|(mT#!r{g=K@(U~SNOzY?lT%AOo z0J0R0jB&XgQ}-PA(PF|uMan>Oys*^|?c;2pj%m;jzRTC?AGijCV3bCDR*B?81TRqKrBN{^Cjw@!?c z>UPKv<}O@2nc*5Oq@3Sl%+m05oC(rggR#xg^6+<2#T7;monR0+-@}!_5418J`$KDE zDrF%=T`UO9)+>HFAAw8ds9$8TsP`4{F_o#iO-u=)B6wj(h&{#lK|lv!#u-Gg@6AqS z(=;jK^TJNjGMchxgxSy2$Uz{T)Z1+!zx5#B!d)iJ5QhaNaWJ{LE=T{R>)DBKIs;CE4Llw~GX%|N z1<6rFNxyK{{W6E!;&DSwuBDcDjoGNtU0;`+yHOj1} zvqChXwRV;h!xp$VCt>5;st@rM`3CN1jT=}p5TD@j)MDgOJgCO%xoOC-_lin_;$g za8HYow0P5lLKB(-z1%f?*CpZUHX7?-g*0z>6d@@|(N0KF!agIX5I&6%eu7*l1etG! z!fPc{*e~?3Ij+#zN0E&T3anJy5Hj)IsnG`Wo=j8eiFM*q)M9fzWT=G?!Av@$*ky|A zPB-t_!V(OsF^X5(Aj+Y%#cn^C416#lTU7@$BD6AS*QOJYgC>i`%#-#~ISs4Hrb*WI zslEn`uF%n~J_Y;pmgIVUz6vViWUYP6GbJ0>V~j2X)iK&P!#~r8Q&c0U=$+}1PUEJE zQQ-h2z8xdXcmNrnjnh}xi2$qMGYJ|LM!))KDlbt_yTwaiOq~<3?^2@B90?`fziKe2 zoj{!(P8V0}P%_aBUtl-4oPL&0F2s-IEAjO$uzC7}f#kk>{y=B^3Q=nSj@#@RZkHYn zMt7vvgi(FmW9vC4iBL6;ndEgv;6Yf zCvNoHLFf0CFHT9@23HuJ&+yny+hwvoQ^pQgA;bDqba4yl!7B6NOST>rm9iovtPWP0 z=xNVa{3;%qDen%Fb?C7KUUXRBFVGMSO6we;TO&u*nMSxiM#qZ{4m*nuM~g`-Pj2@t zAJ~dD`6680}PP^97M)%IeI7<-%CUF#Q zGeS0ds|&cZ-}ImbL$N1=s_xz$@Zp3E#Kt9uL#V>ld1Woz>xr_w0g-tvo^ZFodvU?* zgk!#ol3R7!hHe2XPn@anrZl5sSPofNx`FV4<`tE6-l=OyetO+0F*Sm40`ymI4IYNs zayeR}2uR$W3+9+n6{hZ2a0-aReR^hyY}y9~2O+~rblpqiV&2x4fZmjr7CU2D}yY zG6&1w+f$|qqlT&G-<>%QIoe%f5DyZkBu8!MnW|){hxANdxb(eaO&%uHdqYeT#9{_x z+DYqqND5+{8ZNMNA_z6c{LOxT#_|E??oKNE8!55yL_BsGi{~3=M#65e57tHB@TCmf zE@@`#7|-uYblcezlA#kL@{E*h7{*QJOy6|u6`taby!Kxz#euHJ62-cMhjvg6 zmj5xKTvzOJq z63Lr}w0nM@Uck5)xZ%rDXgpUG%}Glpqt2G;FuVD6r!sgQ<$_Pj9>^4iH^>~PD23kO zf1T@ULu3Y_kRTudi2utzS5Du=_)oJvO-0jTQU&=@hE}~22tk4D2fL*J=5zp&5IezM z2e$TZpFdQ{)JFk;uTK+2rW!4@=e^o8NhqgtHa1cnyOufGI+pa9Tk9B+ed8+)gCJm1 zbCIRD(ww41XF(*OB1Nv$y*TG4eMwZSDIK%N90LTROHD{;o znlUECM~v{$?v_BI`o1$}v)Irhx^Do{i48vO2pt=>bot5i>A*D{GQ~F*>b1RmowZsh zJ=GRu?tCudb&f&qx71cqFAtRYpeoHHQH*Dm8EGHPfhrSe#xnF>ubYO3F^;g-`IIDd zre1xbfVUCD4v=!bbyr(CbG?;L8%AX~->i6JBvMXok3E$UtOa4X;~9GG$T&@^E)x+0 zU$IpVg~2qxZXJ~>b-nuDBOt4x#Iz&uRgYLBkAJ)9Bzh<2g$>T4qpnXgMxLP&t5H-g zIhDg#Uw-(lY$!xEAhofsoz@2V zCy`UV%8e1wJ4P}XI@3A^3pnUyL}K4%?4F+85|;(BsT3`igr);aWg>Qj6-?NMHWaz< zCob>TAtgvxVw$*Qvpnhk=UI3^-ZDe#4<@$ZCNX z2WO5P*yk-rvg@fKZhsqoPR27U^>>dr<&iV40OGe;_@{i32b0b0>r1)!h z&aHxut0&BLD$+~%G_zN3z*fExeB5reJVqQJ{w$I+iV5)#k|xVip)2& zh*eFGU5eLG;CbSh0#L>tZ=?Ms>w_c2qbq`0Zv3+;rOflqqR~0Ax)H?9aa|(>&%oNM zvQvO{w5-Ap(0*{UZDQ2HW1l3}TlvFkKBBWPe6+e9V0zD}m8EJTRkt2IB#AmsTH1(ED9OW@<$C+xUi@=pwBSeTQ0&CqT;ml| z4(Uo8?y)A;bAk4gF_c@C)K0KDW7;)daZhC38+b1>fI+APu>^~(xb~Ukq{NX(Vrs@c zXcj{sDauwDN=0>ZhRN3!SxS*tHdM8Y3VGE2!V8Xcn}Zr)lLGW4D?ks9Zh8$-$O2hA zVOuO(#cE!lQN@x!?qRYma9CmD*q;FOI9g^kI%%amIx2k~9>+21?IPy?PBz`V0FJa>{@e1wD$06D1Tned%|dx`EawD|Uk`Phaevdp<~C?>RJ@JTyHu-%Em^-L(4C2Lg?OD$QP2 zIU3ES=0z4NQ;frv3Ja9fxEglCOjB8fn#ncFywX>(RuaL?o267K5*3BJMcwB#GhZsZ zBg>Vv$4mC$guHr!FpC>=%K%J$=ZHAEiV19rngxYujn-1AMA);}R;I17 zcat3AnmhQ`M=YH{epDh!EI4t&Fo@rYe%LEu1ot; zy_siK_w<%Yp@>zt8bi9GQw{w~YIc)}{Csi7W&lYbr_gm+ZjnRye5gj<4t-CE96gPb z^o6#`7mZ1=^Vy*ySxGmGcomktXy-s`ll;aBt*@c$<gk%)gnJ2w^!yu`zzklr#4&47 zA*e$8t~F`F?lL4$f$dl=&fzu;kuN!ma>#yY4W%%+GD{Y=)>dcrJ=$`rAjCNy(gwp_%MnICCLB?>In-3RP=W{JCSyo552qk92)+X?0Z!#Fk<;Otz1L zz?7GCVf)5S-Bc$}+h(q(U9#ql@6sw=-m4#+IN<5FV^S@{ivV?UWkI80mmcwL-v-Nh z$l?YXYd9Gjs?XlWm7?=C^CfqXbyZaS2ZqMq9KeOF+(WamNVW5dL|#o#$MxM8PK z&lB03X`Mk5t>_5uinkBNO)y3GO5Y8VbtI5-Ezha(8%0s5Sz)gKF*Du~r8TNGGv0iP zg!pQt9TI*$%D^>gV;2SFCF#C#zVw)`f-sz!@6D0iJC|VVi=_;$ukw5lTP{Ivn(%PJ zM>d$Kz-##hvZJF9$MojcijtUU`p{a(0_M7s-olmGH5F^0R>vX^)?Av<#{`cuDO_OQ z^Bv{Hhq#x7kFAaPA6d|_&L$x*61d*ySxaX6`DrzO&%UOtS&CN(0 zvsf}KY6U5H(6|HYs*$Oq$|P?BMRh)B64oir?=WhS>2t9SolIXP2k}g8mTtdwAMTK0 zV=3J>ld7Ghbu8S&<3KQ(AFY}#csG)^qvSpeOf%os9a6fIQu_*NCi_B&OkS)EYqVVxcjCp!yokY|qZ` zR{TX9c{FvAPK+zz3*8P_cCREK&?vYDvt>WxOBD6q$x3sNB|NSNVDaAZ~^;#;Qm z$#N6f`C)aeoa!`3oM1f$UdK!c7hJ1)w99O|Q(?a`r8uLy$0Mvn`-ZC1uINmx`NeBi zX48bS|BV5~84}~ii20CvT)ghygSU??X?BElXh{<#G`{y%_HU_{uz;}{+w6P~UJ14r zB->oPGOP#oW~U!UO_ukZ`W0pm&ox1gBD-F65l-PaK$C0wJkDzCySz8YTvVO?xE7l2 zl6S*xC02^Q60=oQvlI0yXMsY)3rbgDLS||s>+Eevhz6?gISVfx+*>7IG1olzWwV$0 zu1POM4leCno4?tKw;f#HOFU4uez`q*;hiI5+xgBDdsLCe%hl8Gu{Fd-QT9G>$>oH& z75ZD-UpFzPRiAZnpYPpip1pMVe#IJP{BQS;@7KBi`tiqgZnTxnBqMU~(@|qwZKhRi zttAc82A35|6f&xyu-MeBT#h9w!evW}dXgyW^GW42^F6pP(Wx&|dyrsiOtDnf1Vkn3 zr^BX|hvS1!ZLLorjBo4w!8%z~A+PpMyXs^EE&!;y-4%m=1;cq0=_hKl>wYx3AxfEi zsRL=}!mz@D!-ig;tv&^%KRCZ6XGT7E2+S&a0SS)FRNNeyDW$_)O}iu8CxF^NhU?h7 z*(BYHL7Qow;ZI|%CEVhV(-|YV)j*9}P)Vr})q`c)o}Jp%8C7*2x>j(093~KeUW{#; z)h&1SwlZzH(#T2Fm{E(RJPaeSkwmEC4LmuqTQ9|H*JAF0t;a-Bg|hQu1A9`#z?}qm z^~JBCW-xE@92kaARH64?mON2a@=P0BW7miCd|{+^V7S6cR&kLBRB|F2nQ8*NG3WYM zIw*OgDzf*3^z%_mi-K#Mbs^C%m%Zo&QBL3Dq1M@Fyo;i7&asYjtvKrCh71ArOn%I< zU2>`nHJYT!^iEQF0mu45r0fYXZrKFOMC~E;iejEdFYU30wN+%?2?x<~tT3%x4-NlS zP3Z;{3fs4LGRuSg@5;ObHF1`8!*ocPqy?+#Glse5yR>haFIw;(0zDj!YOci`c;GX> zX1jo6d^X)x*?t|QGO1JkWnuu{Xwo9*+v~%<7--h7O3ukRYDb;|cN@IoFSTUWM7AS4 zu?cc@rfvQ@>KNTi5zn9PpE@YdcFQ(7)q>1KmI)hWHMl>HGzxIb>_@e;%{WdTl<^$2ISmt<)<;*+I6v5o-l@`b7)v;ZA zUK|t~BG#8;CTAWt_!!wWD@>=b6Vzx8atP7LzFZoVQExa&Ri~F+TN0W`5ogIL93<;a zWOkVJ*}-vTVXdl7;Sh{tq+nLbuI?7TdiS5mEOpWiQYsFC0Z)E18dYHJ!DGx#1 zf%G~38c)GNpuC^1^;u2tn9e4$UBz4Y0z$!t_@dbKQDPS2b_HP7uWJ{LB zi68g3I_a3vDXtn^(GYaw7!+92fIMIr1vbAzYC_Y?82_uW%j9ot zXo}IV$5669=Y?HNVZDIZYZ${h@pJ$nNtvuGa0ApwDx1l1>gzn&;1tF%@Q)L6Ya|7P z%}3-P~|4oI;37Jx}dkjuWX^ETFmS zr9jd<5BQbwlS7Sd8iBJC)e&#Z(TQp7kbRgKClix*Tpr4mv9V>bT2cDg)xB~;lXdl_Hir!3~f_aU+rA(T9=|FE1xZ$j}8TMGOUrt?K z1EJo8(aSK$F-_kpg-ve}Km#Z3NoCP&IXDfo7Q?l#e4pCwHV|A*ZxiW8TEj0|lY+0A zmmpoL`O=uh#FYqq__JCT=n$kicQw7;$T?kSF+7{deKU1ZI5i{U+pyt>tLmKqh#6YZ z>vYftpA~a8bk6e4n8T6xlPXg+F!OGo?!de#PKNA_ioQg(v*f0@6tA{N?ntW+6llI% zhZ9K}`5LL)c)3&@ip7d=63f9;Qvy4)al?0r%a}2 z5{FW3?^1|wTT?U=pG)l8$k*@zut|I+MXPuGe1*`}qMTF-&9vD4iOxM1oo~IvD;X|* z(XTH0_QOOC?DhIPPeYq=VPP zv>4$90N;#JAWGJ^IRs z%eXwHviiA{4v&7(v?J-wqUX8#!M=Hlde>Hn^-;48sH|`=LsrY7P=7*2nFRr113;E_ zwNQZug}aXxG(2Q7mB-d!4WEqO^DVis(e2&>EU%9!I&*(tJvTFX6t>D9yU*y_xnmyY z(hXQTIkRqY&l~PL)KOA;I^?I0^1$Li28WLir{)N6Q_n??W+kya0+u}vaaz?~uG|Oa zNZ4fCWM%IRm=(Ro=1(Ga%7G-)?ftyzO+KH%Jejg4P&7ZUW0v^|D`+PQ%zH#Pc;mS5 zt?-3C=!@`m2Y)gy?#0?5_KbReArd%!TAoC>6E{lkm2)yXNE>p(DV6OVz9Kh?${bx7 zC`H5G5?F=8j6?sFlG}x>U50sz+G~~CGIWYjIbu@&!9uI6p}zk~^%S~vvkdTNee{Ng z`w{xDTZs==>BQvEn^(tYOC0b2ww3tpj^)pri8N(xO*Bz-FKAS9a++B^P2gow4KhqU zHH<`Y2_$XBnh;p#)HL@TLV5X|whKkZo1C_cndRBpk5{Fb5Aro8&fqzbqVI1lnH{zd zxEz+xM^dZ2A08HtK?pKN#=9ByT@f8zinbG*CYEQF0GNUCrZ>4KR#oJJW~B>&XrBgh z3rS++@SyQ%k`BggNZfb3(6vn!GB%r~n3j|5HGB!eGtrXFYVi!o%t{p`LZf^OHB+8} zNB44ZL`;WM#yCry#;-yM0$VE&2Lj#!$^9_o9Y}?057a*wgtkwAt!2(+Ka5m(F5JPxVkCQDrl& zjyyb7Y->VzU0o(YnT$A(f^FU)Fzg$I87$^ZB^s+61VZOfZE5`v(H9=rFk6t^w#)5f z>DLCDp9Fnm-i;P2%{T+0N-dfup${Z3(XGdfUu=D3wboBH3@e>pD~GZ+^z~U-v+PtY z%Nl$l4d+Q*uOA%4o#Ti*Oe`wO!3Gyz1n&CSe$^4O$cH(zn!YLtoquZeVK|L@&B_4i zvSnY1S}9}dWRhM57CKG$)(w42G6S!AFJ^n6n`L;^u1W#LlGsTCKL z9J{ve{!y#0oP>2kTq(A^b|-+ah7~}8@GXXT^+vx8@@-0~CDgL@BK9Ok8Maz9$XM1> zo7HjSm0lkmhqf_?(bNm8GuPF|bX0lp30g<iZ;{-9evTW1P?KRio3##8{Y|>oy&i_$G>IC!3uzqHH#qBcs>`SyEWZG|V#SSe zac8kBMwG3#u-K8Jw6=JH7=W+>Bu$r3yo!AI`Wy1;>EIkZ<$e%x@lb9N`I+DnaY1`O zQowQF4n68Ij993jUFyzFx*=d=`VndMIC#0M<66TbIXCi+i0CE4oAKg^4X$Bd{way_ zN6^3OAFX`|0rBSp^!l?7`XyJ!-vSbz&&~o44#xI>xH85?YdcKvqX(`)N>D<=%`%MF z=1-l;rxb7i{5B9aRx$P=vA z@0v|q+MaIiG5FE$a10O{^^q=5GfegkiS8&`&D_&Ff&e4<1=sZy7f}q-Eqi^rJFqh| zk$QbdH$0^&i~C<0+`;v45c+#3q94%$-{;I5i}BX11hcNI4e5c32X56?cYPc$r&ttP zW`Pu{u)-fiT?>VZ?pmJ zvQ)f`&GG&kp()1y#2heq8%y*`tY=dM)9cWN00U^#mJV@}UFZdZ?KM zwTln*8HN#BLcB2@X4_sZ;SU+;b^JDH9d-ODE#f$A8hfl&uQYi?_t7AkvdyFlH;Lm- zhx~C(M+&uG49eRDks7k@NDxMS^S%Fi%N4o;7FVy(Pqm4PTF9RFW%@H*u>u4}iJ{*` zX%Tfi89yusF+T?wx;bV&*GKt`Lt(dU8niGlHcw3^IB({&u6mZVQ++7Iv|1Zv;6+&& z{$e;*s)Enk3YE6@mi(v|vq$E$WRbNeFj7=jsn0dlFd^~2 zu=LwTcw806JpI<_2<>t(ayqAl#}BTpAgN=l`7okrZs|?a=fxwhLy@>}_edli7bR5E zyPBHNF`;Uy!lFjSb4>l%^jG>x4~)w_ta#W0%3A`Muv<9G{Fe-nyj9R(XlPN`+f?&^ zGF$PGjKzBY|7w}C?Q=xWzgiahy=CZ-D@e$aV~ntEIXU8zK3J;@YCZ92njtX%@mqRA zHJs*Wran@<90!l7j%2~vm5Ev0g&R}Ypi91ox@7)Yy?}B}t<0YlN*nJhb=+rVk^m0^ zBJeAn_B{qj)Y8U4-}2w)I5B-|BTHlZ-%TVfDuedly~V70<8u&PgS*H%eRyHS*x!pW z`o9GTR2XXtcI>9}9NH}a&1Qzg0uetJ7Z`No%vQpQV_-$EgWn)gbj!*u67-*S zp?U>`7Ao;AIUMutEWfUEf4tp^cmrx=M-liUFf509`&Oc#X(pgL0bKN3Yd4Jrxo*t6 zkUQUL$?a^Q#A3gvaYzk6wM%G|vFLjyJbliJ&lZc0^%f~rIT-qo2x)*y>}bfXx!hw~ z#Ii(4v}7=9=Kx%b*DQM~@pg>O zrWx={2)*zV7%Wo~;_pAE?gpBvFH+gd?zA$Ak9~xwK!_*HajZH)fXqFJ z8C)}TmS)#w<}7FdhSE8(>`Q(-+B2h)HO+HfQ%(E8*@c;Xc$Tp*pS!{RSPO|nRLJS2-y?P@$z>Aa24)?{~`oVHZlE5&gsj9t4FqL}rY$yb|e zxZeggrQqUL`?utvPfm0m8>BF<#QXR-E;cz)d7x!O4W^{)37d&d2&{9e2q-k;0C_G;>H5W5@;TW<`8p?8By#hcC114ytfsfrWmf$_$q~4k0&@yaz{44l* zof!C~b$jn7@>iS@?*m)Y==;aI^Kn-ZD#k`0I3UR1L)V<=#h{OEisJ>Fi z7pf+`z|KX0onE>yqp!{x&h__+!vvyjmp)<9k}U9ptHeI zXM5e!$Q8YDd^5{YRr@(w_Q0ECFP^p0V>Q6xd`GFTREbxyp5v&+IUYF`SzMt$*d%x8 z7>1FHQ6U_pF}`76=p-G!`4cNpNJyo_XwdoF-Fa#M1Iat?FY@vd_$(_gYaPw|^pa0H zLY5TEr*6yU6z?|p2=MyFkLwD8=7))rKt2NOpJoC1k?7$n80AB^yTb%2T)EzH zrGCpQm&Vt$k9mFUhFOh$IL32L_t^8&q7Y%!Md(Wq*}PTYBL((QXiiKVi3NmfOTfBy2fO6Yd_LRgwxQzIAepIfYk{$+pGw~D5wan zkpmLhQ2Mc!%H0J(e+nv0424szi0UcLt{ChpC7l)N^NM}`QDtIq&}(*Jj^hrPJ%_!D ziF{xU*OoS6=$ReO3TS~lm$287R(Dl2XN5LKXOb8-M%BpdQm&jaSn#HoWqAD4Zb(cs zSR)4I&^`A#%ry0Rapig*-v4{ps_k<;?0YNAZY61(bw=bCl2gLPMXOG0Bn-HM+MuaY zB@NQ~BOM9=uG9w7Twr@!*#-o=c4-iS71v@=z1qgO?`BP{EGbgA z&iw6Oq7{MlE+=QNo3-8W`OFLch%c!_ObgnOpSW1drjI6tSXKH3B;|K6Mg0f0msvZ> zSvxaguf{iYQ6E9#C=G7wj=dZr&nm=aGN!dVd=5X63yuEJZQo;-AJOF%zb8bHd;akM zKX<;Zy^Zbjq0P+LL6VlbUrJJn{#2@hPIg#olyZEypMic_T4soDOq#aui?jr-%+{6! z!vF&v2(|dg=oHPU#K77X^&jaL*uJogv5X;JIUvAXogl6KmOlX$3?2OU{0Kh>S%1%u z@cV-da`=5u_+#wKNq(>P_sJjrs0WhmL-FToe@X@MJHqe8|0#9D?+D+Ci=MxJkInw4 z8h;ga_>UTY1d;z};m<_hgU^3|z7t(MfBm~4@P8uzp6cQE=Q|4Z^IZQsl<%SB|Aa*J zFCdWbNJjq!>5rK9zi%G(U*Leh0{8D2_kR-edj^ExpYLLR{WaX*5=H#Itlx7p{J>;* z-VglKOZ=_r|4tn7_o&}fNBlr_`X$tVIT!q6PyJQg)?Wes<1+czUo6CPxXyol34bJ- z`1@DzJ=MgIS0MH)n14Et|C6-elQ8^1j{YB!|CNa1?p|2l^LJ?Wo!)&C)}#qaOr2iwnS7=EyYJ_lF-0^5H~%J4JG&%xS1SO%U~jbCQ@ zbLjTZ6hFtr{h;W1_7M3sioZn2{Y>z4AkGhhN{nA6_$e&sXNsTQ!GBOh;Qj)|-#CZ= z%<{9p)(;jX(qCcuw@&@P-djIY{p_UkgKFS;-TAMb^0zKKKlA*2gZG06gW-ST`9Jr0 zKQsMotN+0i_Z*4&Ut9E_EcZWC{A_alLBYiS3lx7+`2W`c`!m=5WRq_Yd_OEdLHyh>8bU&LSe$eSXU-JIfp88JrtU~{TVdBq3|LIWpgXqnh|Fb4N z^Zvf9{QZLP#}V<*H2>-N@q>m};Qy88$6-WH67pH!gMg4c|M4P#fP8(%1OfT~0HXcP A&Hw-a literal 0 HcmV?d00001 diff --git a/weight-loss-camp-api-data/pom.xml b/weight-loss-camp-api-data/pom.xml new file mode 100644 index 0000000..53bb6c3 --- /dev/null +++ b/weight-loss-camp-api-data/pom.xml @@ -0,0 +1,44 @@ + + + 4.0.0 + + com.wjbl + weight-loss-camp + 1.0.0-SNAPSHOT + + + weight-loss-camp-api-data + jar + + + + + com.wjbl + weight-loss-camp-api-base + ${project.version} + + + + + com.baomidou + mybatis-plus-spring-boot3-starter + + + com.baomidou + mybatis-plus-jsqlparser + + + + + com.mysql + mysql-connector-j + + + + + com.zaxxer + HikariCP + + + \ No newline at end of file diff --git a/weight-loss-camp-api-data/src/main/java/com/wjbl/weightlosscamp/api/data/config/CustomTenantHandler.java b/weight-loss-camp-api-data/src/main/java/com/wjbl/weightlosscamp/api/data/config/CustomTenantHandler.java new file mode 100644 index 0000000..0f059ae --- /dev/null +++ b/weight-loss-camp-api-data/src/main/java/com/wjbl/weightlosscamp/api/data/config/CustomTenantHandler.java @@ -0,0 +1,30 @@ +package com.wjbl.weightlosscamp.api.data.config; + +import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler; +import com.wjbl.weightlosscamp.api.base.web.WebContextHolder; + +import net.sf.jsqlparser.expression.Expression; +import net.sf.jsqlparser.expression.StringValue; + +/** + * 自定义租户处理器 + */ +public class CustomTenantHandler implements TenantLineHandler { + + @Override + public Expression getTenantId() { + String tenantId = WebContextHolder.getTenantId(); + return new StringValue(tenantId); + } + + @Override + public String getTenantIdColumn() { + return "tenant_id"; + } + + @Override + public boolean ignoreTable(String tableName) { + // 这里可以配置不需要进行租户过滤的表 + return false; + } +} \ No newline at end of file diff --git a/weight-loss-camp-api-data/src/main/java/com/wjbl/weightlosscamp/api/data/config/MybatisPlusConfig.java b/weight-loss-camp-api-data/src/main/java/com/wjbl/weightlosscamp/api/data/config/MybatisPlusConfig.java new file mode 100644 index 0000000..058ac7b --- /dev/null +++ b/weight-loss-camp-api-data/src/main/java/com/wjbl/weightlosscamp/api/data/config/MybatisPlusConfig.java @@ -0,0 +1,32 @@ +package com.wjbl.weightlosscamp.api.data.config; + +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * MyBatis Plus配置类 + */ +@Configuration +public class MybatisPlusConfig { + + @Bean + public MybatisPlusInterceptor mybatisPlusInterceptor(CustomTenantHandler tenantHandler) { + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + + // 添加租户插件 + TenantLineInnerInterceptor tenantLineInnerInterceptor = new TenantLineInnerInterceptor(); + tenantLineInnerInterceptor.setTenantLineHandler(tenantHandler); + interceptor.addInnerInterceptor(tenantLineInnerInterceptor); + + // 添加分页插件 + PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL); + paginationInnerInterceptor.setMaxLimit(100L); + interceptor.addInnerInterceptor(paginationInnerInterceptor); + + return interceptor; + } +} \ No newline at end of file diff --git a/weight-loss-camp-api-data/src/main/java/com/wjbl/weightlosscamp/api/data/config/MybatisPlusFieldFillConfig.java b/weight-loss-camp-api-data/src/main/java/com/wjbl/weightlosscamp/api/data/config/MybatisPlusFieldFillConfig.java new file mode 100644 index 0000000..3888484 --- /dev/null +++ b/weight-loss-camp-api-data/src/main/java/com/wjbl/weightlosscamp/api/data/config/MybatisPlusFieldFillConfig.java @@ -0,0 +1,35 @@ +package com.wjbl.weightlosscamp.api.data.config; + +import java.time.LocalDateTime; + +import org.apache.ibatis.reflection.MetaObject; +import org.springframework.stereotype.Component; + +import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; +import com.wjbl.weightlosscamp.api.base.web.WebContextHolder; + +/** + * MyBatis Plus字段填充配置 + */ +@Component +public class MybatisPlusFieldFillConfig implements MetaObjectHandler { + + @Override + public void insertFill(MetaObject metaObject) { + // this.strictInsertFill(metaObject, "tenantId", String.class, + // WebContextHolder.getTenantId()); + this.strictInsertFill(metaObject, "createdById", String.class, WebContextHolder.getOperatorId()); + this.strictInsertFill(metaObject, "createdBy", String.class, WebContextHolder.getOperator()); + this.strictInsertFill(metaObject, "createdTime", LocalDateTime.class, LocalDateTime.now()); + this.strictInsertFill(metaObject, "deleted", Integer.class, 0); + this.strictInsertFill(metaObject, "revision", Integer.class, 1); + } + + @Override + public void updateFill(MetaObject metaObject) { + this.strictUpdateFill(metaObject, "updatedById", String.class, + WebContextHolder.getOperatorId()); + this.strictUpdateFill(metaObject, "updatedBy", String.class, WebContextHolder.getOperatorId()); + this.strictUpdateFill(metaObject, "updatedTime", LocalDateTime.class, LocalDateTime.now()); + } +} \ No newline at end of file diff --git a/weight-loss-camp-api-data/target/classes/com/wjbl/weightlosscamp/api/data/config/CustomTenantHandler.class b/weight-loss-camp-api-data/target/classes/com/wjbl/weightlosscamp/api/data/config/CustomTenantHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..d962fbf0ef187e98e3c50fa1bf6db58ad5ad8f45 GIT binary patch literal 997 zcmbtST~8B16g|_Hwv-~JLP13lzfvSRPx?|dF%^SJgAb4zeKE7`uuQW%Q+H-X|C0~; zgwezw;Eyui>8{WO!ix_(ckb*x=broV`_GSG0G{Js1qFuAz{LD$6h!<;s_@W7#@d01 z$6SmR9||YtP9|ezu4*Ba~BnPg7GQ$f`8weAt zp-FlCIS@|SagO-5p3*YsXDB~WTDfNo#r9^Oq0}`)Swj(X zbyQGgSn$!iX&lI8Uj&h4X!guNM17Gc@8^#tcc?7G)82m++hLdsrOQOV8ZvCPH+xz- zZV&j#eu%~*u`;3Z#)-6(`nFH5ofBzM;A#5gq1XhfWMJJ*Jww*+A+~kCUrE> zVpyV-r|sTziPB-Gf>nn0g-Wu>zKBxl-U_bz?p4Y zO_avEikl3x8SK3x+?)!vN&fZ!+(hp@!VhUz#5B0to=KB|e5w2tSI^nDhrV)bfR=&2 z8QS3zSy}@+XUXGa8QGcp$EbayO96E{%ag}C=ILI~0&ocnwc+^pKI%CO;dLadAS_%7SyE5>c$-I#Ds)Kr5$wF!6z6bN!SkQ`4GKQ#?_# hfm=EBF~)+?q8s+?PLG| literal 0 HcmV?d00001 diff --git a/weight-loss-camp-api-data/target/classes/com/wjbl/weightlosscamp/api/data/config/MybatisPlusConfig.class b/weight-loss-camp-api-data/target/classes/com/wjbl/weightlosscamp/api/data/config/MybatisPlusConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..3cdc51f55c1e213377a872cab4d3d9c9e8c0463d GIT binary patch literal 1981 zcmbtV*-{fh6g>@rfe-{)Wl;eY6Sj6i6apw6UHjMXA3p&sVc9?(!)(ej`Qd&t%MYc>?73OXaZ&6yt7g`F%V#A-xmjhXNAu2jpV*exeSf-N-KAfp*|c* zFa%btv<#vi%^@_Pk)bW7v|P`dNojA3WL7eC#H^IaCWNiLeep2h?kR^M8oM&VC_|4~ zV!ftaX{Th)wQPn@;Y;gX$vduPZc8n+`$p(=R@%`>;dWA3rb=6RUPQ@}Z@4^irFN91 zIc+maJLR4$<3Q~CKIFBlOqo!QBEy%owp{YDrOEEem}O_Ule3l1?ApSVhnD@(i-k)7 zT%3#YWhr#jKqteJ=c#LP3Zete26`CY)u2mhEp6^Q$cycow=c6ah;B4{LthB}7+~mf zq+1d%`jlbKkI5x1*z-eChI<~IglEU?5boeEL#IfmD;Y7Y)`aC-Sg9o%Nf;Quimx^W zB}O6Al{%Yo4-X97XBev*fwJJgPHrFPWC){p$j}hq*?J#in5dqd7p_Kw7(&FW%rOT3 zAE#Wr8A&uyAMw6)5L0+$fHT}E^@EtDGa)?269(fzWb<-km!c7V8;SibQ=l*%!ZXY; zv`}iq#ZgR|idso$xKh^ZD6LdrrCMZIxK=3>rYi3YE7iSMLuvQ>9RF1g4DnhZ{M;** zOJ&ATAL-9k&8I7YRZmX>3vO9?YNM;l>)bsTUWF+yxC}FwZD0OdlD7-h5XCU)-6$kg z9j)lSpwXZ`rJKr#Jitt>ZFVKbY@1WzS6MX^tIq`)q``{yJ zqICz2-2~G^V=wi$ek#TRO8Y@Prv~H^oAv>V#0Z-HydZ*2BsGh<0?7!Xm?vtZ=)?jR Q5unqT1*BK!CM*Ge0PAUA4*&oF literal 0 HcmV?d00001 diff --git a/weight-loss-camp-api-data/target/classes/com/wjbl/weightlosscamp/api/data/config/MybatisPlusFieldFillConfig.class b/weight-loss-camp-api-data/target/classes/com/wjbl/weightlosscamp/api/data/config/MybatisPlusFieldFillConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..14d89dfb00579ce12470329946774e6ecc2ce3b1 GIT binary patch literal 1579 zcmbtU?Q+yM6g^5pylf1C1rh>nLTG{AKoMUllue<@hLoLI8itSLw`?mLrMBgfwF!BL zK0)82e@do5`T%_>rdPXW*DV9Xv_EY5$kILMo_nRg-u>|>fK~kHVT@rd)CoV>3u1mC zRd?6MI?qFqWL#v5N5Tpo>U2kS`Ln}7Sd~AId-;ZvakQc0xYhsVVS?e*p4b;W7HOAn z275BJ9wr$cxafhy0gj ziI$FJ72}xl;i1AX-BGFhsh0%Oyb?hy8EPFJig-&HQw+{m4nvR67SCDm+fRd9x3Dl}498Lb_*BM;~P;o3`URNAd# z7IPlXGc12fa3FF?1q=AL45$cJzOher97*Hj0xmL~=t{epNh7Q_?TF!Qz0nyJXh7Ah zg5gUa^H?AuInjrBZJ#ik*+jVaNO~67x!rCzKDBrbBAH3-YyrTSW5xFWvCdruX1W0YPDo| zCKwu@-D$M3m(jVEu171No}C)te$%;kU$M)#H*>HO3CI3Z3Wqw(0%TU39ek1_c4p6pLf;{<*Cg9SK=X+qTL zI8AT2`4v%$=^KS$A8zf<#ivR!s literal 0 HcmV?d00001 diff --git a/weight-loss-camp-api-data/target/maven-archiver/pom.properties b/weight-loss-camp-api-data/target/maven-archiver/pom.properties new file mode 100644 index 0000000..02ec404 --- /dev/null +++ b/weight-loss-camp-api-data/target/maven-archiver/pom.properties @@ -0,0 +1,3 @@ +artifactId=weight-loss-camp-api-data +groupId=com.wjbl +version=1.0.0-SNAPSHOT diff --git a/weight-loss-camp-api-data/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/weight-loss-camp-api-data/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..0fff766 --- /dev/null +++ b/weight-loss-camp-api-data/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,3 @@ +c:\kevin\PROJECT\weigtht-loss-camp\code\service\weight-loss-camp\weight-loss-camp-api-data\src\main\java\com\wjbl\weightlosscamp\api\data\config\CustomTenantHandler.java +c:\kevin\PROJECT\weigtht-loss-camp\code\service\weight-loss-camp\weight-loss-camp-api-data\src\main\java\com\wjbl\weightlosscamp\api\data\config\MybatisPlusConfig.java +c:\kevin\PROJECT\weigtht-loss-camp\code\service\weight-loss-camp\weight-loss-camp-api-data\src\main\java\com\wjbl\weightlosscamp\api\data\config\MybatisPlusFieldFillConfig.java diff --git a/weight-loss-camp-api-data/target/weight-loss-camp-api-data-1.0.0-SNAPSHOT.jar b/weight-loss-camp-api-data/target/weight-loss-camp-api-data-1.0.0-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..fb0eb478e469b748a685b2c5bb05704cb9bf55ca GIT binary patch literal 5168 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 + + 4.0.0 + + com.wjbl + weight-loss-camp + 1.0.0-SNAPSHOT + + weight-loss-camp-service-api + jar + + + + + + com.wjbl + weight-loss-camp-api-base + ${project.version} + + + + + com.wjbl + weight-loss-camp-api-data + ${project.version} + + + + + org.springframework.boot + spring-boot-starter-web + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + + + com.github.xiaoymin + knife4j-openapi3-jakarta-spring-boot-starter + + + + \ No newline at end of file diff --git a/weight-loss-camp-service-api/src/main/java/com/wjbl/weightlosscamp/service/api/WeightLossCampServiceApiApplication.java b/weight-loss-camp-service-api/src/main/java/com/wjbl/weightlosscamp/service/api/WeightLossCampServiceApiApplication.java new file mode 100644 index 0000000..966a276 --- /dev/null +++ b/weight-loss-camp-service-api/src/main/java/com/wjbl/weightlosscamp/service/api/WeightLossCampServiceApiApplication.java @@ -0,0 +1,17 @@ +package com.wjbl.weightlosscamp.service.api; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; + +/** + * 服务启动类 + */ +@SpringBootApplication +@EnableDiscoveryClient +public class WeightLossCampServiceApiApplication { + + public static void main(String[] args) { + SpringApplication.run(WeightLossCampServiceApiApplication.class, args); + } +} \ No newline at end of file diff --git a/weight-loss-camp-service-api/src/main/resources/application.yml b/weight-loss-camp-service-api/src/main/resources/application.yml new file mode 100644 index 0000000..b393312 --- /dev/null +++ b/weight-loss-camp-service-api/src/main/resources/application.yml @@ -0,0 +1,37 @@ +server: + port: 8080 + servlet: + context-path: /weight-loss-camp-service-api + +spring: + application: + name: weight-loss-camp-service-api + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://localhost:3307/kevin?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 + username: root + password: 123456 + cloud: + nacos: + discovery: + server-addr: 60.205.225.2:8848 + group: weight-loss-camp + username: nacos + password: nacos + +mybatis-plus: + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + global-config: + db-config: + logic-delete-field: deleted + logic-delete-value: 1 + logic-not-delete-value: 0 + +knife4j: + enable: true + setting: + language: zh-CN + swagger-model-name: 实体类列表 + basic: + enable: false diff --git a/weight-loss-camp-service-api/src/main/resources/log4j2.xml b/weight-loss-camp-service-api/src/main/resources/log4j2.xml new file mode 100644 index 0000000..9e8a514 --- /dev/null +++ b/weight-loss-camp-service-api/src/main/resources/log4j2.xml @@ -0,0 +1,30 @@ + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{TraceId}] %-5level %logger{36} - %msg%n + logs + weight-loss-camp-service-api + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/weight-loss-camp-service-api/target/classes/application.yml b/weight-loss-camp-service-api/target/classes/application.yml new file mode 100644 index 0000000..b393312 --- /dev/null +++ b/weight-loss-camp-service-api/target/classes/application.yml @@ -0,0 +1,37 @@ +server: + port: 8080 + servlet: + context-path: /weight-loss-camp-service-api + +spring: + application: + name: weight-loss-camp-service-api + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://localhost:3307/kevin?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 + username: root + password: 123456 + cloud: + nacos: + discovery: + server-addr: 60.205.225.2:8848 + group: weight-loss-camp + username: nacos + password: nacos + +mybatis-plus: + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + global-config: + db-config: + logic-delete-field: deleted + logic-delete-value: 1 + logic-not-delete-value: 0 + +knife4j: + enable: true + setting: + language: zh-CN + swagger-model-name: 实体类列表 + basic: + enable: false diff --git a/weight-loss-camp-service-api/target/classes/com/wjbl/weightlosscamp/service/api/WeightLossCampServiceApiApplication.class b/weight-loss-camp-service-api/target/classes/com/wjbl/weightlosscamp/service/api/WeightLossCampServiceApiApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..4e46a4e2bd688ca4f3e9ff5a4a38a721ae5d36df GIT binary patch literal 874 zcmb_aO>Yx15PeS5CJljx6bj|zz%9)I-?#)-O2dbcRv;0S9yoa&ck6W5UU|I<{47o& z4*URq6k=?GnnMm8xXgIw*>9eo{qxuN9{|R9+(LulwX_9aEz+E?l+G@FZmUX)qU4ow zODz=_rRL`mN(h<|H2s5&OFb^jTub4#H7zt5dJC}>JQpV8@6v^mo?-8~Hrk&u>awd|>P+GL}XSqHaq*g~ISXkEsuGW0K;DAdZjE1p{G`7|~+Oz7ec?$T9VO~mP7 zgLjgPsv2#Zlx(Ay)_C>F^NBSVI;&l9Vq*@q0~{_PTt>beZeeEVOl|F?dZmM{gMWC$ zr@;t@*FKSq|>c>qaC95mV`&aYHiLL`LrRN6rXJ+kh!hrT;^IC z&*!?5cB$NF{?de-zxZ2EB0j+>B#K>J$gZE&=4gnQI);C_t9ctAPqeMtEc@Ed?Y B_o4s* literal 0 HcmV?d00001 diff --git a/weight-loss-camp-service-api/target/classes/log4j2.xml b/weight-loss-camp-service-api/target/classes/log4j2.xml new file mode 100644 index 0000000..9e8a514 --- /dev/null +++ b/weight-loss-camp-service-api/target/classes/log4j2.xml @@ -0,0 +1,30 @@ + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{TraceId}] %-5level %logger{36} - %msg%n + logs + weight-loss-camp-service-api + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file