@@ -90,11 +90,11 @@ | |||||
<groupId>org.springframework.boot</groupId> | <groupId>org.springframework.boot</groupId> | ||||
<artifactId>spring-boot-starter-aop</artifactId> | <artifactId>spring-boot-starter-aop</artifactId> | ||||
</dependency> | </dependency> | ||||
<dependency> | |||||
<groupId>com.fasterxml.jackson.core</groupId> | |||||
<artifactId>jackson-databind</artifactId> | |||||
<version>2.16.1</version> | |||||
</dependency> | |||||
<!-- <dependency>--> | |||||
<!-- <groupId>com.fasterxml.jackson.core</groupId>--> | |||||
<!-- <artifactId>jackson-databind</artifactId>--> | |||||
<!-- <version>2.16.1</version>--> | |||||
<!-- </dependency>--> | |||||
<!--cache--> | <!--cache--> | ||||
<dependency> | <dependency> | ||||
<groupId>com.github.ben-manes.caffeine</groupId> | <groupId>com.github.ben-manes.caffeine</groupId> | ||||
@@ -157,6 +157,14 @@ | |||||
</dependency> | </dependency> | ||||
<dependency> | <dependency> | ||||
<groupId>com.ningdatech</groupId> | <groupId>com.ningdatech</groupId> | ||||
<artifactId>nd-irs-starter</artifactId> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>com.ningdatech</groupId> | |||||
<artifactId>nd-cache-starter</artifactId> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>com.ningdatech</groupId> | |||||
<artifactId>nd-file-starter</artifactId> | <artifactId>nd-file-starter</artifactId> | ||||
</dependency> | </dependency> | ||||
<dependency> | <dependency> | ||||
@@ -24,7 +24,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; | |||||
@EnableGlobalMethodSecurity(prePostEnabled = true) | @EnableGlobalMethodSecurity(prePostEnabled = true) | ||||
@EnableTransactionManagement | @EnableTransactionManagement | ||||
@EnableAspectJAutoProxy(exposeProxy = true) | @EnableAspectJAutoProxy(exposeProxy = true) | ||||
@ComponentScan(basePackages = {"com.ningdatech.kqapi", "com.ningdatech.kqapi.common"}) | |||||
@ComponentScan(basePackages = {"com.ningdatech.kqapi", "com.ningdatech.kqapi.common", "com.ningdatech.irs"}) | |||||
public class App { | public class App { | ||||
protected static final String MAPPER_PACKAGES = "com.ningdatech.kqapi.**.mapper"; | protected static final String MAPPER_PACKAGES = "com.ningdatech.kqapi.**.mapper"; | ||||
@@ -23,7 +23,8 @@ import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice; | |||||
"com.ningdatech.kqapi.user.controller", | "com.ningdatech.kqapi.user.controller", | ||||
"com.ningdatech.kqapi.security.controller", | "com.ningdatech.kqapi.security.controller", | ||||
"com.ningdatech.kqapi.zzsfw.controller", | "com.ningdatech.kqapi.zzsfw.controller", | ||||
"com.ningdatech.kqapi.scheduler.controller" | |||||
"com.ningdatech.kqapi.scheduler.controller", | |||||
"com.ningdatech.kqapi.irs.controller" | |||||
}) | }) | ||||
public class GlobalResponseHandler implements ResponseBodyAdvice<Object> { | public class GlobalResponseHandler implements ResponseBodyAdvice<Object> { | ||||
@@ -0,0 +1,47 @@ | |||||
package com.ningdatech.kqapi.irs.controller; | |||||
import java.util.List; | |||||
import org.springframework.validation.annotation.Validated; | |||||
import org.springframework.web.bind.annotation.GetMapping; | |||||
import org.springframework.web.bind.annotation.RequestMapping; | |||||
import org.springframework.web.bind.annotation.RequestParam; | |||||
import org.springframework.web.bind.annotation.RestController; | |||||
import com.ningdatech.kqapi.irs.manage.IrsManage; | |||||
import com.ningdatech.log.annotation.WebLog; | |||||
import io.swagger.annotations.Api; | |||||
import io.swagger.annotations.ApiOperation; | |||||
import lombok.RequiredArgsConstructor; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
/** | |||||
* @author CMM | |||||
* @date 2024/8/19 11:11 | |||||
*/ | |||||
@Slf4j | |||||
@Validated | |||||
@RestController | |||||
@RequestMapping("/api/v1/irs") | |||||
@Api(value = "irs", tags = "irs-信息查询") | |||||
@RequiredArgsConstructor | |||||
public class IrsController { | |||||
private final IrsManage irsManage; | |||||
@ApiOperation(value = "irs事项基本信息列表", notes = "irs事项基本信息列表") | |||||
@GetMapping("/item-basic-info-list") | |||||
public Object itemBasicInfoList(@RequestParam(required = false) String startDate, | |||||
@RequestParam(required = false) String endDate, | |||||
@RequestParam Integer pageSize, | |||||
@RequestParam Integer pageNum) { | |||||
return irsManage.itemBasicInfoList(startDate, endDate, pageSize, pageNum); | |||||
} | |||||
@ApiOperation(value = "irs事项基本信息列表", notes = "irs事项基本信息列表") | |||||
@GetMapping("/item-basic-info-detail") | |||||
public Object itemBasicInfoDetail(@RequestParam String itemId) { | |||||
return irsManage.itemBasicInfoDetail(itemId); | |||||
} | |||||
} |
@@ -0,0 +1,149 @@ | |||||
package com.ningdatech.kqapi.irs.manage; | |||||
import cn.hutool.core.collection.CollUtil; | |||||
import com.alibaba.fastjson.JSON; | |||||
import com.alibaba.fastjson.JSONArray; | |||||
import com.alibaba.fastjson.JSONObject; | |||||
import com.ningdatech.irs.service.IRefreshTokenService; | |||||
import com.ningdatech.irs.utils.HttpUtil; | |||||
import com.ningdatech.kqapi.common.util.CryptUtils; | |||||
import lombok.RequiredArgsConstructor; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.beans.factory.annotation.Value; | |||||
import org.springframework.http.HttpEntity; | |||||
import org.springframework.http.HttpHeaders; | |||||
import org.springframework.http.HttpMethod; | |||||
import org.springframework.http.ResponseEntity; | |||||
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; | |||||
import org.springframework.stereotype.Component; | |||||
import org.springframework.util.LinkedMultiValueMap; | |||||
import org.springframework.util.MultiValueMap; | |||||
import org.springframework.web.client.RestTemplate; | |||||
import javax.annotation.Resource; | |||||
import java.util.ArrayList; | |||||
import java.util.Collections; | |||||
import java.util.List; | |||||
import java.util.Objects; | |||||
/** | |||||
* @author CMM | |||||
* @author CMM | |||||
* @date 2024/8/19 11:27 | |||||
* / | |||||
* /** | |||||
* @since 2024/08/19 11:27 | |||||
*/ | |||||
@Component | |||||
@Slf4j | |||||
@RequiredArgsConstructor | |||||
public class IrsManage { | |||||
@Value("${irs.item-basic-info.appKey}") | |||||
private String appKey; | |||||
@Value("${irs.item-basic-info.appSecret}") | |||||
private String appSecret; | |||||
@Value("${irs.item-basic-info.listUrl}") | |||||
private String itemBasicInfoListUrl; | |||||
@Value("${irs.item-basic-info.detailUrl}") | |||||
private String itemBasicInfoDetailUrl; | |||||
@Resource | |||||
private IRefreshTokenService refreshTokenService; | |||||
@Value("${irs.interface-refresh.request-token-url}") | |||||
private String govRequestTokenUrl; | |||||
@Value("${irs.interface-refresh.refresh-token-url}") | |||||
private String govRefreshTokenUrl; | |||||
public Object itemBasicInfoList(String startDate, String endDate, Integer pageSize, Integer pageNum) { | |||||
long timestamp = System.currentTimeMillis(); | |||||
String secret = refreshTokenService.refreshToken(appKey, appSecret, govRequestTokenUrl, govRefreshTokenUrl, | |||||
HttpMethod.POST.name()); | |||||
String sign = null; | |||||
try{ | |||||
sign = CryptUtils.MD5Encode(appKey + secret + timestamp); | |||||
}catch (Exception e){ | |||||
log.error(e.getMessage()); | |||||
} | |||||
HttpComponentsClientHttpRequestFactory factory = HttpUtil.generateHttpRequestFactory(); | |||||
RestTemplate restTemplate; | |||||
if(Objects.nonNull(factory)){ | |||||
restTemplate = new RestTemplate(factory); | |||||
}else{ | |||||
restTemplate = new RestTemplate(); | |||||
} | |||||
MultiValueMap<String, Object> map = new LinkedMultiValueMap<>(); | |||||
map.add("pageSize",pageSize); | |||||
map.add("pageNum",pageNum); | |||||
map.add("startDate",startDate); | |||||
map.add("endDate",endDate); | |||||
map.add("paramStr","update_date"); | |||||
map.add("viewName","v_dsc_sx_ads_share_item_qlt_qlsx_common_i_d_v_kq_insensitive"); | |||||
map.add("appKey",appKey); | |||||
map.add("sign",sign); | |||||
map.add("requestTime",timestamp); | |||||
// 创建 HttpHeaders 对象 | |||||
HttpHeaders headers = new HttpHeaders(); | |||||
// 创建 HttpEntity 对象,并传入 HttpHeaders | |||||
HttpEntity<Object> httpEntity = new HttpEntity<>(map,headers); | |||||
log.info("请求参数 :{}", JSON.toJSONString(map)); | |||||
JSONObject jsonObject = restTemplate.postForObject(itemBasicInfoListUrl, httpEntity, JSONObject.class); | |||||
log.info("return list data :{}",jsonObject); | |||||
JSONArray dataArray = Objects.requireNonNull(jsonObject).getJSONArray("data"); | |||||
List<Object> dataList = new ArrayList<>(dataArray); | |||||
if(CollUtil.isNotEmpty(dataList)){ | |||||
return dataList; | |||||
} else { | |||||
return jsonObject; | |||||
} | |||||
} | |||||
public Object itemBasicInfoDetail(String itemId) { | |||||
long timestamp = System.currentTimeMillis(); | |||||
String secret = refreshTokenService.refreshToken(appKey, appSecret, govRequestTokenUrl, govRefreshTokenUrl, | |||||
HttpMethod.POST.name()); | |||||
String sign = null; | |||||
try{ | |||||
sign = CryptUtils.MD5Encode(appKey + secret + timestamp); | |||||
}catch (Exception e){ | |||||
log.error(e.getMessage()); | |||||
} | |||||
HttpComponentsClientHttpRequestFactory factory = HttpUtil.generateHttpRequestFactory(); | |||||
RestTemplate restTemplate; | |||||
if(Objects.nonNull(factory)){ | |||||
restTemplate = new RestTemplate(factory); | |||||
}else{ | |||||
restTemplate = new RestTemplate(); | |||||
} | |||||
MultiValueMap<String, Object> map = new LinkedMultiValueMap<>(); | |||||
// 附加信息 | |||||
map.add("paramStr",itemId); | |||||
map.add("viewName","v_dsc_sx_ads_share_item_qlt_qlsx_common_i_d_v_kq_insensitive"); | |||||
map.add("appKey",appKey); | |||||
map.add("sign",sign); | |||||
map.add("requestTime",timestamp); | |||||
// 创建 HttpHeaders 对象 | |||||
HttpHeaders headers = new HttpHeaders(); | |||||
// 创建 HttpEntity 对象,并传入 HttpHeaders | |||||
HttpEntity<Object> httpEntity = new HttpEntity<>(map,headers); | |||||
log.info("请求参数 :{}", JSON.toJSONString(map)); | |||||
JSONObject jsonObject = restTemplate.postForObject(itemBasicInfoDetailUrl, httpEntity, JSONObject.class); | |||||
log.info("return detail data :{}",jsonObject); | |||||
JSONArray dataArray = Objects.requireNonNull(jsonObject).getJSONArray("data"); | |||||
List<Object> dataList = new ArrayList<>(dataArray); | |||||
if(CollUtil.isNotEmpty(dataList)){ | |||||
return dataList; | |||||
} else { | |||||
return jsonObject; | |||||
} | |||||
} | |||||
} |
@@ -1,5 +1,5 @@ | |||||
server: | server: | ||||
port: 33060 | |||||
port: 33061 | |||||
servlet: | servlet: | ||||
context-path: /kq | context-path: /kq | ||||
shutdown: graceful | shutdown: graceful | ||||
@@ -144,5 +144,15 @@ sso: | |||||
user-info: | user-info: | ||||
internet-url: https://ibcdsg.zj.gov.cn:8443/restapi/prod/IC33000020220329000008/uc/sso/getUserInfo | internet-url: https://ibcdsg.zj.gov.cn:8443/restapi/prod/IC33000020220329000008/uc/sso/getUserInfo | ||||
zww-url: https://bcdsg.zj.gov.cn:8443/restapi/prod/IC33000020220329000008/uc/sso/getUserInfo | zww-url: https://bcdsg.zj.gov.cn:8443/restapi/prod/IC33000020220329000008/uc/sso/getUserInfo | ||||
irs: | |||||
interface-refresh: | |||||
method: POST | |||||
request-token-url: http://interface.zjzwfw.gov.cn/gateway/app/refreshTokenByKey.htm | |||||
refresh-token-url: http://interface.zjzwfw.gov.cn/gateway/app/refreshTokenBySec.htm | |||||
item-basic-info: | |||||
appSecret: oUu7hk5NnOBghTw | |||||
appKey: qlZDZwhFWx | |||||
listUrl: https://typt.kq.gov.cn:8888/datashare/rest/query/U0022S00160/V1?apiUuid=C9030E259C6C43BBAA89DDF36F2386B0 | |||||
detailUrl: https://typt.kq.gov.cn:8888/gateway/datashare/rest/query/U0022S00159/V1?apiUuid=14ED96404A834101992F00B4F6BBC7ED | |||||
@@ -140,4 +140,14 @@ sso: | |||||
zww-url: https://bcdsg.zj.gov.cn:8443/restapi/prod/IC33000020220329000007/uc/sso/access_token | zww-url: https://bcdsg.zj.gov.cn:8443/restapi/prod/IC33000020220329000007/uc/sso/access_token | ||||
user-info: | user-info: | ||||
internet-url: https://ibcdsg.zj.gov.cn:8443/restapi/prod/IC33000020220329000008/uc/sso/getUserInfo | internet-url: https://ibcdsg.zj.gov.cn:8443/restapi/prod/IC33000020220329000008/uc/sso/getUserInfo | ||||
zww-url: https://bcdsg.zj.gov.cn:8443/restapi/prod/IC33000020220329000008/uc/sso/getUserInfo | |||||
zww-url: https://bcdsg.zj.gov.cn:8443/restapi/prod/IC33000020220329000008/uc/sso/getUserInfo | |||||
irs: | |||||
interface-refresh: | |||||
method: POST | |||||
request-token-url: http://interface.zjzwfw.gov.cn/gateway/app/refreshTokenByKey.htm | |||||
refresh-token-url: http://interface.zjzwfw.gov.cn/gateway/app/refreshTokenBySec.htm | |||||
item-basic-info: | |||||
appSecret: oUu7hk5NnOBghTw | |||||
appKey: qlZDZwhFWx | |||||
listUrl: https://typt.kq.gov.cn:8888/datashare/rest/query/U0022S00160/V1?apiUuid=C9030E259C6C43BBAA89DDF36F2386B0 | |||||
detailUrl: https://typt.kq.gov.cn:8888/gateway/datashare/rest/query/U0022S00159/V1?apiUuid=14ED96404A834101992F00B4F6BBC7ED |
@@ -145,5 +145,15 @@ sso: | |||||
user-info: | user-info: | ||||
internet-url: https://ibcdsg.zj.gov.cn:8443/restapi/prod/IC33000020220329000008/uc/sso/getUserInfo | internet-url: https://ibcdsg.zj.gov.cn:8443/restapi/prod/IC33000020220329000008/uc/sso/getUserInfo | ||||
zww-url: https://bcdsg.zj.gov.cn:8443/restapi/prod/IC33000020220329000008/uc/sso/getUserInfo | zww-url: https://bcdsg.zj.gov.cn:8443/restapi/prod/IC33000020220329000008/uc/sso/getUserInfo | ||||
irs: | |||||
interface-refresh: | |||||
method: POST | |||||
request-token-url: http://interface.zjzwfw.gov.cn/gateway/app/refreshTokenByKey.htm | |||||
refresh-token-url: http://interface.zjzwfw.gov.cn/gateway/app/refreshTokenBySec.htm | |||||
item-basic-info: | |||||
appSecret: oUu7hk5NnOBghTw | |||||
appKey: qlZDZwhFWx | |||||
listUrl: https://typt.kq.gov.cn:8888/datashare/rest/query/U0022S00160/V1?apiUuid=C9030E259C6C43BBAA89DDF36F2386B0 | |||||
detailUrl: https://typt.kq.gov.cn:8888/gateway/datashare/rest/query/U0022S00159/V1?apiUuid=14ED96404A834101992F00B4F6BBC7ED | |||||
@@ -22,6 +22,7 @@ security: | |||||
- /ok.html | - /ok.html | ||||
- /open/api/** | - /open/api/** | ||||
- /api/v1/wechat/** | - /api/v1/wechat/** | ||||
- /api/v1/irs/** | |||||
ignore-csrf-urls: | ignore-csrf-urls: | ||||
- /**/anonymous/** | - /**/anonymous/** | ||||
- /api/v1/poclicy/** | - /api/v1/poclicy/** | ||||
@@ -22,6 +22,7 @@ security: | |||||
- /ok.html | - /ok.html | ||||
- /open/api/** | - /open/api/** | ||||
- /api/v1/wechat/** | - /api/v1/wechat/** | ||||
- /api/v1/irs/** | |||||
ignore-csrf-urls: | ignore-csrf-urls: | ||||
- /**/anonymous/** | - /**/anonymous/** | ||||
- /api/v1/poclicy/** | - /api/v1/poclicy/** | ||||
@@ -19,6 +19,7 @@ security: | |||||
- /doc.html | - /doc.html | ||||
- /ok.html | - /ok.html | ||||
- /api/v1/wechat/** | - /api/v1/wechat/** | ||||
- /api/v1/irs/** | |||||
ignore-csrf-urls: | ignore-csrf-urls: | ||||
- /**/anonymous/** | - /**/anonymous/** | ||||
- /api/v1/user/auth/** | - /api/v1/user/auth/** | ||||
@@ -34,6 +35,7 @@ security: | |||||
- /optLog/** | - /optLog/** | ||||
- /dict/** | - /dict/** | ||||
- /api/v1/wechat/** | - /api/v1/wechat/** | ||||
- /api/v1/irs/** | |||||
role-map: | role-map: | ||||
"engineer": | "engineer": | ||||
"project_manager": | "project_manager": | ||||