提供给lianlian获取token

This commit is contained in:
2023-05-26 19:25:35 +08:00
parent 9a238d6ae2
commit caae13281d
7 changed files with 1437 additions and 1256 deletions

View File

@@ -10,13 +10,16 @@ import com.jsowell.common.util.StringUtils;
import com.jsowell.pile.dto.*; import com.jsowell.pile.dto.*;
import com.jsowell.thirdparty.lianlian.common.CommonResult; import com.jsowell.thirdparty.lianlian.common.CommonResult;
import com.jsowell.thirdparty.lianlian.domain.StationStatsInfo; import com.jsowell.thirdparty.lianlian.domain.StationStatsInfo;
import com.jsowell.thirdparty.lianlian.dto.QueryTokenDTO;
import com.jsowell.thirdparty.lianlian.service.LianLianService; import com.jsowell.thirdparty.lianlian.service.LianLianService;
import com.jsowell.thirdparty.lianlian.vo.*; import com.jsowell.thirdparty.lianlian.vo.*;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Map;
/** /**
* 对接联联平台controller * 对接联联平台controller
@@ -317,7 +320,13 @@ public class LianLianController extends BaseController {
* http://localhost:8080/LianLian/v1/query_token * http://localhost:8080/LianLian/v1/query_token
*/ */
@PostMapping("/v1/query_token") @PostMapping("/v1/query_token")
public CommonResult<?> queryToken() { public CommonResult<?> queryToken(QueryTokenDTO dto) {
return null; try {
Map<String, String> map = lianLianService.generateToken(dto);
return CommonResult.success(0, "", map.get("data"), map.get("sig"));
} catch (UnsupportedEncodingException e) {
logger.error("获取token接口 异常");
return CommonResult.failed("获取token发生异常");
}
} }
} }

View File

@@ -1,3 +1,4 @@
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
@@ -18,24 +19,11 @@ import com.jsowell.netty.command.ykc.ProofreadTimeCommand;
import com.jsowell.netty.handler.HeartbeatRequestHandler; import com.jsowell.netty.handler.HeartbeatRequestHandler;
import com.jsowell.netty.service.yunkuaichong.YKCBusinessService; import com.jsowell.netty.service.yunkuaichong.YKCBusinessService;
import com.jsowell.netty.service.yunkuaichong.YKCPushCommandService; import com.jsowell.netty.service.yunkuaichong.YKCPushCommandService;
import com.jsowell.pile.domain.OrderBasicInfo; import com.jsowell.pile.domain.*;
import com.jsowell.pile.domain.PileAuthCard;
import com.jsowell.pile.domain.PileBillingDetail;
import com.jsowell.pile.domain.PileBillingTemplate;
import com.jsowell.pile.domain.PileStationInfo;
import com.jsowell.pile.domain.WxpayCallbackRecord;
import com.jsowell.pile.dto.*; import com.jsowell.pile.dto.*;
import com.jsowell.pile.mapper.MemberBasicInfoMapper; import com.jsowell.pile.mapper.MemberBasicInfoMapper;
import com.jsowell.pile.mapper.PileBillingTemplateMapper; import com.jsowell.pile.mapper.PileBillingTemplateMapper;
import com.jsowell.pile.service.IOrderBasicInfoService; import com.jsowell.pile.service.*;
import com.jsowell.pile.service.IPileAuthCardService;
import com.jsowell.pile.service.IPileBasicInfoService;
import com.jsowell.pile.service.IPileBillingTemplateService;
import com.jsowell.pile.service.IPileMsgRecordService;
import com.jsowell.pile.service.IPileStationInfoService;
import com.jsowell.pile.service.SimCardService;
import com.jsowell.pile.service.WechatPayService;
import com.jsowell.pile.service.WxpayCallbackRecordService;
import com.jsowell.pile.vo.web.BillingTemplateVO; import com.jsowell.pile.vo.web.BillingTemplateVO;
import com.jsowell.pile.vo.web.OrderListVO; import com.jsowell.pile.vo.web.OrderListVO;
import com.jsowell.pile.vo.web.PileDetailVO; import com.jsowell.pile.vo.web.PileDetailVO;
@@ -43,7 +31,11 @@ import com.jsowell.service.MemberService;
import com.jsowell.service.OrderService; import com.jsowell.service.OrderService;
import com.jsowell.service.PileRemoteService; import com.jsowell.service.PileRemoteService;
import com.jsowell.service.PileService; import com.jsowell.service.PileService;
import com.jsowell.thirdparty.lianlian.dto.QueryTokenDTO;
import com.jsowell.thirdparty.lianlian.service.LianLianService; import com.jsowell.thirdparty.lianlian.service.LianLianService;
import com.jsowell.thirdparty.lianlian.util.Cryptos;
import com.jsowell.thirdparty.lianlian.util.Encodes;
import com.jsowell.thirdparty.lianlian.util.GBSignUtils;
import com.jsowell.wxpay.common.WeChatPayParameter; import com.jsowell.wxpay.common.WeChatPayParameter;
import com.jsowell.wxpay.dto.AppletTemplateMessageSendDTO; import com.jsowell.wxpay.dto.AppletTemplateMessageSendDTO;
import com.jsowell.wxpay.dto.WeChatRefundDTO; import com.jsowell.wxpay.dto.WeChatRefundDTO;
@@ -59,6 +51,7 @@ import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.util.StopWatch; import org.springframework.util.StopWatch;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
@@ -144,6 +137,38 @@ public class SpringBootTestController {
static final String ALGORITHM_MAC = "HmacMD5"; static final String ALGORITHM_MAC = "HmacMD5";
@Test
public void testGenerateLianlianToken() throws UnsupportedEncodingException {
String OperatorID = "425010765";
String OperatorSecret = "123123123123aaaa"; // 1234567890abcdef
//请求dataX
Map<String, String> data = new HashMap<>();
data.put("OperatorID", OperatorID);
data.put("OperatorSecret", OperatorSecret);
String dataJson = JSONUtil.toJsonStr(data);
//加密
byte[] encryptText = Cryptos.aesEncrypt(dataJson.getBytes("UTF-8"),
OperatorSecret.getBytes(), OperatorSecret.getBytes());
String strData = Encodes.encodeBase64(encryptText);
Map<String, String> request = new LinkedHashMap<>();
request.put("OperatorID", OperatorID);
request.put("Data", strData);
request.put("TimeStamp", System.currentTimeMillis() + "");
request.put("Seq", "0001");
//生成签名
String sig = GBSignUtils.sign(request, OperatorSecret);
request.put("Sig", sig);
String tokenRequest = JSONUtil.toJsonStr(request);
QueryTokenDTO dto = JSONObject.parseObject(tokenRequest, QueryTokenDTO.class);
lianLianService.generateToken(dto);
}
@Test @Test
public void testupdateElecAmount() { public void testupdateElecAmount() {
orderBasicInfoService.updateElecAmount(); orderBasicInfoService.updateElecAmount();

View File

@@ -55,7 +55,7 @@ public class JWTUtils {
* @param ttlMillis 过期时间 毫秒 * @param ttlMillis 过期时间 毫秒
* @return Token String 凭证 * @return Token String 凭证
*/ */
private static String createToken(String id, String subject, long ttlMillis) { public static String createToken(String id, String subject, long ttlMillis) {
// 签名方法 HS256 // 签名方法 HS256
SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256; SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;

View File

@@ -0,0 +1,24 @@
package com.jsowell.thirdparty.lianlian.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class QueryTokenDTO {
@JsonProperty(value = "OperatorID")
private String operatorID;
@JsonProperty(value = "Data")
private String data;
@JsonProperty(value = "TimeStamp")
private String timeStamp;
@JsonProperty(value = "Seq")
private String seq;
@JsonProperty(value = "Sig")
private String sig;
}

View File

@@ -2,9 +2,12 @@ package com.jsowell.thirdparty.lianlian.service;
import com.jsowell.pile.dto.*; import com.jsowell.pile.dto.*;
import com.jsowell.thirdparty.lianlian.domain.StationStatsInfo; import com.jsowell.thirdparty.lianlian.domain.StationStatsInfo;
import com.jsowell.thirdparty.lianlian.dto.QueryTokenDTO;
import com.jsowell.thirdparty.lianlian.vo.*; import com.jsowell.thirdparty.lianlian.vo.*;
import java.io.UnsupportedEncodingException;
import java.util.List; import java.util.List;
import java.util.Map;
public interface LianLianService { public interface LianLianService {
@@ -150,4 +153,6 @@ public interface LianLianService {
* @return * @return
*/ */
String pushPileChargeStatusChange(String orderCode); String pushPileChargeStatusChange(String orderCode);
Map<String, String> generateToken(QueryTokenDTO dto) throws UnsupportedEncodingException;
} }

View File

@@ -0,0 +1,44 @@
package com.jsowell.thirdparty.lianlian.vo;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class AccessTokenVO {
/**
* 字符串 对接平台组织机构代码
*/
@JsonProperty(value = "OperatorID")
private String operatorID;
/**
* 整型
* 0:成功;
* 1:失败
*/
@JsonProperty(value = "SuccStat")
private String succStat;
/**
* 字符串 全局唯一凭证
*/
@JsonProperty(value = "AccessToken")
private String accessToken;
/**
* 整型 凭证有效期,单位秒
*/
@JsonProperty(value = "TokenAvailableTime")
private String tokenAvailableTime;
/**
* 整型
* 0:无;
* 1:无此对接平台;
* 2:密钥错误; 399:自定义
*/
@JsonProperty(value = "FailReason")
private String failReason;
}