From d356895156223b0ed3336edf68a51b3143d74ea5 Mon Sep 17 00:00:00 2001 From: Odboy Date: Mon, 14 Apr 2025 19:44:36 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/odboy/config/AppProperties.java | 31 ++++ .../model/ContentRsaEncodeSettingModel.java | 10 ++ .../model/FileUploadSettingModel.java} | 15 +- .../config/model/JwtAuthSettingModel.java} | 8 +- .../QuartzTaskThreadPoolSettingModel.java | 29 ++++ .../model/SwaggerApiDocSettingModel.java | 12 ++ .../model/UserLoginCaptchaSettingModel.java} | 17 +- .../config/model/UserLoginSettingModel.java | 15 ++ .../cn/odboy/constant/CaptchaBizEnum.java | 46 ++++++ .../java/cn/odboy/constant/CodeBiEnum.java | 31 ---- .../main/java/cn/odboy/constant/CodeEnum.java | 27 --- .../cn/odboy}/constant/LoginCodeEnum.java | 2 +- .../odboy/mybatis/interfaces/EasyMapper.java | 32 +--- .../odboy/mybatis/interfaces/EasyService.java | 38 ++--- .../interfaces/impl/EasyServiceImpl.java | 40 ++--- .../cn/odboy/mybatis/util/MybatisHelper.java | 97 ++++------- .../cn/odboy/properties/RsaProperties.java | 17 -- .../cn/odboy/server/ConfigurerAdapter.java | 9 +- .../java/cn/odboy/server/SwaggerConfig.java | 2 +- .../java/cn/odboy/thread/AsyncExecutor.java | 18 +- .../cn/odboy/thread/AsyncTaskProperties.java | 15 -- ....java => WebSocketMessageBizTypeEnum.java} | 2 +- .../websocket/context/WebSocketServer.java | 6 +- .../websocket/dto/WebSocketMessageDto.java | 15 ++ .../odboy/websocket/dto/WebSocketMsgDto.java | 15 -- .../HealthCheckPointerImpl.java} | 4 +- .../src/main/resources/application-dev.yml | 129 +++++++-------- .../src/main/resources/application-prod.yml | 155 ++++++++++-------- .../core/config/LoginProperties.java | 19 --- .../core/context/SpringSecurityConfig.java | 2 - .../core/context/TokenProvider.java | 10 +- .../application/core/rest/AuthController.java | 22 +-- .../service/impl/UserOnlineServiceImpl.java | 6 +- .../system/rest/CaptchaController.java | 19 +-- .../system/rest/UserController.java | 13 +- .../system/service/impl/UserServiceImpl.java | 8 +- .../tools/rest/QiniuController.java | 4 +- ...igService.java => QiniuConfigService.java} | 2 +- .../service/impl/CaptchaServiceImpl.java | 2 +- .../service/impl/LocalStorageServiceImpl.java | 9 +- ...eImpl.java => QiniuConfigServiceImpl.java} | 4 +- .../service/impl/QiniuContentServiceImpl.java | 16 +- .../util/{QiNiuUtil.java => QiniuUtil.java} | 2 +- doc/mysql8/docker-compose-mysql.yml | 20 +++ doc/mysql8/readme.md.txt | 3 + doc/mysql8/run.sh | 2 + doc/mysql8/stop.sh | 2 + doc/redis7/docker-compose-redis.yml | 16 ++ doc/redis7/readme.md | 2 + doc/redis7/run.sh | 5 + doc/redis7/stop.sh | 1 + {sql => doc/sqlfile}/cutejava20250321.sql | 29 ++-- doc/添加三级菜单/a.一级目录.png | Bin 0 -> 46376 bytes doc/添加三级菜单/b.二级目录.png | Bin 0 -> 49706 bytes doc/添加三级菜单/c.三级菜单.png | Bin 0 -> 64003 bytes doc/添加三级菜单/d.按钮.png | Bin 0 -> 29286 bytes doc/添加二级菜单/a.一级目录.png | Bin 0 -> 43971 bytes doc/添加二级菜单/b.二级菜单.png | Bin 0 -> 55061 bytes doc/添加二级菜单/c.按钮.png | Bin 0 -> 29286 bytes 59 files changed, 540 insertions(+), 515 deletions(-) create mode 100644 cutejava/cutejava-common/src/main/java/cn/odboy/config/AppProperties.java create mode 100644 cutejava/cutejava-common/src/main/java/cn/odboy/config/model/ContentRsaEncodeSettingModel.java rename cutejava/cutejava-common/src/main/java/cn/odboy/{properties/FileProperties.java => config/model/FileUploadSettingModel.java} (70%) rename cutejava/{cutejava-system/src/main/java/cn/odboy/application/core/config/SecurityProperties.java => cutejava-common/src/main/java/cn/odboy/config/model/JwtAuthSettingModel.java} (59%) create mode 100644 cutejava/cutejava-common/src/main/java/cn/odboy/config/model/QuartzTaskThreadPoolSettingModel.java create mode 100644 cutejava/cutejava-common/src/main/java/cn/odboy/config/model/SwaggerApiDocSettingModel.java rename cutejava/{cutejava-system/src/main/java/cn/odboy/application/core/config/CaptchaProperties.java => cutejava-common/src/main/java/cn/odboy/config/model/UserLoginCaptchaSettingModel.java} (86%) create mode 100644 cutejava/cutejava-common/src/main/java/cn/odboy/config/model/UserLoginSettingModel.java create mode 100644 cutejava/cutejava-common/src/main/java/cn/odboy/constant/CaptchaBizEnum.java delete mode 100644 cutejava/cutejava-common/src/main/java/cn/odboy/constant/CodeBiEnum.java delete mode 100644 cutejava/cutejava-common/src/main/java/cn/odboy/constant/CodeEnum.java rename cutejava/{cutejava-system/src/main/java/cn/odboy/application/core => cutejava-common/src/main/java/cn/odboy}/constant/LoginCodeEnum.java (86%) delete mode 100644 cutejava/cutejava-common/src/main/java/cn/odboy/properties/RsaProperties.java delete mode 100644 cutejava/cutejava-common/src/main/java/cn/odboy/thread/AsyncTaskProperties.java rename cutejava/cutejava-common/src/main/java/cn/odboy/websocket/constant/{WebSocketMsgTypeEnum.java => WebSocketMessageBizTypeEnum.java} (82%) create mode 100644 cutejava/cutejava-common/src/main/java/cn/odboy/websocket/dto/WebSocketMessageDto.java delete mode 100644 cutejava/cutejava-common/src/main/java/cn/odboy/websocket/dto/WebSocketMsgDto.java rename cutejava/cutejava-starter/src/main/java/cn/odboy/{HealthCheckPointer.java => monitor/HealthCheckPointerImpl.java} (85%) delete mode 100644 cutejava/cutejava-system/src/main/java/cn/odboy/application/core/config/LoginProperties.java rename cutejava/cutejava-tools/src/main/java/cn/odboy/application/tools/service/{QiNiuConfigService.java => QiniuConfigService.java} (88%) rename cutejava/cutejava-tools/src/main/java/cn/odboy/application/tools/service/impl/{QiNiuConfigServiceImpl.java => QiniuConfigServiceImpl.java} (90%) rename cutejava/cutejava-tools/src/main/java/cn/odboy/application/tools/util/{QiNiuUtil.java => QiniuUtil.java} (97%) create mode 100644 doc/mysql8/docker-compose-mysql.yml create mode 100644 doc/mysql8/readme.md.txt create mode 100644 doc/mysql8/run.sh create mode 100644 doc/mysql8/stop.sh create mode 100644 doc/redis7/docker-compose-redis.yml create mode 100644 doc/redis7/readme.md create mode 100644 doc/redis7/run.sh create mode 100644 doc/redis7/stop.sh rename {sql => doc/sqlfile}/cutejava20250321.sql (97%) create mode 100644 doc/添加三级菜单/a.一级目录.png create mode 100644 doc/添加三级菜单/b.二级目录.png create mode 100644 doc/添加三级菜单/c.三级菜单.png create mode 100644 doc/添加三级菜单/d.按钮.png create mode 100644 doc/添加二级菜单/a.一级目录.png create mode 100644 doc/添加二级菜单/b.二级菜单.png create mode 100644 doc/添加二级菜单/c.按钮.png diff --git a/cutejava/cutejava-common/src/main/java/cn/odboy/config/AppProperties.java b/cutejava/cutejava-common/src/main/java/cn/odboy/config/AppProperties.java new file mode 100644 index 00000000..0bea5e80 --- /dev/null +++ b/cutejava/cutejava-common/src/main/java/cn/odboy/config/AppProperties.java @@ -0,0 +1,31 @@ +package cn.odboy.config; + +import cn.odboy.config.model.ContentRsaEncodeSettingModel; +import cn.odboy.config.model.FileUploadSettingModel; +import cn.odboy.config.model.JwtAuthSettingModel; +import cn.odboy.config.model.QuartzTaskThreadPoolSettingModel; +import cn.odboy.config.model.SwaggerApiDocSettingModel; +import cn.odboy.config.model.UserLoginSettingModel; +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * 应用配置 + * + * @author odboy + * @date 2025-04-13 + */ +@Data +@Component +@ConfigurationProperties(prefix = "app") +public class AppProperties { + private FileUploadSettingModel file; + private ContentRsaEncodeSettingModel rsa; + private JwtAuthSettingModel jwt; + private UserLoginSettingModel login; + private SwaggerApiDocSettingModel swagger; + private QuartzTaskThreadPoolSettingModel asyncTaskPool; +} + + diff --git a/cutejava/cutejava-common/src/main/java/cn/odboy/config/model/ContentRsaEncodeSettingModel.java b/cutejava/cutejava-common/src/main/java/cn/odboy/config/model/ContentRsaEncodeSettingModel.java new file mode 100644 index 00000000..f283c318 --- /dev/null +++ b/cutejava/cutejava-common/src/main/java/cn/odboy/config/model/ContentRsaEncodeSettingModel.java @@ -0,0 +1,10 @@ +package cn.odboy.config.model; + +import lombok.Data; +/** + * 密码加密传输,前端公钥加密,后端私钥解密 + */ +@Data +public class ContentRsaEncodeSettingModel { + public String privateKey; +} diff --git a/cutejava/cutejava-common/src/main/java/cn/odboy/properties/FileProperties.java b/cutejava/cutejava-common/src/main/java/cn/odboy/config/model/FileUploadSettingModel.java similarity index 70% rename from cutejava/cutejava-common/src/main/java/cn/odboy/properties/FileProperties.java rename to cutejava/cutejava-common/src/main/java/cn/odboy/config/model/FileUploadSettingModel.java index 4fdc9444..bdb97db7 100644 --- a/cutejava/cutejava-common/src/main/java/cn/odboy/properties/FileProperties.java +++ b/cutejava/cutejava-common/src/main/java/cn/odboy/config/model/FileUploadSettingModel.java @@ -1,20 +1,17 @@ -package cn.odboy.properties; +package cn.odboy.config.model; import cn.odboy.constant.SystemConst; import lombok.Data; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Configuration; +/** + * 文件上传配置 + */ @Data -@Configuration -@ConfigurationProperties(prefix = "file") -public class FileProperties { - +public class FileUploadSettingModel { /** * 文件大小限制 */ - private Long maxSize; - + private Long fileMaxSize; /** * 头像大小限制 */ diff --git a/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/config/SecurityProperties.java b/cutejava/cutejava-common/src/main/java/cn/odboy/config/model/JwtAuthSettingModel.java similarity index 59% rename from cutejava/cutejava-system/src/main/java/cn/odboy/application/core/config/SecurityProperties.java rename to cutejava/cutejava-common/src/main/java/cn/odboy/config/model/JwtAuthSettingModel.java index b7fdbc25..563d92d9 100644 --- a/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/config/SecurityProperties.java +++ b/cutejava/cutejava-common/src/main/java/cn/odboy/config/model/JwtAuthSettingModel.java @@ -1,16 +1,12 @@ -package cn.odboy.application.core.config; +package cn.odboy.config.model; import lombok.Data; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Configuration; /** * Jwt参数配置 */ @Data -@Configuration -@ConfigurationProperties(prefix = "jwt") -public class SecurityProperties { +public class JwtAuthSettingModel { /** * 必须使用最少88位的Base64对该令牌进行编码 */ diff --git a/cutejava/cutejava-common/src/main/java/cn/odboy/config/model/QuartzTaskThreadPoolSettingModel.java b/cutejava/cutejava-common/src/main/java/cn/odboy/config/model/QuartzTaskThreadPoolSettingModel.java new file mode 100644 index 00000000..712f9178 --- /dev/null +++ b/cutejava/cutejava-common/src/main/java/cn/odboy/config/model/QuartzTaskThreadPoolSettingModel.java @@ -0,0 +1,29 @@ +package cn.odboy.config.model; + +import lombok.Data; + +/** + * 定时任务线程池 配置 + * + * @author odboy + * @date 2025-04-13 + */ +@Data +public class QuartzTaskThreadPoolSettingModel { + /** + * 核心线程池大小 + */ + private int corePoolSize; + /** + * 最大线程数 + */ + private int maxPoolSize; + /** + * 活跃时间 + */ + private int keepAliveSeconds; + /** + * 队列容量 + */ + private int queueCapacity; +} diff --git a/cutejava/cutejava-common/src/main/java/cn/odboy/config/model/SwaggerApiDocSettingModel.java b/cutejava/cutejava-common/src/main/java/cn/odboy/config/model/SwaggerApiDocSettingModel.java new file mode 100644 index 00000000..4049d058 --- /dev/null +++ b/cutejava/cutejava-common/src/main/java/cn/odboy/config/model/SwaggerApiDocSettingModel.java @@ -0,0 +1,12 @@ +package cn.odboy.config.model; + +import lombok.Data; +/** + * + * @author odboy + * @date 2025-04-13 + */ +@Data +public class SwaggerApiDocSettingModel { + private boolean enabled; +} diff --git a/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/config/CaptchaProperties.java b/cutejava/cutejava-common/src/main/java/cn/odboy/config/model/UserLoginCaptchaSettingModel.java similarity index 86% rename from cutejava/cutejava-system/src/main/java/cn/odboy/application/core/config/CaptchaProperties.java rename to cutejava/cutejava-common/src/main/java/cn/odboy/config/model/UserLoginCaptchaSettingModel.java index 8b3adbf3..3fb1d963 100644 --- a/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/config/CaptchaProperties.java +++ b/cutejava/cutejava-common/src/main/java/cn/odboy/config/model/UserLoginCaptchaSettingModel.java @@ -1,6 +1,6 @@ -package cn.odboy.application.core.config; +package cn.odboy.config.model; -import cn.odboy.application.core.constant.LoginCodeEnum; +import cn.odboy.constant.LoginCodeEnum; import cn.odboy.exception.BadRequestException; import cn.odboy.util.StringUtil; import com.wf.captcha.ArithmeticCaptcha; @@ -10,22 +10,13 @@ import com.wf.captcha.GifCaptcha; import com.wf.captcha.SpecCaptcha; import com.wf.captcha.base.Captcha; import lombok.Data; -import lombok.Getter; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Configuration; import java.awt.*; /** - * 登录验证码配置信息 + * 验证码配置 */ @Data -@Configuration -@ConfigurationProperties(prefix = "login.code") -public class CaptchaProperties { - /** - * 验证码配置 - */ - @Getter +public class UserLoginCaptchaSettingModel { private LoginCodeEnum codeType; /** diff --git a/cutejava/cutejava-common/src/main/java/cn/odboy/config/model/UserLoginSettingModel.java b/cutejava/cutejava-common/src/main/java/cn/odboy/config/model/UserLoginSettingModel.java new file mode 100644 index 00000000..4dfda60b --- /dev/null +++ b/cutejava/cutejava-common/src/main/java/cn/odboy/config/model/UserLoginSettingModel.java @@ -0,0 +1,15 @@ +package cn.odboy.config.model; + +import lombok.Data; + +/** + * 登录配置 + */ +@Data +public class UserLoginSettingModel { + /** + * 账号单用户 登录 + */ + private boolean single = false; + private UserLoginCaptchaSettingModel captchaSetting; +} diff --git a/cutejava/cutejava-common/src/main/java/cn/odboy/constant/CaptchaBizEnum.java b/cutejava/cutejava-common/src/main/java/cn/odboy/constant/CaptchaBizEnum.java new file mode 100644 index 00000000..7e9b23ba --- /dev/null +++ b/cutejava/cutejava-common/src/main/java/cn/odboy/constant/CaptchaBizEnum.java @@ -0,0 +1,46 @@ +package cn.odboy.constant; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 验证码业务场景 + */ +@Getter +@AllArgsConstructor +public enum CaptchaBizEnum { + + /* 通过手机号码重置邮箱 */ + PHONE_RESET_EMAIL_CODE("10000", "phone_reset_email_code_", "通过手机号码重置邮箱"), + + /* 通过旧邮箱重置邮箱 */ + EMAIL_RESET_EMAIL_CODE("10001", "email_reset_email_code_", "通过旧邮箱重置邮箱"), + + /* 通过手机号码重置密码 */ + PHONE_RESET_PWD_CODE("10002", "phone_reset_pwd_code_", "通过手机号码重置密码"), + + /* 通过邮箱重置密码 */ + EMAIL_RESET_PWD_CODE("10003", "email_reset_pwd_code_", "通过邮箱重置密码"); + + /** + * 业务编码 + */ + private final String bizCode; + /** + * redis中的key + */ + private final String redisKey; + /** + * 业务描述 + */ + private final String description; + + public static CaptchaBizEnum getByBizCode(String bizCode) { + for (CaptchaBizEnum value : CaptchaBizEnum.values()) { + if (value.getBizCode().equals(bizCode)) { + return value; + } + } + return null; + } +} diff --git a/cutejava/cutejava-common/src/main/java/cn/odboy/constant/CodeBiEnum.java b/cutejava/cutejava-common/src/main/java/cn/odboy/constant/CodeBiEnum.java deleted file mode 100644 index 183626a3..00000000 --- a/cutejava/cutejava-common/src/main/java/cn/odboy/constant/CodeBiEnum.java +++ /dev/null @@ -1,31 +0,0 @@ -package cn.odboy.constant; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * 验证码业务场景 - */ -@Getter -@AllArgsConstructor -public enum CodeBiEnum { - - /* 旧邮箱修改邮箱 */ - ONE(1, "旧邮箱修改邮箱"), - - /* 通过邮箱修改密码 */ - TWO(2, "通过邮箱修改密码"); - - private final Integer code; - private final String description; - - public static CodeBiEnum find(Integer code) { - for (CodeBiEnum value : CodeBiEnum.values()) { - if (value.getCode().equals(code)) { - return value; - } - } - return null; - } - -} diff --git a/cutejava/cutejava-common/src/main/java/cn/odboy/constant/CodeEnum.java b/cutejava/cutejava-common/src/main/java/cn/odboy/constant/CodeEnum.java deleted file mode 100644 index fc02a1f2..00000000 --- a/cutejava/cutejava-common/src/main/java/cn/odboy/constant/CodeEnum.java +++ /dev/null @@ -1,27 +0,0 @@ -package cn.odboy.constant; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * 验证码业务场景对应的 Redis 中的 key - */ -@Getter -@AllArgsConstructor -public enum CodeEnum { - - /* 通过手机号码重置邮箱 */ - PHONE_RESET_EMAIL_CODE("phone_reset_email_code_", "通过手机号码重置邮箱"), - - /* 通过旧邮箱重置邮箱 */ - EMAIL_RESET_EMAIL_CODE("email_reset_email_code_", "通过旧邮箱重置邮箱"), - - /* 通过手机号码重置密码 */ - PHONE_RESET_PWD_CODE("phone_reset_pwd_code_", "通过手机号码重置密码"), - - /* 通过邮箱重置密码 */ - EMAIL_RESET_PWD_CODE("email_reset_pwd_code_", "通过邮箱重置密码"); - - private final String key; - private final String description; -} diff --git a/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/constant/LoginCodeEnum.java b/cutejava/cutejava-common/src/main/java/cn/odboy/constant/LoginCodeEnum.java similarity index 86% rename from cutejava/cutejava-system/src/main/java/cn/odboy/application/core/constant/LoginCodeEnum.java rename to cutejava/cutejava-common/src/main/java/cn/odboy/constant/LoginCodeEnum.java index ef78a2bb..42a8e177 100644 --- a/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/constant/LoginCodeEnum.java +++ b/cutejava/cutejava-common/src/main/java/cn/odboy/constant/LoginCodeEnum.java @@ -1,4 +1,4 @@ -package cn.odboy.application.core.constant; +package cn.odboy.constant; /** * 验证码配置枚举 diff --git a/cutejava/cutejava-common/src/main/java/cn/odboy/mybatis/interfaces/EasyMapper.java b/cutejava/cutejava-common/src/main/java/cn/odboy/mybatis/interfaces/EasyMapper.java index b45faba0..ce56b71c 100644 --- a/cutejava/cutejava-common/src/main/java/cn/odboy/mybatis/interfaces/EasyMapper.java +++ b/cutejava/cutejava-common/src/main/java/cn/odboy/mybatis/interfaces/EasyMapper.java @@ -23,11 +23,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; -import com.baomidou.mybatisplus.extension.conditions.query.QueryChainWrapper; -import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; -import com.baomidou.mybatisplus.extension.conditions.update.UpdateChainWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.toolkit.ChainWrappers; import org.apache.ibatis.annotations.Param; import org.springframework.data.domain.Pageable; import java.lang.reflect.Field; @@ -60,22 +56,6 @@ public interface EasyMapper extends BaseMapper { */ int alwaysUpdateSomeColumnById(@Param("et") E entity); - default QueryChainWrapper select() { - return ChainWrappers.queryChain(this); - } - - default UpdateChainWrapper update() { - return ChainWrappers.updateChain(this); - } - - default LambdaQueryChainWrapper lambdaSelect() { - return ChainWrappers.lambdaQueryChain(this); - } - - default LambdaUpdateChainWrapper lambdaUpdate() { - return ChainWrappers.lambdaUpdateChain(this); - } - /** * 获取字典 * @@ -84,7 +64,7 @@ public interface EasyMapper extends BaseMapper { * @param valueName 值对应的列名称 * @return Map */ - default Map selectMap(LambdaQueryWrapper wrapper, String keyName, String valueName) { + default Map getMapWithKv(LambdaQueryWrapper wrapper, String keyName, String valueName) { Map result = new ConcurrentHashMap<>(1); List list = this.selectList(wrapper); if (CollUtil.isEmpty(list)) { @@ -123,7 +103,7 @@ public interface EasyMapper extends BaseMapper { * @param clazz 期望的对象类型 * @return List */ - default List selectList(LambdaQueryWrapper wrapper, Class clazz) { + default List queryFeatureClazzList(LambdaQueryWrapper wrapper, Class clazz) { List list = this.selectList(wrapper); if (CollUtil.isEmpty(list)) { return new ArrayList<>(); @@ -138,7 +118,7 @@ public interface EasyMapper extends BaseMapper { * @param clazz 期望的对象类型 * @return List */ - default List selectList(LambdaQueryChainWrapper wrapper, Class clazz) { + default List queryFeatureClazzList(LambdaQueryChainWrapper wrapper, Class clazz) { List list = wrapper.list(); if (CollUtil.isEmpty(list)) { return new ArrayList<>(); @@ -154,7 +134,7 @@ public interface EasyMapper extends BaseMapper { * @param clazz 期望的对象类型 * @return IPage */ - default PageResult selectPage(Pageable pageable, LambdaQueryWrapper wrapper, Class clazz) { + default PageResult queryFeatureClazzPage(Pageable pageable, LambdaQueryWrapper wrapper, Class clazz) { int pageNumber = pageable.getPageNumber(); int pageSize = pageable.getPageSize(); pageNumber = pageNumber <= 0 ? 1 : pageNumber; @@ -174,7 +154,7 @@ public interface EasyMapper extends BaseMapper { * @param clazz 期望的对象类型 * @return IPage */ - default PageResult selectPage(Pageable pageable, LambdaQueryChainWrapper wrapper, Class clazz) { + default PageResult queryFeatureClazzPage(Pageable pageable, LambdaQueryChainWrapper wrapper, Class clazz) { int pageNumber = pageable.getPageNumber(); int pageSize = pageable.getPageSize(); pageNumber = pageNumber <= 0 ? 1 : pageNumber; @@ -193,7 +173,7 @@ public interface EasyMapper extends BaseMapper { * @param clazz 期望的对象类型 * @return T */ - default T selectOne(LambdaQueryChainWrapper wrapper, Class clazz) { + default T getFeatureClazz(LambdaQueryChainWrapper wrapper, Class clazz) { E e = this.selectOne(wrapper); if (e == null) { return null; diff --git a/cutejava/cutejava-common/src/main/java/cn/odboy/mybatis/interfaces/EasyService.java b/cutejava/cutejava-common/src/main/java/cn/odboy/mybatis/interfaces/EasyService.java index b4462892..d355aa15 100644 --- a/cutejava/cutejava-common/src/main/java/cn/odboy/mybatis/interfaces/EasyService.java +++ b/cutejava/cutejava-common/src/main/java/cn/odboy/mybatis/interfaces/EasyService.java @@ -31,41 +31,39 @@ import java.util.List; * @date 2022-04-03 */ public interface EasyService extends IService { - LambdaQueryWrapper quick(); + int saveFeatureClazz(G resources); - int quickSave(G resources); + int saveFeatureClazzList(List resources); - int quickSaveBatch(List resources); + int modifyFeatureClazzById(G resources); - int quickModifyById(G resources); + boolean modifyFeatureClazzListById(Collection resources, int batchSize); - boolean quickModifyBatchById(Collection resources, int batchSize); + G describeFeatureClazzById(Serializable id, Class targetClazz); - G quickGetOneById(Serializable id, Class targetClazz); + T describeClazzByArgs(LambdaQueryWrapper wrapper, SFunction orderColumn); - T quickGetOne(LambdaQueryWrapper wrapper, SFunction orderColumn); + G describeFeatureClazzByArgs(LambdaQueryWrapper wrapper, SFunction orderColumn, Class clazz); - G quickGetOne(LambdaQueryWrapper wrapper, SFunction orderColumn, Class clazz); + List describeFeatureClazzListByIds(List ids, Class targetClazz); - List quickListByIds(List ids, Class targetClazz); + List describeClazzListByArgs(Q criteria); - List quickList(Q criteria); + List describeClazzListByArgs(LambdaQueryWrapper wrapper); - List quickList(LambdaQueryWrapper wrapper); + List describeFeatureClazzListByArgs(Q criteria, Class targetClazz); - List quickList(Q criteria, Class targetClazz); + List describeFeatureClazzListByArgs(LambdaQueryWrapper wrapper, Class targetClazz); - List quickList(LambdaQueryWrapper wrapper, Class targetClazz); + PageResult describeClazzPageByArgs(LambdaQueryWrapper wrapper, IPage pageable); - PageResult quickPage(LambdaQueryWrapper wrapper, IPage pageable); + PageResult describeFeatureClazzPageByArgs(LambdaQueryWrapper wrapper, IPage pageable, Class targetClazz); - PageResult quickPage(LambdaQueryWrapper wrapper, IPage pageable, Class targetClazz); + PageResult describeFeatureClazzPageByArgs(Q criteria, IPage pageable, Class targetClazz); - PageResult quickPage(Q criteria, IPage pageable, Class targetClazz); + PageResult describeClazzPageByArgs(Q criteria, IPage pageable); - PageResult quickPage(Q criteria, IPage pageable); + int modifyClazzByArgs(LambdaQueryWrapper wrapper, T entity); - int quickUpdate(LambdaQueryWrapper wrapper, T entity); - - int quickDelete(LambdaQueryWrapper wrapper); + int removeClazzByArgs(LambdaQueryWrapper wrapper); } diff --git a/cutejava/cutejava-common/src/main/java/cn/odboy/mybatis/interfaces/impl/EasyServiceImpl.java b/cutejava/cutejava-common/src/main/java/cn/odboy/mybatis/interfaces/impl/EasyServiceImpl.java index b91b2298..5ff230f8 100644 --- a/cutejava/cutejava-common/src/main/java/cn/odboy/mybatis/interfaces/impl/EasyServiceImpl.java +++ b/cutejava/cutejava-common/src/main/java/cn/odboy/mybatis/interfaces/impl/EasyServiceImpl.java @@ -39,16 +39,12 @@ import java.util.List; * @date 2022-04-03 */ public class EasyServiceImpl, T> extends ServiceImpl { - public LambdaQueryWrapper quick() { - return new LambdaQueryWrapper<>(); - } - /** * 快速插入 * * @param resources / */ - public int quickSave(G resources) { + public int saveFeatureClazz(G resources) { return getBaseMapper().insert(BeanUtil.copyProperties(resources, this.getEntityClass())); } @@ -57,7 +53,7 @@ public class EasyServiceImpl, T> extends ServiceImpl int quickSaveBatch(List resources) { + public int saveFeatureClazzList(List resources) { return getBaseMapper().insertBatchSomeColumn(BeanUtil.copyToList(resources, this.getEntityClass())); } @@ -66,7 +62,7 @@ public class EasyServiceImpl, T> extends ServiceImpl int quickModifyById(G resources) { + public int modifyFeatureClazzById(G resources) { return getBaseMapper().updateById(BeanUtil.copyProperties(resources, this.getEntityClass())); } @@ -76,7 +72,7 @@ public class EasyServiceImpl, T> extends ServiceImpl boolean quickModifyBatchById(Collection resources, int batchSize) { + public boolean modifyFeatureClazzListById(Collection resources, int batchSize) { String sqlStatement = this.getSqlStatement(SqlMethod.UPDATE_BY_ID); return this.executeBatch(resources, batchSize, (sqlSession, entity) -> { MapperMethod.ParamMap param = new MapperMethod.ParamMap<>(); @@ -91,7 +87,7 @@ public class EasyServiceImpl, T> extends ServiceImpl G quickGetOneById(Serializable id, Class targetClazz) { + public G describeFeatureClazzById(Serializable id, Class targetClazz) { T entity = this.getById(id); return entity == null ? null : BeanUtil.copyProperties(entity, targetClazz); } @@ -101,7 +97,7 @@ public class EasyServiceImpl, T> extends ServiceImpl wrapper, SFunction orderColumn) { + public T describeClazzByArgs(LambdaQueryWrapper wrapper, SFunction orderColumn) { if (orderColumn == null) { throw new BadRequestException("参数orderColumn(排序的列)必填"); } @@ -117,7 +113,7 @@ public class EasyServiceImpl, T> extends ServiceImpl G quickGetOne(LambdaQueryWrapper wrapper, SFunction orderColumn, Class clazz) { + public G describeFeatureClazzByArgs(LambdaQueryWrapper wrapper, SFunction orderColumn, Class clazz) { if (orderColumn == null) { throw new BadRequestException("参数orderColumn(排序的列)必填"); } @@ -139,7 +135,7 @@ public class EasyServiceImpl, T> extends ServiceImpl List quickListByIds(List ids, Class targetClazz) { + public List describeFeatureClazzListByIds(List ids, Class targetClazz) { List entitys = this.listByIds(ids); return entitys == null || entitys.isEmpty() ? CollUtil.newArrayList() : BeanUtil.copyToList(entitys, targetClazz); } @@ -149,7 +145,7 @@ public class EasyServiceImpl, T> extends ServiceImpl List quickList(Q criteria) { + public List describeClazzListByArgs(Q criteria) { QueryWrapper predicate = MybatisHelper.build(criteria); return baseMapper.selectList(predicate); } @@ -159,7 +155,7 @@ public class EasyServiceImpl, T> extends ServiceImpl quickList(LambdaQueryWrapper wrapper) { + public List describeClazzListByArgs(LambdaQueryWrapper wrapper) { if (wrapper == null) { wrapper = new LambdaQueryWrapper<>(); } @@ -172,7 +168,7 @@ public class EasyServiceImpl, T> extends ServiceImpl List quickList(Q criteria, Class targetClazz) { + public List describeFeatureClazzListByArgs(Q criteria, Class targetClazz) { QueryWrapper predicate = MybatisHelper.build(criteria); List data = baseMapper.selectList(predicate); return BeanUtil.copyToList(data, targetClazz); @@ -184,7 +180,7 @@ public class EasyServiceImpl, T> extends ServiceImpl List quickList(LambdaQueryWrapper wrapper, Class targetClazz) { + public List describeFeatureClazzListByArgs(LambdaQueryWrapper wrapper, Class targetClazz) { if (wrapper == null) { wrapper = new LambdaQueryWrapper<>(); } @@ -197,7 +193,7 @@ public class EasyServiceImpl, T> extends ServiceImpl quickPage(LambdaQueryWrapper wrapper, IPage pageable) { + public PageResult describeClazzPageByArgs(LambdaQueryWrapper wrapper, IPage pageable) { if (wrapper == null) { wrapper = new LambdaQueryWrapper<>(); } @@ -212,7 +208,7 @@ public class EasyServiceImpl, T> extends ServiceImpl PageResult quickPage(LambdaQueryWrapper wrapper, IPage pageable, Class targetClazz) { + public PageResult describeFeatureClazzPageByArgs(LambdaQueryWrapper wrapper, IPage pageable, Class targetClazz) { if (wrapper == null) { wrapper = new LambdaQueryWrapper<>(); } @@ -220,13 +216,13 @@ public class EasyServiceImpl, T> extends ServiceImpl(BeanUtil.copyToList(originPageData.getRecords(), targetClazz), originPageData.getTotal()); } - public PageResult quickPage(Q criteria, IPage pageable, Class targetClazz) { + public PageResult describeFeatureClazzPageByArgs(Q criteria, IPage pageable, Class targetClazz) { QueryWrapper wrapper = MybatisHelper.build(criteria); IPage originPageData = baseMapper.selectPage(pageable, wrapper); return new PageResult<>(BeanUtil.copyToList(originPageData.getRecords(), targetClazz), originPageData.getTotal()); } - public PageResult quickPage(Q criteria, IPage pageable) { + public PageResult describeClazzPageByArgs(Q criteria, IPage pageable) { QueryWrapper wrapper = MybatisHelper.build(criteria); IPage originPageData = baseMapper.selectPage(pageable, wrapper); return new PageResult<>(originPageData.getRecords(), originPageData.getTotal()); @@ -238,7 +234,7 @@ public class EasyServiceImpl, T> extends ServiceImpl wrapper, T entity) { + public int modifyClazzByArgs(LambdaQueryWrapper wrapper, T entity) { if (wrapper == null) { throw new BadRequestException("参数wrapper必填"); } @@ -250,7 +246,7 @@ public class EasyServiceImpl, T> extends ServiceImpl wrapper) { + public int removeClazzByArgs(LambdaQueryWrapper wrapper) { if (wrapper == null) { throw new BadRequestException("参数wrapper必填"); } diff --git a/cutejava/cutejava-common/src/main/java/cn/odboy/mybatis/util/MybatisHelper.java b/cutejava/cutejava-common/src/main/java/cn/odboy/mybatis/util/MybatisHelper.java index fc48fef1..e5bfdaa1 100644 --- a/cutejava/cutejava-common/src/main/java/cn/odboy/mybatis/util/MybatisHelper.java +++ b/cutejava/cutejava-common/src/main/java/cn/odboy/mybatis/util/MybatisHelper.java @@ -36,20 +36,17 @@ public class MybatisHelper { try { List fields = getAllFields(clazz, new ArrayList<>()); for (Field field : fields) { - if (!field.canAccess(clazz)) { + if (!field.canAccess(query)) { field.setAccessible(true); MpQuery q = field.getAnnotation(MpQuery.class); if (q != null) { - String propName = q.propName(); - String blurry = q.blurry(); - String attributeName = StrUtil.isBlank(propName) ? field.getName() : propName; - attributeName = humpToUnderline(attributeName); + String attributeName = getAttributeName(q, field); Object fieldVal = field.get(query); if (ObjectUtil.isNull(fieldVal) || "".equals(fieldVal)) { continue; } - if (ObjectUtil.isNotEmpty(blurry)) { - handleBlurryQuery(queryWrapper, blurry, fieldVal); + if (StrUtil.isNotBlank(q.blurry())) { + handleBlurryQuery(queryWrapper, q.blurry(), fieldVal); continue; } handleWrapper(q, queryWrapper, attributeName, fieldVal); @@ -58,11 +55,16 @@ public class MybatisHelper { } } } catch (Exception e) { - log.error("组装SQL失败", e); + log.error("Failed to build query wrapper for class: {}", clazz.getName(), e); } return queryWrapper; } + private static String getAttributeName(MpQuery q, Field field) { + String attributeName = StrUtil.isBlank(q.propName()) ? field.getName() : q.propName(); + return StrUtil.toUnderlineCase(attributeName); + } + private static void handleWrapper(MpQuery q, QueryWrapper queryWrapper, String attributeName, Object fieldVal) { switch (q.type()) { case EQUAL: @@ -87,10 +89,10 @@ public class MybatisHelper { queryWrapper.likeRight(attributeName, fieldVal); break; case IN: - handleInQuery(queryWrapper, attributeName, fieldVal); + handleInOrNotQuery(true, queryWrapper, attributeName, fieldVal); break; case NOT_IN: - handleNotInQuery(queryWrapper, attributeName, fieldVal); + handleInOrNotQuery(false, queryWrapper, attributeName, fieldVal); break; case NOT_EQUAL: queryWrapper.ne(attributeName, fieldVal); @@ -109,61 +111,42 @@ public class MybatisHelper { } } - private static void handleBetweenQuery(QueryWrapper queryWrapper, Object fieldVal, String finalAttributeName) { - if (fieldVal instanceof List) { - List between = new ArrayList<>((List) fieldVal); - if (CollectionUtil.isNotEmpty(between)) { - int minSize = 2; - if (between.size() >= minSize) { - queryWrapper.between(finalAttributeName, between.get(0), between.get(1)); - } else { - throw new BadRequestException("BETWEEN类型的对象列表长度必须 >= " + minSize); - } - } - } else { - throw new BadRequestException("BETWEEN类型的对象必须是一个List子集合"); - } - } - - private static void handleNotInQuery(QueryWrapper queryWrapper, String finalAttributeName, Object fieldVal) { + private static void handleInOrNotQuery(boolean b, QueryWrapper queryWrapper, String attributeName, Object fieldVal) { Collection wrapNotInVal = (Collection) fieldVal; if (CollectionUtil.isNotEmpty(wrapNotInVal)) { Optional anyValOptional = wrapNotInVal.stream().findAny(); if (anyValOptional.isPresent()) { Object o = anyValOptional.get(); if (o instanceof Long) { - queryWrapper.notIn(finalAttributeName, fieldVal); + if (b) { + queryWrapper.in(attributeName, fieldVal); + } else { + queryWrapper.notIn(attributeName, fieldVal); + } } else if (o instanceof Integer) { - queryWrapper.notIn(finalAttributeName, fieldVal); + if (b) { + queryWrapper.in(attributeName, fieldVal); + } else { + queryWrapper.notIn(attributeName, fieldVal); + } } else { - throw new BadRequestException("NOT_IN类型的对象属性值必须是Long/Integer类型集合"); + throw new BadRequestException("InOrNotIn查询参数类型的对象属性值必须是Long/Integer类型集合"); } } } } - /** - * IN查询 - * - * @param queryWrapper / - * @param fieldVal / - * @param finalAttributeName / - * @param / - */ - private static void handleInQuery(QueryWrapper queryWrapper, String finalAttributeName, Object fieldVal) { - Collection wrapInVal = (Collection) fieldVal; - if (CollectionUtil.isNotEmpty(wrapInVal)) { - Optional anyValOptional = wrapInVal.stream().findAny(); - if (anyValOptional.isPresent()) { - Object o = anyValOptional.get(); - if (o instanceof Long) { - queryWrapper.in(finalAttributeName, fieldVal); - } else if (o instanceof Integer) { - queryWrapper.in(finalAttributeName, fieldVal); - } else { - throw new BadRequestException("IN类型的对象属性值必须是Long/Integer类型集合"); - } + private static void handleBetweenQuery(QueryWrapper queryWrapper, Object fieldVal, String finalAttributeName) { + if (fieldVal instanceof List) { + List between = new ArrayList<>((List) fieldVal); + int minLength = 2; + if (CollectionUtil.isNotEmpty(between) && between.size() >= minLength) { + queryWrapper.between(finalAttributeName, between.get(0), between.get(1)); + } else { + throw new BadRequestException("BETWEEN类型的对象列表长度必须 >= 2"); } + } else { + throw new BadRequestException("BETWEEN类型的对象必须是一个List子集合"); } } @@ -179,7 +162,7 @@ public class MybatisHelper { List blurryList = Arrays.stream(blurry.split(",")).filter(StrUtil::isNotBlank).distinct().collect(Collectors.toList()); queryWrapper.and(wrapper -> { for (String blurryItem : blurryList) { - String column = humpToUnderline(blurryItem); + String column = StrUtil.toUnderlineCase(blurryItem); wrapper.or(); wrapper.like(column, fieldVal.toString()); } @@ -194,16 +177,6 @@ public class MybatisHelper { return fields; } - /*** - * 驼峰命名转为下划线命名 - * - * @param para - * 驼峰命名的字符串 - */ - private static String humpToUnderline(String para) { - return StrUtil.toUnderlineCase(para); - } - @TableName("test_domain") private static class TestDomain { @NotNull(groups = MyEntity.Update.class) diff --git a/cutejava/cutejava-common/src/main/java/cn/odboy/properties/RsaProperties.java b/cutejava/cutejava-common/src/main/java/cn/odboy/properties/RsaProperties.java deleted file mode 100644 index c4e86e17..00000000 --- a/cutejava/cutejava-common/src/main/java/cn/odboy/properties/RsaProperties.java +++ /dev/null @@ -1,17 +0,0 @@ -package cn.odboy.properties; - -import lombok.Data; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; - -@Data -@Component -public class RsaProperties { - - public static String privateKey; - - @Value("${rsa.private_key}") - public void setPrivateKey(String privateKey) { - RsaProperties.privateKey = privateKey; - } -} \ No newline at end of file diff --git a/cutejava/cutejava-common/src/main/java/cn/odboy/server/ConfigurerAdapter.java b/cutejava/cutejava-common/src/main/java/cn/odboy/server/ConfigurerAdapter.java index e004fabc..fc346041 100644 --- a/cutejava/cutejava-common/src/main/java/cn/odboy/server/ConfigurerAdapter.java +++ b/cutejava/cutejava-common/src/main/java/cn/odboy/server/ConfigurerAdapter.java @@ -1,6 +1,7 @@ package cn.odboy.server; -import cn.odboy.properties.FileProperties; +import cn.odboy.config.AppProperties; +import cn.odboy.config.model.FileUploadSettingModel; import com.alibaba.fastjson2.JSONWriter; import com.alibaba.fastjson2.support.config.FastJsonConfig; import com.alibaba.fastjson2.support.spring.http.converter.FastJsonHttpMessageConverter; @@ -26,9 +27,9 @@ public class ConfigurerAdapter implements WebMvcConfigurer { /** * 文件配置 */ - private final FileProperties properties; + private final AppProperties properties; - public ConfigurerAdapter(FileProperties properties) { + public ConfigurerAdapter(AppProperties properties) { this.properties = properties; } @@ -46,7 +47,7 @@ public class ConfigurerAdapter implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { - FileProperties.ElPath path = properties.getPath(); + FileUploadSettingModel.ElPath path = properties.getFile().getPath(); String avatarUtl = "file:" + path.getAvatar().replace("\\", "/"); String pathUtl = "file:" + path.getPath().replace("\\", "/"); registry.addResourceHandler("/avatar/**").addResourceLocations(avatarUtl).setCachePeriod(0); diff --git a/cutejava/cutejava-common/src/main/java/cn/odboy/server/SwaggerConfig.java b/cutejava/cutejava-common/src/main/java/cn/odboy/server/SwaggerConfig.java index 604320a5..6e3b356b 100644 --- a/cutejava/cutejava-common/src/main/java/cn/odboy/server/SwaggerConfig.java +++ b/cutejava/cutejava-common/src/main/java/cn/odboy/server/SwaggerConfig.java @@ -42,7 +42,7 @@ public class SwaggerConfig { @Value("${server.servlet.context-path:}") private String apiPath; - @Value("${swagger.enabled}") + @Value("${app.swagger.enabled}") private Boolean enabled; private final ApplicationContext applicationContext; diff --git a/cutejava/cutejava-common/src/main/java/cn/odboy/thread/AsyncExecutor.java b/cutejava/cutejava-common/src/main/java/cn/odboy/thread/AsyncExecutor.java index b3dac8dd..bd0ca464 100644 --- a/cutejava/cutejava-common/src/main/java/cn/odboy/thread/AsyncExecutor.java +++ b/cutejava/cutejava-common/src/main/java/cn/odboy/thread/AsyncExecutor.java @@ -1,5 +1,7 @@ package cn.odboy.thread; +import cn.odboy.config.AppProperties; +import cn.odboy.config.model.QuartzTaskThreadPoolSettingModel; import com.alibaba.ttl.TtlRunnable; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; @@ -21,7 +23,7 @@ import java.util.concurrent.atomic.AtomicInteger; @Configuration public class AsyncExecutor implements AsyncConfigurer { @Autowired - private AsyncTaskProperties properties; + private AppProperties properties; /** * 自定义线程池,用法 @Async @@ -30,11 +32,12 @@ public class AsyncExecutor implements AsyncConfigurer { */ @Override public Executor getAsyncExecutor() { + QuartzTaskThreadPoolSettingModel asyncTaskPool = properties.getAsyncTaskPool(); // 自定义工厂 ThreadFactory factory = r -> new Thread(r, "default-async-" + new AtomicInteger(1).getAndIncrement()); // 自定义线程池 - return new ThreadPoolExecutor(properties.getCorePoolSize(), properties.getMaxPoolSize(), properties.getKeepAliveSeconds(), - TimeUnit.SECONDS, new ArrayBlockingQueue<>(properties.getQueueCapacity()), factory, + return new ThreadPoolExecutor(asyncTaskPool.getCorePoolSize(), asyncTaskPool.getMaxPoolSize(), asyncTaskPool.getKeepAliveSeconds(), + TimeUnit.SECONDS, new ArrayBlockingQueue<>(asyncTaskPool.getQueueCapacity()), factory, new ThreadPoolExecutor.CallerRunsPolicy()); } @@ -43,13 +46,14 @@ public class AsyncExecutor implements AsyncConfigurer { */ @Bean("taskAsync") public ThreadPoolTaskExecutor taskAsync() { + QuartzTaskThreadPoolSettingModel asyncTaskPool = properties.getAsyncTaskPool(); // 用法 private ThreadPoolTaskExecutor taskExecutor ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); - executor.setCorePoolSize(properties.getCorePoolSize()); - executor.setMaxPoolSize(properties.getMaxPoolSize()); - executor.setQueueCapacity(properties.getQueueCapacity()); + executor.setCorePoolSize(asyncTaskPool.getCorePoolSize()); + executor.setMaxPoolSize(asyncTaskPool.getMaxPoolSize()); + executor.setQueueCapacity(asyncTaskPool.getQueueCapacity()); executor.setThreadNamePrefix("task-async-"); - executor.setKeepAliveSeconds(properties.getKeepAliveSeconds()); + executor.setKeepAliveSeconds(asyncTaskPool.getKeepAliveSeconds()); // DiscardOldestPolicy,抛弃最早的任务,将新任务加入队列。 // AbortPolicy,拒绝执行新任务,并抛出异常。 // CallerRunsPolicy,交由调用者线程执行新任务,如果调用者线程已关闭,则抛弃任务。 diff --git a/cutejava/cutejava-common/src/main/java/cn/odboy/thread/AsyncTaskProperties.java b/cutejava/cutejava-common/src/main/java/cn/odboy/thread/AsyncTaskProperties.java deleted file mode 100644 index 26bd08a3..00000000 --- a/cutejava/cutejava-common/src/main/java/cn/odboy/thread/AsyncTaskProperties.java +++ /dev/null @@ -1,15 +0,0 @@ -package cn.odboy.thread; - -import lombok.Data; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Configuration; - -@Data -@Configuration -@ConfigurationProperties(prefix = "task.pool") -public class AsyncTaskProperties { - private int corePoolSize; - private int maxPoolSize; - private int keepAliveSeconds; - private int queueCapacity; -} diff --git a/cutejava/cutejava-common/src/main/java/cn/odboy/websocket/constant/WebSocketMsgTypeEnum.java b/cutejava/cutejava-common/src/main/java/cn/odboy/websocket/constant/WebSocketMessageBizTypeEnum.java similarity index 82% rename from cutejava/cutejava-common/src/main/java/cn/odboy/websocket/constant/WebSocketMsgTypeEnum.java rename to cutejava/cutejava-common/src/main/java/cn/odboy/websocket/constant/WebSocketMessageBizTypeEnum.java index ec25116d..85ba57ae 100644 --- a/cutejava/cutejava-common/src/main/java/cn/odboy/websocket/constant/WebSocketMsgTypeEnum.java +++ b/cutejava/cutejava-common/src/main/java/cn/odboy/websocket/constant/WebSocketMessageBizTypeEnum.java @@ -1,7 +1,7 @@ package cn.odboy.websocket.constant; -public enum WebSocketMsgTypeEnum { +public enum WebSocketMessageBizTypeEnum { /** * 连接 */ diff --git a/cutejava/cutejava-common/src/main/java/cn/odboy/websocket/context/WebSocketServer.java b/cutejava/cutejava-common/src/main/java/cn/odboy/websocket/context/WebSocketServer.java index 11179e77..e24a474f 100644 --- a/cutejava/cutejava-common/src/main/java/cn/odboy/websocket/context/WebSocketServer.java +++ b/cutejava/cutejava-common/src/main/java/cn/odboy/websocket/context/WebSocketServer.java @@ -1,6 +1,6 @@ package cn.odboy.websocket.context; -import cn.odboy.websocket.dto.WebSocketMsgDto; +import cn.odboy.websocket.dto.WebSocketMessageDto; import com.alibaba.fastjson2.JSON; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -88,8 +88,8 @@ public class WebSocketServer { /** * 群发自定义消息 */ - public static void sendMessage(WebSocketMsgDto webSocketMsgDto, @PathParam("sid") String sid) throws IOException { - String message = JSON.toJSONString(webSocketMsgDto); + public static void sendMessage(WebSocketMessageDto webSocketMessageDto, @PathParam("sid") String sid) throws IOException { + String message = JSON.toJSONString(webSocketMessageDto); log.info("推送消息到{},推送内容:{}", sid, message); try { if (sid == null) { diff --git a/cutejava/cutejava-common/src/main/java/cn/odboy/websocket/dto/WebSocketMessageDto.java b/cutejava/cutejava-common/src/main/java/cn/odboy/websocket/dto/WebSocketMessageDto.java new file mode 100644 index 00000000..e2b38759 --- /dev/null +++ b/cutejava/cutejava-common/src/main/java/cn/odboy/websocket/dto/WebSocketMessageDto.java @@ -0,0 +1,15 @@ +package cn.odboy.websocket.dto; + +import cn.odboy.websocket.constant.WebSocketMessageBizTypeEnum; +import lombok.Data; + +@Data +public class WebSocketMessageDto { + private String message; + private WebSocketMessageBizTypeEnum bizType; + + public WebSocketMessageDto(String message, WebSocketMessageBizTypeEnum bizType) { + this.message = message; + this.bizType = bizType; + } +} diff --git a/cutejava/cutejava-common/src/main/java/cn/odboy/websocket/dto/WebSocketMsgDto.java b/cutejava/cutejava-common/src/main/java/cn/odboy/websocket/dto/WebSocketMsgDto.java deleted file mode 100644 index 83765338..00000000 --- a/cutejava/cutejava-common/src/main/java/cn/odboy/websocket/dto/WebSocketMsgDto.java +++ /dev/null @@ -1,15 +0,0 @@ -package cn.odboy.websocket.dto; - -import cn.odboy.websocket.constant.WebSocketMsgTypeEnum; -import lombok.Data; - -@Data -public class WebSocketMsgDto { - private String msg; - private WebSocketMsgTypeEnum msgType; - - public WebSocketMsgDto(String msg, WebSocketMsgTypeEnum msgType) { - this.msg = msg; - this.msgType = msgType; - } -} diff --git a/cutejava/cutejava-starter/src/main/java/cn/odboy/HealthCheckPointer.java b/cutejava/cutejava-starter/src/main/java/cn/odboy/monitor/HealthCheckPointerImpl.java similarity index 85% rename from cutejava/cutejava-starter/src/main/java/cn/odboy/HealthCheckPointer.java rename to cutejava/cutejava-starter/src/main/java/cn/odboy/monitor/HealthCheckPointerImpl.java index 8c1e420a..96b29af5 100644 --- a/cutejava/cutejava-starter/src/main/java/cn/odboy/HealthCheckPointer.java +++ b/cutejava/cutejava-starter/src/main/java/cn/odboy/monitor/HealthCheckPointerImpl.java @@ -1,4 +1,4 @@ -package cn.odboy; +package cn.odboy.monitor; import cn.odboy.application.system.service.DictService; import cn.odboy.monitor.service.HealthCheckPointService; @@ -7,7 +7,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; @Component -public class HealthCheckPointer implements HealthCheckPointService { +public class HealthCheckPointerImpl implements HealthCheckPointService { @Autowired private DictService dictService; diff --git a/cutejava/cutejava-starter/src/main/resources/application-dev.yml b/cutejava/cutejava-starter/src/main/resources/application-dev.yml index 33b52d4f..93e7625c 100644 --- a/cutejava/cutejava-starter/src/main/resources/application-dev.yml +++ b/cutejava/cutejava-starter/src/main/resources/application-dev.yml @@ -157,59 +157,59 @@ mybatis-plus: # 是否控制台 print mybatis-plus 的 LOGO banner: true -# 登录 -login: - # 是否限制单用户登录 - single-login: false - # 验证码 - code: - # 验证码类型配置 查看 LoginProperties 类 - code-type: arithmetic - # 登录图形验证码有效时间/分钟 - expiration: 2 - # 验证码高度 - width: 111 - # 验证码宽度 - height: 36 - # 内容长度 - length: 2 - # 字体名称,为空则使用默认字体 - font-name: - # 字体大小 - font-size: 25 - -# 鉴权 -jwt: - # 必须使用最少88位的Base64对该令牌进行编码 - base64-secret: ZmQ0ZGI5NjQ0MDQwY2I4MjMxY2Y3ZmI3MjdhN2ZmMjNhODViOTg1ZGE0NTBjMGM4NDA5NzYxMjdjOWMwYWRmZTBlZjlhNGY3ZTg4Y2U3YTE1ODVkZDU5Y2Y3OGYwZWE1NzUzNWQ2YjFjZDc0NGMxZWU2MmQ3MjY1NzJmNTE0MzI= - # 令牌过期时间 此处单位/毫秒 ,默认4小时,可在此网站生成 https://www.convertworld.com/zh-hans/time/milliseconds.html - token-validity-in-seconds: 14400000 - # token 续期检查时间范围(默认30分钟,单位毫秒),在token即将过期的一段时间内用户操作了,则给用户的token续期 - detect: 1800000 - # 续期时间范围,默认1小时,单位毫秒 - renew: 3600000 - -# 是否开启 swagger-ui -swagger: - enabled: true - -# 文件存储路径 -file: - mac: - path: ~/file/ - avatar: ~/avatar/ - linux: - path: /home/${spring.application.name}/file/ - avatar: /home/${spring.application.name}/avatar/ - windows: - path: C:\${spring.application.name}\file\ - avatar: C:\${spring.application.name}\avatar\ - # 文件大小M - maxSize: 100 - avatarMaxSize: 5 - -task: - pool: +app: + # 文件存储路径 + file: + mac: + path: ~/file/ + avatar: ~/avatar/ + linux: + path: /home/${spring.application.name}/file/ + avatar: /home/${spring.application.name}/avatar/ + windows: + path: C:\${spring.application.name}\file\ + avatar: C:\${spring.application.name}\avatar\ + # 文件大小M + fileMaxSize: 100 + avatarMaxSize: 5 + # 密码加密传输,前端公钥加密,后端私钥解密 + rsa: + private_key: MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEA0vfvyTdGJkdbHkB8mp0f3FE0GYP3AYPaJF7jUd1M0XxFSE2ceK3k2kw20YvQ09NJKk+OMjWQl9WitG9pB6tSCQIDAQABAkA2SimBrWC2/wvauBuYqjCFwLvYiRYqZKThUS3MZlebXJiLB+Ue/gUifAAKIg1avttUZsHBHrop4qfJCwAI0+YRAiEA+W3NK/RaXtnRqmoUUkb59zsZUBLpvZgQPfj1MhyHDz0CIQDYhsAhPJ3mgS64NbUZmGWuuNKp5coY2GIj/zYDMJp6vQIgUueLFXv/eZ1ekgz2Oi67MNCk5jeTF2BurZqNLR3MSmUCIFT3Q6uHMtsB9Eha4u7hS31tj1UWE+D+ADzp59MGnoftAiBeHT7gDMuqeJHPL4b+kC+gzV4FGTfhR9q3tTbklZkD2A== + # 鉴权 + jwt: + # 必须使用最少88位的Base64对该令牌进行编码 + base64-secret: ZmQ0ZGI5NjQ0MDQwY2I4MjMxY2Y3ZmI3MjdhN2ZmMjNhODViOTg1ZGE0NTBjMGM4NDA5NzYxMjdjOWMwYWRmZTBlZjlhNGY3ZTg4Y2U3YTE1ODVkZDU5Y2Y3OGYwZWE1NzUzNWQ2YjFjZDc0NGMxZWU2MmQ3MjY1NzJmNTE0MzI= + # 令牌过期时间 此处单位/毫秒 ,默认4小时,可在此网站生成 https://www.convertworld.com/zh-hans/time/milliseconds.html + token-validity-in-seconds: 14400000 + # token 续期检查时间范围(默认30分钟,单位毫秒),在token即将过期的一段时间内用户操作了,则给用户的token续期 + detect: 1800000 + # 续期时间范围,默认1小时,单位毫秒 + renew: 3600000 + # 登录 + login: + # 是否限制单用户登录 + single: false + # 验证码 + captchaSetting: + # 验证码类型配置 查看 LoginProperties 类 + code-type: arithmetic + # 登录图形验证码有效时间/分钟 + expiration: 2 + # 验证码高度 + width: 111 + # 验证码宽度 + height: 36 + # 内容长度 + length: 2 + # 字体名称,为空则使用默认字体 + font-name: + # 字体大小 + font-size: 25 + # 是否开启 swagger-ui + swagger: + enabled: true + # 针对@Async + async-task-pool: # 核心线程池大小 core-pool-size: 10 # 最大线程数 @@ -218,16 +218,13 @@ task: keep-alive-seconds: 60 # 队列容量 queue-capacity: 50 - -# 七牛云 -qiniu: - # 文件大小 /M - max-size: 15 - -# 邮箱验证码有效时间/秒 -code: - expiration: 300 - -# 密码加密传输,前端公钥加密,后端私钥解密 -rsa: - private_key: MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEA0vfvyTdGJkdbHkB8mp0f3FE0GYP3AYPaJF7jUd1M0XxFSE2ceK3k2kw20YvQ09NJKk+OMjWQl9WitG9pB6tSCQIDAQABAkA2SimBrWC2/wvauBuYqjCFwLvYiRYqZKThUS3MZlebXJiLB+Ue/gUifAAKIg1avttUZsHBHrop4qfJCwAI0+YRAiEA+W3NK/RaXtnRqmoUUkb59zsZUBLpvZgQPfj1MhyHDz0CIQDYhsAhPJ3mgS64NbUZmGWuuNKp5coY2GIj/zYDMJp6vQIgUueLFXv/eZ1ekgz2Oi67MNCk5jeTF2BurZqNLR3MSmUCIFT3Q6uHMtsB9Eha4u7hS31tj1UWE+D+ADzp59MGnoftAiBeHT7gDMuqeJHPL4b+kC+gzV4FGTfhR9q3tTbklZkD2A== + # oss + oss: + # 七牛云 + qiniu: + # 文件大小 /M + max-size: 15 + email: + captchaSetting: + # 邮箱验证码有效时间/秒 + expiration: 300 diff --git a/cutejava/cutejava-starter/src/main/resources/application-prod.yml b/cutejava/cutejava-starter/src/main/resources/application-prod.yml index 88e60df9..2e25dfe2 100644 --- a/cutejava/cutejava-starter/src/main/resources/application-prod.yml +++ b/cutejava/cutejava-starter/src/main/resources/application-prod.yml @@ -3,6 +3,21 @@ server: http2: # 启用 HTTP/2 支持,提升传输效率 enabled: true + undertow: + threads: + # 工作线程数,默认设置为io-threads * 8。如果你的应用程序有很多同步阻塞操作,可以适当增加这个值 + worker: 4 + # 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接, 默认设置每个CPU核心一个线程 + # 阻塞任务线程池, 当执行类似servlet请求阻塞操作, undertow会从这个线程池中取得线程,它的值设置取决于系统的负载 + io: 2 + # 设置为true以使用直接内存(堆外内存)来存储缓冲区。这可以减少垃圾回收的开销。 + direct-buffers: true + # 以下的配置会影响buffer,这些buffer会用于服务器连接的IO操作,有点类似netty的池化内存管理 + # 每块buffer的空间大小,越小的空间被利用越充分 + buffer-size: 1024 + accesslog: + # 关闭日志 + enabled: false compression: # 启用 GZIP 压缩,减少传输数据量 enabled: true @@ -38,16 +53,16 @@ spring: datasource: druid: db-type: com.alibaba.druid.pool.DruidDataSource - driverClassName: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://127.0.0.1:3306/cutejava20250321?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false + driverClassName: com.p6spy.engine.spy.P6SpyDriver + url: jdbc:p6spy:mysql://127.0.0.1:3306/cutejava20250321?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false username: root password: 123456 # 初始连接数,建议设置为与最小空闲连接数相同 - initial-size: 20 + initial-size: 2 # 最小空闲连接数,保持足够的空闲连接以应对请求 - min-idle: 20 + min-idle: 2 # 最大连接数,根据并发需求适当增加 - max-active: 50 + max-active: 8 # 获取连接超时时间(毫秒),调整以满足响应时间要求 max-wait: 3000 # 启用KeepAlive机制,保持长连接 @@ -110,7 +125,6 @@ spring: max-idle: 20 # 连接池中的最小空闲连接数 min-idle: 1 - # 持久层 mybatis-plus: configuration: @@ -143,59 +157,59 @@ mybatis-plus: # 是否控制台 print mybatis-plus 的 LOGO banner: true -# 登录 -login: - # 是否限制单用户登录 - single-login: true - # 验证码 - code: - # 验证码类型配置 查看 LoginProperties 类 - code-type: arithmetic - # 登录图形验证码有效时间/分钟 - expiration: 2 - # 验证码高度 - width: 111 - # 验证码宽度 - height: 36 - # 内容长度 - length: 2 - # 字体名称,为空则使用默认字体 - font-name: - # 字体大小 - font-size: 25 - -# 鉴权 -jwt: - # 必须使用最少88位的Base64对该令牌进行编码 - base64-secret: ZmQ0ZGI5NjQ0MDQwY2I4MjMxY2Y3ZmI3MjdhN2ZmMjNhODViOTg1ZGE0NTBjMGM4NDA5NzYxMjdjOWMwYWRmZTBlZjlhNGY3ZTg4Y2U3YTE1ODVkZDU5Y2Y3OGYwZWE1NzUzNWQ2YjFjZDc0NGMxZWU2MmQ3MjY1NzJmNTE0MzI= - # 令牌过期时间 此处单位/毫秒 ,默认4小时,可在此网站生成 https://www.convertworld.com/zh-hans/time/milliseconds.html - token-validity-in-seconds: 14400000 - # token 续期检查时间范围(默认30分钟,单位毫秒),在token即将过期的一段时间内用户操作了,则给用户的token续期 - detect: 1800000 - # 续期时间范围,默认1小时,单位毫秒 - renew: 3600000 - -# 是否开启 swagger-ui -swagger: - enabled: true - -# 文件存储路径 -file: - mac: - path: ~/file/ - avatar: ~/avatar/ - linux: - path: /home/${spring.application.name}/file/ - avatar: /home/${spring.application.name}/avatar/ - windows: - path: C:\${spring.application.name}\file\ - avatar: C:\${spring.application.name}\avatar\ - # 文件大小M - maxSize: 100 - avatarMaxSize: 5 - -task: - pool: +app: + # 文件存储路径 + file: + mac: + path: ~/file/ + avatar: ~/avatar/ + linux: + path: /home/${spring.application.name}/file/ + avatar: /home/${spring.application.name}/avatar/ + windows: + path: C:\${spring.application.name}\file\ + avatar: C:\${spring.application.name}\avatar\ + # 文件大小M + fileMaxSize: 100 + avatarMaxSize: 5 + # 密码加密传输,前端公钥加密,后端私钥解密 + rsa: + private_key: MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEA0vfvyTdGJkdbHkB8mp0f3FE0GYP3AYPaJF7jUd1M0XxFSE2ceK3k2kw20YvQ09NJKk+OMjWQl9WitG9pB6tSCQIDAQABAkA2SimBrWC2/wvauBuYqjCFwLvYiRYqZKThUS3MZlebXJiLB+Ue/gUifAAKIg1avttUZsHBHrop4qfJCwAI0+YRAiEA+W3NK/RaXtnRqmoUUkb59zsZUBLpvZgQPfj1MhyHDz0CIQDYhsAhPJ3mgS64NbUZmGWuuNKp5coY2GIj/zYDMJp6vQIgUueLFXv/eZ1ekgz2Oi67MNCk5jeTF2BurZqNLR3MSmUCIFT3Q6uHMtsB9Eha4u7hS31tj1UWE+D+ADzp59MGnoftAiBeHT7gDMuqeJHPL4b+kC+gzV4FGTfhR9q3tTbklZkD2A== + # 鉴权 + jwt: + # 必须使用最少88位的Base64对该令牌进行编码 + base64-secret: ZmQ0ZGI5NjQ0MDQwY2I4MjMxY2Y3ZmI3MjdhN2ZmMjNhODViOTg1ZGE0NTBjMGM4NDA5NzYxMjdjOWMwYWRmZTBlZjlhNGY3ZTg4Y2U3YTE1ODVkZDU5Y2Y3OGYwZWE1NzUzNWQ2YjFjZDc0NGMxZWU2MmQ3MjY1NzJmNTE0MzI= + # 令牌过期时间 此处单位/毫秒 ,默认4小时,可在此网站生成 https://www.convertworld.com/zh-hans/time/milliseconds.html + token-validity-in-seconds: 14400000 + # token 续期检查时间范围(默认30分钟,单位毫秒),在token即将过期的一段时间内用户操作了,则给用户的token续期 + detect: 1800000 + # 续期时间范围,默认1小时,单位毫秒 + renew: 3600000 + # 登录 + login: + # 是否限制单用户登录 + single: true + # 验证码 + captchaSetting: + # 验证码类型配置 查看 LoginProperties 类 + code-type: arithmetic + # 登录图形验证码有效时间/分钟 + expiration: 2 + # 验证码高度 + width: 111 + # 验证码宽度 + height: 36 + # 内容长度 + length: 2 + # 字体名称,为空则使用默认字体 + font-name: + # 字体大小 + font-size: 25 + # 是否开启 swagger-ui + swagger: + enabled: false + # 针对@Async + async-task-pool: # 核心线程池大小 core-pool-size: 10 # 最大线程数 @@ -204,16 +218,13 @@ task: keep-alive-seconds: 60 # 队列容量 queue-capacity: 50 - -# 七牛云 -qiniu: - # 文件大小 /M - max-size: 15 - -# 邮箱验证码有效时间/秒 -code: - expiration: 300 - -# 密码加密传输,前端公钥加密,后端私钥解密 -rsa: - private_key: MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEA0vfvyTdGJkdbHkB8mp0f3FE0GYP3AYPaJF7jUd1M0XxFSE2ceK3k2kw20YvQ09NJKk+OMjWQl9WitG9pB6tSCQIDAQABAkA2SimBrWC2/wvauBuYqjCFwLvYiRYqZKThUS3MZlebXJiLB+Ue/gUifAAKIg1avttUZsHBHrop4qfJCwAI0+YRAiEA+W3NK/RaXtnRqmoUUkb59zsZUBLpvZgQPfj1MhyHDz0CIQDYhsAhPJ3mgS64NbUZmGWuuNKp5coY2GIj/zYDMJp6vQIgUueLFXv/eZ1ekgz2Oi67MNCk5jeTF2BurZqNLR3MSmUCIFT3Q6uHMtsB9Eha4u7hS31tj1UWE+D+ADzp59MGnoftAiBeHT7gDMuqeJHPL4b+kC+gzV4FGTfhR9q3tTbklZkD2A== + # oss + oss: + # 七牛云 + qiniu: + # 文件大小 /M + max-size: 15 + email: + captchaSetting: + # 邮箱验证码有效时间/秒 + expiration: 300 diff --git a/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/config/LoginProperties.java b/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/config/LoginProperties.java deleted file mode 100644 index 7446531a..00000000 --- a/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/config/LoginProperties.java +++ /dev/null @@ -1,19 +0,0 @@ -package cn.odboy.application.core.config; - -import lombok.Data; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Configuration; - -/** - * 登录配置 - */ -@Data -@Configuration -@ConfigurationProperties(prefix = "login") -public class LoginProperties { - - /** - * 账号单用户 登录 - */ - private boolean singleLogin = false; -} diff --git a/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/context/SpringSecurityConfig.java b/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/context/SpringSecurityConfig.java index 00c03b4a..145d05d4 100644 --- a/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/context/SpringSecurityConfig.java +++ b/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/context/SpringSecurityConfig.java @@ -1,6 +1,5 @@ package cn.odboy.application.core.context; -import cn.odboy.application.core.config.SecurityProperties; import cn.odboy.application.core.service.impl.UserOnlineServiceImpl; import cn.odboy.constant.RequestMethodEnum; import cn.odboy.util.AnonTagUtil; @@ -31,7 +30,6 @@ public class SpringSecurityConfig { private final JwtAuthenticationEntryPoint authenticationErrorHandler; private final JwtAccessDeniedHandler jwtAccessDeniedHandler; private final ApplicationContext applicationContext; - private final SecurityProperties securityProperties; private final UserOnlineServiceImpl onlineUserService; @Bean diff --git a/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/context/TokenProvider.java b/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/context/TokenProvider.java index bc5acb34..469d4997 100644 --- a/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/context/TokenProvider.java +++ b/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/context/TokenProvider.java @@ -3,7 +3,7 @@ package cn.odboy.application.core.context; import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; -import cn.odboy.application.core.config.SecurityProperties; +import cn.odboy.config.AppProperties; import cn.odboy.constant.SystemConst; import cn.odboy.constant.SystemRedisKey; import cn.odboy.model.system.model.UserJwtModel; @@ -39,13 +39,13 @@ public class TokenProvider implements InitializingBean { private JwtParser jwtParser; private JwtBuilder jwtBuilder; private final RedisHelper redisHelper; - private final SecurityProperties properties; + private final AppProperties properties; public static final String AUTHORITIES_UUID_KEY = "uid"; public static final String AUTHORITIES_UID_KEY = "userId"; @Override public void afterPropertiesSet() { - byte[] keyBytes = Decoders.BASE64.decode(properties.getBase64Secret()); + byte[] keyBytes = Decoders.BASE64.decode(properties.getJwt().getBase64Secret()); Key key = Keys.hmacShaKeyFor(keyBytes); jwtParser = Jwts.parserBuilder() .setSigningKey(key) @@ -103,8 +103,8 @@ public class TokenProvider implements InitializingBean { // 判断当前时间与过期时间的时间差 long differ = expireDate.getTime() - System.currentTimeMillis(); // 如果在续期检查的范围内,则续期 - if (differ <= properties.getDetect()) { - long renew = time + properties.getRenew(); + if (differ <= properties.getJwt().getDetect()) { + long renew = time + properties.getJwt().getRenew(); redisHelper.expire(loginKey, renew, TimeUnit.MILLISECONDS); } } diff --git a/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/rest/AuthController.java b/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/rest/AuthController.java index f5e58533..d6fa1b43 100644 --- a/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/rest/AuthController.java +++ b/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/rest/AuthController.java @@ -3,23 +3,18 @@ package cn.odboy.application.core.rest; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.IdUtil; import cn.odboy.annotation.AnonymousPostMapping; -import cn.odboy.application.core.config.CaptchaProperties; -import cn.odboy.application.core.config.LoginProperties; -import cn.odboy.application.core.constant.LoginCodeEnum; +import cn.odboy.constant.LoginCodeEnum; import cn.odboy.application.core.context.TokenProvider; -import cn.odboy.application.core.service.UserOnlineService; import cn.odboy.application.core.service.impl.UserDetailsServiceImpl; import cn.odboy.application.core.service.impl.UserOnlineServiceImpl; -import cn.odboy.base.PageResult; import cn.odboy.constant.SystemConst; import cn.odboy.constant.SystemRedisKey; +import cn.odboy.config.AppProperties; import cn.odboy.context.SecurityHelper; import cn.odboy.exception.BadRequestException; import cn.odboy.model.system.model.UserJwtModel; -import cn.odboy.model.system.model.UserOnlineModel; import cn.odboy.model.system.request.UserLoginRequest; import cn.odboy.model.system.response.UserInfoResponse; -import cn.odboy.properties.RsaProperties; import cn.odboy.redis.RedisHelper; import cn.odboy.util.RsaEncryptUtil; import cn.odboy.util.StringUtil; @@ -28,10 +23,8 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; @@ -58,8 +51,7 @@ public class AuthController { private final RedisHelper redisHelper; private final UserOnlineServiceImpl onlineUserService; private final TokenProvider tokenProvider; - private final CaptchaProperties captchaProperties; - private final LoginProperties loginProperties; + private final AppProperties properties; private final PasswordEncoder passwordEncoder; private final UserDetailsServiceImpl userDetailsService; @@ -67,7 +59,7 @@ public class AuthController { @AnonymousPostMapping(value = "/login") public ResponseEntity login(@Validated @RequestBody UserLoginRequest loginRequest, HttpServletRequest request) throws Exception { // 密码解密 - String password = RsaEncryptUtil.decryptByPrivateKey(RsaProperties.privateKey, loginRequest.getPassword()); + String password = RsaEncryptUtil.decryptByPrivateKey(properties.getRsa().getPrivateKey(), loginRequest.getPassword()); // 查询验证码 String code = redisHelper.get(loginRequest.getUuid(), String.class); // 清除验证码 @@ -93,7 +85,7 @@ public class AuthController { put("token", String.format("%s %s", SystemConst.TOKEN_PREFIX, token)); put("user", BeanUtil.copyProperties(jwtUser, UserInfoResponse.class)); }}; - if (loginProperties.isSingleLogin()) { + if (properties.getLogin().isSingle()) { // 踢掉之前已经登录的token onlineUserService.kickOutByUsername(loginRequest.getUsername()); } @@ -115,7 +107,7 @@ public class AuthController { @AnonymousPostMapping(value = "/code") public ResponseEntity getCode() { // 获取运算的结果 - Captcha captcha = captchaProperties.getCaptcha(); + Captcha captcha = properties.getLogin().getCaptchaSetting().getCaptcha(); String uuid = SystemRedisKey.CAPTCHA_LOGIN + IdUtil.simpleUUID(); //当验证码类型为 arithmetic时且长度 >= 2 时,captcha.text()的结果有几率为浮点型 String captchaValue = captcha.text(); @@ -123,7 +115,7 @@ public class AuthController { captchaValue = captchaValue.split("\\.")[0]; } // 保存 - redisHelper.set(uuid, captchaValue, captchaProperties.getExpiration(), TimeUnit.MINUTES); + redisHelper.set(uuid, captchaValue, properties.getLogin().getCaptchaSetting().getExpiration(), TimeUnit.MINUTES); // 验证码信息 Map imgResult = new HashMap(2) {{ put("img", captcha.toBase64()); diff --git a/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/service/impl/UserOnlineServiceImpl.java b/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/service/impl/UserOnlineServiceImpl.java index 19cbe389..6d43c206 100644 --- a/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/service/impl/UserOnlineServiceImpl.java +++ b/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/service/impl/UserOnlineServiceImpl.java @@ -1,9 +1,9 @@ package cn.odboy.application.core.service.impl; -import cn.odboy.application.core.config.SecurityProperties; import cn.odboy.application.core.context.TokenProvider; import cn.odboy.application.core.service.UserOnlineService; import cn.odboy.base.PageResult; +import cn.odboy.config.AppProperties; import cn.odboy.constant.SystemRedisKey; import cn.odboy.model.system.model.UserJwtModel; import cn.odboy.model.system.model.UserOnlineModel; @@ -34,7 +34,7 @@ import java.util.concurrent.TimeUnit; @Slf4j @AllArgsConstructor public class UserOnlineServiceImpl implements UserOnlineService { - private final SecurityProperties properties; + private final AppProperties properties; private final TokenProvider tokenProvider; private final RedisHelper redisHelper; @@ -61,7 +61,7 @@ public class UserOnlineServiceImpl implements UserOnlineService { log.error(e.getMessage(), e); } String loginKey = tokenProvider.loginKey(token); - redisHelper.set(loginKey, userOnlineModel, properties.getTokenValidityInSeconds(), TimeUnit.MILLISECONDS); + redisHelper.set(loginKey, userOnlineModel, properties.getJwt().getTokenValidityInSeconds(), TimeUnit.MILLISECONDS); } @Override diff --git a/cutejava/cutejava-system/src/main/java/cn/odboy/application/system/rest/CaptchaController.java b/cutejava/cutejava-system/src/main/java/cn/odboy/application/system/rest/CaptchaController.java index 0e3eb941..061410e0 100644 --- a/cutejava/cutejava-system/src/main/java/cn/odboy/application/system/rest/CaptchaController.java +++ b/cutejava/cutejava-system/src/main/java/cn/odboy/application/system/rest/CaptchaController.java @@ -2,8 +2,7 @@ package cn.odboy.application.system.rest; import cn.odboy.application.tools.service.CaptchaService; import cn.odboy.application.tools.service.EmailService; -import cn.odboy.constant.CodeBiEnum; -import cn.odboy.constant.CodeEnum; +import cn.odboy.constant.CaptchaBizEnum; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -31,27 +30,27 @@ public class CaptchaController { @ApiOperation("重置邮箱,发送验证码") @PostMapping(value = "/sendResetEmailCaptcha") public ResponseEntity sendResetEmailCaptcha(@RequestParam String email) { - emailService.sendEmail(captchaService.renderCodeTemplate(email, CodeEnum.EMAIL_RESET_EMAIL_CODE.getKey())); + emailService.sendEmail(captchaService.renderCodeTemplate(email, CaptchaBizEnum.EMAIL_RESET_EMAIL_CODE.getRedisKey())); return new ResponseEntity<>(HttpStatus.OK); } @ApiOperation("重置密码,发送验证码") @PostMapping(value = "/sendResetPasswordCaptcha") public ResponseEntity sendResetPasswordCaptcha(@RequestParam String email) { - emailService.sendEmail(captchaService.renderCodeTemplate(email, CodeEnum.EMAIL_RESET_PWD_CODE.getKey())); + emailService.sendEmail(captchaService.renderCodeTemplate(email, CaptchaBizEnum.EMAIL_RESET_PWD_CODE.getRedisKey())); return new ResponseEntity<>(HttpStatus.OK); } @ApiOperation("验证码验证") @PostMapping(value = "/checkCodeAvailable") - public ResponseEntity checkCodeAvailable(@RequestParam String email, @RequestParam String code, @RequestParam Integer codeBi) { - CodeBiEnum biEnum = CodeBiEnum.find(codeBi); + public ResponseEntity checkCodeAvailable(@RequestParam String email, @RequestParam String code, @RequestParam String codeBi) { + CaptchaBizEnum biEnum = CaptchaBizEnum.getByBizCode(codeBi); switch (Objects.requireNonNull(biEnum)) { - case ONE: - captchaService.checkCodeAvailable(CodeEnum.EMAIL_RESET_EMAIL_CODE.getKey(), email, code); + case EMAIL_RESET_EMAIL_CODE: + captchaService.checkCodeAvailable(CaptchaBizEnum.EMAIL_RESET_EMAIL_CODE.getBizCode(), email, code); break; - case TWO: - captchaService.checkCodeAvailable(CodeEnum.EMAIL_RESET_PWD_CODE.getKey(), email, code); + case EMAIL_RESET_PWD_CODE: + captchaService.checkCodeAvailable(CaptchaBizEnum.EMAIL_RESET_PWD_CODE.getBizCode(), email, code); break; default: break; diff --git a/cutejava/cutejava-system/src/main/java/cn/odboy/application/system/rest/UserController.java b/cutejava/cutejava-system/src/main/java/cn/odboy/application/system/rest/UserController.java index d3b31c8c..de847878 100644 --- a/cutejava/cutejava-system/src/main/java/cn/odboy/application/system/rest/UserController.java +++ b/cutejava/cutejava-system/src/main/java/cn/odboy/application/system/rest/UserController.java @@ -8,7 +8,8 @@ import cn.odboy.application.system.service.UserService; import cn.odboy.application.tools.service.CaptchaService; import cn.odboy.base.MyMetaOption; import cn.odboy.base.PageResult; -import cn.odboy.constant.CodeEnum; +import cn.odboy.config.AppProperties; +import cn.odboy.constant.CaptchaBizEnum; import cn.odboy.context.SecurityHelper; import cn.odboy.exception.BadRequestException; import cn.odboy.model.system.domain.Dept; @@ -16,7 +17,6 @@ import cn.odboy.model.system.domain.Role; import cn.odboy.model.system.domain.User; import cn.odboy.model.system.request.QueryUserRequest; import cn.odboy.model.system.response.UpdateUserPasswordResponse; -import cn.odboy.properties.RsaProperties; import cn.odboy.util.PageUtil; import cn.odboy.util.RsaEncryptUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -59,6 +59,7 @@ public class UserController { private final DeptService deptService; private final RoleService roleService; private final CaptchaService verificationCodeService; + private final AppProperties properties; @ApiOperation("导出用户数据") @GetMapping(value = "/download") @@ -144,8 +145,8 @@ public class UserController { @ApiOperation("修改密码") @PostMapping(value = "/modifyUserPasswordByUsername") public ResponseEntity modifyUserPasswordByUsername(@RequestBody UpdateUserPasswordResponse passVo) throws Exception { - String oldPass = RsaEncryptUtil.decryptByPrivateKey(RsaProperties.privateKey, passVo.getOldPass()); - String newPass = RsaEncryptUtil.decryptByPrivateKey(RsaProperties.privateKey, passVo.getNewPass()); + String oldPass = RsaEncryptUtil.decryptByPrivateKey(properties.getRsa().getPrivateKey(), passVo.getOldPass()); + String newPass = RsaEncryptUtil.decryptByPrivateKey(properties.getRsa().getPrivateKey(), passVo.getNewPass()); User user = userService.describeUserByUsername(SecurityHelper.getCurrentUsername()); if (!passwordEncoder.matches(oldPass, user.getPassword())) { throw new BadRequestException("修改失败,旧密码错误"); @@ -174,12 +175,12 @@ public class UserController { @ApiOperation("修改邮箱") @PostMapping(value = "/modifyUserEmailByUsername/{code}") public ResponseEntity modifyUserEmailByUsername(@PathVariable String code, @RequestBody User resources) throws Exception { - String password = RsaEncryptUtil.decryptByPrivateKey(RsaProperties.privateKey, resources.getPassword()); + String password = RsaEncryptUtil.decryptByPrivateKey(properties.getRsa().getPrivateKey(), resources.getPassword()); User user = userService.describeUserByUsername(SecurityHelper.getCurrentUsername()); if (!passwordEncoder.matches(password, user.getPassword())) { throw new BadRequestException("密码错误"); } - verificationCodeService.checkCodeAvailable(CodeEnum.EMAIL_RESET_EMAIL_CODE.getKey(), resources.getEmail(), code); + verificationCodeService.checkCodeAvailable(CaptchaBizEnum.EMAIL_RESET_EMAIL_CODE.getBizCode(), resources.getEmail(), code); userService.modifyUserEmailByUsername(user.getUsername(), resources.getEmail()); return new ResponseEntity<>(HttpStatus.OK); } diff --git a/cutejava/cutejava-system/src/main/java/cn/odboy/application/system/service/impl/UserServiceImpl.java b/cutejava/cutejava-system/src/main/java/cn/odboy/application/system/service/impl/UserServiceImpl.java index 889165b5..9c2fc73c 100644 --- a/cutejava/cutejava-system/src/main/java/cn/odboy/application/system/service/impl/UserServiceImpl.java +++ b/cutejava/cutejava-system/src/main/java/cn/odboy/application/system/service/impl/UserServiceImpl.java @@ -7,6 +7,7 @@ import cn.odboy.application.system.mapper.UserMapper; import cn.odboy.application.system.mapper.UserRoleMapper; import cn.odboy.application.system.service.UserService; import cn.odboy.base.PageResult; +import cn.odboy.config.AppProperties; import cn.odboy.constant.SystemRedisKey; import cn.odboy.context.SecurityHelper; import cn.odboy.exception.BadRequestException; @@ -15,7 +16,6 @@ import cn.odboy.model.system.domain.Job; import cn.odboy.model.system.domain.Role; import cn.odboy.model.system.domain.User; import cn.odboy.model.system.request.QueryUserRequest; -import cn.odboy.properties.FileProperties; import cn.odboy.redis.RedisHelper; import cn.odboy.util.FileUtil; import cn.odboy.util.PageUtil; @@ -47,7 +47,7 @@ public class UserServiceImpl extends ServiceImpl implements Us private final UserMapper userMapper; private final UserJobMapper userJobMapper; private final UserRoleMapper userRoleMapper; - private final FileProperties fileProperties; + private final AppProperties properties; private final RedisHelper redisHelper; private final UserCacheService userCacheService; private final UserOnlineService userOnlineService; @@ -211,7 +211,7 @@ public class UserServiceImpl extends ServiceImpl implements Us @Transactional(rollbackFor = Exception.class) public Map modifyUserAvatar(MultipartFile multipartFile) { // 文件大小验证 - FileUtil.checkSize(fileProperties.getAvatarMaxSize(), multipartFile.getSize()); + FileUtil.checkSize(properties.getFile().getAvatarMaxSize(), multipartFile.getSize()); // 验证文件上传的格式 String image = "gif jpg png jpeg"; String fileType = FileUtil.getSuffix(multipartFile.getOriginalFilename()); @@ -220,7 +220,7 @@ public class UserServiceImpl extends ServiceImpl implements Us } User user = userMapper.getUserByUsername(SecurityHelper.getCurrentUsername()); String oldPath = user.getAvatarPath(); - File file = FileUtil.upload(multipartFile, fileProperties.getPath().getAvatar()); + File file = FileUtil.upload(multipartFile, properties.getFile().getPath().getAvatar()); user.setAvatarPath(Objects.requireNonNull(file).getPath()); user.setAvatarName(file.getName()); saveOrUpdate(user); diff --git a/cutejava/cutejava-tools/src/main/java/cn/odboy/application/tools/rest/QiniuController.java b/cutejava/cutejava-tools/src/main/java/cn/odboy/application/tools/rest/QiniuController.java index 289c24b5..252007f6 100644 --- a/cutejava/cutejava-tools/src/main/java/cn/odboy/application/tools/rest/QiniuController.java +++ b/cutejava/cutejava-tools/src/main/java/cn/odboy/application/tools/rest/QiniuController.java @@ -1,6 +1,6 @@ package cn.odboy.application.tools.rest; -import cn.odboy.application.tools.service.QiNiuConfigService; +import cn.odboy.application.tools.service.QiniuConfigService; import cn.odboy.application.tools.service.QiniuContentService; import cn.odboy.base.PageResult; import cn.odboy.model.tools.domain.QiniuConfig; @@ -38,7 +38,7 @@ import java.util.Map; @Api(tags = "工具:七牛云存储管理") public class QiniuController { private final QiniuContentService qiniuContentService; - private final QiNiuConfigService qiNiuConfigService; + private final QiniuConfigService qiNiuConfigService; @ApiOperation("查询七牛云存储配置") @PostMapping(value = "/describeQiniuConfig") diff --git a/cutejava/cutejava-tools/src/main/java/cn/odboy/application/tools/service/QiNiuConfigService.java b/cutejava/cutejava-tools/src/main/java/cn/odboy/application/tools/service/QiniuConfigService.java similarity index 88% rename from cutejava/cutejava-tools/src/main/java/cn/odboy/application/tools/service/QiNiuConfigService.java rename to cutejava/cutejava-tools/src/main/java/cn/odboy/application/tools/service/QiniuConfigService.java index 3780226e..d1543b52 100644 --- a/cutejava/cutejava-tools/src/main/java/cn/odboy/application/tools/service/QiNiuConfigService.java +++ b/cutejava/cutejava-tools/src/main/java/cn/odboy/application/tools/service/QiniuConfigService.java @@ -4,7 +4,7 @@ import cn.odboy.model.tools.domain.QiniuConfig; import com.baomidou.mybatisplus.extension.service.IService; -public interface QiNiuConfigService extends IService { +public interface QiniuConfigService extends IService { /** * 查询配置 diff --git a/cutejava/cutejava-tools/src/main/java/cn/odboy/application/tools/service/impl/CaptchaServiceImpl.java b/cutejava/cutejava-tools/src/main/java/cn/odboy/application/tools/service/impl/CaptchaServiceImpl.java index afe21797..055f19d8 100644 --- a/cutejava/cutejava-tools/src/main/java/cn/odboy/application/tools/service/impl/CaptchaServiceImpl.java +++ b/cutejava/cutejava-tools/src/main/java/cn/odboy/application/tools/service/impl/CaptchaServiceImpl.java @@ -20,7 +20,7 @@ import java.util.Collections; @RequiredArgsConstructor public class CaptchaServiceImpl implements CaptchaService { private final RedisHelper redisHelper; - @Value("${code.expiration}") + @Value("${app.email.captchaSetting.expiration}") private Long expiration; @Override diff --git a/cutejava/cutejava-tools/src/main/java/cn/odboy/application/tools/service/impl/LocalStorageServiceImpl.java b/cutejava/cutejava-tools/src/main/java/cn/odboy/application/tools/service/impl/LocalStorageServiceImpl.java index 11f0ea40..a61e6c9b 100644 --- a/cutejava/cutejava-tools/src/main/java/cn/odboy/application/tools/service/impl/LocalStorageServiceImpl.java +++ b/cutejava/cutejava-tools/src/main/java/cn/odboy/application/tools/service/impl/LocalStorageServiceImpl.java @@ -4,10 +4,10 @@ import cn.hutool.core.util.ObjectUtil; import cn.odboy.application.tools.mapper.LocalStorageMapper; import cn.odboy.application.tools.service.LocalStorageService; import cn.odboy.base.PageResult; +import cn.odboy.config.AppProperties; import cn.odboy.exception.BadRequestException; import cn.odboy.model.tools.domain.LocalStorage; import cn.odboy.model.tools.request.QueryLocalStorageRequest; -import cn.odboy.properties.FileProperties; import cn.odboy.util.FileUtil; import cn.odboy.util.PageUtil; import cn.odboy.util.StringUtil; @@ -29,9 +29,8 @@ import java.util.Map; @Service @RequiredArgsConstructor public class LocalStorageServiceImpl extends ServiceImpl implements LocalStorageService { - private final LocalStorageMapper localStorageMapper; - private final FileProperties properties; + private final AppProperties properties; @Override public PageResult describeLocalStoragePage(QueryLocalStorageRequest criteria, Page page) { @@ -47,10 +46,10 @@ public class LocalStorageServiceImpl extends ServiceImpl implements QiNiuConfigService { +public class QiniuConfigServiceImpl extends ServiceImpl implements QiniuConfigService { @Override @Cacheable(key = "'config'") public QiniuConfig describeQiniuConfig() { diff --git a/cutejava/cutejava-tools/src/main/java/cn/odboy/application/tools/service/impl/QiniuContentServiceImpl.java b/cutejava/cutejava-tools/src/main/java/cn/odboy/application/tools/service/impl/QiniuContentServiceImpl.java index 175c8317..a14f0cc1 100644 --- a/cutejava/cutejava-tools/src/main/java/cn/odboy/application/tools/service/impl/QiniuContentServiceImpl.java +++ b/cutejava/cutejava-tools/src/main/java/cn/odboy/application/tools/service/impl/QiniuContentServiceImpl.java @@ -1,9 +1,9 @@ package cn.odboy.application.tools.service.impl; import cn.odboy.application.tools.mapper.QiniuContentMapper; -import cn.odboy.application.tools.service.QiNiuConfigService; +import cn.odboy.application.tools.service.QiniuConfigService; import cn.odboy.application.tools.service.QiniuContentService; -import cn.odboy.application.tools.util.QiNiuUtil; +import cn.odboy.application.tools.util.QiniuUtil; import cn.odboy.base.PageResult; import cn.odboy.exception.BadRequestException; import cn.odboy.model.tools.domain.QiniuConfig; @@ -40,9 +40,9 @@ import java.util.Map; @CacheConfig(cacheNames = "qiNiu") public class QiniuContentServiceImpl extends ServiceImpl implements QiniuContentService { private final QiniuContentMapper qiniuContentMapper; - private final QiNiuConfigService qiNiuConfigService; + private final QiniuConfigService qiNiuConfigService; - @Value("${qiniu.max-size}") + @Value("${app.oss.qiniu.max-size}") private Long maxSize; @Override @@ -64,14 +64,14 @@ public class QiniuContentServiceImpl extends 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 PzXGLF_HS#FKgj<8&Vqsy literal 0 HcmV?d00001 diff --git a/doc/添加三级菜单/b.二级目录.png b/doc/添加三级菜单/b.二级目录.png new file mode 100644 index 0000000000000000000000000000000000000000..e4ae5c5e9dbbbe1ca5ecac87150db0e061ecf56b GIT binary patch literal 49706 zcmeFZWmsHW^C#K_2n0)ThXi+mI|O%k>kwQThsGfZ?yijlYou|fvEU9t8kgV>0Rlk+ z+?L67s($;m^}gUjex2NE^@Ok&$Qs&v22Dagm<-091c<^%?SC(gFYFdXD}A z6%7Lg8R^-d`$n$-falMU0I1Kgo}r?>c#ewt=i4Z#&ymp32?&Yw=3e09;isgL3hLo4W!l4&@!-e-jzmTx^nm+w80t=ZaUq>qpG|Y+v|U zBW-`u=}!Fo(ngRuCdrzgYj?m+%0@g$9w0H9PQ6)H@mPy+?in8dM1RN@z9~4jINU0H z0${44|d#iu7F4z^Bo6Lh}oXbbed{g|Ec83$W=4=vTD3; zbTB}_wyAHBWa~!WM#*YNis%x&Ok`Mw;N^=Rh{WcE9 z998iOCDXgYab4!Z+-djr8jZzdh4^-#bjJ!w^<7m>6^OV-XNzBXjAPSkgA<{*^vGhJ zr@5LkTYPctJ5~&`9MXe6;)mzB(^#JD)E4iP%Z{CpmdlLQ^6et?nX&1~g|l^J{b zhvqBzqEVC^)juzdoDZaD%k5a>uAH}pTM!j$t`ZAVc%=&X4k{_XJ1&?5t1TqD8M2GHSafz3`zlsl zo_*H4-M6n)&uUj{Fg(@*KT84P^Hh%nefC*ju!b3uYjRt*@?4Uy3t*f0;o;;31lxY0x(U2QXI#elqWlzo&ZV+ zdA?>hxPyajK)71H&L#t{-5WQ}el0mYs`e#0y-wJRCJ-IDO%S6u7p!TJW>ns*R5S~sjmlJC+R;80+yFf&a1UNVG3cX-(o`Lrc zt|eQ4>1jlM>FIV>1!R%z1)q)`R0n zIV>hP(Nf`XOd#8Q(suluwit}2DcgW8nRF!IzwgUsty zOA(i|=C3y)IV&lUwDU?}2ag=Kw(d+LE~r`_lvG97t*I!TKG6{$n!;r1>3BLb7|%$+ zFwnGk0VH6DsXwow_p8cJ#epPg0-qHilX=U#gzthSyDu$2cxE+qA zQ*h^uNHDc~V#e{}kQ`wcEyc$#0gb&(9Of}XoEe-0RZTJ3$<7o`l%JjRV;6q0$Q_-{ z-*zl*&bBdDVlYgN>(kS`h+-)$w&Wrp(U|MVS#7zo{M^4&K_u`Mtk6|EC=_hAC{4#Ef#*yMuZ27m`KOs$91*B7z5P%^@OZnCI)w-*sach> zIdBTL8|6D!P5$MiuJhB(RqP6bZld-#jUtWQEF0zyRCMX|$z35OkPXTCpdMsPnB2)i z)5hE-vNIGRe6O(NvD;$&yO7GZd;i4CFQOh4Z0@CFO6HJE+P_Ol^cF*;g1cJ!O(ppo z)69>Fn&YkKWOpbRdZxwIzqRxNwT`0i6wjRGq~9$ppFx@#KTPU=UYSQPAM>;b0BM!D zEnX>PSXXQvfy)MtSBGT;?3)bvI9xuVXy^~NKNH)>4#YVGV+RU=J_1mf|381bynj(l z`+_cpYug~{!zd%3>SoMIt7Uqeb({6Xdch#ehv|x}R`2n)a2bW6*KN>YmV6yk8pusU zg|QFO+f%xXH|z|-^P05|qE0C>!L}<+ebHfTarq`~l3~F5UPOYT%+k&>h{N*17nsX= z(Olmlt#i26@|fqlv3})s>@0mU=?G^K_JSRBUB2Ak`{GMI-DUd(_)WVgVK~=yuU;w> zP9(h7Fn4x@iddhgEnj*9C{VsE0!!57@QBGj0PlJqJs)2DT)%q)7(W3vJLf&B4``nN zPFDsr-6`|3v8P%+6{&Mq+3YPYc!O$%Hby?p+eJ3~+r) z-b5-zaR!|0gq;&n2*#rD(~?~WzkBB={gIbWFPsdIwY|c9d#yokoBE!dbHky{zTuBLq@K&?7}8!<#W^E zvEwq&XrPp>ZB*!Jyl)yzvZkxIm^r{IZR*Te^gp=MBDgbcAX6 zdPmFUIO+bH*K5OoE;z@%Ij8nC4f7HY&~;w^fK__t$h&~rY9KvXZ}A9X?$BQ_{Hk7o zN@;lsW@XZnRirGRGfGl<{ZVJGV~t=tg#apDk2RmWx)-((i`YBjcYk>tdYlRdsgOA6{3(*ZoNpYKrERk7ik97*jTVAD2pmHf;m1W zZwKtozbv)5?T3;L8_>O|^+5~R)fc>Cx30K3bB`wAr1btdnou)VIma(QQpq|e&ubJ< zl0WUyGozZmn#lE%Z##GO9ZR5?Nm6d-n?(4o7fmGd2UnVT28?UhOKWnx=v(*Q)b=a+37AgW^&29_El~V1X zD8|@CKVU~CdloE7baa+*gmiaOF}!QWwwXN|&C+l@iYRbyvww$Zi{pHI%8(P^gRPdvPJzM2lBFSU=y7s5#A@$x8NLF{^% zuy$bPXV(6iI8%c!l281DMFJ0WA2=)CyJY$z=k^zzq?E{3eU&#fx^A8`v@FVKta7TU9}6O`%_Q24CI^u#D!qb7s(SPi5+A+>lqRxN zRa1+3$c>zY3rE_5o=Y``1UlfFZ6P@ETqDNypNr;e3;-{{#b87FRlan{3mOW3X_Q@Q zGO`yZyyXBuYU2L}1OKS_pV|oG34c!jWD79y2--+Bvve7xqV(7FuDx=ddIE&$eoFlM zmt!Jhoc+F>A=|Un@)X^XPpmrD&ouTIbr_1{a<qvlS>MZcBqt1 zm30GDitN8GQX+5A_7_NE_4`|m3o|<3GYUEVOQcwt-jC*6vgzdRE0_#E9 z5irs2m^8MACWE2}IbZS_`cT#{R}yAYY$>-#f#2TS`kXD zt4s6gcM!MpopstqZm?sbXAoOI+!I6HTkYfwj-SU01QU z{(Z{wbX@|kuPRQ9z7<^Y{Wcpe#|KJ%tE0CD@d=Ze%d^Y;iEg7c&FXJIG*mQ|MFbUl zg^rsJlha&hSL()9L~v2}>aCkFz|zn=avHA?pF1R88pXRZJTzo;vkm#1Gcz8k5gPQR zn}(6@n6Q2nxkp!ul{>DTq)-3KS53SlHC_EZ-)7xGZ0Eh5#h0T1$n%f}xf;`zSOEvn zwJ$WEPU`DPWCJotSIMA7Jc43PFLf$mU51K`23fCaQ@AV9^*quEi7@DD=HQPffSzj=Pt4YX;edP0pJ0S%my&P?VrtnkTs5t#i?6!= zniXAGC7erPgW#%j-aAW~m~?>s5`7qaY*l8CzG!T{e!)p&`1d zm03ccGK0Q)Jt@VROh3A884+GG9!VRF(vv&X9y`d?aQ$zz50IF9o%1wO+sngcO#5Ot z;IjByVOInFglVW7QWH=`+5A~q-L8#kli4~|ZD26P&U>KsBDKMMB97f4-=_CWo0IuFwGC|p=D{&p>1ztEHB(T$U$L7 zL{qvgeIxS>I0u5m-Uo-E+28mB@hamJnmj&)FOwKUxm6en;4m97!O6c?SOp8X2!ogp`q{?IQ*_Y;_3>sQKuWAhdR;@>p zdAkOtbSiX^g5>4fj2qKb>zmz)QiCn!8tA?+@i$ElBu0|qZ#3{*6Euw~4*Jtj95xY* z5znP~=c6V4w7V!fAO|)5vT6d(*738T<~c6aSXyrxUYoW(2UC#5`f#L2ay8VukiH^{ zBB`5#C?UeR4j3Dz)){L2O6(sZwq`A$H>sHf4U{RMN__Gw_Ixa&UCG zzq!?Dkc7mf8($Rh}p^=6@_&Cqt(0w2DLXiZI!OL?0+d&oDxNOX8TiD9cE zb2Nyp!m>Ef;r&juX)q<*IBm6FpUOB`%iPqnp?&CcWz=pIV)7NTinH7l7MwO8t)Zg= z$6d0FpiI}w9FJrd9tPme$G#nYW^~>mcjq_$lfDljjmbAHw+>%FoCBm^2D&Hv`FIMy$*q`_dubZR$1yL2Q_DT}v83v@k z>h(wt7Nbz=j4FMKJfVY}t}6XlEw0YNCiM)B10{T0VV46VKf$1A!Y%X1`_H0<3cEQ#KRV_BkMw!f+99~nu~br} z;G`dK=(^YiRQHlLd;S=UHH7Ci*io?J}N~Pf+ z#I>MF+poYw#UGJ!xz+KE> zXGWILPi9__@FI9pnO!-Uth9aPd4Csyvu=+ zJOR4IRDYwf4Ie2!-}V@G6MT0oBv5^P}`+`m0 zL9q!Y8jpw7Xj1d5NVQ#sa|i(djI#e&rse--%3<)IvFTq(<5F=4(B#IWcbuy=u5+)G%ob&#yYp;Q-$r3x z_oDrBF0iiA)sj^u*40a)YW|44YoZuo2wN;8o%6ltZL5f>=pV_?vU2D11GOI>z#%F1 z@2myNONy*13X&uBrz?Lwk{YUV zhZ3vX=wELn#T^Ck3-NBPUU84XrD<@>*RoJqyodcw;qpFJ-%*)+5zAWGPFZuE)q@mX zU@*o9b%vQnWnl4R{@t!yXybMrGF!8$UPRARr zgza8@{()>UxPClk6X~s3=Cw4w4KomkQfhCOB2{_)%g22-%L=Mg&tp?M$M&Z{B0WA+ zZ1aVtc)Q$PshLNX{)n@POwbdVsZcwocD=tGvACQulxYG5rAwe589Brjl8umCJKU-D zhsUHi3y>4~mP;BJTI^;q)Uneqa@D*|u%Ff}S2LkolSD}dM>$l;%rWbVV{ul#6>FKl zM!Z`hoA=~CrlDb~*VCMV38WG=e+QZc${!R;#a_bXG` z2VdMF;zTT!Q)<7loi0(vC2Ikxw5TwI3_RY~+Q4DWsNZoq!yABt?K6(U4kwCrjUy?P zLMEFs<6J5INh(MBr*p$?M^vQJ3+E&gYD!A2dS!6Slw7E6-LpCsY%ro}Ty9rq4H5msI^2nAL&zM?QfZ-$%1Qyu^P9$gdFBjPbZ$sM z?;4$AbCex@f0fV>-)A%1Qn|^7xO(s!)!Vb&5h{LWV!}}Tcr!a8W>S0}TOH%f%U@L& zxhBGjrLSRE<^=62|NeyX| zt};%nu0`^g_byqmo?!ZAey8y^Fle~|QK+K@LclDOCEKj`UzNRHg})$(q={lCC@V^` zVzEmoeuMdWi=-cTG|*9WUSc=%5yOaiJ$z$DB;ZJM&F~2jEna`uGxr3*Y`VEL5o7hS z{$>c|c4*XAl*P9j!st0od4pvxAgk)!xCkvD7~lz+5ouP15bRB0rmoQB@*I?!*o-UO z9bE{%{z-465v=-U31I6cA@U*r+tk-@TT(bOoT=|w&E!?Up^}6(6*Me7)O_yte1vv{ zBs#bmtOD)1k)_r2`AM>jnB~Qcmbi3eQjK-OhSD?iBQg;EJW76TSSjdxnRJ^Fxgv8? zy-B~Kg$-$}0c@GZPBheuM{!95>j?m}-c~MIZqHfLj;STlxhnK+aId#@cixNGQI}aO zK*qkKXu@z85^|f85YKsC0Vb<|Y^<0Vo2M7%X)?7!Wx9Lw1dt9~m5a~v7`j?+*`G8j zhuPTrPU`HyqiAYzGRI7w01=r73&;vo81_a4)90MutyJ-8E(E7tw8}O}6%4WJ4JkSz zljKPhf4gUwk8gVSIN@rv44_#$2FbbKt2XF`HgkdulU%HiJ8}~6>WwAn?Z(mCSUv@7PH^jYNTG{u+?YM9NTue6G~zXJjn|0;qWpn*{*Dezz)XM z(YOAp^}%Rz@#x&Im4b>8e`xm^ZcerH@u>Z>u*eG`SDL17N0Se8XSzR0j2v+fb{6{k zyaErL=Io*aIvQSCSy-=$_l%Q2R5H|$k;$jg!$_gqX)IbX%d!cHmCNEZ`-N0m^(vtt z6UIo!baIbSCmP5byV}lD{Z-KbWE~$NhTUfLYe`wXzzdoeHuBN29=BHWx?5qYnz|#= zES_=hO#XY9{5AzJqk-kpdmAy(I|#^jhQlfk$K1OUlTkIFh)r9Fio8IcjYsPuai@R_ zinz^gEankoyHT&VmXNoFtJR$ZLC#c$8a@^&CCC0{>Q+>D590XZxqPM$o=~QT*oY`elM% zxFq#KaN*e&LG=YqwJNQtxJI!h{gLlu?5hd_*uiZ{waJm&1%5(S`AH*8)vbqnOFnF_ z-C@2tAh-!O?HQRV{!RR9$|Y-R+GU=cg&VFe=eOHnn^Do7H$t*tT3Ye;!FMWqz>3|&TuBu|7R~I2}Y5Vim6Z2rxy9iacoU+s8 zIy=l;&us|Af>J1-5ZKyOakk;-RMA+#wcS3mUzuZ&F)=h>=Xh;>``OBQM{l!5S{gq( zP~RXMu~qfW_-==!!Wdm_u++?&O(;4=F{Pa$em?7TX{8Q7$(iw(wwZe6zaRYDDR zniVQ8G5YveO8aP7A{LoklPi}5!>JQk*OIg-N@-YCr7M7w<5r4vHU%>8yv9=B%*x^s zLdRC0VN+L&>*mZ_C!bl}mS8rumBAcJOP5cO8fH48#7at6#M{>{xy~(&6HCfU_jP2a za8Hpnqx1aZ9#`|1^i_5bqvx{mIOc4^ve5)B#JvQ5+2-F?JLk|r;UT?9^~WFHBufdJ zxqm?8PD*yuqRVjEXzUV5&va1XfBWt^3H#>_f7#wgbeWclgVv~qkl0RpEeY%6$id{a z2h*Vw;GrRAWhZc+WQR!fi)BDMM<;F3H#Oa(Bd6|BAMO_G-6O#r+ID?D07_qkxlqyk zVb3RwDt5YvS0B1jRvpMA!myELS*1)QUAfZ57<8k#c-|g;`AE&jMP&6IO=$Pixe2O? zTTd{O`0@iw=HvT{CqSQL!AJGK%E!>4^dpILa@#M2V2ew`-(fJU4yWHr2nn8sonE^O zc~kD#a4UL}UvVoDk}2fli7l3kAg>rw?F6GwjHPD$(9iP;6~)wQz0lKM`uf${4qlBP z>E111#7JWt<4eKC%Eq~i7NOD^8bNmNZ0HQX|J6>Vdh{uL)@?kK)PYi+IHT5=`c>H} zo)McV(o%9Hji@uBe#SIcZaYn`?+sEHnMv@N@x#K|Sbx=e^OL|$QCT?^*k3<<*x${1 zqgfor*5@ZhYk_wSr<|*E!!J}8Hr=%5%`WxucH5l#@q6?Ve$ZnqZY> zCfLg!B}SV+_;H~}jDBaAw*6f^`ESZc^yy}bwX>tE_mSng*K*aC7qkwJGN#HPL(1FH z$iM}egZoiZ`N=9T)5MZFb2&{dn6BO&pKPAYtaT=gw_{P!vqFbqS#Xnx$|eqe;KNLm zjORSlpfoZvSbunPz-;JOnWUxq6BMMHG>Sg2zS?3W7P(y%HeHC28!bi}%QHS7`^!cHDLF#VT55vX11_u3)Lu)x zp76_SS?c#1jj;h3X^llXd?&iFaJ6MU+pALhoPf5H@*S@#jj)ea)D+3#4mPa9hW!1S zJ*^{A8G93M+!^Uh(!)4~%-LFdH6|QC6HUx}EalQ=UXkr5e18HYr&-;&B&>)+lEBO+ zlbQns;bry2VSs`t$eHIHBFc6ruWi2R^5OphPmx3BdpGHV{p86{0Nx;W*qiZ=$IVgz zKv(Gxa`_L?Kg%l5kbmd1*1>;;`tFWpE4kA-43{f=VNKH5_I_Z@>UI61n`lydA*d zc1iD$Qx`;hn#oz&iPWvGNA0hj)XW7YEJhYYWE~bRrl1`B)Fsi+CbQE+@dOGjNDqL6 z;#*|P^G1LzqTRk@>lqa($dYQ}V(gc!PiVV87#v5RjWj}Ef9>4Q{Y+qYs~C~+{Z791 zF*XjXb5HnW56=bdd)xQPZ?MUZoW=V%YSi`TfuX>Fs_1}gI!Ab z1`m_;ju|$qd@)tBV5t_BxhX!sfU#lu?A0^vfqApgmBE!W$Prht?A@ z4^TiOlvvC-OIZ**ZVarW%#6EL4PG17Kce}F_Pq14zN2v5T?rcvP;$>hc>zJ|NUNTc zuIE~3uJK#6f3Va5ybm&5o7znw!$DHNwiempf9c2mz9QV(qEp-KR~_PR=nLRK3t{4= zcn0a$dR?C5&ny%=t4gP1Oazf5)TG0zol-b7x0n&O&FR@w2;*1EOgHEo;Lg8rp82O9 z)BneM@{Y&6MnF{8MqP$DV}t(C?lUXcRpL9OfCn2t`78}vLDWAMucs{VJlkNO zWD62`M)%14jvL^c@E_i+0t|ctjL7}jaQNNvIR_1g5>WDti3vrr$QVrv^EP2_IdZeS z9HNuT&4f!dVm1o_G

;$4e9094OTqKR&R9_Cy{uSu*8p%8g4;N!@r81sv{=luiO#v21I%D zOPf|IMV3%EEjMm)-`OG_6^RVB=2s`v-1y;3UTyz28G4Iwo@x<7Y9gDKf5LRM483r3pveh-#vP@|#n>Mi^m-`=AMAqBG!q_q1Y&TsJ{E|P6IE4p{ z1|MZo9W01JVVh=ub06M4BC$cI7u2!hdrb03fB@c~B;kr#MB*6ToEXmsr{F`F}{AXKJg!6Eef~qY2O3bdasw0E{=0X9e z8?(;Dw@LqJFsdW}&tUw=J%a;PXk`PuFA<&=+1nVk3P1C$wH^@^$4>diUF+s%@b2(V zh{e!7L|a!Sm2SdHO^Q4h|JwO!2#853!wqg z#~^;5yyJm)fw?9@QPBFkLESD)0g@NJ-lBG=EL^iL53K*)hJX4W1iSj5{aH26bP|QL zmA4|tU&D&>Sbh)AG|Z45#%n<83eM#XC-g;%Kwy+?QkC-Tm9m%NM>}6i`;etrxOq#D zdFgb(c)awAV_U!}BdV2mqVL2a0M9gig7&a`-`fX_x1Oa_vARaF(0o4m2@P)si6glY zHo6CaM7SuL;NQU53+b!QRh8GfECLBN-7C<8=0nlGK*D-`26Jc!H~SKmy8UTg`pWf5 zY*iy}ylUgoucmR&I+owMwYr}70n1{TG>)Ov&{J&+uR3GT4vzdZwX#H)8H!rDS83eJ zv|3flyiHsoP{(+yA2ym!g5%J%Z@CNU4sugrnJ|1abv4Ph`Xd(5bfwB>VTpyi0sBkS zek&q7zQh20Wxk}PxVOa@;JI^NN?Mc2h`THX-Q^74;*BHzh^xY;&YCx@+QP};RNJ&# z#-v4~%_-yDimagxe#e#3WoEWAu%FT}-P}5-S(IeEy^wQs!$3oc6{-Z@OKXOPuTdIn zRRq;+ZsaXmE!n@j1?L2qWV|=yMpIWCJEDgjiW)^yG{KMJK624^3pL|ps@0UJ^_0!4 z3Fp7#K@jmMm~T^ZWbs73eXSmN$9hQN!-VqC6u1~OlJ(oP(i6ZSJmez7ZvRvid|2Jo z@KeT=S!bCY=qFX-#uc~LqG{JsQ~mmu4wPt2$aIT81W%2w6FP{=akBrly|9sbI9$n= z_f5Q}BuK8w^Y}qp260#3Vcd0hjq&#QdNlf&b^@V?dzHh7o(JqjbkR8Z$^}qMi>~!v z1f5%78pfA*JCI$cT2I_7EO62b-oGz9Sms^HLE75;hC7{RAL^OCNQ(!QUCJ<`KQ{U4 zTmG|!c_@6LH=p4(Z{O~Vui9w(Z&W^(fH63-?Ib@^)p{kKlux~+C?_w=J*chw0xY_Y z+FMw*um-gX=P_Q7kLny-pKefd711{dArC~ZM$7PS=*H;<X3Y$85}14^1cy zv^nZ4(VC7e7_x5u;lX~&U?DVzHvOiZs&!peDIF&wCr!7gVVly7!=Ilk z4Kwpr+?+OMRo5_nWZ1gVrqi*M7eQUKZ4#<}Fv@+M_1=^5t}I{I*^(BECf5mumub}u zm=uEjMYAc>M63om)z!oY2HC7~2n!9aYZSH@)bZ#OmFJ3J(^%&tDS{uQc+e;g;29Pl zzwpM0%KLdvr``-|Ir>x%Gu`V3_B*a*M@G&h3p;2y9;8)%+r*4+#4BrTCO-j>Tnh1b z;baV`^zc_Po77cneb9@Bnmza)9Xl# zB&LEy7nx~AZnGj)-XX1okT)(`#3amrj$e_GtVk9ED0?8`5qyKbH7I&exIg%y)x}+6 zjgNB|O=83N?O@eAeX8*>eS|}4S5Z z|5~K#=e;p*BAfex;@@BQezRIr`qX=bYCDKWC)6q!7_#F{Svy8!obtit6+LTO$6DXZ z3}ug)-CPng=Wu`T>ZP9uiWq&-9UrzQ*zmj!*E`$f{9e9x`In&Yg|0V;!$(58W@OcQ z^^@RmqSWx5k7-W;tN16t^645aIYF2@vvfb5bqC7uK&{GH2Oq({53NpgT4${`rS?z% zt=T(!ibL{mKjZ!aQm(;w*+-mt&Ovtbzu$6a2J;qX)WyFWp(J7_=aCuNhUyIS$wV+% zVM!%qYSS@r`=^BbiGjC^IYbxwcg^cwTg|6yUD?xM=$$~fK5_v=sj@j@huy!s+;qtXyD^DwR%A=RO)jBifqAq~zJD;H_AV|?ENo`uT$0cNIE>DfH*dz5N zuLxyR=TG~|>J!o{W6l1Y)nNy9g|RhL>X|xmPx{#?4&RLcXK6Y~16=;1c@!im)}C^(azGYQ?~%@X3^ zn}D7k+B2REw|M*?X9TeOk;H6 z=nA15P+a%8uQBev#PYa^suEW#?9R!5V#fo| zPB%Ogz%AsnBv69|N5eie08>0RcI#~IV3vwHSQT>LJ<*$ajFr# zLV*Np9*mv@ALYDvZe9jx{D(6M|GtGo`@h6poaZ`kzx>xA>_0V#BtCRypLItG!04#DmVt{WdGk1> zO$!r$JD@7=yCoMiA_56m6@QSo$icHqK=-k=2v&5#w(E$IGgFSXQyK97W)-%8gVGnj zpJVj=j?TPL{T)h}4QYW`b@rPD}QpSDdAu^FS=#=joRi-{RI;(yGd#g@ZEj z_WhqIT7}%;JC?%`sdD!Z^?Li?Ba-O{{+q+7WXgE|p49xqZ(1z~ddn&E=n~|~b<$pE zx@c#@qdaU>(q#P^vzfFw#*b25%HCSgm%;!{W};CmwZ8Mh7>^ui=ww(t9z68 z{QyifGbF$a%UnTQ4K2o2tX(XRrrNYf*%{i_Y{{J}Y}ft?&^|4WkCSYFo7Hv38z0jD z55V;kqCbXs0{9g9Gf@6#@pjZNqW*#V4*07xVUL#zH!8yalJ`&iIqmqKNB?0r@kfTo zzvTTB`V}p8T36qX({8-|m%RT5fhsookH7zwCExSmU-JGNB>cA(y?@K&diM_u`nM6` ze~UB!Clvmd5&vgU{>~5lpF#P{@&5nul(#U$MePPT#dZ}xqO(j1W2_>eVv9$SU&>m8 zOe>IunZKyFkG#A*?=qPw%UT|Vv0@~&1n^4LmI*+LWO|#eNS8a)f>QGE?a$(D#Q6kZ z!iyxVY4IxGpr5;9H@*nWW01ZgH)xV!+@tO1nbwF^dY9|06Fm#5 zI3PxH{KrX}1clKp4oO+0n-jDZqMjSqY)FK^9>0>gji~d~;xP99cK?KD?0X^RI%$$j zF8AL&`x*V0TaSwM@%-+ITNK`&=dzoFh(Y;BQoZN$=vp5E=>H(WOs}dehH)b1FNFuh z#pd%x8U0R~cRVF9wyGCNrTMt_<2|`$JcP2`CIryIZ2v_^yUV?C9;6tb%iRG7Eujgn zCxA6iw$XXa9?9d%7Rlukz!^flz()R&?vn}3D9iaP1#1{@74NXD-wSBa^IXh4B#EiY z_oDL;i;3rE9uE4Ge1E{crN05OylFf2j#AFcaK3lXf(nf~eX8&4X*a*_&sFC-JRT3- z)NsVLc}t9>3RC0Qe?-f44%1Ezdjg~w*-(vW2aPbRDlhDDDd%l{&RAI9?yisVsZBNu z9dQ5cqILUw!Jpft>eQL4V|bCeofZ)!EuIzR4w_#-K7ImRbu#&}?s68-OFseN;OJ9< zCx9(5>zz;9jb*Fp%9@y8a-D>?^hVN-m%I1XsoK!P2L4Z;gOXqTV-Js$$Lj=QsR0~t z>W7(z_pV*{Qa`7W$Ey76M5`uvVzh65#q5y|@I@2;QH8Z zL;ck;dH7+RG!Urkthjvi>I$~j8~{{vuV+Z;cLK63#0-Dm-pU$*CnUtYFVeSO?1%+w z>A%=0w2AEGr?!Ft$(!>SCQ^Kb7h5|jmR?{oU$f^CX%YPP6P^nez|&Ay=}tgSsr@H&X`O~6CI@eYP$45H zk()UdQ}?+6t#ryKD(hoy?5gnR^z+1Fwad=|NZ%aVH2_Gj{zbO($y9o=wbj4mzRn9r zMOV6;&ZlLIg_wIiiVJH+tg?>=R@F`ud0KkkW=8$gG4uW*Z}E>~vD}$@NZgm$c5Ve-haMC?&$=OUMLvLMD( zg#h@!%@$$CBAj?|c%f>3;F#mPq)_|b&prjHL2n+ zFAb5kQfL3n>Iwj=&KJP5*Z+6K{`S_LfZJbdPL779I{QKj7B9(G7;Hg31>Bx2&aNt_ z`}yZw9_b}H!{r{8`5u-3cL{Y4iGFRv2aEFcP)H2Qd<~WOCV_UtjoW{B+Sw+Uf$K)K zw>OX5N9d-0aE6-4p3BIFfxozPdokUJOV&a+dBQz6x5&4gOQg%lI*PJWo8K)%7QOo` z8WshrE&A6_K9!zGh)UrGidV1RvGdsx+V#G2MSCVkOYwpXKMMe0HZosnzhC<4Bz5ZW zym_K?Ntjk)%jiInQm(2e0t)0Xp0rrb>SwnoV;R)}Df3NcUS+40&4E*8LhLG8(XXO+pm!U=eyWbj27)RGy~vs4L&|3H^KvL<90Dd`Y()N zL(>E59udcCciimnId(M(@>)KuM7w;4q-P)=u4;b{bRvAu;_BRsXI(Y1%O}prp-1dA z*?0HW*Vj;sn()$I)v8^!c+C`#>)FGx_HpP)Hdo#z`#NF2IBsKX(fa&0Q7td9-)g8+ z#njU@jOwsLcK|Q58Q3UG8nrrOXq=@qx4J-+(5?7+TyC@REjkr8_rqDm zx)8Dz*==te`T;Lg<*Np&bOlM}%|#emA84(bVgctn(lfmHXLt@NT9&Z|gRtAddWfkM zLHKBfeL$Wk#KgHuy3nz4uro-h#X3l1=IV?H%9s56y-}0(;=X>fYY zJUz&!dZac_EDiVITFsiI@l;LdNA(A-o7I}1CwtMxa^^u6K&r$mCmYA}bvgU+A9!HQ zf`q!|=YKX#MO$Fc*q3!9ikAzW3l<8&Y*Jbiv>&dD=|hk`i{7w(ANc^z@1jhx`sUR!vW50EWyf!qylv$(E_AK?R8Bc#avCT* z&j8i|Pk)}9Hx@I0R<8zpHc;se_fl@yZ5YpPvOlhUV+lfFj(;Zo^!Ct=8!XlqR)?E0 zjJ=({I^K+Z`w(?&xxgFNz^=C%!rtowf)A9eypU_p*7H(eJA~C%7_UVt%rW8B=4gsp z1^7r||2B8dlQv28*cFx#V>6LzccSyu?Wi9l6Mk>_bz#H)+}LP**s-|H-l^hDb(!J` zpuVI(f+^)^SFwnWhL5p{s~n0^{6d=c8R-iNGCT!}lKdHS zVXiIA#*=k1V%=y@Hl!hlg_^<1PhRJ^Wa+RA=?j}NjYuq*9XQwAUUNG)l--clSv9Hd zX?U}WR$VxXwL_5^1~WRRcIb1>9au1n7RpwXyn97PxOtYW9N7D9%DK@o1-?>j<8Rnx zWt8d9NO$dlYgKTfq@vwKt$DN-INKN;ULCue>=YZ8!|MDF# ztuv_0Udc6i!|@NNa;I7Q*O#1$ewm((BSHypqXe z4b+-ImurytAmTk(Ps8VbSBndr{m@O*a#=18y~MX;iA z7=E>LJ;TMy5tWUYhzWg@)Z^0vHxXCtGSMi1Yk<2%j`z{q&!I;=?4?k&F_i7VM|b1% zO)B1)*;rf21ZjjS${uOMuD#N^GEh*ZUYF)r$|XB}%wfGy;9?+Q&n5AJRm(qL^fQ_R z!Z*xkKi;A;UdW`!7-w)&8|CCTLL9MKEU0~LkN|NPX}yNYGse1QT2_dGpPoeU$=`r; zyx)NJfUDkGwf#$`ShG_xb9*8#aiI?g99IJk8ezcUFv%tO(8>5{5Rm~yC!LWvh0(Qo zOLpbC|Apmmz%9yez{&UD0OMN{2O20UId9EpN$TgqfY@2Kt`}jb-cpNO84?}9SmFs` za$d}5fLK(?SHs@IPp-WNtBH345``z)F$(+j<_r8hMph`M;*Dg+!*nU=8{LYBEyW0 zuO<@8X)u7w4y}sd`el3PDqE_R&^cpGQ|FltZ;-M%@6u3KO8_~jo$6Mac-NMYW%y0w z312mnILnwC8Y6wT*1WU5rNKeIY*|DJ@vDHL`M_OVKrp2ubRj1xE@gk+iHR9uCW@ zYODn{oL{C}h6A$FB1tw~dIt-Wup#*P^Zr0XpG#>k@lV5WumBmR-L%bEO_7ln+p8!v zrVUL?I%U|U^U`w}GYWR5t`?~h&*Eyd0F*q0%lBW~mx=R#11`N7e*-F-5W;%?hp(~+ zDt-e(A7g(5mJTW&8{xr?r$)a4^67{-cTfI{+{-BY?*POeu8SpC;ANxGtXI~qkEuh2 zqDoO$iBV#`7FWTjy-269Sg{0$y`Cc1MPa&KI)hTagS|A+6{~lhAl_kVLAAAK4VeoPW}J61n{F4KRLzRA^NK z4Eb2-gCoO{(wNN7_#Ia)Px>NL?c^C%?p2oL!$M}g_>kJERY3*ZDq`>TcQv=3p~MNV z*2(=hlvORxQ8b|@-Ny?ERqY~agPEab6@61kZ1m)obq;E>JR;CDYJrAja`(^H?IPY6 zFUO{pri;I=Dz)ph6Ph__@>TH-w`e$`tJ`=5HU;MyIr-feR!rm0cfT4^)|&2${4}F6 zPg8qT)#_a08^b|F4>;d0Qzv0%3~ZEU(aN9DVi9NdQOY>YIV1T(Pz8}JtqEF7SoA@p z$s@9cN^_0e#l^)$nWz~TmivHgae8J-$|zEUjNE)O*}v!4OLR&}3Y+44%HDlIVxK1!H-GHdHh)1nr|MN^_;RlYlcaIJm(R!Bh7TmPJaJakGia3HMo&idtnR))r7)x*~=}vI6yW2BoTO z^*xS)^Dtr}LzDDK+)g*b<6K$X7;pQ^-UtlEfo={>S6#_W^@;^lEEiaz_UEmi+P*pI ze(;)WB1~pOyHw+I9~l@(^wc-4lahFOfg~bj+qh#~ea=QVqj`$Dk{6M-5_#DWt#dNJ zE4)6vAny1Z5ZNSQJC?g{e-&l@Bw|Z1Zt6ntI}5FPw&pMK==hYC4oYD>jrhd%vW-?b zV8y;~nZmYcYA@IkXo<_R&2VOMjI|=q@Qt75BEMmU(at_A15X*FJHdMY zN;v;=7-XGyT;CK&w;7jrXRsAKM{KbGlDbM<N&OVf} zK2cms>VOk4TMao{kLfWNsR$Q@nxM+M=$bJ(lN4z&TVs*g$_ZMKn9(W@D2U-Jk1#cO z1T}F=Ti++{XDAIH30dvY{AEx!E@6F(CQmnqM%8?uX1&?ohO_vRlE$37j5nj~2xL-e zN2D;UOs$D#L=A!6>Vq;!p2l3(G^g4-e9CuRbpr%%7}{mLY|A;~e}(361n0guQ_x^K zs@KKkOJvI@Ml>92^2GZCXMz#E zz1`PJaVi{fj#i`Hw&rzO>H|;rNuA7ks4vzFq&@jK4yw>=vFat?s07FPi(aoK75(~o zA`TTs_8C8JWv@noZhkS?vs%>V^U2f_P1dp<8Qh_?IhZ80`nr*~1n(jwa(;_%IF$#P zhh1-V*UV@+0Cq^khY1fBx)WC$aSf)h8J%aN`NqxEWoaQ>WnxYxj3t6)fPb<=&oXgY zGlbU~o9i){yMs$@o9}+@M-qoCR_8OQwP5Gg7Z+>N<=z>9U_^Bo2A5=utj~8bM0f$r zYv3Ar`vU*E^0q8#(XDu=*jIv9%hEH#)6d=$WJY>$)VB)aE0+?1MJo#mWJRnWLa>*q zD4U@CBT*p(_{C{lcXgZW`-TRiBTCDhkfh2BR0YGy9*Tn-=da<@&)cz#9Z{0e-gNWA zU$-Hi?4A?KR+?bP+TGdA!B(rB`ac1adi03^J;&l0kevlGO76I%Z?%SUTFhVX%-$@b zNK?01&P_TQnGtW$IoeAP40Xm?cS(hGo8%eszYD*vB;P%cL+%Q$1s9oTnx(T)*Jc^Q z`XU$!M@>AG6-~{SSZ*XMLZwnmJgT9FCWxXwgE@5=L356Ie`P3mS(2KzM70y{Cr|Gk zUdI)M7RH_NY$iXZ6}Cr!5YL<$ciQ{$9?%E<@gbv|gDjC7uO5zC3#;Nn;hb{zf;8`E zSO{dGu!bXZ(5!^n!}uO&lx_v<{Oy%f(+8=N<(}?oy^(>`1edT0NIMX1H3<>a$UKDE zubW}(>1$ZLbH3k%L#xggO|b%blat<9IDS-K$enJ5#|yFJyq7KKYMshr=6<=!^}vsY z^rN-JdG?ZLs1(_pmd;umxRQT}vm~i0#_Gggqa#6uURlT`y3Hn6_eyuO1j^0qYGT8M z3oW(XTIiFR{k7+cf1!&@$}cY^K0Z=KkQB6G!j-2tB%w@APSka9=uBk{jynD3tl(On z$d%bc;vFu}<+q-vTKmu>IBgRzm!D?_lx`PRb6wLIkf9#o8%?A>Nwe^@u#sxCG)wu0 z|1O;kQ<`X-@@sebJJXaMC{0`tZUD&{X511gBxZLv@X_9JKI! zZnU_8oB<>JM*88%pYT=N_8mz2ji31=@rEMOo&7DN*`t2y(^AQYIq&uHBe_2I%P$|H zfLH)+4L|@vx`rZw8k0!mBRM7l_4DnwNQ*k_WntZl06;G6U&On=Jsdwyp5N5ZbvS#< z9$XYO$IPbLJp{Q8;5s?ym2QLVl)srve(aTMw1SJF1id@yr04vRsLjQG?XU}z4psM0 z$kP>>?C@2=++sc`WpL^VuNsSviT62SRVwBw32y?1P7{3*OV0Hdqamq>ir-2xxmhdJ z3$InhcQiAjNgX(*M&QJ>iGE^J)D&0DKDF;TaTqd`4Ubb`2)~s4 z6fYSp$DR<}!xsOq!F^Pkuzx{IIdJ4_G=7a0gB_hwG;v(=zgo_a8!kjZjqo3EPu_=JTqQ?%B&p zfN&uW1XXxhKJ~am42_d-j}cycRq{9~;gi;Jlv#FeaLDQ2UrxF^-!6^~z%f@_9yR6s0^4+*3@8=(cF}f&Hec4D@Z2SOl+S1Lk>Ffj zy5y^k=gIvW6_di=6P73MIn~{RrYGCua7*xA%)Agb>CAWU_T8mgvRGWi<(U}s-+;jO zAF@7D=RkPHV7l{BBl>=FxWe9Gf6S%r2J52V_^)sNAU#?CYI_R5^~;!G#M(-%^P~Bg zK9m>7))KeTzX1UeJ95?f$=usZPGqyJ*xA#`V6uaSKK+J=yj9`WZ0b0z*@_`wEhN!+7&tvgyn!}8pb?bw}s=%70?g{~u&TN~=a!*SsDYKp$YM@Qucpko9615_n zuRrNW$gJpdMmWZZL#X3-0I8y0_Me>q!W+lQ_a8T0$f)Y6YveQFJZVeYrn<)$%_Ps` zOq#_6!kaazZIQU0AbR{7Cr%jVNy^OYe4pUF0wGp>HfcjicB={+p9R1<(Www<2y+=| z23B6i4-dA14^?lQKoEPs00Q5^!#tlp?)t&FL_g-X+K4rjD8xLNFo=+ugz|UYa~a7B z_DP3ehcfbh{ShXkZC>(DVzE?&J)d_leo6!o>x7|Eu?RwqS3iYfV!ieZF%k`11K+|< zjUUoIQLe~peCWvja&Hc85cAqH7nE+E8TcMP@iUcHezBchjisBlv)GO{ZG3?0(SImo z1%80n$F@7(NpuGM>p&9vmmm8g)mfizE#5&zZ#TCk`V~sumMb?hq5V}gk1Kf}`Nl8% zxX*AQDwPK7$tj+`)1&h}lzZY0OEh}W0S2iF+dgAD69Qh9@pBb!iEl@L8u~8=eVNWv zc_v0?yXW^s29jXFr_^e0PcS$og7mdXgb`QOOUYk926Mecbm)aYzH-(}+^Nqik&mcT zCLQRTcg8J$?R@t1UL=qnfc(~E|tH<@X!HVGc~8(Yu-mx zRZTg(pZX23%xjY~xRRf~eYXxYMdHAr!XWOkR97y~=zTk4P)Ma+&$tmeb(HK%*9~^c zp9@cQjx9}feU~K}E=^~Ht@$}t>orB;w=WDo#l+R}gbQn^T4<2I$HkcMegt6u51Qk@ zNRa<=Sd+N9RX%g5BRPFC6MjzeyhuDRP!nr%o8)eq5%;U^V4SMO~Qdvh>D9)On!K5mefg$EJ&u0?b znH6uUt2&Z{EgK@c5~CvJ4(s?0aJH&Qzvs$+^!yF*s9k)MSGk_TNzKP`|C{gL+V*@vkK!GlU~F7+Q2|7^LqE_6JqmW*9H|3gAblW0vs zH!Hn1;s2xcXYuw)JyMapf^{5B>%R&8qZK?pYma!NTqL?W{O`{AcW3;6Ix?jBsqiQYpi(LEO1BxY8Y#IQX(16VnluOj38Bff@L&y&5blqlsgL2{mlQ*4C?N81#i_Se z42&rS;^ZXju58C2ef3EaKLXwsScVR!23L18n+9P^ar_2oB3EP#c*x5!tz-I&I!PL&=hSZ!PB<4w_ydI4@-9$Oi&#|7eM*JorXqE}CJ)~1*GNJa z2!xW9i_2z7z2}#U=O4hxcX4)C#zc!0F-L{Jv)WuQaQZ}8uj%?awP{qvPTFnzYf@Ta zks%eGCEV(6Xmr+;JSKS@Gaf@GkxJ;}*G!!<;@tfn0weh!l&kR|$rOnZu$chgBxp39 z*W{uJouEb73_8y*#)F#4?T{L;+Z=>LKcV|-f^R|-N77_UwufTCD4ll{<(X2c+Uq7) zuWqk82|DpQC&||ub56XrZ#w82-1d|Bs%;p8WQ|_;isu);NymMiKVG72mx|R*3XJS} z+LvN55MaxSdXpLpZt#pXVSoHN6Y^Gceyi!)lf0%z{lYX?L#_(KtKw7#KHQ1h&^M9$ zo|3gXZd*gz2k(f6!Z2;?>ZX5R$k5vCn-0fmpWI0UqFN;x4 zvo;fT*EftCpB}@QRDiWT2<~{SL(nQ4 z6;v*?v0~P0c)0MK#kF(Gl2fh0NgI5(W-;r%;R^lMYoK1JuZ>ENBN|aHP$g%#WIGU! zB|l~z08AX4BwxCD+m2ay!J}Ty1UR`^m+kB;%mOhR?0Tp5S!SNm=*Oxv^VXYwnQGRP z=SgPo6XSJwY=;W^HAW9{?jt4HttVSExXV@(hZV9>1%F+mX?~o%0KKqOed(6RVSiOp4NrslimvRr=WZ z%N&)d_emQ;337gUtVwRUG>ojz7l3l%Z$>UA6?B$oDW+?`R3)E5BcVk7x5MWZS?W z&}j{+#uw7Scqx{PvRAVLzz4^=`$FZk-EPA~8IZNygryvj{StWQiIB$)8ksF8oMcwm zXHUF+XjeP&He{wwGqXsGVZoDRwwDj`ac2Xco}}6>tsl_NbD^db!pE9sEsw0TxKRgF zv6H+4^#v9jxeqfxu6NUd7E4`QziW7P3 zVmFAdctnqD9XnX7^Vse}FD`_Wmgnlj(XrhgYl^IGYzLX8>b}pZA4c_(Y&+y}HYu+W z>zdnZ)D3m0WK-q`XX}s*hH;@kiz@#9){)DRn2RWkw7fHZJ=&PTfP=@OurXG^8`oL< z2E@#vd}0zYhU2WPQ(aPI1RtsJ0XquM&Z6XUiCN#yUznBuavFU_;0o?;V;XWMVB}C_ zx1tH1nY)so=hSvG=|2@Q6-g*HDd-;%-4wyT=@F!i-J&$(bFdde_9@Jgi!|n=aL$$> zWzR1v9&tk$X#2Es5g7u39v}~KTyNARlN!{eZiP8c9NSgj8f$*n+~sN=gi@}b`@FQZ z(&J|o<<78o;jDEEC7!9L*NeV1f;;isEe&{ZV>yJ&fDwD%`Cym~@&LR&L z@-#AG)^!ErEO)?8X90(F6WB-|bblt@Bmk#Zgq0IJ(&)iwcJk~3g4>QK*uX;X2J4gCsENUYfeYEBUon7+YO@Z;) zEj|^7v`yb}*vjEdhK!OFmW3~umgpSFQ6YnIzP3y@wUm+ zp&6x~Kx>j&1Mzp8sG5SCX^E zsQtk}a*RF^pMMiewJjm2{?OKIz}Q3u&L5qkIYn|5{+yFAErT)H)&YmJ*HNvcReHmz zFkc00&hZd?8F`TCit94Ex!iU?I4001FbKLgBb(oJ+3T^c!-+MwX{aIHCn-Hh)lBo& zW`N7wx>k3ZIGyGt^1?7v{-+ZC&R#YCtxe-wJP8N!eSx!kjqS`CS6ykOX$~i8+nc_f zM$Hlg>{L=(_zgYIws4eJ-wI3NY`Dn;h`?6UmEm5IqP9G2%WSo2`-Nv;}ozRdGHk!z({_7_ytfnVj9CLj8!udz|% zuz6r4aOHPIeaw`@;{9*f<84E&K4A6_x*8k9FXpSVcRa%=-uIys%o$Sj}ANoNj4 zS}<8DA0XNGCW<5MmRlj}o!g~Hf`pu+^*-?jJnGRIUBApIRy2E}7+3!Wq<=NHb{H5& zr;d^<3!TA@W7UwA?G+P~6&6ew?@3zo;}9^YR`*!yD*)Ek)5d2Ql$({GO810b zm@1c1@I5n}PQE?QOTaH9JZNe=!4P>0>6Q?XF%w&QSfchX8QQS>6s+48ATRD3thr|0 z*$UE3@A1Vz`{bWqMr2BD!XcR}84_t-?gS zJqc+MJEd+^}@F##2BE>#;O+u@_0oDQ{)_-Km%LXMJysJo}8Z~HR}Bc+Hz zz9eY^Sn*i;+J#J2H%}NLXr^&puETcyuO!odrR@KZGWv52?y0SErrBY_5Hk9U-iFbj zXY^NxQ-N7exS!9H$y$(0RgV4UH(-}|ljTELRpc0Y;yMt9Ix@ZX(jnkf)Fkw5eaK}* z4O20cMcO4%N+j`9qHLEEM?w)rxQ#LInl}g0X*$A(C7W7fvTN7TUwCDbI4m!pzXN<> zko;hwxF#lmz`KecJ`vKeE%)8RvRN;ifAWS6d84YoWPK>?XBuZD z8}Gf`9+RSZB0S%{7ES-~y>WyN5qZ8HAKocnsSZ^a1#-Aj7ZemU@ePRrO^K4^&N_Ki z`!jYoRi(w)pR!4Ka&6Y%k73dQN^*etD*VWbScR@DN%+B5QU`>adWVWner*W*jpHLj z+UPzB=$>iOfb`Ftg?~h0e>Skby)M`B((Lefa$H2F^zc zgP7nFh#jyr1Q3h7%xe;T2^tv|hj6Qs`25tNl0H%A&ev3eH*bXz8^VLRo(kjy{pFcR zY!jKQ1h>mlbUB%<&WIvlm*XO?NC?}<;bw;w^N3MLYz;&-I(&J_HVIU{2rpFe5&Yv` zF%e2a0mP+08JCn9mvi&#r;zTS|NB<``Bni>C#v7n{b=eAU}|wpg0zp!BwR$SR)?l4 z+%H8whNd=4AbUxBJt@RIJ6?LJeJXyw&<}3qWH*WJ7$~ppDZf4ELbD_bj~Jf)ehLCm z-RbxpYJ50j^rJ+ZC2Izu-w&*O4IKZpcU_;RZ`XzxU-|351zi)9VS_Z+F^877$@z6l2PpyDds#~up zH9MyLL_bMcVjw>6rzN)x)-@`1`rBmYhK_IP4HA%i+6U#Gy|gr|qFGo!1tZtq6n(_Z zgas7^)z)r|vfRJ`7J(4MJAi81n_&iTIRK8}XH#+#GPewGQ>>j~%N|xR6eRm}z zDlf|4+`kmY#pF4}pSXVt9TAZ-cXHm8jh`8$awTfZijVUdpDmT|$)nM#t=E9Y+ki8L z5W7-rx?bBPwXv*4wy?hK0k6fON=q$S-SVXWm`jXR!L zM`K292%n*-HZw*6=?Ua=yBTOXtejcmNpe-L?3hu2Ip=~zymbblTi^}cV6FSQQVDk} z9JfGsI}KLIBwV$dwNJ=oTnaHVsVK>s8+)n7Aig4_?!6;OIM<3#HRw}_5VPfMxL#L) zt<~)1ZR;NNLfsY)r=NM9{vM@vj!zA|p)D&S;7i<8o<&|QVVVDP+h!9-Q6pcC159di zRp5kf=oI6iuG%O?Tb>7L0dGKZs^^b}XC@#;#p97R(S3z-wynI|u6-Y^uGHw<&mhc< zds`DA*WpaBHKgW!6Fa4%pO+cNMOV63u8d}lt?-S8IA>=W4?UivBkK7*45gEj3O>78 zCzy|Y!SoFkTIT*F(5`6Sy0b{{2YxFAwj6cg8j-+cjYUIO6*AL zdh^#&raQcR%l%q*2#sb)^+Fj=e?)%HD*d?1C^xYQQuy35!K8W@6T%MDgd6<`a-&lf9-}+@iH|eruhv(q<;sBgp$@ri@IJSw~Y$ zc9Ttanl&#)MvFtBiGypBY{+T7uBY`Jb_~tt$g%jA-uK!?w}JqvvX&SI>MZ)&jNHzi z#jkrWWKKI0k}4|e?BLis!_5&B;k-8e1NiA~VtwF|aX9#@>;q~`ZrqG_+i`j4-lOr@ zD!G-mu`z7EPAgcfHc%HBMd`KRSaqZtLH7FQk%@s-y^W8dnr%42*&selPfJMJmz0X+ zCvnqigJP!eHIjF=s|3LEq{B-o{b@hV%IG*Fplj7m;grOLDjd0ZprbOVvzu0aU0GXK zvBab2rZJSx>!Gm&rIsJeDVXxal@_2>V8s>;rv)%tCi=O}+S&^8%9w_g=TJPM(~r#3*%_?1fD8z| zp(@B72H3ao@C_GQ>D}glju&A|Eq>(Q!vf8?cZm&CZ)?w8%A#R ziFGkZqSw^A~-6=R{P)*uQa-WmWY{IECMCo?gjh`AnYReT_o?`k0oO$>?b=JI=h(Q!urR71YWkupn*}2NM zdeMSR>%cSPiGIiUWZ;=U@y|v!n2z~}Ui|*3e+cF9$8mL(nw|#67y8lPefK}7J)V^O z2E2QMbxlA_M?U--VavXHqUCZttSdhnI6vZ4BLn_3>4bcE>G9`hwn=ch&|Rs8YpSm` zky>J%=H*Dq?3=O1B*ig0?l~Tfrsf+&64_h9OPnZc^1Q7_h$*tGVyA?#4t=CCdbv;L zrY-|x92Qn|!x>X=IM2Kb7hL1eAC@z_kXYuUhC5Mjrdd&29`d0uaozw`U%RoYcDUA!Q@k-(TBB4e+Y(e8 zu_vof=t&Q=xx-^%)YZB$jb7Gzh)=Ty;kM$L4(@nOXHl-x0E2zqvFyw6t0XAML}ugf z!#hVRPBCsR1r^W-Lw)RA)$L!oaDUH+w9fO*VDQx8o-J|cR>=I2l@i01E)7$xC#An7@OHDLcQ?>gJEsSrMkjq9XgS? zlcWi241#dj!fItKu92ghxboHf(AeU|)sfrf*{naEhGSUkhJUZ-y&!;QSO-6QPv^U< z%hrX)xmEr3Zxb^Ad$1<^x{!$M{wc)VO!-*>-rk(<|4y~NTe0)A#zV-Xb2|dvvUlj( z2H=?*gProGVqg|zx)7q);4Rp9Dy7O84~~mFn<=13GraF~Z3wlCi_Lg1^JeuRj*6&> z12^?YvW67#t)X_KDhqXra*h>bK1??=u1o`6J0miKnk0?5i@Mg$U_3h0h~1584=9Bn z+9)C%mq4LYFGI`1u@#fSgX&vy#l798;{oZRD-K7gpGYHJs=R*H2bvy!s66O$n%@_m z<1x~AZELDuNGV#dN_-^^c0daNyu7Yvl{&b0GkwsG4Ue%0-! z5u-xkOmo{%_Aq5MS0>&_q5w+w^+fXNClgrNFlI-M49>nOVXo624v?~h>aj=1Tlza& ze-Vk_<2N)rTqCQiWw?)(fhFoLe4@&vzV8##oODU2E18ikJY`?kSj@p#4;NrjcbmCn zrGdsz9Vv+|T;FUGG8Y;B;I!m!alsvOTX7TZJr#u6+%iD+=H-FO{KKW)nhS~P6cnL+ zY?is27D5VW^2(6f$B$H?3MV^Kffyy}k52xwQ}fo-8+3!;4jJ?&8b4HlYMmm=-q)DO z4_CsqxEh;;2Vb-{n}%;@i!%sSbp>2{+kur`2j8?BiXHswQx{q<4EA~tJCYNYjq^r# zm~UDxVI?BM;G)7aZJ8m@*AShfnfx4(ddSq|Y%an@Xp51zGZ zGN5bV+WOL&QCwoY+-o!Da=iI0Ba@9YU9ka2*$1sL!_6#@RV`mov*Y2%y)2@UQ-nYU z$WPT{mxz5!i5l%h(9Q^&op?3pQIX--s=BYRPsCw^>YI3>9w&4+4Yk;mPHgfc5tkBt z$eT^#+-zw%8xb+hg(0lk#Mr!)vArs{_pD^l)gO)TF*uzZz)=1dPzT_3-r>smzWxxh zf5?Go44E2SC0BYatX>m7Xuy-Z)R>-V`u<}7nez_8#9?f2PUObcMFe<6IsMgn%ueiN ztJziaB-za`GAQaCW#vNB!%x4tJrLeQ-roK5pZNz9mO@S$OoY`KzZ!cjh!aIA+w+YQ zdW~O(f%{EOQoj|FKJ5glW4+0hVPYw0+zboS=dt!00&8?Rbv^cDFXi!!u%q3%1$OUK8Cw=g@mo|;2p}ZN77mcm zmT?J$3xX=uv^U_ITJzNp>$4a;184FqO z)DaOWyyz-vYuvUjW5YCUR(|G0$JbYh^FYlCSQv5b*32PlBULO?hJpM&ytikBCtR)r zTQd)#QL!82^$m~5%3Q0vY7)zjy8b;gjxg(H-_xVh>jERE?kBSbt)q3>;h|Z>`O$245Y*jA64DnzT!KKP9d`4V=e>fjyVi`3}i z=V!@1$4=R)PjB@8@A!TLkm13A|07Ve5)bYmgV*G-=<~FmIM@QsR;gH7z=r4U&zhUp zaZYqBYPHXJzuwvCYjXtD%s}Jl&UbN1FozYB?D=%#FXCbdO54??x$O3H8u`bM9`uWS zrU#ufu|!8st`yvdl%#W%yD-Zbur zY4gvH>Rj5RFZa!{9HG6?1CR4d5qC~EBqm>4%xe#QuGS{@2Stfj0i!u%9C#@|2;!hk ze@Fl7jGpqgJ);p1g}+Z0?swRaVZYows@MffOE=6pdRwzu9JCgXM2C!q`Vvu3JoajF zH1o`|&1~v+bG^?$@KvjcoR^lYP16%D?}D*5w|X(F4Q~mUGUM$o8Cgx#G~7TlDfMDB z(-Xqd5~B9j-ZM$JGRUJbkIL$PiGO{rue>xNH|r3;V*dxk?N3ZNUAH`iy2YA1DW#m* zgN%#*C*$rvnR0(()M5NJn*KLrIK%%N&!9=aYpg$eC3CO#hVEr2#N1SVoB(*jcA(v6 z@?gUr=LuY$h&xj88pqu9D9)b;qrbH)E%hIf&9zJ=ew$UzfSZAa`utm3L)u$Q?Qcf! zphRJdf$ZLZRXq#9^HLCjP1~D2=3auDiFvFA%tMR$cavO3Hb}dDJZ`?Ga%pNM8LBP^ zcGjUwo(svoBaGTFfiXb^@L32(?GK`LPCq6**Iy9+w9Cs8Y^>U zy9o&94E3otqmCA%^E6nK7&zRV>TODs$TDiFNu9Q^d4M6w6D2|WU2a`kbZoyX|}k0AD$=bVwlAnE)gz3{i*waldmq$~dyt_b%{ z^Y(6cxV;fcbrY^j$if9?Mz9gK7H-&Fl$*)(1I(miIRSaGseR7WL8i_9!VyY#7eY>> zE1FnVxBeY|;;da(a$ouxZ@D%Icq&e%c;LK8k*iTEs7TEl=^6Vn=vCyN6B70V4@R%e z4bvu)8>W;&0juk0)lL2IXV=d<aOM~@7aazqo~~+^<-6i zr(mWino#2B5c_ssprAC9)xpLW>rC;C4TTEyu}6_9KAT7v*r@(OWgt`*yRZqJUGufK}?b zR;2|b-bt>(8G1q6q+{7qxl9iKq;QsK9m=#lZgrGOvr_BT>I`F~;?%eiob&#hKd~X1 zWjbo80K%`n6E4$w5`FEW>&rOd>dX9YcchQH3`VWA90;Wt#4UTH@Vp!73BQ zt>ZeyZ0%+)r86OEw2CQ=g+p7hb~kS_tEV!!6?X|yh`nd%tS|X{Xj<1GYKBZ}{tV-n zM@u={o3#2Yhl}~c$;QgZ?*uU6jJ!8@B}CZ4S(7YB-ENeChYXLjsKON8{K%a%7VHWYfzTG`5}vrRZpqHTK0xYaeO*`Dq7 zH^q9>@_O#VITVI@mEEjax89Fd`N|fm)oyBGCQ1jH>XyxF;skvXeV+ZAOB9iRpg6aT zM4gqi#i{f-KR=sgOI%rOu!I0lKAYcRRe$9V+U1|@#1fV_@!bkh#Z@oIME?=>5RuawmsXn5AJW&4|fbaQ8P>I%uQ8gAH;@5wW zW1Jq(C$>l)h-aryVlKn!&{ay;bYScdF2(J()A*^FHBnWGOVG(fVobTuy2rse_%){m z4u1G_?=tM&TU7V7>t{z#n-H~`RG)_50312Z#n68T)e!`H$JkPjz8%s?bP$lsu{~9LJw_ z;A#PJKmH#%kAIhQ^)LI&|Fy%K!M~(m{Y7wlU7Z)eNYeZ2TBj-c-NC*iPqZ}&+>tMm zpFhnn!#J2o0PpNufWYT| z&8e3CLP(2U8itY%DiXD-9d%ry{L>S5p!fwsOFmJIv4s%Hp>0_ylV+*jKEp&6D!+yY z-x&vW?NL1{Rph6+wXIwd(=OvH+p17D=$kCi1>`~d3v~(e>djL%`aD@V;W1AP>*|?{ zq2RHLi-z_-FOkdH*s)LltN1CPPEz#JvC17SCJV@)X&*U zsDe4xuZxQz0xfbvf-;PsJ>!ed)>Cn3n-HuG?7~nzOY77rb#~zqLTxkHudNMDwkf7E z)AG}(>~`-0blWD~q{6ov#Fu-JU)9_mFxg~x&Slrzx@xnyv~yfKHh`P;4>Jq=Vm4@u zjb+rb$|^0I@Z`04AIO~cu`IVPx0=WGm@Ty<^BQCK3%}Bfe<3-Hi!f`i9Qt|1^U*)YZ*-+>0({iBDYh(zKC_3XF8D zbs1`gYMSsKF89PiethQG5rWoCv|M>*k3YB@Jjtg`vo(l7n*6azqr)rxkOcwO?{g0_ zhVXI?`9jdD*b5&k2xA_F}*?P--vFWN$NaB zpzZIaS4bbO6TRq zFIK%@>8S?TJi#JODb}a>svoP1^PGvF3I?Y1vPIh5oZ4*jjfmLajpW>S?cdW_V2fav zEcdD2Rp{Pf@|sdJ7uzs0k|RS!d&Q(a9ABcgU>%&fFzGmiqe+ zJ2Fws>G#JkAv~GyJHZfLbyw$0W(BrdH`T4-&E?_s`=B6f>+O1tv|;^NH2TT6u}X)i zuta}rwOWk`Q{C8-E4}7RYWvMV7>>~XtY25uedRc{1kI89?gJ}HMWbVT$<+QRjytq# zrbdp+X|xS88OI=)7u*0_Kb?BlvpB72M?BS3t6)#@z;Utq@-@}uC!VZ>F6PPFj} zPu~QMeqEFQGM6|a@oi-MLt@SJ%qGkyU8jE0Jz|!eGW@8XuDkHtq`Zqh2u%XSW6I&N$gsv3t!miCkL=uHxPu(N_t?!tVQ7wZ0@_(>GB z>iI0Ar{>_Yss$vll*<=0Mr|H6|3Fz?%_A63tL}6-4LrtUxrM7ImvxSLtap#t&(|77 zv;@3=(CctsU{Z?oif2-@ucp$Hum2cf+4^_AIfaLDpVNHhWB1@RX|#*hVa3ra!on`5s(UJ0-{`#6SV9$_Wvbw(qU)T|3j5f<0kJw?Sjhg_1#W-LArk*r4ft>}5s^>oo3mB? zE--En(>}A%f;y9;;yBlLo1N5>H)1`~VDbJ$uB`0|pu^ILvR%F7bNats(p(Ss-DX`k zMpYEPFUY!L$o-HwND(U|e4vUAQ5;(2O|vQuu_-xS8n7ad4`Y(u9%E-9ht<36YkTKo zS)=earW7im`GsVxn?ZD&>~yfGeZrab+E_*Pf!svJxk3EhvV$1!>-iZ<#ZLRWdcGS* zW>5jE7}oS~A`MOyI)dfpk~dEYj5h6q5JQ_&%(ciuvrpf+?9b{%%~4 zM#cUShOgfKqj2k4`=bh~>2z~|R~ru42D+)IF$R*ot{9p-{cr7^bx<7bw(bW)g1d#_ zZh-`6fZ)L;I1B>>7~DO0fZ#5{3GVK}lMFV<;DZb#!95UM0=cvIseAYLeP`FX_tw7q zpHsJLYHE6_`t7c#S9h&m?|Od^vUpE@qi}vl@6e}-b?PkjbBwM(m5~t@Zy)r zX7eTbO>`}$HcEnXFiYpx(&`}1nT_F~qOt{v{lZES4-3jdQ*MgkcfU5?l=-O;S1OT? z?F7qKcY8fj>HY(;Z&>RZQF!q=7ikYh!_$cT@Qs0;fNq`t=6u;v_Uzm=MV z$h4}P{P-urH=gV2pu025uW^wxI`?Ovq792kaVjMc<=41T2E(&}3``tP6j@SEBwn+@ zB^Kd|@qdSg*w3T1=zqHQc_EhoJckG{pr^XjH;v)&#U&elz}A73MJvlE=tNsd8+ zno<*@j0{^gxSnqGh~THBCdTXV;(TKiXs&nfyqC>#TUX@r^5kE-*C+8X|D@!$H6>uA z%+-}%J)&1|u5q%IL#I6uj=iI=Rpa04>Jq%srW?ki|Y_&5l zhBMyY$F6Jc+faw^TdM*pM-@ljt|GUve4^~jSF>&5W(EUC!#OF`k2bs8ag`JVaiJ^+ zS9X;xo7ypl@n41<8Vr{8?6s^C>Xk?H2H;Ce*a&A^TJw&bC&BIxJv~Jt7w`>e-lu&l z@Q-XCKMmU@>z(vAX;CMG_5qj2{(~ucJxthfI-t_dh}m=pb(0fEN2#f?CQZZD^qo(J z{p>jApe>JDk2*yeHMeC>G*n;2B|czgJ>FBDYUBIH9sf6G7@jlki*?8Xdns&dC@h%=#Ew1(ioK)^qeO@>oe@I;X0#B$6I=&$_8#&5yKLu#8KA2 z-h1!(X&HN=QLccp&9%B;%aDDF3;DEN$@oBebe$*=+T4grl8%w)l6^lDpfcYt30iJI zzX2&?KhC{6+-|P1YCqSq5t4LdYRI4#;It6uOB3rYiMzwuCV)?y5o6C0bypwt*73*R z;-sjHi{EWjqUY1T^-nwac9|!49X)@gGRff)M@_}q7)G`L#{;iZ4Z7v}q7X7tP*J#4 zgj@b?0tZAQb1F;qpILwq>kl866|g*X_M+N4k1?a=oSq#C z5ESH|d687s+otiYjzfc_hp*YG%S9;aB67jTVJ~o}?yjBsI_WS_vxod!+j=lRR?BU( zXzCb#vg?O2t4{OQYbFD`PMZvB3j=M5rX4^1&X(Z`B`1pPc~#w=)=|XP(y6e>6yKBG zS~=5wjI(|+Q(>!}OG^Hw3;Q1~(K%+WJGC}LC>yHixf-tomc5yF`D+hYgzojWTb0ZL zlW@(W*7ep)O;85_vH#k+rMo4VK{zP0!(kL*wY7HZ9j%?$dPv`TE_r4UgpB_+?A=@b zHRcHE)|Z6=f*8O8{j`UG5Vy7t%vKWz>d%xY{9ov{h~N|9kMp^^o&6Fe=ML8PFOE@* z%)zDg?(J80{{G`0%}DFq?!3UV8m)IFjwdgwTLSWPFg;*$OZBgQ0b2UrA;aXRRsn@Ke2|K6Rq)MvRrvT4W7y+@dOKcKg4%{?;hN?En>W2@lQ zt3{~SU4?JC8dKOPCOoC4=iPX1e}#leDhqaJi1^Y?z8`m=)8IWs+)U@_rO)BVZ)2fc z45U5vm6t_b7t1bNa{o|?sR-@=@9^JCCB~Cp<>>=chJmk-Ul>)t%jz9<7l*Q|Fu9BP zq*pzT?togUy=+>MONxE{p=OIyJ$F6wA9pnE|B4YAN;By01^G1x@GAP+^JzRyMQxG! zmq_27DuUUOX)IMCqoFG4ZDYyQhsYc@3r%4P=5wW#-Akgpe?Hhvqn<Q^SmRIJqExqxebkd*)vH;4CIfmkqA zT~DxZeLN!>5f$dUBmbdxV>Gf?q^U?X$d}L8%lMP| z_Os244uhRs2}JXS51~w_b4)2rPO_ALIJqhxg;w~~G8e5tkhS2gtxTCG!;yibXd*d8q+9>J1I;RU_Z3zx z7PQq-;H~n_2dv{#np(PbPB-=h?6ath#0`s#Gr>*4-cEj5-8~h_M1%3&CSR7qZ=H^i z`8OV-Vi9m-Jh#>P0m@i<16ukkD?=(8z7%Da6y^RDdu3pX220+?R^>8)`Yix$0RRAq z002|~^nVKA`*-|#x_GZ0?}e-R@LWwbv%RUJa`Xw;kgS-b@@apMLc!NEuAOXpU1w|x z)95?0H1Dq+)VnN=i?xy~m@$K@m@dA))k0kcBtijRMSa+iMAejYk?807G3L+5MeO$C zCu5vb9hg?WV7O1=k>M6^R_poH4UNBY{C1CdZ$^s zagFX~JN53qKSPrt0%5+t7C-k$tUn%f+t~&Vx}p#rqPHPhrqI=KN4Y=us|*HF@D|t6 zxbcm^{KCO*`SQF~bT*>rTs+nGRkY6p5OH*tbD4|mSx5>Ex1HaBeA`7cbrQ&@gkzbn zSUk)Pp=cN`80Z8TdK%PG%x)M&3I#Et1Z&tB7JsF3{lkUk?~ty4Y121pV<;^$eG+-= zs%I-s+lpSSuy84c$AYKFZl<1gXh#9$>a{Xc26K4>^)}eZW3-j0NZ-V=ZFxi-K4D2Q zJnOP7a*h-(FH_Z@ZECY{?oW<}D9PpLX1AAZTUlX<&fsT+J)*yogtxL4DMqbbwqR>v z*Mt-G#|=GpjGnvWIBRV-Au&pKDsM??8#@r!_hyMJX^rM)7Z5bVc~CqMOS*k};n>Uo zwY3BXxm$GnG-UkZFRv(f_VvN=(HCR5OZj%bx1Z+4m?X(pk3cDj+ve%uHp^bgFk0?= z9Z#3bIuzs0<8NL^(`M?taZ>DlGPljv!9CUUM1;(J*e<}{{11VPyHd#KSE|0_XTMH= zOeo(kMowCm29G$$-=8n#|L{SX;r!S8^4*G@WSu5=y)%$J6JKMhvd_v{u`6$wno@G4 z=2_m1=zV>O#S`a;vssKtaFw&+_^7NYzZrHywF^d9m_Bn|Lt`wOTZ&0l3qMT6uN>A5 z0S`Z}r01cFg#ivOl>j7YY@>@+I7fm@Uu*>gF?O&&`z@m(vOy=Owszy{O&e6g@xhHk zr6eaez^wNI!h}4nww0Gpv$H%Z8gqm|(mM=RX<{A9{F`!_*RbYA%OQ^w9SX;@%{<{r zSS5BxG-tZdxW5q}H`Ot-P`w?`8%HH)v~kut^nxVW^R%=LTv-+EAiaT;ndzp}lp_!D zkR-+!n?mT?5MV1q&R^N#t%q_UAiT`%k4`g~2B-z+s*SYvKS&(>Ee#2#ZW3N;Q}IGe z#+uKF{HuM$-grzG?h7Ys?ahC|zR^}+FP=T`Eopj_tS>1h&;3Z-!o2j@{F?*VQ2jzU z0U#O!90!U%2~qQ?HQ15Mh$k{8*WXIjYFCsG1b`AH)S)Yi8w^)2n*%LZYm(2RKok>>mc1lUf|O?Y!)h zkiwr%9=;>n=w>|E|5UM{T|Lq1z1UO6OK4%R+a&xk4V#{6Iu~FTT0H!gj{I7-grA#Bafpv-B2Y%ruux^d}KxD@l30eTkFNGwo zaV5S9?WS8c*11g9sU)aw09dDi{ZkylLHhBN0ELoxa! zAf^FI-e#j)tAycqWKi6fVhS>Td07-(*Ey1Bg5MO8>?F_z9?r+s&KBMiiNXrs~U$|YDS_B=v1Ic-|pDrk*FA*nZ&o*%=Nm( zTW)S;;ka7du6H0Fyz%y=TB+*ivOROreOfbFx8^_ImsXA$CQp0VsY>0oZQX7k> zWpsbQ#nl0-G&EX^t@;T%zsiD#p@+KAg+}3(n2td%@@U$^QWp)M4Q& zxx@6cQ+#a;BEFT|Zn#&4Cbu>NXcPIxlOuU!8~J>}gE*|Pfl@7CSs`-AMKxWbmrRlG z0K!GQmYQltm7pAG?i0BdU*m5~#|aernYodHpnMa=u{2cHD=XEM*Lx3W3f|(&$n7#mve-Wm10P?mc3^Sr%lC zPKQ5}PAuS3!Z@Qr=dH~}pown<0SOvB#w-EhpPD+DvKzR>B}F1y4fCk*nG8R2T2Hj0 z5kh!Bg?!n225Pmh4G~^5-4z~G&faXFO3}CKFFJ=^*)fTG<~QEh>^`tU8?{i=#Lwz&~;BpH^;bs={y;Kng4yziK$IW34U58lCX-8X1N^)fg-IO$wxkL5fwSGr~o!ETyA) z9!`&EX3t>}79thZXn_{j%@LYLqDIAo&Qn^=WeGVP5U{ZOibXPnhM|!lWw=U~Bjp_* zfp%ucprqR#TSuL(hmr^QLH1S>Xe;@Z%wr-2hB&PLXF^FJRWL4iS}q&)l4UD{NhI?r zEQ))Hp17Aw!s4dK&IRf>IjofkR=BG88M}90+K0a{$Ef(pr1>t>$>wMJ%5Oln`m>HM z##@rb;I+f(-+-s@O@o3*q~pfwvCf$T+d6de5%e~ z*i`QZrdaLWxm5071oaiDV0!>+LrN}*oFFTzvk_gM8^-z1)*nDlHnKlqgZ*Iby^X%njC z6CpEpE4M1OR2>_+q4X0yA)!dqdP1Wh*M&b_nEd$i<6y*&lcOd*!wahb$^fbxa^K75 zE-5$Y_pa{~lhqSFd5gCRFQU)ZcVh44rWKdF`0h@Qu0(xBcFd>iZ%&JkdW92ji@LMl zp1(gfIkwr++x`kaxEmr2JqnYOt(Uy;vH2kyD0;*68}RBZ`I2`mIH2pEfUq!9rEede z*n71k^&{rQ9@R?|w+%eCq#puKTv*cY5C3^E`eqk4%128dWnhBIbK+h)hS3s>$OxID z2(<;E(q`;k=w@m^ey$}>oA-+MJ}FQgl8_Y#{(S9rrYNWSpv2wQ7C*k32jj;>s3TaK zUBGJ=9?8nQVLn~@(g~jUsiKmicPi!43EJXw><0`=b$V2FXKM=lrkrkZWrMDcZbz!? ze{bR!MV!~zPz?qr2*mvc;H^syQBh$@>OVD7;J2ZEGF}tl>92oa_}pTJEiSXkHkrtN zJVzHR8$Y{EMsUh`g={#5lPJ1OHmQ_Xvhd^t*+T7r)bFWUPOCbWHjS7({3O z6`z;2U@}$ZFTf8eDPD`0#xbDb@{x~&Kt?^0Jl1sSuL1Twu*5Y_GPUbxIl$8lHke1g zut%aKUoPgBdG`nM%kUe~9nt&n|J21K)2(>2=*zzghD?HvUc0wF>Ij&B5^KEg57E7I zpJQe7CuhpRHcknQ7Gssw$m4ofU2!Vqc+zz6)1G{yQu&c8Q}d%m>6uZ34WvJ3l&8=8 z*}AdL@#C%!&)s2h8X6H~u!;EzPlq=WBElph6+T&XG5hd*1tT+XMp>a?0o!r4UHqy- zc3V~qu&k&k!EQLF9#37m>($<>XQ&K8{USpsmLNkY0Yhyi01++GAgOWMX;db%oK7x7 zMhToK@x{uqB!*=$S-spnS2pS}>~JnKa9;5;u-9SmQ7%$ck87Vg?)H_q&o>E#yVNiJ z#0iq%z9RCES$vM~`0E*+rd0X7nMcn4MYkknB76SKetpOI`K>8do7w|oDcqsdiQV)0 z<*l2$dcyE^*!J1Y{tu79p!raqQ~+Y)%g>F|n?SEiU~iuTboI@N@111lZSFU-*6*>9 zPeM7&n~^7;@|)+ z~vllg1@*NKw3eXI!sD*fF4WUCa@zrxNIWxKT2)W4;b z%wdkU%o>H2xaQCR!PRW?8p(Pl=-j83o1G`GOHxKTVZ}u82X0=hv3cCXE?`x>MZ*tV zBE`P}@+%BOerc&fDd0-0@(SJ2JoloQZ6&@@8Z@Y)JQ2u0?{Sp$QIs4ef`Rd-s2uIQ zQIxO}Pr*CTkmaS1J{6&$Gq(eSkRJ7B%ZbJ4hn8FyHoQYse<1t$?9BA?yU!aS=uK~n z&Xi<1FNiAoJ(C7;V8keKuzFwh$Zkaz_x&F=V+j?&uux#iY#m6TJ@f$26lcry6Xh58 zql<=O%@VnDqXMP*Pr_W8N_+^`tn1wtnLm8KcIquW@_+>YmcrtF$TjueG?%S8tdXhyOmVM> zFzqz7EUj^oqw3zflITZcn(KVi`-56L)7!eTc8zfUPut~{<;VV-9@*|pT|)or!|eYm z)TJ;@4GG!(h2gZdy&D>-y5z2vPj=~KdOaaiY9lnYi~MuEbQ0hJUe{FpDBevke%&PH zmm1m-B|wVpBbMB^vjrI0Xxgp-YmL~F?mx9QKdC)I_^J!Ka9qJ;=4pi54vjwyN3JAM zF6zOCoc1+de`zFE>C^wvW@J)b(AlewoX>bfKrLXQfWsE&-)^tYX1((T9&ym}&aUin z(h7EA{nHXfU`Y}}tl*J2js(uU*lM`Gq3hC59XbpNJ8u@%Iw>0>4p))4n4q0jQtkWW z1+(7(SC-)KdOyqVLBC#mWBvvpLQn}66hJs`vzKmmELeU<&G+gqNAXJ5C-T`Zb(wUA2SFa^=C@xpZ&)5ybKfNY1_TP+v2g(abH-SI1d{#F-?1Qx4U`?N z*U(8k6y>;BaV2apL_&DCl>bXc8$gLNX56KRo(7L*>V5bP*bWXc{tYH^%R~Wgs zUO-uL3Pp?qFbEOpF2|1fr?$ah&7k|Ndk_Fn^?&4cgqmz2l<0bf@|U=MaJ@AD8$cTb z;3J$*3iekI7H6wFLQF}08%05!_}fDY`!0E^`;zzjjyEu!0Qif2^B!is%)z3Ym7F)z z2AAFRTT5>NLWnQ_F@J-gPouxxHw-@RQv40@!I9ErAG)kVnW3+qo851D0wB%7uQE}{ zx!{r^!$bNx#@~R=U|5>5C;%-U@*fZ{ndku2=`2g2R!O=12J``*oJv(f@6K88_|eB7 g9QIvye>*cARp&q5ps{jB1 literal 0 HcmV?d00001 diff --git a/doc/添加三级菜单/c.三级菜单.png b/doc/添加三级菜单/c.三级菜单.png new file mode 100644 index 0000000000000000000000000000000000000000..1b7083e36d0b2610729bbfe5ab3e0a34ecc3dfa3 GIT binary patch literal 64003 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 literal 0 HcmV?d00001 diff --git a/doc/添加三级菜单/d.按钮.png b/doc/添加三级菜单/d.按钮.png new file mode 100644 index 0000000000000000000000000000000000000000..73615433e521911512229a6ad552fe71d73996d1 GIT binary patch literal 29286 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 BB9#CD literal 0 HcmV?d00001 diff --git a/doc/添加二级菜单/b.二级菜单.png b/doc/添加二级菜单/b.二级菜单.png new file mode 100644 index 0000000000000000000000000000000000000000..2bb21ea26b586263fba7aed1ce593399a715395c GIT binary patch literal 55061 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

eFgv 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