Commit 1091e97e by zhiwj

Merge branch 'developer' of http://115.159.76.241/base_platform_enterprise/gic-store into developer

parents c822282d 78364008
......@@ -6,6 +6,8 @@ import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.application.center.api.dto.ApplicationResourceDTO;
import com.gic.application.center.api.service.AuthorizeService;
import com.gic.auth.dto.ResourceDTO;
import com.gic.auth.service.ResourceApiService;
import com.gic.commons.util.DateUtil;
import com.gic.commons.util.EntityUtil;
import com.gic.enterprise.constants.Constants;
......@@ -69,6 +71,8 @@ public class StoreOpenApiServiceImpl implements StoreOpenApiService {
private AuthorizeService authorizeService;
@Autowired
private StoreWidgetApiService storeWidgetApiService;
@Autowired
private ResourceApiService resourceApiService;
@Override
public ServiceResponse<String> getApiFieldJson(Integer enterpriseId, Integer regionId) {
......@@ -551,21 +555,23 @@ public class StoreOpenApiServiceImpl implements StoreOpenApiService {
StringBuilder storeIds = new StringBuilder();
if (StringUtils.isBlank(storeCode)) {
//查询域下所有的门店:q
StoreSearchDTO storeSearchDTO = new StoreSearchDTO();
storeSearchDTO.setEnterpriseId(enterpriseId);
storeSearchDTO.setRegionId(regionId);
ServiceResponse<Page<StoreDTO>> storeResult = storeApiService.listStore(storeSearchDTO, 0, Integer.MAX_VALUE);
if (storeResult.isSuccess()) {
Page<StoreDTO> pageStore = storeResult.getResult();
if (pageStore != null) {
List<StoreDTO> storeList = pageStore.getResult();
if (CollectionUtils.isNotEmpty(storeList)) {
for (StoreDTO storeDTO : storeList) {
storeIds.append(storeDTO.getStoreId()).append(",");
}
}
}
}
// StoreSearchDTO storeSearchDTO = new StoreSearchDTO();
// storeSearchDTO.setEnterpriseId(enterpriseId);
// storeSearchDTO.setRegionId(regionId);
// ServiceResponse<Page<StoreDTO>> storeResult = storeApiService.listStore(storeSearchDTO, 0, Integer.MAX_VALUE);
// if (storeResult.isSuccess()) {
// Page<StoreDTO> pageStore = storeResult.getResult();
// if (pageStore != null) {
// List<StoreDTO> storeList = pageStore.getResult();
// if (CollectionUtils.isNotEmpty(storeList)) {
// for (StoreDTO storeDTO : storeList) {
// storeIds.append(storeDTO.getStoreId()).append(",");
// }
// }
// }
// }
//门店域有权限,但是域下面的门店不一定都有权限,进行过滤
storeIds = getStoreIds(appId, enterpriseId, regionId);
} else {
StoreDTO store = storeService.getStoreByRegionIdAndStoreCode(enterpriseId, regionId, storeCode);
if (store == null) {
......@@ -596,31 +602,12 @@ public class StoreOpenApiServiceImpl implements StoreOpenApiService {
private boolean hasAuth(String appId, Integer enterpriseId, String storeCode, Integer regionId) {
Map<String, Object> storeMap = new HashMap<>(16);
Map<String, Object> regionMap = new HashMap<>(16);
ServiceResponse<ApplicationResourceDTO> res = authorizeService
.findResourceByEnterpriseIdAndAppId(Long.valueOf(enterpriseId), appId);
if (res.isSuccess()) {
ApplicationResourceDTO resourceDTO = res.getResult();
if (resourceDTO != null) {
Long storeResourceId = resourceDTO.getStoreResource();
//查询门店资源组所有的门店权限
ServiceResponse<Page<StoreDTO>> storeResult = storeWidgetApiService
.listStoreByStoreWidgetId(enterpriseId, storeResourceId.intValue(), 0, Integer.MAX_VALUE);
if (storeResult.isSuccess()) {
Page<StoreDTO> page = storeResult.getResult();
List<StoreDTO> list = page.getResult();
if (CollectionUtils.isNotEmpty(list)) {
for (StoreDTO storeDTO : list) {
storeMap.put(storeDTO.getStoreCode(), 1);
regionMap.put(storeDTO.getRegionId().toString(), 1);
}
}
} else {
LOGGER.info("对外API权限校验结果-门店资源获取:{}", JSON.toJSONString(storeResult));
}
List<StoreDTO> list = getAuthByAppId(appId, enterpriseId);
if (CollectionUtils.isNotEmpty(list)) {
for (StoreDTO storeDTO : list) {
storeMap.put(storeDTO.getStoreCode(), 1);
regionMap.put(storeDTO.getRegionId().toString(), 1);
}
LOGGER.info("对外API权限校验结果-门店资源获取2:{}", JSON.toJSONString(res));
} else {
LOGGER.info("对外API权限校验结果:{}", JSON.toJSONString(res));
}
if (StringUtils.isNotBlank(storeCode)) {
if (storeMap.containsKey(storeCode)) {
......@@ -634,4 +621,68 @@ public class StoreOpenApiServiceImpl implements StoreOpenApiService {
}
return false;
}
/**
* 获取有权限的门店域的有权限的所有门店,前提是门店域有权限
* @param appId
* @param enterpriseId
* @param regionId
* @return
*/
private StringBuilder getStoreIds(String appId, Integer enterpriseId, Integer regionId) {
StringBuilder storeIds = new StringBuilder();
List<StoreDTO> list = getAuthByAppId(appId, enterpriseId);
if (CollectionUtils.isNotEmpty(list)) {
for (StoreDTO storeDTO : list) {
if (storeDTO.getRegionId().intValue() == regionId.intValue()) {
storeIds.append(storeDTO.getStoreId()).append(",");
}
}
}
return storeIds;
}
/**
* 获取资源组门店资源
* @param appId
* @param enterpriseId
* @return
*/
private List<StoreDTO> getAuthByAppId(String appId, Integer enterpriseId) {
ServiceResponse<ApplicationResourceDTO> res = authorizeService
.findResourceByEnterpriseIdAndAppId(Long.valueOf(enterpriseId), appId);
if (res.isSuccess()) {
ApplicationResourceDTO resourceDTO = res.getResult();
if (resourceDTO != null) {
Integer resourceId = resourceDTO.getResourceId();
if (resourceId == null) {
return Collections.emptyList();
}
ServiceResponse<ResourceDTO> resourceResult = resourceApiService.getResource(resourceId);
if (resourceResult.isSuccess()) {
LOGGER.info("对外API权限校验结果-门店资源ID:{}", JSON.toJSONString(resourceResult));
Long storeResourceId = resourceResult.getResult().getStoreResource();
//查询门店资源组所有的门店权限
ServiceResponse<Page<StoreDTO>> storeResult = storeWidgetApiService
.listStoreByStoreWidgetId(enterpriseId, storeResourceId.intValue(), 0, 10000);
if (storeResult.isSuccess()) {
Page<StoreDTO> page = storeResult.getResult();
if (page == null) {
return Collections.emptyList();
}
List<StoreDTO> list = page.getResult();
if (CollectionUtils.isNotEmpty(list)) {
return list;
}
} else {
LOGGER.info("对外API权限校验结果-门店资源获取:{}", JSON.toJSONString(storeResult));
}
}
}
LOGGER.info("对外API权限校验结果-资源ID:{}", JSON.toJSONString(res));
} else {
LOGGER.info("对外API权限校验结果:{}", JSON.toJSONString(res));
}
return Collections.emptyList();
}
}
......@@ -58,6 +58,7 @@
<dubbo:reference interface="com.gic.erp.operation.api.service.ApiFieldApiService" id="apiFieldApiService" timeout="60000" />
<dubbo:reference interface="com.gic.application.center.api.service.AuthorizeService" id="authorizeService" timeout="60000" />
<dubbo:reference interface="com.gic.auth.service.ResourceApiService" id="resourceApiService" timeout="60000" />
<dubbo:service interface="com.gic.store.service.StoreTagApiService" ref="storeTagApiService" timeout="6000" />
<dubbo:service interface="com.gic.store.service.StoreTagTmpApiService" ref="storeTagTmpApiService" timeout="6000" />
......
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