From 7e41f69f5aa5a84be3eefdb5362484c1185aee39 Mon Sep 17 00:00:00 2001 From: Guoqs Date: Fri, 19 Apr 2024 14:06:01 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E5=AF=B9=E6=8E=A5=E5=86=85=E8=92=99?= =?UTF-8?q?=E5=8F=A4=E5=B9=B3=E5=8F=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../thirdparty/ThirdPartyBaseController.java | 7 +- .../common/constant/CacheConstants.java | 3 +- .../mapper/ThirdpartySecretInfoMapper.java | 2 + .../service/ThirdpartySecretInfoService.java | 2 + .../impl/ThirdpartySecretInfoServiceImpl.java | 16 ++- .../thirdparty/ThirdpartySecretInfoMapper.xml | 17 ++++ .../service/NeiMengGuPlatformServiceImpl.java | 98 ++++++++++--------- .../util/ThirdPartyPlatformUtils.java | 2 +- .../src/views/thirdParty/secret/index.vue | 10 +- 9 files changed, 105 insertions(+), 52 deletions(-) diff --git a/jsowell-admin/src/main/java/com/jsowell/web/controller/thirdparty/ThirdPartyBaseController.java b/jsowell-admin/src/main/java/com/jsowell/web/controller/thirdparty/ThirdPartyBaseController.java index 7f348774e..f85836b27 100644 --- a/jsowell-admin/src/main/java/com/jsowell/web/controller/thirdparty/ThirdPartyBaseController.java +++ b/jsowell-admin/src/main/java/com/jsowell/web/controller/thirdparty/ThirdPartyBaseController.java @@ -5,6 +5,7 @@ import com.alibaba.fastjson2.JSONObject; import com.jsowell.common.annotation.Anonymous; import com.jsowell.common.core.controller.BaseController; import com.jsowell.common.exception.BusinessException; +import com.jsowell.common.util.StringUtils; import com.jsowell.pile.thirdparty.CommonParamsDTO; import com.jsowell.pile.vo.ThirdPartySecretInfoVO; import com.jsowell.thirdparty.lianlian.common.CommonResult; @@ -53,7 +54,7 @@ public class ThirdPartyBaseController extends BaseController { // 解析DTO protected T parseDto(CommonParamsDTO dto, Class targetClass) { // 解密 - String operatorId = dto.getOperatorID(); + String operatorId = StringUtils.isNotBlank(dto.getOperatorID()) ? dto.getOperatorID() : dto.getPlatformID(); // 通过operatorId 查出 operatorSecret // ThirdPartyPlatformConfig platformConfig = thirdPartyPlatformConfigService.getInfoByOperatorId(operatorId); ThirdPartySecretInfoVO secretInfoVO = thirdpartySecretInfoService.queryByOperatorId(operatorId); @@ -61,8 +62,8 @@ public class ThirdPartyBaseController extends BaseController { throw new BusinessException("1", "无此对接平台"); } - String dataSecret = secretInfoVO.getTheirDataSecret(); - String dataSecretIv = secretInfoVO.getTheirDataSecretIv(); + String dataSecret = secretInfoVO.getOurDataSecret(); + String dataSecretIv = secretInfoVO.getOurDataSecretIv(); // 解密data 获取参数中的OperatorSecret String decrypt = Cryptos.decrypt(dto.getData(), dataSecret, dataSecretIv); diff --git a/jsowell-common/src/main/java/com/jsowell/common/constant/CacheConstants.java b/jsowell-common/src/main/java/com/jsowell/common/constant/CacheConstants.java index c27012739..a81c77b87 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/constant/CacheConstants.java +++ b/jsowell-common/src/main/java/com/jsowell/common/constant/CacheConstants.java @@ -37,7 +37,8 @@ public class CacheConstants { 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 public static final String INSERT_ORDER_MONITOR_DATA = "insert_order_monitor_data:"; diff --git a/jsowell-pile/src/main/java/com/jsowell/thirdparty/mapper/ThirdpartySecretInfoMapper.java b/jsowell-pile/src/main/java/com/jsowell/thirdparty/mapper/ThirdpartySecretInfoMapper.java index 9d03f2f19..e984b5134 100644 --- a/jsowell-pile/src/main/java/com/jsowell/thirdparty/mapper/ThirdpartySecretInfoMapper.java +++ b/jsowell-pile/src/main/java/com/jsowell/thirdparty/mapper/ThirdpartySecretInfoMapper.java @@ -63,4 +63,6 @@ public interface ThirdpartySecretInfoMapper { int deleteThirdpartySecretInfoByIds(Long[] ids); ThirdPartySecretInfoVO queryByOperatorId(String theirOperatorId); + + ThirdPartySecretInfoVO queryByThirdPlatformType(String thirdPlatformType); } diff --git a/jsowell-pile/src/main/java/com/jsowell/thirdparty/service/ThirdpartySecretInfoService.java b/jsowell-pile/src/main/java/com/jsowell/thirdparty/service/ThirdpartySecretInfoService.java index 8387c1dac..e12c6eb8a 100644 --- a/jsowell-pile/src/main/java/com/jsowell/thirdparty/service/ThirdpartySecretInfoService.java +++ b/jsowell-pile/src/main/java/com/jsowell/thirdparty/service/ThirdpartySecretInfoService.java @@ -61,4 +61,6 @@ public interface ThirdpartySecretInfoService { public int deleteThirdpartySecretInfoById(Long id); ThirdPartySecretInfoVO queryByOperatorId(String theirOperatorId); + + ThirdPartySecretInfoVO queryByThirdPlatformType(String thirdPlatformType); } diff --git a/jsowell-pile/src/main/java/com/jsowell/thirdparty/service/impl/ThirdpartySecretInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/thirdparty/service/impl/ThirdpartySecretInfoServiceImpl.java index d30ef3cac..7bc2ea09b 100644 --- a/jsowell-pile/src/main/java/com/jsowell/thirdparty/service/impl/ThirdpartySecretInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/thirdparty/service/impl/ThirdpartySecretInfoServiceImpl.java @@ -103,7 +103,7 @@ public class ThirdpartySecretInfoServiceImpl implements ThirdpartySecretInfoServ @Override 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); if (Objects.isNull(result)) { result = thirdpartySecretInfoMapper.queryByOperatorId(theirOperatorId); @@ -113,4 +113,18 @@ public class ThirdpartySecretInfoServiceImpl implements ThirdpartySecretInfoServ } 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; + } } diff --git a/jsowell-pile/src/main/resources/mapper/thirdparty/ThirdpartySecretInfoMapper.xml b/jsowell-pile/src/main/resources/mapper/thirdparty/ThirdpartySecretInfoMapper.xml index 632028045..0ff1ad50a 100644 --- a/jsowell-pile/src/main/resources/mapper/thirdparty/ThirdpartySecretInfoMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/thirdparty/ThirdpartySecretInfoMapper.xml @@ -152,4 +152,21 @@ where del_flag = '0' and their_operator_id = #{theirOperatorId,jdbcType=VARCHAR} + + \ No newline at end of file diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/neimenggu/service/NeiMengGuPlatformServiceImpl.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/neimenggu/service/NeiMengGuPlatformServiceImpl.java index 356691fa1..dd2d2ceca 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/neimenggu/service/NeiMengGuPlatformServiceImpl.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/neimenggu/service/NeiMengGuPlatformServiceImpl.java @@ -5,7 +5,6 @@ import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import com.github.pagehelper.PageInfo; import com.google.common.collect.Lists; -import com.google.common.collect.Maps; import com.jsowell.common.constant.Constants; import com.jsowell.common.core.domain.ykc.RealTimeMonitorData; 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.PileConnectorDataBaseStatusEnum; import com.jsowell.common.util.DateUtils; +import com.jsowell.common.util.JWTUtils; import com.jsowell.common.util.PageUtils; import com.jsowell.common.util.StringUtils; 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.QueryStationInfoDTO; import com.jsowell.pile.service.*; +import com.jsowell.pile.thirdparty.CommonParamsDTO; import com.jsowell.pile.thirdparty.EquipmentInfo; 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.MerchantInfoVO; 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.ConnectorStatusInfo; 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.platform.ThirdPartyPlatformService; 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.HttpRequestUtil; import com.jsowell.thirdparty.platform.util.ThirdPartyPlatformUtils; +import com.jsowell.thirdparty.service.ThirdpartySecretInfoService; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -71,6 +75,9 @@ public class NeiMengGuPlatformServiceImpl implements ThirdPartyPlatformService { @Autowired private ThirdPartyStationRelationService thirdPartyStationRelationService; + @Autowired + private ThirdpartySecretInfoService thirdpartySecretInfoService; + @Autowired private PileBasicInfoService pileBasicInfoService; @@ -95,49 +102,49 @@ public class NeiMengGuPlatformServiceImpl implements ThirdPartyPlatformService { * @param dto * @return */ - // @Override - // public Map queryToken(CommonParamsDTO dto) { - // AccessTokenVO vo = new AccessTokenVO(); - // // 0:成功;1:失败 - // int succStat = 0; - // // 0:无;1:无此对接平台;2:密钥错误; 3~99:自定义 - // int failReason = 0; - // - // String operatorId = dto.getPlatformID(); - // // 通过operatorId 查出 operatorSecret - // ThirdPartyPlatformConfig platformConfig = thirdPartyPlatformConfigService.getInfoByOperatorId(operatorId); - // if (platformConfig == null) { - // failReason = 1; - // succStat = 1; - // } else { - // String operatorSecret = platformConfig.getOperatorSecret(); - // String dataSecret = platformConfig.getDataSecret(); - // String dataSecretIv = platformConfig.getDataSecretIv(); - // // 解密data 获取参数中的OperatorSecret - // String decrypt = Cryptos.decrypt(dto.getData(), dataSecret, dataSecretIv); - // String inputOperatorSecret = null; - // if (StringUtils.isNotBlank(decrypt)) { - // inputOperatorSecret = JSON.parseObject(decrypt).getString("PlatformSecret"); - // } - // // 对比密钥 - // if (!StringUtils.equals(operatorSecret, inputOperatorSecret)) { - // failReason = 1; - // succStat = 1; - // } else { - // // 生成token - // String token = JWTUtils.createToken(operatorId, operatorSecret, JWTUtils.ttlMillis); - // vo.setAccessToken(token); - // vo.setTokenAvailableTime((int) (JWTUtils.ttlMillis / 1000)); - // } - // } - // // 组装返回参数 - // vo.setPlatformId(operatorId); - // vo.setFailReason(failReason); - // vo.setSuccStat(succStat); - // - // Map resultMap = ThirdPartyPlatformUtils.generateResultMap(vo, platformConfig); - // return resultMap; - // } + @Override + public Map queryToken(CommonParamsDTO dto) { + AccessTokenVO vo = new AccessTokenVO(); + // 0:成功;1:失败 + int succStat = 0; + // 0:无;1:无此对接平台;2:密钥错误; 3~99:自定义 + int failReason = 0; + + String operatorId = dto.getPlatformID(); + // 通过operatorId 查出 operatorSecret + ThirdPartyPlatformConfig platformConfig = thirdPartyPlatformConfigService.getInfoByOperatorId(operatorId); + if (platformConfig == null) { + failReason = 1; + succStat = 1; + } else { + String operatorSecret = platformConfig.getOperatorSecret(); + String dataSecret = platformConfig.getDataSecret(); + String dataSecretIv = platformConfig.getDataSecretIv(); + // 解密data 获取参数中的OperatorSecret + String decrypt = Cryptos.decrypt(dto.getData(), dataSecret, dataSecretIv); + String inputOperatorSecret = null; + if (StringUtils.isNotBlank(decrypt)) { + inputOperatorSecret = JSON.parseObject(decrypt).getString("PlatformSecret"); + } + // 对比密钥 + if (!StringUtils.equals(operatorSecret, inputOperatorSecret)) { + failReason = 1; + succStat = 1; + } else { + // 生成token + String token = JWTUtils.createToken(operatorId, operatorSecret, JWTUtils.ttlMillis); + vo.setAccessToken(token); + vo.setTokenAvailableTime((int) (JWTUtils.ttlMillis / 1000)); + } + } + // 组装返回参数 + vo.setPlatformId(operatorId); + vo.setFailReason(failReason); + vo.setSuccStat(succStat); + + Map resultMap = ThirdPartyPlatformUtils.generateResultMap(vo, platformConfig); + return resultMap; + } /** * 查询运营商信息 query_operator_info @@ -148,7 +155,6 @@ public class NeiMengGuPlatformServiceImpl implements ThirdPartyPlatformService { */ @Override public Map queryOperatorInfo(QueryOperatorInfoDTO dto) { - Map resultMap = Maps.newHashMap(); List merchantList = thirdPartyStationRelationService.selectMerchantList(thirdPlatformType); if (CollectionUtils.isNotEmpty(merchantList)) { List operatorInfos = Lists.newArrayList(); @@ -163,6 +169,8 @@ public class NeiMengGuPlatformServiceImpl implements ThirdPartyPlatformService { operatorInfos.add(supOperatorInfo); } } + ThirdPartySecretInfoVO thirdPartySecretInfoVO = thirdpartySecretInfoService.queryByThirdPlatformType(thirdPlatformType); + Map resultMap = ThirdPartyPlatformUtils.generateResultMap(merchantList, thirdPartySecretInfoVO); return resultMap; } diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/util/ThirdPartyPlatformUtils.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/util/ThirdPartyPlatformUtils.java index d559a514c..e5e758927 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/util/ThirdPartyPlatformUtils.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/util/ThirdPartyPlatformUtils.java @@ -20,7 +20,7 @@ public class ThirdPartyPlatformUtils { * @return 结果集 */ public static Map generateResultMap(Object obj, ThirdPartySecretInfoVO secretInfo) { - return generateResultMap(obj, secretInfo.getTheirOperatorSecret(), secretInfo.getTheirDataSecretIv(), secretInfo.getTheirSigSecret()); + return generateResultMap(obj, secretInfo.getOurDataSecret(), secretInfo.getOurDataSecretIv(), secretInfo.getTheirSigSecret()); } /** diff --git a/jsowell-ui/src/views/thirdParty/secret/index.vue b/jsowell-ui/src/views/thirdParty/secret/index.vue index e65c26da1..518dc7416 100644 --- a/jsowell-ui/src/views/thirdParty/secret/index.vue +++ b/jsowell-ui/src/views/thirdParty/secret/index.vue @@ -131,7 +131,14 @@ - + + +