Browse Source

Merge remote-tracking branch 'origin/master'

master
duanliangtao 2 years ago
parent
commit
e552b8da0e
  1. 8
      epmet-auth/src/main/java/com/epmet/constant/SsoConstant.java
  2. 25
      epmet-auth/src/main/java/com/epmet/controller/SsoController.java
  3. 71
      epmet-auth/src/main/java/com/epmet/service/impl/SsoServiceImpl.java
  4. 4
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/ActWithoutProofController.java
  5. 2
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/ActWithoutProofService.java
  6. 23
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/ActWithoutProofServiceImpl.java
  7. 7
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/util/ActWithoutProofUtils.java

8
epmet-auth/src/main/java/com/epmet/constant/SsoConstant.java

@ -16,13 +16,21 @@ public interface SsoConstant {
String INSERT_UPDATE_USER_FAILURE = "新增或更新user_weChat失败......"; String INSERT_UPDATE_USER_FAILURE = "新增或更新user_weChat失败......";
String USER_ID_IS_NULL = "userId为空,生成token失败......"; String USER_ID_IS_NULL = "userId为空,生成token失败......";
String CUSTOMER_ID_IS_NULL = "customerId为空,缓存放置token失败......"; String CUSTOMER_ID_IS_NULL = "customerId为空,缓存放置token失败......";
/** /**
* 日照 Ticket 校验接口地址SSO调用 * 日照 Ticket 校验接口地址SSO调用
*/ */
String TICKET_TOKEN_URL = "https://sso.shuzirizhao.cn/sso/checkTicket"; String TICKET_TOKEN_URL = "https://sso.shuzirizhao.cn/sso/checkTicket";
/** /**
* 日照 获取登陆身份信息 * 日照 获取登陆身份信息
*/ */
String USER_INFO_URL = "https://sso.shuzirizhao.cn/sso/userinfo"; String USER_INFO_URL = "https://sso.shuzirizhao.cn/sso/userinfo";
/**
* 签名秘钥
*/
String SECRET_KEY = "YQfyZtAmDbYHTBaHPSx3GZeX7x2ip7ik";
} }

25
epmet-auth/src/main/java/com/epmet/controller/SsoController.java

@ -11,12 +11,10 @@ import com.epmet.service.SsoService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.IOException; import java.io.IOException;
import java.util.Map;
/** /**
* @Author zxc * @Author zxc
@ -91,12 +89,21 @@ public class SsoController {
return new Result<UserTokenResultDTO>().ok(userTokenResultDTO); return new Result<UserTokenResultDTO>().ok(userTokenResultDTO);
} }
@PostMapping("checkTicket") @GetMapping("checkTicket")
public Result ssoCheckTicket(@RequestBody SsoCheckTicketFormDTO form) throws IOException { public Result ssoCheckTicket(@RequestParam Map<String, String> params) throws IOException {
if (StringUtils.isEmpty(form.getTicket())) { SsoCheckTicketFormDTO form = new SsoCheckTicketFormDTO();
return new Result().ok(ssoService.checkTicket(form)); if (StringUtils.isNotEmpty(params.get("ticket"))) {
form.setTicket(params.get("ticket"));
} else {
return new Result().error(-1, "登陆失败,请联系管理员!");
} }
return new Result().error(-1,"登陆失败,请联系管理员!"); if (StringUtils.isNotEmpty(params.get("ssoLogoutCall"))) {
form.setSsoLogoutCall(params.get("ssoLogoutCall"));
}
if (StringUtils.isNotEmpty(params.get("client"))) {
form.setSsoLogoutCall(params.get("client"));
}
return new Result().ok(ssoService.checkTicket(form));
} }
} }

71
epmet-auth/src/main/java/com/epmet/service/impl/SsoServiceImpl.java

@ -1,5 +1,7 @@
package com.epmet.service.impl; package com.epmet.service.impl;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.crypto.SecureUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.epmet.auth.constants.AuthOperationConstants; import com.epmet.auth.constants.AuthOperationConstants;
@ -46,6 +48,7 @@ import org.springframework.http.MediaType;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.io.IOException; import java.io.IOException;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.HashMap; import java.util.HashMap;
@ -83,7 +86,7 @@ public class SsoServiceImpl implements SsoService {
@Autowired @Autowired
private CpUserDetailRedis cpUserDetailRedis; private CpUserDetailRedis cpUserDetailRedis;
@Autowired @Resource
private EpmetUserFeignClient epmetUserFeignClient; private EpmetUserFeignClient epmetUserFeignClient;
@Value("${epmet.third.urlPrefix}") @Value("${epmet.third.urlPrefix}")
@ -220,13 +223,15 @@ public class SsoServiceImpl implements SsoService {
if (result.getString("code").equals("200")) { if (result.getString("code").equals("200")) {
String ticket = result.getString("data"); String ticket = result.getString("data");
String timestamp = String.valueOf(System.currentTimeMillis()); String timestamp = String.valueOf(System.currentTimeMillis());
String nonce = RandomUtil.randomString(18);
httpPost = new HttpPost(SsoConstant.USER_INFO_URL); httpPost = new HttpPost(SsoConstant.USER_INFO_URL);
infoJson = new JSONObject(); infoJson = new JSONObject();
infoJson.put("loginId", ticket); infoJson.put("loginId", ticket);
infoJson.put("timestamp", timestamp); infoJson.put("timestamp", timestamp);
infoJson.put("nonce", ""); infoJson.put("nonce", nonce);
infoJson.put("sign", ""); infoJson.put("sign", Md5Params(ticket, timestamp, nonce));
stringEntity = new StringEntity(infoJson.toString(), "UTF-8"); String params = DigestUtils.md5Hex(infoJson.toString().getBytes(StandardCharsets.UTF_8));
stringEntity = new StringEntity(params, "UTF-8");
stringEntity.setContentEncoding("UTF-8"); stringEntity.setContentEncoding("UTF-8");
stringEntity.setContentType(MediaType.APPLICATION_JSON_VALUE); stringEntity.setContentType(MediaType.APPLICATION_JSON_VALUE);
httpPost.setEntity(stringEntity); httpPost.setEntity(stringEntity);
@ -302,6 +307,24 @@ public class SsoServiceImpl implements SsoService {
return userTokenResultDTO; return userTokenResultDTO;
} }
/**
* 签名
*
* @param loginId
* @return
*/
private String Md5Params(String loginId, String timestamp, String nonce) {
String prefix = "=${";
String suffix = "}&";
StringBuilder builder = new StringBuilder();
builder.append("loginId").append(prefix).append(loginId).append(suffix);
builder.append("nonce").append(prefix).append(nonce).append(suffix);
builder.append("timestamp").append(prefix).append(timestamp).append(suffix);
builder.append("key").append("={").append(SsoConstant.SECRET_KEY).append("}");
return SecureUtil.md5(builder.toString());
}
/** /**
* @Description token放缓存 * @Description token放缓存
* @Param formDTO * @Param formDTO
@ -657,24 +680,24 @@ public class SsoServiceImpl implements SsoService {
} }
public static void main(String[] args) { // public static void main(String[] args) {
String url = "https://epmet-ext9.elinkservice.cn/platform/unifiedAuth/loginCheck"; // String url = "https://epmet-ext9.elinkservice.cn/platform/unifiedAuth/loginCheck";
String platformToken = "1348803062424166401_dd08e23b0d524879a5c67e7f2ffd1468"; // String platformToken = "1348803062424166401_dd08e23b0d524879a5c67e7f2ffd1468";
String appId = "7a5aec009ba4eba8e254ee64fe3775e1"; // String appId = "7a5aec009ba4eba8e254ee64fe3775e1";
String appKey = "14faef9af508d1c253b720ea5a43f9de"; // String appKey = "14faef9af508d1c253b720ea5a43f9de";
String appSecret = "38e7c2604c8dd33c445705d25eebbfc12a2f7ed8a87111e9e10a40312d3a1595"; // String appSecret = "38e7c2604c8dd33c445705d25eebbfc12a2f7ed8a87111e9e10a40312d3a1595";
long ts = System.currentTimeMillis(); // long ts = System.currentTimeMillis();
String message = appId + appKey + appSecret + ts; // String message = appId + appKey + appSecret + ts;
String accessToken = DigestUtils.md5Hex(message.getBytes(StandardCharsets.UTF_8)); // String accessToken = DigestUtils.md5Hex(message.getBytes(StandardCharsets.UTF_8));
//ThirdPlatformEnum platformEnum = ThirdPlatformEnum.getEnum("pyld"); // //ThirdPlatformEnum platformEnum = ThirdPlatformEnum.getEnum("pyld");
JSONObject jsonObject = new JSONObject(); // JSONObject jsonObject = new JSONObject();
jsonObject.put("platformToken", platformToken); // jsonObject.put("platformToken", platformToken);
//
Map<String, Object> headerMap = new HashMap<>(4); // Map<String, Object> headerMap = new HashMap<>(4);
headerMap.put("AppKey", appKey); // headerMap.put("AppKey", appKey);
headerMap.put("Timestamp", ts); // headerMap.put("Timestamp", ts);
headerMap.put("AccessToken", accessToken); // headerMap.put("AccessToken", accessToken);
Result<String> stringResult = HttpClientManager.getInstance().sendPost(url, url.startsWith("https://"), jsonObject.toJSONString(), headerMap); // Result<String> stringResult = HttpClientManager.getInstance().sendPost(url, url.startsWith("https://"), jsonObject.toJSONString(), headerMap);
System.out.println(stringResult); // System.out.println(stringResult);
} // }
} }

4
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/ActWithoutProofController.java

@ -1,6 +1,7 @@
package com.epmet.controller; package com.epmet.controller;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.result.WzmDocumentRsultDTO;
import com.epmet.service.ActWithoutProofService; import com.epmet.service.ActWithoutProofService;
import com.epmet.util.ActWithoutProofUtils; import com.epmet.util.ActWithoutProofUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@ -11,6 +12,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.io.IOException; import java.io.IOException;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
@ -50,7 +52,7 @@ public class ActWithoutProofController {
* @throws IOException * @throws IOException
*/ */
@GetMapping("getWzmProject") @GetMapping("getWzmProject")
public Result getWzmProject(@RequestParam Map<String, Object> params) throws IOException { public Result<List<WzmDocumentRsultDTO>> getWzmProject(@RequestParam Map<String, Object> params) throws IOException {
String idCard = "", certType = "", qrcode = "", xm = "", zmtaskguid = ""; String idCard = "", certType = "", qrcode = "", xm = "", zmtaskguid = "";
String token = ActWithoutProofUtils.getToken(); String token = ActWithoutProofUtils.getToken();
if (StringUtils.isEmpty(token)) { if (StringUtils.isEmpty(token)) {

2
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 xm 残疾人证和不动产权属状况证明必填
* @param zmtaskguid 证明guid * @param zmtaskguid 证明guid
*/ */
WzmDocumentRsultDTO getWzmProject(String token, String idCard, String certType, String qrcode, String xm, String zmtaskguid) throws IOException; List<WzmDocumentRsultDTO> getWzmProject(String token, String idCard, String certType, String qrcode, String xm, String zmtaskguid) throws IOException;
/** /**
* 重新开具证明 * 重新开具证明

23
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/ActWithoutProofServiceImpl.java

@ -102,7 +102,7 @@ public class ActWithoutProofServiceImpl implements ActWithoutProofService {
} }
@Override @Override
public WzmDocumentRsultDTO getWzmProject(String token, String idCard, String certType, String qrcode, String xm, String zmtaskguid) throws IOException { public List<WzmDocumentRsultDTO> getWzmProject(String token, String idCard, String certType, String qrcode, String xm, String zmtaskguid) throws IOException {
CloseableHttpClient client = null; CloseableHttpClient client = null;
CloseableHttpResponse response = null; CloseableHttpResponse response = null;
try { try {
@ -144,22 +144,31 @@ public class ActWithoutProofServiceImpl implements ActWithoutProofService {
//返回 //返回
JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity()));
WzmDocumentRsultDTO dto = null; WzmDocumentRsultDTO dto = null;
List<WzmDocumentRsultDTO> dtoList= new ArrayList<>();
if (result.getString("code").equals("200")) { if (result.getString("code").equals("200")) {
JSONArray jsonArray = JSONObject.parseObject(result.getJSONObject("data").getString("custom")).getJSONArray("result"); JSONArray jsonArray = JSONObject.parseObject(result.getJSONObject("data").getString("custom")).getJSONArray("resultlist");
if (null != jsonArray && jsonArray.size() > 0) { if (null != jsonArray && jsonArray.size() > 0) {
JSONObject j = JSONObject.parseObject(jsonArray.get(0).toString()); JSONObject j = JSONObject.parseObject(jsonArray.get(0).toString());
dto = new WzmDocumentRsultDTO(); dto = new WzmDocumentRsultDTO();
dto.setZmresultname(j.getString("zmresultname")); dto.setZmresultname(j.getString("zmresultname"));
dto.setDownloadurl(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/");
}
dto.setDownloadurl(url);
}
dto.setTimeqrcode(j.getString("timeqrcode")); dto.setTimeqrcode(j.getString("timeqrcode"));
dto.setBase64str(j.getString("base64str")); if(StringUtils.isNotEmpty(j.getString("base64str"))){
dto.setBase64str("data:image/jpeg;base64," + j.getString("base64str"));
}
dtoList.add(dto);
} }
log.info(result.toString()); return dtoList;
return dto;
} else { } else {
String erro = JSONObject.parseObject(result.getJSONObject("data").getString("custom")).getString("text"); String erro = JSONObject.parseObject(result.getJSONObject("data").getString("custom")).getString("text");
log.error(erro, result.toString()); log.error(erro, result.toString());
return new WzmDocumentRsultDTO(); throw new EpmetException(erro);
} }
} catch (Exception e) { } catch (Exception e) {
throw new EpmetException("获取失败,请联系管理员!"); throw new EpmetException("获取失败,请联系管理员!");

7
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/util/ActWithoutProofUtils.java

@ -35,7 +35,7 @@ public class ActWithoutProofUtils {
public static final String LOGIN_ID = "zhihuishequ"; public static final String LOGIN_ID = "zhihuishequ";
/** /**
* 数据加解密 * 数据加解密
*/ */
public static final String KEY = "1122334455667788"; public static final String KEY = "1122334455667788";
@ -169,11 +169,10 @@ public class ActWithoutProofUtils {
json.put("loginid", "zhihuishequ"); json.put("loginid", "zhihuishequ");
String content = json.toString(); String content = json.toString();
String key = "1122334455667788";
// 加密 // 加密
System.out.println("加密前:" + content); System.out.println("加密前:" + content);
byte[] encryptResult = encrypt(content, key); byte[] encryptResult = encrypt(content, ActWithoutProofUtils.KEY);
String encryptResultStr = parseByte2HexStr(encryptResult); String encryptResultStr = parseByte2HexStr(encryptResult);
String baseEncode = Base64.getEncoder().encodeToString(encryptResultStr.getBytes()); String baseEncode = Base64.getEncoder().encodeToString(encryptResultStr.getBytes());
System.out.println("加密后:" + baseEncode); System.out.println("加密后:" + baseEncode);
@ -181,7 +180,7 @@ public class ActWithoutProofUtils {
//解密 //解密
String baseDecode = new String(Base64.getDecoder().decode(baseEncode)); String baseDecode = new String(Base64.getDecoder().decode(baseEncode));
byte[] decryptFrom = parseHexStr2Byte(baseDecode); byte[] decryptFrom = parseHexStr2Byte(baseDecode);
byte[] decryptResult = decrypt(decryptFrom, key); byte[] decryptResult = decrypt(decryptFrom, ActWithoutProofUtils.KEY);
System.out.println("解密后:" + new String(decryptResult)); System.out.println("解密后:" + new String(decryptResult));
} }

Loading…
Cancel
Save