用户启用不启用接口开发
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.common.validation.ValidationGroups;
|
||||||
import com.yunhai.userbase.config.Config;
|
import com.yunhai.userbase.config.Config;
|
||||||
import com.yunhai.userbase.entity.ApplicationInfo;
|
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.SysUserGroupDeleteItem;
|
||||||
import com.yunhai.userbase.model.sysuser.SysUserGroupStateRequest;
|
import com.yunhai.userbase.model.sysuser.SysUserGroupStateRequest;
|
||||||
import com.yunhai.userbase.model.sysuser.SysUserMoveRequest;
|
import com.yunhai.userbase.model.sysuser.SysUserMoveRequest;
|
||||||
@@ -272,4 +274,24 @@ public class UserController {
|
|||||||
request.getSchoolId(), request.getGroupId());
|
request.getSchoolId(), request.getGroupId());
|
||||||
return userCenterService.getUserInfoWithDeptById(request.getUserId());
|
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;
|
private String name;
|
||||||
|
|
||||||
/** 是否用户直接归属的组(叶子高亮用);祖先组为 false。 */
|
/** 是否用户主归属组(isMain=1,无主归属时取第一个直接归属组);祖先组为 false。 */
|
||||||
private Boolean own;
|
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)) {
|
if (!sysUserRepository.existsById(userId)) {
|
||||||
throw new DException("用户不存在");
|
throw new DException("用户不存在");
|
||||||
}
|
}
|
||||||
// 1. 用户直接归属的组
|
// 1. 用户直接归属的组;主归属组(isMain=1)用于「本组」标记,无主归属时取第一个兜底(与 searchUsers 一致)
|
||||||
List<SysUserGroupRel> rels = sysUserGroupRelRepository.findByUserId(userId);
|
List<SysUserGroupRel> rels = sysUserGroupRelRepository.findByUserId(userId);
|
||||||
Set<Integer> selfGroupIds = new LinkedHashSet<>();
|
Set<Integer> selfGroupIds = new LinkedHashSet<>();
|
||||||
|
Integer mainGroupId = null;
|
||||||
|
boolean hasMainGroup = false;
|
||||||
for (SysUserGroupRel rel : rels) {
|
for (SysUserGroupRel rel : rels) {
|
||||||
if (rel.getGroupId() != null) {
|
if (rel.getGroupId() == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
selfGroupIds.add(rel.getGroupId());
|
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()) {
|
if (selfGroupIds.isEmpty()) {
|
||||||
@@ -1053,7 +1063,7 @@ public class GroupAuthzService implements IGroupAuthzService {
|
|||||||
UserGroupNodeVo vo = new UserGroupNodeVo();
|
UserGroupNodeVo vo = new UserGroupNodeVo();
|
||||||
vo.setId(id);
|
vo.setId(id);
|
||||||
vo.setName(g == null || g.getName() == null ? String.valueOf(id) : g.getName());
|
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);
|
voMap.put(id, vo);
|
||||||
}
|
}
|
||||||
List<UserGroupNodeVo> roots = new ArrayList<>();
|
List<UserGroupNodeVo> roots = new ArrayList<>();
|
||||||
|
|||||||
Reference in New Issue
Block a user