转出状态以及相关接口更改

This commit is contained in:
chenxing
2026-08-26 12:38:31 +08:00
parent 0b0be6b8e5
commit 5627252eab
5 changed files with 115 additions and 0 deletions
@@ -0,0 +1,18 @@
package com.yunhai.userbase.common.converter;
import com.yunhai.userbase.enums.UserGroupRelStatusEnum;
import javax.persistence.AttributeConverter;
/**
* UserGroupRelStatusEnum 专用 JPA 转换器(int &lt;-&gt; 枚举)。<br>
* 继承通用基类 CommonIntEnumConverter,仅在构造器绑定枚举 class 即可。
*
* @author chenx
*/
public class UserGroupRelStatusEnumConverter extends CommonIntEnumConverter<UserGroupRelStatusEnum> {
public UserGroupRelStatusEnumConverter() {
super(UserGroupRelStatusEnum.class);
}
}
@@ -0,0 +1,34 @@
package com.yunhai.userbase.enums;
import com.yunhai.platform.utils.enums.IEnum;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author chenx
* @date 2026/8/26
* @description 用户-组关联状态(sys_user_group_rel.status):0=正常,1=转出。<br>
* 区别于全局启用/禁用({@link StatusEnum},挂 sys_user 上),本枚举表达用户在<b>某个组上</b>的状态;
* 转出仅作关系标记,不影响成员查询、组织链与下游推送。
*/
@Getter
@AllArgsConstructor
public enum UserGroupRelStatusEnum implements IEnum<Integer> {
NORMAL(0, "正常"),
TRANSFERRED_OUT(1, "转出");
private Integer key;
private String value;
@Override
public Integer getKey() {
return this.key;
}
@Override
public String getValue() {
return this.value;
}
}
@@ -0,0 +1,28 @@
package com.yunhai.userbase.model.sysuser;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @description 开放接口:设置用户组状态请求(转出/恢复,按 (userId, groupId) 维度,学校范围限定)。
*/
@Data
public class SysUserGroupStateRequest {
/** 用户ID。 */
@NotNull(message = "用户ID不能为空")
private Integer userId;
/** 组ID(用户所在的具体组)。 */
@NotNull(message = "组ID不能为空")
private Integer groupId;
/** 学校组ID:限定操作范围,groupId 必须属于该校子树。 */
@NotNull(message = "学校ID不能为空")
private Integer schoolId;
/** 目标状态:0=恢复正常,1=转出。 */
@NotNull(message = "状态不能为空")
private Integer state;
}
@@ -0,0 +1,28 @@
package com.yunhai.userbase.model.sysuser;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @description 开放接口:跨校转入请求(用户在源学校标记转出后,迁移到目标学校的指定组)。
*/
@Data
public class SysUserTransferSchoolRequest {
/** 待迁移用户ID。 */
@NotNull(message = "用户ID不能为空")
private Integer userId;
/** 原学校组ID(源学校,须真实存在且为学校组):要求用户在该学校存在至少一条「转出」状态的组关系。 */
@NotNull(message = "原学校ID不能为空")
private Integer fromSchoolId;
/** 目标学校组ID(转入后的学校)。 */
@NotNull(message = "目标学校ID不能为空")
private Integer schoolId;
/** 目标组ID(目标学校内挂载的具体组,迁移后的主归属组)。 */
@NotNull(message = "目标组ID不能为空")
private Integer groupId;
}
@@ -0,0 +1,7 @@
-- 为 sys_user_group_rel 关联表新增 status 字段,用于表达「用户在某组上」的状态:0=正常,1=转出。
-- 转出仅作关系标记:不影响成员查询、组织链与下游推送;改组/移动(changeGroups 覆盖式重建)时状态随用户继承。
-- 存量数据默认 0=正常(迁移前未转出的所有关系视为正常)。
-- 执行方式:由 DBA 在 dev / prod 各自手工执行,AI 不代跑(本地 dev 靠 ddl-auto=update 自动加列)。
ALTER TABLE sys_user_group_rel
ADD COLUMN status TINYINT NOT NULL DEFAULT 0 COMMENT '组内状态 0=正常 1=转出';