update 对接内蒙古平台

This commit is contained in:
2024-04-19 14:06:01 +08:00
parent 646e88b057
commit 7e41f69f5a
9 changed files with 105 additions and 52 deletions

View File

@@ -5,6 +5,7 @@ import com.alibaba.fastjson2.JSONObject;
import com.jsowell.common.annotation.Anonymous; import com.jsowell.common.annotation.Anonymous;
import com.jsowell.common.core.controller.BaseController; import com.jsowell.common.core.controller.BaseController;
import com.jsowell.common.exception.BusinessException; import com.jsowell.common.exception.BusinessException;
import com.jsowell.common.util.StringUtils;
import com.jsowell.pile.thirdparty.CommonParamsDTO; import com.jsowell.pile.thirdparty.CommonParamsDTO;
import com.jsowell.pile.vo.ThirdPartySecretInfoVO; import com.jsowell.pile.vo.ThirdPartySecretInfoVO;
import com.jsowell.thirdparty.lianlian.common.CommonResult; import com.jsowell.thirdparty.lianlian.common.CommonResult;
@@ -53,7 +54,7 @@ public class ThirdPartyBaseController extends BaseController {
// 解析DTO // 解析DTO
protected <T> T parseDto(CommonParamsDTO dto, Class<T> targetClass) { protected <T> T parseDto(CommonParamsDTO dto, Class<T> targetClass) {
// 解密 // 解密
String operatorId = dto.getOperatorID(); String operatorId = StringUtils.isNotBlank(dto.getOperatorID()) ? dto.getOperatorID() : dto.getPlatformID();
// 通过operatorId 查出 operatorSecret // 通过operatorId 查出 operatorSecret
// ThirdPartyPlatformConfig platformConfig = thirdPartyPlatformConfigService.getInfoByOperatorId(operatorId); // ThirdPartyPlatformConfig platformConfig = thirdPartyPlatformConfigService.getInfoByOperatorId(operatorId);
ThirdPartySecretInfoVO secretInfoVO = thirdpartySecretInfoService.queryByOperatorId(operatorId); ThirdPartySecretInfoVO secretInfoVO = thirdpartySecretInfoService.queryByOperatorId(operatorId);
@@ -61,8 +62,8 @@ public class ThirdPartyBaseController extends BaseController {
throw new BusinessException("1", "无此对接平台"); throw new BusinessException("1", "无此对接平台");
} }
String dataSecret = secretInfoVO.getTheirDataSecret(); String dataSecret = secretInfoVO.getOurDataSecret();
String dataSecretIv = secretInfoVO.getTheirDataSecretIv(); String dataSecretIv = secretInfoVO.getOurDataSecretIv();
// 解密data 获取参数中的OperatorSecret // 解密data 获取参数中的OperatorSecret
String decrypt = Cryptos.decrypt(dto.getData(), dataSecret, dataSecretIv); String decrypt = Cryptos.decrypt(dto.getData(), dataSecret, dataSecretIv);

View File

@@ -37,7 +37,8 @@ public class CacheConstants {
public static final int cache_expire_time_30d = cache_expire_time_1d * 30; public static final int cache_expire_time_30d = cache_expire_time_1d * 30;
// 第三方平台密钥配置 // 第三方平台密钥配置
public static final String THIRD_PARTY_SECRET_INFO = "third_party_secret_info:"; public static final String THIRD_PARTY_SECRET_INFO_BY_ID = "third_party_secret_info_by_id:";
public static final String THIRD_PARTY_SECRET_INFO_BY_TYPE = "third_party_secret_info_by_type:";
// 保存order_monitor_data // 保存order_monitor_data
public static final String INSERT_ORDER_MONITOR_DATA = "insert_order_monitor_data:"; public static final String INSERT_ORDER_MONITOR_DATA = "insert_order_monitor_data:";

View File

@@ -63,4 +63,6 @@ public interface ThirdpartySecretInfoMapper {
int deleteThirdpartySecretInfoByIds(Long[] ids); int deleteThirdpartySecretInfoByIds(Long[] ids);
ThirdPartySecretInfoVO queryByOperatorId(String theirOperatorId); ThirdPartySecretInfoVO queryByOperatorId(String theirOperatorId);
ThirdPartySecretInfoVO queryByThirdPlatformType(String thirdPlatformType);
} }

View File

@@ -61,4 +61,6 @@ public interface ThirdpartySecretInfoService {
public int deleteThirdpartySecretInfoById(Long id); public int deleteThirdpartySecretInfoById(Long id);
ThirdPartySecretInfoVO queryByOperatorId(String theirOperatorId); ThirdPartySecretInfoVO queryByOperatorId(String theirOperatorId);
ThirdPartySecretInfoVO queryByThirdPlatformType(String thirdPlatformType);
} }

View File

@@ -103,7 +103,7 @@ public class ThirdpartySecretInfoServiceImpl implements ThirdpartySecretInfoServ
@Override @Override
public ThirdPartySecretInfoVO queryByOperatorId(String theirOperatorId) { public ThirdPartySecretInfoVO queryByOperatorId(String theirOperatorId) {
// 加缓存 // 加缓存
String redisKey = CacheConstants.THIRD_PARTY_SECRET_INFO + theirOperatorId; String redisKey = CacheConstants.THIRD_PARTY_SECRET_INFO_BY_ID + theirOperatorId;
ThirdPartySecretInfoVO result = redisCache.getCacheObject(redisKey); ThirdPartySecretInfoVO result = redisCache.getCacheObject(redisKey);
if (Objects.isNull(result)) { if (Objects.isNull(result)) {
result = thirdpartySecretInfoMapper.queryByOperatorId(theirOperatorId); result = thirdpartySecretInfoMapper.queryByOperatorId(theirOperatorId);
@@ -113,4 +113,18 @@ public class ThirdpartySecretInfoServiceImpl implements ThirdpartySecretInfoServ
} }
return result; return result;
} }
@Override
public ThirdPartySecretInfoVO queryByThirdPlatformType(String thirdPlatformType) {
// 加缓存
String redisKey = CacheConstants.THIRD_PARTY_SECRET_INFO_BY_TYPE + thirdPlatformType;
ThirdPartySecretInfoVO result = redisCache.getCacheObject(redisKey);
if (Objects.isNull(result)) {
result = thirdpartySecretInfoMapper.queryByThirdPlatformType(thirdPlatformType);
if (Objects.nonNull(result)) {
redisCache.setCacheObject(redisKey, result, CacheConstants.cache_expire_time_1h);
}
}
return result;
}
} }

View File

@@ -152,4 +152,21 @@
where del_flag = '0' where del_flag = '0'
and their_operator_id = #{theirOperatorId,jdbcType=VARCHAR} and their_operator_id = #{theirOperatorId,jdbcType=VARCHAR}
</select> </select>
<select id="queryByThirdPlatformType" resultType="com.jsowell.pile.vo.ThirdPartySecretInfoVO">
select
t1.their_operator_id as theirOperatorId,
t1.their_operator_secret as theirOperatorSecret,
t1.their_data_secret as theirDataSecret,
t1.their_data_secret_iv as theirDataSecretIv,
t1.their_sig_secret as theirSigSecret,
t1.url_prefix as theirUrlPrefix,
t1.our_operator_secret as ourOperatorSecret,
t1.our_data_secret as ourDataSecret,
t1.our_data_secret_iv as ourDataSecretIv,
t1.our_sig_secret as ourSigSecret
from thirdparty_secret_info t1
where del_flag = '0'
and platform_type = #{thirdPlatformType,jdbcType=VARCHAR}
</select>
</mapper> </mapper>

View File

@@ -5,7 +5,6 @@ import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.jsowell.common.constant.Constants; import com.jsowell.common.constant.Constants;
import com.jsowell.common.core.domain.ykc.RealTimeMonitorData; import com.jsowell.common.core.domain.ykc.RealTimeMonitorData;
import com.jsowell.common.enums.thirdparty.BusinessInformationExchangeEnum; import com.jsowell.common.enums.thirdparty.BusinessInformationExchangeEnum;
@@ -14,6 +13,7 @@ import com.jsowell.common.enums.thirdparty.ThirdPlatformTypeEnum;
import com.jsowell.common.enums.ykc.BillingTimeTypeEnum; import com.jsowell.common.enums.ykc.BillingTimeTypeEnum;
import com.jsowell.common.enums.ykc.PileConnectorDataBaseStatusEnum; import com.jsowell.common.enums.ykc.PileConnectorDataBaseStatusEnum;
import com.jsowell.common.util.DateUtils; import com.jsowell.common.util.DateUtils;
import com.jsowell.common.util.JWTUtils;
import com.jsowell.common.util.PageUtils; import com.jsowell.common.util.PageUtils;
import com.jsowell.common.util.StringUtils; import com.jsowell.common.util.StringUtils;
import com.jsowell.pile.domain.OrderBasicInfo; import com.jsowell.pile.domain.OrderBasicInfo;
@@ -24,8 +24,10 @@ import com.jsowell.pile.dto.QueryEquipChargeStatusDTO;
import com.jsowell.pile.dto.QueryOperatorInfoDTO; import com.jsowell.pile.dto.QueryOperatorInfoDTO;
import com.jsowell.pile.dto.QueryStationInfoDTO; import com.jsowell.pile.dto.QueryStationInfoDTO;
import com.jsowell.pile.service.*; import com.jsowell.pile.service.*;
import com.jsowell.pile.thirdparty.CommonParamsDTO;
import com.jsowell.pile.thirdparty.EquipmentInfo; import com.jsowell.pile.thirdparty.EquipmentInfo;
import com.jsowell.pile.util.MerchantUtils; import com.jsowell.pile.util.MerchantUtils;
import com.jsowell.pile.vo.ThirdPartySecretInfoVO;
import com.jsowell.pile.vo.base.ConnectorInfoVO; import com.jsowell.pile.vo.base.ConnectorInfoVO;
import com.jsowell.pile.vo.base.MerchantInfoVO; import com.jsowell.pile.vo.base.MerchantInfoVO;
import com.jsowell.pile.vo.base.ThirdPartyStationInfoVO; import com.jsowell.pile.vo.base.ThirdPartyStationInfoVO;
@@ -35,6 +37,7 @@ import com.jsowell.pile.vo.web.PileStationVO;
import com.jsowell.thirdparty.lianlian.domain.ConnectorChargeStatusInfo; import com.jsowell.thirdparty.lianlian.domain.ConnectorChargeStatusInfo;
import com.jsowell.thirdparty.lianlian.domain.ConnectorStatusInfo; import com.jsowell.thirdparty.lianlian.domain.ConnectorStatusInfo;
import com.jsowell.thirdparty.lianlian.domain.StationStatusInfo; import com.jsowell.thirdparty.lianlian.domain.StationStatusInfo;
import com.jsowell.thirdparty.lianlian.vo.AccessTokenVO;
import com.jsowell.thirdparty.lianlian.vo.QueryChargingStatusVO; import com.jsowell.thirdparty.lianlian.vo.QueryChargingStatusVO;
import com.jsowell.thirdparty.platform.ThirdPartyPlatformService; import com.jsowell.thirdparty.platform.ThirdPartyPlatformService;
import com.jsowell.thirdparty.platform.neimenggu.domain.ChargeOrderInfo; import com.jsowell.thirdparty.platform.neimenggu.domain.ChargeOrderInfo;
@@ -45,6 +48,7 @@ import com.jsowell.thirdparty.platform.util.Cryptos;
import com.jsowell.thirdparty.platform.util.Encodes; import com.jsowell.thirdparty.platform.util.Encodes;
import com.jsowell.thirdparty.platform.util.HttpRequestUtil; import com.jsowell.thirdparty.platform.util.HttpRequestUtil;
import com.jsowell.thirdparty.platform.util.ThirdPartyPlatformUtils; import com.jsowell.thirdparty.platform.util.ThirdPartyPlatformUtils;
import com.jsowell.thirdparty.service.ThirdpartySecretInfoService;
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.stereotype.Service; import org.springframework.stereotype.Service;
@@ -71,6 +75,9 @@ public class NeiMengGuPlatformServiceImpl implements ThirdPartyPlatformService {
@Autowired @Autowired
private ThirdPartyStationRelationService thirdPartyStationRelationService; private ThirdPartyStationRelationService thirdPartyStationRelationService;
@Autowired
private ThirdpartySecretInfoService thirdpartySecretInfoService;
@Autowired @Autowired
private PileBasicInfoService pileBasicInfoService; private PileBasicInfoService pileBasicInfoService;
@@ -95,49 +102,49 @@ public class NeiMengGuPlatformServiceImpl implements ThirdPartyPlatformService {
* @param dto * @param dto
* @return * @return
*/ */
// @Override @Override
// public Map<String, String> queryToken(CommonParamsDTO dto) { public Map<String, String> queryToken(CommonParamsDTO dto) {
// AccessTokenVO vo = new AccessTokenVO(); AccessTokenVO vo = new AccessTokenVO();
// // 0:成功1:失败 // 0:成功1:失败
// int succStat = 0; int succStat = 0;
// // 0:无1:无此对接平台2:密钥错误; 399:自定义 // 0:无1:无此对接平台2:密钥错误; 399:自定义
// int failReason = 0; int failReason = 0;
//
// String operatorId = dto.getPlatformID(); String operatorId = dto.getPlatformID();
// // 通过operatorId 查出 operatorSecret // 通过operatorId 查出 operatorSecret
// ThirdPartyPlatformConfig platformConfig = thirdPartyPlatformConfigService.getInfoByOperatorId(operatorId); ThirdPartyPlatformConfig platformConfig = thirdPartyPlatformConfigService.getInfoByOperatorId(operatorId);
// if (platformConfig == null) { if (platformConfig == null) {
// failReason = 1; failReason = 1;
// succStat = 1; succStat = 1;
// } else { } else {
// String operatorSecret = platformConfig.getOperatorSecret(); String operatorSecret = platformConfig.getOperatorSecret();
// String dataSecret = platformConfig.getDataSecret(); String dataSecret = platformConfig.getDataSecret();
// String dataSecretIv = platformConfig.getDataSecretIv(); String dataSecretIv = platformConfig.getDataSecretIv();
// // 解密data 获取参数中的OperatorSecret // 解密data 获取参数中的OperatorSecret
// String decrypt = Cryptos.decrypt(dto.getData(), dataSecret, dataSecretIv); String decrypt = Cryptos.decrypt(dto.getData(), dataSecret, dataSecretIv);
// String inputOperatorSecret = null; String inputOperatorSecret = null;
// if (StringUtils.isNotBlank(decrypt)) { if (StringUtils.isNotBlank(decrypt)) {
// inputOperatorSecret = JSON.parseObject(decrypt).getString("PlatformSecret"); inputOperatorSecret = JSON.parseObject(decrypt).getString("PlatformSecret");
// } }
// // 对比密钥 // 对比密钥
// if (!StringUtils.equals(operatorSecret, inputOperatorSecret)) { if (!StringUtils.equals(operatorSecret, inputOperatorSecret)) {
// failReason = 1; failReason = 1;
// succStat = 1; succStat = 1;
// } else { } else {
// // 生成token // 生成token
// String token = JWTUtils.createToken(operatorId, operatorSecret, JWTUtils.ttlMillis); String token = JWTUtils.createToken(operatorId, operatorSecret, JWTUtils.ttlMillis);
// vo.setAccessToken(token); vo.setAccessToken(token);
// vo.setTokenAvailableTime((int) (JWTUtils.ttlMillis / 1000)); vo.setTokenAvailableTime((int) (JWTUtils.ttlMillis / 1000));
// } }
// } }
// // 组装返回参数 // 组装返回参数
// vo.setPlatformId(operatorId); vo.setPlatformId(operatorId);
// vo.setFailReason(failReason); vo.setFailReason(failReason);
// vo.setSuccStat(succStat); vo.setSuccStat(succStat);
//
// Map<String, String> resultMap = ThirdPartyPlatformUtils.generateResultMap(vo, platformConfig); Map<String, String> resultMap = ThirdPartyPlatformUtils.generateResultMap(vo, platformConfig);
// return resultMap; return resultMap;
// } }
/** /**
* 查询运营商信息 query_operator_info * 查询运营商信息 query_operator_info
@@ -148,7 +155,6 @@ public class NeiMengGuPlatformServiceImpl implements ThirdPartyPlatformService {
*/ */
@Override @Override
public Map<String, String> queryOperatorInfo(QueryOperatorInfoDTO dto) { public Map<String, String> queryOperatorInfo(QueryOperatorInfoDTO dto) {
Map<String, String> resultMap = Maps.newHashMap();
List<MerchantInfoVO> merchantList = thirdPartyStationRelationService.selectMerchantList(thirdPlatformType); List<MerchantInfoVO> merchantList = thirdPartyStationRelationService.selectMerchantList(thirdPlatformType);
if (CollectionUtils.isNotEmpty(merchantList)) { if (CollectionUtils.isNotEmpty(merchantList)) {
List<SupOperatorInfo> operatorInfos = Lists.newArrayList(); List<SupOperatorInfo> operatorInfos = Lists.newArrayList();
@@ -163,6 +169,8 @@ public class NeiMengGuPlatformServiceImpl implements ThirdPartyPlatformService {
operatorInfos.add(supOperatorInfo); operatorInfos.add(supOperatorInfo);
} }
} }
ThirdPartySecretInfoVO thirdPartySecretInfoVO = thirdpartySecretInfoService.queryByThirdPlatformType(thirdPlatformType);
Map<String, String> resultMap = ThirdPartyPlatformUtils.generateResultMap(merchantList, thirdPartySecretInfoVO);
return resultMap; return resultMap;
} }

View File

@@ -20,7 +20,7 @@ public class ThirdPartyPlatformUtils {
* @return 结果集 * @return 结果集
*/ */
public static Map<String, String> generateResultMap(Object obj, ThirdPartySecretInfoVO secretInfo) { public static Map<String, String> generateResultMap(Object obj, ThirdPartySecretInfoVO secretInfo) {
return generateResultMap(obj, secretInfo.getTheirOperatorSecret(), secretInfo.getTheirDataSecretIv(), secretInfo.getTheirSigSecret()); return generateResultMap(obj, secretInfo.getOurDataSecret(), secretInfo.getOurDataSecretIv(), secretInfo.getTheirSigSecret());
} }
/** /**

View File

@@ -131,7 +131,14 @@
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<!--<el-table-column label="主键" align="center" prop="id" />--> <!--<el-table-column label="主键" align="center" prop="id" />-->
<el-table-column label="对接平台名称" align="center" prop="platformName" /> <el-table-column label="对接平台名称" align="center" prop="platformName" />
<el-table-column label="对接平台类型" align="center" prop="platformType" /> <el-table-column label="对接平台类型" align="center" prop="platformType" >
<template slot-scope="scope">
<dict-tag
:options="dict.type.pile_status"
:value="scope.row.status"
/>
</template>
</el-table-column>
<el-table-column label="接口地址前缀" align="center" prop="urlPrefix" /> <el-table-column label="接口地址前缀" align="center" prop="urlPrefix" />
<el-table-column label="对接平台标识" align="center" prop="theirOperatorId" /> <el-table-column label="对接平台标识" align="center" prop="theirOperatorId" />
<!--<el-table-column label="对接平台生成的唯一识别密钥" align="center" prop="theirOperatorSecret" /> <!--<el-table-column label="对接平台生成的唯一识别密钥" align="center" prop="theirOperatorSecret" />
@@ -222,6 +229,7 @@ import {addSecret, getSecret, listSecret, updateSecret} from "@/api/thirdParty/s
export default { export default {
name: "Secret", name: "Secret",
dicts: ["connector_type"],
data() { data() {
return { return {
// 遮罩层 // 遮罩层