Commit dc3f9bf6 by lanmw

add dept to fliter personalTag

parent a431a17e
......@@ -35,6 +35,7 @@ public class TagCtrl {
@RequestBody Tag tag) throws Exception {
String userName = UserInfoUtils.getUserName();
tag.setCreator(userName);
tag.setDept(userName);//这里暂时用userName代替,后面从session取出
return tagService.addOrUpdateTag(parentId, tag, userName);
}
......@@ -63,21 +64,24 @@ public class TagCtrl {
@ApiOperation(value = "查询维度标签树", notes = "查询维度标签树")
@GetMapping(value = "/queryDimensionTagAsTree")
public JsonNode[] queryDimensionTagAsTree(@RequestParam(value = "parentId", required = false) String parentId) throws TagNotExistException {
return tagService.queryDimensionTagAsTree(parentId);
String dept = UserInfoUtils.getUserName();
return tagService.queryDimensionTagAsTree(dept, parentId);
}
@ApiOperation(value = "查询个人标签树", notes = "查询个人标签树")
@GetMapping(value = "/queryPersonalTagAsTree")
public JsonNode[] queryPersonalTagAsTree(@RequestParam(value = "parentId", required = false) String parentId) throws TagNotExistException {
String userName = UserInfoUtils.getUserName();
return tagService.queryPersonalTagAsTree(parentId, userName);
String dept = userName;
return tagService.queryPersonalTagAsTree(parentId, userName, dept);
}
@ApiOperation(value = "查询个人标签树不包括分享的标签", notes = "查询个人标签树不包括分享的标签")
@GetMapping(value = "/queryPersonalTagExcludeOpenTypeAsTree")
public JsonNode[] queryPersonalTagExcludeOpenTypeAsTree(@RequestParam(value = "parentId", required = false) String parentId) throws TagNotExistException {
String userName = UserInfoUtils.getUserName();
return tagService.queryPersonalTagExcludeOpenTypeAsTree(parentId, userName);
String dept = userName;
return tagService.queryPersonalTagExcludeOpenTypeAsTree(parentId, userName, dept);
}
@ApiOperation(value = "搜索系統标签", notes = "搜索系統标签")
......@@ -105,7 +109,8 @@ public class TagCtrl {
@RequestParam("pageNo") Integer pageNo,
@RequestParam("pageSize") Integer pageSize) {
String userName = UserInfoUtils.getUserName();
return tagService.searchPersonalDimensionTagByPage(userName, keyword, path, domain, new Page(pageSize, pageNo));
String dept = userName;
return tagService.searchPersonalDimensionTagByPage(userName, dept, keyword, path, domain, new Page(pageSize, pageNo));
}
@ApiOperation(value = "搜索个人标签", notes = "搜索个人标签")
......@@ -116,7 +121,8 @@ public class TagCtrl {
@RequestParam("pageNo") Integer pageNo,
@RequestParam("pageSize") Integer pageSize) {
String userName = UserInfoUtils.getUserName();
return tagService.searchPersonalTagByPage(userName, keyword, path, domain, new Page(pageSize, pageNo));
String dept = userName;
return tagService.searchPersonalTagByPage(userName, dept, keyword, path, domain, new Page(pageSize, pageNo));
}
@ApiOperation(value = "分享标签", notes = "分享标签")
......
......@@ -24,5 +24,11 @@ public class RestExceptionHandler extends ResponseEntityExceptionHandler {
return new ResponseEntity<>(apiError, apiError.getStatus());
}
@ExceptionHandler(TagException.class)
protected ResponseEntity<Object> handlDirectoryException(Exception ex, WebRequest request){
logger.error(ex.getMessage(), ex);
return buildResponseEntity(new ApiError(INTERNAL_SERVER_ERROR, ex.getMessage(), ex, ex.getMessage()));
}
}
package com.keymobile.tagmanager.exception;
public class TagDuplicateException extends Exception{
public class TagDuplicateException extends TagException{
/**
*
......
package com.keymobile.tagmanager.exception;
public class TagNotExistException extends Exception{
public class TagNotExistException extends TagException{
private static final long serialVersionUID = 1L;
......
......@@ -49,6 +49,7 @@ public class Tag implements Serializable, IExcelModel, IExcelDataModel{
private String isOpen = Constants.TAG_CLOSE_STATUS; //0 不公开, 1, 公开
private Integer domain;
private String dimensionType = Constants.TAG_DIMENSION_FALSE;//0 非维度标签, 1 维度标签
private String dept;// 部门
private String importId;//记录导入的Id,后面撤销用到
public Tag() {}
......@@ -202,6 +203,14 @@ public class Tag implements Serializable, IExcelModel, IExcelDataModel{
public String getIdPath() {
return idPath;
}
public void setDept(String dept) {
this.dept = dept;
}
public String getDept() {
return dept;
}
@Override
public String toString() {
......
......@@ -74,6 +74,7 @@ public class TagService {
private void changeNameToAvoidConflict(Tag tag, String userName) {
Tag t = mongoOperations.findOne(Query.query(Criteria.where("path").is(tag.getPath())
.and("dept").is(tag.getDept())
.and("creator").ne(userName)), Tag.class);
if (t != null) {
String changeName = String.format("%s(%s)", t.getName(), userName);
......@@ -85,7 +86,7 @@ public class TagService {
private Criteria createRelationNamepathCriteria(String userName, Tag origin) {
if (Constants.TAG_DIMENSION_TRUE.equals(origin.getDimensionType())) {
return Criteria.where("path").regex("^" + origin.getPath() + Constants.TAG_PATH_SEPARATOR);
return Criteria.where("path").regex("^" + origin.getPath() + Constants.TAG_PATH_SEPARATOR).and("dept").is(origin.getDept());
}
return Criteria.where("path").regex("^" + origin.getPath() + Constants.TAG_PATH_SEPARATOR)
.and("creator").is(userName);
......@@ -107,14 +108,14 @@ public class TagService {
Tag t = mongoOperations.findOne(Query.query(Criteria.where("path").is(tag.getPath())
.and("creator").is(userName)), Tag.class);
if (t != null && !t.getId().equals(tag.getId()))
throw new TagDuplicateException("tag [" + tag.getName() + "] is already exist in target!, userName is [" + userName + "]");
throw new TagDuplicateException("标签 [" + tag.getName() + "] 已经存在!");
}
public JsonNode[] queryPersonalTagAsTree(String parentId, String userName) throws TagNotExistException {
public JsonNode[] queryPersonalTagAsTree(String parentId, String userName, String dept) throws TagNotExistException {
List<Tag> tags = new ArrayList<>();
if (StringUtils.isEmpty(parentId)) {
tags = mongoOperations.find(createPersonalTagQuery(userName), Tag.class);
tags = mongoOperations.find(createPersonalTagQuery(userName, dept), Tag.class);
} else {
Tag parentTag = getTagById(parentId);
tags = getPersonSubTag(parentTag, userName);
......@@ -132,32 +133,41 @@ public class TagService {
return new JsonNode[] {};
}
private Query createPersonalTagQuery(String userName, Criteria... serachCriterias) {
private Query createPersonalTagQuery(String userName, String dept, Criteria... serachCriterias) {
return Query.query(
createPersonalTagCriteria(userName))
createPersonalTagCriteria(userName, dept, null))
.with(Sort.by(getDefaultTagOrders()));
}
private Criteria createPersonalTagCriteria(String userName) {
return Criteria.where("tagType").is(Constants.TAG_PERSONAL_TYPE)
.orOperator(
private Criteria createPersonalTagCriteria(String userName, String dept, String path) {
Criteria criteria = Criteria.where("tagType").is(Constants.TAG_PERSONAL_TYPE)
.and("dept").is(dept);
if (StringUtils.isNotBlank(path)) {
criteria = criteria.and("path").regex("^"+path);;
}
return criteria.orOperator(
Criteria.where("dimensionType").is(Constants.TAG_DIMENSION_TRUE),
Criteria.where("isOpen").is(Constants.TAG_OPEN_STATUS),
Criteria.where("creator").is(userName));
}
private Criteria createSystemTagCriteria() {
return Criteria.where("tagType").is(Constants.TAG_SYSTEM_TYPE);
private Criteria createSystemTagCriteria(String path) {
Criteria criteria = Criteria.where("tagType").is(Constants.TAG_SYSTEM_TYPE);
if (StringUtils.isNotBlank(path)) {
return criteria.and("path").regex("^"+path);
}
return criteria;
}
private Criteria createPersonalDimensionTagCriteria(String userName) {
private Criteria createPersonalDimensionTagCriteria(String userName, String dept) {
return Criteria.where("tagType").is(Constants.TAG_PERSONAL_TYPE)
.and("dimensionType").is(Constants.TAG_DIMENSION_TRUE);
.and("dept").is(dept).and("dimensionType").is(Constants.TAG_DIMENSION_TRUE);
}
private Query createPersonalExcludeOpenTypeTagQuery(String userName) {
private Query createPersonalExcludeOpenTypeTagQuery(String userName, String dept) {
return Query.query(Criteria.where("tagType").is(Constants.TAG_PERSONAL_TYPE)
.and("dept").is(dept)
.orOperator(
Criteria.where("dimensionType").is(Constants.TAG_DIMENSION_TRUE),
Criteria.where("creator").is(userName)))
......@@ -184,14 +194,11 @@ public class TagService {
}
public Page searchPersonalTagByPage(String userName, String keyword, String path, Integer domain, Page page) {
Criteria andCriterias = createPersonalTagCriteria(userName);
public Page searchPersonalTagByPage(String userName, String dept, String keyword, String path, Integer domain, Page page) {
Criteria andCriterias = createPersonalTagCriteria(userName, dept, path);
if (StringUtils.isNotBlank(keyword) && !"*".equals(keyword)) {
andCriterias.andOperator(createKeywordRegexQuery(Arrays.asList("name", "nameEn", "desc"), keyword));
}
if (StringUtils.isNotBlank(path)) {
andCriterias.andOperator(createPathRegexQuery(path));
}
Query q = new Query(andCriterias);
q.skip(page.getOffset());
q.limit(page.getPageSize());
......@@ -238,13 +245,10 @@ public class TagService {
}
public Page searchSystemTagByPage(String userName, String keyword, String path, Integer domain, Page page) {
Criteria andCriterias = createSystemTagCriteria();
Criteria andCriterias = createSystemTagCriteria(path);
if (StringUtils.isNotBlank(keyword) && !"*".equals(keyword)) {
andCriterias.andOperator(createKeywordRegexQuery(Arrays.asList("name", "nameEn", "desc"), keyword));
}
if (StringUtils.isNotBlank(path)) {
andCriterias.andOperator(createPathRegexQuery(path));
}
Query q = createPageQuery(page, andCriterias);
List<Tag> tags = mongoOperations.find(q, Tag.class);
long count = mongoOperations.count(q, Tag.class);
......@@ -307,10 +311,10 @@ public class TagService {
tagRepository.saveAll(tags);
}
public JsonNode[] queryDimensionTagAsTree(String parentId) throws TagNotExistException {
public JsonNode[] queryDimensionTagAsTree(String dept, String parentId) throws TagNotExistException {
List<Tag> tags = new ArrayList<>();
if (StringUtils.isEmpty(parentId)) {
tags = mongoOperations.find(createDimensionTagQuery(), Tag.class);
tags = mongoOperations.find(createDimensionTagQuery(dept), Tag.class);
} else {
Tag parentTag = getTagById(parentId);
tags = getDimensionSubTag(parentTag);
......@@ -331,22 +335,24 @@ public class TagService {
private List<Tag> getDimensionSubTag(Tag parentTag) {
List<Tag> dirs = mongoOperations.find(new Query().addCriteria(Criteria.where("path")
.regex("^"+parentTag.getPath() + Constants.TAG_PATH_SEPARATOR)
.and("dimensionType").is(Constants.TAG_DIMENSION_TRUE))
.and("dimensionType").is(Constants.TAG_DIMENSION_TRUE)
.and("dept").is(parentTag.getDept()))
.with(Sort.by(getDefaultTagOrders())), Tag.class);
dirs.add(parentTag);
return dirs;
}
private Query createDimensionTagQuery() {
private Query createDimensionTagQuery(String dept) {
return Query.query(Criteria.where("dimensionType").is(Constants.TAG_DIMENSION_TRUE)
.and("tagType").is(Constants.TAG_PERSONAL_TYPE))
.and("tagType").is(Constants.TAG_PERSONAL_TYPE)
.and("dept").is(dept))
.with(Sort.by(getDefaultTagOrders()));
}
public JsonNode[] queryPersonalTagExcludeOpenTypeAsTree(String parentId, String userName) throws TagNotExistException {
public JsonNode[] queryPersonalTagExcludeOpenTypeAsTree(String parentId, String userName, String dept) throws TagNotExistException {
List<Tag> tags = new ArrayList<>();
if (StringUtils.isEmpty(parentId)) {
tags = mongoOperations.find(createPersonalExcludeOpenTypeTagQuery(userName), Tag.class);
tags = mongoOperations.find(createPersonalExcludeOpenTypeTagQuery(userName, dept), Tag.class);
} else {
Tag parentTag = getTagById(parentId);
tags = getPersonSubTag(parentTag, userName);
......@@ -365,18 +371,13 @@ public class TagService {
}
public Page searchPersonalDimensionTagByPage(String userName, String keyword, String path, Integer domain, Page page) {
Criteria andCriterias = createPersonalDimensionTagCriteria(userName);
public Page searchPersonalDimensionTagByPage(String userName, String dept, String keyword, String path, Integer domain, Page page) {
Criteria andCriterias = createPersonalDimensionTagCriteria(userName, dept);
if (StringUtils.isNotBlank(keyword) && !"*".equals(keyword)) {
andCriterias.andOperator(createKeywordRegexQuery(Arrays.asList("name", "nameEn", "desc"), keyword));
}
if (StringUtils.isNotBlank(path)) {
andCriterias.andOperator(createPathRegexQuery(path));
}
Query q = createPageQuery(page, andCriterias);
List<Tag> tags = mongoOperations
.find(q, Tag.class);
List<Tag> tags = mongoOperations.find(q, Tag.class);
long count = mongoOperations.count(q, Tag.class);
page.setData(decoratorToExtTag(tags, userName));
page.setTotal(count);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment