提交 290ef66d 作者: obcy

添加用户校验和获取用户列表接口

上级 28edefa4
...@@ -7,6 +7,8 @@ import com.zzsn.knowbase.vo.Result; ...@@ -7,6 +7,8 @@ import com.zzsn.knowbase.vo.Result;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
/** /**
* <p> * <p>
* 前端控制器 * 前端控制器
...@@ -63,4 +65,19 @@ public class KbAuthorizedUserController { ...@@ -63,4 +65,19 @@ public class KbAuthorizedUserController {
return authorizedUserService.lists(roleId,username,name,orgId,orgName,pageNum,PageSize); return authorizedUserService.lists(roleId,username,name,orgId,orgName,pageNum,PageSize);
} }
/**校验用户是否可用,并查询用户信息*/
@GetMapping("/userPermission")
public Result<?> userPermission(HttpServletRequest httpServletRequest){
String token = httpServletRequest.getHeader("X-Access-Token");
return authorizedUserService.userPermission(token);
}
/**校验用户是否可用,并查询用户信息*/
@GetMapping("/thirdpartyUsers")
public Result<?> thirdpartyUsers(HttpServletRequest httpServletRequest){
String token = httpServletRequest.getHeader("X-Access-Token");
return authorizedUserService.thirdpartyUsers(token);
}
} }
...@@ -100,5 +100,11 @@ public class KbAuthorizedUser extends Model<KbAuthorizedUser> { ...@@ -100,5 +100,11 @@ public class KbAuthorizedUser extends Model<KbAuthorizedUser> {
@TableField(exist = false) @TableField(exist = false)
private String roleId; private String roleId;
/**
* 角色名称
*/
@TableField(exist = false)
private String roleName;
} }
package com.zzsn.knowbase.entity; package com.zzsn.knowbase.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.util.Date;
import java.util.List;
/** /**
* <p> * <p>
* *
...@@ -70,6 +71,7 @@ public class KbRole extends Model<KbRole> { ...@@ -70,6 +71,7 @@ public class KbRole extends Model<KbRole> {
@TableField("update_time") @TableField("update_time")
private Date updateTime; private Date updateTime;
@TableField(exist = false)
private List<KbPermissions> permissions;
} }
...@@ -21,11 +21,21 @@ import org.apache.ibatis.annotations.Select; ...@@ -21,11 +21,21 @@ import org.apache.ibatis.annotations.Select;
@Mapper @Mapper
public interface KbAuthorizedUserMapper extends BaseMapper<KbAuthorizedUser> { public interface KbAuthorizedUserMapper extends BaseMapper<KbAuthorizedUser> {
@Select("SELECT a.*,GROUP_CONCAT(b.role_id SEPARATOR ',') as roleId FROM kb_authorized_user a " + @Select("SELECT a.*,GROUP_CONCAT(b.role_id SEPARATOR ',') as roleId,GROUP_CONCAT(c.role_name SEPARATOR ',') as roleName FROM kb_authorized_user a " +
"LEFT JOIN kb_user_role_map b ON a.id = b.user_id " + "LEFT JOIN kb_user_role_map b ON a.id = b.user_id " +
"LEFT JOIN kb_role c ON c.id = b.role_id " +
"${sql}"+ "${sql}"+
"${ew.customSqlSegment}"+ "${ew.customSqlSegment}"+
"GROUP BY a.id" "GROUP BY a.id"
) )
IPage<KbAuthorizedUser> page(Page<KbAuthorizedUser> page, @Param(Constants.WRAPPER) QueryWrapper<KbAuthorizedUser> query, String sql); IPage<KbAuthorizedUser> page(Page<KbAuthorizedUser> page, @Param(Constants.WRAPPER) QueryWrapper<KbAuthorizedUser> query, String sql);
@Select("SELECT a.*,GROUP_CONCAT(b.role_id SEPARATOR ',') as roleId,GROUP_CONCAT(c.role_name SEPARATOR ',') as roleName FROM kb_authorized_user a " +
"LEFT JOIN kb_user_role_map b ON a.id = b.user_id " +
"LEFT JOIN kb_role c ON c.id = b.role_id " +
"${ew.customSqlSegment}"+
"GROUP BY a.id"
)
KbAuthorizedUser getOne(@Param(Constants.WRAPPER) QueryWrapper<KbAuthorizedUser> query);
} }
...@@ -19,4 +19,8 @@ public interface KbAuthorizedUserService extends IService<KbAuthorizedUser> { ...@@ -19,4 +19,8 @@ public interface KbAuthorizedUserService extends IService<KbAuthorizedUser> {
Result<?> edit(KbAuthorizedUser authorizedUser); Result<?> edit(KbAuthorizedUser authorizedUser);
Result<?> lists(String roleId, String username, String name, String orgId, String orgName, Integer pageNum, Integer pageSize); Result<?> lists(String roleId, String username, String name, String orgId, String orgName, Integer pageNum, Integer pageSize);
Result<?> userPermission(String token);
Result<?> thirdpartyUsers(String token);
} }
package com.zzsn.knowbase.service.impl; package com.zzsn.knowbase.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zzsn.knowbase.entity.KbAuthorizedUser; import com.zzsn.knowbase.entity.*;
import com.zzsn.knowbase.entity.KbUserRoleMap;
import com.zzsn.knowbase.mapper.KbAuthorizedUserMapper; import com.zzsn.knowbase.mapper.KbAuthorizedUserMapper;
import com.zzsn.knowbase.service.KbAuthorizedUserService; import com.zzsn.knowbase.service.*;
import com.zzsn.knowbase.service.KbUserRoleMapService;
import com.zzsn.knowbase.vo.Result; import com.zzsn.knowbase.vo.Result;
import com.zzsn.knowbase.vo.UserInfoVo;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays; import java.util.stream.Collectors;
import java.util.List;
/** /**
* <p> * <p>
...@@ -36,12 +38,31 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap ...@@ -36,12 +38,31 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap
KbUserRoleMapService kbUserRoleMapService; KbUserRoleMapService kbUserRoleMapService;
@Autowired @Autowired
KbAuthorizedUserMapper authorizedUserMapper; KbAuthorizedUserMapper authorizedUserMapper;
@Autowired
KbRoleService roleService;
@Autowired
KbPermissionsService permissionsService;
@Autowired
KbRolePermissionMapService rolePermissionMapService;
/**
* 校验第三方用户接口地址
*/
@Value("${know.thirdpartyurl.checkuserurl:}")
private String checkuserurl;
/**
* 获取第三方用户接口
*/
@Value("${know.thirdpartyurl.getusersurl:}")
private String getusersurl;
@Override @Override
@Transactional @Transactional
public Result<?> add(KbAuthorizedUser authorizedUser) { public Result<?> add(KbAuthorizedUser authorizedUser) {
/**保存授权用户*/ /**保存授权用户*/
authorizedUser.setStatus("0"); authorizedUser.setStatus("0");
authorizedUser.setCreateTime(new Date());
super.save(authorizedUser); super.save(authorizedUser);
/**插入用户角色关系表*/ /**插入用户角色关系表*/
...@@ -64,6 +85,7 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap ...@@ -64,6 +85,7 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap
@Transactional @Transactional
public Result<?> edit(KbAuthorizedUser authorizedUser) { public Result<?> edit(KbAuthorizedUser authorizedUser) {
String newRole = authorizedUser.getRoleId(); String newRole = authorizedUser.getRoleId();
authorizedUser.setUpdateTime(new Date());
super.updateById(authorizedUser); super.updateById(authorizedUser);
/**修改用户角色关系表*/ /**修改用户角色关系表*/
if (StringUtils.isNotBlank(newRole)){ if (StringUtils.isNotBlank(newRole)){
...@@ -99,4 +121,58 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap ...@@ -99,4 +121,58 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap
IPage<KbAuthorizedUser> res = authorizedUserMapper.page(page, query, sql); IPage<KbAuthorizedUser> res = authorizedUserMapper.page(page, query, sql);
return Result.OK(res); return Result.OK(res);
} }
@Override
public Result<?> userPermission(String token) {
/**调用第三方系统校验接口*/
Result res = doCheck(token);
boolean success = res.isSuccess();
if(200 == res.getCode() && success){
/**校验成功,获取到第三方用户信息*/
KbAuthorizedUser bean = JSONUtil.toBean(JSONUtil.toJsonStr(res.getResult()), KbAuthorizedUser.class);
/**校验第三方用户是否进行了授权*/
List<KbAuthorizedUser> list = super.list(Wrappers.<KbAuthorizedUser>lambdaQuery().eq(KbAuthorizedUser::getUserId, bean.getUserId()));
if (CollectionUtil.isEmpty(list)){
return Result.error("该用户还未进行授权访问,请联系管理员进行授权");
}
/**查询授权用户的角色和权限*/
UserInfoVo userInfoVo = new UserInfoVo();
QueryWrapper<KbAuthorizedUser> query = new QueryWrapper<>();
query.eq("a.user_id",bean.getUserId());
KbAuthorizedUser one = authorizedUserMapper.getOne(query);
List<KbRole> kbRoles = roleService.listByIds(Arrays.asList(one.getRoleId().split(",")));
List<KbRolePermissionMap> permissionMaps = rolePermissionMapService.list(Wrappers.<KbRolePermissionMap>lambdaQuery().in(KbRolePermissionMap::getRoleId, Arrays.asList(one.getRoleId().split(","))));
Map<Long, List<KbRolePermissionMap>> collect = permissionMaps.stream().collect(Collectors.groupingBy(KbRolePermissionMap::getRoleId));
kbRoles.forEach(e->{
List<Long> longs = CollectionUtil.isEmpty(collect.get(e.getId())) ? null : collect.get(e.getId()).stream().map(KbRolePermissionMap::getPermissionId).collect(Collectors.toList());
if (CollectionUtil.isNotEmpty(longs)) {
e.setPermissions(permissionsService.list(Wrappers.<KbPermissions>lambdaQuery().in(KbPermissions::getId,longs)));
}
});
userInfoVo.setRoles(kbRoles);
userInfoVo.setAuthorizedUser(one);
return Result.OK(userInfoVo);
}else {
return Result.error("第三方系统未通过用户校验");
}
}
@Override
public Result<?> thirdpartyUsers(String token) {
String body = HttpRequest.get(getusersurl).header("X-Access-Token", token).execute().body();
Result bean = JSONUtil.toBean(body, Result.class);
List<KbAuthorizedUser> list = JSONUtil.toList(JSONUtil.parseArray(JSONUtil.toJsonStr(bean.getResult())), KbAuthorizedUser.class);
return Result.OK(list);
}
private Result<?> doCheck(String token) {
String body = HttpRequest.post(checkuserurl).header("X-Access-Token", token).execute().body();
Result bean = JSONUtil.toBean(body, Result.class);
return bean;
}
} }
package com.zzsn.knowbase.vo;
import com.zzsn.knowbase.entity.KbAuthorizedUser;
import com.zzsn.knowbase.entity.KbRole;
import lombok.Data;
import java.util.List;
/**
* Description:
*
* @author: EDY
* @since: 2024/1/5
*/
@Data
public class UserInfoVo {
private KbAuthorizedUser authorizedUser;
private List<KbRole> roles;
}
...@@ -31,3 +31,8 @@ mybatis-plus: ...@@ -31,3 +31,8 @@ mybatis-plus:
configuration: configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
map-underscore-to-camel-case: true map-underscore-to-camel-case: true
know:
thirdpartyurl:
checkuserurl: http://127.0.0.1:9988/sys/checkToken
getusersurl: http://127.0.0.1:9988/sys/user/thirdparty
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论