This commit is contained in:
@@ -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<>();
|
||||
|
||||
Reference in New Issue
Block a user