refactor all
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
package com.imyeyu.api.modules.user.controller;
|
||||
|
||||
import com.imyeyu.api.annotation.RequireCorePermission;
|
||||
import com.imyeyu.api.annotation.RequireCoreRole;
|
||||
import com.imyeyu.api.bean.CorePermissionCode;
|
||||
import com.imyeyu.api.bean.CoreRoleCode;
|
||||
import com.imyeyu.api.modules.user.entity.Permission;
|
||||
import com.imyeyu.api.modules.user.service.PermissionService;
|
||||
import com.imyeyu.api.modules.user.vo.permission.BatchCreateReq;
|
||||
import com.imyeyu.spring.annotation.AOPLog;
|
||||
import com.imyeyu.spring.bean.Page;
|
||||
import com.imyeyu.spring.bean.PageResult;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* 权限 SDK 控制器
|
||||
*
|
||||
* @author 夜雨
|
||||
* @since 2025-11-02 09:54
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/user/permission")
|
||||
public class PermissionController {
|
||||
|
||||
private final PermissionService service;
|
||||
|
||||
@RequireCoreRole(CoreRoleCode.ADMIN)
|
||||
@RequireCorePermission(CorePermissionCode.PERMISSION_READ)
|
||||
@PostMapping("/list")
|
||||
public PageResult<Permission> list(@RequestBody Page<Permission> page) {
|
||||
return service.page(page);
|
||||
}
|
||||
|
||||
@AOPLog
|
||||
@RequireCoreRole(CoreRoleCode.ADMIN)
|
||||
@RequireCorePermission(CorePermissionCode.PERMISSION_READ)
|
||||
@PostMapping("/create")
|
||||
public void create(@RequestBody Permission permission) {
|
||||
service.create(permission);
|
||||
}
|
||||
|
||||
@AOPLog
|
||||
@RequireCoreRole(CoreRoleCode.ADMIN)
|
||||
@RequireCorePermission(CorePermissionCode.PERMISSION_CREATE)
|
||||
@PostMapping("/create/batch")
|
||||
public void createBatch(@RequestBody BatchCreateReq req) {
|
||||
service.create(req);
|
||||
}
|
||||
|
||||
@AOPLog
|
||||
@RequireCoreRole(CoreRoleCode.ADMIN)
|
||||
@RequireCorePermission(CorePermissionCode.PERMISSION_UPDATE)
|
||||
@PostMapping("/update")
|
||||
public void update(@RequestBody Permission permission) {
|
||||
service.update(permission);
|
||||
}
|
||||
|
||||
@AOPLog
|
||||
@RequireCoreRole(CoreRoleCode.ADMIN)
|
||||
@RequireCorePermission(CorePermissionCode.PERMISSION_DELETE)
|
||||
@PostMapping("/delete")
|
||||
public void delete(@RequestParam("id") String id) {
|
||||
service.delete(id);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,115 @@
|
||||
package com.imyeyu.api.modules.user.controller;
|
||||
|
||||
import com.imyeyu.api.annotation.RequireCorePermission;
|
||||
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.modules.user.entity.Permission;
|
||||
import com.imyeyu.api.modules.user.entity.Role;
|
||||
import com.imyeyu.api.modules.user.service.PermissionService;
|
||||
import com.imyeyu.api.modules.user.service.RoleService;
|
||||
import com.imyeyu.api.modules.user.vo.role.UserRoleAuthorizeReq;
|
||||
import com.imyeyu.spring.annotation.AOPLog;
|
||||
import com.imyeyu.spring.bean.Page;
|
||||
import com.imyeyu.spring.bean.PageResult;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 角色 SDK 控制器
|
||||
*
|
||||
* @author 夜雨
|
||||
* @since 2025-11-02 10:00
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/user/role")
|
||||
public class RoleController {
|
||||
|
||||
private final RoleService service;
|
||||
private final PermissionService permissionService;
|
||||
|
||||
@RequireCoreRole(CoreRoleCode.ADMIN)
|
||||
@RequireCorePermission(CorePermissionCode.ROLE_READ)
|
||||
@PostMapping("/list")
|
||||
public PageResult<Role> list(@RequestBody Page<Role> page) {
|
||||
PageResult<Role> result = service.page(page);
|
||||
if (result.getList() != null) {
|
||||
result.getList().forEach(this::fillRoleDetail);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@RequireCoreRole(CoreRoleCode.ADMIN)
|
||||
@RequireCorePermission(CorePermissionCode.ROLE_READ)
|
||||
@PostMapping("/detail")
|
||||
public Role detail(@RequestParam String id) {
|
||||
Role role = service.get(id);
|
||||
fillRoleDetail(role);
|
||||
return role;
|
||||
}
|
||||
|
||||
@AOPLog
|
||||
@RequireCoreRole(CoreRoleCode.ADMIN)
|
||||
@RequireCorePermission(CorePermissionCode.ROLE_CREATE)
|
||||
@PostMapping("/create")
|
||||
public void create(@RequestBody Role role) {
|
||||
service.create(role);
|
||||
}
|
||||
|
||||
@AOPLog
|
||||
@RequireCoreRole(CoreRoleCode.ADMIN)
|
||||
@RequireCorePermission(CorePermissionCode.ROLE_UPDATE)
|
||||
@PostMapping("/update")
|
||||
public void update(@RequestBody Role role) {
|
||||
service.update(role);
|
||||
}
|
||||
|
||||
@AOPLog
|
||||
@RequireCoreRole(CoreRoleCode.ADMIN)
|
||||
@RequireCorePermission(CorePermissionCode.ROLE_DELETE)
|
||||
@PostMapping("/delete")
|
||||
public void delete(@RequestParam String id) {
|
||||
service.delete(id);
|
||||
}
|
||||
|
||||
@RequireCoreRole(CoreRoleCode.ADMIN)
|
||||
@RequireCorePermission(CorePermissionCode.USER_ROLE_READ)
|
||||
@PostMapping("/authorized/list")
|
||||
public List<Role> listUserRole(@RequestParam String userId, @RequestParam(required = false) ModuleCode moduleCode) {
|
||||
if (moduleCode != null) {
|
||||
return service.listByUserId(userId, moduleCode);
|
||||
}
|
||||
return service.listByUserId(userId);
|
||||
}
|
||||
|
||||
@AOPLog
|
||||
@RequireCoreRole(CoreRoleCode.ADMIN)
|
||||
@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)
|
||||
@RequireCorePermission(CorePermissionCode.USER_ROLE_READ)
|
||||
@PostMapping("/authorized/permission")
|
||||
public List<Permission> listAuthorizedPermission(@RequestParam String userId) {
|
||||
return service.listAllPermissionByUserId(userId);
|
||||
}
|
||||
|
||||
private void fillRoleDetail(Role role) {
|
||||
role.setPermissionList(permissionService.listByRoleId(role.getId()));
|
||||
role.setAllPermissionList(service.listPermissionByRoleId(role.getId()));
|
||||
role.setChildRoleList(service.listChildByParentRoleId(role.getId()));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,270 @@
|
||||
package com.imyeyu.api.modules.user.controller;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonView;
|
||||
import com.imyeyu.api.annotation.RequireCorePermission;
|
||||
import com.imyeyu.api.annotation.RequireCoreRole;
|
||||
import com.imyeyu.api.bean.CorePermissionCode;
|
||||
import com.imyeyu.api.bean.CoreRoleCode;
|
||||
import com.imyeyu.api.modules.common.entity.Attachment;
|
||||
import com.imyeyu.api.modules.common.service.AttachmentService;
|
||||
import com.imyeyu.api.modules.common.vo.attach.BizUpdateReq;
|
||||
import com.imyeyu.api.modules.user.entity.User;
|
||||
import com.imyeyu.api.modules.user.service.UserLoginService;
|
||||
import com.imyeyu.api.modules.user.service.UserService;
|
||||
import com.imyeyu.api.modules.user.vo.CancelRequest;
|
||||
import com.imyeyu.api.modules.user.vo.LoginRequest;
|
||||
import com.imyeyu.api.modules.user.vo.LoginResponse;
|
||||
import com.imyeyu.api.modules.user.vo.PhoneVerifyCodeSendRequest;
|
||||
import com.imyeyu.api.modules.user.vo.PhoneVerifyRequest;
|
||||
import com.imyeyu.api.modules.user.vo.UpdatePasswordRequest;
|
||||
import com.imyeyu.spring.TimiSpring;
|
||||
import com.imyeyu.spring.annotation.AOPLog;
|
||||
import com.imyeyu.spring.annotation.CaptchaValid;
|
||||
import com.imyeyu.spring.annotation.RequestRateLimit;
|
||||
import com.imyeyu.spring.annotation.RequiredToken;
|
||||
import com.imyeyu.spring.bean.CaptchaData;
|
||||
import com.imyeyu.spring.bean.Page;
|
||||
import com.imyeyu.spring.bean.PageResult;
|
||||
import com.imyeyu.spring.util.ResponseView;
|
||||
import jakarta.validation.Valid;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 用户接口
|
||||
*
|
||||
* @author 夜雨
|
||||
* @since 2021-02-23 21:38
|
||||
*/
|
||||
@Slf4j
|
||||
@Validated
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/user")
|
||||
public class UserController {
|
||||
|
||||
private final UserService userService;
|
||||
private final UserLoginService userLoginService;
|
||||
private final AttachmentService attachmentService;
|
||||
|
||||
@RequireCoreRole(CoreRoleCode.ADMIN)
|
||||
@RequestRateLimit
|
||||
@RequireCorePermission(CorePermissionCode.USER_READ)
|
||||
@PostMapping("/list")
|
||||
public PageResult<User> list(@RequestBody Page<User> page) {
|
||||
return userService.page(page);
|
||||
}
|
||||
|
||||
@AOPLog
|
||||
@RequireCoreRole(CoreRoleCode.ADMIN)
|
||||
@RequestRateLimit
|
||||
@RequireCorePermission(CorePermissionCode.USER_READ)
|
||||
@RequestMapping("/detail")
|
||||
public User detail(@RequestParam String id) {
|
||||
return userService.get(id);
|
||||
}
|
||||
|
||||
@AOPLog
|
||||
@RequireCoreRole(CoreRoleCode.ADMIN)
|
||||
@RequestRateLimit
|
||||
@RequireCorePermission(CorePermissionCode.USER_CREATE)
|
||||
@PostMapping("/create")
|
||||
public void create(@RequestBody User user) {
|
||||
userService.create(user);
|
||||
}
|
||||
|
||||
@AOPLog
|
||||
@RequireCoreRole(CoreRoleCode.ADMIN)
|
||||
@RequestRateLimit
|
||||
@RequireCorePermission(CorePermissionCode.USER_UPDATE)
|
||||
@PostMapping("/update")
|
||||
public void update(@RequestBody User user) {
|
||||
userService.update(user);
|
||||
}
|
||||
|
||||
@AOPLog
|
||||
@RequireCoreRole(CoreRoleCode.ADMIN)
|
||||
@RequestRateLimit
|
||||
@RequestMapping("/delete")
|
||||
public void delete(@RequestParam String id) {
|
||||
userService.delete(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户注册
|
||||
*/
|
||||
@AOPLog
|
||||
@JsonView(ResponseView.Public.class)
|
||||
@RequestRateLimit
|
||||
@CaptchaValid
|
||||
@PostMapping("/register")
|
||||
public LoginResponse register(@RequestBody @Valid CaptchaData<User> user) {
|
||||
userService.create(user.getData());
|
||||
// 登录
|
||||
LoginRequest loginRequest = new LoginRequest();
|
||||
loginRequest.setUser(user.getData().getName());
|
||||
loginRequest.setPassword(user.getData().getPassword());
|
||||
return userLoginService.login(loginRequest);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户登录
|
||||
*
|
||||
* @param req 登录请求
|
||||
* @return 登录结果
|
||||
*/
|
||||
@AOPLog
|
||||
@JsonView(ResponseView.Public.class)
|
||||
@RequestRateLimit
|
||||
@PostMapping("/login")
|
||||
public LoginResponse login(@RequestBody @Valid CaptchaData<LoginRequest> req) {
|
||||
return userLoginService.login(req.getData());
|
||||
}
|
||||
|
||||
@AOPLog
|
||||
@RequiredToken
|
||||
@RequestRateLimit
|
||||
@RequestMapping("/login/token")
|
||||
public LoginResponse token() {
|
||||
return userLoginService.login(TimiSpring.getToken(), userLoginService.getRequireLoginUserId());
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新当前用户资料
|
||||
*
|
||||
* @param req 用户资料
|
||||
* @return 最新登录用户
|
||||
*/
|
||||
@AOPLog
|
||||
@RequiredToken
|
||||
@RequestRateLimit
|
||||
@RequireCorePermission(CorePermissionCode.USER_UPDATE)
|
||||
@PostMapping("/current/update")
|
||||
public LoginResponse updateCurrent(@RequestBody User req) {
|
||||
User loginUser = userLoginService.getRequireLoginUser();
|
||||
User user = userService.get(loginUser.getId());
|
||||
if (req.getName() != null) {
|
||||
user.setName(req.getName());
|
||||
}
|
||||
if (req.getNick() != null) {
|
||||
user.setNick(req.getNick());
|
||||
}
|
||||
if (req.getGender() != null) {
|
||||
user.setGender(req.getGender());
|
||||
}
|
||||
if (req.getDescription() != null) {
|
||||
user.setDescription(req.getDescription());
|
||||
}
|
||||
if (req.getAvatarType() != null) {
|
||||
user.setAvatarType(req.getAvatarType());
|
||||
}
|
||||
if (req.getWrapperType() != null) {
|
||||
user.setWrapperType(req.getWrapperType());
|
||||
}
|
||||
userService.update(user);
|
||||
updateCurrentAvatar(loginUser.getId(), req.getTempFileIdList());
|
||||
return userLoginService.login(TimiSpring.getToken(), loginUser.getId());
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户登出
|
||||
*/
|
||||
@AOPLog
|
||||
@PostMapping("/logout")
|
||||
public void logout() {
|
||||
userLoginService.logout();
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改当前用户密码
|
||||
*
|
||||
* @param req 修改密码请求
|
||||
*/
|
||||
@AOPLog
|
||||
@RequireCorePermission(CorePermissionCode.USER_UPDATE)
|
||||
@PostMapping("/update/password")
|
||||
public void updatePassword(@RequestBody @Valid UpdatePasswordRequest req) {
|
||||
userLoginService.updatePassword(req.getOldValue(), req.getNewValue());
|
||||
}
|
||||
|
||||
@AOPLog
|
||||
@RequireCorePermission(CorePermissionCode.USER_UPDATE)
|
||||
@PostMapping("/update/email")
|
||||
public void updateEmail() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送手机号验证码
|
||||
*
|
||||
* @param req 手机号验证码请求
|
||||
*/
|
||||
@AOPLog
|
||||
@RequiredToken
|
||||
@RequireCorePermission(CorePermissionCode.USER_UPDATE)
|
||||
@PostMapping("/phone/verify/send")
|
||||
public void sendPhoneCode(@RequestBody @Valid PhoneVerifyCodeSendRequest req) {
|
||||
userLoginService.sendPhoneVerifyCode(req.getPhoneNo());
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证手机号
|
||||
*
|
||||
* @param req 手机号验证请求
|
||||
*/
|
||||
@AOPLog
|
||||
@RequiredToken
|
||||
@RequireCorePermission(CorePermissionCode.USER_UPDATE)
|
||||
@PostMapping("/phone/verify")
|
||||
public void verifyPhone(@RequestBody @Valid PhoneVerifyRequest req) {
|
||||
userLoginService.verifyPhoneNo(req.getPhoneNo(), req.getVerifyCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* 注销当前用户
|
||||
*
|
||||
* @param req 注销请求
|
||||
*/
|
||||
@AOPLog
|
||||
@RequireCorePermission(CorePermissionCode.USER_DELETE)
|
||||
@PostMapping("/cancel")
|
||||
public void cancel(@RequestBody @Valid CancelRequest req) {
|
||||
userLoginService.deactivate(req.getPassword());
|
||||
}
|
||||
|
||||
private void updateCurrentAvatar(String userId, List<String> tempFileIdList) {
|
||||
if (tempFileIdList == null || tempFileIdList.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
BizUpdateReq req = new BizUpdateReq();
|
||||
req.setBizType(Attachment.BizType.USER);
|
||||
req.setBizId(userId);
|
||||
List<Attachment> items = attachmentService.listByBizId(Attachment.BizType.USER, userId).stream()
|
||||
.filter(item -> !User.AttachType.AVATAR.name().equals(item.getAttachType()))
|
||||
.map(item -> {
|
||||
Attachment attachment = new Attachment();
|
||||
attachment.setId(item.getId());
|
||||
return attachment;
|
||||
})
|
||||
.toList();
|
||||
List<Attachment> avatarItems = tempFileIdList.stream().map(tempFileId -> {
|
||||
Attachment attachment = new Attachment();
|
||||
attachment.setTempFileId(tempFileId);
|
||||
attachment.setAttachTypeValue(User.AttachType.AVATAR);
|
||||
return attachment;
|
||||
}).toList();
|
||||
items = new ArrayList<>(items);
|
||||
items.addAll(avatarItems);
|
||||
req.setItems(items);
|
||||
attachmentService.updateByBiz(req);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user