Skip to content

Commit 968a936

Browse files
author
ghzengqy568
committed
修复配置项搜索数据权限验证
1 parent 47c99af commit 968a936

File tree

9 files changed

+371
-160
lines changed

9 files changed

+371
-160
lines changed

brcc-console/src/main/java/com/baidu/brcc/controller/ConfigItemController.java

Lines changed: 14 additions & 112 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,8 @@
2727

2828
import java.util.Date;
2929
import java.util.HashMap;
30-
import java.util.HashSet;
3130
import java.util.List;
3231
import java.util.Map;
33-
import java.util.Set;
3432

3533
import org.apache.commons.lang3.StringUtils;
3634
import org.slf4j.Logger;
@@ -50,20 +48,11 @@
5048
import com.baidu.brcc.domain.ConfigGroup;
5149
import com.baidu.brcc.domain.ConfigItem;
5250
import com.baidu.brcc.domain.ConfigItemExample;
53-
import com.baidu.brcc.domain.Environment;
54-
import com.baidu.brcc.domain.Product;
55-
import com.baidu.brcc.domain.Project;
5651
import com.baidu.brcc.domain.User;
57-
import com.baidu.brcc.domain.Version;
5852
import com.baidu.brcc.domain.base.Pagination;
5953
import com.baidu.brcc.domain.base.R;
6054
import com.baidu.brcc.domain.em.Deleted;
61-
import com.baidu.brcc.domain.meta.MetaConfigGroup;
6255
import com.baidu.brcc.domain.meta.MetaConfigItem;
63-
import com.baidu.brcc.domain.meta.MetaEnvironment;
64-
import com.baidu.brcc.domain.meta.MetaProduct;
65-
import com.baidu.brcc.domain.meta.MetaProject;
66-
import com.baidu.brcc.domain.meta.MetaVersion;
6756
import com.baidu.brcc.domain.vo.BatchConfigItemReq;
6857
import com.baidu.brcc.domain.vo.ConfigItemForGroupVo;
6958
import com.baidu.brcc.domain.vo.ConfigItemReq;
@@ -74,7 +63,9 @@
7463
import com.baidu.brcc.service.EnvironmentService;
7564
import com.baidu.brcc.service.EnvironmentUserService;
7665
import com.baidu.brcc.service.ProductService;
66+
import com.baidu.brcc.service.ProductUserService;
7767
import com.baidu.brcc.service.ProjectService;
68+
import com.baidu.brcc.service.ProjectUserService;
7869
import com.baidu.brcc.service.RccCache;
7970
import com.baidu.brcc.service.VersionService;
8071
import com.baidu.brcc.utils.time.DateTimeUtils;
@@ -118,6 +109,12 @@ public class ConfigItemController {
118109
@Autowired
119110
private RccCache rccCache;
120111

112+
@Autowired
113+
private ProductUserService productUserService;
114+
115+
@Autowired
116+
private ProjectUserService projectUserService;
117+
121118
/**
122119
* 新增或修改配置
123120
*
@@ -354,8 +351,10 @@ public R delete(@PathVariable("itemId") Long itemId, @LoginUser User user) {
354351

355352
/**
356353
* 根据分组查询配置
354+
*
357355
* @param groupId
358356
* @param user
357+
*
359358
* @return
360359
*/
361360
@GetMapping("list")
@@ -401,13 +400,15 @@ public R<List<ConfigItemForGroupVo>> listByGroup(@RequestParam("groupId") Long g
401400

402401
/**
403402
* 配置检索,支持key, value模糊匹配查询
403+
*
404404
* @param productId
405405
* @param projectId
406406
* @param key
407407
* @param val
408408
* @param pageNo
409409
* @param pageSize
410410
* @param user
411+
*
411412
* @return
412413
*/
413414
@GetMapping("query")
@@ -427,107 +428,8 @@ public R<Pagination<ConfigItemVo>> query(
427428
return R.error(CONFIG_KEY_VALUE_NOT_EXISTS_STATUS, CONFIG_KEY_VALUE_NOT_EXISTS_MSG);
428429
}
429430
int offset = (pageNo - 1) * pageSize;
430-
Set<Long> groupIds = new HashSet<>();
431-
Set<Long> versionIds = new HashSet<>();
432-
Set<Long> environmentIds = new HashSet<>();
433-
Set<Long> projectIds = new HashSet<>();
434-
Set<Long> productIds = new HashSet<>();
435-
Pagination<ConfigItemVo> pagination = configItemService.pagination(ConfigItemExample.newBuilder()
436-
.orderByClause(MetaConfigItem.COLUMN_NAME_VERSIONID)
437-
.start(offset)
438-
.limit(pageSize)
439-
.build()
440-
.createCriteria()
441-
.andDeletedEqualTo(Deleted.OK.getValue())
442-
.andProductIdEqualTo(productId, productId != null && productId > 0)
443-
.andProjectIdEqualTo(projectId, projectId != null && projectId > 0)
444-
.andNameLikeBoth(key, isNotBlank(key))
445-
.andValLikeBoth(val, isNotBlank(val))
446-
.toExample(),
447-
item -> {
448-
ConfigItemVo vo = new ConfigItemVo();
449-
Long groupId = item.getGroupId();
450-
groupIds.add(groupId);
451-
Long versionId = item.getVersionId();
452-
versionIds.add(versionId);
453-
Long environmentId = item.getEnvironmentId();
454-
environmentIds.add(environmentId);
455-
Long _projectId = item.getProjectId();
456-
projectIds.add(_projectId);
457-
Long _productId = item.getProductId();
458-
productIds.add(_productId);
459-
vo.setId(item.getId());
460-
vo.setGroupId(groupId);
461-
vo.setVersionId(versionId);
462-
vo.setEnvironmentId(environmentId);
463-
vo.setProjectId(_projectId);
464-
vo.setProductId(_productId);
465-
vo.setName(item.getName());
466-
vo.setMemo(item.getMemo());
467-
vo.setVal(item.getVal());
468-
return vo;
469-
}
470-
);
471-
472-
if (pagination != null && !CollectionUtils.isEmpty(pagination.getDataList())) {
473-
Map<Long, Product> productMap = productService.selectMapByPrimaryKeys(
474-
productIds,
475-
Product :: getId,
476-
MetaProduct.COLUMN_NAME_ID,
477-
MetaProduct.COLUMN_NAME_NAME
478-
);
479-
480-
Map<Long, Project> projectMap = projectService.selectMapByPrimaryKeys(
481-
projectIds,
482-
Project :: getId,
483-
MetaProject.COLUMN_NAME_ID,
484-
MetaProject.COLUMN_NAME_NAME
485-
);
486-
487-
Map<Long, Environment> environmentMap = environmentService.selectMapByPrimaryKeys(
488-
environmentIds,
489-
Environment :: getId,
490-
MetaEnvironment.COLUMN_NAME_ID,
491-
MetaEnvironment.COLUMN_NAME_NAME
492-
);
493-
494-
Map<Long, Version> versionMap = versionService.selectMapByPrimaryKeys(
495-
versionIds,
496-
Version :: getId,
497-
MetaVersion.COLUMN_NAME_ID,
498-
MetaVersion.COLUMN_NAME_NAME
499-
);
500-
501-
Map<Long, ConfigGroup> groupMap = configGroupService.selectMapByPrimaryKeys(
502-
groupIds,
503-
ConfigGroup :: getId,
504-
MetaConfigGroup.COLUMN_NAME_ID,
505-
MetaConfigGroup.COLUMN_NAME_NAME
506-
);
507-
508-
pagination.each(item -> {
509-
Long groupId = item.getGroupId();
510-
Long versionId = item.getVersionId();
511-
Long environmentId = item.getEnvironmentId();
512-
Long _projectId = item.getProjectId();
513-
Long _productId = item.getProductId();
514-
if (groupMap != null && groupMap.get(groupId) != null) {
515-
item.setGroupName(groupMap.get(groupId).getName());
516-
}
517-
if (versionMap != null && versionMap.get(versionId) != null) {
518-
item.setVersionName(versionMap.get(versionId).getName());
519-
}
520-
if (environmentMap != null && environmentMap.get(environmentId) != null) {
521-
item.setEnvironmentName(environmentMap.get(environmentId).getName());
522-
}
523-
if (projectMap != null && projectMap.get(_projectId) != null) {
524-
item.setProjectName(projectMap.get(_projectId).getName());
525-
}
526-
if (productMap != null && productMap.get(_productId) != null) {
527-
item.setProductName(productMap.get(_productId).getName());
528-
}
529-
});
530-
}
431+
Pagination<ConfigItemVo> pagination =
432+
configItemService.pagination(offset, pageSize, productId, projectId, key, val, user);
531433
return R.ok(pagination);
532434
}
533435

brcc-core/src/main/java/com/baidu/brcc/config/UriCostFilter.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@
1919

2020
public class UriCostFilter implements Filter {
2121
private static final Logger LOGGER = LoggerFactory.getLogger(UriCostFilter.class);
22-
private static final String CONTAINER_ID = System.getenv("CONTAINER_ID");
23-
private static final String IDC = System.getenv("EM_LOGIC_IDC");
2422

2523
private final static String RCC_TS = "rcc-ts";
2624

@@ -45,13 +43,11 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterCha
4543
chain.doFilter(request, response);
4644
} finally {
4745
LOGGER.debug(
48-
"request_uri\t[{}]\tnet_cost[{}]\tserver_cost[{}]\tremote_addr[{}]\tcontainer_id[{}]\tidc=[{}]",
46+
"request_uri\t[{}]\tnet_cost[{}]\tserver_cost[{}]\tremote_addr[{}]",
4947
uri,
5048
rccTs > 0 ? start - rccTs : -1,
5149
System.currentTimeMillis() - start,
52-
request.getRemoteAddr(),
53-
CONTAINER_ID,
54-
IDC
50+
request.getRemoteAddr()
5551
);
5652
}
5753
} else {

brcc-core/src/main/java/com/baidu/brcc/config/WebMvcConfig.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import org.springframework.beans.factory.annotation.Autowired;
99
import org.springframework.beans.factory.annotation.Value;
10+
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
1011
import org.springframework.boot.web.servlet.FilterRegistrationBean;
1112
import org.springframework.context.annotation.Bean;
1213
import org.springframework.context.annotation.Configuration;
@@ -17,6 +18,7 @@
1718
import com.baidu.brcc.service.UserService;
1819

1920
@Configuration
21+
@ConditionalOnWebApplication
2022
public class WebMvcConfig implements WebMvcConfigurer {
2123

2224
@Value("${rcc.noauths}")

brcc-core/src/main/java/com/baidu/brcc/domain/ConfigItemExample.java

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,25 @@ public List<Criteria> getOredCriteria() {
3737
}
3838

3939
public void or(Criteria criteria) {
40+
criteria.and = false;
4041
oredCriteria.add(criteria);
4142
}
4243

4344
public Criteria or() {
4445
Criteria criteria = createCriteriaInternal();
46+
criteria.and = false;
47+
oredCriteria.add(criteria);
48+
return criteria;
49+
}
50+
51+
public void and(Criteria criteria) {
52+
criteria.and = true;
53+
oredCriteria.add(criteria);
54+
}
55+
56+
public Criteria and() {
57+
Criteria criteria = createCriteriaInternal();
58+
criteria.and = true;
4559
oredCriteria.add(criteria);
4660
return criteria;
4761
}
@@ -2008,6 +2022,8 @@ public Criteria andCreateTimeNotBetween(Date value1, Date value2) {
20082022

20092023
public static class Criteria extends GeneratedCriteria {
20102024

2025+
private boolean and;
2026+
20112027
private ConfigItemExample example;
20122028

20132029
protected Criteria(ConfigItemExample example) {
@@ -2036,7 +2052,7 @@ public Criteria addCustomerCriteria(String condition, Boolean bCondition) {
20362052
* 举例: exists(select 1 from b where b.aid = a.id and b.id=#{criterion.value})
20372053
*/
20382054
public Criteria addCustomerCriteria(String condition, Object value) {
2039-
addCriterion(condition,value,"customerCondition");
2055+
addCriterion(condition,value,"customerCondition");
20402056
return this;
20412057
}
20422058

@@ -2057,6 +2073,14 @@ public CriterionGroup andGroupCriterion(Boolean condition) {
20572073
}
20582074
return group;
20592075
}
2076+
2077+
public boolean isAnd() {
2078+
return and;
2079+
}
2080+
2081+
public void setAnd(boolean and) {
2082+
this.and = and;
2083+
}
20602084
}
20612085

20622086
public static class Criterion {

brcc-core/src/main/java/com/baidu/brcc/domain/base/Pagination.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.baidu.brcc.domain.base;
22

33
import java.io.Serializable;
4+
import java.util.ArrayList;
45
import java.util.List;
56
import java.util.function.Consumer;
67

@@ -50,6 +51,13 @@ public void each(Consumer<T> consumer) {
5051
}
5152
}
5253

54+
public static <T> Pagination<T> empty() {
55+
Pagination<T> pagination = new Pagination<>();
56+
pagination.setTotal(0L);
57+
pagination.setDataList(new ArrayList<T>(0));
58+
return pagination;
59+
}
60+
5361
public String toString() {
5462
return "Pagination{" +
5563
"total = " + total +

brcc-core/src/main/java/com/baidu/brcc/service/ConfigItemService.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@
1010
import com.baidu.brcc.domain.ConfigItem;
1111
import com.baidu.brcc.domain.ConfigItemExample;
1212
import com.baidu.brcc.domain.User;
13+
import com.baidu.brcc.domain.base.Pagination;
1314
import com.baidu.brcc.domain.vo.ApiItemVo;
1415
import com.baidu.brcc.domain.vo.BatchConfigItemReq;
16+
import com.baidu.brcc.domain.vo.ConfigItemVo;
1517
import com.baidu.brcc.service.base.GenericService;
1618

1719
public interface ConfigItemService extends GenericService<ConfigItem, Long, ConfigItemExample> {
@@ -44,4 +46,7 @@ void saveConfigItems(List<ConfigItem> insertConfigItemList, List<ConfigItem> upd
4446
List<ApiItemVo> getAllByVersionIdInCache(Long projectId, Long versionId);
4547

4648
List<ApiItemVo> getItemsByVersionIdAndNamesInCache(Long projectId, Long versionId, List<String> names);
49+
50+
Pagination<ConfigItemVo> pagination(Integer offset, Integer pageSize, Long productId, Long projectId, String key,
51+
String val, User user);
4752
}

0 commit comments

Comments
 (0)