提交 2f2eb432 作者: obcy

modify

上级 a25d5ae9
package com.zzsn.knowbase.config.interceptor;
import cn.hutool.core.date.DateUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.zzsn.knowbase.constant.Constants;
import com.zzsn.knowbase.service.KbAuthorizedUserService;
import com.zzsn.knowbase.util.SpringContextUtils;
import com.zzsn.knowbase.vo.Result;
......@@ -26,18 +28,19 @@ import java.util.Map;
public class KnowInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// // 在请求处理之前进行调用(Controller方法调用之前)
// // 返回true才会继续执行后续的Interceptor和Controller
// // 返回false则取消当前请求
// String token = request.getHeader("X-Access-Token");
//
// KbAuthorizedUserService userService = SpringContextUtils.getBean(KbAuthorizedUserService.class);
// Result<?> result = userService.doCheck(token);
// /**第三方用户验证未通过,直接拦截请求并返回提示*/
// if (!result.isSuccess()){
// doRes(request,response);
// return false;
// }
// 在请求处理之前进行调用(Controller方法调用之前)
// 返回true才会继续执行后续的Interceptor和Controller
// 返回false则取消当前请求
String token = request.getHeader("X-Access-Token");
KbAuthorizedUserService userService = SpringContextUtils.getBean(KbAuthorizedUserService.class);
Result<?> result = userService.doCheckAndGetUser(token);
/**第三方用户验证未通过,直接拦截请求并返回提示*/
if (!result.isSuccess()){
doRes(request,response);
return false;
}
request.setAttribute(Constants.USER_INFO, JSONUtil.toJsonStr(result.getResult()));
return true;
}
......
......@@ -168,6 +168,7 @@ public class Constants {
* 政策法规信息同步最大id
*/
public final static String POLICY_INFO_SYN = "POLICY_INFO_MAX_ID";
public final static String USER_INFO = "userInfo";
/*
......
......@@ -8,6 +8,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
* <p>
......@@ -31,10 +32,16 @@ public class KbAuthorizedUserController {
return Result.OK(authorizedUserService.getById(id));
}
@PostMapping("/addOne")
public Result<?> addOne(@RequestBody KbAuthorizedUser authorizedUser){
return authorizedUserService.addOne(authorizedUser);
}
@PostMapping("/add")
public Result<?> add(@RequestBody KbAuthorizedUser authorizedUser){
public Result<?> add(@RequestBody List<KbAuthorizedUser> authorizedUser){
return authorizedUserService.add(authorizedUser);
}
/**
* 编辑授权用户
* */
......@@ -74,9 +81,13 @@ public class KbAuthorizedUserController {
}
/**校验用户是否可用,并查询用户信息*/
@GetMapping("/thirdpartyUsers")
public Result<?> thirdpartyUsers(HttpServletRequest httpServletRequest){
public Result<?> thirdpartyUsers(HttpServletRequest httpServletRequest,
@RequestParam(name="name",required = false) String name,
@RequestParam(name="username",required = false) String username,
@RequestParam(name="pageNum",defaultValue = "1") Integer pageNum,
@RequestParam(name="PageSize",defaultValue = "10") Integer PageSize){
String token = httpServletRequest.getHeader("X-Access-Token");
return authorizedUserService.thirdpartyUsers(token);
return authorizedUserService.thirdpartyUsers(token,name,username,pageNum,PageSize);
}
......
......@@ -9,6 +9,8 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
/**
* <p>
* 前端控制器
......@@ -55,14 +57,15 @@ public class KbKnowledgeProjectController {
public Result<?> list(
@RequestParam(name="sign",defaultValue = "1") String sign,
@RequestParam(name="category",required = false) String category,
@RequestParam(name="projectId",required = false) String projectId
@RequestParam(name="projectId",required = false) String projectId,
HttpServletRequest httpServletRequest
){
if (!"1".equals(sign)){
if (StringUtils.isBlank(projectId)){
return Result.error("查询非顶级节点列表时需要projectId参数");
}
}
return knowledgeProjectService.lists(sign,projectId,category);
return knowledgeProjectService.lists(sign,projectId,category,httpServletRequest);
}
......
......@@ -26,7 +26,7 @@ public class KbAuthorizedUser extends Model<KbAuthorizedUser> {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.ASSIGN_ID)
private Long id;
private String id;
/**
* 用户名
......
......@@ -26,7 +26,7 @@ public class KbKnowledgeProject extends Model<KbKnowledgeProject> {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.ASSIGN_ID)
private Long id;
private String id;
/**
* 知识库分类名称
......@@ -50,7 +50,7 @@ public class KbKnowledgeProject extends Model<KbKnowledgeProject> {
* 分类
*/
@TableField("category")
private Integer category;
private String category;
/**
* 状态0启用,1禁用
......
......@@ -24,7 +24,7 @@ public class KbKnowledgeProjectType extends Model<KbKnowledgeProjectType> {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.ASSIGN_ID)
private Long id;
private String id;
/**
* 知识库分类名称
......
......@@ -24,7 +24,7 @@ public class KbKnowledges extends Model<KbKnowledges> {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.ASSIGN_ID)
private Long id;
private String id;
/**
* 知识库分类名称
......
package com.zzsn.knowbase.entity;
import com.baomidou.mybatisplus.annotation.TableName;
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 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.EqualsAndHashCode;
import java.util.Date;
/**
* <p>
*
......@@ -26,7 +26,7 @@ public class KbPermissions extends Model<KbPermissions> {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.ASSIGN_ID)
private Long id;
private String id;
/**
* 权限名称
......
......@@ -26,7 +26,7 @@ public class KbRole extends Model<KbRole> {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.ASSIGN_ID)
private Long id;
private String id;
/**
* 角色名称
......
......@@ -3,6 +3,9 @@ package com.zzsn.knowbase.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zzsn.knowbase.entity.KbKnowledgeProject;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* <p>
......@@ -15,4 +18,6 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface KbKnowledgeProjectMapper extends BaseMapper<KbKnowledgeProject> {
@Select("")
List<KbKnowledgeProject> getListByUser();
}
......@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.zzsn.knowbase.entity.KbAuthorizedUser;
import com.zzsn.knowbase.vo.Result;
import java.util.List;
/**
* <p>
* 服务类
......@@ -14,7 +16,7 @@ import com.zzsn.knowbase.vo.Result;
*/
public interface KbAuthorizedUserService extends IService<KbAuthorizedUser> {
Result<?> add(KbAuthorizedUser authorizedUser);
Result<?> addOne(KbAuthorizedUser authorizedUser);
Result<?> edit(KbAuthorizedUser authorizedUser);
......@@ -22,7 +24,10 @@ public interface KbAuthorizedUserService extends IService<KbAuthorizedUser> {
Result<?> userPermission(String token);
Result<?> thirdpartyUsers(String token);
Result<?> thirdpartyUsers(String token, String name, String username, Integer pageNum, Integer pageSize);
Result<?> doCheck(String token);
Result<?> doCheckAndGetUser(String token);
Result<?> add(List<KbAuthorizedUser> authorizedUser);
}
......@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.zzsn.knowbase.entity.KbKnowledgeProject;
import com.zzsn.knowbase.vo.Result;
import javax.servlet.http.HttpServletRequest;
/**
* <p>
* 服务类
......@@ -27,5 +29,5 @@ public interface KbKnowledgeProjectService extends IService<KbKnowledgeProject>
Result<?> del(String id);
Result<?> lists(String sign, String projectId, String category);
Result<?> lists(String sign, String projectId, String category, HttpServletRequest httpServletRequest);
}
......@@ -47,6 +47,8 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap
KbPermissionsService permissionsService;
@Autowired
KbRolePermissionMapService rolePermissionMapService;
@Autowired
KbAuthuserKnowledgeprojectMapService authuserKnowledgeprojectMapService;
/**
* 校验第三方用户接口地址
......@@ -62,7 +64,7 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap
@Override
@Transactional
public Result<?> add(KbAuthorizedUser authorizedUser) {
public Result<?> addOne(KbAuthorizedUser authorizedUser) {
/**保存授权用户*/
authorizedUser.setStatus("0");
authorizedUser.setCreateTime(new Date());
......@@ -75,16 +77,71 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap
List<KbUserRoleMap> maps = new ArrayList<>();
list.forEach(e->{
KbUserRoleMap kbUserRoleMap = new KbUserRoleMap();
kbUserRoleMap.setUserId(authorizedUser.getId());
kbUserRoleMap.setUserId(Long.parseLong(authorizedUser.getId()));
kbUserRoleMap.setRoleId(Long.parseLong(e));
maps.add(kbUserRoleMap);
});
kbUserRoleMapService.saveBatch(maps);
}
/**插入用户知识库权限关系表*/
if (StringUtils.isNotBlank(authorizedUser.getKnowledgeProjectId())){
KbAuthuserKnowledgeprojectMap kbAuthuserKnowledgeprojectMap = new KbAuthuserKnowledgeprojectMap();
kbAuthuserKnowledgeprojectMap.setAuthUserId(Long.parseLong(authorizedUser.getId()));
kbAuthuserKnowledgeprojectMap.setKnowledgeProjectId(Long.parseLong(authorizedUser.getKnowledgeProjectId()));
authuserKnowledgeprojectMapService.save(kbAuthuserKnowledgeprojectMap);
}
return Result.OK();
}
@Override
public Result<?> add(List<KbAuthorizedUser> authorizedUsers) {
if (CollectionUtil.isEmpty(authorizedUsers)){
return Result.error("请选择要授权的用户");
}
authorizedUsers.forEach(e-> {
/**保存授权用户*/
e.setStatus("0");
e.setCreateTime(new Date());
});
super.saveBatch(authorizedUsers);
List<KbUserRoleMap> maps = new ArrayList<>();
List<KbAuthuserKnowledgeprojectMap> userknows = new ArrayList<>();
authorizedUsers.forEach(authorizedUser->{
/**插入用户角色关系表*/
if (StringUtils.isNotBlank(authorizedUser.getRoleId())){
String roleId = authorizedUser.getRoleId();
List<String> list = Arrays.asList(roleId.split(","));
list.forEach(e->{
KbUserRoleMap kbUserRoleMap = new KbUserRoleMap();
kbUserRoleMap.setUserId(Long.parseLong(authorizedUser.getId()));
kbUserRoleMap.setRoleId(Long.parseLong(e));
maps.add(kbUserRoleMap);
});
}
/**插入用户知识库权限关系表*/
if (StringUtils.isNotBlank(authorizedUser.getKnowledgeProjectId())){
KbAuthuserKnowledgeprojectMap kbAuthuserKnowledgeprojectMap = new KbAuthuserKnowledgeprojectMap();
kbAuthuserKnowledgeprojectMap.setAuthUserId(Long.parseLong(authorizedUser.getId()));
kbAuthuserKnowledgeprojectMap.setKnowledgeProjectId(Long.parseLong(authorizedUser.getKnowledgeProjectId()));
userknows.add(kbAuthuserKnowledgeprojectMap);
}
});
kbUserRoleMapService.saveBatch(maps);
authuserKnowledgeprojectMapService.saveBatch(userknows);
return Result.OK();
}
@Override
@Transactional
public Result<?> edit(KbAuthorizedUser authorizedUser) {
String newRole = authorizedUser.getRoleId();
......@@ -99,7 +156,7 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap
List<KbUserRoleMap> maps = new ArrayList<>();
list.forEach(e->{
KbUserRoleMap kbUserRoleMap = new KbUserRoleMap();
kbUserRoleMap.setUserId(authorizedUser.getId());
kbUserRoleMap.setUserId(Long.parseLong(authorizedUser.getId()));
kbUserRoleMap.setRoleId(Long.parseLong(e));
maps.add(kbUserRoleMap);
});
......@@ -161,8 +218,6 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap
}
userInfoVo.setRoles(kbRoles);
userInfoVo.setAuthorizedUser(one);
return Result.OK(userInfoVo);
}else {
return Result.error("第三方系统未通过用户校验");
......@@ -170,11 +225,24 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap
}
@Override
public Result<?> thirdpartyUsers(String token) {
String body = HttpRequest.get(getusersurl).header("X-Access-Token", token).execute().body();
public Result<?> thirdpartyUsers(String token, String name, String username, Integer pageNum, Integer pageSize) {
String body = HttpRequest.get(getusersurl).header("X-Access-Token", token)
.form("pageNum",pageNum)
.form("pageSize",pageSize)
.form("name",name)
.form("username",username)
.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);
Page page = JSONUtil.toBean(JSONUtil.toJsonStr(bean.getResult()), Page.class);
List<KbAuthorizedUser> list = JSONUtil.toList(JSONUtil.parseArray(JSONUtil.toJsonStr(page.getRecords())), KbAuthorizedUser.class);
Page<KbAuthorizedUser> result = new Page<>();
result.setTotal(page.getTotal());
result.setCurrent(page.getCurrent());
result.setSize(page.getSize());
result.setRecords(list);
return Result.OK(result);
}
......@@ -184,4 +252,28 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap
Result bean = JSONUtil.toBean(body, Result.class);
return bean;
}
@Override
public Result<?> doCheckAndGetUser(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("该用户还未进行授权访问,请联系管理员进行授权");
}
/**查询授权用户*/
QueryWrapper<KbAuthorizedUser> query = new QueryWrapper<>();
query.eq("a.user_id",bean.getUserId());
KbAuthorizedUser one = authorizedUserMapper.getOne(query);
return Result.OK(one);
}else {
return Result.error("第三方系统未通过用户校验");
}
}
}
......@@ -3,17 +3,24 @@ package com.zzsn.knowbase.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zzsn.knowbase.entity.KbKnowledgeProject;
import com.zzsn.knowbase.mapper.KbKnowledgeProjectMapper;
import com.zzsn.knowbase.service.KbAuthorizedUserService;
import com.zzsn.knowbase.service.KbAuthuserKnowledgeprojectMapService;
import com.zzsn.knowbase.service.KbKnowledgeProjectService;
import com.zzsn.knowbase.vo.Result;
import com.zzsn.knowbase.vo.UserInfoVo;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List;
......@@ -28,6 +35,12 @@ import java.util.List;
@Service
public class KbKnowledgeProjectServiceImpl extends ServiceImpl<KbKnowledgeProjectMapper, KbKnowledgeProject> implements KbKnowledgeProjectService {
@Autowired
KbAuthorizedUserService kbAuthorizedUserService;
@Autowired
KbKnowledgeProjectMapper kbKnowledgeProjectMapper;
@Autowired
KbAuthuserKnowledgeprojectMapService authuserKnowledgeprojectMapService;
@Override
@Transactional
public Result<?> add(KbKnowledgeProject knowledgeProject) {
......@@ -106,6 +119,7 @@ public class KbKnowledgeProjectServiceImpl extends ServiceImpl<KbKnowledgeProjec
}
super.updateBatchById(list);
}
super.updateById(knowledgeProject);
return Result.OK();
}
......@@ -121,7 +135,18 @@ public class KbKnowledgeProjectServiceImpl extends ServiceImpl<KbKnowledgeProjec
}
@Override
public Result<?> lists(String sign, String projectId, String category) {
public Result<?> lists(String sign, String projectId, String category, HttpServletRequest request) {
String token = request.getHeader("X-Access-Token");
Result<?> result = kbAuthorizedUserService.userPermission(token);
UserInfoVo bean = JSONUtil.toBean(JSON.toJSONString(result.getResult()), UserInfoVo.class);
//这个用户所拥有的所有的分类的权限
// List<KbAuthuserKnowledgeprojectMap> list = authuserKnowledgeprojectMapService.list(Wrappers.<KbAuthuserKnowledgeprojectMap>lambdaQuery().eq(KbAuthuserKnowledgeprojectMap::getAuthUserId, one.getId()));
List<KbKnowledgeProject> kbKnowledgeProjects ;
if ("1".equals(sign)&&StringUtils.isBlank(projectId)){
kbKnowledgeProjects = super.list(Wrappers.<KbKnowledgeProject>lambdaQuery()
......@@ -132,6 +157,7 @@ public class KbKnowledgeProjectServiceImpl extends ServiceImpl<KbKnowledgeProjec
.eq(KbKnowledgeProject::getPid,projectId)
.eq(StrUtil.isNotBlank(category),KbKnowledgeProject::getCategory,category));
}
return Result.OK(kbKnowledgeProjects);
}
......
package com.zzsn.knowbase.util;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONUtil;
import com.zzsn.knowbase.constant.Constants;
import com.zzsn.knowbase.entity.KbAuthorizedUser;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
......@@ -10,6 +13,11 @@ import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @Description: spring容器取bean的工具类;
......@@ -119,4 +127,21 @@ public class SpringContextUtils implements ApplicationContextAware {
log.error("删除beanName:{}失败!",beanName);
}
}
public static HttpServletRequest getHttpServletRequest (){
return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
}
public static HttpServletResponse getHttpServletResponse (){
return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
}
public static KbAuthorizedUser getUserInfo(){
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
if (ObjectUtil.isEmpty(request)){
return null;
}
return JSONUtil.toBean(request.getAttribute(Constants.USER_INFO).toString(), KbAuthorizedUser.class);
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论