Browse Source

根据角色、发起人部门sidPath获取用户列表算法

master
dimengzhe 3 years ago
parent
commit
ab91ee7564
  1. 6
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysUserFeign.java
  2. 5
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysUserFeignFallback.java
  3. 1
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysUserVo.java
  4. 20
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/UserQuery.java
  5. 2
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysrole/SysRoleMapper.java
  6. 39
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysrole/SysRoleMapper.xml
  7. 6
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysrole/SysRoleService.java
  8. 3
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserMapper.java
  9. 17
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserMapper.xml
  10. 8
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserRest.java
  11. 23
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserService.java

6
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysUserFeign.java

@ -10,6 +10,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
@ -129,6 +130,7 @@ public interface SysUserFeign {
@ApiOperation(value = "3、登录")
@ApiOperationSupport(order = 30)
public ResultBean<SysUserVo> login(@RequestBody SysUserQuery sysUserQuery);
@PostMapping("/loginByNoVeriCode")
@ResponseBody
@ApiOperation(value = "3、登录无验证码")
@ -181,4 +183,8 @@ public interface SysUserFeign {
@ApiOperation("根据角色sid查询用户")
@GetMapping("/getUsersByRoleSid/{roleSid}")
ResultBean getUsersByRoleSid(@PathVariable("roleSid") String roleSid);
@ApiOperation(value = "根据角色、发起人部门sidPath获取用户列表算法")
@GetMapping(value = "getUserByRole")
ResultBean<List<SysUserVo>> getUserByRole(@SpringQueryMap UserQuery query);
}

5
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysUserFeignFallback.java

@ -168,4 +168,9 @@ public class SysUserFeignFallback implements SysUserFeign {
public ResultBean getUsersByRoleSid(String roleSid) {
return null;
}
@Override
public ResultBean<List<SysUserVo>> getUserByRole(UserQuery query) {
return null;
}
}

1
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysUserVo.java

@ -28,6 +28,7 @@ import java.util.List;
@Data
@NoArgsConstructor
public class SysUserVo implements Vo {
private static final long serialVersionUID = 2415131854581950721L;
@ApiModelProperty("部门sid")
private String departmentSid;
@ApiModelProperty("部门名称")

20
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/UserQuery.java

@ -0,0 +1,20 @@
package com.yxt.anrui.portal.api.sysuser;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author dimengzhe
* @Date 2022/6/21 8:47
* @Description
*/
@Data
public class UserQuery implements Query {
private static final long serialVersionUID = -3979717077029562761L;
@ApiModelProperty(value = "角色sid必传项")
private String roleSid;
@ApiModelProperty(value = "用户部门sid路径是必传项")
private String orgSidPath;
}

2
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysrole/SysRoleMapper.java

@ -51,4 +51,6 @@ public interface SysRoleMapper extends BaseMapper<SysRole> {
SysRoleVo fetchBySid(String sid);
int updateIsEnable(@Param("sid") String sid, @Param("isEnable") String isEnable);
String getLevelType(String roleSid);
}

39
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysrole/SysRoleMapper.xml

@ -4,42 +4,57 @@
<!-- <where> ${ew.sqlSegment} </where>-->
<!-- ${ew.customSqlSegment} -->
<select id="selectPageVo" resultType="com.yxt.anrui.portal.api.sysrole.SysRoleVo">
SELECT sr.*,sp.sid as postSid,sp.name as postName FROM sys_role sr
SELECT sr.*, sp.sid as postSid, sp.name as postName
FROM sys_role sr
LEFT JOIN sys_post sp ON sr.postSid = sp.sid
<where>${ew.sqlSegment} </where>
<where>
${ew.sqlSegment}
</where>
ORDER BY sr.sort
</select>
<select id="selectListAllVo" resultType="com.yxt.anrui.portal.api.sysrole.SysRoleVo">
SELECT * FROM sys_role <where> ${ew.sqlSegment} </where>
SELECT *
FROM sys_role
<where>
${ew.sqlSegment}
</where>
</select>
<select id="listAllByUserSid" resultType="com.yxt.anrui.portal.api.sysrole.SysRoleVo">
SELECT role.name,role.sid, ISNULL(userRole.sid) AS checked FROM sys_role role
SELECT role.name, role.sid, ISNULL(userRole.sid) AS checked
FROM sys_role role
LEFT JOIN sys_user_role userRole ON role.sid = userRole.`roleSid`
AND userRole.userSid = #{param1}
</select>
<select id="fetchByUserSid" resultType="com.yxt.anrui.portal.api.sysrole.SysRoleVo">
SELECT role.name,role.remarks,role.sid FROM sys_role role
SELECT role.name, role.remarks, role.sid
FROM sys_role role
left join sys_user_role userrole on userrole.roleSid = role.sid
where userrole.userSid = #{param1}
</select>
<select id="fetchByName" resultType="com.yxt.anrui.portal.api.sysrole.SysRole">
SELECT * FROM sys_role role where role.name=#{param1}
SELECT *
FROM sys_role role
where role.name = #{param1}
</select>
<select id="fetchBySid" resultType="com.yxt.anrui.portal.api.sysrole.SysRoleVo">
SELECT role.*,post.sid as postSid,post.name as postName FROM sys_role role
SELECT role.*, post.sid as postSid, post.name as postName
FROM sys_role role
LEFT JOIN sys_post post ON role.postSid = post.sid
WHERE role.sid = #{param1}
</select>
<delete id="deleteBatchSids" parameterType="String">
DELETE FROM sys_role WHERE sid IN
DELETE
FROM sys_role WHERE sid IN
<foreach collection="list" item="sid" open="(" separator="," close=")">
#{sid}
</foreach>
</delete>
<delete id="deleteBySid">
DELETE FROM sys_role WHERE sid =#{sid}
DELETE
FROM sys_role
WHERE sid = #{sid}
</delete>
<update id="updateIsEnable">
@ -47,4 +62,10 @@
SET isEnable = #{isEnable}
WHERE sid = #{sid}
</update>
<select id="getLevelType" resultType="java.lang.String">
select roleType
from sys_role
where sid = #{roleSid}
</select>
</mapper>

6
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysrole/SysRoleService.java

@ -43,10 +43,12 @@ public class SysRoleService extends MybatisBaseService<SysRoleMapper, SysRole> {
PagerVo<SysRole> p = PagerUtil.pageToVo(pagging, null);
return p;
}
public List<SysRole> listAll(SysRoleQuery query) {
QueryWrapper<SysRole> qw = createQueryWrapper(query);
return baseMapper.selectList(qw);
}
private QueryWrapper<SysRole> createQueryWrapper(SysRoleQuery query) {
// todo: 这里根据具体业务调整查询条件
// 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName()));
@ -147,4 +149,8 @@ public class SysRoleService extends MybatisBaseService<SysRoleMapper, SysRole> {
public int updateIsEnable(String sid, String isEnable) {
return baseMapper.updateIsEnable(sid, isEnable);
}
public String getLevelType(String roleSid) {
return baseMapper.getLevelType(roleSid);
}
}

3
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserMapper.java

@ -12,7 +12,6 @@ import com.yxt.anrui.portal.api.sysuser.app.AppUserOrgInfoVo;
import com.yxt.anrui.portal.api.sysuser.wx.WxHomePageVo;
import com.yxt.anrui.portal.api.sysuser.wx.WxMySysUserInfoVo;
import com.yxt.anrui.portal.api.sysuser.wx.WxSysUserVo;
import com.yxt.common.core.result.ResultBean;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
@ -158,4 +157,6 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
int updateIsEnable(@Param("sid") String sid, @Param("isEnable") String isEnable);
List<SysUserVo> getUsersByRoleSid(@Param("roleSid") String roleSid);
List<SysUserVo> getUserByRole(@Param("roleSid") String roleSid, @Param("levelOrgSid") String levelOrgSid);
}

17
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserMapper.xml

@ -52,7 +52,12 @@
AND (SELECT GROUP_CONCAT(org.name)
FROM sys_staff_org staffOrg
LEFT JOIN sys_organization org ON org.sid = staffOrg.orgSid
WHERE staffOrg.staffSid = user.staffSid) LIKE concat('%',#{orgName},'%')
WHERE staffOrg.staffSid = user.staffSid)
LIKE concat('%',
#{orgName}
,
'%'
)
</if>
</where>
</select>
@ -204,4 +209,14 @@
LEFT JOIN `sys_role` sr ON sr.sid = sur.roleSid
WHERE sr.sid = #{roleSid}
</select>
<select id="getUserByRole" resultType="com.yxt.anrui.portal.api.sysuser.SysUserVo">
select si.name, su.sid, su.staffSid
from sys_user_role sr
left join sys_user su on sr.userSid = su.sid
left join sys_staffinfo si on si.sid = su.staffSid
left join sys_staff_org so on so.staffSid = si.sid
where sr.roleSid = #{roleSid}
and find_in_set(#{levelOrgSid}, replace(so.orgSidPath, '/', ','))
</select>
</mapper>

8
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserRest.java

@ -312,8 +312,6 @@ public class SysUserRest implements SysUserFeign {
@Override
public ResultBean<SysUserVo> login(SysUserQuery userQuery) {
String userName = userQuery.getUserName();
String password = userQuery.getPassword();
String verifyCode = userQuery.getVerifyCode();
@ -387,7 +385,6 @@ public class SysUserRest implements SysUserFeign {
} else {
return new ResultBean<SysUserVo>().fail().setMsg("验证码错误");
}
if (StringUtils.isBlank(userName)) {
return new ResultBean<SysUserVo>().fail().setMsg("用户名不能为空");
}
@ -575,4 +572,9 @@ public class SysUserRest implements SysUserFeign {
public ResultBean getUsersByRoleSid(String roleSid) {
return sysUserService.getUsersByRoleSid(roleSid);
}
@Override
public ResultBean<List<SysUserVo>> getUserByRole(UserQuery query) {
return sysUserService.getUserByRole(query);
}
}

23
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserService.java

@ -13,7 +13,6 @@ import com.yxt.anrui.portal.api.sysstaffinfo.SysStaffinfoVo;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgVo;
import com.yxt.anrui.portal.api.sysstaffpost.SysStaffPostDetailsVo;
import com.yxt.anrui.portal.api.sysstaffpost.SysStaffPostVo;
import com.yxt.anrui.portal.api.sysuser.*;
import com.yxt.anrui.portal.api.sysuser.app.AppUserOrgInfoVo;
import com.yxt.anrui.portal.api.sysuser.wx.WxHomePageVo;
@ -24,7 +23,6 @@ import com.yxt.anrui.portal.biz.sysrole.SysRoleService;
import com.yxt.anrui.portal.biz.sysstaffinfo.SysStaffinfoService;
import com.yxt.anrui.portal.biz.sysstafforg.SysStaffOrgService;
import com.yxt.anrui.portal.biz.sysstaffpost.SysStaffPostService;
import com.yxt.anrui.portal.biz.sysuserrole.SysUserRoleService;
import com.yxt.anrui.portal.config.DictCommonType;
import com.yxt.anrui.portal.utils.MsgWs;
import com.yxt.common.base.config.RedisUtil;
@ -35,7 +33,6 @@ import com.yxt.common.base.utils.*;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import org.apache.commons.collections.map.HashedMap;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -99,6 +96,8 @@ public class SysUserService extends MybatisBaseService<SysUserMapper, SysUser> {
@Autowired
private ImageUploadUtil imageUploadUtil;
@Autowired
private SysRoleService sysRoleService;
public PagerVo<SysUser> listPage(PagerQuery<SysUserQuery> pq) {
@ -884,4 +883,22 @@ public class SysUserService extends MybatisBaseService<SysUserMapper, SysUser> {
ResultBean<Object> objectResultBean = ResultBean.fireSuccess().setData(r);
return objectResultBean;
}
public ResultBean<List<SysUserVo>> getUserByRole(UserQuery query) {
ResultBean<List<SysUserVo>> rb = ResultBean.fireFail();
List<SysUserVo> sysUserVoList = new ArrayList<>();
//根据角色sid获取角色的层级
String levelTypeKey = sysRoleService.getLevelType(query.getRoleSid());
if (StringUtils.isNotBlank(levelTypeKey)) {
String orgSidPath = query.getOrgSidPath();
if(query.getOrgSidPath().split("/").length>=Integer.parseInt(levelTypeKey)-1){
String levelOrgSid = query.getOrgSidPath().split("/")[Integer.parseInt(levelTypeKey) - 1];
sysUserVoList = baseMapper.getUserByRole(query.getRoleSid(), levelOrgSid);
sysUserVoList.removeAll(Collections.singleton(null));
}
}
return rb.success().setData(sysUserVoList);
}
}
Loading…
Cancel
Save