Browse Source

对外api要先走apikey通过一个接口拿token,然后用token来走api查询数据

jwy
review512jwy@163.com 6 days ago
parent
commit
321cf0d3e8
  1. 54
      data-center-business-controller/src/main/java/com/techsor/datacenter/business/configurator/interceptor/ApiTokenInterceptor.java
  2. 83
      data-center-business-controller/src/main/java/com/techsor/datacenter/business/controller/CommonController.java
  3. 1
      data-center-business-model/src/main/java/com/techsor/datacenter/business/vo/common/RedisApiTokenInfo.java
  4. 24
      data-center-business-service/src/main/java/com/techsor/datacenter/business/service/CommonService.java
  5. 6
      data-center-business-service/src/main/java/com/techsor/datacenter/business/service/impl/ApiAuthServiceImpl.java
  6. 166
      data-center-business-service/src/main/java/com/techsor/datacenter/business/service/impl/CommonServiceImpl.java
  7. 30
      data-center-business-util/src/main/java/com/techsor/datacenter/business/util/ApiContext.java
  8. 3
      data-center-business-util/src/main/java/com/techsor/datacenter/business/util/SimpleJwtTokenUtil.java

54
data-center-business-controller/src/main/java/com/techsor/datacenter/business/configurator/interceptor/ApiTokenInterceptor.java

@ -6,11 +6,12 @@ import com.techsor.datacenter.business.util.redis.RedisUtil;
import com.techsor.datacenter.business.vo.common.RedisApiTokenInfo; import com.techsor.datacenter.business.vo.common.RedisApiTokenInfo;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import lombok.Getter;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.HandlerInterceptor;
import java.util.Map;
@Component @Component
public class ApiTokenInterceptor implements HandlerInterceptor { public class ApiTokenInterceptor implements HandlerInterceptor {
@ -23,9 +24,24 @@ public class ApiTokenInterceptor implements HandlerInterceptor {
HttpServletResponse response, HttpServletResponse response,
Object handler) throws Exception { Object handler) throws Exception {
// 只有 HandlerMethod(Controller 方法)才处理
if (!(handler instanceof HandlerMethod)) {
return true;
}
HandlerMethod handlerMethod = (HandlerMethod) handler;
// 判断方法或类上是否有 @ApiTokenRequired
boolean methodAnnotated = handlerMethod.getMethodAnnotation(ApiTokenRequired.class) != null;
boolean classAnnotated = handlerMethod.getBeanType().getAnnotation(ApiTokenRequired.class) != null;
if (!methodAnnotated && !classAnnotated) {
return true; // 没加注解,直接放行
}
String auth = request.getHeader("Authorization"); String auth = request.getHeader("Authorization");
if (auth == null || !auth.startsWith("Bearer ")) { if (auth == null || !auth.startsWith("Bearer ")) {
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); writeUnauthorized(response, "Missing token");
return false; return false;
} }
@ -34,15 +50,19 @@ public class ApiTokenInterceptor implements HandlerInterceptor {
Object tokenInfo = redisUtil.get(redisKey); Object tokenInfo = redisUtil.get(redisKey);
if (null == tokenInfo){ if (null == tokenInfo){
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); writeUnauthorized(response, "Token expired or invalid");
return false; return false;
} }
RedisApiTokenInfo redisApiTokenInfo = JSON.parseObject(tokenInfo.toString(), RedisApiTokenInfo.class); try {
RedisApiTokenInfo redisApiTokenInfo = JSON.parseObject(tokenInfo.toString(), RedisApiTokenInfo.class);
Long companyId = redisApiTokenInfo.getTopCompanyId(); ApiContext.setCompanyId(redisApiTokenInfo.getCompanyId());
ApiContext.setCompanyId(companyId); ApiContext.setTopCompanyId(redisApiTokenInfo.getTopCompanyId());
ApiContext.setApiKey(redisApiTokenInfo.getApiKey());
} catch (Exception e) {
writeUnauthorized(response, "Token data invalid");
return false;
}
return true; return true;
} }
@ -53,5 +73,23 @@ public class ApiTokenInterceptor implements HandlerInterceptor {
Exception ex) { Exception ex) {
ApiContext.clear(); ApiContext.clear();
} }
private void writeUnauthorized(HttpServletResponse response, String msg) throws Exception {
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
response.setContentType("application/json;charset=UTF-8");
response.getWriter().write(JSON.toJSONString(new ErrorResponse(401, msg)));
}
@Getter
private static class ErrorResponse {
private final int code;
private final String msg;
public ErrorResponse(int code, String msg) {
this.code = code;
this.msg = msg;
}
}
} }

83
data-center-business-controller/src/main/java/com/techsor/datacenter/business/controller/CommonController.java

@ -3,10 +3,12 @@ package com.techsor.datacenter.business.controller;
import java.util.List; import java.util.List;
import com.techsor.datacenter.business.configurator.interceptor.AccessRequired; import com.techsor.datacenter.business.configurator.interceptor.AccessRequired;
import com.techsor.datacenter.business.configurator.interceptor.ApiTokenRequired;
import com.techsor.datacenter.business.dto.common.RepostRoidParams; import com.techsor.datacenter.business.dto.common.RepostRoidParams;
import com.techsor.datacenter.business.dto.common.api.*; import com.techsor.datacenter.business.dto.common.api.*;
import com.techsor.datacenter.business.dto.common.roidproblemreport.ProblemReportsSummariesSearchParams; import com.techsor.datacenter.business.dto.common.roidproblemreport.ProblemReportsSummariesSearchParams;
import com.techsor.datacenter.business.service.ApiAuthService; import com.techsor.datacenter.business.service.ApiAuthService;
import com.techsor.datacenter.business.util.ApiContext;
import com.techsor.datacenter.business.vo.common.ApiTokenVO; import com.techsor.datacenter.business.vo.common.ApiTokenVO;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -140,28 +142,34 @@ public class CommonController{
* @param Apikey API key for authentication * @param Apikey API key for authentication
* @return a SimpleDataResponse containing the queried asset information * @return a SimpleDataResponse containing the queried asset information
*/ */
@ApiTokenRequired
@Operation(summary = "Query asset information") @Operation(summary = "Query asset information")
@RequestMapping(value = "/queryAssetInfo", method = RequestMethod.POST) @RequestMapping(value = "/queryAssetInfo", method = RequestMethod.POST)
public SimpleDataResponse queryAssetInfo( public SimpleDataResponse queryAssetInfo(
@RequestBody MonitoringAssetSearchParams queryAssetSearchParams, @RequestBody MonitoringAssetSearchParams queryAssetSearchParams,
@Parameter(name = "Apikey", description = "API key", required = false, schema = @Schema(defaultValue = "123456")) @RequestHeader(required = true) String Apikey) { // @Parameter(name = "Apikey", description = "API key", required = false, schema = @Schema(defaultValue = "123456")) @RequestHeader(required = true) String Apikey
return commonService.queryAssetInfo(Apikey, queryAssetSearchParams); @Parameter(name = "Authorization", description = "auth token", required = true, schema = @Schema(defaultValue = "123456")) @RequestHeader(required = true) String Authorization) {
return commonService.queryAssetInfo(Authorization, queryAssetSearchParams);
} }
@ApiTokenRequired
@Operation(summary = "Query space information") @Operation(summary = "Query space information")
@RequestMapping(value = "/querySpaceInfo", method = RequestMethod.POST) @RequestMapping(value = "/querySpaceInfo", method = RequestMethod.POST)
public SimpleDataResponse querySpaceInfo( public SimpleDataResponse querySpaceInfo(
@RequestBody ApiSpaceSearchParams searchParams, @RequestBody ApiSpaceSearchParams searchParams,
@Parameter(name = "Apikey", description = "API key", required = false, schema = @Schema(defaultValue = "123456")) @RequestHeader(required = true) String Apikey) { // @Parameter(name = "Apikey", description = "API key", required = false, schema = @Schema(defaultValue = "123456")) @RequestHeader(required = true) String Apikey) {
return commonService.querySpaceInfo(Apikey, searchParams); @Parameter(name = "Authorization", description = "auth token", required = true, schema = @Schema(defaultValue = "123456")) @RequestHeader(required = true) String Authorization) {
return commonService.querySpaceInfo(Authorization, searchParams);
} }
@ApiTokenRequired
@Operation(summary = "Query space information by floor info") @Operation(summary = "Query space information by floor info")
@RequestMapping(value = "/querySpaceInfoList", method = RequestMethod.POST) @RequestMapping(value = "/querySpaceInfoList", method = RequestMethod.POST)
public SimpleDataResponse querySpaceInfoList( public SimpleDataResponse querySpaceInfoList(
@RequestBody ApiSpaceSearchParams searchParams, @RequestBody ApiSpaceSearchParams searchParams,
@Parameter(name = "Apikey", description = "API key", required = false, schema = @Schema(defaultValue = "123456")) @RequestHeader(required = true) String Apikey) { // @Parameter(name = "Apikey", description = "API key", required = false, schema = @Schema(defaultValue = "123456")) @RequestHeader(required = true) String Apikey) {
return commonService.querySpaceInfoList(Apikey, searchParams); @Parameter(name = "Authorization", description = "auth token", required = true, schema = @Schema(defaultValue = "123456")) @RequestHeader(required = true) String Authorization) {
return commonService.querySpaceInfoList(Authorization, searchParams);
} }
/** /**
@ -186,12 +194,14 @@ public class CommonController{
* @param Apikey API key for authentication * @param Apikey API key for authentication
* @return a SimpleDataResponse containing the queried asset information * @return a SimpleDataResponse containing the queried asset information
*/ */
@ApiTokenRequired
@Operation(summary = "Query asset information by class") @Operation(summary = "Query asset information by class")
@RequestMapping(value = "/queryAssetInfoByClass", method = RequestMethod.POST) @RequestMapping(value = "/queryAssetInfoByClass", method = RequestMethod.POST)
public SimpleDataResponse queryAssetInfoByClass( public SimpleDataResponse queryAssetInfoByClass(
@RequestBody ApiAssetSearchByClassParams apiAssetSearchByClassParams, @RequestBody ApiAssetSearchByClassParams apiAssetSearchByClassParams,
@Parameter(name = "Apikey", description = "API key", required = false, schema = @Schema(defaultValue = "123456")) @RequestHeader(required = true) String Apikey) { // @Parameter(name = "Apikey", description = "API key", required = false, schema = @Schema(defaultValue = "123456")) @RequestHeader(required = true) String Apikey) {
return commonService.queryAssetInfoByClass(Apikey, apiAssetSearchByClassParams); @Parameter(name = "Authorization", description = "auth token", required = true, schema = @Schema(defaultValue = "123456")) @RequestHeader(required = true) String Authorization) {
return commonService.queryAssetInfoByClass(Authorization, apiAssetSearchByClassParams);
} }
/** /**
@ -200,12 +210,14 @@ public class CommonController{
* @param Apikey API key for authentication * @param Apikey API key for authentication
* @return a SimpleDataResponse containing the queried alarm devices information * @return a SimpleDataResponse containing the queried alarm devices information
*/ */
@ApiTokenRequired
@Operation(summary = "Query alarm devices information") @Operation(summary = "Query alarm devices information")
@RequestMapping(value = "/queryAlarmDevice", method = RequestMethod.POST) @RequestMapping(value = "/queryAlarmDevice", method = RequestMethod.POST)
public SimpleDataResponse queryAlarmDevice( public SimpleDataResponse queryAlarmDevice(
@RequestBody ApiAlarmDeviceSearchParams apiAlarmDeviceSearchParams, @RequestBody ApiAlarmDeviceSearchParams apiAlarmDeviceSearchParams,
@Parameter(name = "Apikey", description = "API key", required = false, schema = @Schema(defaultValue = "123456")) @RequestHeader(required = true) String Apikey) { // @Parameter(name = "Apikey", description = "API key", required = false, schema = @Schema(defaultValue = "123456")) @RequestHeader(required = true) String Apikey) {
return commonService.queryAlarmDevice(null, Apikey, apiAlarmDeviceSearchParams); @Parameter(name = "Authorization", description = "auth token", required = true, schema = @Schema(defaultValue = "123456")) @RequestHeader(required = true) String Authorization) {
return commonService.queryAlarmDevice(null, Authorization, apiAlarmDeviceSearchParams);
} }
/** /**
@ -214,20 +226,24 @@ public class CommonController{
* @param Apikey API key for authentication * @param Apikey API key for authentication
* @return a SimpleDataResponse containing the queried alarm devices information * @return a SimpleDataResponse containing the queried alarm devices information
*/ */
@ApiTokenRequired
@Operation(summary = "Query Device Classification") @Operation(summary = "Query Device Classification")
@RequestMapping(value = "/queryClass",method = RequestMethod.POST) @RequestMapping(value = "/queryClass",method = RequestMethod.POST)
public SimpleDataResponse queryClass( public SimpleDataResponse queryClass(
@RequestBody ApiAssetClassSearchParams apiAssetClassSearchParams, @RequestBody ApiAssetClassSearchParams apiAssetClassSearchParams,
@Parameter(name="Apikey",description ="Apikey",required=false,schema = @Schema(defaultValue = "123456")) @RequestHeader(required=true) String Apikey){ // @Parameter(name = "Apikey", description = "API key", required = false, schema = @Schema(defaultValue = "123456")) @RequestHeader(required = true) String Apikey) {
return commonService.queryClass(Apikey, apiAssetClassSearchParams); @Parameter(name = "Authorization", description = "auth token", required = true, schema = @Schema(defaultValue = "123456")) @RequestHeader(required = true) String Authorization) {
return commonService.queryClass(Authorization, apiAssetClassSearchParams);
} }
@ApiTokenRequired
@Operation(summary = "Query Device Classification") @Operation(summary = "Query Device Classification")
@RequestMapping(value = "/problem-reports/summaries",method = RequestMethod.POST) @RequestMapping(value = "/problem-reports/summaries",method = RequestMethod.POST)
public SimpleDataResponse problemReportsSummaries( public SimpleDataResponse problemReportsSummaries(
@RequestBody ProblemReportsSummariesSearchParams params, @RequestBody ProblemReportsSummariesSearchParams params,
@Parameter(name="Apikey",description ="Apikey",required=false,schema = @Schema(defaultValue = "123456")) @RequestHeader(required=true) String Apikey){ // @Parameter(name = "Apikey", description = "API key", required = false, schema = @Schema(defaultValue = "123456")) @RequestHeader(required = true) String Apikey) {
@Parameter(name = "Authorization", description = "auth token", required = true, schema = @Schema(defaultValue = "123456")) @RequestHeader(required = true) String Authorization) {
//Only for test use, For staging env //Only for test use, For staging env
if (openApiMock.equals("true")){ if (openApiMock.equals("true")){
params.setBuildingName("東京建物日本橋ビル"); params.setBuildingName("東京建物日本橋ビル");
@ -236,7 +252,7 @@ public class CommonController{
// params.setStartDate("2024-08-30 12:50:46"); // params.setStartDate("2024-08-30 12:50:46");
// params.setEndDate("2024-09-12 12:50:46"); // params.setEndDate("2024-09-12 12:50:46");
//test end //test end
return commonService.problemReportsSummaries(Apikey, params); return commonService.problemReportsSummaries(Authorization, params);
} }
/** /**
@ -255,12 +271,14 @@ public class CommonController{
return commonService.query2D3D(queryDataFor2D3D); return commonService.query2D3D(queryDataFor2D3D);
} }
@ApiTokenRequired
@Operation(summary = "Endpoint for 2D-3D platform data integration") @Operation(summary = "Endpoint for 2D-3D platform data integration")
@RequestMapping(value = "/queryKanriRoidMaintenanceRecord", method = RequestMethod.POST) @RequestMapping(value = "/queryKanriRoidMaintenanceRecord", method = RequestMethod.POST)
public SimpleDataResponse queryKanriRoidMaintenanceRecord( public SimpleDataResponse queryKanriRoidMaintenanceRecord(
@RequestBody QueryDataFor2D3D queryDataFor2D3D, @RequestBody QueryDataFor2D3D queryDataFor2D3D,
@Parameter(name = "Apikey", description = "API key", required = false, schema = @Schema(defaultValue = "RjV5ZTZBeFArekMxM2hlekFjWnlmZz09")) @RequestHeader(required = true) String Apikey) { // @Parameter(name = "Apikey", description = "API key", required = false, schema = @Schema(defaultValue = "123456")) @RequestHeader(required = true) String Apikey) {
queryDataFor2D3D.setApikey(Apikey); @Parameter(name = "Authorization", description = "auth token", required = true, schema = @Schema(defaultValue = "123456")) @RequestHeader(required = true) String Authorization) {
queryDataFor2D3D.setApikey(ApiContext.getApiKey());
return commonService.query2D3D(queryDataFor2D3D); return commonService.query2D3D(queryDataFor2D3D);
} }
@ -337,13 +355,15 @@ public class CommonController{
} }
@ApiTokenRequired
@Operation(summary = "Query devices information for Rili") @Operation(summary = "Query devices information for Rili")
@RequestMapping(value = "/device/queryDeviceInfo", method = RequestMethod.POST) @RequestMapping(value = "/device/queryDeviceInfo", method = RequestMethod.POST)
public SimpleDataResponse queryDeviceInfo( public SimpleDataResponse queryDeviceInfo(
@RequestBody ApiRiliDeviceSearchParams apiRiliDeviceSearchParams, @RequestBody ApiRiliDeviceSearchParams apiRiliDeviceSearchParams,
@Parameter(name="Apikey",description ="Apikey",required=false,schema = @Schema(defaultValue = "RjV5ZTZBeFArekMxM2hlekFjWnlmZz09")) @RequestHeader(required=true) String Apikey) { // @Parameter(name = "Apikey", description = "API key", required = false, schema = @Schema(defaultValue = "123456")) @RequestHeader(required = true) String Apikey) {
@Parameter(name = "Authorization", description = "auth token", required = true, schema = @Schema(defaultValue = "123456")) @RequestHeader(required = true) String Authorization) {
return commonService.queryDeviceInfo(Apikey, apiRiliDeviceSearchParams); return commonService.queryDeviceInfo(Authorization, apiRiliDeviceSearchParams);
} }
@ -363,39 +383,44 @@ public class CommonController{
return commonService.getTemporaryLink(getFileTemporaryParams, LanguageType); return commonService.getTemporaryLink(getFileTemporaryParams, LanguageType);
} }
@ApiTokenRequired
@Operation(summary = "batch get temporary link") @Operation(summary = "batch get temporary link")
@RequestMapping(value = "/getS3FileUrl", method = RequestMethod.POST) @RequestMapping(value = "/getS3FileUrl", method = RequestMethod.POST)
public SimpleDataResponse getS3FileUrl( public SimpleDataResponse getS3FileUrl(
@RequestBody BatchGetFileTemporaryParams batchGetFileTemporaryParams, @RequestBody BatchGetFileTemporaryParams batchGetFileTemporaryParams,
@Parameter(name = "Apikey", description = "API key", required = false, schema = @Schema(defaultValue = "123456")) @RequestHeader(required = true) String Apikey // @Parameter(name = "Apikey", description = "API key", required = false, schema = @Schema(defaultValue = "123456")) @RequestHeader(required = true) String Apikey) {
){ @Parameter(name = "Authorization", description = "auth token", required = true, schema = @Schema(defaultValue = "123456")) @RequestHeader(required = true) String Authorization) {
return commonService.getS3FileUrl(batchGetFileTemporaryParams, Apikey); return commonService.getS3FileUrl(batchGetFileTemporaryParams, Authorization);
} }
@ApiTokenRequired
@Operation(summary = "add building") @Operation(summary = "add building")
@RequestMapping(value = "/addBuilding", method = RequestMethod.POST) @RequestMapping(value = "/addBuilding", method = RequestMethod.POST)
public SimpleDataResponse addBuilding( public SimpleDataResponse addBuilding(
@RequestBody AddBuildingParams addBuildingParams, @RequestBody AddBuildingParams addBuildingParams,
@Parameter(name = "Apikey", description = "API key", required = false, schema = @Schema(defaultValue = "123456")) @RequestHeader(required = true) String Apikey // @Parameter(name = "Apikey", description = "API key", required = false, schema = @Schema(defaultValue = "123456")) @RequestHeader(required = true) String Apikey) {
){ @Parameter(name = "Authorization", description = "auth token", required = true, schema = @Schema(defaultValue = "123456")) @RequestHeader(required = true) String Authorization) {
return commonService.addBuilding(addBuildingParams, Apikey); return commonService.addBuilding(addBuildingParams, Authorization);
} }
@ApiTokenRequired
@Operation(summary = "query building") @Operation(summary = "query building")
@RequestMapping(value = "/queryBuilding", method = RequestMethod.POST) @RequestMapping(value = "/queryBuilding", method = RequestMethod.POST)
public SimpleDataResponse queryBuilding( public SimpleDataResponse queryBuilding(
@RequestBody QueryBuilding queryBuilding, @RequestBody QueryBuilding queryBuilding,
@Parameter(name = "Apikey", description = "API key", required = false, schema = @Schema(defaultValue = "123456")) @RequestHeader(required = true) String Apikey // @Parameter(name = "Apikey", description = "API key", required = false, schema = @Schema(defaultValue = "123456")) @RequestHeader(required = true) String Apikey) {
){ @Parameter(name = "Authorization", description = "auth token", required = true, schema = @Schema(defaultValue = "123456")) @RequestHeader(required = true) String Authorization) {
return commonService.queryBuilding(queryBuilding, Apikey); return commonService.queryBuilding(queryBuilding, Authorization);
} }
@ApiTokenRequired
@Operation(summary = "Query information of devices with cancelled alarm") @Operation(summary = "Query information of devices with cancelled alarm")
@RequestMapping(value = "/queryCancelAlarmDevice", method = RequestMethod.POST) @RequestMapping(value = "/queryCancelAlarmDevice", method = RequestMethod.POST)
public SimpleDataResponse queryCancelAlarmDevice( public SimpleDataResponse queryCancelAlarmDevice(
@RequestBody ApiAlarmDeviceSearchParams apiAlarmDeviceSearchParams, @RequestBody ApiAlarmDeviceSearchParams apiAlarmDeviceSearchParams,
@Parameter(name = "Apikey", description = "API key", required = false, schema = @Schema(defaultValue = "123456")) @RequestHeader(required = true) String Apikey) { // @Parameter(name = "Apikey", description = "API key", required = false, schema = @Schema(defaultValue = "123456")) @RequestHeader(required = true) String Apikey) {
return commonService.queryCancelAlarmDevice(null, Apikey, apiAlarmDeviceSearchParams); @Parameter(name = "Authorization", description = "auth token", required = true, schema = @Schema(defaultValue = "123456")) @RequestHeader(required = true) String Authorization) {
return commonService.queryCancelAlarmDevice(null, Authorization, apiAlarmDeviceSearchParams);
} }
@PostMapping("/auth/token") @PostMapping("/auth/token")

1
data-center-business-model/src/main/java/com/techsor/datacenter/business/vo/common/RedisApiTokenInfo.java

@ -7,6 +7,7 @@ import lombok.Data;
@AllArgsConstructor @AllArgsConstructor
public class RedisApiTokenInfo { public class RedisApiTokenInfo {
private String apiKey; private String apiKey;
private Long companyId;
private Long topCompanyId; private Long topCompanyId;
} }

24
data-center-business-service/src/main/java/com/techsor/datacenter/business/service/CommonService.java

@ -39,7 +39,7 @@ public interface CommonService {
SimpleDataResponse logEmailSentResult(JSONObject jsonObj); SimpleDataResponse logEmailSentResult(JSONObject jsonObj);
SimpleDataResponse queryAssetInfo(String apikey, MonitoringAssetSearchParams queryAssetSearchParams); SimpleDataResponse queryAssetInfo(String authorization, MonitoringAssetSearchParams queryAssetSearchParams);
SimpleDataResponse queryDeviceInfo(String apikey, DeviceSearchParams deviceSearchParams); SimpleDataResponse queryDeviceInfo(String apikey, DeviceSearchParams deviceSearchParams);
@ -55,37 +55,37 @@ public interface CommonService {
SimpleDataResponse query2D3D(QueryDataFor2D3D queryDataFor2D3D); SimpleDataResponse query2D3D(QueryDataFor2D3D queryDataFor2D3D);
SimpleDataResponse queryAssetInfoByClass(String apikey, ApiAssetSearchByClassParams apiAssetSearchByClassParams); SimpleDataResponse queryAssetInfoByClass(String authorization, ApiAssetSearchByClassParams apiAssetSearchByClassParams);
SimpleDataResponse queryAlarmDevice(Long companyId, String apikey, ApiAlarmDeviceSearchParams apiAlarmDeviceSearchParams); SimpleDataResponse queryAlarmDevice(Long companyId, String authorization, ApiAlarmDeviceSearchParams apiAlarmDeviceSearchParams);
SimpleDataResponse getVersion(); SimpleDataResponse getVersion();
ResponseSetThresholdV1 checkTargetIds(TargetIds targetIds); ResponseSetThresholdV1 checkTargetIds(TargetIds targetIds);
SimpleDataResponse queryClass(String apikey, ApiAssetClassSearchParams apiAssetClassSearchParams); SimpleDataResponse queryClass(String authorization, ApiAssetClassSearchParams apiAssetClassSearchParams);
SimpleDataResponse problemReportsSummaries(String apikey, ProblemReportsSummariesSearchParams params); SimpleDataResponse problemReportsSummaries(String authorization, ProblemReportsSummariesSearchParams params);
SimpleDataResponse repostRoidV1(RepostRoidParams param, Long companyId, Integer languageType); SimpleDataResponse repostRoidV1(RepostRoidParams param, Long companyId, Integer languageType);
SimpleDataResponse queryDeviceInfo(String apikey, ApiRiliDeviceSearchParams apiRiliDeviceSearchParams); SimpleDataResponse queryDeviceInfo(String authorization, ApiRiliDeviceSearchParams apiRiliDeviceSearchParams);
SimpleDataResponse updateTargetDataSources(JSONObject jsonObj); SimpleDataResponse updateTargetDataSources(JSONObject jsonObj);
SimpleDataResponse getTemporaryLink(GetFileTemporaryParams getFileTemporaryParams, Integer languageType); SimpleDataResponse getTemporaryLink(GetFileTemporaryParams getFileTemporaryParams, Integer languageType);
SimpleDataResponse querySpaceInfo(String apikey, ApiSpaceSearchParams searchParams); SimpleDataResponse querySpaceInfo(String authorization, ApiSpaceSearchParams searchParams);
SimpleDataResponse getS3FileUrl(BatchGetFileTemporaryParams batchGetFileTemporaryParams, String apikey); SimpleDataResponse getS3FileUrl(BatchGetFileTemporaryParams batchGetFileTemporaryParams, String authorization);
SimpleDataResponse addBuilding(AddBuildingParams addBuildingParams, String apikey); SimpleDataResponse addBuilding(AddBuildingParams addBuildingParams, String authorization);
SimpleDataResponse queryBuilding(QueryBuilding queryBuilding, String apikey); SimpleDataResponse queryBuilding(QueryBuilding queryBuilding, String authorization);
SimpleDataResponse queryCancelAlarmDevice(Long companyId, String apikey, SimpleDataResponse queryCancelAlarmDevice(Long companyId, String authorization,
ApiAlarmDeviceSearchParams apiAlarmDeviceSearchParams); ApiAlarmDeviceSearchParams apiAlarmDeviceSearchParams);
SimpleDataResponse querySpaceInfoList(String apikey, ApiSpaceSearchParams searchParams); SimpleDataResponse querySpaceInfoList(String authorization, ApiSpaceSearchParams searchParams);
} }

6
data-center-business-service/src/main/java/com/techsor/datacenter/business/service/impl/ApiAuthServiceImpl.java

@ -46,14 +46,14 @@ public class ApiAuthServiceImpl implements ApiAuthService {
Long topCompanyId = dataSourceInterceptor.getTopCompanyId(companyId+""); Long topCompanyId = dataSourceInterceptor.getTopCompanyId(companyId+"");
String token = "Bearer " + SimpleJwtTokenUtil.generate(); String token = SimpleJwtTokenUtil.generate();
String redisKey = "api:token:" + token; String redisKey = "api:token:" + token;
redisUtil.set(redisKey, JSON.toJSONString(new RedisApiTokenInfo(apiKey, topCompanyId))); redisUtil.set(redisKey, JSON.toJSONString(new RedisApiTokenInfo(apiKey, companyId, topCompanyId)));
redisUtil.expire(redisKey, TOKEN_EXPIRE_SECONDS); redisUtil.expire(redisKey, TOKEN_EXPIRE_SECONDS);
return SimpleDataResponse.success(new ApiTokenVO(token, TOKEN_EXPIRE_SECONDS)); return SimpleDataResponse.success(new ApiTokenVO("Bearer " + token, TOKEN_EXPIRE_SECONDS));
} }
} }

166
data-center-business-service/src/main/java/com/techsor/datacenter/business/service/impl/CommonServiceImpl.java

@ -376,25 +376,16 @@ public class CommonServiceImpl implements CommonService {
* @return SimpleDataResponse containing the queried asset information or error response * @return SimpleDataResponse containing the queried asset information or error response
*/ */
@Override @Override
public SimpleDataResponse queryAssetInfo(String apikey, MonitoringAssetSearchParams pageSearchParam) { public SimpleDataResponse queryAssetInfo(String authorization, MonitoringAssetSearchParams pageSearchParam) {
try { try {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("apikey", apikey);
ApikeyInfo2 apikeyInfo = commonOpt.getAuroraInfoByApikey(paramMap);
if (null == apikeyInfo) {
return SimpleDataResponse.fail(ResponseCode.MSG_ERROR, "Apikey is invalid");
}
if (StringUtils.isBlank(pageSearchParam.getSymbol()) || if (StringUtils.isBlank(pageSearchParam.getSymbol()) ||
(StringUtils.isBlank(pageSearchParam.getBuildingName()) && StringUtils.isBlank(pageSearchParam.getUdfBuildingId()))) { (StringUtils.isBlank(pageSearchParam.getBuildingName()) && StringUtils.isBlank(pageSearchParam.getUdfBuildingId()))) {
return SimpleDataResponse.fail(ResponseCode.MSG_ERROR, "symbol or buildingName/udfBuildingId is required"); return SimpleDataResponse.fail(ResponseCode.MSG_ERROR, "symbol or buildingName/udfBuildingId is required");
} }
long companyId = ApiContext.getCompanyId();
ApikeyInfo2 companyInfo = basicCompanyMapperExt.getAuroraInfoByApikey(paramMap);
long companyId = companyInfo.getId();
DataSourceContextHolder.clearCurrentDataSourceKey(); DataSourceContextHolder.clearCurrentDataSourceKey();
DataSourceContextHolder.setCurrentDataSourceKey(Constants.DATASOURCE_PREFIX+ apikeyInfo.getId()); DataSourceContextHolder.setCurrentDataSourceKey(Constants.DATASOURCE_PREFIX+ ApiContext.getTopCompanyId());
if (StringUtils.isBlank(pageSearchParam.getCompanyIds())) { if (StringUtils.isBlank(pageSearchParam.getCompanyIds())) {
pageSearchParam.setCompanyIdList(Arrays.asList(companyId)); pageSearchParam.setCompanyIdList(Arrays.asList(companyId));
@ -817,22 +808,13 @@ public class CommonServiceImpl implements CommonService {
* or failure response on error * or failure response on error
*/ */
@Override @Override
public SimpleDataResponse queryAssetInfoByClass(String apikey, public SimpleDataResponse queryAssetInfoByClass(String authorization,
ApiAssetSearchByClassParams apiAssetSearchByClassParams) { ApiAssetSearchByClassParams apiAssetSearchByClassParams) {
try { try {
Map<String, Object> paramMap = new HashMap<>(); long companyId = ApiContext.getCompanyId();
paramMap.put("apikey", apikey);
ApikeyInfo2 apikeyInfo = commonOpt.getAuroraInfoByApikey(paramMap);
if (null == apikeyInfo) {
return SimpleDataResponse.fail(ResponseCode.MSG_ERROR, "Apikey is invalid");
}
ApikeyInfo2 companyInfo = basicCompanyMapperExt.getAuroraInfoByApikey(paramMap);
long companyId = companyInfo.getId();
DataSourceContextHolder.clearCurrentDataSourceKey(); DataSourceContextHolder.clearCurrentDataSourceKey();
DataSourceContextHolder.setCurrentDataSourceKey(Constants.DATASOURCE_PREFIX+ apikeyInfo.getId()); DataSourceContextHolder.setCurrentDataSourceKey(Constants.DATASOURCE_PREFIX+ ApiContext.getTopCompanyId());
if (StringUtils.isBlank(apiAssetSearchByClassParams.getCompanyIds())) { if (StringUtils.isBlank(apiAssetSearchByClassParams.getCompanyIds())) {
apiAssetSearchByClassParams.setCompanyIdList(Arrays.asList(companyId)); apiAssetSearchByClassParams.setCompanyIdList(Arrays.asList(companyId));
@ -865,7 +847,7 @@ public class CommonServiceImpl implements CommonService {
* or failure response on error * or failure response on error
*/ */
@Override @Override
public SimpleDataResponse queryAlarmDevice(Long companyId, String apikey, ApiAlarmDeviceSearchParams apiAlarmDeviceSearchParams) { public SimpleDataResponse queryAlarmDevice(Long companyId, String authorization, ApiAlarmDeviceSearchParams apiAlarmDeviceSearchParams) {
String hashKey = "lambda_device_alarm"; String hashKey = "lambda_device_alarm";
@ -874,13 +856,10 @@ public class CommonServiceImpl implements CommonService {
List<ApiAlarmDeviceInfoVO> deviceInfoVOs = new ArrayList<>(); List<ApiAlarmDeviceInfoVO> deviceInfoVOs = new ArrayList<>();
try { try {
Map<String, Object> paramMap = new HashMap<>(); Map<String, Object> paramMap = new HashMap<>();
if (null != companyId) { if (null == companyId) { //针对api接口
paramMap.put("companyId", companyId); companyId = ApiContext.getCompanyId();
} else {
paramMap.put("apikey", apikey);
ApikeyInfo2 selfInfo = basicCompanyMapperExt.getAuroraInfoByApikey(paramMap);
companyId = selfInfo.getId();
} }
paramMap.put("companyId", companyId);
Long topCompanyId = dataSourceInterceptor.getTopCompanyId(companyId+""); Long topCompanyId = dataSourceInterceptor.getTopCompanyId(companyId+"");
DataSourceContextHolder.setCurrentDataSourceKey(Constants.DATASOURCE_PREFIX +topCompanyId); DataSourceContextHolder.setCurrentDataSourceKey(Constants.DATASOURCE_PREFIX +topCompanyId);
@ -1059,21 +1038,12 @@ public class CommonServiceImpl implements CommonService {
} }
@Override @Override
public SimpleDataResponse queryClass(String apikey, ApiAssetClassSearchParams apiAssetClassSearchParams) { public SimpleDataResponse queryClass(String authorization, ApiAssetClassSearchParams apiAssetClassSearchParams) {
try { try {
Map<String, Object> paramMap = new HashMap<>(); long companyId = ApiContext.getCompanyId();
paramMap.put("apikey", apikey);
ApikeyInfo2 apikeyInfo = commonOpt.getAuroraInfoByApikey(paramMap);
if (null == apikeyInfo) {
return SimpleDataResponse.fail(ResponseCode.MSG_ERROR, "Apikey is invalid");
}
ApikeyInfo2 companyInfo = basicCompanyMapperExt.getAuroraInfoByApikey(paramMap);
long companyId = companyInfo.getId();
DataSourceContextHolder.clearCurrentDataSourceKey(); DataSourceContextHolder.clearCurrentDataSourceKey();
DataSourceContextHolder.setCurrentDataSourceKey(Constants.DATASOURCE_PREFIX+ apikeyInfo.getId()); DataSourceContextHolder.setCurrentDataSourceKey(Constants.DATASOURCE_PREFIX+ ApiContext.getTopCompanyId());
if (StringUtils.isBlank(apiAssetClassSearchParams.getCompanyIds())) { if (StringUtils.isBlank(apiAssetClassSearchParams.getCompanyIds())) {
apiAssetClassSearchParams.setCompanyIdList(Arrays.asList(companyId)); apiAssetClassSearchParams.setCompanyIdList(Arrays.asList(companyId));
@ -1133,16 +1103,8 @@ public class CommonServiceImpl implements CommonService {
* @return * @return
*/ */
@Override @Override
public SimpleDataResponse problemReportsSummaries(String apikey, ProblemReportsSummariesSearchParams params) { public SimpleDataResponse problemReportsSummaries(String authorization, ProblemReportsSummariesSearchParams params) {
try { try {
//apikey验证
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("apikey", apikey);
ApikeyInfo2 apikeyInfo = commonOpt.getAuroraInfoByApikey(paramMap);
if (null == apikeyInfo) {
return SimpleDataResponse.fail(ResponseCode.MSG_ERROR, "Apikey is invalid");
}
if (StringUtils.isBlank(params.getBuildingName()) && StringUtils.isBlank(params.getUdfBuildingId())) { if (StringUtils.isBlank(params.getBuildingName()) && StringUtils.isBlank(params.getUdfBuildingId())) {
return SimpleDataResponse.fail(ResponseCode.MSG_ERROR, "buildingName or udfBuildingId is required"); return SimpleDataResponse.fail(ResponseCode.MSG_ERROR, "buildingName or udfBuildingId is required");
} }
@ -1151,7 +1113,7 @@ public class CommonServiceImpl implements CommonService {
} }
DataSourceContextHolder.clearCurrentDataSourceKey(); DataSourceContextHolder.clearCurrentDataSourceKey();
DataSourceContextHolder.setCurrentDataSourceKey(Constants.DATASOURCE_PREFIX+ apikeyInfo.getId()); DataSourceContextHolder.setCurrentDataSourceKey(Constants.DATASOURCE_PREFIX+ ApiContext.getTopCompanyId());
//资产关联的设备的targetId获取 //资产关联的设备的targetId获取
List<TargetIdOfAssetVO> targetIdOfAssetList = basicMonitoringAssetMapperExt.getTargetIdListByAssetName(params); List<TargetIdOfAssetVO> targetIdOfAssetList = basicMonitoringAssetMapperExt.getTargetIdListByAssetName(params);
@ -1201,7 +1163,7 @@ public class CommonServiceImpl implements CommonService {
return SimpleDataResponse.success(finalResponseList); return SimpleDataResponse.success(finalResponseList);
} catch (Exception e) { } catch (Exception e) {
logger.error("queryClass error", e); logger.error("problemReportsSummaries error", e);
return SimpleDataResponse.fail(ResponseCode.SERVER_ERROR, ResponseCode.SERVER_ERROR_MSG); return SimpleDataResponse.fail(ResponseCode.SERVER_ERROR, ResponseCode.SERVER_ERROR_MSG);
} }
@ -1387,7 +1349,7 @@ public class CommonServiceImpl implements CommonService {
@Override @Override
public SimpleDataResponse queryDeviceInfo(String apikey, ApiRiliDeviceSearchParams allDeviceSearchParams) { public SimpleDataResponse queryDeviceInfo(String authorization, ApiRiliDeviceSearchParams allDeviceSearchParams) {
// Split response by [Rili persona] and [dpf] // Split response by [Rili persona] and [dpf]
List<ApiRiliDeviceInfoVO> finalResponseVOs = new ArrayList<>(); List<ApiRiliDeviceInfoVO> finalResponseVOs = new ArrayList<>();
List<ApiRiliDeviceInfoVO> riliPersonaDeviceInfoVOs = new ArrayList<>(); List<ApiRiliDeviceInfoVO> riliPersonaDeviceInfoVOs = new ArrayList<>();
@ -1399,21 +1361,8 @@ public class CommonServiceImpl implements CommonService {
List<String> riliPersonaDeviceSearchParams = new ArrayList<>(); List<String> riliPersonaDeviceSearchParams = new ArrayList<>();
List<String> dpfDeviceSearchParams = new ArrayList<>(); List<String> dpfDeviceSearchParams = new ArrayList<>();
// Select DB by apikey DataSourceContextHolder.clearCurrentDataSourceKey();
Map<String, Object> apikeyParamMap = new HashMap<>(); DataSourceContextHolder.setCurrentDataSourceKey(Constants.DATASOURCE_PREFIX+ ApiContext.getTopCompanyId());
apikeyParamMap.put("apikey", apikey);
ApikeyInfo2 apikeyInfo = commonOpt.getAuroraInfoByApikey(apikeyParamMap);
if (null == apikeyInfo) {
return SimpleDataResponse.fail(ResponseCode.MSG_ERROR, "Apikey is invalid", new ArrayList<>());
}
Map<String, Object> companySearchMap = new HashMap<>();
companySearchMap.put("apikey", apikey);
ApikeyInfo2 selfCompanyInfo = basicCompanyMapperExt.getAuroraInfoByApikey(companySearchMap);
DataSourceContextHolder.clearCurrentDataSourceKey();
DataSourceContextHolder.setCurrentDataSourceKey(Constants.DATASOURCE_PREFIX+ apikeyInfo.getId());
// Split deviceIds by [Rili persona] and [dpf] // Split deviceIds by [Rili persona] and [dpf]
List<RiliPersonnasLatest> riliPersonaList = getRiliPersonaList(); List<RiliPersonnasLatest> riliPersonaList = getRiliPersonaList();
@ -1451,7 +1400,7 @@ public class CommonServiceImpl implements CommonService {
if (deviceIdList.size() > 0) { if (deviceIdList.size() > 0) {
Map<String, Object> paramMap = new HashMap<>(); Map<String, Object> paramMap = new HashMap<>();
paramMap.put("deviceIdList", deviceIdList); paramMap.put("deviceIdList", deviceIdList);
paramMap.put("companyId", selfCompanyInfo.getId()); paramMap.put("companyId", ApiContext.getCompanyId());
dpfDeviceInfoVOs = deviceInfoMapperExt.getRiliDeviceInfo(paramMap); dpfDeviceInfoVOs = deviceInfoMapperExt.getRiliDeviceInfo(paramMap);
// Retrieve the set of DeviceId from DeviceInfoVOs // Retrieve the set of DeviceId from DeviceInfoVOs
@ -1721,30 +1670,19 @@ public class CommonServiceImpl implements CommonService {
@Override @Override
public SimpleDataResponse querySpaceInfo(String apikey, ApiSpaceSearchParams searchParams) { public SimpleDataResponse querySpaceInfo(String authorization, ApiSpaceSearchParams searchParams) {
if (StringUtils.isBlank(searchParams.getUdfSpaceId()) || StringUtils.isBlank(searchParams.getUdfBuildingId())) { if (StringUtils.isBlank(searchParams.getUdfSpaceId()) || StringUtils.isBlank(searchParams.getUdfBuildingId())) {
return SimpleDataResponse.fail(ResponseCode.MSG_ERROR, "udfSpaceId or udfBuildingId is required"); return SimpleDataResponse.fail(ResponseCode.MSG_ERROR, "udfSpaceId or udfBuildingId is required");
} }
return getSpaceInfo(apikey, searchParams); return getSpaceInfo(authorization, searchParams);
} }
private SimpleDataResponse getSpaceInfo(String apikey, ApiSpaceSearchParams searchParams) { private SimpleDataResponse getSpaceInfo(String authorization, ApiSpaceSearchParams searchParams) {
try { try {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("apikey", apikey);
ApikeyInfo2 apikeyInfo = commonOpt.getAuroraInfoByApikey(paramMap);
if (null == apikeyInfo) {
return SimpleDataResponse.fail(ResponseCode.MSG_ERROR, "Apikey is invalid");
}
ApikeyInfo2 companyInfo = basicCompanyMapperExt.getAuroraInfoByApikey(paramMap);
long companyId = companyInfo.getId();
DataSourceContextHolder.clearCurrentDataSourceKey(); DataSourceContextHolder.clearCurrentDataSourceKey();
DataSourceContextHolder.setCurrentDataSourceKey(Constants.DATASOURCE_PREFIX+ apikeyInfo.getId()); DataSourceContextHolder.setCurrentDataSourceKey(Constants.DATASOURCE_PREFIX+ ApiContext.getTopCompanyId());
searchParams.setCompanyIdList(Arrays.asList(companyId)); searchParams.setCompanyIdList(Arrays.asList(ApiContext.getCompanyId()));
List<ApiSpaceWithAssetVO> resultList = basicSpaceMapperExt.getApiQuerySpaceInfo(searchParams); List<ApiSpaceWithAssetVO> resultList = basicSpaceMapperExt.getApiQuerySpaceInfo(searchParams);
if (CollectionUtils.isNotEmpty(resultList)) { if (CollectionUtils.isNotEmpty(resultList)) {
@ -1780,31 +1718,23 @@ public class CommonServiceImpl implements CommonService {
@Override @Override
public SimpleDataResponse querySpaceInfoList(String apikey, ApiSpaceSearchParams searchParams) { public SimpleDataResponse querySpaceInfoList(String authorization, ApiSpaceSearchParams searchParams) {
if (StringUtils.isBlank(searchParams.getUdfFloorId()) || StringUtils.isBlank(searchParams.getUdfBuildingId())) { if (StringUtils.isBlank(searchParams.getUdfFloorId()) || StringUtils.isBlank(searchParams.getUdfBuildingId())) {
return SimpleDataResponse.fail(ResponseCode.MSG_ERROR, "udfFloorId or udfBuildingId is required"); return SimpleDataResponse.fail(ResponseCode.MSG_ERROR, "udfFloorId or udfBuildingId is required");
} }
return getSpaceInfo(apikey, searchParams); return getSpaceInfo(authorization, searchParams);
} }
@Override @Override
public SimpleDataResponse getS3FileUrl(BatchGetFileTemporaryParams batchGetFileTemporaryParams, String apikey) { public SimpleDataResponse getS3FileUrl(BatchGetFileTemporaryParams batchGetFileTemporaryParams, String authorization) {
if (CollectionUtils.isEmpty(batchGetFileTemporaryParams.getKeys())) { if (CollectionUtils.isEmpty(batchGetFileTemporaryParams.getKeys())) {
return new SimpleDataResponse(ResponseCode.MSG_ERROR, "keys required"); return new SimpleDataResponse(ResponseCode.MSG_ERROR, "keys required");
} }
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("apikey", apikey);
ApikeyInfo2 apikeyInfo = commonOpt.getAuroraInfoByApikey(paramMap);
if (null == apikeyInfo) {
return SimpleDataResponse.fail(ResponseCode.MSG_ERROR, "Apikey is invalid");
}
DataSourceContextHolder.clearCurrentDataSourceKey(); DataSourceContextHolder.clearCurrentDataSourceKey();
DataSourceContextHolder.setCurrentDataSourceKey(Constants.DATASOURCE_PREFIX+ apikeyInfo.getId()); DataSourceContextHolder.setCurrentDataSourceKey(Constants.DATASOURCE_PREFIX+ ApiContext.getTopCompanyId());
String bucketName = awsBucketAdress; String bucketName = awsBucketAdress;
String accessKey = awsAccessKeyId; String accessKey = awsAccessKeyId;
@ -1895,20 +1825,11 @@ public class CommonServiceImpl implements CommonService {
@Override @Override
public SimpleDataResponse addBuilding(AddBuildingParams addBuildingParams, String apikey) { public SimpleDataResponse addBuilding(AddBuildingParams addBuildingParams, String authorization) {
Map<String, Object> paramMap = new HashMap<>(); long companyId = ApiContext.getCompanyId();
paramMap.put("apikey", apikey);
ApikeyInfo2 apikeyInfo = commonOpt.getAuroraInfoByApikey(paramMap);
if (null == apikeyInfo) {
return SimpleDataResponse.fail(ResponseCode.MSG_ERROR, "Apikey is invalid");
}
ApikeyInfo2 companyInfo = basicCompanyMapperExt.getAuroraInfoByApikey(paramMap);
long companyId = companyInfo.getId();
DataSourceContextHolder.clearCurrentDataSourceKey(); DataSourceContextHolder.clearCurrentDataSourceKey();
DataSourceContextHolder.setCurrentDataSourceKey(Constants.DATASOURCE_PREFIX+ apikeyInfo.getId()); DataSourceContextHolder.setCurrentDataSourceKey(Constants.DATASOURCE_PREFIX+ ApiContext.getTopCompanyId());
OptBuildingParams optBuildingParams = new OptBuildingParams(); OptBuildingParams optBuildingParams = new OptBuildingParams();
optBuildingParams.setBuildingBucket(addBuildingParams.getBuildingBucket()); optBuildingParams.setBuildingBucket(addBuildingParams.getBuildingBucket());
@ -1922,17 +1843,9 @@ public class CommonServiceImpl implements CommonService {
@Override @Override
public SimpleDataResponse queryBuilding(QueryBuilding queryBuilding, String apikey) { public SimpleDataResponse queryBuilding(QueryBuilding queryBuilding, String authorization) {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("apikey", apikey);
ApikeyInfo2 apikeyInfo = commonOpt.getAuroraInfoByApikey(paramMap);
if (null == apikeyInfo) {
return SimpleDataResponse.fail(ResponseCode.MSG_ERROR, "Apikey is invalid");
}
DataSourceContextHolder.clearCurrentDataSourceKey(); DataSourceContextHolder.clearCurrentDataSourceKey();
DataSourceContextHolder.setCurrentDataSourceKey(Constants.DATASOURCE_PREFIX+ apikeyInfo.getId()); DataSourceContextHolder.setCurrentDataSourceKey(Constants.DATASOURCE_PREFIX+ ApiContext.getTopCompanyId());
BasicBuildingExample example = new BasicBuildingExample(); BasicBuildingExample example = new BasicBuildingExample();
BasicBuildingExample.Criteria criteria = example.createCriteria(); BasicBuildingExample.Criteria criteria = example.createCriteria();
@ -1960,7 +1873,7 @@ public class CommonServiceImpl implements CommonService {
@Override @Override
public SimpleDataResponse queryCancelAlarmDevice(Long companyId, String apikey, public SimpleDataResponse queryCancelAlarmDevice(Long companyId, String authorization,
ApiAlarmDeviceSearchParams apiAlarmDeviceSearchParams) { ApiAlarmDeviceSearchParams apiAlarmDeviceSearchParams) {
String redisKey = "device_cancel_alarm"; String redisKey = "device_cancel_alarm";
// Create Jedis connection // Create Jedis connection
@ -1968,13 +1881,10 @@ public class CommonServiceImpl implements CommonService {
List<ApiCancelAlarmDeviceInfoVO> deviceInfoVOs = new ArrayList<>(); List<ApiCancelAlarmDeviceInfoVO> deviceInfoVOs = new ArrayList<>();
try { try {
Map<String, Object> paramMap = new HashMap<>(); Map<String, Object> paramMap = new HashMap<>();
if (null != companyId) { if (null == companyId) {
paramMap.put("companyId", companyId); companyId = ApiContext.getCompanyId();
} else {
paramMap.put("apikey", apikey);
ApikeyInfo2 selfInfo = basicCompanyMapperExt.getAuroraInfoByApikey(paramMap);
companyId = selfInfo.getId();
} }
paramMap.put("companyId", companyId);
Long topCompanyId = dataSourceInterceptor.getTopCompanyId(companyId+""); Long topCompanyId = dataSourceInterceptor.getTopCompanyId(companyId+"");
DataSourceContextHolder.setCurrentDataSourceKey(Constants.DATASOURCE_PREFIX +topCompanyId); DataSourceContextHolder.setCurrentDataSourceKey(Constants.DATASOURCE_PREFIX +topCompanyId);

30
data-center-business-util/src/main/java/com/techsor/datacenter/business/util/ApiContext.java

@ -2,18 +2,46 @@ package com.techsor.datacenter.business.util;
public class ApiContext { public class ApiContext {
// 顶级公司 ID
private static final ThreadLocal<Long> TOP_COMPANY_ID_HOLDER = new ThreadLocal<>();
// 当前公司 ID
private static final ThreadLocal<Long> COMPANY_ID_HOLDER = new ThreadLocal<>(); private static final ThreadLocal<Long> COMPANY_ID_HOLDER = new ThreadLocal<>();
// API Key
private static final ThreadLocal<String> API_KEY_HOLDER = new ThreadLocal<>();
public static void setTopCompanyId(Long topCompanyId) {
TOP_COMPANY_ID_HOLDER.set(topCompanyId);
}
public static void setCompanyId(Long companyId) { public static void setCompanyId(Long companyId) {
COMPANY_ID_HOLDER.set(companyId); COMPANY_ID_HOLDER.set(companyId);
} }
public static void setApiKey(String apiKey) {
API_KEY_HOLDER.set(apiKey);
}
public static void set(String apiKey, Long companyId, Long topCompanyId) {
API_KEY_HOLDER.set(apiKey);
COMPANY_ID_HOLDER.set(companyId);
TOP_COMPANY_ID_HOLDER.set(topCompanyId);
}
public static Long getTopCompanyId() {
return TOP_COMPANY_ID_HOLDER.get();
}
public static Long getCompanyId() { public static Long getCompanyId() {
return COMPANY_ID_HOLDER.get(); return COMPANY_ID_HOLDER.get();
} }
public static String getApiKey() {
return API_KEY_HOLDER.get();
}
public static void clear() { public static void clear() {
API_KEY_HOLDER.remove();
COMPANY_ID_HOLDER.remove(); COMPANY_ID_HOLDER.remove();
TOP_COMPANY_ID_HOLDER.remove();
} }
} }

3
data-center-business-util/src/main/java/com/techsor/datacenter/business/util/SimpleJwtTokenUtil.java

@ -7,6 +7,7 @@ import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.security.MessageDigest; import java.security.MessageDigest;
import java.util.Base64; import java.util.Base64;
import java.util.UUID;
public class SimpleJwtTokenUtil { public class SimpleJwtTokenUtil {
@ -21,7 +22,7 @@ public class SimpleJwtTokenUtil {
} }
public static String generate() { public static String generate() {
return generate(subject, secret); return generate(subject, secret+ UUID.randomUUID().toString());
} }
/** /**

Loading…
Cancel
Save