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,17 +1,12 @@
package com.java2nb.system.domain; package com.java2nb.system.domain;
import java.io.Serializable;
import java.math.BigDecimal;
import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.java2nb.common.jsonserializer.LongToStringSerializer; import com.java2nb.common.jsonserializer.LongToStringSerializer;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.io.Serializable;
import java.util.Date;
import java.util.Objects;
/** /**
@ -22,153 +17,196 @@ import java.util.Date;
* @date 2019-11-25 11:40:03 * @date 2019-11-25 11:40:03
*/ */
public class DataPermDO implements Serializable { public class DataPermDO implements Serializable {
private static final long serialVersionUID = 1L;
private static final long serialVersionUID = 1L;
// //
//java中的long能表示的范围比js中number大,也就意味着部分数值在js中存不下(变成不准确的值) //java中的long能表示的范围比js中number大,也就意味着部分数值在js中存不下(变成不准确的值)
//所以通过序列化成字符串来解决 //所以通过序列化成字符串来解决
@JsonSerialize(using = LongToStringSerializer.class) @JsonSerialize(using = LongToStringSerializer.class)
private Long id; private Long id;
//权限名称 //权限名称
private String name; private String name;
//数据表名称 //数据表名称
private String tableName; private String tableName;
//所属模块 //所属模块
private String moduleName; private String moduleName;
//用户权限控制属性名 //用户权限控制属性名
private String crlAttrName; private String crlAttrName;
//数据表权限控制列名 //数据表权限控制列名
private String crlColumnName; private String crlColumnName;
//权限codeall_开头表示查看所有数据的权限sup_开头表示查看下级数据的权限own_开头表示查看本级数据的权限 //权限codeall_开头表示查看所有数据的权限sup_开头表示查看下级数据的权限own_开头表示查看本级数据的权限
private String permCode; private String permCode;
//排序 //排序
private Integer orderNum; private Integer orderNum;
//创建时间 //创建时间
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date gmtCreate; private Date gmtCreate;
//修改时间 //修改时间
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date gmtModified; private Date gmtModified;
/** /**
* 设置 * 设置
*/ */
public void setId(Long id) { public void setId(Long id) {
this.id = id; this.id = id;
} }
/**
* 获取 /**
*/ * 获取
public Long getId() { */
return id; public Long getId() {
} return id;
/** }
* 设置权限名称
*/ /**
public void setName(String name) { * 设置权限名称
this.name = name; */
} public void setName(String name) {
/** this.name = name;
* 获取权限名称 }
*/
public String getName() { /**
return name; * 获取权限名称
} */
/** public String getName() {
* 设置数据表名称 return name;
*/ }
public void setTableName(String tableName) {
this.tableName = tableName; /**
} * 设置数据表名称
/** */
* 获取数据表名称 public void setTableName(String tableName) {
*/ this.tableName = tableName;
public String getTableName() { }
return tableName;
} /**
/** * 获取数据表名称
* 设置所属模块 */
*/ public String getTableName() {
public void setModuleName(String moduleName) { return tableName;
this.moduleName = moduleName; }
}
/** /**
* 获取所属模块 * 设置所属模块
*/ */
public String getModuleName() { public void setModuleName(String moduleName) {
return moduleName; this.moduleName = moduleName;
} }
/**
* 设置用户权限控制属性名 /**
*/ * 获取所属模块
public void setCrlAttrName(String crlAttrName) { */
this.crlAttrName = crlAttrName; public String getModuleName() {
} return moduleName;
/** }
* 获取用户权限控制属性名
*/ /**
public String getCrlAttrName() { * 设置用户权限控制属性名
return crlAttrName; */
} public void setCrlAttrName(String crlAttrName) {
/** this.crlAttrName = crlAttrName;
* 设置数据表权限控制列名 }
*/
public void setCrlColumnName(String crlColumnName) { /**
this.crlColumnName = crlColumnName; * 获取用户权限控制属性名
} */
/** public String getCrlAttrName() {
* 获取数据表权限控制列名 return crlAttrName;
*/ }
public String getCrlColumnName() {
return crlColumnName; /**
} * 设置数据表权限控制列名
/** */
* 设置权限codeall_开头表示查看所有数据的权限sup_开头表示查看下级数据的权限own_开头表示查看本级数据的权限 public void setCrlColumnName(String crlColumnName) {
*/ this.crlColumnName = crlColumnName;
public void setPermCode(String permCode) { }
this.permCode = permCode;
} /**
/** * 获取数据表权限控制列名
* 获取权限codeall_开头表示查看所有数据的权限sup_开头表示查看下级数据的权限own_开头表示查看本级数据的权限 */
*/ public String getCrlColumnName() {
public String getPermCode() { return crlColumnName;
return permCode; }
}
/** /**
* 设置排序 * 设置权限codeall_开头表示查看所有数据的权限sup_开头表示查看下级数据的权限own_开头表示查看本级数据的权限
*/ */
public void setOrderNum(Integer orderNum) { public void setPermCode(String permCode) {
this.orderNum = orderNum; this.permCode = permCode;
} }
/**
* 获取排序 /**
*/ * 获取权限codeall_开头表示查看所有数据的权限sup_开头表示查看下级数据的权限own_开头表示查看本级数据的权限
public Integer getOrderNum() { */
return orderNum; public String getPermCode() {
} return permCode;
/** }
* 设置创建时间
*/ /**
public void setGmtCreate(Date gmtCreate) { * 设置排序
this.gmtCreate = gmtCreate; */
} public void setOrderNum(Integer orderNum) {
/** this.orderNum = orderNum;
* 获取创建时间 }
*/
public Date getGmtCreate() { /**
return gmtCreate; * 获取排序
} */
/** public Integer getOrderNum() {
* 设置修改时间 return orderNum;
*/ }
public void setGmtModified(Date gmtModified) {
this.gmtModified = gmtModified; /**
} * 设置创建时间
/** */
* 获取修改时间 public void setGmtCreate(Date gmtCreate) {
*/ this.gmtCreate = gmtCreate;
public Date getGmtModified() { }
return gmtModified;
} /**
* 获取创建时间
*/
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; package com.java2nb.system.service.impl;
import com.java2nb.common.domain.DictDO;
import com.java2nb.common.domain.Tree; import com.java2nb.common.domain.Tree;
import com.java2nb.common.utils.BuildTree; import com.java2nb.common.utils.BuildTree;
import com.java2nb.common.utils.IdWorker; import com.java2nb.common.utils.IdWorker;
import com.java2nb.system.dao.DataPermDao;
import com.java2nb.system.dao.RoleDataPermDao; 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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -12,119 +14,116 @@ import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
import com.java2nb.system.dao.DataPermDao;
import com.java2nb.system.domain.DataPermDO;
import com.java2nb.system.service.DataPermService;
@Service @Service
public class DataPermServiceImpl implements DataPermService { public class DataPermServiceImpl implements DataPermService {
@Autowired
private DataPermDao dataPermDao;
@Autowired @Autowired
private RoleDataPermDao roleDataPermDao; private DataPermDao dataPermDao;
@Override @Autowired
public DataPermDO get(Long id){ private RoleDataPermDao roleDataPermDao;
return dataPermDao.get(id);
}
@Override @Override
public List<DataPermDO> list(Map<String, Object> map){ public DataPermDO get(Long id) {
return dataPermDao.list(map); return dataPermDao.get(id);
} }
@Override @Override
public int count(Map<String, Object> map){ public List<DataPermDO> list(Map<String, Object> map) {
return dataPermDao.count(map); return dataPermDao.list(map);
} }
@Override @Override
public int save(DataPermDO dataPerm){ public int count(Map<String, Object> map) {
return dataPermDao.save(dataPerm); return dataPermDao.count(map);
} }
@Override @Override
public int update(DataPermDO dataPerm){ public int save(DataPermDO dataPerm) {
return dataPermDao.update(dataPerm); return dataPermDao.save(dataPerm);
} }
@Override @Override
public int remove(Long id){ public int update(DataPermDO dataPerm) {
return dataPermDao.remove(id); return dataPermDao.update(dataPerm);
} }
@Override @Override
public int batchRemove(Long[] ids){ public int remove(Long id) {
return dataPermDao.batchRemove(ids); return dataPermDao.remove(id);
} }
@Override @Override
public List<DataPermDO> listModuleName() { public int batchRemove(Long[] ids) {
return dataPermDao.listModuleName(); return dataPermDao.batchRemove(ids);
} }
@Override @Override
public Tree<DataPermDO> getTree() { public List<DataPermDO> listModuleName() {
List<Tree<DataPermDO>> trees = new ArrayList<Tree<DataPermDO>>(); return dataPermDao.listModuleName().stream().distinct().collect(Collectors.toList());
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 @Override
public Tree<DataPermDO> getTree(Long roleId) { public Tree<DataPermDO> getTree() {
List<Tree<DataPermDO>> trees = new ArrayList<Tree<DataPermDO>>(); List<Tree<DataPermDO>> trees = new ArrayList<Tree<DataPermDO>>();
List<DataPermDO> permDOs = dataPermDao.list(new HashMap<>(16)); List<DataPermDO> permDOs = dataPermDao.list(new HashMap<>(16));
List<Long> permIds = roleDataPermDao.listPermIdByRoleId(roleId); Map<String, String> topTree = new HashMap<>();
Map<String,String> topTree = new HashMap<>(); for (DataPermDO permDO : permDOs) {
for (DataPermDO permDO : permDOs) { Tree<DataPermDO> tree = new Tree<>();
Tree<DataPermDO> tree = new Tree<>(); tree.setId(permDO.getId().toString());
tree.setId(permDO.getId().toString()); if (!topTree.containsKey(permDO.getModuleName())) {
if(!topTree.containsKey(permDO.getModuleName())){ Tree<DataPermDO> parentTree = new Tree<>();
Tree<DataPermDO> parentTree = new Tree<>(); String id = new IdWorker().nextId() + "";
String id = new IdWorker().nextId()+""; parentTree.setId(id);
parentTree.setId(id); parentTree.setParentId(0 + "");
parentTree.setParentId(0+""); parentTree.setText(permDO.getModuleName());
parentTree.setText(permDO.getModuleName()); topTree.put(permDO.getModuleName(), id);
topTree.put(permDO.getModuleName(),id); trees.add(parentTree);
trees.add(parentTree); }
} tree.setParentId(topTree.get(permDO.getModuleName()));
tree.setParentId(topTree.get(permDO.getModuleName())); tree.setText(permDO.getName());
tree.setText(permDO.getName()); trees.add(tree);
Map<String, Object> state = new HashMap<>(16); }
if (permIds.contains(permDO.getId())) { // 默认顶级菜单为0根据数据库实际情况调整
state.put("selected", true); Tree<DataPermDO> t = BuildTree.build(trees);
} else { return t;
state.put("selected", false); }
}
tree.setState(state); @Override
trees.add(tree); public Tree<DataPermDO> getTree(Long roleId) {
} List<Tree<DataPermDO>> trees = new ArrayList<Tree<DataPermDO>>();
// 默认顶级菜单为0根据数据库实际情况调整 List<DataPermDO> permDOs = dataPermDao.list(new HashMap<>(16));
Tree<DataPermDO> t = BuildTree.build(trees); List<Long> permIds = roleDataPermDao.listPermIdByRoleId(roleId);
return t; 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;
}
} }