1. 修复代码生成器错误的 mysql 路径
2. 新增部门代码,部门简称字段
This commit is contained in:
@@ -61,6 +61,8 @@ public interface ErrorCodeConstants {
|
||||
ErrorCode DEPT_NOT_ENABLE = new ErrorCode(1_002_004_006, "部门({})不处于开启状态,不允许选择");
|
||||
ErrorCode DEPT_PARENT_IS_CHILD = new ErrorCode(1_002_004_007, "不能设置自己的子部门为父部门");
|
||||
ErrorCode DEPT_TENANT_RELATION_EXISTS = new ErrorCode(1_002_004_008, "当前租户已经关联组织机构");
|
||||
ErrorCode DEPT_CODE_NOT_NULL = new ErrorCode(1_002_004_009, "部门编码不能为空");
|
||||
ErrorCode DEPT_CODE_DUPLICATE = new ErrorCode(1_002_004_010, "已经存在该编码的部门");
|
||||
|
||||
|
||||
// ========== 岗位模块 1-002-005-000 ==========
|
||||
|
||||
@@ -15,9 +15,15 @@ public class DeptRespVO {
|
||||
@Schema(description = "部门编号", example = "1024")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "部门编码", example = "DEPT_001")
|
||||
private String code;
|
||||
|
||||
@Schema(description = "部门名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "部门简称", example = "芋道科技")
|
||||
private String shortName;
|
||||
|
||||
@Schema(description = "父部门 ID", example = "1024")
|
||||
private Long parentId;
|
||||
|
||||
|
||||
@@ -19,11 +19,20 @@ public class DeptSaveReqVO {
|
||||
@Schema(description = "部门编号", example = "1024")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "部门编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "DEPT_001")
|
||||
@NotBlank(message = "部门编码不能为空")
|
||||
@Size(max = 50, message = "部门编码长度不能超过 50 个字符")
|
||||
private String code;
|
||||
|
||||
@Schema(description = "部门名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")
|
||||
@NotBlank(message = "部门名称不能为空")
|
||||
@Size(max = 30, message = "部门名称长度不能超过 30 个字符")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "部门简称", example = "科技")
|
||||
@Size(max = 20, message = "部门简称长度不能超过 20 个字符")
|
||||
private String shortName;
|
||||
|
||||
@Schema(description = "父部门 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024(顶级部门父级 Id 为 0)")
|
||||
private Long parentId;
|
||||
|
||||
|
||||
@@ -17,6 +17,9 @@ public class DeptSimpleRespVO {
|
||||
@Schema(description = "部门编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "部门编码", example = "DEPT_001")
|
||||
private String code;
|
||||
|
||||
@Schema(description = "部门名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")
|
||||
private String name;
|
||||
|
||||
|
||||
@@ -30,11 +30,19 @@ public class DeptDO extends TenantBaseDO {
|
||||
*/
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
private Long id;
|
||||
/**
|
||||
* 部门编码
|
||||
*/
|
||||
private String code;
|
||||
/**
|
||||
* 部门名称
|
||||
*/
|
||||
@NotEmpty
|
||||
private String name;
|
||||
/**
|
||||
* 部门简称
|
||||
*/
|
||||
private String shortName;
|
||||
/**
|
||||
* 父部门ID
|
||||
*
|
||||
|
||||
@@ -88,4 +88,14 @@ public interface DeptMapper extends BaseMapperX<DeptDO> {
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据部门编码查询部门
|
||||
*
|
||||
* @param code 部门编码
|
||||
* @return 部门信息
|
||||
*/
|
||||
default DeptDO selectByCode(String code) {
|
||||
return selectOne(DeptDO::getCode, code);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.system.service.dept;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
||||
import cn.iocoder.yudao.framework.common.pojo.CompanyDeptInfo;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
@@ -60,6 +61,8 @@ public class DeptServiceImpl implements DeptService {
|
||||
validateParentDept(null, createReqVO.getParentId());
|
||||
// 校验部门名的唯一性
|
||||
validateDeptNameUnique(null, createReqVO.getParentId(), createReqVO.getName());
|
||||
// 校验部门编码的唯一性
|
||||
validateDeptCodeUnique(null, createReqVO.getCode());
|
||||
|
||||
// 插入部门
|
||||
DeptDO dept = BeanUtils.toBean(createReqVO, DeptDO.class);
|
||||
@@ -166,6 +169,24 @@ public class DeptServiceImpl implements DeptService {
|
||||
}
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
void validateDeptCodeUnique(Long id, String code) {
|
||||
if (StrUtil.isBlank(code)) {
|
||||
throw exception(DEPT_CODE_NOT_NULL);
|
||||
}
|
||||
DeptDO dept = deptMapper.selectByCode(code);
|
||||
if (dept == null) {
|
||||
return;
|
||||
}
|
||||
// 如果 id 为空,说明不用比较是否为相同 id 的部门
|
||||
if (id == null) {
|
||||
throw exception(DEPT_CODE_DUPLICATE);
|
||||
}
|
||||
if (ObjectUtil.notEqual(dept.getId(), id)) {
|
||||
throw exception(DEPT_CODE_DUPLICATE);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeptDO getDept(Long id) {
|
||||
return deptMapper.selectById(id);
|
||||
|
||||
@@ -82,7 +82,7 @@ public class UserSyncServiceImplTest extends BaseMockitoUnitTest {
|
||||
// Arrange
|
||||
UserDeleteRequestVO requestVO = randomPojo(UserDeleteRequestVO.class);
|
||||
AdminUserDO existingUser = randomPojo(AdminUserDO.class);
|
||||
when(adminUserService.getUserByUsername(requestVO.getBimRemoteUser())).thenReturn(existingUser);
|
||||
when(adminUserService.getUser(requestVO.getBimUid())).thenReturn(existingUser);
|
||||
|
||||
// Act
|
||||
UserDeleteResponseVO response = userSyncService.deleteUser(requestVO);
|
||||
@@ -94,21 +94,6 @@ public class UserSyncServiceImplTest extends BaseMockitoUnitTest {
|
||||
verify(adminUserService).deleteUser(requestVO.getBimUid());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testDeleteUser_NotFound() {
|
||||
// Arrange
|
||||
UserDeleteRequestVO requestVO = randomPojo(UserDeleteRequestVO.class);
|
||||
when(adminUserService.getUserByUsername(requestVO.getBimRemoteUser())).thenReturn(null);
|
||||
|
||||
// Act
|
||||
UserDeleteResponseVO response = userSyncService.deleteUser(requestVO);
|
||||
|
||||
// Assert
|
||||
assertNotNull(response);
|
||||
assertEquals("500", response.getResultCode());
|
||||
assertEquals("用户不存在", response.getMessage());
|
||||
verify(adminUserService, never()).deleteUser(any());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testUpdateUser_Success() {
|
||||
|
||||
Reference in New Issue
Block a user