fix: 后台模块查询过滤相同的行

This commit is contained in:
xiongxiaoyang 2023-04-14 21:33:31 +08:00
parent 687eb61846
commit a7d825cc54
2 changed files with 300 additions and 263 deletions

View File

@ -1,174 +1,212 @@
package com.java2nb.system.domain;
import java.io.Serializable;
import java.math.BigDecimal;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.java2nb.common.jsonserializer.LongToStringSerializer;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.io.Serializable;
import java.util.Date;
import java.util.Objects;
/**
* 数据权限管理
*
*
* @author xiongxy
* @email 1179705413@qq.com
* @date 2019-11-25 11:40:03
*/
public class DataPermDO implements Serializable {
private static final long serialVersionUID = 1L;
//
//java中的long能表示的范围比js中number大,也就意味着部分数值在js中存不下(变成不准确的值)
//所以通过序列化成字符串来解决
@JsonSerialize(using = LongToStringSerializer.class)
private Long id;
//权限名称
private String name;
//数据表名称
private String tableName;
//所属模块
private String moduleName;
//用户权限控制属性名
private String crlAttrName;
//数据表权限控制列名
private String crlColumnName;
//权限codeall_开头表示查看所有数据的权限sup_开头表示查看下级数据的权限own_开头表示查看本级数据的权限
private String permCode;
//排序
private Integer orderNum;
//创建时间
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date gmtCreate;
//修改时间
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date gmtModified;
private static final long serialVersionUID = 1L;
/**
* 设置
*/
public void setId(Long id) {
this.id = id;
}
/**
* 获取
*/
public Long getId() {
return id;
}
/**
* 设置权限名称
*/
public void setName(String name) {
this.name = name;
}
/**
* 获取权限名称
*/
public String getName() {
return name;
}
/**
* 设置数据表名称
*/
public void setTableName(String tableName) {
this.tableName = tableName;
}
/**
* 获取数据表名称
*/
public String getTableName() {
return tableName;
}
/**
* 设置所属模块
*/
public void setModuleName(String moduleName) {
this.moduleName = moduleName;
}
/**
* 获取所属模块
*/
public String getModuleName() {
return moduleName;
}
/**
* 设置用户权限控制属性名
*/
public void setCrlAttrName(String crlAttrName) {
this.crlAttrName = crlAttrName;
}
/**
* 获取用户权限控制属性名
*/
public String getCrlAttrName() {
return crlAttrName;
}
/**
* 设置数据表权限控制列名
*/
public void setCrlColumnName(String crlColumnName) {
this.crlColumnName = crlColumnName;
}
/**
* 获取数据表权限控制列名
*/
public String getCrlColumnName() {
return crlColumnName;
}
/**
* 设置权限codeall_开头表示查看所有数据的权限sup_开头表示查看下级数据的权限own_开头表示查看本级数据的权限
*/
public void setPermCode(String permCode) {
this.permCode = permCode;
}
/**
* 获取权限codeall_开头表示查看所有数据的权限sup_开头表示查看下级数据的权限own_开头表示查看本级数据的权限
*/
public String getPermCode() {
return permCode;
}
/**
* 设置排序
*/
public void setOrderNum(Integer orderNum) {
this.orderNum = orderNum;
}
/**
* 获取排序
*/
public Integer getOrderNum() {
return orderNum;
}
/**
* 设置创建时间
*/
public void setGmtCreate(Date gmtCreate) {
this.gmtCreate = gmtCreate;
}
/**
* 获取创建时间
*/
public Date getGmtCreate() {
return gmtCreate;
}
/**
* 设置修改时间
*/
public void setGmtModified(Date gmtModified) {
this.gmtModified = gmtModified;
}
/**
* 获取修改时间
*/
public Date getGmtModified() {
return gmtModified;
}
//
//java中的long能表示的范围比js中number大,也就意味着部分数值在js中存不下(变成不准确的值)
//所以通过序列化成字符串来解决
@JsonSerialize(using = LongToStringSerializer.class)
private Long id;
//权限名称
private String name;
//数据表名称
private String tableName;
//所属模块
private String moduleName;
//用户权限控制属性名
private String crlAttrName;
//数据表权限控制列名
private String crlColumnName;
//权限codeall_开头表示查看所有数据的权限sup_开头表示查看下级数据的权限own_开头表示查看本级数据的权限
private String permCode;
//排序
private Integer orderNum;
//创建时间
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date gmtCreate;
//修改时间
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date gmtModified;
/**
* 设置
*/
public void setId(Long id) {
this.id = id;
}
/**
* 获取
*/
public Long getId() {
return id;
}
/**
* 设置权限名称
*/
public void setName(String name) {
this.name = name;
}
/**
* 获取权限名称
*/
public String getName() {
return name;
}
/**
* 设置数据表名称
*/
public void setTableName(String tableName) {
this.tableName = tableName;
}
/**
* 获取数据表名称
*/
public String getTableName() {
return tableName;
}
/**
* 设置所属模块
*/
public void setModuleName(String moduleName) {
this.moduleName = moduleName;
}
/**
* 获取所属模块
*/
public String getModuleName() {
return moduleName;
}
/**
* 设置用户权限控制属性名
*/
public void setCrlAttrName(String crlAttrName) {
this.crlAttrName = crlAttrName;
}
/**
* 获取用户权限控制属性名
*/
public String getCrlAttrName() {
return crlAttrName;
}
/**
* 设置数据表权限控制列名
*/
public void setCrlColumnName(String crlColumnName) {
this.crlColumnName = crlColumnName;
}
/**
* 获取数据表权限控制列名
*/
public String getCrlColumnName() {
return crlColumnName;
}
/**
* 设置权限codeall_开头表示查看所有数据的权限sup_开头表示查看下级数据的权限own_开头表示查看本级数据的权限
*/
public void setPermCode(String permCode) {
this.permCode = permCode;
}
/**
* 获取权限codeall_开头表示查看所有数据的权限sup_开头表示查看下级数据的权限own_开头表示查看本级数据的权限
*/
public String getPermCode() {
return permCode;
}
/**
* 设置排序
*/
public void setOrderNum(Integer orderNum) {
this.orderNum = orderNum;
}
/**
* 获取排序
*/
public Integer getOrderNum() {
return orderNum;
}
/**
* 设置创建时间
*/
public void setGmtCreate(Date gmtCreate) {
this.gmtCreate = gmtCreate;
}
/**
* 获取创建时间
*/
public Date getGmtCreate() {
return gmtCreate;
}
/**
* 设置修改时间
*/
public void setGmtModified(Date gmtModified) {
this.gmtModified = gmtModified;
}
/**
* 获取修改时间
*/
public Date getGmtModified() {
return gmtModified;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
DataPermDO that = (DataPermDO) o;
return Objects.equals(id, that.id) && Objects.equals(name, that.name)
&& Objects.equals(tableName, that.tableName) && Objects.equals(moduleName, that.moduleName)
&& Objects.equals(crlAttrName, that.crlAttrName) && Objects.equals(crlColumnName,
that.crlColumnName) && Objects.equals(permCode, that.permCode) && Objects.equals(orderNum,
that.orderNum) && Objects.equals(gmtCreate, that.gmtCreate) && Objects.equals(gmtModified,
that.gmtModified);
}
@Override
public int hashCode() {
return Objects.hash(id, name, tableName, moduleName, crlAttrName, crlColumnName, permCode, orderNum, gmtCreate,
gmtModified);
}
}

View File

@ -1,10 +1,12 @@
package com.java2nb.system.service.impl;
import com.java2nb.common.domain.DictDO;
import com.java2nb.common.domain.Tree;
import com.java2nb.common.utils.BuildTree;
import com.java2nb.common.utils.IdWorker;
import com.java2nb.system.dao.DataPermDao;
import com.java2nb.system.dao.RoleDataPermDao;
import com.java2nb.system.domain.DataPermDO;
import com.java2nb.system.service.DataPermService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -12,119 +14,116 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.java2nb.system.dao.DataPermDao;
import com.java2nb.system.domain.DataPermDO;
import com.java2nb.system.service.DataPermService;
import java.util.stream.Collectors;
@Service
public class DataPermServiceImpl implements DataPermService {
@Autowired
private DataPermDao dataPermDao;
@Autowired
private RoleDataPermDao roleDataPermDao;
@Override
public DataPermDO get(Long id){
return dataPermDao.get(id);
}
@Override
public List<DataPermDO> list(Map<String, Object> map){
return dataPermDao.list(map);
}
@Override
public int count(Map<String, Object> map){
return dataPermDao.count(map);
}
@Override
public int save(DataPermDO dataPerm){
return dataPermDao.save(dataPerm);
}
@Override
public int update(DataPermDO dataPerm){
return dataPermDao.update(dataPerm);
}
@Override
public int remove(Long id){
return dataPermDao.remove(id);
}
@Override
public int batchRemove(Long[] ids){
return dataPermDao.batchRemove(ids);
}
@Autowired
private DataPermDao dataPermDao;
@Override
public List<DataPermDO> listModuleName() {
return dataPermDao.listModuleName();
}
@Autowired
private RoleDataPermDao roleDataPermDao;
@Override
public Tree<DataPermDO> getTree() {
List<Tree<DataPermDO>> trees = new ArrayList<Tree<DataPermDO>>();
List<DataPermDO> permDOs = dataPermDao.list(new HashMap<>(16));
Map<String,String> topTree = new HashMap<>();
for (DataPermDO permDO : permDOs) {
Tree<DataPermDO> tree = new Tree<>();
tree.setId(permDO.getId().toString());
if(!topTree.containsKey(permDO.getModuleName())){
Tree<DataPermDO> parentTree = new Tree<>();
String id = new IdWorker().nextId()+"";
parentTree.setId(id);
parentTree.setParentId(0+"");
parentTree.setText(permDO.getModuleName());
topTree.put(permDO.getModuleName(),id);
trees.add(parentTree);
}
tree.setParentId(topTree.get(permDO.getModuleName()));
tree.setText(permDO.getName());
trees.add(tree);
}
// 默认顶级菜单为0根据数据库实际情况调整
Tree<DataPermDO> t = BuildTree.build(trees);
return t;
}
@Override
public DataPermDO get(Long id) {
return dataPermDao.get(id);
}
@Override
public Tree<DataPermDO> getTree(Long roleId) {
List<Tree<DataPermDO>> trees = new ArrayList<Tree<DataPermDO>>();
List<DataPermDO> permDOs = dataPermDao.list(new HashMap<>(16));
List<Long> permIds = roleDataPermDao.listPermIdByRoleId(roleId);
Map<String,String> topTree = new HashMap<>();
for (DataPermDO permDO : permDOs) {
Tree<DataPermDO> tree = new Tree<>();
tree.setId(permDO.getId().toString());
if(!topTree.containsKey(permDO.getModuleName())){
Tree<DataPermDO> parentTree = new Tree<>();
String id = new IdWorker().nextId()+"";
parentTree.setId(id);
parentTree.setParentId(0+"");
parentTree.setText(permDO.getModuleName());
topTree.put(permDO.getModuleName(),id);
trees.add(parentTree);
}
tree.setParentId(topTree.get(permDO.getModuleName()));
tree.setText(permDO.getName());
Map<String, Object> state = new HashMap<>(16);
if (permIds.contains(permDO.getId())) {
state.put("selected", true);
} else {
state.put("selected", false);
}
tree.setState(state);
trees.add(tree);
}
// 默认顶级菜单为0根据数据库实际情况调整
Tree<DataPermDO> t = BuildTree.build(trees);
return t;
}
@Override
public List<DataPermDO> list(Map<String, Object> map) {
return dataPermDao.list(map);
}
@Override
public int count(Map<String, Object> map) {
return dataPermDao.count(map);
}
@Override
public int save(DataPermDO dataPerm) {
return dataPermDao.save(dataPerm);
}
@Override
public int update(DataPermDO dataPerm) {
return dataPermDao.update(dataPerm);
}
@Override
public int remove(Long id) {
return dataPermDao.remove(id);
}
@Override
public int batchRemove(Long[] ids) {
return dataPermDao.batchRemove(ids);
}
@Override
public List<DataPermDO> listModuleName() {
return dataPermDao.listModuleName().stream().distinct().collect(Collectors.toList());
}
@Override
public Tree<DataPermDO> getTree() {
List<Tree<DataPermDO>> trees = new ArrayList<Tree<DataPermDO>>();
List<DataPermDO> permDOs = dataPermDao.list(new HashMap<>(16));
Map<String, String> topTree = new HashMap<>();
for (DataPermDO permDO : permDOs) {
Tree<DataPermDO> tree = new Tree<>();
tree.setId(permDO.getId().toString());
if (!topTree.containsKey(permDO.getModuleName())) {
Tree<DataPermDO> parentTree = new Tree<>();
String id = new IdWorker().nextId() + "";
parentTree.setId(id);
parentTree.setParentId(0 + "");
parentTree.setText(permDO.getModuleName());
topTree.put(permDO.getModuleName(), id);
trees.add(parentTree);
}
tree.setParentId(topTree.get(permDO.getModuleName()));
tree.setText(permDO.getName());
trees.add(tree);
}
// 默认顶级菜单为0根据数据库实际情况调整
Tree<DataPermDO> t = BuildTree.build(trees);
return t;
}
@Override
public Tree<DataPermDO> getTree(Long roleId) {
List<Tree<DataPermDO>> trees = new ArrayList<Tree<DataPermDO>>();
List<DataPermDO> permDOs = dataPermDao.list(new HashMap<>(16));
List<Long> permIds = roleDataPermDao.listPermIdByRoleId(roleId);
Map<String, String> topTree = new HashMap<>();
for (DataPermDO permDO : permDOs) {
Tree<DataPermDO> tree = new Tree<>();
tree.setId(permDO.getId().toString());
if (!topTree.containsKey(permDO.getModuleName())) {
Tree<DataPermDO> parentTree = new Tree<>();
String id = new IdWorker().nextId() + "";
parentTree.setId(id);
parentTree.setParentId(0 + "");
parentTree.setText(permDO.getModuleName());
topTree.put(permDO.getModuleName(), id);
trees.add(parentTree);
}
tree.setParentId(topTree.get(permDO.getModuleName()));
tree.setText(permDO.getName());
Map<String, Object> state = new HashMap<>(16);
if (permIds.contains(permDO.getId())) {
state.put("selected", true);
} else {
state.put("selected", false);
}
tree.setState(state);
trees.add(tree);
}
// 默认顶级菜单为0根据数据库实际情况调整
Tree<DataPermDO> t = BuildTree.build(trees);
return t;
}
}