lixing 4 лет назад
Родитель
Сommit
4467969cea

+ 8 - 0
fm-person/src/main/java/com/persagy/fm/department/constant/DepConstants.java

@@ -7,5 +7,13 @@ package com.persagy.fm.department.constant;
  * @version V1.0 2021/4/19 6:10 下午
  **/
 public class DepConstants {
+    /**
+     * 部门全路径,部门间的分隔符
+     */
     public static final String FULL_PATH_SEPARATOR = "-";
+    /**
+     * 无父部门时,存储的parentId
+     */
+    public static final String NO_PARENT_ID = "0";
+
 }

+ 13 - 8
fm-person/src/main/java/com/persagy/fm/department/service/impl/DepartmentServiceImpl.java

@@ -254,12 +254,14 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
         // 如果上级部门发生了变化,级联更新自己和子部门的全路径
         String parentIdAfterChange = updateDepartmentDTO.getParentId();
         if (StringUtils.isNotBlank(parentIdAfterChange)) {
-            // 上级部门不能是自己的子部门
-            Department parentDepAfterChange = queryDepartmentDetail(parentIdAfterChange);
-            String parentFullPathAfterChange = parentDepAfterChange.getFullPath();
-            if (parentFullPathAfterChange.equals(department.getFullPath()) ||
-                    parentFullPathAfterChange.startsWith(department.getFullPath() + DepConstants.FULL_PATH_SEPARATOR)) {
-                throw new IllegalArgumentException("上级部门不能选择自己或自己的子部门(包括子部门的子部门)");
+            if (!DepConstants.NO_PARENT_ID.equals(parentIdAfterChange)) {
+                // 验证选择的上级部门是不是自己的子部门
+                Department parentDepAfterChange = queryDepartmentDetail(parentIdAfterChange);
+                String parentFullPathAfterChange = parentDepAfterChange.getFullPath();
+                if (parentFullPathAfterChange.equals(department.getFullPath()) ||
+                        parentFullPathAfterChange.startsWith(department.getFullPath() + DepConstants.FULL_PATH_SEPARATOR)) {
+                    throw new IllegalArgumentException("上级部门不能选择自己或自己的子部门(包括子部门的子部门)");
+                }
             }
 
             if (!parentIdAfterChange.equals(parentIdBeforeChange)) {
@@ -282,8 +284,11 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
      */
     private String getDepFullPathWhenParentIdChange(String depName, String parentIdAfterChange) {
         // 获取更新后的父部门的全路径
-        Department parentDep = queryDepartmentDetail(parentIdAfterChange);
-        String parentFullPath = parentDep.getFullPath();
+        String parentFullPath = "";
+        if (DepConstants.NO_PARENT_ID.equals(parentIdAfterChange)) {
+            Department parentDep = queryDepartmentDetail(parentIdAfterChange);
+            parentFullPath = parentDep.getFullPath();
+        }
 
         if (StringUtils.isBlank(parentFullPath)) {
             return depName;

+ 1 - 2
fm-person/src/main/java/com/persagy/fm/person/model/dto/UpsertPerson4FrontEndDTO.java

@@ -21,7 +21,6 @@ import java.util.List;
  **/
 @Data
 public class UpsertPerson4FrontEndDTO extends UpsertPersonDTO{
-    @ApiModelProperty(value = "项目权限", required = true)
-    @NotEmpty(message = "项目权限不能为空")
+    @ApiModelProperty(value = "项目权限")
     private List<UpsertSaasProjectDTO> projects;
 }

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/profession/model/dto/AddProfessionDTO.java

@@ -26,7 +26,7 @@ public class AddProfessionDTO {
             message = "专业名称" + RegexConstants.NAME_REGEX_WARNING)
     private String name;
 
-    @ApiModelProperty(value = "是否可编辑", required = true)
+    @ApiModelProperty(value = "是否可编辑", required = true, notes = "com.persagy.fm.common.constant.enums.BoolEnum")
     private String editable;
 
 }

+ 40 - 0
fm-person/src/main/java/com/persagy/fm/profession/service/impl/ProfessionServiceImpl.java

@@ -14,6 +14,7 @@ import com.persagy.fm.profession.model.Profession;
 import com.persagy.fm.profession.model.dto.AddProfessionDTO;
 import com.persagy.fm.profession.model.dto.UpdateProfessionDTO;
 import com.persagy.fm.profession.service.IProfessionService;
+import org.apache.commons.lang3.StringUtils;
 import org.assertj.core.util.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -43,6 +44,7 @@ public class ProfessionServiceImpl extends ServiceImpl<ProfessionMapper, Profess
      */
     @Override
     public String createProfession(AddProfessionDTO addProfessionDTO) {
+        checkDuplicateName(addProfessionDTO.getName());
         Profession profession = ConvertProfessionTool.INSTANCE.convertAddDto2Entity(addProfessionDTO);
         // 设置默认值
         setDefaultValue(profession);
@@ -51,6 +53,20 @@ public class ProfessionServiceImpl extends ServiceImpl<ProfessionMapper, Profess
     }
 
     /**
+     * 校验专业名称是否重复
+     *
+     * @param name 名称
+     * @author lixing
+     * @version V1.0 2021/4/21 2:26 下午
+     */
+    private void checkDuplicateName(String name) {
+        List<Profession> professions = queryProfessionListByName(name);
+        if (!CollectionUtils.isEmpty(professions)) {
+            throw new IllegalArgumentException("专业名称已被使用");
+        }
+    }
+
+    /**
      * 如果某些字段没有赋值,使用默认的值
      *
      * @param profession 专业实体
@@ -73,6 +89,11 @@ public class ProfessionServiceImpl extends ServiceImpl<ProfessionMapper, Profess
     @Override
     public void updateProfession(UpdateProfessionDTO updateProfessionDTO) {
         Profession profession = getById(updateProfessionDTO.getId());
+        // 校验名称重复
+        if (StringUtils.isNotBlank(updateProfessionDTO.getName()) &&
+                !updateProfessionDTO.getName().equals(profession.getName())) {
+            checkDuplicateName(updateProfessionDTO.getName());
+        }
         profession = ConvertProfessionTool.INSTANCE.convertUpdateDto2Entity(profession, updateProfessionDTO);
         profession.setModifier(DefaultAppContext.getContext().getAccountId());
         updateById(profession);
@@ -146,4 +167,23 @@ public class ProfessionServiceImpl extends ServiceImpl<ProfessionMapper, Profess
             return simpleObjVO;
         }).collect(Collectors.toList());
     }
+
+    /**
+     * 根据专业名称查询专业
+     *
+     * @return List<Profession>
+     * @author lixing
+     * @version V1.0 2021-03-19 16:38:19
+     */
+    private List<Profession> queryProfessionListByName(String name) {
+        if (StringUtils.isBlank(name)) {
+            return null;
+        }
+        QueryWrapper<Profession> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(Profession.PROP_VALID, ValidEnum.TRUE.getType());
+        queryWrapper.eq(Profession.PROP_NAME, name);
+        // 默认按创建时间倒序排序
+        queryWrapper.orderBy(true, false, Profession.PROP_CREATIONTIME);
+        return list(queryWrapper);
+    }
 }

+ 19 - 5
fm-person/src/main/java/com/persagy/fm/saas/accountproject/service/impl/SaasAccountProjectServiceImpl.java

@@ -69,11 +69,25 @@ public class SaasAccountProjectServiceImpl implements ISaasAccountProjectService
                 resetAccountProjectItem.setGroupCode(AppContext.getContext().getGroupCode());
                 auths.add(resetAccountProjectItem);
             });
+
+            ResetSaasAccountProjectDTO resetSaasAccountProjectDTO = new ResetSaasAccountProjectDTO();
+            resetSaasAccountProjectDTO.setDefaultValueNoAccountId();
+            resetSaasAccountProjectDTO.setAccountId(accountId);
+            resetSaasAccountProjectDTO.setAuths(auths);
+            saasAccountProjectClient.resetSaasAccountProject(resetSaasAccountProjectDTO);
+        } else {
+            QuerySaasAccountProjectDTO querySaasAccountProjectDTO = new QuerySaasAccountProjectDTO();
+            querySaasAccountProjectDTO.setDefaultValueNoAccountId();
+            querySaasAccountProjectDTO.setAccountId(accountId);
+            FmResponseContent<List<SaasAccountProject>> responseContent = saasAccountProjectClient.
+                    querySaasAccountProjectList(querySaasAccountProjectDTO);
+            if (responseContent.getCount() > 0) {
+                DeleteSaasAccountProjectDTO deleteSaasAccountProjectDTO = new DeleteSaasAccountProjectDTO();
+                deleteSaasAccountProjectDTO.setDefaultValueNoAccountId();
+                deleteSaasAccountProjectDTO.setAccountId(accountId);
+                saasAccountProjectClient.deleteSaasAccountProject(deleteSaasAccountProjectDTO);
+            }
         }
-        ResetSaasAccountProjectDTO resetSaasAccountProjectDTO = new ResetSaasAccountProjectDTO();
-        resetSaasAccountProjectDTO.setDefaultValueNoAccountId();
-        resetSaasAccountProjectDTO.setAccountId(accountId);
-        resetSaasAccountProjectDTO.setAuths(auths);
-        saasAccountProjectClient.resetSaasAccountProject(resetSaasAccountProjectDTO);
+
     }
 }

+ 13 - 18
fm-person/src/main/java/com/persagy/fm/saas/accountrole/service/impl/SaasAccountRoleServiceImpl.java

@@ -169,30 +169,25 @@ public class SaasAccountRoleServiceImpl implements ISaasAccountRoleService {
 
     @Override
     public void resetSaasAccountRole(String accountId, List<AddSaasAccountRoleDTO> roles) {
-        // 如果账号关联的所有角色都置空,调用运维平台的删除账号角色关联接口。运维平台重置账号关联角色的接口,不允许关联的角色为空
-        if (CollectionUtils.isEmpty(roles)) {
-            DeleteSaasAccountRoleDTO deleteSaasAccountRoleDTO = new DeleteSaasAccountRoleDTO();
-            deleteSaasAccountRoleDTO.setDefaultValueNoAccountId();
-            deleteSaasAccountRoleDTO.setAccountId(accountId);
-            saasAccountRoleClient.deleteSaasAccountRole(deleteSaasAccountRoleDTO);
-        } else {
-            ResetSaasAccountRoleDTO resetSaasAccountRoleDTO = new ResetSaasAccountRoleDTO();
-            resetSaasAccountRoleDTO.setDefaultValueNoAccountId();
-            resetSaasAccountRoleDTO.setAccountId(accountId);
-            resetSaasAccountRoleDTO.setRoles(roles);
-            saasAccountRoleClient.resetSaasAccountRole(resetSaasAccountRoleDTO);
-        }
+        resetSaasAccountRole(accountId, null, roles);
     }
 
     @Override
     public void resetSaasAccountRole(String accountId, String accountRoleType, List<AddSaasAccountRoleDTO> roles) {
         // 如果账号关联的所有角色都置空,调用运维平台的删除账号角色关联接口。运维平台重置账号关联角色的接口,不允许关联的角色为空
         if (CollectionUtils.isEmpty(roles)) {
-            DeleteSaasAccountRoleDTO deleteSaasAccountRoleDTO = new DeleteSaasAccountRoleDTO();
-            deleteSaasAccountRoleDTO.setDefaultValueNoAccountId();
-            deleteSaasAccountRoleDTO.setAccountId(accountId);
-            deleteSaasAccountRoleDTO.setCasType(accountRoleType);
-            saasAccountRoleClient.deleteSaasAccountRole(deleteSaasAccountRoleDTO);
+            QuerySaasAccountRoleDTO querySaasAccountRoleDTO = new QuerySaasAccountRoleDTO();
+            querySaasAccountRoleDTO.setDefaultValueNoAccountId();
+            querySaasAccountRoleDTO.setCasType(accountRoleType);
+            querySaasAccountRoleDTO.setAccountId(accountId);
+            FmResponseContent<List<SaasAccountRole>> responseContent = saasAccountRoleClient.querySaasAccountRoleList(querySaasAccountRoleDTO);
+            if (responseContent.getCount() > 0) {
+                DeleteSaasAccountRoleDTO deleteSaasAccountRoleDTO = new DeleteSaasAccountRoleDTO();
+                deleteSaasAccountRoleDTO.setDefaultValueNoAccountId();
+                deleteSaasAccountRoleDTO.setAccountId(accountId);
+                deleteSaasAccountRoleDTO.setCasType(accountRoleType);
+                saasAccountRoleClient.deleteSaasAccountRole(deleteSaasAccountRoleDTO);
+            }
         } else {
             ResetSaasAccountRoleDTO resetSaasAccountRoleDTO = new ResetSaasAccountRoleDTO();
             resetSaasAccountRoleDTO.setDefaultValueNoAccountId();