diff --git a/src/main/java/com/imyeyu/api/bean/CoreRoleCode.java b/src/main/java/com/imyeyu/api/bean/CoreRoleCode.java index 3416d16..64aa870 100644 --- a/src/main/java/com/imyeyu/api/bean/CoreRoleCode.java +++ b/src/main/java/com/imyeyu/api/bean/CoreRoleCode.java @@ -13,7 +13,9 @@ public enum CoreRoleCode implements BuiltinRoleCode { SYSTEM("系统", true, null), - ADMIN("管理员", false, SYSTEM.name()); + ADMIN("管理员", false, SYSTEM.name()), + + USER_ROLE_ADMIN("授权管理", false, ADMIN.name()); final String defaultName; final boolean protectedRole; diff --git a/src/main/java/com/imyeyu/api/modules/gao/controller/GaoCustomerController.java b/src/main/java/com/imyeyu/api/modules/gao/controller/GaoCustomerController.java index 62e6d3f..f3e3bf6 100644 --- a/src/main/java/com/imyeyu/api/modules/gao/controller/GaoCustomerController.java +++ b/src/main/java/com/imyeyu/api/modules/gao/controller/GaoCustomerController.java @@ -107,6 +107,14 @@ public class GaoCustomerController { return service.getByCode(code); } + @AOPLog + @RequestRateLimit + @RequireGaoPermission(GaoPermissionCode.CUSTOMER_READ) + @PostMapping("/detail/code/nullable") + public GaoCustomer nullableDetailByCode(@RequestParam String code) { + return service.getNullableByCode(code); + } + @AOPLog @RequestRateLimit @RequireGaoPermission(GaoPermissionCode.CUSTOMER_READ) diff --git a/src/main/java/com/imyeyu/api/modules/gao/service/implement/GaoUserServiceImplement.java b/src/main/java/com/imyeyu/api/modules/gao/service/implement/GaoUserServiceImplement.java index 4733061..05dcc65 100644 --- a/src/main/java/com/imyeyu/api/modules/gao/service/implement/GaoUserServiceImplement.java +++ b/src/main/java/com/imyeyu/api/modules/gao/service/implement/GaoUserServiceImplement.java @@ -18,6 +18,7 @@ import com.imyeyu.spring.bean.Page; import com.imyeyu.spring.bean.PageResult; import com.imyeyu.spring.mapper.BaseMapper; import com.imyeyu.spring.service.AbstractEntityService; +import com.imyeyu.utils.Time; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -112,6 +113,7 @@ public class GaoUserServiceImplement extends AbstractEntityService list(@RequestBody Page page) { diff --git a/src/main/java/com/imyeyu/api/modules/user/controller/RoleController.java b/src/main/java/com/imyeyu/api/modules/user/controller/RoleController.java index b4c203f..fc882d9 100644 --- a/src/main/java/com/imyeyu/api/modules/user/controller/RoleController.java +++ b/src/main/java/com/imyeyu/api/modules/user/controller/RoleController.java @@ -5,6 +5,7 @@ import com.imyeyu.api.annotation.RequireCoreRole; import com.imyeyu.api.bean.CorePermissionCode; import com.imyeyu.api.bean.CoreRoleCode; import com.imyeyu.api.bean.ModuleCode; +import com.imyeyu.api.bean.RoleMatchMode; import com.imyeyu.api.modules.user.entity.Permission; import com.imyeyu.api.modules.user.entity.Role; import com.imyeyu.api.modules.user.service.PermissionService; @@ -38,7 +39,7 @@ public class RoleController { private final RoleService service; private final PermissionService permissionService; - @RequireCoreRole(CoreRoleCode.ADMIN) + @RequireCoreRole(value = {CoreRoleCode.ADMIN, CoreRoleCode.USER_ROLE_ADMIN}, mode = RoleMatchMode.ANY) @RequireCorePermission(CorePermissionCode.ROLE_READ) @PostMapping("/list") public PageResult list(@RequestBody Page page) { @@ -49,7 +50,7 @@ public class RoleController { return result; } - @RequireCoreRole(CoreRoleCode.ADMIN) + @RequireCoreRole(value = {CoreRoleCode.ADMIN, CoreRoleCode.USER_ROLE_ADMIN}, mode = RoleMatchMode.ANY) @RequireCorePermission(CorePermissionCode.ROLE_READ) @PostMapping("/detail") public Role detail(@RequestParam String id) { @@ -82,7 +83,7 @@ public class RoleController { service.delete(id); } - @RequireCoreRole(CoreRoleCode.ADMIN) + @RequireCoreRole(value = {CoreRoleCode.ADMIN, CoreRoleCode.USER_ROLE_ADMIN}, mode = RoleMatchMode.ANY) @RequireCorePermission(CorePermissionCode.USER_ROLE_READ) @PostMapping("/authorized/list") public List listUserRole(@RequestParam String userId, @RequestParam(required = false) ModuleCode moduleCode) { @@ -93,14 +94,14 @@ public class RoleController { } @AOPLog - @RequireCoreRole(CoreRoleCode.ADMIN) + @RequireCoreRole(value = {CoreRoleCode.ADMIN, CoreRoleCode.USER_ROLE_ADMIN}, mode = RoleMatchMode.ANY) @RequireCorePermission(value = {CorePermissionCode.USER_ROLE_CREATE, CorePermissionCode.USER_ROLE_DELETE}) @PostMapping("/authorized/create") public void authorizeUserRole(@RequestBody UserRoleAuthorizeReq req) { service.authorizeUserRole(req); } - @RequireCoreRole(CoreRoleCode.ADMIN) + @RequireCoreRole(value = {CoreRoleCode.ADMIN, CoreRoleCode.USER_ROLE_ADMIN}, mode = RoleMatchMode.ANY) @RequireCorePermission(CorePermissionCode.USER_ROLE_READ) @PostMapping("/authorized/permission") public List listAuthorizedPermission(@RequestParam String userId) { diff --git a/src/main/java/com/imyeyu/api/modules/user/service/implement/UserServiceImplement.java b/src/main/java/com/imyeyu/api/modules/user/service/implement/UserServiceImplement.java index 2a336ef..33a79c3 100644 --- a/src/main/java/com/imyeyu/api/modules/user/service/implement/UserServiceImplement.java +++ b/src/main/java/com/imyeyu/api/modules/user/service/implement/UserServiceImplement.java @@ -65,6 +65,7 @@ public class UserServiceImplement extends AbstractEntityService im dbUser.setPassword(Digest.argon2id(user.getPassword())); dbUser.setEmail(user.getEmail()); dbUser.setPhoneNo(user.getPhoneNo()); + dbUser.setPhoneNoVerifyAt(user.getPhoneNoVerifyAt()); dbUser.setExp(TimiJava.defaultIfNull(user.getExp(), 0)); super.create(dbUser); user.setId(dbUser.getId()); diff --git a/src/main/resources/db/migration/timiserver/V16__fix_soft_delete_code_unique_indexes.sql b/src/main/resources/db/migration/timiserver/V16__fix_soft_delete_code_unique_indexes.sql new file mode 100644 index 0000000..445574e --- /dev/null +++ b/src/main/resources/db/migration/timiserver/V16__fix_soft_delete_code_unique_indexes.sql @@ -0,0 +1,20 @@ +ALTER TABLE `gao_customer` + DROP INDEX `uk_gao_customer_code`, + ADD COLUMN `active_code` VARCHAR(64) GENERATED ALWAYS AS ( + CASE WHEN `deleted_at` IS NULL THEN `code` ELSE NULL END + ) STORED COMMENT '未删除客户编码' INVISIBLE, + ADD UNIQUE KEY `uk_gao_customer_active_code` (`active_code`); + +ALTER TABLE `permission` + DROP INDEX `uk_module_code_code`, + ADD COLUMN `active_code` VARCHAR(50) GENERATED ALWAYS AS ( + CASE WHEN `deleted_at` IS NULL THEN `code` ELSE NULL END + ) STORED COMMENT '未删除权限代码' INVISIBLE, + ADD UNIQUE KEY `uk_permission_module_active_code` (`module_code`, `active_code`); + +ALTER TABLE `role` + DROP INDEX `uk_module_code_code`, + ADD COLUMN `active_code` VARCHAR(50) GENERATED ALWAYS AS ( + CASE WHEN `deleted_at` IS NULL THEN `code` ELSE NULL END + ) STORED COMMENT '未删除角色代码' INVISIBLE, + ADD UNIQUE KEY `uk_role_module_active_code` (`module_code`, `active_code`);