资源管理

This commit is contained in:
root
2021-06-30 17:28:39 +08:00
parent bad0f16f90
commit b543a9502d
17 changed files with 454 additions and 3 deletions
@@ -23,11 +23,11 @@ public class CodeGen {
// x.x.x.x:3306/xxxx --MYSQL
// 192.168.10.140:1521:foton_slrs_test
// foton_slrs_test@101.36.227.22
private static final String DB_IP="101.36.227.22:33050/foton_slrs_test";
private static final String DB_IP="192.168.10.47/foton_slrs_test";
private static final String DB_USER="root";
private static final String DB_PWD="1q2w3e4r";
private static final String DB_PWD="root";
/**
@@ -3,7 +3,7 @@
# 数据库配置
#=============================================
spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver
spring.datasource.url = jdbc:mysql://39.100.23.127:3306/foton_slrs_test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC&useSSL=false
spring.datasource.url = jdbc:mysql://192.168.10.47:3306/foton_slrs_test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC&useSSL=false
spring.datasource.username = root
spring.datasource.password = root
@@ -0,0 +1,57 @@
package com.adc.da.slrs.sarResource.controller;
import com.adc.da.base.web.BaseController;
import com.adc.da.http.ResponseMessage;
import com.adc.da.http.Result;
import com.adc.da.slrs.sarResource.entity.TsResource;
import com.adc.da.slrs.sarResource.service.ITsResourceService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* <p>
* 前端控制器
* </p>
*
* @author zyl
* @since 2021-06-30
*/
@RestController
@Api(tags = "资源管理")
@RequestMapping("/sarResource/ts-resource")
public class TsResourceController extends BaseController<TsResource> {
@Autowired
private ITsResourceService tsResourceService;
@ApiOperation("查询所有资源")
@GetMapping
public ResponseMessage<List<TsResource>> getAll(){
List<TsResource> tsResources=tsResourceService.getAll();
return Result.success(tsResources);
}
@ApiOperation("添加资源")
@PostMapping("/add")
public ResponseMessage<Object> addResource(@RequestBody TsResource tsResource){
return tsResourceService.addResource(tsResource);
}
@ApiOperation("编辑资源")
@PutMapping
public ResponseMessage<Object> updateResource(@Validated(TsResource.update.class) @RequestBody TsResource tsResource){
return tsResourceService.updateResource(tsResource);
}
@ApiOperation("删除资源")
@DeleteMapping
public ResponseMessage<Object> delResource(@RequestParam Integer resourceId){
return tsResourceService.delResource(resourceId);
}
}
@@ -0,0 +1,16 @@
package com.adc.da.slrs.sarResource.dao;
import com.adc.da.slrs.sarResource.entity.TsResource;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* Mapper 接口
* </p>
*
* @author zyl
* @since 2021-06-30
*/
public interface TsResourceDao extends BaseMapper<TsResource> {
}
@@ -0,0 +1,53 @@
package com.adc.da.slrs.sarResource.entity;
import com.adc.da.base.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* <p>
*
* </p>
*
* @author zyl
* @since 2021-06-30
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@ApiModel(value="TsResource对象", description="")
public class TsResource extends BaseEntity {
public interface update{
}
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "路径")
private String href;
@ApiModelProperty(value = "父节点ID")
private String parentId;
@ApiModelProperty(value = "资源名称")
private String name;
@TableId(type = IdType.UUID)
@NotNull(message = "id不能为空",groups = {update.class})
@ApiModelProperty(value = "ID")
private String id;
@TableField(exist = false)
@ApiModelProperty("子节点")
private List<TsResource> children;
}
@@ -0,0 +1,33 @@
package com.adc.da.slrs.sarResource.service;
import com.adc.da.http.ResponseMessage;
import com.adc.da.slrs.sarResource.entity.TsResource;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* <p>
* 服务类
* </p>
*
* @author zyl
* @since 2021-06-30
*/
public interface ITsResourceService extends IService<TsResource> {
List<TsResource> getAll();
ResponseMessage<Object> addResource(TsResource tsResource);
ResponseMessage<Object> updateResource(TsResource tsResource);
ResponseMessage<Object> delResource(Integer resourceId);
/**
* 通过Ids查询menu
* @param resourceIds :菜单Ids
* @return List<Menu>
*/
List<TsResource> getResourceByIds(List<String> resourceIds);
}
@@ -0,0 +1,127 @@
package com.adc.da.slrs.sarResource.service.impl;
import com.adc.da.http.ResponseMessage;
import com.adc.da.http.Result;
import com.adc.da.slrs.sarResource.dao.TsResourceDao;
import com.adc.da.slrs.sarResource.entity.TsResource;
import com.adc.da.slrs.sarResource.service.ITsResourceService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* <p>
* 服务实现类
* </p>
*
* @author zyl
* @since 2021-06-30
*/
@Service
public class TsResourceServiceImpl extends ServiceImpl<TsResourceDao, TsResource> implements ITsResourceService {
@Autowired
private TsResourceDao dao;
/**
* 查询所有菜单
*/
@Override
public List<TsResource> getAll() {
QueryWrapper<TsResource> TsResourceQueryWrapper=new QueryWrapper<>();
TsResourceQueryWrapper.isNull("PARENT_ID");
List<TsResource> TsResources=dao.selectList(TsResourceQueryWrapper);
for(TsResource TsResource:TsResources){
TsResource.setChildren(recursionGetChildren((TsResource)));
}
return TsResources;
}
/**
* 添加菜单
* @param TsResource:菜单信息
* @return ResponseMessage<Object>
*/
@Override
public ResponseMessage<Object> addResource(TsResource TsResource) {
if(TsResource.getParentId()!=null){
TsResource parent=dao.selectById(TsResource.getParentId());
if(parent==null){
return Result.error("该父菜单不存在");
}
}
dao.insert(TsResource);
return Result.success();
}
/**
* 编辑菜单
* @param TsResource:菜单信息
* @return ResponseMessage<Object>
*/
@Override
public ResponseMessage<Object> updateResource(TsResource TsResource) {
TsResource oldResource=dao.selectById(TsResource.getId());
if(oldResource==null){
return Result.error("该菜单不存在");
}
if(TsResource.getParentId()!=null){
TsResource parent=dao.selectById(TsResource.getParentId());
if(parent==null){
return Result.error("父节点不存在");
}
}
dao.updateById(TsResource);
return Result.success();
}
/**
* 删除菜单
* @param ResourceId:菜单ID
* @return ResponseMessage<Object>
*/
@Override
public ResponseMessage<Object> delResource(Integer ResourceId) {
QueryWrapper<TsResource> TsResourceQueryWrapper=new QueryWrapper<>();
TsResourceQueryWrapper.eq("parent_id",ResourceId);
List<TsResource> children=dao.selectList(TsResourceQueryWrapper);
if(children!=null&&children.size()>0){
return Result.error("该菜单有子节点,无法删除");
}
dao.deleteById(ResourceId);
return Result.success();
}
/**
* 通过Ids查询Resource
* @param resourceIds :菜单Ids
* @return List<Resource>
*/
@Override
public List<TsResource> getResourceByIds(List<String> resourceIds) {
if(resourceIds!=null&&resourceIds.size()>0){
QueryWrapper<TsResource> TsResourceQueryWrapper=new QueryWrapper<>();
TsResourceQueryWrapper.in("id",resourceIds);
return dao.selectList(TsResourceQueryWrapper);
}
return new ArrayList<>();
}
/**
* 递归调用获取子节点
* @param parent:父节点
* @return List<TsResource>
*/
private List<TsResource> recursionGetChildren(TsResource parent){
QueryWrapper<TsResource> TsResourceQueryWrapper=new QueryWrapper<>();
TsResourceQueryWrapper.eq("PARENT_ID",parent.getId());
List<TsResource> children=dao.selectList(TsResourceQueryWrapper);
for(TsResource TsResource:children){
TsResource.setChildren(recursionGetChildren((TsResource)));
}
return children;
}
}
@@ -6,6 +6,7 @@ import com.adc.da.http.Result;
import com.adc.da.login.util.UserUtils;
import com.adc.da.slrs.sarMenu.entity.SarMenu;
import com.adc.da.slrs.sarRole.entity.TsRoleMenuVO;
import com.adc.da.slrs.sarRole.entity.TsRoleResourceVO;
import com.adc.da.slrs.sarRole.service.ITsRoleService;
import com.adc.da.sys.entity.UserEO;
import io.swagger.annotations.ApiOperation;
@@ -92,4 +93,18 @@ public class TsRoleController extends BaseController<TsRole> {
List<String> menuIds=tsRoleService.getMenu(roleId);
return Result.success(menuIds);
}
@ApiOperation("配置资源")
@PostMapping("/resource")
public ResponseMessage<Object> setResource(@Valid @RequestBody TsRoleResourceVO tsRoleResourceVO){
return tsRoleService.setResource(tsRoleResourceVO);
}
@ApiOperation("查询角色资源")
@GetMapping("/resource")
public ResponseMessage<List<String>> getResource(@RequestParam String roleId){
List<String> resourceIds=tsRoleService.getResource(roleId);
return Result.success(resourceIds);
}
}
@@ -59,4 +59,36 @@ public interface TsRoleDao extends BaseMapper<TsRole> {
* @return List<String>
*/
List<String> getMenuIdsByRoleIds(List<String> roleIds);
/**
* 通过角色ID查询绑定的资源ID
* @param roleId:角色ID
* @return List<String>
*/
@Select("select resource_id from ts_role_resource where role_id=#{roleId}")
List<String> getResourceIds(String roleId);
/**
* 添加资源
* @param roleId:角色ID
* @param resourceId:权限ID
*/
@Insert("insert into ts_role_resource (role_id,resource_id) values (#{roleId},#{resourceId})")
void addResource(String roleId, String resourceId);
/**
* 删除权限
* @param roleId:角色ID
* @param resourceId:权限ID
*/
@Delete("delete from ts_role_resource where role_id=#{roleId} and resource_id=#{resourceId}")
void delResource(String roleId, String resourceId);
/**
* 通过角色Id列表查询资源Id列表
* @param roleIds:角色ID列表
* @return List<String>
*/
List<String> getResourceIdsByRoleIds(List<String> roleIds);
}
@@ -0,0 +1,14 @@
package com.adc.da.slrs.sarRole.entity;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.List;
@Data
public class TsRoleResourceVO {
@NotNull(message = "roleId不能为空")
private String roleId;
@NotNull(message = "resourceIds不能为空")
private List<String> resourceIds;
}
@@ -3,6 +3,7 @@ package com.adc.da.slrs.sarRole.service;
import com.adc.da.http.ResponseMessage;
import com.adc.da.slrs.sarRole.entity.TsRole;
import com.adc.da.slrs.sarRole.entity.TsRoleMenuVO;
import com.adc.da.slrs.sarRole.entity.TsRoleResourceVO;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
@@ -71,4 +72,10 @@ public interface ITsRoleService extends IService<TsRole> {
* @return List<String>
*/
List<String> getMenuIdsByRoleIds(List<String> roleIds);
ResponseMessage<Object> setResource(TsRoleResourceVO tsRoleResourceVO);
List<String> getResource(String roleId);
List<String> getResourceIdsByRoleIds(List<String> roleIds);
}
@@ -8,6 +8,7 @@ import com.adc.da.slrs.sarMenu.service.ISarMenuService;
import com.adc.da.slrs.sarRole.entity.TsRole;
import com.adc.da.slrs.sarRole.dao.TsRoleDao;
import com.adc.da.slrs.sarRole.entity.TsRoleMenuVO;
import com.adc.da.slrs.sarRole.entity.TsRoleResourceVO;
import com.adc.da.slrs.sarRole.service.ITsRoleService;
import com.adc.da.utils.util.ListUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -197,5 +198,58 @@ public class TsRoleServiceImpl extends ServiceImpl<TsRoleDao, TsRole> implements
return null;
}
/**
* 配置资源
* @param tsRoleResourceVO:资源ID
* @return ResponseMessage<Object>
*/
@Override
public ResponseMessage<Object> setResource(TsRoleResourceVO tsRoleResourceVO) {
TsRole role=tsRoleDao.selectById(tsRoleResourceVO.getRoleId());
if(role==null){
return Result.error("该角色不存在");
}
List<String> oldResourceIds=tsRoleDao.getResourceIds(tsRoleResourceVO.getRoleId());
Map<String,List<String>> updateMenuIds= ListUtil.difList(tsRoleResourceVO.getResourceIds(),oldResourceIds);
List<String> insertIds=updateMenuIds.get("insert");
List<String> deleteIds=updateMenuIds.get("delete");
if(insertIds!=null&&insertIds.size()>0){
for(String menuId:insertIds){
tsRoleDao.addResource(tsRoleResourceVO.getRoleId(),menuId);
}
}
if(deleteIds!=null&&deleteIds.size()>0){
for(String menuId:deleteIds){
tsRoleDao.delResource(tsRoleResourceVO.getRoleId(),menuId);
}
}
//修改首页自定义目录
// List<SarMenu> menus=sarMenuService.getMenusByIds(tsRoleMenuVO.getMenuIds());
return Result.success();
}
/**
* 查询角色资源
* @param roleId:角色ID
* @return List<String>
*/
@Override
public List<String> getResource(String roleId) {
return tsRoleDao.getResourceIds(roleId);
}
/**
* 通过角色Id列表查询菜单Id列表
* @param roleIds:角色ID列表
* @return List<String>
*/
@Override
public List<String> getResourceIdsByRoleIds(List<String> roleIds) {
if(roleIds!=null&&roleIds.size()>0){
return tsRoleDao.getResourceIdsByRoleIds(roleIds);
}
return null;
}
}
@@ -4,6 +4,7 @@ package com.adc.da.slrs.sarUser.controller;
import com.adc.da.http.ResponseMessage;
import com.adc.da.http.Result;
import com.adc.da.slrs.sarMenu.entity.SarMenu;
import com.adc.da.slrs.sarResource.entity.TsResource;
import com.adc.da.slrs.sarUser.entity.UserPositionVO;
import com.adc.da.slrs.sarUser.service.ITsUserService;
import io.swagger.annotations.ApiOperation;
@@ -55,6 +56,13 @@ public class TsUserController extends BaseController<TsUser> {
return Result.success(menus);
}
@ApiOperation("查询当前登录用户资源")
@GetMapping("/resource")
public ResponseMessage<List<TsResource>> getResource(){
List<TsResource> resources=tsUserService.getResource();
return Result.success(resources);
}
}
@@ -2,6 +2,7 @@ package com.adc.da.slrs.sarUser.service;
import com.adc.da.http.ResponseMessage;
import com.adc.da.slrs.sarMenu.entity.SarMenu;
import com.adc.da.slrs.sarResource.entity.TsResource;
import com.adc.da.slrs.sarUser.entity.TsUser;
import com.adc.da.slrs.sarUser.entity.UserPositionVO;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -45,4 +46,6 @@ public interface ITsUserService extends IService<TsUser> {
* @return List<SarMenu>
*/
List<SarMenu> getMenu();
List<TsResource> getResource();
}
@@ -7,6 +7,8 @@ import com.adc.da.slrs.sarMenu.entity.SarMenu;
import com.adc.da.slrs.sarMenu.service.ISarMenuService;
import com.adc.da.slrs.sarPosition.entity.TsPosition;
import com.adc.da.slrs.sarPosition.service.ITsPositionService;
import com.adc.da.slrs.sarResource.entity.TsResource;
import com.adc.da.slrs.sarResource.service.ITsResourceService;
import com.adc.da.slrs.sarRole.service.ITsRoleService;
import com.adc.da.slrs.sarUser.entity.TsUser;
import com.adc.da.slrs.sarUser.dao.TsUserDao;
@@ -43,6 +45,8 @@ public class TsUserServiceImpl extends ServiceImpl<TsUserDao, TsUser> implements
private ITsRoleService tsRoleService;
@Autowired
private ISarMenuService sarMenuService;
@Autowired
private ITsResourceService tsResourceService;
/**
* 通过机构ID查询人员
@@ -125,4 +129,19 @@ public class TsUserServiceImpl extends ServiceImpl<TsUserDao, TsUser> implements
List<String> menuIds=tsRoleService.getMenuIdsByRoleIds(roleIds);
return sarMenuService.getMenuByIds(menuIds);
}
/**
* 查询当前登录的用户资源
* @return List<SarMenu>
*/
@Override
public List<TsResource> getResource() {
UserEO userEO=UserUtils.getUser();
String userId= userEO.getUsid();
System.out.println(userId);
List<String> positionIds=tsUserDao.selectPositionIds(userId);
List<String> roleIds=tsPositionService.getRoleIdsByPositionIds(positionIds);
List<String> resourceIds=tsRoleService.getResourceIdsByRoleIds(roleIds);
return tsResourceService.getResourceByIds(resourceIds);
}
}
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.adc.da.slrs.sarResource.dao.TsResourceDao">
</mapper>
@@ -10,4 +10,13 @@
</foreach>
)
</select>
<select id="getResourceIdsByRoleIds" resultType="String">
select distinct resource_id from ts_role_resource
where role_id in
(
<foreach collection="list" separator="," item="roleId">
#{roleId}
</foreach>
)
</select>
</mapper>