1 springboot整合solr的maven配置如下
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-solr</artifactId></dependency>
2 在application.yml配置文件中配置solr的Host地址
spring:data:solr:host: http://localhost:8081/solr/demo_core
3 准备实体类
这个实体类就是solr服务器的配置文件配置的字段。@Field注解是映射作用,Java实体类与solr索引的映射。
package com.datago.microservice.kb.server.entity;import com.fasterxml.jackson.databind.annotation.JsonSerialize;import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;import io.swagger.annotations.ApiModelProperty;import lombok.Data;import org.apache.solr.client.solrj.beans.Field;import java.io.Serializable;/*** @author xq* @date 2022/03/22 16:33* @describe 全文检索知识库*/@Datapublic class Knowledge implements Serializable {private static final long serialVersionUID = 1L;@Field("id")private String id;/*** 标题*/@ApiModelProperty(value = "标题")@Field("title")private String title;/*** 分类ID*/@ApiModelProperty(value = "分类ID")@JsonSerialize(using = ToStringSerializer.class)@Field("category_id")private String categoryId;/*** 内容*/@ApiModelProperty(value = "内容")@Field("content")private String content;/*** 是否置顶,0-不置顶,1-置顶*/@ApiModelProperty(value = "是否置顶,0-不置顶,1-置顶")@Field("is_top")private Integer isTop;/*** 附件ID集合*/@ApiModelProperty(value = "附件ID集合")@Field("attach_ids")private String attachIds;/*** 标签IDS*/@ApiModelProperty(value = "标签IDS")@Field("label_ids")private String labelIds;/*** 可见范围*/@ApiModelProperty(value = "可见范围")@Field("visible_range")private String visibleRange;/*** 发布时间*/@ApiModelProperty(value = "发布时间")@Field("release_time")private String releaseTime;/*** 关联模块:(1.元数据、2.数据标准、3.数据质量、4.需求管理)*/@ApiModelProperty("关联模块:(1.元数据、2.数据标准、3.数据质量、4.需求管理)")@Field("association_module")private String associationModule;@ApiModelProperty("创建人")@Field("create_user")private String createUser;@ApiModelProperty("业务状态")@Field("status")private Integer status;/*** 类别祖籍列表*/@ApiModelProperty(value = "是否删除")@Field("is_deleted")private Integer isDeleted;/*** 创建人名称*/@ApiModelProperty(value = "创建人名称")@Field("create_user_name")private String createUserName;/*** 标签集合*/@ApiModelProperty(value = "标签集合")@Field("label")private String label;/*** 标签名集合*/@ApiModelProperty(value = "标签名集合")@Field("label_name")private String labelName;/*** 类别名称*/@ApiModelProperty(value = "类别名称")@Field("category_name")private String categoryName;/*** 类别祖籍列表*/@ApiModelProperty(value = "类别祖籍列表")@Field("category_ancestors")private String categoryAncestors;/*** 置顶时间*/@ApiModelProperty(value = "置顶时间")@Field("top_time")private String topTime;/*** 创建部门*/@ApiModelProperty(value = "创建部门")@Field("create_dept")private String createDept;/*** 创建部门名称*/@ApiModelProperty(value = "创建部门名称")@Field("create_dept_name")private String createDeptName;/*** 创建时间*/@ApiModelProperty(value = "创建时间")@Field("create_time")private String createTime;/*** 修改时间*/@ApiModelProperty(value = "修改时间")@Field("update_time")private String updateTime;/*** 修改人名称*/@ApiModelProperty(value = "修改人名称")@Field("update_user")private String updateUser;/*** 修改人名称*/@ApiModelProperty(value = "修改人名称")@Field("update_user_name")private String updateUserName;/*** 关联模块:(1.元数据、2.数据标准、3.数据质量、4.需求管理)*/@ApiModelProperty("关联模块:(1.元数据、2.数据标准、3.数据质量、4.需求管理)")@Field("association_module_name")private String associationModuleName;/*** 是否收藏,0-未收藏,1-已收藏*/@ApiModelProperty(value = "是否收藏,0-未收藏,1-已收藏")@Field("is_collect")private Integer isCollect;/*** 平均分*/@ApiModelProperty(value = "平均分")@Field("avg_score")private Double avgScore;@ApiModelProperty(value = "内容")@Field("content_text")private String contentText;}
4 注入SolrClient对象
用法示例如下
/*** solr服务*/protected SolrClient solrClient;@Autowiredpublic void setSolrClient(SolrClient solrClient) {this.solrClient = solrClient;}
4.1 springboot添加solr索引库(给solr数据库添加数据)
public void addData() throws Exception{Products products=new Products();products.setPid("557");products.setPname("可爱的胖");products.setCatalogName("京东");products.setPrice(80.90);products.setDescription("很乖的宠物");products.setPicture("test.jpg");UpdateResponse updateResponse = solrClient.addBean(products);solrClient.commit();System.out.println("添加成功");}
4.2 springboot修改和上述的添加一样,有就修改,没有就添加
4.3 springboot删除solr索引库
public void delData() throws Exception{solrClient.deleteById("890");solrClient.commit();// solrClient.deleteByQuery("*:*");//先查询然后删除,*:* 这里查询条件是全部,因此执行之后会清空索引库System.out.println("删除成功");}
4.4 springboot查询solr索引库的数据
public void select() throws Exception{SolrQuery solrQuery=new SolrQuery("*:*");//查询所有QueryResponse query = solrClient.query(solrQuery);long numFound = query.getResults().getNumFound();System.out.println("总记录数:"+numFound);List<Products> beans = query.getBeans(Products.class);for(Products product:beans){System.out.println(product.getPid()+" "+product.getPname()+" "+product.getDescription());}}
4.5 模仿京东条件筛选搜索
public void moreSelect() throws Exception{SolrQuery solrQuery=new SolrQuery();//qsolrQuery.set("q","prod_pname:衣服");//fq:过滤查询solrQuery.setFilterQueries("prod_catalog_name:京东");// 多条件过滤// solrQuery.setFilterQueries("prod_catalog_name:京东 or prod_catalog_name:淘宝");//价格过滤// solrQuery.addFilterQuery("prod_price:[10 TO *]");//排序sort// solrQuery.addSort("prod_price",SolrQuery.ORDER.asc);//分页(规则和limit一样)solrQuery.setStart(0);solrQuery.setRows(5);//回显(想查出来哪几个字段)// solrQuery.setFields("prod_name","pid");//高亮配置solrQuery.setHighlight(true);//启动高亮solrQuery.addHighlightField("prod_pname");//设置域名称solrQuery.setHighlightSimplePre("<font color='red'>");solrQuery.setHighlightSimplePost("</font>");QueryResponse query = solrClient.query(solrQuery);//得到高亮数据Map<String, Map<String, List<String>>> highlighting = query.getHighlighting();long numFound = query.getResults().getNumFound();System.out.println("总记录数:"+numFound);List<Products> beans = query.getBeans(Products.class);for(Products product:beans){Map<String, List<String>> stringListMap = highlighting.get(product.getPid());List<String> prod_pname = stringListMap.get("prod_pname");String pname = prod_pname.get(0);product.setPname(pname);//把名称重新赋值为高亮样式的名称System.out.println(product.getPid()+" "+product.getPname()+" "+product.getCatalogName());}}
5 Solr工具
5.1 solr service
package com.datago.microservice.kb.server.service;import com.datago.microservice.kb.server.enums.SolrQueryEnum;import org.apache.solr.client.solrj.SolrQuery;import org.apache.solr.client.solrj.SolrServerException;import org.apache.solr.client.solrj.response.QueryResponse;import org.apache.solr.common.SolrInputDocument;import java.io.IOException;import java.util.List;import java.util.Map;/*** @author xq* @date 2022/02/16 11:24* @describe*/public interface BaseSolrService<T> {String OR = " OR ";String AND = " AND ";String REGEX = "%s";String KEY = "id";String KEY_FIELD = "id:";String DOCS = "docs";String RESPONSE = "response";String START = "start";String NUMBER_FOUND = "numberFound";String ROWS = "rows";String OPEN = "(";String CLOSE = ")";String IS_HIGH = "isHigh";/*** 插入** @param document 数据导入* @throws IOException IO异常* @throws SolrServerException solr服务异常*/void insert(SolrInputDocument document) throws IOException, SolrServerException;/*** 插入** @param core 核心* @param document 数据导入* @throws IOException IO异常* @throws SolrServerException solr服务异常*/void insert(String core, SolrInputDocument document) throws IOException, SolrServerException;/*** 插入** @param core 核心* @param document 数据导入* @throws IOException IO异常* @throws SolrServerException solr服务异常*/void insertBatch(String core, List<SolrInputDocument> document) throws IOException, SolrServerException;/*** 插入** @param core 核心* @param t 数据实体* @throws IOException IO异常* @throws SolrServerException solr服务异常*/void insertBean(String core, T t) throws IOException, SolrServerException;/*** 修改** @param t 数据实体* @throws IOException IO异常* @throws SolrServerException solr服务异常*/void update(T t) throws IOException, SolrServerException;/*** 删除** @param query 条件* @throws IOException IO异常* @throws SolrServerException solr服务异常*/void delete(String query) throws IOException, SolrServerException;/*** 根据条件删除** @param core 核心* @param query 条件* @throws IOException IO异常* @throws SolrServerException solr服务异常*/void delete(String core, String query) throws IOException, SolrServerException;/*** 删除** @param core 核心* @param query 条件* @throws IOException IO异常* @throws SolrServerException solr服务异常*/void delete(String core, List<String> query) throws IOException, SolrServerException;/*** 查询(返回指定类型)** @param collection 核心* @param solrQuery 条件* @param clazz 对象* @return List* @throws IOException IO异常* @throws SolrServerException solr服务异常*/List<T> select(String collection, SolrQuery solrQuery, Class<T> clazz) throws IOException, SolrServerException;/*** 查询** @param collection 核心* @param solrQuery 条件* @return QueryResponse* @throws IOException IO异常* @throws SolrServerException solr服务异常*/QueryResponse select(String collection, SolrQuery solrQuery) throws IOException, SolrServerException;/*** 查询(支持高亮设置)** @param collection 核心* @param query 条件* @param field 查询列* @param key 主键字段名* @param clazz 对象* @param isHigh 是否高亮显示* @return List* @throws IOException IO异常* @throws SolrServerException solr服务异常*/List<T> select(String collection, SolrQuery query, String[] field, String key, Class<T> clazz, Boolean isHigh) throws SolrServerException, IOException;/*** 查询(支持高亮显示)** @param collection 核心* @param query 条件* @param field 查询列* @param key 主键字段名* @param clazz 对象* @param isHigh 是否高亮显示* @return Map* @throws IOException IO异常* @throws SolrServerException solr服务异常*/Map<String, Object> selectMap(String collection, SolrQuery query, String[] field, String key, Class<T> clazz, Boolean isHigh) throws SolrServerException, IOException;/*** 查询** @param collection 核心* @param keyword 条件* @param ids 准备加入的条件* @param conditionKey 准备加入的条件字段名* @param current 开始下标* @param size 索引行数* @param field 高亮字段* @param key 主键* @param clazz 对象* @param isHigh 是否高亮* @param isAutoPermission 是否权限过滤* @return List* @throws IOException IO异常* @throws SolrServerException solr服务异常*/List<T> select(String collection, String keyword, List<String> ids, String conditionKey, Integer current, Integer size, String[] field, String key, Class<T> clazz, Boolean isHigh, Boolean isAutoPermission) throws SolrServerException, IOException;/*** 查询** @param collection 核心* @param keyword 条件* @param fq 过滤条件* @param ids 准备加入的条件* @param conditionKey 准备加入的条件字段名* @param current 开始下标* @param size 索引行数* @param field 高亮字段* @param key 主键* @param clazz 对象* @param isHigh 是否高亮* @param isAutoPermission 是否权限过滤* @return List* @throws IOException IO异常* @throws SolrServerException solr服务异常*/List<T> select(String collection, String keyword, String fq, List<String> ids, String conditionKey, Integer current, Integer size, String[] field, String key, Class<T> clazz, Boolean isHigh, Boolean isAutoPermission) throws SolrServerException, IOException;/*** 查询** @param collection 核心* @param keyword 条件* @param ids 准备加入的条件* @param conditionKey 准备加入的条件字段名* @param current 开始下标* @param size 索引行数* @param field 高亮字段* @param key 主键* @param clazz 对象* @param isHigh 是否高亮显示* @param isAutoPermission 是否权限过滤* @param sort 排序* @param queryEnum 权限配置方式* @return Map* @throws IOException IO异常* @throws SolrServerException solr服务异常*/Map<String, Object> selectMap(String collection, String keyword, List<String> ids, String conditionKey,Integer current, Integer size, String[] field, String key, Class<T> clazz,Boolean isHigh, Boolean isAutoPermission, String sort, SolrQueryEnum queryEnum) throws SolrServerException, IOException;/*** 查询** @param collection 核心* @param keyword 条件* @param fq 过滤条件* @param ids 准备加入的条件* @param conditionKey 准备加入的条件字段名* @param current 开始下标* @param size 索引行数* @param field 高亮字段* @param key 主键* @param clazz 对象* @param isHigh 是否高亮显示* @param isAutoPermission 是否权限过滤* @param sort 排序* @param queryEnum 权限配置方式* @return Map* @throws IOException IO异常* @throws SolrServerException solr服务异常*/Map<String, Object> selectMap(String collection, String keyword, String fq, List<String> ids, String conditionKey,Integer current, Integer size, String[] field, String key, Class<T> clazz,Boolean isHigh, Boolean isAutoPermission, String sort, SolrQueryEnum queryEnum) throws SolrServerException, IOException;/*** 生成条件** @param keyword 条件* @param ids 多值条件* @param conditionKey 拼接的条件key* @param current 分页参数* @param size 分页参数* @param field 高亮字段* @param isAutoPermission 是否附带权限* @param sort 排序* @param queryEnum 权限配置方式* @param isHigh 是否高亮* @return SolrQuery*/SolrQuery getQuery(String keyword, List<String> ids, String conditionKey, Integer current, Integer size,String[] field, Boolean isAutoPermission, String sort, SolrQueryEnum queryEnum, Boolean isHigh);/*** 生成条件** @param keyword 条件* @param fq 过滤条件* @param ids 多值条件* @param conditionKey 拼接的条件key* @param current 分页参数* @param size 分页参数* @param field 高亮字段* @param isAutoPermission 是否附带权限* @param sort 排序* @param queryEnum 权限配置方式* @param isHigh 是否高亮* @return SolrQuery*/SolrQuery getQuery(String keyword, String fq, List<String> ids, String conditionKey, Integer current, Integer size,String[] field, Boolean isAutoPermission, String sort, SolrQueryEnum queryEnum, Boolean isHigh);/*** 日志输出** @param solrQuery 条件*/void printQuery(SolrQuery solrQuery);/*** 增加权限** @param keyword 条件* @param queryEnum 权限配置方式* @return String*/String addPermission(String keyword, SolrQueryEnum queryEnum);}
5.2 solr service实现类
package com.datago.microservice.kb.server.service.impl;import cn.hutool.core.util.ObjectUtil;import cn.hutool.json.JSONUtil;import com.datago.microservice.kb.common.utils.Func;import com.datago.microservice.kb.server.enums.ParamEnum;import com.datago.microservice.kb.server.enums.SolrQueryEnum;import com.datago.microservice.kb.server.service.BaseSolrService;import com.datago.microservice.kb.server.utils.cache.ParamCache;import com.datago.microservice.kb.server.utils.common.SolrUtil;import com.datago.microservice.kb.server.utils.common.TokenUtil;import com.datago.microservice.kb.server.vo.SysUserVO;import org.apache.solr.client.solrj.SolrClient;import org.apache.solr.client.solrj.SolrQuery;import org.apache.solr.client.solrj.SolrRequest;import org.apache.solr.client.solrj.SolrServerException;import org.apache.solr.client.solrj.response.QueryResponse;import org.apache.solr.common.SolrDocumentList;import org.apache.solr.common.SolrInputDocument;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.io.IOException;import java.util.HashMap;import java.util.List;import java.util.Map;/*** @author xq* @date 2022/02/16 14:57* @describe*/@Servicepublic class BaseSolrServiceImpl<T> implements BaseSolrService<T> {private static final Logger log = LoggerFactory.getLogger(BaseSolrService.class);/*** solr服务*/protected SolrClient solrClient;@Autowiredpublic void setSolrClient(SolrClient solrClient) {this.solrClient = solrClient;}@Overridepublic void insert(SolrInputDocument document) throws IOException, SolrServerException {solrClient.add(document);// 提交solrClient.commit(true, true);}@Overridepublic void insert(String core, SolrInputDocument document) throws IOException, SolrServerException {solrClient.add(core, document);// 提交solrClient.commit(core, true, true);}@Overridepublic void insertBatch(String core, List<SolrInputDocument> document) throws IOException, SolrServerException {solrClient.add(core, document);// 提交solrClient.commit(core, true, true);}@Overridepublic void insertBean(String core, T t) throws IOException, SolrServerException {solrClient.addBean(core, t);// 提交solrClient.commit(core, true, true);}@Overridepublic void update(T t) throws IOException, SolrServerException {solrClient.addBean(t);// 提交solrClient.commit(true, true);}@Overridepublic void delete(String query) throws IOException, SolrServerException {solrClient.deleteByQuery(query);// 提交solrClient.commit(true, true);}@Overridepublic void delete(String core, String query) throws IOException, SolrServerException {solrClient.deleteByQuery(core, query);// 提交solrClient.commit(core, true, true);}@Overridepublic void delete(String core, List<String> query) throws IOException, SolrServerException {solrClient.deleteById(core, query);solrClient.commit(core, true, true);}@Overridepublic List<T> select(String collection, SolrQuery solrQuery, Class<T> clazz) throws IOException, SolrServerException {// 查询QueryResponse queryResponse = solrClient.query(collection, solrQuery, SolrRequest.METHOD.POST);// 将查询结果转换指定元素类型的集合return queryResponse.getBeans(clazz);}@Overridepublic QueryResponse select(String collection, SolrQuery solrQuery) throws IOException, SolrServerException {return solrClient.query(collection, solrQuery,SolrRequest.METHOD.POST);}@Overridepublic List<T> select(String collection, SolrQuery query, String[] field, String key, Class<T> clazz, Boolean isHigh) throws SolrServerException, IOException {QueryResponse response = select(collection, query);// 获得高亮的结果Map<String, Map<String, List<String>>> highlighting = response.getHighlighting();List<T> list = response.getBeans(clazz);// 设置高亮内容SolrUtil.setHlContent(list, field, key, highlighting, isHigh);return list;}@Overridepublic Map<String, Object> selectMap(String collection, SolrQuery query, String[] field, String key, Class<T> clazz, Boolean isHigh) throws SolrServerException, IOException {QueryResponse response = select(collection, query);// 获得高亮的结果Map<String, Map<String, List<String>>> highlighting = response.getHighlighting();Map<String, Object> map = new HashMap<>(8);// 设置高亮内容List<T> list = response.getBeans(clazz);SolrDocumentList results = response.getResults();SolrUtil.setHlContent(list, field, key, highlighting, isHigh);// 设置分页属性map.put(ROWS, query.getRows());map.put(START, results.getStart());map.put(NUMBER_FOUND, results.getNumFound());map.put(DOCS, list);return map;}@Overridepublic List<T> select(String collection, String keyword, List<String> ids, String conditionKey, Integer current, Integer size,String[] field, String key, Class<T> clazz, Boolean isHigh, Boolean isAutoPermission) throws SolrServerException, IOException {return select(collection, keyword, null, ids, conditionKey, current, size, field, key, clazz, isHigh, isAutoPermission);}@Overridepublic List<T> select(String collection, String keyword, String fq, List<String> ids, String conditionKey, Integer current, Integer size, String[] field, String key, Class<T> clazz, Boolean isHigh, Boolean isAutoPermission) throws SolrServerException, IOException {// 组织条件SolrQuery query = getQuery(keyword, fq, ids, conditionKey, current, size, field, isAutoPermission, null, SolrQueryEnum.QUERY, isHigh);return select(collection, query, field, key, clazz, isHigh);}@Overridepublic Map<String, Object> selectMap(String collection, String keyword, List<String> ids, String conditionKey,Integer current, Integer size, String[] field, String key, Class<T> clazz,Boolean isHigh, Boolean isAutoPermission, String sort, SolrQueryEnum queryEnum) throws SolrServerException, IOException {return selectMap(collection, keyword, null, ids, conditionKey, current, size, field, key, clazz, isHigh, isAutoPermission, sort, queryEnum);}@Overridepublic Map<String, Object> selectMap(String collection, String keyword, String fq, List<String> ids, String conditionKey, Integer current, Integer size, String[] field, String key, Class<T> clazz, Boolean isHigh, Boolean isAutoPermission, String sort, SolrQueryEnum queryEnum) throws SolrServerException, IOException {// 组织条件SolrQuery query = getQuery(keyword, fq, ids, conditionKey, current, size, field, isAutoPermission, sort, queryEnum, isHigh);return selectMap(collection, query, field, key, clazz, isHigh);}/*** 生成条件** @param keyword 条件* @param ids 多值条件* @param conditionKey 拼接的条件key* @param current 分页参数* @param size 分页参数* @param field 高亮字段* @param isAutoPermission 是否附带权限* @return SolrQuery*/@Overridepublic SolrQuery getQuery(String keyword, List<String> ids, String conditionKey, Integer current, Integer size,String[] field, Boolean isAutoPermission, String sort, SolrQueryEnum queryEnum, Boolean isHigh) {return getQuery(keyword, null, ids, conditionKey, current, size, field, isAutoPermission, sort, queryEnum, isHigh);}@Overridepublic SolrQuery getQuery(String keyword, String fq, List<String> ids, String conditionKey, Integer current, Integer size, String[] field, Boolean isAutoPermission, String sort, SolrQueryEnum queryEnum, Boolean isHigh) {SolrQuery query = new SolrQuery();if (ObjectUtil.isEmpty(size)) {size = 10;}if (ObjectUtil.isEmpty(current)) {current = 0;}// 如果高亮则代表输入了关键字if (isHigh) {keyword = SolrUtil.conditions(keyword, ids, conditionKey, OR);}// 过滤条件if (ObjectUtil.isNotEmpty(fq)) {query.setFilterQueries(fq);}// 是否增加权限控制if (isAutoPermission) {keyword = addPermission(keyword, queryEnum);}query.add("q", keyword);// 增加排序if (ObjectUtil.isNotEmpty(sort)) {List<SolrQuery.SortClause> clauses = SolrUtil.sort(sort);if (ObjectUtil.isNotEmpty(clauses)) {query.setSorts(clauses);}}// 设置高亮SolrUtil.setHl(query, field);// 设置分页query.setStart(current);query.setRows(size);printQuery(query);return query;}/*** 日志输出** @param solrQuery 条件*/@Overridepublic void printQuery(SolrQuery solrQuery) {Map map = solrQuery.toMap(new HashMap<>(1));String jsonStr = JSONUtil.toJsonStr(map);log.info("solr查询条件:" + jsonStr);}/*** 增加权限** @param keyword 条件* @return String*/@Overridepublic String addPermission(String keyword, SolrQueryEnum queryEnum) {SysUserVO user = TokenUtil.getUser();String value = ParamCache.getValue(ParamEnum.KNOWLEDGE_BASE_ROLE_NAME.getKey());value = ObjectUtil.isEmpty(value) ? ParamEnum.KNOWLEDGE_BASE_ROLE_NAME.getValue() : value;List<String> list = Func.toStrList(value);// 权限控制String permission = OPEN.concat(keyword).concat(CLOSE).concat(AND).concat(OPEN);// 普通人员权限String purview = "";// 管理人员权限String adminPurview = "";switch (queryEnum) {// 管理页面、回收站页面只可查看自己的数据case MANAGER:purview = permission// 创建用户可看.concat("create_user:").concat(user.getUserId()).concat(AND).concat("is_deleted:0").concat(CLOSE);adminPurview = permission.concat("is_deleted:0").concat(CLOSE);break;case IS_DELETED:purview = permission// 创建用户可看.concat("create_user:").concat(user.getUserId()).concat(AND).concat("is_deleted:1").concat(CLOSE);adminPurview = permission.concat("is_deleted:1").concat(CLOSE);break;// 查询页面可看 visible_range:ALL 或者 visible_range:自己部门 或者 自己创建的case QUERY:purview = permission.concat("visible_range:ALL")// 用户当前部门可看.concat(OR).concat("visible_range:*").concat(user.getOrgNo()).concat("*")// 创建用户可看.concat(OR).concat("create_user:").concat(user.getUserId()).concat(CLOSE);adminPurview = permission.concat("is_deleted:0").concat(CLOSE);break;// 收藏页面因用户收藏的数据已作为条件,故不做权限控制case COLLECT:default:purview = keyword;adminPurview = keyword;break;}// 知识库管理员权限校验if (ObjectUtil.isNotEmpty(list)) {for (String var2 : list) {if (user.getRole().contains(var2)) {return adminPurview;}}}return purview;}}
