This commit is contained in:
Timi
2026-07-31 18:36:37 +08:00
parent 22e415dd7b
commit ce22661a9b
7 changed files with 42 additions and 7 deletions
@@ -13,7 +13,9 @@ public enum CoreRoleCode implements BuiltinRoleCode {
SYSTEM("系统", true, null), SYSTEM("系统", true, null),
ADMIN("管理员", false, SYSTEM.name()); ADMIN("管理员", false, SYSTEM.name()),
USER_ROLE_ADMIN("授权管理", false, ADMIN.name());
final String defaultName; final String defaultName;
final boolean protectedRole; final boolean protectedRole;
@@ -107,6 +107,14 @@ public class GaoCustomerController {
return service.getByCode(code); 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 @AOPLog
@RequestRateLimit @RequestRateLimit
@RequireGaoPermission(GaoPermissionCode.CUSTOMER_READ) @RequireGaoPermission(GaoPermissionCode.CUSTOMER_READ)
@@ -18,6 +18,7 @@ import com.imyeyu.spring.bean.Page;
import com.imyeyu.spring.bean.PageResult; import com.imyeyu.spring.bean.PageResult;
import com.imyeyu.spring.mapper.BaseMapper; import com.imyeyu.spring.mapper.BaseMapper;
import com.imyeyu.spring.service.AbstractEntityService; import com.imyeyu.spring.service.AbstractEntityService;
import com.imyeyu.utils.Time;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -112,6 +113,7 @@ public class GaoUserServiceImplement extends AbstractEntityService<GaoUser, Stri
} }
User user = entity.getUser(); User user = entity.getUser();
TimiException.required(user, "not found gao user.user"); TimiException.required(user, "not found gao user.user");
user.setPhoneNoVerifyAt(TimiJava.defaultIfNull(user.getPhoneNoVerifyAt(), Time.now()));
userService.create(user); userService.create(user);
entity.setUserId(user.getId()); entity.setUserId(user.getId());
} }
@@ -4,6 +4,7 @@ import com.imyeyu.api.annotation.RequireCorePermission;
import com.imyeyu.api.annotation.RequireCoreRole; import com.imyeyu.api.annotation.RequireCoreRole;
import com.imyeyu.api.bean.CorePermissionCode; import com.imyeyu.api.bean.CorePermissionCode;
import com.imyeyu.api.bean.CoreRoleCode; import com.imyeyu.api.bean.CoreRoleCode;
import com.imyeyu.api.bean.RoleMatchMode;
import com.imyeyu.api.modules.user.entity.Permission; import com.imyeyu.api.modules.user.entity.Permission;
import com.imyeyu.api.modules.user.service.PermissionService; import com.imyeyu.api.modules.user.service.PermissionService;
import com.imyeyu.api.modules.user.vo.permission.BatchCreateReq; import com.imyeyu.api.modules.user.vo.permission.BatchCreateReq;
@@ -32,7 +33,7 @@ public class PermissionController {
private final PermissionService service; private final PermissionService service;
@RequireCoreRole(CoreRoleCode.ADMIN) @RequireCoreRole(value = {CoreRoleCode.ADMIN, CoreRoleCode.USER_ROLE_ADMIN}, mode = RoleMatchMode.ANY)
@RequireCorePermission(CorePermissionCode.PERMISSION_READ) @RequireCorePermission(CorePermissionCode.PERMISSION_READ)
@PostMapping("/list") @PostMapping("/list")
public PageResult<Permission> list(@RequestBody Page<Permission> page) { public PageResult<Permission> list(@RequestBody Page<Permission> page) {
@@ -5,6 +5,7 @@ import com.imyeyu.api.annotation.RequireCoreRole;
import com.imyeyu.api.bean.CorePermissionCode; import com.imyeyu.api.bean.CorePermissionCode;
import com.imyeyu.api.bean.CoreRoleCode; import com.imyeyu.api.bean.CoreRoleCode;
import com.imyeyu.api.bean.ModuleCode; 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.Permission;
import com.imyeyu.api.modules.user.entity.Role; import com.imyeyu.api.modules.user.entity.Role;
import com.imyeyu.api.modules.user.service.PermissionService; import com.imyeyu.api.modules.user.service.PermissionService;
@@ -38,7 +39,7 @@ public class RoleController {
private final RoleService service; private final RoleService service;
private final PermissionService permissionService; private final PermissionService permissionService;
@RequireCoreRole(CoreRoleCode.ADMIN) @RequireCoreRole(value = {CoreRoleCode.ADMIN, CoreRoleCode.USER_ROLE_ADMIN}, mode = RoleMatchMode.ANY)
@RequireCorePermission(CorePermissionCode.ROLE_READ) @RequireCorePermission(CorePermissionCode.ROLE_READ)
@PostMapping("/list") @PostMapping("/list")
public PageResult<Role> list(@RequestBody Page<Role> page) { public PageResult<Role> list(@RequestBody Page<Role> page) {
@@ -49,7 +50,7 @@ public class RoleController {
return result; return result;
} }
@RequireCoreRole(CoreRoleCode.ADMIN) @RequireCoreRole(value = {CoreRoleCode.ADMIN, CoreRoleCode.USER_ROLE_ADMIN}, mode = RoleMatchMode.ANY)
@RequireCorePermission(CorePermissionCode.ROLE_READ) @RequireCorePermission(CorePermissionCode.ROLE_READ)
@PostMapping("/detail") @PostMapping("/detail")
public Role detail(@RequestParam String id) { public Role detail(@RequestParam String id) {
@@ -82,7 +83,7 @@ public class RoleController {
service.delete(id); service.delete(id);
} }
@RequireCoreRole(CoreRoleCode.ADMIN) @RequireCoreRole(value = {CoreRoleCode.ADMIN, CoreRoleCode.USER_ROLE_ADMIN}, mode = RoleMatchMode.ANY)
@RequireCorePermission(CorePermissionCode.USER_ROLE_READ) @RequireCorePermission(CorePermissionCode.USER_ROLE_READ)
@PostMapping("/authorized/list") @PostMapping("/authorized/list")
public List<Role> listUserRole(@RequestParam String userId, @RequestParam(required = false) ModuleCode moduleCode) { public List<Role> listUserRole(@RequestParam String userId, @RequestParam(required = false) ModuleCode moduleCode) {
@@ -93,14 +94,14 @@ public class RoleController {
} }
@AOPLog @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}) @RequireCorePermission(value = {CorePermissionCode.USER_ROLE_CREATE, CorePermissionCode.USER_ROLE_DELETE})
@PostMapping("/authorized/create") @PostMapping("/authorized/create")
public void authorizeUserRole(@RequestBody UserRoleAuthorizeReq req) { public void authorizeUserRole(@RequestBody UserRoleAuthorizeReq req) {
service.authorizeUserRole(req); service.authorizeUserRole(req);
} }
@RequireCoreRole(CoreRoleCode.ADMIN) @RequireCoreRole(value = {CoreRoleCode.ADMIN, CoreRoleCode.USER_ROLE_ADMIN}, mode = RoleMatchMode.ANY)
@RequireCorePermission(CorePermissionCode.USER_ROLE_READ) @RequireCorePermission(CorePermissionCode.USER_ROLE_READ)
@PostMapping("/authorized/permission") @PostMapping("/authorized/permission")
public List<Permission> listAuthorizedPermission(@RequestParam String userId) { public List<Permission> listAuthorizedPermission(@RequestParam String userId) {
@@ -65,6 +65,7 @@ public class UserServiceImplement extends AbstractEntityService<User, String> im
dbUser.setPassword(Digest.argon2id(user.getPassword())); dbUser.setPassword(Digest.argon2id(user.getPassword()));
dbUser.setEmail(user.getEmail()); dbUser.setEmail(user.getEmail());
dbUser.setPhoneNo(user.getPhoneNo()); dbUser.setPhoneNo(user.getPhoneNo());
dbUser.setPhoneNoVerifyAt(user.getPhoneNoVerifyAt());
dbUser.setExp(TimiJava.defaultIfNull(user.getExp(), 0)); dbUser.setExp(TimiJava.defaultIfNull(user.getExp(), 0));
super.create(dbUser); super.create(dbUser);
user.setId(dbUser.getId()); user.setId(dbUser.getId());
@@ -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`);