diff --git a/README.md b/README.md index 3d0cf33d2d3c5a85bb387d214e044150fb28a155..fcda266b7d97abf5641a43d4cce1307fb8dff29e 100644 --- a/README.md +++ b/README.md @@ -56,6 +56,12 @@ java21的bin目录/java -jar jar包目录/jar包名称.jar --add-opens java.base # 打包与启动 +## 如何打jar包 + +在项目根路径下执行maven的package命令,之后会在milkbox-app模块下的target目录下生成一个jar包,可以使用指令启动这个jar包 + +## 在idea中启动 + 启动时需要添加环境变量,如下图所示 ![image-20240112111124776](img/image-20240112111124776.png) @@ -69,9 +75,11 @@ DB_PORT=3306 DB_USERNAME=root ``` +## 在命令行中启动 + 启动命令参考 -win +win,注意要使用cmd,不要用powershell ```bash chcp diff --git a/milkbox-app/pom.xml b/milkbox-app/pom.xml index 945018ba22ecf9391cd5756b1f3e47de54efafbe..2b06cc0913bc98b55fdca3065864fae590fb760a 100644 --- a/milkbox-app/pom.xml +++ b/milkbox-app/pom.xml @@ -19,6 +19,11 @@ + + + top.milkbox + milkbox-config + top.milkbox diff --git a/milkbox-config/pom.xml b/milkbox-config/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..182f4f1b6b3dddc0f408de89d9e7c7cc483f808e --- /dev/null +++ b/milkbox-config/pom.xml @@ -0,0 +1,26 @@ + + + 4.0.0 + + top.milkbox + milkbox-api + 1.0-DEV + + + milkbox-config + + + 21 + 21 + UTF-8 + + + + + top.milkbox + milkbox-common + + + \ No newline at end of file diff --git a/milkbox-app/src/main/java/top/milkbox/app/core/config/CommonConfiguration.java b/milkbox-config/src/main/java/top/milkbox/config/core/config/CommonConfiguration.java similarity index 74% rename from milkbox-app/src/main/java/top/milkbox/app/core/config/CommonConfiguration.java rename to milkbox-config/src/main/java/top/milkbox/config/core/config/CommonConfiguration.java index 8b8c75127faa948583b5fa89a9bc2bdaaf8961fb..af75fadbe35c995898a9d8e49f8be79effd95ad4 100644 --- a/milkbox-app/src/main/java/top/milkbox/app/core/config/CommonConfiguration.java +++ b/milkbox-config/src/main/java/top/milkbox/config/core/config/CommonConfiguration.java @@ -1,4 +1,4 @@ -package top.milkbox.app.core.config; +package top.milkbox.config.core.config; import org.springframework.context.annotation.Configuration; diff --git a/milkbox-app/src/main/java/top/milkbox/app/core/config/MybatisPlusConfiguration.java b/milkbox-config/src/main/java/top/milkbox/config/core/config/MybatisPlusConfiguration.java similarity index 96% rename from milkbox-app/src/main/java/top/milkbox/app/core/config/MybatisPlusConfiguration.java rename to milkbox-config/src/main/java/top/milkbox/config/core/config/MybatisPlusConfiguration.java index 3281b82449a09890f8f0be80da084af05cafafca..9b13f4179e827d33837088aec205dfe4b517cfe6 100644 --- a/milkbox-app/src/main/java/top/milkbox/app/core/config/MybatisPlusConfiguration.java +++ b/milkbox-config/src/main/java/top/milkbox/config/core/config/MybatisPlusConfiguration.java @@ -1,4 +1,4 @@ -package top.milkbox.app.core.config; +package top.milkbox.config.core.config; import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; diff --git a/milkbox-app/src/main/java/top/milkbox/app/core/config/SaTokenConfiguration.java b/milkbox-config/src/main/java/top/milkbox/config/core/config/SaTokenConfiguration.java similarity index 94% rename from milkbox-app/src/main/java/top/milkbox/app/core/config/SaTokenConfiguration.java rename to milkbox-config/src/main/java/top/milkbox/config/core/config/SaTokenConfiguration.java index 92544a65cb9dd92ae3e68d3aebf5be180570a405..55df361d9d791ce78fffddb21442940a3e428c78 100644 --- a/milkbox-app/src/main/java/top/milkbox/app/core/config/SaTokenConfiguration.java +++ b/milkbox-config/src/main/java/top/milkbox/config/core/config/SaTokenConfiguration.java @@ -1,4 +1,4 @@ -package top.milkbox.app.core.config; +package top.milkbox.config.core.config; import cn.dev33.satoken.interceptor.SaInterceptor; import org.springframework.context.annotation.Configuration; diff --git a/milkbox-app/src/main/java/top/milkbox/app/core/handler/GlobalControllerAdvice.java b/milkbox-config/src/main/java/top/milkbox/config/core/handler/GlobalControllerAdvice.java similarity index 99% rename from milkbox-app/src/main/java/top/milkbox/app/core/handler/GlobalControllerAdvice.java rename to milkbox-config/src/main/java/top/milkbox/config/core/handler/GlobalControllerAdvice.java index b0c6d645400f56959bc4b742c1fd45aa2798ce6f..d4db3cd622de881f828a8c674a2be356323d90d0 100644 --- a/milkbox-app/src/main/java/top/milkbox/app/core/handler/GlobalControllerAdvice.java +++ b/milkbox-config/src/main/java/top/milkbox/config/core/handler/GlobalControllerAdvice.java @@ -1,4 +1,4 @@ -package top.milkbox.app.core.handler; +package top.milkbox.config.core.handler; import cn.dev33.satoken.exception.NotLoginException; import cn.hutool.core.util.StrUtil; diff --git a/milkbox-app/src/main/java/top/milkbox/app/core/handler/mybatisPlus/MyMetaObjectHandler.java b/milkbox-config/src/main/java/top/milkbox/config/core/handler/mybatisPlus/MyMetaObjectHandler.java similarity index 97% rename from milkbox-app/src/main/java/top/milkbox/app/core/handler/mybatisPlus/MyMetaObjectHandler.java rename to milkbox-config/src/main/java/top/milkbox/config/core/handler/mybatisPlus/MyMetaObjectHandler.java index 84391904f9a781912470f1638cb6d3865c634b9d..b183648ffa2632166247e9b603129eafd81c577f 100644 --- a/milkbox-app/src/main/java/top/milkbox/app/core/handler/mybatisPlus/MyMetaObjectHandler.java +++ b/milkbox-config/src/main/java/top/milkbox/config/core/handler/mybatisPlus/MyMetaObjectHandler.java @@ -1,4 +1,4 @@ -package top.milkbox.app.core.handler.mybatisPlus; +package top.milkbox.config.core.handler.mybatisPlus; import cn.dev33.satoken.exception.NotLoginException; import cn.dev33.satoken.exception.NotWebContextException; diff --git a/milkbox-service/service-sys/pom.xml b/milkbox-service/service-sys/pom.xml index 224fa2e116fc8a829a2796afcd0d121cb792ba9a..833db0942f0341d2590b111514b306e45c90d908 100644 --- a/milkbox-service/service-sys/pom.xml +++ b/milkbox-service/service-sys/pom.xml @@ -17,4 +17,23 @@ UTF-8 + + + top.milkbox + milkbox-config + + + + + + + src/test/java/resources + + *.yml + + ./ + + + + \ No newline at end of file diff --git a/milkbox-service/service-sys/src/main/java/top/milkbox/sys/modular/relationship/service/SysRelationshipService.java b/milkbox-service/service-sys/src/main/java/top/milkbox/sys/modular/relationship/service/SysRelationshipService.java index 4a7e2fa107173fd37722b9e6204e8a25b45ed2f3..80dc97e961abf82ab65e9e6e29efd2ba4e2c3ab5 100644 --- a/milkbox-service/service-sys/src/main/java/top/milkbox/sys/modular/relationship/service/SysRelationshipService.java +++ b/milkbox-service/service-sys/src/main/java/top/milkbox/sys/modular/relationship/service/SysRelationshipService.java @@ -12,6 +12,7 @@ import top.milkbox.sys.modular.relationship.vo.SysRelationshipVo; import top.milkbox.sys.modular.role.param.SysRoleAuthorizationMenuParam; import top.milkbox.sys.modular.role.param.SysRoleAuthorizationUserParam; import top.milkbox.sys.modular.user.param.SysUserAuthorizationMenuParam; +import top.milkbox.sys.modular.user.param.SysUserAuthorizationRoleParam; import java.util.List; @@ -129,4 +130,12 @@ public interface SysRelationshipService extends IService * @return 返回的对象包含两个集合,一个为授权成功的id集合,另一个为不存在的id集合 */ EntityColumnExistence userIdAuthMenuIdList(SysUserAuthorizationMenuParam param); + + /** + * 用户授权角色集合 + * + * @param param 包含用户id,角色id集合,是否重新授权 + * @return 返回的对象包含两个集合,一个为授权成功的id集合,另一个为不存在的id集合 + */ + EntityColumnExistence userIdAuthRoleIdList(SysUserAuthorizationRoleParam param); } \ No newline at end of file diff --git a/milkbox-service/service-sys/src/main/java/top/milkbox/sys/modular/relationship/service/impl/SysRelationshipServiceImpl.java b/milkbox-service/service-sys/src/main/java/top/milkbox/sys/modular/relationship/service/impl/SysRelationshipServiceImpl.java index 482fc3db20bf3a6afaa724fd4d71fe03e06027f8..3ac61cff2859a7c4c6d610a98fdf0e0357137cee 100644 --- a/milkbox-service/service-sys/src/main/java/top/milkbox/sys/modular/relationship/service/impl/SysRelationshipServiceImpl.java +++ b/milkbox-service/service-sys/src/main/java/top/milkbox/sys/modular/relationship/service/impl/SysRelationshipServiceImpl.java @@ -29,6 +29,7 @@ import top.milkbox.sys.modular.role.param.SysRoleAuthorizationUserParam; import top.milkbox.sys.modular.role.service.SysRoleService; import top.milkbox.sys.modular.user.entity.SysUserEntity; import top.milkbox.sys.modular.user.param.SysUserAuthorizationMenuParam; +import top.milkbox.sys.modular.user.param.SysUserAuthorizationRoleParam; import top.milkbox.sys.modular.user.service.SysUserService; import java.util.ArrayList; @@ -299,5 +300,25 @@ public class SysRelationshipServiceImpl return objectAuthTarget(objectAuthTargetBo, columnExistence); } + @Override + @Transactional(rollbackFor = Exception.class) + public EntityColumnExistence userIdAuthRoleIdList(SysUserAuthorizationRoleParam param) { + // 检查用户是否存在 + sysUserService.findEntity(param.getUserId()); + + // 创建bo对象(实际的作用就是额外添加了category属性) + SysRelationshipObjectAuthTargetBo objectAuthTargetBo = new SysRelationshipObjectAuthTargetBo( + param.getUserId(), + param.getRoleIdList(), + param.getIsReauthorization(), + SysRelationshipTypeEnum.SYS_USER_RELATE_SYS_ROLE); + + // 列存在性对象,查询角色id集合中存在的id和不存在的id + EntityColumnExistence columnExistence = + sysRoleService.filterDoesNotExistColumn(SysRoleEntity::getId, param.getRoleIdList()); + // 调用objectId授权targetIdList方法 + return objectAuthTarget(objectAuthTargetBo, columnExistence); + } + } diff --git a/milkbox-service/service-sys/src/main/java/top/milkbox/sys/modular/role/service/SysRoleService.java b/milkbox-service/service-sys/src/main/java/top/milkbox/sys/modular/role/service/SysRoleService.java index 1f90d0105bf3d57630f94b186f361d6b2e8a5214..1595c7e979b41a5c247b39a8087236a5851751b0 100644 --- a/milkbox-service/service-sys/src/main/java/top/milkbox/sys/modular/role/service/SysRoleService.java +++ b/milkbox-service/service-sys/src/main/java/top/milkbox/sys/modular/role/service/SysRoleService.java @@ -3,6 +3,7 @@ package top.milkbox.sys.modular.role.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import top.milkbox.common.bo.EntityColumnExistence; +import top.milkbox.common.service.CommonService; import top.milkbox.sys.modular.role.entity.SysRoleEntity; import top.milkbox.sys.modular.role.param.*; import top.milkbox.sys.modular.role.vo.SysRoleVo; @@ -15,7 +16,7 @@ import java.util.List; * @author milkbox * @date 2024-1-23 */ -public interface SysRoleService extends IService { +public interface SysRoleService extends CommonService { /** * 添加 diff --git a/milkbox-service/service-sys/src/main/java/top/milkbox/sys/modular/role/service/impl/SysRoleServiceImpl.java b/milkbox-service/service-sys/src/main/java/top/milkbox/sys/modular/role/service/impl/SysRoleServiceImpl.java index 176b0ef256d3bb9db3f6281b66d194ac5005a823..86801f8d6e29f7fc291a6f6e8bbd2b2749e0c9d9 100644 --- a/milkbox-service/service-sys/src/main/java/top/milkbox/sys/modular/role/service/impl/SysRoleServiceImpl.java +++ b/milkbox-service/service-sys/src/main/java/top/milkbox/sys/modular/role/service/impl/SysRoleServiceImpl.java @@ -13,6 +13,7 @@ import org.springframework.transaction.annotation.Transactional; import top.milkbox.common.bo.EntityColumnExistence; import top.milkbox.common.enums.CommonSortTypeEnum; import top.milkbox.common.exceprion.CommonServiceException; +import top.milkbox.common.service.impl.CommonServiceImpl; import top.milkbox.sys.modular.relationship.entity.SysRelationshipEntity; import top.milkbox.sys.modular.relationship.enums.SysRelationshipTypeEnum; import top.milkbox.sys.modular.relationship.service.SysRelationshipService; @@ -37,14 +38,10 @@ import java.util.List; @Slf4j @Service @AllArgsConstructor -public class SysRoleServiceImpl extends ServiceImpl implements SysRoleService { +public class SysRoleServiceImpl extends CommonServiceImpl implements SysRoleService { private SysRoleMapper sysRoleMapper; -// private SysRelationshipService sysRelationshipService; - -// private SysUserService sysUserService; - @Override @Transactional(rollbackFor = Exception.class) public void add(SysRoleAddParam addParam) { diff --git a/milkbox-service/service-sys/src/main/java/top/milkbox/sys/modular/user/controller/SysUserController.java b/milkbox-service/service-sys/src/main/java/top/milkbox/sys/modular/user/controller/SysUserController.java index f364acc8ca553fd21eef71cc5262b2eb42b430aa..401666493a7f8964ba3fb426a20b5876b1b85b23 100644 --- a/milkbox-service/service-sys/src/main/java/top/milkbox/sys/modular/user/controller/SysUserController.java +++ b/milkbox-service/service-sys/src/main/java/top/milkbox/sys/modular/user/controller/SysUserController.java @@ -19,7 +19,6 @@ import top.milkbox.common.enums.LogTypeEnum; import top.milkbox.common.validation.annotation.CollectionElementNotNull; import top.milkbox.sys.core.config.SysConfiguration; import top.milkbox.sys.modular.relationship.service.SysRelationshipService; -import top.milkbox.sys.modular.role.param.SysRoleAuthorizationMenuParam; import top.milkbox.sys.modular.user.param.*; import top.milkbox.sys.modular.user.service.SysUserService; import top.milkbox.sys.modular.user.vo.SysUserVo; @@ -145,4 +144,22 @@ public class SysUserController { } // TODO 缺少接口,给用户分配角色assignRole + @PostMapping(value = "/userIdAuthRoleIdList") + @Operation(summary = "授权角色", description = "单独给用户授权角色") + @CommonLog(value = "授权角色", description = "单独给用户授权角色", + module = SysConfiguration.MODULE_NAME, type = LogTypeEnum.UPDATE) + public CommonResult userIdAuthRoleIdList( + @Validated @RequestBody SysUserAuthorizationRoleParam userAuthorizationRoleParam) { + EntityColumnExistence columnExistence = + sysRelationshipService.userIdAuthRoleIdList(userAuthorizationRoleParam); + if (ObjectUtil.isEmpty(columnExistence.getDoesNotExistColumnList())) { + return CommonResult.ok(); + } + + return CommonResult.ok("角色" + JSONUtil.toJsonStr(columnExistence.getExistColumnList()) + "已授权成功。" + + "角色" + JSONUtil.toJsonStr(columnExistence.getDoesNotExistColumnList()) + + "由于不存在所以未授权。", null); + } + + } \ No newline at end of file diff --git a/milkbox-service/service-sys/src/main/java/top/milkbox/sys/modular/user/param/SysUserAuthorizationRoleParam.java b/milkbox-service/service-sys/src/main/java/top/milkbox/sys/modular/user/param/SysUserAuthorizationRoleParam.java new file mode 100644 index 0000000000000000000000000000000000000000..df79c5ba7c6d698d51aed0440e80fb484296a2bf --- /dev/null +++ b/milkbox-service/service-sys/src/main/java/top/milkbox/sys/modular/user/param/SysUserAuthorizationRoleParam.java @@ -0,0 +1,40 @@ +package top.milkbox.sys.modular.user.param; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import top.milkbox.common.validation.annotation.CollectionElementNotNull; + +import java.util.Set; + +/** + * 用户授权菜单
+ * 创建时间: 2024-04-08 + * + * @author milkbox + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class SysUserAuthorizationRoleParam { + + @Schema(title = "用户id", description = "用户id") + @NotNull(message = "用户id不能为空") + private Integer userId; + + @Schema(title = "角色id集合", description = """ + 被授权的角色id集合。 + 在重新授权模式下,如果此字段为空或集合个数为0,则表示删除原来的授权信息而不添加新的授权信息。""") + @Size(max = 10000, message = "一次性授权的最大个数为10000") + @CollectionElementNotNull(message = "集合中的菜单id不能为空") + private Set roleIdList; + + @Schema(title = "是否重新授权", description = """ + 为true表示重新授权,false或空表示不重新授权。 + 重新授权的意思是删除原来的授权信息重新授权新的集合。 + 不重新授权就是增量授权,已经授权的不变,只添加新的授权。""") + private Boolean isReauthorization; +} diff --git a/milkbox-service/service-sys/src/test/java/resources/application.yml b/milkbox-service/service-sys/src/test/java/resources/application.yml new file mode 100644 index 0000000000000000000000000000000000000000..dc20b96b034a50e38fdb9ca5c7fe342f5f8a2aff --- /dev/null +++ b/milkbox-service/service-sys/src/test/java/resources/application.yml @@ -0,0 +1,80 @@ +server: + port: 9996 + +############## springdoc文档配置 ############## +springdoc: + swagger-ui: + path: "/doc.html" + +spring: + ############## 数据库配置 ############## + datasource: + # 主机地址、用户名和密码请配置环境变量 + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://localhost:3306/milkbox2_test?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&useInformationSchema=true + type: com.alibaba.druid.pool.DruidDataSource + username: root + password: 123456 + + data: + ############## redis连接池配置 ############## + # 注:springboot3的redis配置必须放到data节点下 + redis: + # Redis数据库索引(默认为0) + database: 6 + # Redis服务器地址 + host: 127.0.0.1 + # Redis服务器连接端口 + port: 6379 + # Redis服务器连接密码(默认为空) + password: 123456 + # 连接超时时间 + timeout: 10s + lettuce: + pool: + # 连接池最大连接数 + max-active: 200 + # 连接池最大阻塞等待时间(使用负值表示没有限制) + max-wait: -1ms + # 连接池中的最大空闲连接 + max-idle: 10 + # 连接池中的最小空闲连接 + min-idle: 0 + +############## mybatis-plus配置 ############## +mybatis-plus: + configuration: + # 如果查询结果中包含空值的列,则 MyBatis 在映射的时候,不会映射这个字段 + jdbc-type-for-null: null + # mybatis-plus的日志(开启后控制台打印的内容非常多。生产环境请禁止,输出日志会导致性能下降和隐私泄露) + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + global-config: + banner: false + enable-sql-runner: true + db-config: + id-type: AUTO + logic-delete-value: 1 + logic-not-delete-value: 0 + # 所有的mapper映射文件 + mapper-locations: + - classpath*:top/milkbox/**/mapping/*.xml + # 定义所有操作类的别名所在包 + type-aliases-package: top.milkbox.**.entity;top.milkbox.**.param;top.milkbox.**.vo + + +############## Sa-Token配置 (文档: https://sa-token.cc) ############## +sa-token: + # token 名称(同时也是浏览器中cookie的名称) + token-name: sa-token + # token 有效期(单位:秒) 默认30天,-1 代表永久有效 + timeout: 2592000 + # token 最低活跃频率(单位:秒),如果 token 超过此时间没有访问系统就会被冻结,默认-1 代表不限制,永不冻结 + active-timeout: -1 + # 是否允许同一账号多地同时登录 (为 true 时允许一起登录, 为 false 时新登录挤掉旧登录) + is-concurrent: true + # 在多人登录同一账号时,是否共用一个 token (为 true 时所有登录共用一个 token, 为 false 时每次登录新建一个 token) + is-share: true + # token 风格(默认可取值:uuid、simple-uuid、random-32、random-64、random-128、tik) + token-style: random-32 + # 是否输出操作日志(生产环境请禁止,输出日志会导致性能下降和隐私泄露) + is-log: true diff --git a/milkbox-service/service-sys/src/test/java/top/milkbox/sys/ApplicationTest.java b/milkbox-service/service-sys/src/test/java/top/milkbox/sys/ApplicationTest.java new file mode 100644 index 0000000000000000000000000000000000000000..9cd77dd1fa6e02bd3833d27f8395fcba6bd4a606 --- /dev/null +++ b/milkbox-service/service-sys/src/test/java/top/milkbox/sys/ApplicationTest.java @@ -0,0 +1,42 @@ +package top.milkbox.sys; + +import cn.hutool.core.date.DateTime; +import cn.hutool.json.JSONUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import top.milkbox.common.pojo.CommonResult; + +import java.util.Date; +import java.util.TimeZone; + +/** + * 创建时间: 2024-04-09 下午 5:19 + * + * @author milkbox + */ +@Slf4j +@EnableWebMvc +@RestController +@SpringBootApplication +public class ApplicationTest { + + /** + * 主启动函数 + */ + public static void main(String[] args) { + SpringApplication springApplication = new SpringApplication(ApplicationTest.class); + ConfigurableApplicationContext app = springApplication.run(args); + log.info(">>> {}", ApplicationTest.class.getSimpleName().toUpperCase() + " STARTING SUCCESS 启动成功"); + } + + @GetMapping("/") + public CommonResult welcome(@RequestParam(required = false) String message) { + return CommonResult.ok("系统运行中......", message); + } +} diff --git a/milkbox-service/service-sys/src/test/java/top/milkbox/sys/test/TopTest.java b/milkbox-service/service-sys/src/test/java/top/milkbox/sys/test/TopTest.java new file mode 100644 index 0000000000000000000000000000000000000000..b86e43c412361cbe78e1cb4e6de076804bc3dcb1 --- /dev/null +++ b/milkbox-service/service-sys/src/test/java/top/milkbox/sys/test/TopTest.java @@ -0,0 +1,29 @@ +package top.milkbox.sys.test; + + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import top.milkbox.sys.ApplicationTest; +import top.milkbox.sys.modular.user.entity.SysUserEntity; +import top.milkbox.sys.modular.user.service.SysUserService; + +/** + * 测试类 + * 创建时间: 2024-04-09 下午 4:49 + * + * @author milkbox + */ +@SpringBootTest(classes = ApplicationTest.class) +public class TopTest { + + @Autowired + private SysUserService userService; + + @Test + public void test() { + SysUserEntity entity = userService.findEntity(3); + // 断言 + assert entity != null; + } +} diff --git a/pom.xml b/pom.xml index ef686dd8ba706cf09966ada81c787f587a0ff0fd..c29e0b0bd9c9decab03a09a58ca4948083c0b30e 100644 --- a/pom.xml +++ b/pom.xml @@ -10,8 +10,9 @@ pom milkbox-app - milkbox-service + milkbox-config milkbox-common + milkbox-service @@ -131,12 +132,13 @@ ${hutool.version}
- - - junit - junit - test - + + + + + + + @@ -193,6 +195,12 @@ milkbox-common ${milkbox.version} + + + top.milkbox + milkbox-config + ${milkbox.version} + top.milkbox diff --git "a/\345\244\207\345\277\230\345\275\225.md" "b/\345\244\207\345\277\230\345\275\225.md" index d06e257c17286107a6ea5e918bcde07f196f3987..9a29114803189c3e9de02a840f131e42ba9792a4 100644 --- "a/\345\244\207\345\277\230\345\275\225.md" +++ "b/\345\244\207\345\277\230\345\275\225.md" @@ -3,7 +3,7 @@ - [x] 现在需要考虑SysRoleService和SysUserService之间循环依赖的函数放到SysRelationshipService中,在SysRoleService和SysUserService的controller调用SysRelationshipService。 - [x] 在子线程保存日志的过程中,有可能request对象被收回,导致报错。考虑将所有request对象的操作放到子线程外面运行,将所有对request的处理操作完成后再开启日志子线程。通过传参的方式将对request处理的结果传入日志子线程。 - [ ] 考虑按钮权限功能。 -- [ ] 考虑进行单元测试,两种方案。1:在各个子模块中编写测试用例,但是需要解决模块依赖启动类的问题。2:专门编写一个测试子模块,将其他模块的测试用例写到这个测试子模块中。 +- [x] 考虑进行单元测试,两种方案。1:在各个子模块中编写测试用例,但是需要解决模块依赖启动类的问题。2:专门编写一个测试子模块,将其他模块的测试用例写到这个测试子模块中。 - [ ] 考虑使用一个注解对密级字段进行权限控制。将注解放到实体类的指定字段上,就可以控制整条数据的权限。 - [ ] 需要接口调用频率的控制。 - [ ] 级联删除与取代删除不支持批量操作。普通批量删除方式删除当前节点后,子节点将无法通过根节点找到,需要通过定时任务进行定期删除。