Files
UserBaseService/src/main/java/com/yunhai/userbase/controller/api/SysUserController.java
T

148 lines
6.0 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package com.yunhai.userbase.controller.api;
import com.yunhai.platform.utils.exception.DException;
import com.yunhai.platform.utils.exception.ErrorCode;
import com.yunhai.userbase.common.annotation.OperationLog;
import com.yunhai.userbase.common.validation.ValidationGroups;
import com.yunhai.userbase.config.Config;
import com.yunhai.userbase.model.BasePageQuery;
import com.yunhai.userbase.model.BasePageResult;
import com.yunhai.userbase.model.sysuser.BatchChangeStatusRequest;
import com.yunhai.userbase.model.sysuser.BatchDeleteRequest;
import com.yunhai.userbase.model.sysuser.BatchImportResult;
import com.yunhai.userbase.model.sysuser.ChangeGroupsRequest;
import com.yunhai.userbase.model.sysuser.ChangeSortNoRequest;
import com.yunhai.userbase.model.sysuser.SysUserQuery;
import com.yunhai.userbase.model.sysuser.SysUserRequest;
import com.yunhai.userbase.model.sysuser.SysUserVo;
import com.yunhai.userbase.service.ISysUserService;
import com.yunhai.userbase.utils.PageUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* @author chenx
* @date 2026/7/20 16:14
* @description 组用户管理
*/
@RestController
@RequestMapping(value = Config.API_PATH + "/sysuser/")
public class SysUserController {
@Autowired
private ISysUserService sysUserService;
@OperationLog("新增用户")
@PostMapping("Add")
public Integer add(@RequestBody @Validated(ValidationGroups.Create.class) SysUserRequest request) {
List<String> data=new ArrayList<>();
return sysUserService.add(request);
}
@OperationLog("编辑用户")
@PostMapping("Edit/{id}")
public void edit(@PathVariable Integer id, @RequestBody @Validated(ValidationGroups.Update.class) SysUserRequest request) {
sysUserService.edit(id, request);
}
/**
* 将用户从指定组中移除;若该用户无其它组关联则级联删除用户。
*/
@OperationLog("从组中删除用户")
@PostMapping("DeleteFromGroup/{userId}/{groupId}")
public void deleteFromGroup(@PathVariable Integer userId, @PathVariable Integer groupId) {
sysUserService.deleteFromGroup(userId, groupId);
}
/**
* 批量从指定组中移除用户;无其它组关联者级联删除用户。
*/
@OperationLog("批量从组中删除用户")
@PostMapping("BatchDelete")
public void batchDelete(@RequestBody @Validated BatchDeleteRequest request) {
sysUserService.batchDeleteFromGroup(request.getUserIds(), request.getGroupId());
}
/** 禁用用户(disabled=true) */
@OperationLog("禁用用户")
@PostMapping("Disable/{id}")
public void disable(@PathVariable Integer id) {
sysUserService.changeStatus(id, true);
}
/** 启用用户(disabled=false) */
@OperationLog("启用用户")
@PostMapping("Enable/{id}")
public void enable(@PathVariable Integer id) {
sysUserService.changeStatus(id, false);
}
/** 批量设置用户状态 */
@OperationLog("批量设置用户状态")
@PostMapping("BatchChangeStatus")
public void batchChangeStatus(@RequestBody @Validated BatchChangeStatusRequest request) {
sysUserService.batchChangeStatus(request.getUserIds(), request.getDisabled());
}
@GetMapping("/List")
public BasePageResult<SysUserVo> list(SysUserQuery query, BasePageQuery pageQuery) {
// 排序字段在关联表,无法走 Pageable.sort,统一由 Service.Specification 控制
// (根节点按 id 升序,具体组按组内 sort_no 升序)。此处不传 Sort,避免覆盖 Spec 的 orderBy。
return PageUtils.toResult(sysUserService.list(query, PageUtils.toPageable(pageQuery, null)));
}
/** 调整用户在某组内的排序号(sort_no):1~999,可空表示清除 */
@OperationLog("设置用户组内排序号")
@PostMapping("ChangeSortNo/{userId}")
public void changeSortNo(@PathVariable Integer userId,
@RequestBody @Validated ChangeSortNoRequest request) {
sysUserService.changeSortNo(userId, request.getGroupId(), request.getSortNo());
}
@OperationLog("调整组")
@PostMapping("ChangeGroups")
public void changeGroups(@RequestBody @Validated ChangeGroupsRequest request) {
sysUserService.changeGroups(request.getUserIds(), request.getGroupIds());
}
@GetMapping("Groups/{userId}")
public List<Integer> getUserGroups(@PathVariable Integer userId) {
return sysUserService.findGroupIdsByUserId(userId);
}
@OperationLog("批量导入用户")
@PostMapping("BatchImport")
public BatchImportResult batchImport(@RequestParam("file") MultipartFile file) {
return sysUserService.batchImport(file);
}
/**
* 下载用户批量导入模板(真实 .xlsx):平铺当前组及子孙组,仅填充组名(路径)与组id;其余列留空供填写。
*/
@GetMapping("DownloadTemplate")
public void downloadTemplate(@RequestParam(value = "groupId", required = false) Integer groupId,
HttpServletResponse response) throws IOException {
sysUserService.downloadImportTemplate(groupId, response);
}
/**
* 导出组下所有用户(含子组)为 Excel;与导入模板同构,末尾追加用户id列。
* 前端直接跳转此地址触发浏览器下载。
*/
@GetMapping("Export")
public void export(@RequestParam(value = "groupId", required = false) Integer groupId,
@RequestParam(value = "withSub", defaultValue = "1") Integer withSub,
@RequestParam(value = "name", required = false) String name,
HttpServletResponse response) throws IOException {
sysUserService.exportUsers(groupId, withSub, name, response);
}
}