1. 系统新增用户标记为外部用户;e 办同步用户标记为系统用户
2. 业务表新增基础业务字段,创建人与更新人名称
(cherry picked from commit 9ee1100b29)
This commit is contained in:
@@ -45,4 +45,15 @@ public class ServiceErrorCodeRange {
|
||||
|
||||
// 模块 ai 错误码区间 [1-022-000-000 ~ 1-023-000-000)
|
||||
|
||||
// 模块 databus 错误码区间 [1-023-000-000 ~ 1-024-000-000)
|
||||
// 模块 rule 错误码区间 [1-024-000-000 ~ 1-025-000-000)
|
||||
// 模块 gateway 错误码区间 [1-025-000-000 ~ 1-026-000-000)
|
||||
// 模块 convert 错误码区间 [1-026-000-000 ~ 1-027-000-000)
|
||||
// 模块 base 错误码区间 [1-027-000-000 ~ 1-028-000-000)
|
||||
// 模块 manage 错误码区间 [1-028-000-000 ~ 1-029-000-000)
|
||||
// 模块 supply 错误码区间 [1-029-000-000 ~ 1-030-000-000)
|
||||
// 模块 mes 错误码区间 [1-030-000-000 ~ 1-031-000-000)
|
||||
// 模块 logistics 错误码区间 [1-031-000-000 ~ 1-032-000-000)
|
||||
// 模块 qms 错误码区间 [1-032-000-000 ~ 1-033-000-000)
|
||||
|
||||
}
|
||||
|
||||
@@ -34,6 +34,12 @@ public class BusinessBaseDO extends BaseDO {
|
||||
* 多租户编号
|
||||
*/
|
||||
private Long tenantId;
|
||||
/** 创建人名称 */
|
||||
@TableField(fill = FieldFill.INSERT, jdbcType = JdbcType.VARCHAR)
|
||||
private String creatorName;
|
||||
/** 更新人名称 */
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE, jdbcType = JdbcType.VARCHAR)
|
||||
private String updaterName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private List<String> inputStrs;
|
||||
@@ -49,6 +55,8 @@ public class BusinessBaseDO extends BaseDO {
|
||||
this.deptId = null;
|
||||
this.deptName = null;
|
||||
this.postId = null;
|
||||
this.creatorName = null;
|
||||
this.updaterName = null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import cn.iocoder.yudao.framework.mybatis.core.annotation.BusinessCode;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BusinessBaseDO;
|
||||
import cn.iocoder.yudao.framework.security.core.LoginUser;
|
||||
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
||||
import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils;
|
||||
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
|
||||
import jakarta.annotation.Resource;
|
||||
@@ -51,6 +52,7 @@ public class DefaultDBFieldHandler implements MetaObjectHandler {
|
||||
}
|
||||
|
||||
Long userId = WebFrameworkUtils.getLoginUserId();
|
||||
String userNickname = SecurityFrameworkUtils.getLoginUserNickname();
|
||||
// 当前登录用户不为空,创建人为空,则当前登录用户为创建人
|
||||
if (Objects.nonNull(userId) && Objects.isNull(baseDO.getCreator())) {
|
||||
baseDO.setCreator(userId.toString());
|
||||
@@ -65,6 +67,9 @@ public class DefaultDBFieldHandler implements MetaObjectHandler {
|
||||
// 需要在业务层手动设置
|
||||
autoFillDeptInfo(businessBaseDO);
|
||||
|
||||
// 自动填充用户名称字段
|
||||
autoFillUserNames(businessBaseDO);
|
||||
|
||||
// 自动填充带 @BusinessCode 注解的字段序列
|
||||
autoFillBusinessCode(businessBaseDO);
|
||||
}
|
||||
@@ -81,9 +86,32 @@ public class DefaultDBFieldHandler implements MetaObjectHandler {
|
||||
// 当前登录用户不为空,更新人为空,则当前登录用户为更新人
|
||||
Object modifier = getFieldValByName("updater", metaObject);
|
||||
Long userId = WebFrameworkUtils.getLoginUserId();
|
||||
String userNickname = SecurityFrameworkUtils.getLoginUserNickname();
|
||||
if (Objects.nonNull(userId) && Objects.isNull(modifier)) {
|
||||
setFieldValByName("updater", userId.toString(), metaObject);
|
||||
}
|
||||
|
||||
// 对于 BusinessBaseDO,自动填充更新人名称
|
||||
if (Objects.nonNull(metaObject) && metaObject.getOriginalObject() instanceof BusinessBaseDO) {
|
||||
Object updaterNameVal = getFieldValByName("updaterName", metaObject);
|
||||
if (Objects.nonNull(userNickname) && Objects.isNull(updaterNameVal)) {
|
||||
setFieldValByName("updaterName", userNickname, metaObject);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void autoFillUserNames(BusinessBaseDO businessBaseDO) {
|
||||
String userNickname = SecurityFrameworkUtils.getLoginUserNickname();
|
||||
if (Objects.nonNull(userNickname)) {
|
||||
// 创建人名称为空,则填充当前用户昵称
|
||||
if (Objects.isNull(businessBaseDO.getCreatorName())) {
|
||||
businessBaseDO.setCreatorName(userNickname);
|
||||
}
|
||||
// 更新人名称为空,则填充当前用户昵称
|
||||
if (Objects.isNull(businessBaseDO.getUpdaterName())) {
|
||||
businessBaseDO.setUpdaterName(userNickname);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void autoFillBusinessCode(BusinessBaseDO businessBaseDO) {
|
||||
|
||||
@@ -50,8 +50,8 @@ spring:
|
||||
# Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
|
||||
data:
|
||||
redis:
|
||||
host: 172.16.46.63:30379 # 地址
|
||||
port: 6379 # 端口
|
||||
host: 172.16.46.63 # 地址
|
||||
port: 30379 # 端口
|
||||
database: 1 # 数据库索引
|
||||
# password: 123456 # 密码,建议生产环境开启
|
||||
|
||||
|
||||
@@ -50,8 +50,8 @@ spring:
|
||||
# Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
|
||||
data:
|
||||
redis:
|
||||
host: 172.16.46.63:30379 # 地址
|
||||
port: 6379 # 端口
|
||||
host: 172.16.46.63 # 地址
|
||||
port: 30379 # 端口
|
||||
database: 1 # 数据库索引
|
||||
# password: 123456 # 密码,建议生产环境开启
|
||||
|
||||
|
||||
@@ -50,8 +50,8 @@ spring:
|
||||
# Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
|
||||
data:
|
||||
redis:
|
||||
host: 172.16.46.63:30379 # 地址
|
||||
port: 6379 # 端口
|
||||
host: 172.16.46.63 # 地址
|
||||
port: 30379 # 端口
|
||||
database: 1 # 数据库索引
|
||||
# password: 123456 # 密码,建议生产环境开启
|
||||
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
package cn.iocoder.yudao.module.system.enums.dept;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 部门来源枚举
|
||||
*
|
||||
* @author ZT
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public enum DeptSourceEnum {
|
||||
|
||||
EXTERNAL(1, "外部部门"), // 系统创建的部门
|
||||
SYNC(2, "同步部门"); // 通过 OrgSyncService 同步的部门
|
||||
|
||||
/**
|
||||
* 类型
|
||||
*/
|
||||
private final Integer source;
|
||||
/**
|
||||
* 名字
|
||||
*/
|
||||
private final String name;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package cn.iocoder.yudao.module.system.enums.user;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 用户来源枚举
|
||||
*
|
||||
* @author ZT
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public enum UserSourceEnum {
|
||||
|
||||
EXTERNAL(1, "外部用户"), // 系统创建、注册等方式产生的用户
|
||||
SYNC(2, "同步用户"); // 通过 UserSyncService 同步的用户
|
||||
|
||||
/**
|
||||
* 类型
|
||||
*/
|
||||
private final Integer source;
|
||||
/**
|
||||
* 名字
|
||||
*/
|
||||
private final String name;
|
||||
|
||||
}
|
||||
@@ -56,4 +56,7 @@ public class DeptSaveReqVO {
|
||||
@Schema(description = "是否集团", example = "false")
|
||||
private Boolean isGroup;
|
||||
|
||||
@Schema(description = "部门来源类型", example = "1")
|
||||
private Integer deptSource;
|
||||
|
||||
}
|
||||
|
||||
@@ -70,6 +70,9 @@ public class UserSaveReqVO {
|
||||
@DiffLogField(name = "用户头像")
|
||||
private String avatar;
|
||||
|
||||
@Schema(description = "用户来源类型", example = "1")
|
||||
private Integer userSource;
|
||||
|
||||
// ========== 仅【创建】时,需要传递的字段 ==========
|
||||
|
||||
@Schema(description = "密码", requiredMode = Schema.RequiredMode.REQUIRED, example = "123456")
|
||||
|
||||
@@ -75,4 +75,11 @@ public class DeptDO extends TenantBaseDO {
|
||||
*/
|
||||
private Boolean isGroup;
|
||||
|
||||
/**
|
||||
* 部门来源类型
|
||||
*
|
||||
* 枚举 {@link cn.iocoder.yudao.module.system.enums.dept.DeptSourceEnum}
|
||||
*/
|
||||
private Integer deptSource;
|
||||
|
||||
}
|
||||
@@ -110,4 +110,11 @@ public class AdminUserDO extends TenantBaseDO {
|
||||
*/
|
||||
private LocalDateTime loginDate;
|
||||
|
||||
/**
|
||||
* 用户来源类型
|
||||
*
|
||||
* 枚举 {@link cn.iocoder.yudao.module.system.enums.user.UserSourceEnum}
|
||||
*/
|
||||
private Integer userSource;
|
||||
|
||||
}
|
||||
|
||||
@@ -30,6 +30,8 @@ import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.
|
||||
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
|
||||
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*;
|
||||
|
||||
import cn.iocoder.yudao.module.system.enums.dept.DeptSourceEnum;
|
||||
|
||||
/**
|
||||
* 部门 Service 实现类
|
||||
*
|
||||
@@ -61,6 +63,10 @@ public class DeptServiceImpl implements DeptService {
|
||||
|
||||
// 插入部门
|
||||
DeptDO dept = BeanUtils.toBean(createReqVO, DeptDO.class);
|
||||
// 设置部门来源:如果未指定,默认为外部部门
|
||||
if (dept.getDeptSource() == null) {
|
||||
dept.setDeptSource(DeptSourceEnum.EXTERNAL.getSource());
|
||||
}
|
||||
deptMapper.insert(dept);
|
||||
return dept.getId();
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptSaveReqV
|
||||
import cn.iocoder.yudao.module.system.controller.admin.sync.vo.org.*;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
|
||||
import cn.iocoder.yudao.module.system.enums.dept.DeptTypeEnum;
|
||||
import cn.iocoder.yudao.module.system.enums.dept.DeptSourceEnum;
|
||||
import cn.iocoder.yudao.module.system.service.dept.DeptService;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -32,6 +33,8 @@ public class OrgSyncServiceImpl implements OrgSyncService {
|
||||
if (requestVO.getDeptType() != null) {
|
||||
bean.setIsCompany(DeptTypeEnum.isCompany(requestVO.getDeptType()));
|
||||
}
|
||||
// 设置为同步部门
|
||||
bean.setDeptSource(DeptSourceEnum.SYNC.getSource());
|
||||
LoginUser loginUser = getLoginUser();
|
||||
bean.setTenantId(Optional.ofNullable(loginUser).orElse(new LoginUser()).getTenantId());
|
||||
Long deptId = deptService.createDept(bean);
|
||||
|
||||
@@ -14,6 +14,7 @@ import cn.iocoder.yudao.module.system.service.dept.PostService;
|
||||
import cn.iocoder.yudao.module.system.service.user.AdminUserService;
|
||||
import cn.iocoder.yudao.module.system.service.userdept.UserDeptService;
|
||||
import cn.iocoder.yudao.module.system.util.sync.SyncVerifyUtil;
|
||||
import cn.iocoder.yudao.module.system.enums.user.UserSourceEnum;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -46,6 +47,8 @@ public class UserSyncServiceImpl implements UserSyncService {
|
||||
TenantContextHolder.setTenantId(tenantId);
|
||||
// 中铝 e 办不会设置密码,设置默认密码
|
||||
saveReqVO.setPassword("ZLEB");
|
||||
// 设置为同步用户
|
||||
saveReqVO.setUserSource(UserSourceEnum.SYNC.getSource());
|
||||
Long userId = adminUserService.createUser(saveReqVO);
|
||||
UserCreateResponseVO resp = new UserCreateResponseVO();
|
||||
resp.setUid(String.valueOf(userId));
|
||||
|
||||
@@ -28,6 +28,7 @@ import cn.iocoder.yudao.module.system.service.dept.PostService;
|
||||
import cn.iocoder.yudao.module.system.service.permission.PermissionService;
|
||||
import cn.iocoder.yudao.module.system.service.tenant.TenantService;
|
||||
import cn.iocoder.yudao.module.system.service.userdept.UserDeptService;
|
||||
import cn.iocoder.yudao.module.system.enums.user.UserSourceEnum;
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import com.mzt.logapi.context.LogRecordContext;
|
||||
import com.mzt.logapi.service.impl.DiffParseFunction;
|
||||
@@ -108,6 +109,10 @@ public class AdminUserServiceImpl implements AdminUserService {
|
||||
LoginUser loginUser = getLoginUser();
|
||||
user.setTenantId(Optional.ofNullable(loginUser).orElse(new LoginUser()).getTenantId());
|
||||
}
|
||||
// 设置用户来源:如果未指定,默认为外部用户
|
||||
if (user.getUserSource() == null) {
|
||||
user.setUserSource(UserSourceEnum.EXTERNAL.getSource());
|
||||
}
|
||||
user.setPassword(encodePassword(createReqVO.getPassword()));
|
||||
userMapper.insert(user);
|
||||
// 2.2 插入关联部门
|
||||
@@ -145,6 +150,7 @@ public class AdminUserServiceImpl implements AdminUserService {
|
||||
// 2. 插入用户
|
||||
AdminUserDO user = BeanUtils.toBean(registerReqVO, AdminUserDO.class);
|
||||
user.setStatus(CommonStatusEnum.ENABLE.getStatus()); // 默认开启
|
||||
user.setUserSource(UserSourceEnum.EXTERNAL.getSource()); // 注册用户设为外部用户
|
||||
user.setPassword(encodePassword(registerReqVO.getPassword())); // 加密密码
|
||||
userMapper.insert(user);
|
||||
return user.getId();
|
||||
|
||||
@@ -7,10 +7,10 @@ import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptListReqV
|
||||
import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptSaveReqVO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
|
||||
import cn.iocoder.yudao.module.system.dal.mysql.dept.DeptMapper;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.context.annotation.Import;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
@@ -42,7 +42,7 @@ public class DeptServiceImplTest extends BaseDbUnitTest {
|
||||
o.setId(null); // 防止 id 被设置
|
||||
o.setParentId(DeptDO.PARENT_ID_ROOT);
|
||||
o.setStatus(randomCommonStatus());
|
||||
});
|
||||
}).setDeptSource(1);
|
||||
|
||||
// 调用
|
||||
Long deptId = deptService.createDept(reqVO);
|
||||
@@ -56,7 +56,7 @@ public class DeptServiceImplTest extends BaseDbUnitTest {
|
||||
@Test
|
||||
public void testUpdateDept() {
|
||||
// mock 数据
|
||||
DeptDO dbDeptDO = randomPojo(DeptDO.class, o -> o.setStatus(randomCommonStatus()));
|
||||
DeptDO dbDeptDO = randomPojo(DeptDO.class, o -> o.setStatus(randomCommonStatus())).setDeptSource(null);
|
||||
deptMapper.insert(dbDeptDO);// @Sql: 先插入出一条存在的数据
|
||||
// 准备参数
|
||||
DeptSaveReqVO reqVO = randomPojo(DeptSaveReqVO.class, o -> {
|
||||
@@ -64,7 +64,7 @@ public class DeptServiceImplTest extends BaseDbUnitTest {
|
||||
o.setParentId(DeptDO.PARENT_ID_ROOT);
|
||||
o.setId(dbDeptDO.getId());
|
||||
o.setStatus(randomCommonStatus());
|
||||
});
|
||||
}).setDeptSource(1);
|
||||
|
||||
// 调用
|
||||
deptService.updateDept(reqVO);
|
||||
@@ -76,7 +76,7 @@ public class DeptServiceImplTest extends BaseDbUnitTest {
|
||||
@Test
|
||||
public void testDeleteDept_success() {
|
||||
// mock 数据
|
||||
DeptDO dbDeptDO = randomPojo(DeptDO.class);
|
||||
DeptDO dbDeptDO = randomPojo(DeptDO.class).setDeptSource(null);
|
||||
deptMapper.insert(dbDeptDO);// @Sql: 先插入出一条存在的数据
|
||||
// 准备参数
|
||||
Long id = dbDeptDO.getId();
|
||||
@@ -90,13 +90,13 @@ public class DeptServiceImplTest extends BaseDbUnitTest {
|
||||
@Test
|
||||
public void testDeleteDept_exitsChildren() {
|
||||
// mock 数据
|
||||
DeptDO parentDept = randomPojo(DeptDO.class);
|
||||
DeptDO parentDept = randomPojo(DeptDO.class).setDeptSource(null);
|
||||
deptMapper.insert(parentDept);// @Sql: 先插入出一条存在的数据
|
||||
// 准备参数
|
||||
DeptDO childrenDeptDO = randomPojo(DeptDO.class, o -> {
|
||||
o.setParentId(parentDept.getId());
|
||||
o.setStatus(randomCommonStatus());
|
||||
});
|
||||
}).setDeptSource(null);
|
||||
// 插入子部门
|
||||
deptMapper.insert(childrenDeptDO);
|
||||
|
||||
@@ -126,12 +126,12 @@ public class DeptServiceImplTest extends BaseDbUnitTest {
|
||||
@Test
|
||||
public void testValidateParentDept_parentIsChild() {
|
||||
// mock 数据(父节点)
|
||||
DeptDO parentDept = randomPojo(DeptDO.class);
|
||||
DeptDO parentDept = randomPojo(DeptDO.class).setDeptSource(null);
|
||||
deptMapper.insert(parentDept);
|
||||
// mock 数据(子节点)
|
||||
DeptDO childDept = randomPojo(DeptDO.class, o -> {
|
||||
o.setParentId(parentDept.getId());
|
||||
});
|
||||
}).setDeptSource(null);
|
||||
deptMapper.insert(childDept);
|
||||
|
||||
// 准备参数
|
||||
@@ -145,7 +145,7 @@ public class DeptServiceImplTest extends BaseDbUnitTest {
|
||||
@Test
|
||||
public void testValidateNameUnique_duplicate() {
|
||||
// mock 数据
|
||||
DeptDO deptDO = randomPojo(DeptDO.class);
|
||||
DeptDO deptDO = randomPojo(DeptDO.class).setDeptSource(null);
|
||||
deptMapper.insert(deptDO);
|
||||
|
||||
// 准备参数
|
||||
@@ -161,7 +161,7 @@ public class DeptServiceImplTest extends BaseDbUnitTest {
|
||||
@Test
|
||||
public void testGetDept() {
|
||||
// mock 数据
|
||||
DeptDO deptDO = randomPojo(DeptDO.class);
|
||||
DeptDO deptDO = randomPojo(DeptDO.class).setDeptSource(1);
|
||||
deptMapper.insert(deptDO);
|
||||
// 准备参数
|
||||
Long id = deptDO.getId();
|
||||
@@ -175,9 +175,9 @@ public class DeptServiceImplTest extends BaseDbUnitTest {
|
||||
@Test
|
||||
public void testGetDeptList_ids() {
|
||||
// mock 数据
|
||||
DeptDO deptDO01 = randomPojo(DeptDO.class);
|
||||
DeptDO deptDO01 = randomPojo(DeptDO.class).setDeptSource(1);
|
||||
deptMapper.insert(deptDO01);
|
||||
DeptDO deptDO02 = randomPojo(DeptDO.class);
|
||||
DeptDO deptDO02 = randomPojo(DeptDO.class).setDeptSource(1);
|
||||
deptMapper.insert(deptDO02);
|
||||
// 准备参数
|
||||
List<Long> ids = Arrays.asList(deptDO01.getId(), deptDO02.getId());
|
||||
@@ -196,7 +196,7 @@ public class DeptServiceImplTest extends BaseDbUnitTest {
|
||||
DeptDO dept = randomPojo(DeptDO.class, o -> { // 等会查询到
|
||||
o.setName("开发部");
|
||||
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||
});
|
||||
}).setDeptSource(1);
|
||||
deptMapper.insert(dept);
|
||||
// 测试 name 不匹配
|
||||
deptMapper.insert(ObjectUtils.cloneIgnoreId(dept, o -> o.setName("发")));
|
||||
@@ -217,14 +217,14 @@ public class DeptServiceImplTest extends BaseDbUnitTest {
|
||||
@Test
|
||||
public void testGetChildDeptList() {
|
||||
// mock 数据(1 级别子节点)
|
||||
DeptDO dept1 = randomPojo(DeptDO.class, o -> o.setName("1"));
|
||||
DeptDO dept1 = randomPojo(DeptDO.class, o -> o.setName("1")).setDeptSource(1);
|
||||
deptMapper.insert(dept1);
|
||||
DeptDO dept2 = randomPojo(DeptDO.class, o -> o.setName("2"));
|
||||
DeptDO dept2 = randomPojo(DeptDO.class, o -> o.setName("2")).setDeptSource(1);
|
||||
deptMapper.insert(dept2);
|
||||
// mock 数据(2 级子节点)
|
||||
DeptDO dept1a = randomPojo(DeptDO.class, o -> o.setName("1-a").setParentId(dept1.getId()));
|
||||
DeptDO dept1a = randomPojo(DeptDO.class, o -> o.setName("1-a").setParentId(dept1.getId())).setDeptSource(1);
|
||||
deptMapper.insert(dept1a);
|
||||
DeptDO dept2a = randomPojo(DeptDO.class, o -> o.setName("2-a").setParentId(dept2.getId()));
|
||||
DeptDO dept2a = randomPojo(DeptDO.class, o -> o.setName("2-a").setParentId(dept2.getId())).setDeptSource(1);
|
||||
deptMapper.insert(dept2a);
|
||||
// 准备参数
|
||||
Long id = dept1.getParentId();
|
||||
@@ -240,14 +240,14 @@ public class DeptServiceImplTest extends BaseDbUnitTest {
|
||||
@Test
|
||||
public void testGetChildDeptListFromCache() {
|
||||
// mock 数据(1 级别子节点)
|
||||
DeptDO dept1 = randomPojo(DeptDO.class, o -> o.setName("1"));
|
||||
DeptDO dept1 = randomPojo(DeptDO.class, o -> o.setName("1")).setDeptSource(1);
|
||||
deptMapper.insert(dept1);
|
||||
DeptDO dept2 = randomPojo(DeptDO.class, o -> o.setName("2"));
|
||||
DeptDO dept2 = randomPojo(DeptDO.class, o -> o.setName("2")).setDeptSource(1);
|
||||
deptMapper.insert(dept2);
|
||||
// mock 数据(2 级子节点)
|
||||
DeptDO dept1a = randomPojo(DeptDO.class, o -> o.setName("1-a").setParentId(dept1.getId()));
|
||||
DeptDO dept1a = randomPojo(DeptDO.class, o -> o.setName("1-a").setParentId(dept1.getId())).setDeptSource(1);
|
||||
deptMapper.insert(dept1a);
|
||||
DeptDO dept2a = randomPojo(DeptDO.class, o -> o.setName("2-a").setParentId(dept2.getId()));
|
||||
DeptDO dept2a = randomPojo(DeptDO.class, o -> o.setName("2-a").setParentId(dept2.getId())).setDeptSource(1);
|
||||
deptMapper.insert(dept2a);
|
||||
// 准备参数
|
||||
Long id = dept1.getParentId();
|
||||
@@ -263,7 +263,7 @@ public class DeptServiceImplTest extends BaseDbUnitTest {
|
||||
@Test
|
||||
public void testValidateDeptList_success() {
|
||||
// mock 数据
|
||||
DeptDO deptDO = randomPojo(DeptDO.class).setStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||
DeptDO deptDO = randomPojo(DeptDO.class).setStatus(CommonStatusEnum.ENABLE.getStatus()).setDeptSource(null);
|
||||
deptMapper.insert(deptDO);
|
||||
// 准备参数
|
||||
List<Long> ids = singletonList(deptDO.getId());
|
||||
@@ -284,7 +284,7 @@ public class DeptServiceImplTest extends BaseDbUnitTest {
|
||||
@Test
|
||||
public void testValidateDeptList_notEnable() {
|
||||
// mock 数据
|
||||
DeptDO deptDO = randomPojo(DeptDO.class).setStatus(CommonStatusEnum.DISABLE.getStatus());
|
||||
DeptDO deptDO = randomPojo(DeptDO.class).setStatus(CommonStatusEnum.DISABLE.getStatus()).setDeptSource(null);
|
||||
deptMapper.insert(deptDO);
|
||||
// 准备参数
|
||||
List<Long> ids = singletonList(deptDO.getId());
|
||||
|
||||
@@ -102,10 +102,10 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
|
||||
o.setMobile(randomString());
|
||||
o.setPostIds(asSet(1L, 2L));
|
||||
o.setDeptIds(asSet(1L, 2L));
|
||||
}).setId(null); // 避免 id 被赋值
|
||||
}).setId(null).setUserSource(null); // 避免 id 被赋值
|
||||
// 新建对应的部门
|
||||
deptMapper.insert(randomPojo(DeptDO.class, o -> {o.setId(1L);o.setStatus(CommonStatusEnum.ENABLE.getStatus());}));
|
||||
deptMapper.insert(randomPojo(DeptDO.class, o -> {o.setId(2L);o.setStatus(CommonStatusEnum.ENABLE.getStatus());}));
|
||||
deptMapper.insert(randomPojo(DeptDO.class, o -> {o.setId(1L);o.setStatus(CommonStatusEnum.ENABLE.getStatus());}).setDeptSource(null));
|
||||
deptMapper.insert(randomPojo(DeptDO.class, o -> {o.setId(2L);o.setStatus(CommonStatusEnum.ENABLE.getStatus());}).setDeptSource(null));
|
||||
|
||||
// mock 账户额度充足
|
||||
TenantDO tenant = randomPojo(TenantDO.class, o -> o.setAccountCount(1));
|
||||
@@ -127,7 +127,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
|
||||
Long userId = userService.createUser(reqVO);
|
||||
// 断言
|
||||
AdminUserDO user = userMapper.selectById(userId);
|
||||
assertPojoEquals(reqVO, user, "password", "id","deptIds","status");
|
||||
assertPojoEquals(reqVO, user, "password", "id","deptIds","status","userSource");
|
||||
assertEquals("yudaoyuanma", user.getPassword());
|
||||
assertEquals(CommonStatusEnum.ENABLE.getStatus(), user.getStatus());
|
||||
// 断言关联岗位
|
||||
@@ -139,7 +139,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
|
||||
@Test
|
||||
public void testCreatUser_max() {
|
||||
// 准备参数
|
||||
UserSaveReqVO reqVO = randomPojo(UserSaveReqVO.class);
|
||||
UserSaveReqVO reqVO = randomPojo(UserSaveReqVO.class).setUserSource(null);
|
||||
// mock 账户额度不足
|
||||
TenantDO tenant = randomPojo(TenantDO.class, o -> o.setAccountCount(-1));
|
||||
doNothing().when(tenantService).handleTenantInfo(argThat(handler -> {
|
||||
@@ -159,8 +159,8 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
|
||||
userPostMapper.insert(new UserPostDO().setUserId(dbUser.getId()).setPostId(1L));
|
||||
userPostMapper.insert(new UserPostDO().setUserId(dbUser.getId()).setPostId(2L));
|
||||
// 新增对应的部门
|
||||
deptMapper.insert(randomPojo(DeptDO.class, o -> {o.setId(1L);o.setStatus(CommonStatusEnum.ENABLE.getStatus());}));
|
||||
deptMapper.insert(randomPojo(DeptDO.class, o -> {o.setId(2L);o.setStatus(CommonStatusEnum.ENABLE.getStatus());}));
|
||||
deptMapper.insert(randomPojo(DeptDO.class, o -> {o.setId(1L);o.setStatus(CommonStatusEnum.ENABLE.getStatus());}).setDeptSource(null));
|
||||
deptMapper.insert(randomPojo(DeptDO.class, o -> {o.setId(2L);o.setStatus(CommonStatusEnum.ENABLE.getStatus());}).setDeptSource(null));
|
||||
// 准备参数
|
||||
UserSaveReqVO reqVO = randomPojo(UserSaveReqVO.class, o -> {
|
||||
o.setId(dbUser.getId());
|
||||
@@ -168,7 +168,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
|
||||
o.setMobile(randomString());
|
||||
o.setPostIds(asSet(2L, 3L));
|
||||
o.setDeptIds(asSet(1L, 2L));
|
||||
});
|
||||
}).setUserSource(null);
|
||||
// mock postService 的方法
|
||||
List<PostDO> posts = CollectionUtils.convertList(reqVO.getPostIds(), postId ->
|
||||
randomPojo(PostDO.class, o -> {
|
||||
@@ -181,7 +181,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
|
||||
userService.updateUser(reqVO);
|
||||
// 断言
|
||||
AdminUserDO user = userMapper.selectById(reqVO.getId());
|
||||
assertPojoEquals(reqVO, user, "avatar","password","deptIds");
|
||||
assertPojoEquals(reqVO, user, "avatar","password","deptIds","userSource");
|
||||
// 断言关联岗位
|
||||
List<UserPostDO> userPosts = userPostMapper.selectListByUserId(user.getId());
|
||||
assertEquals(2L, userPosts.get(0).getPostId());
|
||||
@@ -222,7 +222,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
|
||||
userService.updateUserProfile(userId, reqVO);
|
||||
// 断言
|
||||
AdminUserDO user = userMapper.selectById(userId);
|
||||
assertPojoEquals(reqVO, user);
|
||||
assertPojoEquals(reqVO, user,"useSsource");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -310,7 +310,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
|
||||
// 调用
|
||||
AdminUserDO user = userService.getUserByUsername(username);
|
||||
// 断言
|
||||
assertPojoEquals(dbUser, user,"deptIds", "companyIds", "companyDeptInfos");
|
||||
assertPojoEquals(dbUser, user,"deptIds", "companyIds", "companyDeptInfos","userSource");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -324,7 +324,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
|
||||
// 调用
|
||||
AdminUserDO user = userService.getUserByMobile(mobile);
|
||||
// 断言
|
||||
assertPojoEquals(dbUser, user,"deptIds", "companyIds", "companyDeptInfos");
|
||||
assertPojoEquals(dbUser, user,"deptIds", "companyIds", "companyDeptInfos","userSource");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -340,7 +340,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
|
||||
// page查询暂时不支持带部门进行查询
|
||||
// reqVO.setDeptId(1L); // 其中,1L 是 2L 的父部门
|
||||
// mock 方法
|
||||
List<DeptDO> deptList = newArrayList(randomPojo(DeptDO.class, o -> o.setId(2L)));
|
||||
List<DeptDO> deptList = newArrayList(randomPojo(DeptDO.class, o -> o.setId(2L)).setDeptSource(null));
|
||||
deptService.getChildDeptList(reqVO.getDeptId());
|
||||
// 新增 1L 和用户关联关系
|
||||
userDeptMapper.insert(new UserDeptDO().setUserId(dbUser.getId()).setDeptId(1L));
|
||||
@@ -349,7 +349,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
|
||||
// 断言
|
||||
assertEquals(1, pageResult.getTotal());
|
||||
assertEquals(1, pageResult.getList().size());
|
||||
assertPojoEquals(dbUser, pageResult.getList().get(0), "deptIds", "companyIds", "companyDeptInfos");
|
||||
assertPojoEquals(dbUser, pageResult.getList().get(0), "deptIds", "companyIds", "companyDeptInfos","userSource");
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -387,7 +387,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
|
||||
// 调用
|
||||
AdminUserDO user = userService.getUser(userId);
|
||||
// 断言
|
||||
assertPojoEquals(dbUser, user, "deptIds", "companyIds", "companyDeptInfos");
|
||||
assertPojoEquals(dbUser, user, "deptIds", "companyIds", "companyDeptInfos","userSource");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -408,7 +408,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
|
||||
List<AdminUserDO> list = userService.getUserListByDeptIds(deptIds);
|
||||
// 断言
|
||||
assertEquals(1, list.size());
|
||||
assertPojoEquals(dbUser, list.get(0), "deptIds", "companyIds", "companyDeptInfos");
|
||||
assertPojoEquals(dbUser, list.get(0), "deptIds", "companyIds", "companyDeptInfos","userSource");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -531,7 +531,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
|
||||
List<AdminUserDO> result = userService.getUserListByPostIds(postIds);
|
||||
// 断言
|
||||
assertEquals(1, result.size());
|
||||
assertPojoEquals(user1, result.get(0), "deptIds", "companyIds", "companyDeptInfos");
|
||||
assertPojoEquals(user1, result.get(0), "deptIds", "companyIds", "companyDeptInfos","userSource");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -550,7 +550,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
|
||||
List<AdminUserDO> result = userService.getUserList(ids);
|
||||
// 断言
|
||||
assertEquals(1, result.size());
|
||||
assertPojoEquals(user, result.get(0), "deptIds", "companyIds", "companyDeptInfos");
|
||||
assertPojoEquals(user, result.get(0), "deptIds", "companyIds", "companyDeptInfos","userSource");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -569,7 +569,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
|
||||
Map<Long, AdminUserDO> result = userService.getUserMap(ids);
|
||||
// 断言
|
||||
assertEquals(1, result.size());
|
||||
assertPojoEquals(user, result.get(user.getId()), "deptIds", "companyIds", "companyDeptInfos");
|
||||
assertPojoEquals(user, result.get(user.getId()), "deptIds", "companyIds", "companyDeptInfos","userSource");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -586,7 +586,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
|
||||
List<AdminUserDO> result = userService.getUserListByNickname(nickname);
|
||||
// 断言
|
||||
assertEquals(1, result.size());
|
||||
assertPojoEquals(user, result.get(0),"deptIds", "companyIds", "companyDeptInfos");
|
||||
assertPojoEquals(user, result.get(0),"deptIds", "companyIds", "companyDeptInfos","userSource");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -604,7 +604,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
|
||||
// 断言
|
||||
assertEquals(1, result.size());
|
||||
AdminUserDO user1 = userService.getUser(result.get(0).getId());
|
||||
assertPojoEquals(user, user1, "deptIds","companyIds","companyDeptInfos");
|
||||
assertPojoEquals(user, user1, "deptIds","companyIds","companyDeptInfos","userSource");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -650,6 +650,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
|
||||
o.setSex(randomEle(SexEnum.values()).getSex());
|
||||
o.setDeptIds(new HashSet<>(asSet(1L, 2L)));
|
||||
o.setCompanyDeptInfos(null);// 保证 deptIds 的范围
|
||||
o.setUserSource(null);
|
||||
};
|
||||
return randomPojo(AdminUserDO.class, ArrayUtils.append(consumer, consumers));
|
||||
}
|
||||
@@ -666,7 +667,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
|
||||
UserSaveReqVO reqVO = randomPojo(UserSaveReqVO.class, o -> {
|
||||
o.setDeptIds(asSet(1L, 2L, 3L));
|
||||
o.setSex(1);
|
||||
}).setId(null);
|
||||
}).setId(null).setUserSource(null);
|
||||
// 新建对应的部门
|
||||
deptMapper.insert(new DeptDO().setId(1L).setName("部门1").setStatus(CommonStatusEnum.ENABLE.getStatus()));
|
||||
deptMapper.insert(new DeptDO().setId(2L).setName("部门2").setStatus(CommonStatusEnum.ENABLE.getStatus()));
|
||||
@@ -710,7 +711,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
|
||||
o.setId(dbUser.getId());
|
||||
o.setSex(1);
|
||||
o.setDeptIds(asSet(1L, 2L));
|
||||
});
|
||||
}).setUserSource(null);
|
||||
// mock postService 的方法
|
||||
List<PostDO> posts = CollectionUtils.convertList(reqVO.getPostIds(), postId ->
|
||||
randomPojo(PostDO.class, o -> {
|
||||
|
||||
@@ -28,6 +28,7 @@ CREATE TABLE IF NOT EXISTS "system_dept" (
|
||||
"is_tenant" bit NOT NULL DEFAULT FALSE,
|
||||
"is_company" bit NOT NULL DEFAULT FALSE,
|
||||
"is_group" bit NOT NULL DEFAULT FALSE,
|
||||
"dept_source" tinyint default '1',
|
||||
PRIMARY KEY ("id")
|
||||
) COMMENT '部门表';
|
||||
|
||||
@@ -257,6 +258,7 @@ CREATE TABLE IF NOT EXISTS "system_users" (
|
||||
"update_time" timestamp not null default current_timestamp,
|
||||
"deleted" bit not null default false,
|
||||
"tenant_id" bigint not null default '0',
|
||||
"user_source" tinyint default '1',
|
||||
primary key ("id")
|
||||
) comment '用户信息表';
|
||||
|
||||
|
||||
Reference in New Issue
Block a user