Browse Source

【功能优化】无证明对接增加缓存

1.无证明获取token增加缓存,待接口身份验证失败时重新获取token({"code":"200","msg":"","data":"{\"custom\":{\"code\":0,\"text\":\"身份验证失败\"},\"status\":{\"code\":200,\"text\":\"\"}}"})
2.缓存所有证明列表
3.所有接口默认去缓存token,身份验证失败时从接口刷新token
national_dev
Bill 2 years ago
parent
commit
3d78edd41d
  1. 12
      code/smart-community/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/ActWithoutProofController.java
  2. 13
      code/smart-community/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/ActWithoutProofService.java
  3. 113
      code/smart-community/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/ActWithoutProofServiceImpl.java

12
code/smart-community/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/ActWithoutProofController.java

@ -36,11 +36,11 @@ public class ActWithoutProofController {
*/
@GetMapping("getAll")
public Result getAll(@RequestParam Map<String, Object> params) throws IOException {
String token = ActWithoutProofUtils.getToken();
String token = actWithoutProofService.getToken(false);
if (StringUtils.isEmpty(token)) {
return new Result().error(-1, "获取token失败,请联系管理员!");
}
params.put("token", token);
return new Result().ok(actWithoutProofService.getZmTasks(params));
}
@ -54,7 +54,7 @@ public class ActWithoutProofController {
@GetMapping("getWzmProject")
public Result<List<WzmDocumentRsultDTO>> getWzmProject(@RequestParam Map<String, Object> params) throws IOException {
String idCard = "", certType = "", qrcode = "", xm = "", zmtaskguid = "";
String token = ActWithoutProofUtils.getToken();
String token = actWithoutProofService.getToken(false);
if (StringUtils.isEmpty(token)) {
return new Result().error(-1, "获取token失败,请联系管理员!");
}
@ -72,13 +72,13 @@ public class ActWithoutProofController {
if (null != params.get("zmtaskguid")) {
zmtaskguid = (String) params.get("zmtaskguid");
}
return new Result().ok(actWithoutProofService.getWzmProject(token, idCard, certType, qrcode, xm, zmtaskguid));
return new Result().ok(actWithoutProofService.getWzmProject(idCard, certType, qrcode, xm, zmtaskguid));
}
@GetMapping("redealProject")
public Result redealProject(@RequestParam Map<String, Object> params) throws IOException {
String idCard = "", zmtaskguid = "";
String token = ActWithoutProofUtils.getToken();
String token = actWithoutProofService.getToken(false);
if (StringUtils.isEmpty(token)) {
return new Result().error(-1, "获取token失败,请联系管理员!");
}
@ -88,6 +88,6 @@ public class ActWithoutProofController {
if (null != params.get("zmtaskguid")) {
zmtaskguid = (String) params.get("zmtaskguid");
}
return new Result().ok(actWithoutProofService.redealProject(token, idCard, zmtaskguid));
return new Result().ok(actWithoutProofService.redealProject(idCard, zmtaskguid));
}
}

13
code/smart-community/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/ActWithoutProofService.java

@ -34,7 +34,7 @@ public interface ActWithoutProofService {
* @param xm 残疾人证和不动产权属状况证明必填
* @param zmtaskguid 证明guid
*/
List<WzmDocumentRsultDTO> getWzmProject(String token, String idCard, String certType, String qrcode, String xm, String zmtaskguid) throws IOException;
List<WzmDocumentRsultDTO> getWzmProject(String idCard, String certType, String qrcode, String xm, String zmtaskguid) throws IOException;
/**
* 重新开具证明
@ -44,5 +44,14 @@ public interface ActWithoutProofService {
* @param zmtaskguid
* @return
*/
Result redealProject(String token, String idCard, String zmtaskguid) throws IOException;
Result redealProject(String idCard, String zmtaskguid) throws IOException;
/**
* 获取token
* 先从缓存中获取
* 如果缓存没有或失效从接口中获取
* @param refresh 是否刷新token(true刷新false不刷新)
* @return
*/
String getToken(Boolean refresh) throws IOException;;
}

113
code/smart-community/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/ActWithoutProofServiceImpl.java

@ -3,6 +3,7 @@ package com.epmet.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.redis.RedisUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.result.WzmDocumentRsultDTO;
import com.epmet.dto.result.WzmProjectResultDTO;
@ -18,7 +19,9 @@ import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import javax.annotation.Resource;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.ArrayList;
@ -35,9 +38,21 @@ import java.util.Map;
@Service
public class ActWithoutProofServiceImpl implements ActWithoutProofService {
@Resource
private RedisUtils redisUtils;
@Override
public List<WzmProjectResultDTO> getZmTasks(Map<String, Object> param) throws IOException {
String listKey = "WITHOUT_PROOF_LIST";
List<WzmProjectResultDTO> list = (List<WzmProjectResultDTO>) redisUtils.get(listKey);
if(!ObjectUtils.isEmpty(list)) {
return list;
}
CloseableHttpClient client = null;
CloseableHttpResponse response = null;
try {
@ -64,7 +79,7 @@ public class ActWithoutProofServiceImpl implements ActWithoutProofService {
post.setHeader("appKey", ActWithoutProofUtils.APP_KEY);
post.setHeader("Content-Type", "application/json");
params = new JSONObject();
params.put("token", param.get("token"));
params.put("token", getToken(false));
params.put("params", baseEncode);
post.setEntity(new StringEntity(params.toString(), Charset.forName("UTF-8")));
response = client.execute(post);
@ -72,6 +87,9 @@ public class ActWithoutProofServiceImpl implements ActWithoutProofService {
JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity()));
List<WzmProjectResultDTO> resultList = new ArrayList<>();
if (result.getString("code").equals("200")) {
if(isTokenExpire(result)) {
getToken(true);
} else {
JSONArray jsonArray = JSONObject.parseObject(result.getJSONObject("data").getString("custom")).getJSONArray("result");
if (null != jsonArray && jsonArray.size() > 0) {
for (Object data : jsonArray) {
@ -84,7 +102,10 @@ public class ActWithoutProofServiceImpl implements ActWithoutProofService {
resultList.add(dto);
}
}
redisUtils.set(listKey, resultList);
}
log.info(result.toString());
return resultList;
} else {
String erro = JSONObject.parseObject(result.getJSONObject("data").getString("custom")).getString("text");
@ -102,7 +123,8 @@ public class ActWithoutProofServiceImpl implements ActWithoutProofService {
}
@Override
public List<WzmDocumentRsultDTO> getWzmProject(String token, String idCard, String certType, String qrcode, String xm, String zmtaskguid) throws IOException {
public List<WzmDocumentRsultDTO> getWzmProject(String idCard, String certType, String qrcode, String xm, String zmtaskguid) throws IOException {
CloseableHttpClient client = null;
CloseableHttpResponse response = null;
try {
@ -137,7 +159,7 @@ public class ActWithoutProofServiceImpl implements ActWithoutProofService {
post.setHeader("Content-Type", "application/json");
post.setHeader("Accept-Encoding", "deflate/br");
params = new JSONObject();
params.put("token", token);
params.put("token", getToken(false));
params.put("params", baseEncode);
post.setEntity(new StringEntity(params.toString(), Charset.forName("UTF-8")));
response = client.execute(post);
@ -146,12 +168,15 @@ public class ActWithoutProofServiceImpl implements ActWithoutProofService {
WzmDocumentRsultDTO dto = null;
List<WzmDocumentRsultDTO> dtoList= new ArrayList<>();
if (result.getString("code").equals("200")) {
if(isTokenExpire(result)) {
getToken(true);
} else {
JSONArray jsonArray = JSONObject.parseObject(result.getJSONObject("data").getString("custom")).getJSONArray("resultlist");
if (null != jsonArray && jsonArray.size() > 0) {
JSONObject j = JSONObject.parseObject(jsonArray.get(0).toString());
dto = new WzmDocumentRsultDTO();
dto.setZmresultname(j.getString("zmresultname"));
if(StringUtils.isNotEmpty(j.getString("downloadurl"))){
if (StringUtils.isNotEmpty(j.getString("downloadurl"))) {
String url = j.getString("downloadurl");
if (url.startsWith("http://172.20.84.138/")) {
url = url.replaceAll("http://172.20.84.138/", "https://rzzhsq.shuzirizhao.cn/");
@ -159,11 +184,12 @@ public class ActWithoutProofServiceImpl implements ActWithoutProofService {
dto.setDownloadurl(url);
}
dto.setTimeqrcode(j.getString("timeqrcode"));
if(StringUtils.isNotEmpty(j.getString("base64str"))){
if (StringUtils.isNotEmpty(j.getString("base64str"))) {
dto.setBase64str("data:image/jpeg;base64," + j.getString("base64str"));
}
dtoList.add(dto);
}
}
return dtoList;
} else {
String erro = JSONObject.parseObject(result.getJSONObject("data").getString("custom")).getString("text");
@ -181,7 +207,7 @@ public class ActWithoutProofServiceImpl implements ActWithoutProofService {
}
@Override
public Result redealProject(String token, String idCard, String zmtaskguid) throws IOException {
public Result redealProject(String idCard, String zmtaskguid) throws IOException {
CloseableHttpClient client = null;
CloseableHttpResponse response = null;
try {
@ -205,15 +231,20 @@ public class ActWithoutProofServiceImpl implements ActWithoutProofService {
post.setHeader("appKey", ActWithoutProofUtils.APP_KEY);
post.setHeader("Content-Type", "application/json");
params = new JSONObject();
params.put("token", token);
params.put("token", getToken(false));
params.put("params", baseEncode);
post.setEntity(new StringEntity(params.toString(), Charset.forName("UTF-8")));
response = client.execute(post);
//返回
JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity()));
if (result.getString("code").equals("200")) {
if(isTokenExpire(result)) {
getToken(true);
return new Result().error("API调用失败,请重试");
} else {
JSONObject json = JSONObject.parseObject(result.getJSONObject("data").getString("custom"));
return new Result().ok(json.getString("text"));
}
} else {
JSONObject json = JSONObject.parseObject(result.getJSONObject("data").getString("custom"));
return new Result().error(-1, json.getString("text"));
@ -227,4 +258,72 @@ public class ActWithoutProofServiceImpl implements ActWithoutProofService {
response.close();
}
}
@Override
public String getToken(Boolean refresh) throws IOException {
String tokenKey = "WITHOUT_PROOF_TOKEN";
String token = null;
if(refresh) {
token = getTokenAndRefresh(tokenKey);
} else {
token = (String) redisUtils.get(tokenKey);
if(StringUtils.isEmpty(token)) {
token = getTokenAndRefresh(tokenKey);
}
}
return token;
}
/***
* 接口是否成功获取数据
* @param result
* @return
*/
private Boolean isSuccess(JSONObject result) {
Boolean success = Boolean.FALSE;
if(result != null && !result.isEmpty()) {
JSONObject customObject = JSONObject.parseObject(result.getJSONObject("data").getString("custom"));
int code = customObject.getInteger("code");
if(code == 1) {
success = Boolean.TRUE;
}
}
return success;
}
/**
* 是否token过期
* @param result
* @return
*/
private Boolean isTokenExpire(JSONObject result) {
Boolean expire = Boolean.FALSE;
if(result != null && !result.isEmpty()) {
if(!isSuccess(result)) {
JSONObject customObject = JSONObject.parseObject(result.getJSONObject("data").getString("custom"));
int code = customObject.getInteger("code");
String message = customObject.getString("text");
if(code == 0 && "身份验证失败".equals(message)) {
expire = Boolean.TRUE;
}
}
}
return expire;
}
/**
* 获取token并将token存入redis缓存
* @param tokenKey
* @return
* @throws IOException
*/
private String getTokenAndRefresh(String tokenKey) throws IOException {
String token = null;
token = ActWithoutProofUtils.getToken();
redisUtils.set(tokenKey, token);
return token;
}
}

Loading…
Cancel
Save