用户启用不启用接口开发
ci-userbase-service / build-and-push (push) Successful in 45s

This commit is contained in:
chenxing
2026-08-27 10:08:58 +08:00
parent 6675ccc8d5
commit ebbaeee181
4 changed files with 57 additions and 5 deletions
@@ -10,6 +10,8 @@ import com.yunhai.userbase.common.annotation.OapiLog;
import com.yunhai.userbase.common.validation.ValidationGroups;
import com.yunhai.userbase.config.Config;
import com.yunhai.userbase.entity.ApplicationInfo;
import com.yunhai.userbase.model.sysuser.BatchChangeStatusRequest;
import com.yunhai.userbase.model.sysuser.SysUserChangeStatusRequest;
import com.yunhai.userbase.model.sysuser.SysUserGroupDeleteItem;
import com.yunhai.userbase.model.sysuser.SysUserGroupStateRequest;
import com.yunhai.userbase.model.sysuser.SysUserMoveRequest;
@@ -272,4 +274,24 @@ public class UserController {
request.getSchoolId(), request.getGroupId());
return userCenterService.getUserInfoWithDeptById(request.getUserId());
}
/**
* 设置单个用户状态(启用/禁用账号,语义同管理端 sysuser/Enable、sysuser/Disable 的合并版)。<br>
* disabled=true 禁用、false 启用;变更后自动推送「编辑用户」订阅。<br>
* 鉴权由过滤器层强制签名;POST 自动记 OapiLog。
*/
@PostMapping("changeStatus")
public void changeStatus(@RequestBody @Validated SysUserChangeStatusRequest request) {
sysUserService.changeStatus(request.getUserId(), request.getDisabled());
}
/**
* 批量设置用户状态(启用/禁用,语义同管理端 sysuser/BatchChangeStatus)。<br>
* 任一 userId 无效则整体拒绝;变更后自动推送「编辑用户」订阅。<br>
* 鉴权由过滤器层强制签名;POST 自动记 OapiLog。
*/
@PostMapping("batchChangeStatus")
public void batchChangeStatus(@RequestBody @Validated BatchChangeStatusRequest request) {
sysUserService.batchChangeStatus(request.getUserIds(), request.getDisabled());
}
}
@@ -21,7 +21,7 @@ public class UserGroupNodeVo {
/** 组名称。 */
private String name;
/** 是否用户直接归属的组(叶子高亮用);祖先组为 false。 */
/** 是否用户主归属组(isMain=1,无主归属时取第一个直接归属组);祖先组为 false。 */
private Boolean own;
/** 子节点(仅含祖先链上的节点)。 */
@@ -0,0 +1,20 @@
package com.yunhai.userbase.model.sysuser;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @description 开放接口:设置用户状态请求(启用/禁用账号)。
*/
@Data
public class SysUserChangeStatusRequest {
/** 用户ID。 */
@NotNull(message = "用户ID不能为空")
private Integer userId;
/** 是否禁用:true=禁用,false=启用。 */
@NotNull(message = "状态不能为空")
private Boolean disabled;
}
@@ -1026,12 +1026,22 @@ public class GroupAuthzService implements IGroupAuthzService {
if (!sysUserRepository.existsById(userId)) {
throw new DException("用户不存在");
}
// 1. 用户直接归属的组
// 1. 用户直接归属的组;主归属组(isMain=1)用于「本组」标记,无主归属时取第一个兜底(与 searchUsers 一致)
List<SysUserGroupRel> rels = sysUserGroupRelRepository.findByUserId(userId);
Set<Integer> selfGroupIds = new LinkedHashSet<>();
Integer mainGroupId = null;
boolean hasMainGroup = false;
for (SysUserGroupRel rel : rels) {
if (rel.getGroupId() != null) {
selfGroupIds.add(rel.getGroupId());
if (rel.getGroupId() == null) {
continue;
}
selfGroupIds.add(rel.getGroupId());
if (!hasMainGroup && rel.getIsMain() != null && rel.getIsMain() == 1) {
mainGroupId = rel.getGroupId();
hasMainGroup = true;
}
if (mainGroupId == null) {
mainGroupId = rel.getGroupId();
}
}
if (selfGroupIds.isEmpty()) {
@@ -1053,7 +1063,7 @@ public class GroupAuthzService implements IGroupAuthzService {
UserGroupNodeVo vo = new UserGroupNodeVo();
vo.setId(id);
vo.setName(g == null || g.getName() == null ? String.valueOf(id) : g.getName());
vo.setOwn(selfGroupIds.contains(id));
vo.setOwn(mainGroupId != null && id.equals(mainGroupId));
voMap.put(id, vo);
}
List<UserGroupNodeVo> roots = new ArrayList<>();