package com.cloudroam.controller.cms; import com.cloudroam.bo.GroupPermissionBO; import com.cloudroam.dto.admin.*; import com.cloudroam.vo.*; import com.baomidou.mybatisplus.core.metadata.IPage; import com.cloudroam.dto.admin.*; import com.cloudroam.vo.*; import io.github.talelin.core.annotation.AdminRequired; import io.github.talelin.core.annotation.PermissionMeta; import io.github.talelin.core.annotation.PermissionModule; import com.cloudroam.common.util.PageUtil; import com.cloudroam.dto.admin.*; import com.cloudroam.dto.query.BasePageDTO; import com.cloudroam.model.GroupDO; import com.cloudroam.model.PermissionDO; import com.cloudroam.model.UserDO; import com.cloudroam.service.AdminService; import com.cloudroam.service.GroupService; import com.cloudroam.vo.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.validation.constraints.Positive; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * 管理员控制器 * @author * @author */ @Validated @RestController @RequestMapping("/cms/admin") @PermissionModule(value = "管理员") public class AdminController { @Autowired private AdminService adminService; @Autowired private GroupService groupService; @AdminRequired @GetMapping("/permission") @PermissionMeta(value = "查询所有可分配的权限", mount = false) public Map> getAllPermissions() { return adminService.getAllStructuralPermissions(); } // @AdminRequired @GetMapping("/users") // @PermissionMeta(value = "查询所有用户", mount = false) public PageResponseVO getUsers( @Validated QueryUsersDTO dto) { IPage iPage = adminService.getUserPageByGroupId(dto.getGroupId(), dto.getCount(), dto.getPage()); List userInfos = iPage.getRecords().stream().map(user -> { List groups = groupService.getUserGroupsByUserId(Integer.valueOf(user.getId())); return new UserInfoVO(user, groups); }).collect(Collectors.toList()); return PageUtil.build(iPage, userInfos); } @AdminRequired @PutMapping("/user/{id}/password") @PermissionMeta(value = "修改用户密码", mount = false) public UpdatedVO changeUserPassword(@PathVariable @Positive(message = "{id.positive}") Integer id, @RequestBody @Validated ResetPasswordDTO validator) { adminService.changeUserPassword(id, validator); return new UpdatedVO(4); } @AdminRequired @DeleteMapping("/user/{id}") @PermissionMeta(value = "删除用户", mount = false) public DeletedVO deleteUser(@PathVariable @Positive(message = "{id.positive}") Integer id) { adminService.deleteUser(id); return new DeletedVO(5); } @AdminRequired @PutMapping("/user/{id}") @PermissionMeta(value = "管理员更新用户信息", mount = false) public UpdatedVO updateUser(@PathVariable @Positive(message = "{id.positive}") Integer id, @RequestBody @Validated UpdateUserInfoDTO validator) { adminService.updateUserInfo(id, validator); return new UpdatedVO(6); } @AdminRequired @GetMapping("/group") @PermissionMeta(value = "查询所有权限组及其权限", mount = false) public PageResponseVO getGroups( @Validated BasePageDTO dto) { IPage iPage = adminService.getGroupPage(dto.getPage(), dto.getCount()); return PageUtil.build(iPage); } @AdminRequired @GetMapping("/group/all") @PermissionMeta(value = "查询所有权限组", mount = false) public List getAllGroup() { return adminService.getAllGroups(); } @AdminRequired @GetMapping("/group/{id}") @PermissionMeta(value = "查询一个权限组及其权限", mount = false) public GroupPermissionBO getGroup(@PathVariable @Positive(message = "{id.positive}") Integer id) { return adminService.getGroup(id); } @AdminRequired @PostMapping("/group") @PermissionMeta(value = "新建权限组", mount = false) public CreatedVO createGroup(@RequestBody @Validated NewGroupDTO validator) { adminService.createGroup(validator); return new CreatedVO(15); } @AdminRequired @PutMapping("/group/{id}") @PermissionMeta(value = "更新一个权限组", mount = false) public UpdatedVO updateGroup(@PathVariable @Positive(message = "{id.positive}") Integer id, @RequestBody @Validated UpdateGroupDTO validator) { adminService.updateGroup(id, validator); return new UpdatedVO(7); } @AdminRequired @DeleteMapping("/group/{id}") @PermissionMeta(value = "删除一个权限组", mount = false) public DeletedVO deleteGroup(@PathVariable @Positive(message = "{id.positive}") Integer id) { adminService.deleteGroup(id); return new DeletedVO(8); } @AdminRequired @PostMapping("/permission/dispatch") @PermissionMeta(value = "分配单个权限", mount = false) public CreatedVO dispatchPermission(@RequestBody @Validated DispatchPermissionDTO validator) { adminService.dispatchPermission(validator); return new CreatedVO(9); } @AdminRequired @PostMapping("/permission/dispatch/batch") @PermissionMeta(value = "分配多个权限", mount = false) public CreatedVO dispatchPermissions(@RequestBody @Validated DispatchPermissionsDTO validator) { adminService.dispatchPermissions(validator); return new CreatedVO(9); } @AdminRequired @PostMapping("/permission/remove") @PermissionMeta(value = "删除多个权限", mount = false) public DeletedVO removePermissions(@RequestBody @Validated RemovePermissionsDTO validator) { adminService.removePermissions(validator); return new DeletedVO(10); } }