feat:增加根据固定组织编码查询组织下的用户接口

This commit is contained in:
qiufeng
2024-04-02 14:36:10 +08:00
parent 84ef6372f9
commit 9de2f7c9b9
8 changed files with 86 additions and 6 deletions
@@ -1,7 +1,10 @@
package cn.com.mfish.common.oauth.api.fallback;
import cn.com.mfish.common.core.web.PageResult;
import cn.com.mfish.common.core.web.ReqPage;
import cn.com.mfish.common.core.web.Result;
import cn.com.mfish.common.oauth.api.entity.SsoOrg;
import cn.com.mfish.common.oauth.api.entity.UserInfo;
import cn.com.mfish.common.oauth.api.remote.RemoteOrgService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
@@ -30,6 +33,11 @@ public class RemoteOrgFallback implements FallbackFactory<RemoteOrgService> {
public Result<List<SsoOrg>> queryByFixCode(String code, String direction) {
return Result.fail("错误:根据编码获取组织树失败" + cause.getMessage());
}
@Override
public Result<PageResult<UserInfo>> queryUserByCode(String code, String account, String nickname, String phone, ReqPage reqPage) {
return Result.fail("错误:根据编码获取组织下用户失败" + cause.getMessage());
}
};
}
}
@@ -1,10 +1,14 @@
package cn.com.mfish.common.oauth.api.remote;
import cn.com.mfish.common.core.constants.ServiceConstants;
import cn.com.mfish.common.core.web.PageResult;
import cn.com.mfish.common.core.web.ReqPage;
import cn.com.mfish.common.core.web.Result;
import cn.com.mfish.common.oauth.api.entity.SsoOrg;
import cn.com.mfish.common.oauth.api.entity.UserInfo;
import cn.com.mfish.common.oauth.api.fallback.RemoteOrgFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;
@@ -22,6 +26,9 @@ public interface RemoteOrgService {
@GetMapping("/org/{ids}")
Result<List<SsoOrg>> queryById(@PathVariable("ids") String ids);
@GetMapping("/org/fixCode")
Result<List<SsoOrg>> queryByFixCode(@RequestParam("code") String code, @RequestParam("direction") String direction);
@GetMapping("/org/code/{code}")
Result<List<SsoOrg>> queryByFixCode(@PathVariable("code") String code, @RequestParam("direction") String direction);
@GetMapping("/org/user/{code}")
Result<PageResult<UserInfo>> queryUserByCode(@PathVariable("code") String code, @RequestParam("account") String account, @RequestParam("nickname") String nickname, @RequestParam("phone") String phone, @SpringQueryMap ReqPage reqPage);
}
@@ -10,7 +10,9 @@ import cn.com.mfish.common.core.web.Result;
import cn.com.mfish.common.log.annotation.Log;
import cn.com.mfish.common.oauth.annotation.RequiresPermissions;
import cn.com.mfish.common.oauth.api.entity.SsoOrg;
import cn.com.mfish.common.oauth.api.entity.UserInfo;
import cn.com.mfish.common.oauth.api.entity.UserRole;
import cn.com.mfish.oauth.req.ReqOrgUser;
import cn.com.mfish.oauth.req.ReqSsoOrg;
import cn.com.mfish.oauth.service.SsoOrgService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -138,14 +140,18 @@ public class SsoOrgController {
}
@ApiOperation(value = "组织结构表-通过固定编码查询", notes = "组织结构表-通过固定编码查询")
@GetMapping("/fixCode")
@RequiresPermissions("sys:org:query")
@GetMapping("/code/{code}")
@ApiImplicitParams({
@ApiImplicitParam(name = "code", value = "固定编码", paramType = "query", required = true, dataTypeClass = String.class),
@ApiImplicitParam(name = "direction", value = "方向 all 返回所有父子节点 up返回父节点 down返回子节点", paramType = "query", required = true, dataTypeClass = String.class),
})
public Result<List<SsoOrg>> queryByFixCode(@RequestParam String code, @RequestParam String direction) {
public Result<List<SsoOrg>> queryByFixCode(@ApiParam(name = "code", value = "固定编码") @PathVariable("code") String code, @RequestParam String direction) {
List<SsoOrg> list = ssoOrgService.queryOrgByCode(code, TreeDirection.getDirection(direction));
return Result.ok(list, "组织结构表-查询成功!");
}
@ApiOperation(value = "获取组织下的用户-通过固定编码查询", notes = "获取组织下的用户-通过固定编码查询")
@GetMapping("/user/{code}")
public Result<PageResult<UserInfo>> queryUserByCode(@ApiParam(name = "code", value = "固定编码") @PathVariable("code") String code, ReqOrgUser reqOrgUser, ReqPage reqPage) {
return Result.ok(ssoOrgService.queryUserByCode(code, reqOrgUser, reqPage),"组织下用户查询成功");
}
}
@@ -1,7 +1,9 @@
package cn.com.mfish.oauth.mapper;
import cn.com.mfish.common.oauth.api.entity.SsoOrg;
import cn.com.mfish.common.oauth.api.entity.UserInfo;
import cn.com.mfish.common.oauth.api.entity.UserRole;
import cn.com.mfish.oauth.req.ReqOrgUser;
import cn.com.mfish.oauth.req.ReqSsoOrg;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Delete;
@@ -35,10 +37,13 @@ public interface SsoOrgMapper extends BaseMapper<SsoOrg> {
@Select("select count(0) from sso_org o where o.parent_id= #{orgId} and o.del_flag =0")
int queryChildCount(String orgId);
@Select("select user_id from sso_org_user where org_id = #{orgId}")
List<String> getOrgUserId(String orgId);
List<UserRole> getOrgRoles(@Param("orgIds") String... orgIds);
int isTenantOrg(@Param("orgId") String orgId, @Param("tenantId") String tenantId);
List<UserInfo> queryUserByCode(@Param("code") String code, @Param("reqOrgUser") ReqOrgUser reqOrgUser);
}
@@ -121,4 +121,22 @@
WHERE tenant_id = #{tenantId})) sso_org
where id = #{orgId}
</select>
<select id="queryUserByCode" resultType="cn.com.mfish.common.oauth.api.entity.UserInfo">
select su.*
from sso_user su
inner JOIN sso_org_user sou on sou.user_id = su.id
inner JOIN sso_org so on so.id = sou.org_id
WHERE so.org_code like (select CONCAT(org_code, '%') from sso_org o
where o.org_fix_code = #{code} and o.status=0 and o.del_flag=0
)
<if test="reqOrgUser.nickname != null and reqOrgUser.nickname != ''">
and su.nickname like CONCAT('%',#{reqOrgUser.nickname},'%')
</if>
<if test="reqOrgUser.account != null and reqOrgUser.account != ''">
and su.account like CONCAT('%',#{reqOrgUser.account},'%')
</if>
<if test="reqOrgUser.phone != null and reqOrgUser.phone != ''">
and su.phone like CONCAT('%',#{reqOrgUser.phone},'%')
</if>
</select>
</mapper>
@@ -0,0 +1,19 @@
package cn.com.mfish.oauth.req;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description: 组织用户请求
* @author: mfish
* @date: 2024/4/2
*/
@Data
public class ReqOrgUser {
@ApiModelProperty("账号")
private String account;
@ApiModelProperty("手机号")
private String phone;
@ApiModelProperty("昵称--用于显示")
private String nickname;
}
@@ -1,9 +1,13 @@
package cn.com.mfish.oauth.service;
import cn.com.mfish.common.core.enums.TreeDirection;
import cn.com.mfish.common.core.web.PageResult;
import cn.com.mfish.common.core.web.ReqPage;
import cn.com.mfish.common.core.web.Result;
import cn.com.mfish.common.oauth.api.entity.SsoOrg;
import cn.com.mfish.common.oauth.api.entity.UserInfo;
import cn.com.mfish.common.oauth.api.entity.UserRole;
import cn.com.mfish.oauth.req.ReqOrgUser;
import cn.com.mfish.oauth.req.ReqSsoOrg;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -35,4 +39,6 @@ public interface SsoOrgService extends IService<SsoOrg> {
List<UserRole> getOrgRoles(String... orgIds);
boolean isTenantOrg(String orgId, String tenantId);
PageResult<UserInfo> queryUserByCode(String code, ReqOrgUser reqOrgUser, ReqPage reqPage);
}
@@ -5,15 +5,20 @@ import cn.com.mfish.common.core.exception.MyRuntimeException;
import cn.com.mfish.common.core.utils.AuthInfoUtils;
import cn.com.mfish.common.core.utils.StringUtils;
import cn.com.mfish.common.core.utils.TreeUtils;
import cn.com.mfish.common.core.web.PageResult;
import cn.com.mfish.common.core.web.ReqPage;
import cn.com.mfish.common.core.web.Result;
import cn.com.mfish.common.oauth.api.entity.SsoOrg;
import cn.com.mfish.common.oauth.api.entity.UserInfo;
import cn.com.mfish.common.oauth.api.entity.UserRole;
import cn.com.mfish.oauth.cache.common.ClearCache;
import cn.com.mfish.oauth.mapper.SsoOrgMapper;
import cn.com.mfish.oauth.req.ReqOrgUser;
import cn.com.mfish.oauth.req.ReqSsoOrg;
import cn.com.mfish.oauth.service.SsoOrgService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -198,6 +203,12 @@ public class SsoOrgServiceImpl extends ServiceImpl<SsoOrgMapper, SsoOrg> impleme
return baseMapper.isTenantOrg(orgId, tenantId) > 0;
}
@Override
public PageResult<UserInfo> queryUserByCode(String code, ReqOrgUser reqOrgUser, ReqPage reqPage) {
PageHelper.startPage(reqPage.getPageNum(), reqPage.getPageSize());
return new PageResult<>(baseMapper.queryUserByCode(code, reqOrgUser));
}
List<SsoOrg> queryOrg(SsoOrg org, TreeDirection direction) {
if (org == null) {
return new ArrayList<>();