This commit is contained in:
tanghc
2019-04-19 19:29:45 +08:00
parent 4cc1c60959
commit 65e119eea8
33 changed files with 180 additions and 167 deletions

View File

@@ -23,7 +23,7 @@
<dependency>
<groupId>com.gitee.sop</groupId>
<artifactId>sop-gateway-common</artifactId>
<version>1.4.0-SNAPSHOT</version>
<version>1.5.0-SNAPSHOT</version>
</dependency>
<!-- ↓↓↓ 使用spring cloud zuul ↓↓↓ -->

View File

@@ -1,18 +1,7 @@
package com.gitee.sop.gateway.config;
import com.gitee.sop.gateway.entity.IsvInfo;
import com.gitee.sop.gateway.manager.ManagerInitializer;
import com.gitee.sop.gatewaycommon.bean.ApiConfig;
import com.gitee.sop.gatewaycommon.bean.ApiContext;
import com.gitee.sop.gatewaycommon.gateway.configuration.AlipayGatewayConfiguration;
import com.gitee.sop.gatewaycommon.manager.IsvRoutePermissionManager;
import com.gitee.sop.gatewaycommon.secret.IsvManager;
import com.gitee.sop.gatewaycommon.zuul.configuration.AlipayZuulConfiguration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import java.util.HashMap;
import java.util.Map;
/**
@@ -31,18 +20,8 @@ import java.util.Map;
//@Configuration
public class GatewayConfig extends AlipayGatewayConfiguration {
{
Map<String, String> appSecretStore = new HashMap();
appSecretStore.put("2019032617262200001", "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlyb9aUBaljQP/vjmBFe1mF8HsWSvyfC2NTlpT/V9E+sBxTr8TSkbzJCeeeOEm4LCaVXL0Qz63MZoT24v7AIXTuMdj4jyiM/WJ4tjrWAgnmohNOegfntTto16C3l234vXz4ryWZMR/7W+MXy5B92wPGQEJ0LKFwNEoLspDEWZ7RdE53VH7w6y6sIZUfK+YkXWSwehfKPKlx+lDw3zRJ3/yvMF+U+BAdW/MfECe1GuBnCFKnlMRh3UKczWyXWkL6ItOpYHHJi/jx85op5BWDje2pY9QowzfN94+0DB3T7UvZeweu3zlP6diwAJDzLaFQX8ULfWhY+wfKxIRgs9NoiSAQIDAQAB");
ApiContext.getApiConfig().addAppSecret(appSecretStore);
}
@Autowired
ManagerInitializer managerInitializer;
@Override
protected void doAfter() {
managerInitializer.init();
static {
new ManagerInitializer();
}
}

View File

@@ -7,14 +7,9 @@ package com.gitee.sop.gateway.config;
*/
import com.gitee.sop.gateway.manager.ManagerInitializer;
import com.gitee.sop.gatewaycommon.bean.ApiContext;
import com.gitee.sop.gatewaycommon.zuul.configuration.AlipayZuulConfiguration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import java.util.HashMap;
import java.util.Map;
/**
* 开通支付宝开放平台能力
* @author tanghc
@@ -22,21 +17,8 @@ import java.util.Map;
@Configuration
public class ZuulConfig extends AlipayZuulConfiguration {
{
Map<String, String> appSecretStore = new HashMap();
// 这里存放商户给的公钥,同时商户那边会存对应的私钥
// key应用ID(app_id):建议个格式为`yyyyMMddHHmmss+自增ID`如2019032617262200001
// value公钥
appSecretStore.put("2019032617262200001", "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlyb9aUBaljQP/vjmBFe1mF8HsWSvyfC2NTlpT/V9E+sBxTr8TSkbzJCeeeOEm4LCaVXL0Qz63MZoT24v7AIXTuMdj4jyiM/WJ4tjrWAgnmohNOegfntTto16C3l234vXz4ryWZMR/7W+MXy5B92wPGQEJ0LKFwNEoLspDEWZ7RdE53VH7w6y6sIZUfK+YkXWSwehfKPKlx+lDw3zRJ3/yvMF+U+BAdW/MfECe1GuBnCFKnlMRh3UKczWyXWkL6ItOpYHHJi/jx85op5BWDje2pY9QowzfN94+0DB3T7UvZeweu3zlP6diwAJDzLaFQX8ULfWhY+wfKxIRgs9NoiSAQIDAQAB");
ApiContext.getApiConfig().addAppSecret(appSecretStore);
}
@Autowired
ManagerInitializer managerInitializer;
@Override
protected void doAfter() {
managerInitializer.init();
static {
new ManagerInitializer();
}
}
@@ -47,12 +29,9 @@ public class ZuulConfig extends AlipayZuulConfiguration {
*/
//@Configuration
//public class ZuulConfig extends TaobaoZuulConfiguration {
//
// {
// Map<String, String> appSecretStore = new HashMap();
// appSecretStore.put("taobao_test", "G9w0BAQEFAAOCAQ8AMIIBCgKCA");
// ApiContext.getApiConfig().addAppSecret(appSecretStore);
// }
// static {
// new ManagerInitializer();
// }
//}
/**
@@ -60,9 +39,8 @@ public class ZuulConfig extends AlipayZuulConfiguration {
*/
//@Configuration
//public class ZuulConfig extends EasyopenZuulConfiguration {
// {
// Map<String, String> appSecretStore = new HashMap();
// appSecretStore.put("easyopen_test", "G9w0BAQEFAAOCAQ8AMIIBCgKCA");
// ApiContext.getApiConfig().addAppSecret(appSecretStore);
// static {
// new ManagerInitializer();
// }
//
//}

View File

@@ -37,9 +37,12 @@ public class IsvInfo {
/** 私钥, 数据库字段pri_key */
private String priKey;
/** 0启用,1禁用, 数据库字段status */
/** 1启用,2禁用, 数据库字段status */
private Byte status;
/** 1:RSA2,2:MD5, 数据库字段sign_type */
private Byte signType;
/** 数据库字段gmt_create */
private Date gmtCreate;

View File

@@ -8,11 +8,11 @@ import com.gitee.sop.gatewaycommon.bean.ChannelMsg;
import com.gitee.sop.gatewaycommon.bean.IsvDefinition;
import com.gitee.sop.gatewaycommon.manager.ZookeeperContext;
import com.gitee.sop.gatewaycommon.secret.CacheIsvManager;
import com.gitee.sop.gatewaycommon.secret.SecretContext;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.List;
@@ -21,7 +21,6 @@ import java.util.function.Function;
/**
* @author tanghc
*/
@Component
@Slf4j
public class DbIsvManager extends CacheIsvManager {
@@ -31,14 +30,16 @@ public class DbIsvManager extends CacheIsvManager {
@Autowired
Environment environment;
@Override
public void load(Function<Object, String> secretGetter) {
public void load() {
List<IsvInfo> isvInfoList = isvInfoMapper.list(new Query());
Function<IsvDefinition, String> secretGetter = SecretContext.getSecretGetter();
isvInfoList.stream()
.forEach(isvInfo -> {
IsvDefinition isvDefinition = new IsvDefinition();
BeanUtils.copyProperties(isvInfo, isvDefinition);
String secret = secretGetter.apply(isvInfo);
String secret = secretGetter.apply(isvDefinition);
isvDefinition.setSecret(secret);
this.getIsvCache().put(isvDefinition.getAppKey(), isvDefinition);
});

View File

@@ -35,7 +35,6 @@ import static java.util.stream.Collectors.toList;
*
* @author tanghc
*/
@Component
@Slf4j
public class DbIsvRoutePermissionManager extends DefaultIsvRoutePermissionManager {

View File

@@ -15,7 +15,6 @@ import com.gitee.sop.gatewaycommon.manager.ZookeeperContext;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.Collection;
@@ -23,7 +22,6 @@ import java.util.Collection;
/**
* @author tanghc
*/
@Component
@Slf4j
public class DbRouteConfigManager extends DefaultRouteConfigManager {

View File

@@ -1,43 +1,16 @@
package com.gitee.sop.gateway.manager;
import com.gitee.sop.gateway.entity.IsvInfo;
import com.gitee.sop.gatewaycommon.bean.ApiConfig;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @author tanghc
*/
@Component
@Slf4j
public class ManagerInitializer {
@Autowired
DbIsvManager dbIsvManager;
@Autowired
DbIsvRoutePermissionManager dbIsvRoutePermissionManager;
@Autowired
DbRouteConfigManager dbRouteConfigManager;
public void init() {
public ManagerInitializer() {
ApiConfig apiConfig = ApiConfig.getInstance();
apiConfig.setIsvManager(dbIsvManager);
apiConfig.setIsvRoutePermissionManager(dbIsvRoutePermissionManager);
apiConfig.setRouteConfigManager(dbRouteConfigManager);
// 从数据库加载isv信息
log.debug("从数据库加载isv信息");
dbIsvManager.load((isvInfoObj) -> {
IsvInfo isvInfo = (IsvInfo)isvInfoObj;
return isvInfo.getPubKey();
});
log.debug("从数据库加载路由权限信息");
dbIsvRoutePermissionManager.load();
log.debug("从数据库加载路由配置信息");
dbRouteConfigManager.load();
apiConfig.setIsvManager(new DbIsvManager());
apiConfig.setIsvRoutePermissionManager(new DbIsvRoutePermissionManager());
apiConfig.setRouteConfigManager(new DbRouteConfigManager());
}
}