feat: 增加获取当前租户信息接口

This commit is contained in:
qiufeng
2023-07-04 19:59:32 +08:00
parent 519651b4d2
commit 3d6969e582
14 changed files with 61 additions and 32 deletions
@@ -45,9 +45,6 @@ public class UserInfo extends BaseEntity<String> {
@ApiModelProperty("备注")
private String remark;
@TableField(exist = false)
@ApiModelProperty("组织名称")
private String orgName;
@TableField(exist = false)
@ApiModelProperty("组织ID")
private List<String> orgIds;
@TableField(exist = false)
@@ -100,7 +100,7 @@ public class OauthUtils {
}
Set<String> set = list.stream().map(UserRole::getRoleCode).collect(Collectors.toSet());
//如果用户为超户,直接返回
if (null != set && set.contains(SerConstant.SUPER_ROLE)) {
if (set.contains(SerConstant.SUPER_ROLE)) {
return true;
}
return checkValue(requiresRoles.logical(), requiresRoles.value(), set);
@@ -43,7 +43,7 @@ public class InnerUserAspect {
if (RPCConstants.INNER.equals(source) && !innerUser.validateUser()) {
return point.proceed();
}
Result result = tokenValidator.validator(request);
Result<?> result = tokenValidator.validator(request);
if (!result.isSuccess()) {
throw new OAuthValidateException(result.getMsg());
}
@@ -42,7 +42,7 @@ public class AuthFilter implements GlobalFilter, Ordered {
ServerHttpRequest.Builder mutate = request.mutate();
// 内部请求来源参数清除
GatewayUtils.removeHeader(mutate, RPCConstants.REQ_ORIGIN);
Result result = tokenValidator.validator(request);
Result<?> result = tokenValidator.validator(request);
if (!result.isSuccess()) {
// 如果校验不成功,但该页面在白名单内则直接跳过
if (StringUtils.matches(url, ignoreWhiteProperties.getWhites())) {
@@ -51,10 +51,10 @@ public class LoginController {
if (!autoCreateUser && !ssoUserService.isAccountExist(phone, null)) {
return Result.fail("错误:手机号不存在");
}
Long codeTime = loginService.getSmsCodeTime(phone);
long codeTime = loginService.getSmsCodeTime(phone);
//一分钟内返回code倒计时剩余时间
if (codeTime > 0) {
return Result.fail(codeTime.toString(), "一分钟内不允许重复发送");
return Result.fail(Long.toString(codeTime), "一分钟内不允许重复发送");
}
String code = loginService.getSmsCode(phone);
//如果5分钟内不重新生成code
@@ -82,6 +82,16 @@ public class SsoTenantController {
return ssoTenantService.queryList(reqSsoTenant, reqPage);
}
/**
* 获取当前租户信息
* @return 租户信息
*/
@ApiOperation(value = "获取当前租户信息", notes = "获取当前租户信息")
@GetMapping("/info")
public Result<TenantVo> queryTenantInfo() {
return Result.ok(ssoTenantService.queryInfo(AuthInfoUtils.getCurrentTenantId()), "租户信息-查询成功!");
}
/**
* 添加
*
@@ -18,6 +18,8 @@ import java.util.List;
public interface SsoTenantMapper extends BaseMapper<SsoTenant> {
List<TenantVo> queryList(@Param("reqSsoTenant") ReqSsoTenant reqSsoTenant);
TenantVo queryInfo(String id);
/**
* 是否租户管理员
*
@@ -81,6 +81,6 @@ public interface SsoUserMapper extends BaseMapper<SsoUser> {
int insertUserOrg(@Param("userId") String userId, @Param("orgList") List<String> orgList);
int deleteUserOrg(@Param("userId") String userId, @Param("orgId") String orgId);
int deleteUserOrg(@Param("userId") String userId, @Param("orgList") List<String> orgList);
}
@@ -5,13 +5,16 @@
<result property="roleIds" column="roleIds"
typeHandler="cn.com.mfish.oauth.handler.StrToListTypeHandler"/>
</resultMap>
<select id="queryList" resultMap="tenantMap">
select t.*, u.account,u.nickname,u.phone,1 master,GROUP_CONCAT(DISTINCT r.id) roleIds
<sql id="selectTenant">
select t.*, u.account, u.nickname, u.phone, 1 master, GROUP_CONCAT(DISTINCT r.id) roleIds
from sso_tenant t
left join sso_user u on t.user_id = u.id
left join sso_org o on o.tenant_id = t.id and o.`status` = 0 and o.del_flag = 0
left join sso_org_role sor on sor.org_id = o.id
left join sso_role r on r.id = sor.role_id and r.`status` = 0 and r.del_flag = 0
left join sso_user u on t.user_id = u.id
left join sso_org o on o.tenant_id = t.id and o.`status` = 0 and o.del_flag = 0
left join sso_org_role sor on sor.org_id = o.id
left join sso_role r on r.id = sor.role_id and r.`status` = 0 and r.del_flag = 0
</sql>
<select id="queryList" resultMap="tenantMap">
<include refid="selectTenant"/>
<where>
t.del_flag = 0
<if test="reqSsoTenant.tenantType!=null">and t.tenant_type = #{reqSsoTenant.tenantType}</if>
@@ -21,6 +24,12 @@
group by t.id
order by create_time desc
</select>
<select id="queryInfo" resultMap="tenantMap">
<include refid="selectTenant"/>
<where>
t.del_flag = 0 and t.id = #{id}
</where>
</select>
<select id="getTenantUser" resultType="java.lang.String">
SELECT u.id
FROM sso_user u
@@ -43,7 +52,7 @@
)
</select>
<select id="getTenantByRoleCode" resultType="cn.com.mfish.common.oauth.api.vo.TenantVo">
select t.*, u.account,u.nickname,u.phone, IF(u.id is null, 0, 1) master, o.org_name
select t.*, u.account, u.nickname, u.phone, IF(u.id is null, 0, 1) master
from sso_tenant t
INNER JOIN sso_user u on u.id = t.user_id
inner join sso_org o on o.tenant_id = t.id and o.status = 0 and o.del_flag = 0
@@ -119,7 +119,7 @@
</resultMap>
<sql id="selectUser">
select u.*, GROUP_CONCAT(DISTINCT role_id) roleIds, GROUP_CONCAT(DISTINCT org_id) orgIds
from (select u.*, o.org_name, ou.org_id, ur.role_id
from (select u.*, ou.org_id, ur.role_id
from sso_user u
join sso_org_user ou on ou.user_id = u.id
join sso_org o on o.id = ou.org_id
@@ -127,7 +127,7 @@
left join sso_user_role ur on u.id = ur.user_id
left join sso_role r on r.id = ur.role_id and r.del_flag = 0 and r.status = 0
union
select u.*, o.org_name, ou.org_id, sor.role_id
select u.*, ou.org_id, sor.role_id
from sso_user u
join sso_org_user ou on ou.user_id = u.id
join sso_org o on o.id = ou.org_id
@@ -184,8 +184,11 @@
delete from sso_org_user
<where>
user_id = #{userId}
<if test="orgId != null and orgId != ''">
and org_id = #{orgId}
<if test="orgList != null and orgList.size() > 0">
and org_id in
<foreach collection="orgList" item="orgId" separator="," open="(" close=")">
#{orgId}
</foreach>
</if>
</where>
</delete>
@@ -18,6 +18,8 @@ import java.util.List;
public interface SsoTenantService extends IService<SsoTenant> {
List<TenantVo> queryList(ReqSsoTenant reqSsoTenant, ReqPage reqPage);
TenantVo queryInfo(String id);
Result<SsoTenant> insertTenant(SsoTenant ssoTenant);
Result<SsoTenant> updateTenant(SsoTenant ssoTenant);
@@ -70,8 +70,8 @@ public interface SsoUserService extends IService<SsoUser> {
* @param orgList
* @return
*/
int insertUserOrg(String userId, String... orgList);
int insertUserOrg(String userId, List<String> orgList);
int deleteUserOrg(String userId, String orgId);
int deleteUserOrg(String userId, String... orgList);
}
@@ -54,6 +54,11 @@ public class SsoTenantServiceImpl extends ServiceImpl<SsoTenantMapper, SsoTenant
return baseMapper.queryList(reqSsoTenant);
}
@Override
public TenantVo queryInfo(String id) {
return baseMapper.queryInfo(id);
}
@Override
@Transactional
public Result<SsoTenant> insertTenant(SsoTenant ssoTenant) {
@@ -71,7 +76,8 @@ public class SsoTenantServiceImpl extends ServiceImpl<SsoTenantMapper, SsoTenant
if (!result.isSuccess()) {
throw new MyRuntimeException(result.getMsg());
}
if (StringUtils.isEmpty(ssoTenant.getUserId()) || ssoUserService.insertUserOrg(ssoTenant.getUserId(), org.getId()) > 0) {
ssoUserService.deleteUserOrg(ssoTenant.getUserId(), org.getId());
if (StringUtils.isEmpty(ssoTenant.getUserId()) || ssoUserService.insertUserOrg(ssoTenant.getUserId(), Collections.singletonList(org.getId())) > 0) {
ssoOrgService.insertOrgRole(org.getId(), ssoTenant.getRoleIds());
return Result.ok(ssoTenant, "租户信息-添加成功!");
}
@@ -148,7 +154,7 @@ public class SsoTenantServiceImpl extends ServiceImpl<SsoTenantMapper, SsoTenant
return Result.ok(ssoTenant, "租户信息-编辑成功!");
}
ssoUserService.deleteUserOrg(oldTenant.getUserId(), org.getId());
if (ssoUserService.insertUserOrg(ssoTenant.getUserId(), org.getId()) > 0) {
if (ssoUserService.insertUserOrg(ssoTenant.getUserId(), Collections.singletonList(org.getId())) > 0) {
clearCache.removeUserAuthCache(Collections.singletonList(oldTenant.getUserId()));
return Result.ok(ssoTenant, "租户信息-编辑成功!");
}
@@ -176,7 +176,7 @@ public class SsoUserServiceImpl extends ServiceImpl<SsoUserMapper, SsoUser> impl
}
int res = baseMapper.insert(user);
if (res > 0) {
insertUserOrg(user.getId(), user.getOrgIds().toArray(new String[0]));
insertUserOrg(user.getId(), user.getOrgIds());
insertUserRole(user.getId(), user.getRoleIds());
userTempCache.updateCacheInfo(user, user.getId());
return Result.ok(user, "用户信息-新增成功");
@@ -197,7 +197,7 @@ public class SsoUserServiceImpl extends ServiceImpl<SsoUserMapper, SsoUser> impl
user.setAccount(account);
if (null != user.getOrgIds()) {
log.info(MessageFormat.format("删除用户组织数量:{0}条", baseMapper.deleteUserOrg(user.getId(), null)));
insertUserOrg(user.getId(), user.getOrgIds().toArray(new String[0]));
insertUserOrg(user.getId(), user.getOrgIds());
}
if (null != user.getRoleIds()) {
log.info(MessageFormat.format("删除用户角色数量:{0}条", baseMapper.deleteUserRole(user.getId())));
@@ -213,7 +213,7 @@ public class SsoUserServiceImpl extends ServiceImpl<SsoUserMapper, SsoUser> impl
/**
* 校验用户帐号 账号,手机,email均不允许重复
*
* @param user 用户
* @param user 用户
* @param operate 操作
*/
private void validateUser(SsoUser user, String operate) {
@@ -312,11 +312,11 @@ public class SsoUserServiceImpl extends ServiceImpl<SsoUserMapper, SsoUser> impl
}
@Override
public int insertUserOrg(String userId, String... orgList) {
if (orgList == null || orgList.length == 0) {
public int insertUserOrg(String userId, List<String> orgList) {
if (orgList == null || orgList.size() == 0) {
return 0;
}
int count = baseMapper.insertUserOrg(userId, Arrays.asList(orgList));
int count = baseMapper.insertUserOrg(userId, orgList);
if (count > 0) {
return count;
}
@@ -324,7 +324,7 @@ public class SsoUserServiceImpl extends ServiceImpl<SsoUserMapper, SsoUser> impl
}
@Override
public int deleteUserOrg(String userId, String orgId) {
return baseMapper.deleteUserOrg(userId, orgId);
public int deleteUserOrg(String userId, String... orgList) {
return baseMapper.deleteUserOrg(userId, Arrays.asList(orgList));
}
}