Commit e8eab790 authored by hongguangwu's avatar hongguangwu

MVP1.7.12-对接瓜子接口

parent 504be995
...@@ -22,6 +22,7 @@ import com.baomidou.mybatisplus.annotation.IdType; ...@@ -22,6 +22,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity; import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
...@@ -249,6 +250,7 @@ public class TGzOfferInfo extends BaseEntity { ...@@ -249,6 +250,7 @@ public class TGzOfferInfo extends BaseEntity {
@ExcelAttribute(name = "预计入职日期:yyyy-MM-dd", isDate = true) @ExcelAttribute(name = "预计入职日期:yyyy-MM-dd", isDate = true)
@ExcelProperty("预计入职日期:yyyy-MM-dd") @ExcelProperty("预计入职日期:yyyy-MM-dd")
@Schema(description = "预计入职日期:yyyy-MM-dd") @Schema(description = "预计入职日期:yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date expEntryDate; private Date expEntryDate;
/** /**
* 部门名称 * 部门名称
......
package com.yifu.cloud.plus.v1.yifu.archives.config; package com.yifu.cloud.plus.v1.yifu.archives.config;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common; import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import lombok.Data; import lombok.Data;
...@@ -41,33 +42,32 @@ public class GzConfig { ...@@ -41,33 +42,32 @@ public class GzConfig {
private static final String X_REQ_NONCE = "xReqNonce"; private static final String X_REQ_NONCE = "xReqNonce";
private static final String VERSION = "version"; private static final String VERSION = "version";
public boolean getGzBankInfo(RestTemplate restTemplate, long expires, String signature, String pageNum public boolean getGzBankInfo(RestTemplate restTemplate, String sortedParams) {
, String pageSize, String startTime, String endTime) { String gzBankUrl = appUrl + "/eim-hr-induction/api/hr/induction/open/base/bank-branch?"+ sortedParams;
String gzBankUrl = appUrl + "/eim-hr-induction/api/hr/induction/open/base/bank-branch?pageNum=%s&pageSize=%s&startTime=%s&endTime=%s&appkey=%s&expires=%s&signature=%s";
String requestUrl = String.format(gzBankUrl, pageNum, pageSize, startTime, endTime, appkey, expires, signature);
//String result = restTemplate.getForObject(requestUrl, String.class);
// 创建请求头并添加Authorization // 创建请求头并添加Authorization
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", "00000000"); // 设置Authorization头 headers.set("Authorization", "00000000"); // 设置Authorization头
// 创建HttpEntity,包含headers(GET请求没有body,所以为null) // 创建HttpEntity,包含headers(GET请求没有body,所以为null)
HttpEntity<String> entity = new HttpEntity<>(null, headers); HttpEntity<String> entity = new HttpEntity<>(null, headers);
// 发送GET请求 // 发送GET请求
String result = restTemplate.exchange(requestUrl, HttpMethod.GET, entity, String.class).getBody(); String result = restTemplate.exchange(gzBankUrl, HttpMethod.GET, entity, String.class).getBody();
if (result != null && result.contains("code") && result.contains("data")) { if (result != null && result.contains("code") && result.contains("data")) {
JSONObject resultObject = JSON.parseObject(result); JSONObject resultObject = JSON.parseObject(result);
String code = resultObject.getString("code"); String code = resultObject.getString("code");
if (Common.isNotNull(code) && "S00000".equals(code)) { if (Common.isNotNull(code) && "S00000".equals(code)) {
String data = resultObject.getString("data"); JSONArray dataArray = (JSONArray) resultObject.get("data");
JSONObject dataObject = JSON.parseObject(data); JSONObject dataObject;
String bankCd = dataObject.getString("bankCd"); String bankCd;
String cnapsId = dataObject.getString("cnapsId"); String cnapsId;
// TODO - 继续解析参数并存储 for (int i=0;i<dataArray.size(); i++) {
System.out.println("bankCd=" + bankCd); dataObject = (JSONObject)dataArray.get(i);
System.out.println("cnapsId=" + cnapsId); bankCd = dataObject.getString("bankCd");
cnapsId = dataObject.getString("cnapsId");
// TODO - 继续解析参数并存储
System.out.println("bankCd=" + bankCd);
System.out.println("cnapsId=" + cnapsId);
}
return true; return true;
} }
} }
......
...@@ -22,6 +22,8 @@ import com.yifu.cloud.plus.v1.yifu.archives.entity.TGzOfferInfo; ...@@ -22,6 +22,8 @@ import com.yifu.cloud.plus.v1.yifu.archives.entity.TGzOfferInfo;
import com.yifu.cloud.plus.v1.yifu.archives.service.TGzOfferInfoService; import com.yifu.cloud.plus.v1.yifu.archives.service.TGzOfferInfoService;
import com.yifu.cloud.plus.v1.yifu.archives.utils.GZSign; import com.yifu.cloud.plus.v1.yifu.archives.utils.GZSign;
import com.yifu.cloud.plus.v1.yifu.archives.utils.ReturnGz; import com.yifu.cloud.plus.v1.yifu.archives.utils.ReturnGz;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.DateUtil;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2; import lombok.extern.log4j.Log4j2;
...@@ -30,6 +32,7 @@ import org.springframework.data.redis.core.RedisTemplate; ...@@ -30,6 +32,7 @@ import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
...@@ -54,6 +57,7 @@ public class TGzController { ...@@ -54,6 +57,7 @@ public class TGzController {
private final TGzOfferInfoService tGzOfferInfoService; private final TGzOfferInfoService tGzOfferInfoService;
private RestTemplate restTemplate = new RestTemplate(); private RestTemplate restTemplate = new RestTemplate();
/** /**
* @Description: 接收瓜子推送过来的Offer信息 * @Description: 接收瓜子推送过来的Offer信息
* @Author: hgw * @Author: hgw
...@@ -61,32 +65,24 @@ public class TGzController { ...@@ -61,32 +65,24 @@ public class TGzController {
* @return: com.yifu.cloud.plus.v1.yifu.archives.utils.ReturnGz<java.lang.String> * @return: com.yifu.cloud.plus.v1.yifu.archives.utils.ReturnGz<java.lang.String>
**/ **/
@PostMapping("/saveOfferInfo") @PostMapping("/saveOfferInfo")
public ReturnGz<String> saveOfferInfo(@RequestBody TGzOfferInfo tGzOfferInfo public ReturnGz<String> saveOfferInfo(@RequestBody TGzOfferInfo gzOfferInfo
, @RequestParam String appkey, @RequestParam String expires, @RequestParam String signature) { , @RequestParam String expires, @RequestParam String signature, @RequestParam String requestId
, @RequestParam String appkey, @RequestParam String nonce) {
Map<String, Object> params = new HashMap<>(); Map<String, Object> params = new HashMap<>();
params.put("appkey", appkey);
params.put("expires", expires); params.put("expires", expires);
params.put("signature", signature); params.put("signature", signature);
params.put("requestId", requestId);
params.put("appkey", appkey);
params.put("nonce", nonce);
// 2. 计算期望的签名 // 2. 计算期望的签名
String expectedSignature = GZSign.getSignature(params, gzConfig.getAppsecret()); String expectedSignature = GZSign.getSignature(params, gzConfig.getAppsecret());
// 3. 比较签名是否一致 // 3. 比较签名是否一致
if (!signature.equals(expectedSignature)) { if (!params.get("signature").equals(expectedSignature)) {
return ReturnGz.failed("签名验证失败"); return ReturnGz.failed("签名验证失败");
} }
try {
long expiresLong = Long.parseLong(expires);
long currentTime = System.currentTimeMillis() / 1000;
if (currentTime > expiresLong) {
return ReturnGz.failed("请求已过期");
}
} catch (NumberFormatException e) {
return ReturnGz.failed("过期时间格式错误");
}
// 5. 签名验证通过,处理业务逻辑 // 5. 签名验证通过,处理业务逻辑
return this.saveData(tGzOfferInfo); return this.saveData(gzOfferInfo);
} }
/** /**
...@@ -94,11 +90,15 @@ public class TGzController { ...@@ -94,11 +90,15 @@ public class TGzController {
* @return 处理结果 * @return 处理结果
*/ */
private ReturnGz<String> saveData(TGzOfferInfo tGzOfferInfo) { private ReturnGz<String> saveData(TGzOfferInfo tGzOfferInfo) {
//TGzOfferInfo tGzOfferInfo = new TGzOfferInfo();
// 这里实现你的业务逻辑 // 这里实现你的业务逻辑
// 例如:解析参数、保存数据、触发后续处理等 // 例如:解析参数、保存数据、触发后续处理等
tGzOfferInfo.setCreateBy("3"); tGzOfferInfo.setCreateBy("3");
tGzOfferInfo.setCreateName("瓜子推送"); tGzOfferInfo.setCreateName("瓜子推送");
tGzOfferInfo.setCreateTime(LocalDateTime.now()); tGzOfferInfo.setCreateTime(LocalDateTime.now());
/*tGzOfferInfo.setBizId(String.valueOf(params.get("bizId")));
tGzOfferInfo.setNationalId(String.valueOf(params.get("nationalId")));
tGzOfferInfo.setName(String.valueOf(params.get("name")));*/
tGzOfferInfoService.save(tGzOfferInfo); tGzOfferInfoService.save(tGzOfferInfo);
return ReturnGz.ok(); return ReturnGz.ok();
} }
...@@ -109,16 +109,21 @@ public class TGzController { ...@@ -109,16 +109,21 @@ public class TGzController {
* @Date: 2025/6/23 15:28 * @Date: 2025/6/23 15:28
* @return: boolean * @return: boolean
**/ **/
@PostMapping("/getGzBank") @GetMapping("/getGzBank")
public boolean getGzBank(@RequestParam String pageNum, @RequestParam String pageSize public boolean getGzBank(@RequestParam String pageNum, @RequestParam String pageSize
, @RequestParam String startTime, @RequestParam String endTime) { , @RequestParam String startTime, @RequestParam String endTime) {
Map<String, Object> params = new HashMap<>(); Map<String, Object> params = new HashMap<>();
params.put("appkey", gzConfig.getAppkey()); params.put("pageNum", pageNum);
long expires = new Date().getTime() + 30000; params.put("pageSize", pageSize);
params.put("expires", expires); params.put("startTime", startTime);
// 2. 计算期望的签名 params.put("endTime", endTime);
String signature = GZSign.getSignature(params, gzConfig.getAppsecret()); GZSign.addSignature(params, gzConfig.getAppkey(), gzConfig.getAppsecret());
return gzConfig.getGzBankInfo(restTemplate, expires, signature, pageNum,pageSize,startTime,endTime);
params.remove("startTime", startTime);
params.remove("endTime", endTime);
String sortedParams = GZSign.getEncodeString(params);
sortedParams += "&startTime="+startTime+"&endTime="+endTime;
return gzConfig.getGzBankInfo(restTemplate, sortedParams);
} }
......
...@@ -175,7 +175,7 @@ public class GZSign { ...@@ -175,7 +175,7 @@ public class GZSign {
} }
// 通过参数集合map 组装成需要签名的字符串id=123&name=456 // 通过参数集合map 组装成需要签名的字符串id=123&name=456
private static String getEncodeString(Map<String, Object> params) { public static String getEncodeString(Map<String, Object> params) {
if (params == null || params.size() == 0) { if (params == null || params.size() == 0) {
return ""; return "";
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment