lixing 4 yıl önce
ebeveyn
işleme
29bb4f7dbe
21 değiştirilmiş dosya ile 329 ekleme ve 160 silme
  1. 9 7
      fm-person/src/main/java/com/persagy/fm/person/controller/PersonController.java
  2. 25 14
      fm-person/src/main/java/com/persagy/fm/person/model/ConvertPersonTool.java
  3. 2 2
      fm-person/src/main/java/com/persagy/fm/person/model/dto/AddPersonDTO.java
  4. 16 0
      fm-person/src/main/java/com/persagy/fm/person/model/dto/AddPerson4FrontEndDTO.java
  5. 0 10
      fm-person/src/main/java/com/persagy/fm/person/model/dto/AddPersonValidationGroup.java
  6. 0 10
      fm-person/src/main/java/com/persagy/fm/person/model/dto/SyncAddPersonValidationGroup.java
  7. 1 1
      fm-person/src/main/java/com/persagy/fm/person/model/dto/UpdatePersonDTO.java
  8. 19 0
      fm-person/src/main/java/com/persagy/fm/person/model/dto/UpsertPerson4BackEndDTO.java
  9. 27 0
      fm-person/src/main/java/com/persagy/fm/person/model/dto/UpsertPerson4FrontEndDTO.java
  10. 0 4
      fm-person/src/main/java/com/persagy/fm/person/model/dto/UpsertPersonDTO.java
  11. 19 19
      fm-person/src/main/java/com/persagy/fm/person/model/vo/ResponsePersonListItemVO.java
  12. 4 4
      fm-person/src/main/java/com/persagy/fm/person/service/IPersonService.java
  13. 78 75
      fm-person/src/main/java/com/persagy/fm/person/service/impl/PersonServiceImpl.java
  14. 1 0
      fm-person/src/main/java/com/persagy/fm/saas/accountrole/model/dto/DeleteSaasAccountRoleDTO.java
  15. 11 0
      fm-person/src/main/java/com/persagy/fm/saas/accountrole/service/ISaasAccountRoleService.java
  16. 34 8
      fm-person/src/main/java/com/persagy/fm/saas/accountrole/service/impl/SaasAccountRoleServiceImpl.java
  17. 12 0
      fm-person/src/main/java/com/persagy/fm/saas/role/client/SaasRoleClient.java
  18. 10 4
      fm-person/src/main/java/com/persagy/fm/saas/role/controller/SaasRoleController.java
  19. 21 0
      fm-person/src/main/java/com/persagy/fm/saas/role/model/dto/QuerySaasRoleByNameDTO.java
  20. 10 0
      fm-person/src/main/java/com/persagy/fm/saas/role/service/ISaasRoleService.java
  21. 30 2
      fm-person/src/main/java/com/persagy/fm/saas/role/service/impl/SaasRoleServiceImpl.java

+ 9 - 7
fm-person/src/main/java/com/persagy/fm/person/controller/PersonController.java

@@ -47,16 +47,18 @@ public class PersonController {
     @ApiOperation(value = "创建人员")
     @PostMapping("/create")
     public CommonResult<FmResponseUpsertVO> createPerson(
-            @Validated({AddPersonValidationGroup.class}) @RequestBody AddPersonDTO addPersonDTO) {
-        String id = personService.createPerson(addPersonDTO);
+            @Validated @RequestBody AddPerson4FrontEndDTO addPerson4FrontEndDTO) {
+        String id = personService.createPerson(addPerson4FrontEndDTO);
         return ResultHelper.single(new FmResponseUpsertVO(id));
     }
 
     @ApiOperation(value = "同步创建人员")
     @PostMapping("/sync_create")
     public CommonResult<FmResponseUpsertVO> syncCreatePerson(
-            @Validated({SyncAddPersonValidationGroup.class}) @RequestBody AddPersonDTO addPersonDTO) {
-        String id = personService.createPerson(addPersonDTO);
+            @Validated @RequestBody AddPerson4BackEndDTO addPerson4BackEndDTO) {
+        AddPerson4FrontEndDTO addPerson4FrontEndDTO = ConvertPersonTool.INSTANCE.
+                convert2AddPerson4FrontEndDTO(addPerson4BackEndDTO);
+        String id = personService.createPerson(addPerson4FrontEndDTO);
         return ResultHelper.single(new FmResponseUpsertVO(id));
     }
 
@@ -73,9 +75,9 @@ public class PersonController {
     @ApiOperation(value = "更新人员")
     @PostMapping("/update")
     public CommonResult<FmResponseUpsertVO> updatePerson(
-            @Valid @RequestBody UpdatePersonDTO updatePersonDTO) {
-        personService.updatePerson(updatePersonDTO);
-        return ResultHelper.single(new FmResponseUpsertVO(updatePersonDTO.getId()));
+            @Valid @RequestBody UpdatePerson4FrontEndDTO updatePerson4FrontEndDTO) {
+        personService.updatePerson(updatePerson4FrontEndDTO);
+        return ResultHelper.single(new FmResponseUpsertVO(updatePerson4FrontEndDTO.getId()));
     }
 
 

+ 25 - 14
fm-person/src/main/java/com/persagy/fm/person/model/ConvertPersonTool.java

@@ -2,9 +2,10 @@ package com.persagy.fm.person.model;
 
 import com.persagy.fm.common.model.vo.SimpleObjVO;
 import com.persagy.fm.person.jms.model.AccountCreateMsg;
-import com.persagy.fm.person.model.dto.AddPersonDTO;
+import com.persagy.fm.person.model.dto.AddPerson4BackEndDTO;
+import com.persagy.fm.person.model.dto.AddPerson4FrontEndDTO;
 import com.persagy.fm.person.model.dto.PageQueryPersonDTO;
-import com.persagy.fm.person.model.dto.UpdatePersonDTO;
+import com.persagy.fm.person.model.dto.UpdatePerson4FrontEndDTO;
 import com.persagy.fm.person.model.vo.ResponsePersonItemVO;
 import com.persagy.fm.person.model.vo.ResponsePersonListItemVO;
 import com.persagy.fm.person.model.vo.SimplePersonListItemVO;
@@ -64,23 +65,23 @@ public interface ConvertPersonTool {
     /**
      * addDTO转换为do
      *
-     * @param addPersonDTO addDTO
+     * @param addPerson4FrontEndDTO addDTO
      * @return 要创建的do对象
      * @author lixing
      * @version V1.0 2021-03-15 17:20:33
      */
-    Person convertAddDto2Entity(AddPersonDTO addPersonDTO);
+    Person convertAddDto2Entity(AddPerson4FrontEndDTO addPerson4FrontEndDTO);
 
     /**
      * updateDTO转换为实体
      *
      * @param person          更新前的do对象
-     * @param updatePersonDTO updateDTO
+     * @param updatePerson4FrontEndDTO updateDTO
      * @return 更新后的do对象
      * @author lixing
      * @version V1.0 2021-03-15 17:20:33
      */
-    Person convertUpdateDto2Entity(@MappingTarget Person person, UpdatePersonDTO updatePersonDTO);
+    Person convertUpdateDto2Entity(@MappingTarget Person person, UpdatePerson4FrontEndDTO updatePerson4FrontEndDTO);
 
     /**
      * 分页查询部门下的人员入参转换为查询工作信息入参
@@ -132,19 +133,19 @@ public interface ConvertPersonTool {
     /**
      * addPersonDTO转换为addSaasAccountDTO
      *
-     * @param addPersonDTO 添加人员的入参
+     * @param addPerson4FrontEndDTO 添加人员的入参
      * @return 创建账号的入参
      * @author lixing
      * @version V1.0 2021/4/6 3:06 下午
      */
     @Mapping(source = "expireDate", target = "validEndTime")
-    AddSaasAccountDTO convert2AddSaasAccountDTO(AddPersonDTO addPersonDTO);
+    AddSaasAccountDTO convert2AddSaasAccountDTO(AddPerson4FrontEndDTO addPerson4FrontEndDTO);
 
     /**
      * 账号信息和更新人员入参转换为更新账号入参
      *
      * @param account 账号信息
-     * @param updatePersonDTO 更新人员入参
+     * @param updatePerson4FrontEndDTO 更新人员入参
      * @return 更新账号入参
      * @author lixing
      * @version V1.0 2021/4/6 4:55 下午
@@ -156,12 +157,12 @@ public interface ConvertPersonTool {
             @Mapping(target = "headPortrait", source = "account.headPortrait"),
             @Mapping(target = "validStartTime", source = "account.validStartTime"),
             @Mapping(target = "remark", source = "account.remark"),
-            @Mapping(target = "username", source = "updatePersonDTO.username"),
-            @Mapping(target = "phoneNum", source = "updatePersonDTO.phoneNum"),
-            @Mapping(target = "mail", source = "updatePersonDTO.mail"),
-            @Mapping(target = "validEndTime", source = "updatePersonDTO.expireDate")
+            @Mapping(target = "username", source = "updatePerson4FrontEndDTO.username"),
+            @Mapping(target = "phoneNum", source = "updatePerson4FrontEndDTO.phoneNum"),
+            @Mapping(target = "mail", source = "updatePerson4FrontEndDTO.mail"),
+            @Mapping(target = "validEndTime", source = "updatePerson4FrontEndDTO.expireDate")
     })
-    UpdateSaasAccountDTO convert2UpdateSaasAccountDTO(SaasAccountListItemVO account, UpdatePersonDTO updatePersonDTO);
+    UpdateSaasAccountDTO convert2UpdateSaasAccountDTO(SaasAccountListItemVO account, UpdatePerson4FrontEndDTO updatePerson4FrontEndDTO);
 
     /**
      * 运维系统项目列表转换为展示给前端的ProjectVO列表
@@ -200,5 +201,15 @@ public interface ConvertPersonTool {
             @Mapping(target = "name", source = "projectName")
     })
     ProjectVO convert2ProjectVO(SaasProject saasProject);
+
+    /**
+     * AddPerson4BackEndDTO 转换为 AddPerson4FrontEndDTO
+     *
+     * @param addPerson4BackEndDTO 给后端使用的添加人员dto
+     * @return AddPerson4FrontEndDTO 给前端使用的添加人员dto
+     * @author lixing
+     * @version V1.0 2021/4/20 10:06 上午
+     */
+    AddPerson4FrontEndDTO convert2AddPerson4FrontEndDTO(AddPerson4BackEndDTO addPerson4BackEndDTO);
 }
 

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

@@ -10,7 +10,7 @@ import lombok.EqualsAndHashCode;
  */
 @EqualsAndHashCode(callSuper = true)
 @Data
-@ApiModel(value = "创建人员入参")
-public class AddPersonDTO extends UpsertPersonDTO{
+@ApiModel(value = "给后端使用的创建人员入参")
+public class AddPerson4BackEndDTO extends UpsertPerson4BackEndDTO{
 
 }

+ 16 - 0
fm-person/src/main/java/com/persagy/fm/person/model/dto/AddPerson4FrontEndDTO.java

@@ -0,0 +1,16 @@
+package com.persagy.fm.person.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-03-15 17:20:32
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel(value = "给前端使用的创建人员入参")
+public class AddPerson4FrontEndDTO extends UpsertPerson4FrontEndDTO{
+
+}

+ 0 - 10
fm-person/src/main/java/com/persagy/fm/person/model/dto/AddPersonValidationGroup.java

@@ -1,10 +0,0 @@
-package com.persagy.fm.person.model.dto;
-
-/**
- * 添加人员入参校验分组
- *
- * @author lixing
- * @version V1.0 2021/4/19 7:14 下午
- **/
-public interface AddPersonValidationGroup {
-}

+ 0 - 10
fm-person/src/main/java/com/persagy/fm/person/model/dto/SyncAddPersonValidationGroup.java

@@ -1,10 +0,0 @@
-package com.persagy.fm.person.model.dto;
-
-/**
- * 同步添加人员入参校验分组
- *
- * @author lixing
- * @version V1.0 2021/4/19 7:14 下午
- **/
-public interface SyncAddPersonValidationGroup {
-}

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

@@ -14,7 +14,7 @@ import javax.validation.constraints.NotNull;
 @EqualsAndHashCode(callSuper = true)
 @Data
 @ApiModel(value = "更新人员入参")
-public class UpdatePersonDTO extends UpsertPersonDTO{
+public class UpdatePerson4FrontEndDTO extends UpsertPerson4FrontEndDTO{
     @ApiModelProperty(value = "id", required = true)
     @NotNull(message = "id不能为空") 
     private String id;

+ 19 - 0
fm-person/src/main/java/com/persagy/fm/person/model/dto/UpsertPerson4BackEndDTO.java

@@ -0,0 +1,19 @@
+package com.persagy.fm.person.model.dto;
+
+import com.persagy.fm.saas.project.model.dto.UpsertSaasProjectDTO;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 给前端使用的创建和更新人员基类
+ *
+ * @author lixing
+ * @version V1.0 2021/3/23 11:09 上午
+ **/
+@Data
+public class UpsertPerson4BackEndDTO extends UpsertPersonDTO{
+    @ApiModelProperty(value = "项目权限")
+    private List<UpsertSaasProjectDTO> projects;
+}

+ 27 - 0
fm-person/src/main/java/com/persagy/fm/person/model/dto/UpsertPerson4FrontEndDTO.java

@@ -0,0 +1,27 @@
+package com.persagy.fm.person.model.dto;
+
+import com.persagy.fm.common.constant.RegexConstants;
+import com.persagy.fm.saas.project.model.dto.UpsertSaasProjectDTO;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import net.minidev.json.annotate.JsonIgnore;
+import org.hibernate.validator.constraints.Length;
+
+import javax.validation.constraints.Email;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.Pattern;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 给前端使用的创建和更新人员基类
+ *
+ * @author lixing
+ * @version V1.0 2021/3/23 11:09 上午
+ **/
+@Data
+public class UpsertPerson4FrontEndDTO extends UpsertPersonDTO{
+    @ApiModelProperty(value = "项目权限", required = true)
+    @NotEmpty(message = "项目权限不能为空")
+    private List<UpsertSaasProjectDTO> projects;
+}

+ 0 - 4
fm-person/src/main/java/com/persagy/fm/person/model/dto/UpsertPersonDTO.java

@@ -68,10 +68,6 @@ public class UpsertPersonDTO {
     @ApiModelProperty(value = "所属部门id", required = true)
     private List<String> depIds;
 
-    @ApiModelProperty(value = "项目权限", required = true)
-    @NotEmpty(message = "项目权限不能为空", groups = {AddPersonValidationGroup.class})
-    private List<UpsertSaasProjectDTO> projects;
-
     @ApiModelProperty(value = "主岗")
     private String mainDuty;
 

+ 19 - 19
fm-person/src/main/java/com/persagy/fm/person/model/vo/ResponsePersonListItemVO.java

@@ -62,23 +62,23 @@ public class ResponsePersonListItemVO {
     @ApiModelProperty("所属部门")
     private List<DepSimpleObjVO> deps;
 
-    public SimpleObjVO getPersonTypeVO() {
-        return personTypeVO == null ? new SimpleObjVO() : personTypeVO;
-    }
-
-    public SimpleObjVO getMainDuty() {
-        return mainDuty == null ? new SimpleObjVO() : mainDuty;
-    }
-
-    public List<SimpleObjVO> getOtherDuties() {
-        return otherDuties == null ? Lists.newArrayList() : otherDuties;
-    }
-
-    public List<SimpleObjVO> getProfessions() {
-        return professions == null ? Lists.newArrayList() : professions;
-    }
-
-    public List<DepSimpleObjVO> getDeps() {
-        return deps == null ? Lists.newArrayList() : deps;
-    }
+//    public SimpleObjVO getPersonTypeVO() {
+//        return personTypeVO == null ? new SimpleObjVO() : personTypeVO;
+//    }
+//
+//    public SimpleObjVO getMainDuty() {
+//        return mainDuty == null ? new SimpleObjVO() : mainDuty;
+//    }
+//
+//    public List<SimpleObjVO> getOtherDuties() {
+//        return otherDuties == null ? Lists.newArrayList() : otherDuties;
+//    }
+//
+//    public List<SimpleObjVO> getProfessions() {
+//        return professions == null ? Lists.newArrayList() : professions;
+//    }
+//
+//    public List<DepSimpleObjVO> getDeps() {
+//        return deps == null ? Lists.newArrayList() : deps;
+//    }
 }

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

@@ -20,12 +20,12 @@ public interface IPersonService {
     /**
      * 创建人员
      *
-     * @param addPersonDTO addDTO
+     * @param addPerson4FrontEndDTO addDTO
      * @return 人员主键
      * @author lixing
      * @version V1.0 2021-03-15 17:20:31
      */
-    String createPerson(AddPersonDTO addPersonDTO);
+    String createPerson(AddPerson4FrontEndDTO addPerson4FrontEndDTO);
 
     /**
      * 创建人员
@@ -79,11 +79,11 @@ public interface IPersonService {
     /**
      * 更新人员
      *
-     * @param updatePersonDTO updateDTO
+     * @param updatePerson4FrontEndDTO updateDTO
      * @author lixing
      * @version V1.0 2021-03-15 17:20:31
      */
-    void updatePerson(UpdatePersonDTO updatePersonDTO);
+    void updatePerson(UpdatePerson4FrontEndDTO updatePerson4FrontEndDTO);
 
     /**
      * 更新人员

+ 78 - 75
fm-person/src/main/java/com/persagy/fm/person/service/impl/PersonServiceImpl.java

@@ -97,19 +97,19 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
      */
     @Override
     @Transactional
-    public String createPerson(AddPersonDTO addPersonDTO) {
-        checkAddPersonDTO(addPersonDTO);
+    public String createPerson(AddPerson4FrontEndDTO addPerson4FrontEndDTO) {
+        checkAddPersonDTO(addPerson4FrontEndDTO);
         // 创建账号
-        String accountId = createAccount(addPersonDTO);
+        String accountId = createAccount(addPerson4FrontEndDTO);
         // 保存人员
-        Person person = savePerson(addPersonDTO, accountId);
+        Person person = savePerson(addPerson4FrontEndDTO, accountId);
         // 创建人员工作信息
-        saveWorkResumes(addPersonDTO, person.getId());
+        saveWorkResumes(addPerson4FrontEndDTO, person.getId());
         // 账号关联项目
-        saveAccountProject(accountId, addPersonDTO.getProjects());
+        saveAccountProject(accountId, addPerson4FrontEndDTO.getProjects());
         // 账号关联角色
-        saveAccountRole(accountId, addPersonDTO.getMainDuty(),
-                addPersonDTO.getOtherDuties(), addPersonDTO.getOtherRoles());
+        saveAccountRole(accountId, addPerson4FrontEndDTO.getMainDuty(),
+                addPerson4FrontEndDTO.getOtherDuties(), addPerson4FrontEndDTO.getOtherRoles());
         return person.getId();
     }
 
@@ -187,13 +187,13 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
     /**
      * 保存人员的工作信息
      *
-     * @param addPersonDTO 创建人员入参
-     * @param personId     人员id
+     * @param addPerson4FrontEndDTO 创建人员入参
+     * @param personId              人员id
      * @author lixing
      * @version V1.0 2021/3/23 4:23 下午
      */
-    private void saveWorkResumes(AddPersonDTO addPersonDTO, String personId) {
-        List<String> depIds = addPersonDTO.getDepIds();
+    private void saveWorkResumes(AddPerson4FrontEndDTO addPerson4FrontEndDTO, String personId) {
+        List<String> depIds = addPerson4FrontEndDTO.getDepIds();
         for (String depId : depIds) {
             AddWorkResumeDTO addWorkResumeDTO = new AddWorkResumeDTO();
             addWorkResumeDTO.setPersonId(personId);
@@ -205,18 +205,18 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
     /**
      * 保存人员信息到数据库
      *
-     * @param addPersonDTO 创建人员入参
-     * @param accountId    账号id
+     * @param addPerson4FrontEndDTO 创建人员入参
+     * @param accountId             账号id
      * @return 保存后的人员对象
      * @author lixing
      * @version V1.0 2021/3/23 4:06 下午
      */
-    private Person savePerson(AddPersonDTO addPersonDTO, String accountId) {
-        Person person = ConvertPersonTool.INSTANCE.convertAddDto2Entity(addPersonDTO);
+    private Person savePerson(AddPerson4FrontEndDTO addPerson4FrontEndDTO, String accountId) {
+        Person person = ConvertPersonTool.INSTANCE.convertAddDto2Entity(addPerson4FrontEndDTO);
         person.setNamePinyin(PinyinUtil.getPinyin(person.getName(), ""));
         person.setAccountId(accountId);
-        if (!CollectionUtils.isEmpty(addPersonDTO.getProfessions())) {
-            person.setProfession(String.join(",", addPersonDTO.getProfessions()));
+        if (!CollectionUtils.isEmpty(addPerson4FrontEndDTO.getProfessions())) {
+            person.setProfession(String.join(",", addPerson4FrontEndDTO.getProfessions()));
         }
         // 设置默认值
         personServiceTool.setDefaultValue(person);
@@ -227,14 +227,14 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
     /**
      * 创建账号
      *
-     * @param addPersonDTO 创建人员入参
+     * @param addPerson4FrontEndDTO 创建人员入参
      * @return 账号id
      * @author lixing
      * @version V1.0 2021/3/23 3:42 下午
      */
-    private String createAccount(AddPersonDTO addPersonDTO) {
-        AddSaasAccountDTO addSaasAccountDTO = ConvertPersonTool.INSTANCE.convert2AddSaasAccountDTO(addPersonDTO);
-        addSaasAccountDTO.setValidLast(getAccountExpireType(addPersonDTO.getExpireDate()));
+    private String createAccount(AddPerson4FrontEndDTO addPerson4FrontEndDTO) {
+        AddSaasAccountDTO addSaasAccountDTO = ConvertPersonTool.INSTANCE.convert2AddSaasAccountDTO(addPerson4FrontEndDTO);
+        addSaasAccountDTO.setValidLast(getAccountExpireType(addPerson4FrontEndDTO.getExpireDate()));
         return saasAccountService.createSaasAccount(addSaasAccountDTO);
     }
 
@@ -307,29 +307,29 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
     /**
      * 校验重复项
      *
-     * @param addPersonDTO 创建人员入参
+     * @param addPerson4FrontEndDTO 创建人员入参
      * @author lixing
      * @version V1.0 2021/3/22 9:53 上午
      */
-    private void checkAddPersonDTO(AddPersonDTO addPersonDTO) {
+    private void checkAddPersonDTO(AddPerson4FrontEndDTO addPerson4FrontEndDTO) {
         // 校验身份证号
-        if (checkDuplicateIdNumber(addPersonDTO.getIdNumber())) {
+        if (checkDuplicateIdNumber(addPerson4FrontEndDTO.getIdNumber())) {
             throw new IllegalArgumentException("身份证号重复");
         }
         // 校验账号
-        if (checkDuplicateUserName(addPersonDTO.getUsername())) {
+        if (checkDuplicateUserName(addPerson4FrontEndDTO.getUsername())) {
             throw new IllegalArgumentException("账号已被使用");
         }
         // 校验手机号
-        if (checkDuplicatePhoneNum(addPersonDTO.getPhoneNum())) {
+        if (checkDuplicatePhoneNum(addPerson4FrontEndDTO.getPhoneNum())) {
             throw new IllegalArgumentException("手机号已被使用");
         }
         // 校验工号
-        if (checkDuplicateJobNumber(addPersonDTO.getJobNumber())) {
+        if (checkDuplicateJobNumber(addPerson4FrontEndDTO.getJobNumber())) {
             throw new IllegalArgumentException("工号已被使用");
         }
         // 校验邮箱
-        if (checkDuplicateMail(addPersonDTO.getMail())) {
+        if (checkDuplicateMail(addPerson4FrontEndDTO.getMail())) {
             throw new IllegalArgumentException("邮箱已被使用");
         }
     }
@@ -464,20 +464,20 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
      */
     @Override
     @Transactional
-    public void updatePerson(UpdatePersonDTO updatePersonDTO) {
-        String personId = updatePersonDTO.getId();
+    public void updatePerson(UpdatePerson4FrontEndDTO updatePerson4FrontEndDTO) {
+        String personId = updatePerson4FrontEndDTO.getId();
         // 更新人员基本信息
-        Person person = updatePersonBaseInfo(updatePersonDTO, personId);
+        Person person = updatePersonBaseInfo(updatePerson4FrontEndDTO, personId);
         // 账号基本信息发生改变,更新账号信息
         String accountId = person.getAccountId();
         if (StringUtils.isBlank(accountId)) {
             throw new IllegalArgumentException("无法获取人员的账号信息,人员的账号id为空,人员id:" + personId);
         }
         SaasAccountListItemVO account = saasAccountService.querySaasAccountDetail(accountId);
-        if (accountInfoChanged(updatePersonDTO, account)) {
+        if (accountInfoChanged(updatePerson4FrontEndDTO, account)) {
             UpdateSaasAccountDTO updateSaasAccountDTO = ConvertPersonTool.INSTANCE.
-                    convert2UpdateSaasAccountDTO(account, updatePersonDTO);
-            updateSaasAccountDTO.setValidLast(getAccountExpireType(updatePersonDTO.getExpireDate()));
+                    convert2UpdateSaasAccountDTO(account, updatePerson4FrontEndDTO);
+            updateSaasAccountDTO.setValidLast(getAccountExpireType(updatePerson4FrontEndDTO.getExpireDate()));
             updateSaasAccountDTO.setValid(ValidEnum.TRUE.getType());
             saasAccountService.updateSaasAccount(updateSaasAccountDTO);
         }
@@ -485,43 +485,43 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
         // 更新账号和角色的关联
         List<SaasAccountRole> saasAccountRoles = saasAccountRoleService.
                 querySaasAccountRoleListByAccountIdList(Lists.newArrayList(accountId));
-        if (accountRoleChanged(saasAccountRoles, updatePersonDTO.getMainDuty(),
-                updatePersonDTO.getOtherDuties(), updatePersonDTO.getOtherRoles())) {
-            resetAccountRoles(updatePersonDTO, accountId);
+        if (accountRoleChanged(saasAccountRoles, updatePerson4FrontEndDTO.getMainDuty(),
+                updatePerson4FrontEndDTO.getOtherDuties(), updatePerson4FrontEndDTO.getOtherRoles())) {
+            resetAccountRoles(updatePerson4FrontEndDTO, accountId);
         }
 
         // 更新账号和项目的关联
         List<SaasAccountProject> saasAccountProjects = saasAccountProjectService.
                 querySaasAccountProjectListByAccountId(accountId);
-        if (accountProjectsChanged(saasAccountProjects, updatePersonDTO.getProjects())) {
-            saasAccountProjectService.resetSaasAccountProject(accountId, updatePersonDTO.getProjects());
+        if (accountProjectsChanged(saasAccountProjects, updatePerson4FrontEndDTO.getProjects())) {
+            saasAccountProjectService.resetSaasAccountProject(accountId, updatePerson4FrontEndDTO.getProjects());
         }
 
         // 更新工作信息
-        List<String> depIdsAfterUpdate = updatePersonDTO.getDepIds();
+        List<String> depIdsAfterUpdate = updatePerson4FrontEndDTO.getDepIds();
         updatePersonWorkResumes(depIdsAfterUpdate, personId);
     }
 
     /**
      * 更新人员基本信息
      *
-     * @param updatePersonDTO 更新人员入参
-     * @param personId        人员id
+     * @param updatePerson4FrontEndDTO 更新人员入参
+     * @param personId                 人员id
      * @return 更新后的人员对象
      * @throws
      * @author lixing
      * @version V1.0 2021/4/9 7:30 下午
      */
-    private Person updatePersonBaseInfo(UpdatePersonDTO updatePersonDTO, String personId) {
+    private Person updatePersonBaseInfo(UpdatePerson4FrontEndDTO updatePerson4FrontEndDTO, String personId) {
         Person person = getById(personId);
         // 直接上级不能选择自己
-        Long leaderAfterChange = updatePersonDTO.getLeader();
-        if (personId.equals(leaderAfterChange.toString())) {
+        Long leaderAfterChange = updatePerson4FrontEndDTO.getLeader();
+        if (leaderAfterChange != null && personId.equals(leaderAfterChange.toString())) {
             throw new IllegalArgumentException("不能选择自己作为直接上级");
         }
-        person = ConvertPersonTool.INSTANCE.convertUpdateDto2Entity(person, updatePersonDTO);
+        person = ConvertPersonTool.INSTANCE.convertUpdateDto2Entity(person, updatePerson4FrontEndDTO);
         person.setNamePinyin(PinyinUtil.getPinyin(person.getName(), ""));
-        List<String> professions = updatePersonDTO.getProfessions();
+        List<String> professions = updatePerson4FrontEndDTO.getProfessions();
         if (CollectionUtils.isEmpty(professions)) {
             person.setProfession("");
         } else {
@@ -535,22 +535,22 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
     /**
      * 重置账号与角色的关联关系
      *
-     * @param updatePersonDTO 更新人员入参
-     * @param accountId       账号id
+     * @param updatePerson4FrontEndDTO 更新人员入参
+     * @param accountId                账号id
      * @author lixing
      * @version V1.0 2021/4/8 3:07 下午
      */
-    private void resetAccountRoles(UpdatePersonDTO updatePersonDTO, String accountId) {
+    private void resetAccountRoles(UpdatePerson4FrontEndDTO updatePerson4FrontEndDTO, String accountId) {
         List<AddSaasAccountRoleDTO> accountRoleDTOList = Lists.newArrayList();
-        if (StringUtils.isNotBlank(updatePersonDTO.getMainDuty())) {
+        if (StringUtils.isNotBlank(updatePerson4FrontEndDTO.getMainDuty())) {
             AddSaasAccountRoleDTO mainDutyDTO = new AddSaasAccountRoleDTO();
-            mainDutyDTO.setRoleId(updatePersonDTO.getMainDuty());
+            mainDutyDTO.setRoleId(updatePerson4FrontEndDTO.getMainDuty());
             mainDutyDTO.setCasType(AccountRoleTypeEnum.MAIN_DUTY.getType());
             accountRoleDTOList.add(mainDutyDTO);
         }
 
-        if (!CollectionUtils.isEmpty(updatePersonDTO.getOtherDuties())) {
-            updatePersonDTO.getOtherDuties().forEach(otherDuty -> {
+        if (!CollectionUtils.isEmpty(updatePerson4FrontEndDTO.getOtherDuties())) {
+            updatePerson4FrontEndDTO.getOtherDuties().forEach(otherDuty -> {
                 AddSaasAccountRoleDTO otherDutyDTO = new AddSaasAccountRoleDTO();
                 otherDutyDTO.setRoleId(otherDuty);
                 otherDutyDTO.setCasType(AccountRoleTypeEnum.OTHER_DUTY.getType());
@@ -558,8 +558,8 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
             });
         }
 
-        if (!CollectionUtils.isEmpty(updatePersonDTO.getOtherRoles())) {
-            updatePersonDTO.getOtherRoles().forEach(otherRole -> {
+        if (!CollectionUtils.isEmpty(updatePerson4FrontEndDTO.getOtherRoles())) {
+            updatePerson4FrontEndDTO.getOtherRoles().forEach(otherRole -> {
                 AddSaasAccountRoleDTO otherDutyDTO = new AddSaasAccountRoleDTO();
                 otherDutyDTO.setRoleId(otherRole);
                 otherDutyDTO.setCasType(AccountRoleTypeEnum.SYS_ROLE.getType());
@@ -608,9 +608,9 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
     private Boolean accountRoleChanged(
             List<SaasAccountRole> saasAccountRoles, String mainDuty,
             List<String> otherDuties, List<String> otherRoles) {
-//        if (otherDuties.contains(mainDuty)) {
-//            throw new IllegalArgumentException("副岗不能选择和主岗相同的岗位");
-//        }
+        //        if (otherDuties.contains(mainDuty)) {
+        //            throw new IllegalArgumentException("副岗不能选择和主岗相同的岗位");
+        //        }
         // 校验主岗是否发生变化
         List<SaasAccountRole> mainDuties = saasAccountRoles.stream().filter(
                 saasAccountRole -> AccountRoleTypeEnum.MAIN_DUTY.getType().equals(saasAccountRole.getCasType())
@@ -645,32 +645,32 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
     /**
      * 判断账号基本信息是否发生变化
      *
-     * @param updatePersonDTO 更新人员入参
-     * @param account         账号实例
+     * @param updatePerson4FrontEndDTO 更新人员入参
+     * @param account                  账号实例
      * @return 是否发生变化
      * @author lixing
      * @version V1.0 2021/4/8 9:38 上午
      */
-    private boolean accountInfoChanged(UpdatePersonDTO updatePersonDTO, SaasAccountListItemVO account) {
+    private boolean accountInfoChanged(UpdatePerson4FrontEndDTO updatePerson4FrontEndDTO, SaasAccountListItemVO account) {
         if (account != null) {
             // 账号名称
             if (account.getUsername() != null &&
-                    !account.getUsername().equals(updatePersonDTO.getUsername())) {
+                    !account.getUsername().equals(updatePerson4FrontEndDTO.getUsername())) {
                 return true;
             }
             // 登录权限
             if (account.getValidEndTime() != null &&
-                    !account.getValidEndTime().equals(updatePersonDTO.getExpireDate())) {
+                    !account.getValidEndTime().equals(updatePerson4FrontEndDTO.getExpireDate())) {
                 return true;
             }
             // 手机号码
             if (account.getPhoneNum() != null &&
-                    !account.getPhoneNum().equals(updatePersonDTO.getPhoneNum())) {
+                    !account.getPhoneNum().equals(updatePerson4FrontEndDTO.getPhoneNum())) {
                 return true;
             }
             // 邮箱
             return account.getMail() != null &&
-                    !account.getMail().equals(updatePersonDTO.getMail());
+                    !account.getMail().equals(updatePerson4FrontEndDTO.getMail());
         } else {
             throw new IllegalArgumentException("账号信息为空");
         }
@@ -759,7 +759,7 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
      * 组装分页查询结果
      *
      * @param people 人员列表(单页)
-     * @param total 人员总数量
+     * @param total  人员总数量
      * @return 分页结果
      * @author lixing
      * @version V1.0 2021/4/14 5:51 下午
@@ -892,10 +892,10 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
         if (batchUpdatePersonDTO.getPersonType() != null ||
                 batchUpdatePersonDTO.getProfessions() != null) {
             personIds.forEach(personId -> {
-                UpdatePersonDTO updatePersonDTO = new UpdatePersonDTO();
-                updatePersonDTO.setPersonType(batchUpdatePersonDTO.getPersonType());
-                updatePersonDTO.setProfessions(batchUpdatePersonDTO.getProfessions());
-                updatePersonBaseInfo(updatePersonDTO, personId);
+                UpdatePerson4FrontEndDTO updatePerson4FrontEndDTO = new UpdatePerson4FrontEndDTO();
+                updatePerson4FrontEndDTO.setPersonType(batchUpdatePersonDTO.getPersonType());
+                updatePerson4FrontEndDTO.setProfessions(batchUpdatePersonDTO.getProfessions());
+                updatePersonBaseInfo(updatePerson4FrontEndDTO, personId);
             });
         }
 
@@ -914,7 +914,8 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
                 addSaasAccountRoleDTO.setRoleId(batchUpdatePersonDTO.getMainDuty());
                 addSaasAccountRoleDTO.setCasType(AccountRoleTypeEnum.MAIN_DUTY.getType());
                 saasAccountRoleService.resetSaasAccountRole(
-                        person.getAccountId(), Lists.newArrayList(addSaasAccountRoleDTO));
+                        person.getAccountId(), AccountRoleTypeEnum.MAIN_DUTY.getType(),
+                        Lists.newArrayList(addSaasAccountRoleDTO));
             });
         }
 
@@ -930,7 +931,8 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
                             return addSaasAccountRoleDTO;
                         }
                 ).collect(Collectors.toList());
-                saasAccountRoleService.resetSaasAccountRole(person.getAccountId(), otherDuties);
+                saasAccountRoleService.resetSaasAccountRole(
+                        person.getAccountId(), AccountRoleTypeEnum.OTHER_DUTY.getType(), otherDuties);
             });
         }
 
@@ -946,7 +948,8 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
                             return addSaasAccountRoleDTO;
                         }
                 ).collect(Collectors.toList());
-                saasAccountRoleService.resetSaasAccountRole(person.getAccountId(), otherRoles);
+                saasAccountRoleService.resetSaasAccountRole(
+                        person.getAccountId(), AccountRoleTypeEnum.SYS_ROLE.getType(), otherRoles);
             });
         }
     }

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

@@ -17,4 +17,5 @@ import javax.validation.constraints.NotNull;
 @ApiModel(value = "删除账号-角色关联信息入参")
 public class DeleteSaasAccountRoleDTO extends SaasBaseDTO {
     private String accountId;
+    private String casType;
 }

+ 11 - 0
fm-person/src/main/java/com/persagy/fm/saas/accountrole/service/ISaasAccountRoleService.java

@@ -78,4 +78,15 @@ public interface ISaasAccountRoleService {
      * @version V1.0 2021/4/8 2:55 下午
      */
     void resetSaasAccountRole(String accountId, List<AddSaasAccountRoleDTO> roles);
+
+    /**
+     * 重置账号与角色的关联
+     *
+     * @param accountId 账号id
+     * @param accountRoleType 账号角色关联类型(主岗、副岗、附加角色)
+     * @param roles 更新后的角色信息
+     * @author lixing
+     * @version V1.0 2021/4/8 2:55 下午
+     */
+    void resetSaasAccountRole(String accountId, String accountRoleType, List<AddSaasAccountRoleDTO> roles);
 }

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

@@ -15,7 +15,6 @@ import com.persagy.fm.saas.accountrole.model.vo.AccountRoleVO;
 import com.persagy.fm.saas.accountrole.service.ISaasAccountRoleService;
 import com.persagy.fm.saas.role.model.SaasRole;
 import com.persagy.fm.saas.role.service.ISaasRoleService;
-import org.apache.commons.lang3.StringUtils;
 import org.assertj.core.util.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -154,7 +153,7 @@ public class SaasAccountRoleServiceImpl implements ISaasAccountRoleService {
      * 获取角色对象信息
      *
      * @param saasRoleMap 角色id和角色映射
-     * @param roleId 角色id
+     * @param roleId      角色id
      * @return SimpleObjVO 角色对象信息
      * @author lixing
      * @version V1.0 2021/4/1 10:34 上午
@@ -163,17 +162,44 @@ public class SaasAccountRoleServiceImpl implements ISaasAccountRoleService {
         SimpleObjVO simpleObjVO = new SimpleObjVO();
         simpleObjVO.setId(roleId);
         SaasRole saasRole = saasRoleMap.get(roleId);
-        String roleName = saasRole == null? "": saasRole.getRoleName();
+        String roleName = saasRole == null ? "" : saasRole.getRoleName();
         simpleObjVO.setName(roleName);
         return simpleObjVO;
     }
 
     @Override
     public void resetSaasAccountRole(String accountId, List<AddSaasAccountRoleDTO> roles) {
-        ResetSaasAccountRoleDTO resetSaasAccountRoleDTO = new ResetSaasAccountRoleDTO();
-        resetSaasAccountRoleDTO.setDefaultValueNoAccountId();
-        resetSaasAccountRoleDTO.setAccountId(accountId);
-        resetSaasAccountRoleDTO.setRoles(roles);
-        saasAccountRoleClient.resetSaasAccountRole(resetSaasAccountRoleDTO);
+        // 如果账号关联的所有角色都置空,调用运维平台的删除账号角色关联接口。运维平台重置账号关联角色的接口,不允许关联的角色为空
+        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);
+        }
+    }
+
+    @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);
+        } else {
+            ResetSaasAccountRoleDTO resetSaasAccountRoleDTO = new ResetSaasAccountRoleDTO();
+            resetSaasAccountRoleDTO.setDefaultValueNoAccountId();
+            resetSaasAccountRoleDTO.setAccountId(accountId);
+            resetSaasAccountRoleDTO.setCasType(accountRoleType);
+            resetSaasAccountRoleDTO.setRoles(roles);
+            saasAccountRoleClient.resetSaasAccountRole(resetSaasAccountRoleDTO);
+        }
     }
 }

+ 12 - 0
fm-person/src/main/java/com/persagy/fm/saas/role/client/SaasRoleClient.java

@@ -8,6 +8,7 @@ import com.persagy.fm.saas.role.client.fallback.SaasRoleClientFallbackFactory;
 import com.persagy.fm.saas.role.model.SaasRole;
 import com.persagy.fm.saas.role.model.dto.DeleteSaasRoleDTO;
 import com.persagy.fm.saas.role.model.dto.PageQuerySaasRoleDTO;
+import com.persagy.fm.saas.role.model.dto.QuerySaasRoleByNameDTO;
 import com.persagy.fm.saas.role.model.dto.QuerySaasRoleDTO;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -47,6 +48,17 @@ public interface SaasRoleClient {
     FmResponseContent<List<SaasRole>> queryRoleList(@RequestBody QuerySaasRoleDTO querySaasRoleDTO);
 
     /**
+     * 查询账号列表
+     *
+     * @param querySaasRoleByNameDTO 查询入参
+     * @return 角色列表
+     * @author lixing
+     * @version V1.0 2021/4/1 10:05 上午
+     */
+    @PostMapping("/role/querySaasRoleByName")
+    FmResponseContent<List<SaasRole>> querySaasRoleByName(@RequestBody QuerySaasRoleByNameDTO querySaasRoleByNameDTO);
+
+    /**
      * 创建角色
      *
      * @param saasRole 创建角色入参

+ 10 - 4
fm-person/src/main/java/com/persagy/fm/saas/role/controller/SaasRoleController.java

@@ -6,10 +6,7 @@ import com.persagy.fm.common.response.PageList;
 import com.persagy.fm.common.utils.ResultHelper;
 import com.persagy.fm.saas.role.model.ConvertSaasRoleTool;
 import com.persagy.fm.saas.role.model.SaasRole;
-import com.persagy.fm.saas.role.model.dto.AddSaasRoleDTO;
-import com.persagy.fm.saas.role.model.dto.DeleteSaasRoleDTO;
-import com.persagy.fm.saas.role.model.dto.PageQuerySaasRoleDTO;
-import com.persagy.fm.saas.role.model.dto.UpdateSaasRoleDTO;
+import com.persagy.fm.saas.role.model.dto.*;
 import com.persagy.fm.saas.role.model.vo.SaasRoleIdVO;
 import com.persagy.fm.saas.role.model.vo.SaasRoleListItemVO;
 import com.persagy.fm.saas.role.service.ISaasRoleService;
@@ -23,6 +20,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.validation.Valid;
+import java.util.List;
 
 /**
  * @author lixing
@@ -103,5 +101,13 @@ public class SaasRoleController {
         });
         return ResultHelper.multi(pagedResultList);
     }
+
+    @ApiOperation(value = "根据角色名称查询")
+    @PostMapping("/queryByName")
+    public CommonResult<PageList<SaasRole>> querySaasRoleByName(
+            @Valid @RequestBody QuerySaasRoleByNameDTO querySaasRoleByNameDTO) {
+        List<SaasRole> saasRoles = saasRoleService.queryByName(querySaasRoleByNameDTO);
+        return ResultHelper.multi(saasRoles);
+    }
 }
 

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

@@ -0,0 +1,21 @@
+package com.persagy.fm.saas.role.model.dto;
+
+import com.persagy.fm.saas.common.model.dto.SaasBaseDTO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-03-22 19:04:24
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel(value = "查询入参")
+public class QuerySaasRoleByNameDTO extends SaasBaseDTO {
+    @ApiModelProperty(value = "角色名称", required = true)
+    private String roleName;
+}

+ 10 - 0
fm-person/src/main/java/com/persagy/fm/saas/role/service/ISaasRoleService.java

@@ -95,4 +95,14 @@ public interface ISaasRoleService {
      * @version V1.0 2021-03-22 19:04:15
      */
     IPage<SaasRole> pageQuerySaasRole(PageQuerySaasRoleDTO pageQuerySaasRoleDTO);
+
+    /**
+     * 根据名称查询
+     *
+     * @param querySaasRoleByNameDTO 根据名称查询入参
+     * @return 角色列表
+     * @author lixing
+     * @version V1.0 2021-03-22 19:04:15
+     */
+    List<SaasRole> queryByName(QuerySaasRoleByNameDTO querySaasRoleByNameDTO);
 }

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

@@ -7,8 +7,6 @@ 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.constant.enums.RoleTypeEnum;
@@ -50,11 +48,30 @@ public class SaasRoleServiceImpl implements ISaasRoleService {
         SaasRole saasRole = ConvertSaasRoleTool.INSTANCE.convertAddDto2Entity(addSaasRoleDTO);
         // 设置默认值
         setDefaultValue(saasRole);
+        // 判断角色名称是否重复
+        checkDuplicateName(addSaasRoleDTO.getRoleName());
         FmResponseContent<String> response = saasRoleClient.createSaasRole(saasRole);
         return response.getContent();
     }
 
     /**
+     * 校验角色名称是否重复
+     *
+     * @param roleName 角色名称
+     * @author lixing
+     * @version V1.0 2021/4/20 6:40 下午
+     */
+    private void checkDuplicateName(String roleName) {
+        QuerySaasRoleByNameDTO querySaasRoleByNameDTO = new QuerySaasRoleByNameDTO();
+        querySaasRoleByNameDTO.setDefaultValue();
+        querySaasRoleByNameDTO.setRoleName(roleName);
+        FmResponseContent<List<SaasRole>> responseContent = saasRoleClient.querySaasRoleByName(querySaasRoleByNameDTO);
+        if (responseContent.getCount() > 0) {
+            throw new IllegalArgumentException("该名称已被使用");
+        }
+    }
+
+    /**
      * 如果某些字段没有赋值,使用默认的值
      *
      * @param saasRole 实体
@@ -83,6 +100,11 @@ public class SaasRoleServiceImpl implements ISaasRoleService {
         if (saasRole == null) {
             throw new IllegalArgumentException("找不到要更新的数据,id: " + updateSaasRoleDTO.getId());
         }
+
+        if (StringUtils.isNotBlank(updateSaasRoleDTO.getRoleName()) &&
+                !saasRole.getRoleName().equals(updateSaasRoleDTO.getRoleName())) {
+            checkDuplicateName(updateSaasRoleDTO.getRoleName());
+        }
         // 将更新的属性赋值给查询到的对象
         saasRole = ConvertSaasRoleTool.INSTANCE.convertUpdateDto2Entity(saasRole, updateSaasRoleDTO);
         saasRole.setDefaultValue();
@@ -204,4 +226,10 @@ public class SaasRoleServiceImpl implements ISaasRoleService {
                 )
         );
     }
+
+    @Override
+    public List<SaasRole> queryByName(QuerySaasRoleByNameDTO querySaasRoleByNameDTO) {
+        FmResponseContent<List<SaasRole>> responseContent = saasRoleClient.querySaasRoleByName(querySaasRoleByNameDTO);
+        return responseContent.getContent();
+    }
 }