Browse Source

token升级

lixing 4 years ago
parent
commit
b8b3a69fc4

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

@@ -1,11 +1,14 @@
 package com.persagy.fm.department.constant.enums;
 
+import com.persagy.fm.common.model.annotation.SwaggerDisplayEnum;
+
 /**
  * 部门类型
  *
  * @author lixing
  * @version V1.0 2021/3/12 3:00 下午
  */
+@SwaggerDisplayEnum
 public enum DepTypeEnum {
     /**
      * 部门类型
@@ -37,4 +40,9 @@ public enum DepTypeEnum {
     public void setDesc(String desc) {
         this.desc = desc;
     }
+
+    @Override
+    public String toString() {
+        return type + ":" + desc;
+    }
 }

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/department/model/vo/ResponseDepartmentItemVO.java

@@ -27,7 +27,7 @@ public class ResponseDepartmentItemVO {
     @ApiModelProperty("部门名称")
     private String name;
 
-    @ApiModelProperty("部门类型")
+    @ApiModelProperty(value = "部门类型", notes = "com.persagy.fm.department.constant.enums.DeptTypeEnum")
     private String type;
 
     @ApiModelProperty("上级部门id")

+ 10 - 1
fm-person/src/main/java/com/persagy/fm/department/service/impl/DepartmentServiceImpl.java

@@ -182,6 +182,9 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
         if (department == null) {
             throw new IllegalArgumentException("查看Department详情时发生异常,找不到要查看的记录,id=" + id);
         }
+        if (ValidEnum.FALSE.getType().equals(department.getValid())) {
+            throw new IllegalArgumentException("部门已被删除");
+        }
         return department;
     }
 
@@ -192,7 +195,9 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
         if (department == null) {
             throw new IllegalArgumentException("无法找到要更新的部门, id:" + updateDepartmentDTO.getId());
         }
-
+        if (ValidEnum.FALSE.getType().equals(department.getValid())) {
+            throw new IllegalArgumentException("部门已被删除");
+        }
         // 部门名称或者父部门id发生变化,需要更新子部门的全路径
         String fullPathAfterChange = getFullPathAfterChange(updateDepartmentDTO, department);
         updateSonDepsFullPath(department.getFullPath(), fullPathAfterChange);
@@ -359,6 +364,10 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
             throw new IllegalArgumentException("删除Department时发生异常,找不到要删除的数据,id:" + id);
         }
 
+        if (ValidEnum.FALSE.getType().equals(department.getValid())) {
+            throw new IllegalArgumentException("部门已被删除");
+        }
+
         if (DepTypeEnum.GROUP.getType().equals(department.getType())) {
             throw new IllegalArgumentException("集团不能删除!");
         }

+ 10 - 0
fm-person/src/main/java/com/persagy/fm/person/service/IPersonService.java

@@ -245,4 +245,14 @@ public interface IPersonService {
      * @version V1.0 2021/4/7 11:41 上午
      */
     Boolean checkDuplicateMail(String mail);
+
+    /**
+     * 根据专业id查询人员
+     *
+     * @param professionId 专业id
+     * @return 人员列表
+     * @author lixing
+     * @version V1.0 2021/4/11 9:50 下午
+     */
+    List<Person> queryByProfessionId(String professionId);
 }

+ 48 - 5
fm-person/src/main/java/com/persagy/fm/person/service/impl/PersonServiceImpl.java

@@ -1,6 +1,7 @@
 package com.persagy.fm.person.service.impl;
 
 import cn.hutool.extra.pinyin.PinyinUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -500,9 +501,9 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
      * 更新人员基本信息
      *
      * @param updatePersonDTO 更新人员入参
-     * @param personId 人员id
+     * @param personId        人员id
      * @return 更新后的人员对象
-     * @exception
+     * @throws
      * @author lixing
      * @version V1.0 2021/4/9 7:30 下午
      */
@@ -869,17 +870,46 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
 
         // 更新主岗
         if (batchUpdatePersonDTO.getMainDuty() != null) {
-            // TODO: 2021/4/9 需要运维平台更新账号角色关联关系接口增加关联类型字段
+            personIds.forEach(personId -> {
+                Person person = getById(personId);
+                AddSaasAccountRoleDTO addSaasAccountRoleDTO = new AddSaasAccountRoleDTO();
+                addSaasAccountRoleDTO.setRoleId(batchUpdatePersonDTO.getMainDuty());
+                addSaasAccountRoleDTO.setCasType(AccountRoleTypeEnum.MAIN_DUTY.getType());
+                saasAccountRoleService.resetSaasAccountRole(
+                        person.getAccountId(), Lists.newArrayList(addSaasAccountRoleDTO));
+            });
         }
 
         // 更新副岗
         if (batchUpdatePersonDTO.getOtherDuties() != null) {
-            // TODO: 2021/4/9 需要运维平台更新账号角色关联关系接口增加关联类型字段
+            personIds.forEach(personId -> {
+                Person person = getById(personId);
+                List<AddSaasAccountRoleDTO> otherDuties = batchUpdatePersonDTO.getOtherDuties().stream().map(
+                        otherDuty -> {
+                            AddSaasAccountRoleDTO addSaasAccountRoleDTO = new AddSaasAccountRoleDTO();
+                            addSaasAccountRoleDTO.setRoleId(otherDuty);
+                            addSaasAccountRoleDTO.setCasType(AccountRoleTypeEnum.OTHER_DUTY.getType());
+                            return addSaasAccountRoleDTO;
+                        }
+                ).collect(Collectors.toList());
+                saasAccountRoleService.resetSaasAccountRole(person.getAccountId(), otherDuties);
+            });
         }
 
         // 更新附加角色
         if (batchUpdatePersonDTO.getOtherRoles() != null) {
-            // TODO: 2021/4/9 需要运维平台更新账号角色关联关系接口增加关联类型字段
+            personIds.forEach(personId -> {
+                Person person = getById(personId);
+                List<AddSaasAccountRoleDTO> otherRoles = batchUpdatePersonDTO.getOtherRoles().stream().map(
+                        otherRole -> {
+                            AddSaasAccountRoleDTO addSaasAccountRoleDTO = new AddSaasAccountRoleDTO();
+                            addSaasAccountRoleDTO.setRoleId(otherRole);
+                            addSaasAccountRoleDTO.setCasType(AccountRoleTypeEnum.SYS_ROLE.getType());
+                            return addSaasAccountRoleDTO;
+                        }
+                ).collect(Collectors.toList());
+                saasAccountRoleService.resetSaasAccountRole(person.getAccountId(), otherRoles);
+            });
         }
     }
 
@@ -1050,4 +1080,17 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
 
         return latestJobNumberVO;
     }
+
+    @Override
+    public List<Person> queryByProfessionId(String professionId) {
+        if (StringUtils.isBlank(professionId)) {
+            throw new IllegalArgumentException("根据专业查询人员,专业id不可为空");
+        }
+        LambdaQueryWrapper<Person> personLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        personLambdaQueryWrapper.
+                //                apply(Person.PROP_PROFESSION + " like{0}", "%" + professionId + "%").
+                        like(Person::getProfession, "%" + professionId + "%").
+                eq(Person::getValid, ValidEnum.TRUE.getType());
+        return list(personLambdaQueryWrapper);
+    }
 }

+ 8 - 0
fm-person/src/main/java/com/persagy/fm/profession/controller/ProfessionController.java

@@ -70,5 +70,13 @@ public class ProfessionController {
         return ResultHelper.multi(resultList);
     }
 
+    @ApiOperation(value = "校验是否可删除")
+    @PostMapping("/checkDeletable")
+    public CommonResult checkDeletable(
+            @RequestBody @Valid DeleteProfessionDTO deleteProfessionDTO) {
+        professionService.checkDeletable(deleteProfessionDTO.getId());
+        return ResultHelper.success();
+    }
+
 }
 

+ 10 - 0
fm-person/src/main/java/com/persagy/fm/profession/service/IProfessionService.java

@@ -64,4 +64,14 @@ public interface IProfessionService {
      * @version V1.0 2021/4/1 11:06 上午
      */
     List<SimpleObjVO> queryProfessionInfoByProfessionIds(List<String> professionIdList);
+
+    /**
+     * 校验专业是否可删除
+     *
+     * @param id 专业主键
+     * @return 专业do类
+     * @author lixing
+     * @version V1.0 2021-03-19 16:38:19
+     */
+    Profession checkDeletable(String id);
 }

+ 12 - 8
fm-person/src/main/java/com/persagy/fm/profession/service/impl/ProfessionServiceImpl.java

@@ -6,6 +6,8 @@ import com.persagy.fm.common.constant.enums.BoolEnum;
 import com.persagy.fm.common.constant.enums.ValidEnum;
 import com.persagy.fm.common.context.DefaultAppContext;
 import com.persagy.fm.common.model.vo.SimpleObjVO;
+import com.persagy.fm.person.model.Person;
+import com.persagy.fm.person.service.IPersonService;
 import com.persagy.fm.profession.dao.ProfessionMapper;
 import com.persagy.fm.profession.model.ConvertProfessionTool;
 import com.persagy.fm.profession.model.Profession;
@@ -13,6 +15,7 @@ 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.assertj.core.util.Lists;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
@@ -28,6 +31,8 @@ import java.util.stream.Collectors;
 @Service
 public class ProfessionServiceImpl extends ServiceImpl<ProfessionMapper, Profession>
         implements IProfessionService {
+    @Autowired
+    IPersonService personService;
 
     /**
      * 创建专业
@@ -73,14 +78,7 @@ public class ProfessionServiceImpl extends ServiceImpl<ProfessionMapper, Profess
         updateById(profession);
     }
 
-    /**
-     * 校验专业是否可删除
-     *
-     * @param id 专业主键
-     * @return 专业do类
-     * @author lixing
-     * @version V1.0 2021-03-19 16:38:19
-     */
+    @Override
     public Profession checkDeletable(String id) {
         if (id == null) {
             throw new IllegalArgumentException("删除Profession时发生异常,主键为空");
@@ -92,6 +90,12 @@ public class ProfessionServiceImpl extends ServiceImpl<ProfessionMapper, Profess
             throw new IllegalArgumentException("删除Profession时发生异常,找不到要删除的数据,id:" + id);
         }
 
+        // 如果专业被人员使用,专业不可删除
+        List<Person> people = personService.queryByProfessionId(id);
+        if (!CollectionUtils.isEmpty(people)) {
+            throw new IllegalArgumentException("被引用的专业不可删除");
+        }
+
         return profession;
     }
 

+ 1 - 0
fm-person/src/main/java/com/persagy/fm/saas/accountrole/model/dto/ResetSaasAccountRoleDTO.java

@@ -19,4 +19,5 @@ import java.util.List;
 @ApiModel(value = "重置账号-角色关联信息入参")
 public class ResetSaasAccountRoleDTO extends SaasBaseDTO {
     private List<AddSaasAccountRoleDTO> roles;
+    private String casType;
 }

+ 1 - 0
fm-person/src/main/java/com/persagy/fm/saas/role/model/ConvertSaasRoleTool.java

@@ -38,6 +38,7 @@ public interface ConvertSaasRoleTool {
      * @author lixing
      * @version V1.0 2021-03-22 19:04:28
      */
+    @Mapping(source = "countFunction", target = "relatedFunCount")
     SaasRoleListItemVO convert2ResponseListItemDTO(SaasRole saasRole);
 
     /**

+ 3 - 0
fm-person/src/main/java/com/persagy/fm/saas/role/model/SaasRole.java

@@ -35,6 +35,9 @@ public class SaasRole extends SaasBaseDTO {
     @ApiModelProperty("备注")
     private String remark;
 
+    @ApiModelProperty("关联的功能点数量")
+    private Integer countFunction;
+
 
     public static String PROP_ROLE_CODE = "role_code";
     public static String PROP_ROLE_NAME = "role_name";

+ 7 - 0
fm-person/src/main/java/com/persagy/fm/saas/role/model/dto/PageQuerySaasRoleDTO.java

@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.util.Date;
+import java.util.List;
 
 import com.persagy.fm.common.model.dto.PageDTO;
 import lombok.Data;
@@ -26,4 +27,10 @@ public class PageQuerySaasRoleDTO extends SaasBasePageDTO {
 
     @ApiModelProperty(value = "角色类型", required = true)
     private String roleType;
+
+    @ApiModelProperty(value = "角色id列表")
+    private List<String> roleIds;
+
+    @ApiModelProperty(value = "是否统计功能点数量")
+    private Boolean countFunction;
 }

+ 3 - 0
fm-person/src/main/java/com/persagy/fm/saas/role/model/vo/SaasRoleListItemVO.java

@@ -21,4 +21,7 @@ public class SaasRoleListItemVO {
 
     @ApiModelProperty("角色名称")
     private String roleName;
+
+    @ApiModelProperty("关联的权限数量")
+    private Integer relatedFunCount;
 }

+ 14 - 0
fm-person/src/main/java/com/persagy/fm/saas/role/service/impl/SaasRoleServiceImpl.java

@@ -7,6 +7,9 @@ import com.persagy.fm.common.context.AppContext;
 import com.persagy.fm.common.context.DefaultAppContext;
 import com.persagy.fm.common.response.FmResponseContent;
 import com.persagy.fm.saas.account.constant.enums.AccountBelongEnum;
+import com.persagy.fm.saas.accountrole.model.SaasAccountRole;
+import com.persagy.fm.saas.accountrole.model.dto.QuerySaasAccountRoleDTO;
+import com.persagy.fm.saas.accountrole.service.ISaasAccountRoleService;
 import com.persagy.fm.saas.role.client.SaasRoleClient;
 import com.persagy.fm.saas.role.model.ConvertSaasRoleTool;
 import com.persagy.fm.saas.role.model.SaasRole;
@@ -31,6 +34,8 @@ import java.util.stream.Collectors;
 public class SaasRoleServiceImpl implements ISaasRoleService {
     @Autowired
     SaasRoleClient saasRoleClient;
+    @Autowired
+    ISaasAccountRoleService saasAccountRoleService;
 
     /**
      * 创建
@@ -121,6 +126,14 @@ public class SaasRoleServiceImpl implements ISaasRoleService {
             throw new IllegalArgumentException("删除SaasRole时发生异常,找不到要删除的数据,id:" + id);
         }
 
+        // 如果角色和账号由关联,角色不可删除
+        QuerySaasAccountRoleDTO querySaasAccountRoleDTO = new QuerySaasAccountRoleDTO();
+        querySaasAccountRoleDTO.setRoleId(id);
+        List<SaasAccountRole> saasAccountRoles = saasAccountRoleService.querySaasAccountRoleList(querySaasAccountRoleDTO);
+        if (!CollectionUtils.isEmpty(saasAccountRoles)) {
+            throw new IllegalArgumentException("被引用的角色不可删除");
+        }
+
         return saasRole;
     }
 
@@ -153,6 +166,7 @@ public class SaasRoleServiceImpl implements ISaasRoleService {
     public IPage<SaasRole> pageQuerySaasRole(PageQuerySaasRoleDTO pageQuerySaasRoleDTO) {
         // 调用运维平台分页查询接口
         pageQuerySaasRoleDTO.setDefaultValue();
+        pageQuerySaasRoleDTO.setCountFunction(true);
         FmResponseContent<List<SaasRole>> saasResponse = saasRoleClient.queryRolePageList(pageQuerySaasRoleDTO);
         Integer count = saasResponse.getCount();
         List<SaasRole> content = saasResponse.getContent();