lixing 4 лет назад
Родитель
Сommit
806524aab5

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

@@ -115,6 +115,14 @@ public class PersonController {
         return ResultHelper.multi(pagedList);
     }
 
+    @ApiOperation(value = "根据用户名分页查询")
+    @PostMapping("/queryByUsername")
+    public CommonResult<PageList<ResponsePersonListItemVO>> queryByUserName(
+            @Valid @RequestBody QueryByUserNameDTO queryByUserNameDTO) {
+        IPage<ResponsePersonListItemVO> pagedList = personService.queryByUserName(queryByUserNameDTO);
+        return ResultHelper.multi(pagedList);
+    }
+
 //    @ApiOperation(value = "重置密码")
 //    @PostMapping("/password/reset")
 //    public CommonResult resetPassword(

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

@@ -0,0 +1,19 @@
+package com.persagy.fm.person.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-03-15 17:20:33
+ */
+@Data
+@ApiModel(value = "根据账号查询")
+public class QueryByUserNameDTO {
+    @ApiModelProperty(value = "账号名称", required = true)
+    @NotEmpty(message = "账号名称必填")
+    private String username;
+}

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

@@ -257,13 +257,32 @@ public interface IPersonService {
     List<Person> queryByProfessionId(String professionId);
 
     /**
+     * 根据直接上级id查询人员
+     *
+     * @param leaderId 直接上级id
+     * @return 人员列表
+     * @author lixing
+     * @version V1.0 2021/4/11 9:50 下午
+     */
+    List<Person> queryByLeader(Long leaderId);
+
+    /**
      * 根据名称或账号查询
      *
      * @param pageQueryPersonDTO 查询参数
      * @return 分页列表
-     * @exception
      * @author lixing
      * @version V1.0 2021/4/14 4:32 下午
      */
     IPage<ResponsePersonListItemVO> pageQueryByNameOrUserName(PageQueryPersonByNameOrUserNameDTO pageQueryPersonDTO);
+
+    /**
+     * 根据账号查询
+     *
+     * @param queryByUserNameDTO 查询参数
+     * @return 分页列表
+     * @author lixing
+     * @version V1.0 2021/4/22 3:28 下午
+     */
+    IPage<ResponsePersonListItemVO> queryByUserName(QueryByUserNameDTO queryByUserNameDTO);
 }

+ 49 - 4
fm-person/src/main/java/com/persagy/fm/person/service/impl/PersonServiceImpl.java

@@ -10,6 +10,7 @@ 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.common.utils.ListUtil;
+import com.persagy.fm.department.model.Department;
 import com.persagy.fm.department.model.vo.DepSimpleObjVO;
 import com.persagy.fm.department.service.IDepartmentService;
 import com.persagy.fm.person.dao.PersonMapper;
@@ -508,7 +509,6 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
      * @param updatePerson4FrontEndDTO 更新人员入参
      * @param personId                 人员id
      * @return 更新后的人员对象
-     * @throws
      * @author lixing
      * @version V1.0 2021/4/9 7:30 下午
      */
@@ -516,9 +516,7 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
         Person person = getById(personId);
         // 直接上级不能选择自己
         Long leaderAfterChange = updatePerson4FrontEndDTO.getLeader();
-        if (leaderAfterChange != null && personId.equals(leaderAfterChange.toString())) {
-            throw new IllegalArgumentException("不能选择自己作为直接上级");
-        }
+        checkLeader(leaderAfterChange, person);
         person = ConvertPersonTool.INSTANCE.convertUpdateDto2Entity(person, updatePerson4FrontEndDTO);
         person.setNamePinyin(PinyinUtil.getPinyin(person.getName(), ""));
         List<String> professions = updatePerson4FrontEndDTO.getProfessions();
@@ -533,6 +531,32 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
     }
 
     /**
+     * 校验直接上级
+     *
+     * @param leaderId 直接上级id
+     * @param person 人员对象
+     * @author lixing
+     * @version V1.0 2021/4/22 11:43 上午
+     */
+    private void checkLeader(Long leaderId, Person person) {
+        if (leaderId == null) {
+            return;
+        }
+        String personId = person.getId();
+        if (personId.equals(leaderId.toString())) {
+            throw new IllegalArgumentException("不能选择自己作为直接上级");
+        }
+        // 不能选择直接上级是自己的员工作为上级
+        List<Person> people = queryByLeader(leaderId);
+        people.forEach(tmpPerson -> {
+            String tmpPersonId = tmpPerson.getId();
+            if (tmpPersonId.equals(leaderId.toString())) {
+                throw new IllegalArgumentException("不能选择自己的下级作为直接上级");
+            }
+        });
+    }
+
+    /**
      * 重置账号与角色的关联关系
      *
      * @param updatePerson4FrontEndDTO 更新人员入参
@@ -1189,10 +1213,31 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
     }
 
     @Override
+    public List<Person> queryByLeader(Long leaderId) {
+        if (leaderId == null) {
+            throw new IllegalArgumentException("根据直接上级查询人员,直接上级id不可为空");
+        }
+        LambdaQueryWrapper<Person> personLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        personLambdaQueryWrapper.
+                eq(Person::getLeader, leaderId).
+                eq(Person::getValid, ValidEnum.TRUE.getType());
+        return list(personLambdaQueryWrapper);
+    }
+
+    @Override
     public IPage<ResponsePersonListItemVO> pageQueryByNameOrUserName(PageQueryPersonByNameOrUserNameDTO pageQueryPersonDTO) {
         List<Person> people = personMapper.queryPersonListByNameOrUserName(pageQueryPersonDTO);
         int total = personMapper.queryCountByNameOrUserName(pageQueryPersonDTO);
 
         return packagePageResult(people, total);
     }
+
+    @Override
+    public IPage<ResponsePersonListItemVO> queryByUserName(QueryByUserNameDTO queryByUserNameDTO) {
+        QueryWrapper<Person> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(Person.PROP_VALID, ValidEnum.TRUE.getType());
+        queryWrapper.eq(Person.PROP_USERNAME, queryByUserNameDTO.getUsername());
+        List<Person> result = list(queryWrapper);
+        return packagePageResult(result, result.size());
+    }
 }

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

@@ -29,6 +29,9 @@ public class PageQuerySaasRoleDTO extends SaasBasePageDTO {
     @ApiModelProperty(value = "角色类型", required = true, notes="com.persagy.fm.saas.role.constant.enums.RoleTypeEnum")
     private String roleType;
 
+    @ApiModelProperty(value = "角色类型列表", required = true, notes="com.persagy.fm.saas.role.constant.enums.RoleTypeEnum")
+    private List<String> roleTypes;
+
     @ApiModelProperty(value = "角色id列表")
     private List<String> roleIds;
 
@@ -38,7 +41,12 @@ public class PageQuerySaasRoleDTO extends SaasBasePageDTO {
     @ApiModelProperty(value = "是否统计菜单数量")
     private Boolean countMenu;
 
-    public List<String> getRoleIds() {
-        return roleIds == null? Lists.newArrayList() : roleIds;
+    @ApiModelProperty(value = "集团管理员是否优先排序", hidden = true)
+    private Boolean adminOrder;
+
+    @Override
+    public void setDefaultValue() {
+        super.setDefaultValue();
+        this.setAdminOrder(true);
     }
 }