Commit 4de7b501 authored by 郝彦辉's avatar 郝彦辉

提交2020.06.10

parent 6008d4f6
...@@ -281,6 +281,20 @@ ...@@ -281,6 +281,20 @@
<artifactId>spring-cloud-starter-eureka-server</artifactId> <artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency> </dependency>
<!-- quantgroup jar -->
<dependency>
<groupId>com.lkb.data</groupId>
<artifactId>lkb-data-service</artifactId>
<version>1.7.8.4-3c-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies> </dependencies>
<dependencyManagement> <dependencyManagement>
......
...@@ -6,11 +6,10 @@ package cn.quantgroup.report.config.aop; ...@@ -6,11 +6,10 @@ package cn.quantgroup.report.config.aop;
import cn.quantgroup.report.cmpt.CommonAlarmCmpt; import cn.quantgroup.report.cmpt.CommonAlarmCmpt;
import cn.quantgroup.report.cmpt.MonitorCmpt; import cn.quantgroup.report.cmpt.MonitorCmpt;
import cn.quantgroup.report.constant.TransactionCodeEnum; import cn.quantgroup.report.constant.TransactionCodeEnum;
import cn.quantgroup.report.response.TransactionResult;
import cn.quantgroup.report.service.thirdpartymonitor.ThirdpartyApiMonitorService;
import cn.quantgroup.report.utils.StringUtil;
import cn.quantgroup.report.enums.RequestUrlType; import cn.quantgroup.report.enums.RequestUrlType;
import cn.quantgroup.report.response.GlobalResponse; import cn.quantgroup.report.response.GlobalResponse;
import cn.quantgroup.report.response.TransactionResult;
import cn.quantgroup.report.utils.StringUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -42,8 +41,8 @@ public class MonitorAspect { ...@@ -42,8 +41,8 @@ public class MonitorAspect {
protected static ExecutorService dbLogPool = new ThreadPoolExecutor(20,50,200, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); protected static ExecutorService dbLogPool = new ThreadPoolExecutor(20,50,200, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>());
@Autowired //@Autowired
private ThirdpartyApiMonitorService thirdpartyApiMonitorService; //private ThirdpartyApiMonitorService thirdpartyApiMonitorService;
@Autowired @Autowired
private CommonAlarmCmpt iMonitorAlarmService; private CommonAlarmCmpt iMonitorAlarmService;
...@@ -137,13 +136,13 @@ public class MonitorAspect { ...@@ -137,13 +136,13 @@ public class MonitorAspect {
RequestUrlType urlType = transactionResult.getUrlType(); RequestUrlType urlType = transactionResult.getUrlType();
TransactionCodeEnum tansactionCode = transactionResult.getTansactionCode(); TransactionCodeEnum tansactionCode = transactionResult.getTansactionCode();
if(StringUtils.isNotBlank(response.getUuid())) { if(StringUtils.isNotBlank(response.getUuid())) {
thirdpartyApiMonitorService.saveTransactionLog(urlType, transactionId, response.getUuid(), tansactionCode); //thirdpartyApiMonitorService.saveTransactionLog(urlType, transactionId, response.getUuid(), tansactionCode);
} else if(StringUtils.isNotBlank(response.getIdentity())) { } else if(StringUtils.isNotBlank(response.getIdentity())) {
thirdpartyApiMonitorService.saveTransactionLogByIdentifyNumber(urlType, transactionId, response.getIdentity(), tansactionCode); //thirdpartyApiMonitorService.saveTransactionLogByIdentifyNumber(urlType, transactionId, response.getIdentity(), tansactionCode);
}else if(StringUtils.isNotBlank(response.getPhone())) { }else if(StringUtils.isNotBlank(response.getPhone())) {
thirdpartyApiMonitorService.saveTransactionLogByPhone(urlType, transactionId, response.getPhone(), tansactionCode); //thirdpartyApiMonitorService.saveTransactionLogByPhone(urlType, transactionId, response.getPhone(), tansactionCode);
} else { } else {
thirdpartyApiMonitorService.saveTransactionLog(urlType, transactionId, null, tansactionCode); //thirdpartyApiMonitorService.saveTransactionLog(urlType, transactionId, null, tansactionCode);
} }
} }
} }
......
package cn.quantgroup.report.config.datasource.history;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import javax.sql.DataSource;
@Import(XyqbHistoryDataSourcePreperties.class)
@Configuration
@Slf4j
@MapperScan(basePackages = XyqbHistoryDataSourceConfig.PACKAGE, sqlSessionFactoryRef = "xyqbHistorySqlSessionFactory")
public class XyqbHistoryDataSourceConfig {
static final String PACKAGE = "cn.quantgroup.report.mapper.history";
//@Value("${baihang.mapper-locations}")
private String mapperLocations = "classpath:cn/quantgroup/report/mapper/history/*.xml";
//@Value("${baihang.type-aliases-package}")
private String typeAliasesPackage = "cn.quantgroup.report.mapper.history";
@Value("${config-location}")
private String configLocation;
@Autowired
private XyqbHistoryDataSourcePreperties xyqbHistoryDataSourcePreperties;
@Bean(name = "xyqbHistoryDataSource")
public DataSource xyqbHistoryDataSource() {
HikariConfig config = new HikariConfig();
config.setJdbcUrl(xyqbHistoryDataSourcePreperties.getJdbcUrl());
log.info("xyqb历史数据库地址:{}", xyqbHistoryDataSourcePreperties.getJdbcUrl());
config.setPassword(xyqbHistoryDataSourcePreperties.getPassword());
config.setUsername(xyqbHistoryDataSourcePreperties.getUsername());
config.setMaximumPoolSize(xyqbHistoryDataSourcePreperties.getMaxPoolSize());
config.setMinimumIdle(xyqbHistoryDataSourcePreperties.getMinPoolSize());
config.addDataSourceProperty("cachePrepStmts", "true");
config.addDataSourceProperty("prepStmtCacheSize", "250");
config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
return new HikariDataSource(config);
}
@Bean(name = "xyqbHistoryTransactionManager")
public DataSourceTransactionManager xyqbHistoryTransactionManager(@Qualifier("xyqbHistoryDataSource") DataSource xyqbHistoryDataSource) {
return new DataSourceTransactionManager(xyqbHistoryDataSource);
}
/* @Bean(name = "xyqbHistorySqlSessionFactory")
public SqlSessionFactory xyqbHistorySqlSessionFactory(@Qualifier("xyqbHistoryDataSource") DataSource xyqbHistoryDataSource) throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(xyqbHistoryDataSource);
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
.getResources(mapperLocations));
sessionFactory.setTypeAliasesPackage(typeAliasesPackage);
sessionFactory.setConfigLocation(new PathMatchingResourcePatternResolver()
.getResource(configLocation));
return sessionFactory.getObject();
}*/
/*
@Bean(name = "xyqbHistorySqlSessionTemplate")
public SqlSessionTemplate xyqbHistorySqlSessionTemplate(@Qualifier("xyqbHistorySqlSessionFactory") SqlSessionFactory xyqbHistorySqlSessionFactory) throws Exception {
return new SqlSessionTemplate(xyqbHistorySqlSessionFactory);
}*/
@Bean(name = "xyqbHistoryJdbcTemplate")
public JdbcTemplate primaryJdbcTemplate(@Qualifier("xyqbHistoryDataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
}
package cn.quantgroup.report.config.datasource.history;
import lombok.Getter;
import lombok.Setter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
@Setter
@Getter
@Configuration
public class XyqbHistoryDataSourcePreperties {
@Value("${db.driver}")
private String driverClass;
@Value("${baihang.db.minPoolSize}")
private int minPoolSize;
@Value("${baihang.db.maxPoolSize}")
private int maxPoolSize;
//@Value("${data.source.baihang.jdbcUrl}")
//private String jdbcUrl="jdbc:mysql://172.20.6.29:4010/rc_real_time_data_pool?useUnicode=true&characterEncoding=UTF8&useSSL=false";
private String jdbcUrl = "jdbc:mysql://172.20.6.21:4010/rc_real_time_data_pool?useUnicode=true&characterEncoding=UTF8&useSSL=false";
//@Value("${data.source.baihang.username}")
private String username="xyqb_history_w";
//@Value("${data.source.baihang.password}")
private String password="KDb18asPu6iEz5lg";
}
package cn.quantgroup.report.config.datasource.master;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import javax.sql.DataSource;
/**
* Desc:
* User: HaiNan.Wang
* Date: 2017/5/2
*/
@Import(RiskDatasourceProperties.class)
@Configuration
@MapperScan(basePackages = RiskDataSourceConfig.PACKAGE, sqlSessionFactoryRef = "masterSqlSessionFactory")
public class RiskDataSourceConfig {
static final String PACKAGE = "cn.quantgroup.report.mapper.master";
@Value("${master.mapper-locations}")
private String mapperLocations;
@Value("${master.type-aliases-package}")
private String typeAliasesPackage;
@Value("${config-location}")
private String configLocation;
@Value("${db.driver:com.mysql.jdbc.Driver}")
private String driverClass;
@Autowired
private RiskDatasourceProperties repaymentPlanProperties;
@Bean(name = "masterDataSource")
public DataSource masterDataSource() {
HikariConfig config = new HikariConfig();
config.setJdbcUrl(repaymentPlanProperties.getRiskDatasourceJdbcUrl());
config.setPassword(repaymentPlanProperties.getRiskDatasourcePassword());
config.setUsername(repaymentPlanProperties.getRiskDatasourceUsername());
config.setMaximumPoolSize(repaymentPlanProperties.getMaxPoolSize());
config.setMinimumIdle(repaymentPlanProperties.getMinPoolSize());
config.addDataSourceProperty("cachePrepStmts", "true");
config.addDataSourceProperty("prepStmtCacheSize", "250");
config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
return new HikariDataSource(config);
}
@Bean(name = "masterTransactionManager")
public DataSourceTransactionManager repaymentPlanDataSourceTransactionManager(@Qualifier("masterDataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean(name = "masterSqlSessionFactory")
public SqlSessionFactory masterSqlSessionFactory(@Qualifier("masterDataSource") DataSource masterDataSource) throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(masterDataSource);
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
.getResources(mapperLocations));
sessionFactory.setTypeAliasesPackage(typeAliasesPackage);
sessionFactory.setConfigLocation(new PathMatchingResourcePatternResolver()
.getResource(configLocation));
return sessionFactory.getObject();
}
@Bean(name = "masterSqlSessionTemplate")
public SqlSessionTemplate masterSqlSessionTemplate(@Qualifier("masterSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
@Bean(name = "riskDatasourceJdbcTemplate")
public JdbcTemplate primaryJdbcTemplate(@Qualifier("masterDataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
}
package cn.quantgroup.report.config.datasource.master;
import lombok.Getter;
import lombok.Setter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
/**
* Desc:
* User: HaiNan.Wang
* Date: 2017/5/2
*/
@Getter
@Setter
@Configuration
public class RiskDatasourceProperties {
@Value("${db.driver}")
private String driverClass;
@Value("${db.minPoolSize}")
private int minPoolSize;
@Value("${db.maxPoolSize}")
private int maxPoolSize;
/**
* repaymentplan
*/
@Value("${db.risk_datasource.url}")
private String riskDatasourceJdbcUrl;
@Value("${db.risk_datasource.username}")
private String riskDatasourceUsername;
@Value("${db.risk_datasource.password}")
private String riskDatasourcePassword;
}
package cn.quantgroup.report.config.datasource.tidbrisk; package cn.quantgroup.report.config.datasource.renhang;
import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource; import com.zaxxer.hikari.HikariDataSource;
...@@ -28,51 +28,51 @@ import javax.sql.DataSource; ...@@ -28,51 +28,51 @@ import javax.sql.DataSource;
* 公司: 北京众信利民信息技术有限公司 <br> * 公司: 北京众信利民信息技术有限公司 <br>
* ----------------------------------------------------------------------------- * -----------------------------------------------------------------------------
*/ */
@Import(TidbRiskDatasourceProperties.class) @Import(RenHangDatasourceProperties.class)
@Configuration @Configuration
@Slf4j @Slf4j
@MapperScan(basePackages = TidbRiskDataSourceConfig.PACKAGE, sqlSessionFactoryRef = "tidbRiskSqlSessionFactory") @MapperScan(basePackages = RenHangDataSourceConfig.PACKAGE, sqlSessionFactoryRef = "renhangSqlSessionFactory")
public class TidbRiskDataSourceConfig { public class RenHangDataSourceConfig {
static final String PACKAGE = "cn.quantgroup.report.mapper.tidbrisk"; static final String PACKAGE = "cn.quantgroup.report.mapper.renhang";
//@Value("${tidb.risk_datasource.mapper-locations}") @Value("${renhang.rc_sync_guangda.mapper-locations}")
private String mapperLocations="classpath:cn/quantgroup/report/mapper/tidbrisk/*.xml";//resources *.xml private String mapperLocations; //="classpath:cn/quantgroup/report/mapper/tidbrisk/*.xml";//resources *.xml
//@Value("${tidb.risk_datasource.type-aliases-package}") @Value("${renhang.rc_sync_guangda.type-aliases-package}")
private String typeAliasesPackage="cn.quantgroup.report.domain.tidbrisk";//实体pojo private String typeAliasesPackage; //="cn.quantgroup.report.domain.tidbrisk";//实体pojo
@Value("${config-location}") @Value("${config-location}")
private String configLocation; private String configLocation;
@Autowired @Autowired
private TidbRiskDatasourceProperties tidbRiskDatasourceProperties; private RenHangDatasourceProperties renhangDatasourceProperties;
@Bean(name = "tidbRiskDataSource") @Bean(name = "renhangDataSource")
public DataSource tidbRiskDataSource() { public DataSource renhangDataSource() {
HikariConfig config = new HikariConfig(); HikariConfig config = new HikariConfig();
log.info("tidb.risk_datasource数据库地址:{}",tidbRiskDatasourceProperties.getTidbRiskDatasourceJdbcUrl()); log.info("rc_sync_guangda数据库地址:{}",renhangDatasourceProperties.getDatasourceJdbcUrl());
config.setJdbcUrl(tidbRiskDatasourceProperties.getTidbRiskDatasourceJdbcUrl()); config.setJdbcUrl(renhangDatasourceProperties.getDatasourceJdbcUrl());
config.setPassword(tidbRiskDatasourceProperties.getTidbRiskDatasourcePassword()); config.setPassword(renhangDatasourceProperties.getDatasourcePassword());
config.setUsername(tidbRiskDatasourceProperties.getTidbRiskDatasourceUsername()); config.setUsername(renhangDatasourceProperties.getDatasourceUsername());
config.setMaximumPoolSize(tidbRiskDatasourceProperties.getMaxPoolSize()); config.setMaximumPoolSize(renhangDatasourceProperties.getMaxPoolSize());
config.setMinimumIdle(tidbRiskDatasourceProperties.getMinPoolSize()); config.setMinimumIdle(renhangDatasourceProperties.getMinPoolSize());
config.addDataSourceProperty("cachePrepStmts", "true"); config.addDataSourceProperty("cachePrepStmts", "true");
config.addDataSourceProperty("prepStmtCacheSize", "250"); config.addDataSourceProperty("prepStmtCacheSize", "250");
config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048"); config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
return new HikariDataSource(config); return new HikariDataSource(config);
} }
@Bean(name = "tidbRiskTransactionManager") @Bean(name = "renhangTransactionManager")
public DataSourceTransactionManager tidbRiskTransactionManager(@Qualifier("tidbRiskDataSource") DataSource dataSource) { public DataSourceTransactionManager renhangTransactionManager(@Qualifier("renhangDataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource); return new DataSourceTransactionManager(dataSource);
} }
@Bean(name = "tidbRiskSqlSessionFactory") @Bean(name = "renhangSqlSessionFactory")
public SqlSessionFactory tidbRiskSqlSessionFactory(@Qualifier("tidbRiskDataSource") DataSource tidbRiskDataSource) throws Exception { public SqlSessionFactory renhangSqlSessionFactory(@Qualifier("renhangDataSource") DataSource renhangDataSource) throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(tidbRiskDataSource); sessionFactory.setDataSource(renhangDataSource);
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver() sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
.getResources(mapperLocations)); .getResources(mapperLocations));
sessionFactory.setTypeAliasesPackage(typeAliasesPackage); sessionFactory.setTypeAliasesPackage(typeAliasesPackage);
...@@ -81,13 +81,13 @@ public class TidbRiskDataSourceConfig { ...@@ -81,13 +81,13 @@ public class TidbRiskDataSourceConfig {
return sessionFactory.getObject(); return sessionFactory.getObject();
} }
@Bean(name = "tidbRiskSqlSessionTemplate") @Bean(name = "renhangSqlSessionTemplate")
public SqlSessionTemplate tidbRiskSqlSessionTemplate(@Qualifier("tidbRiskSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception { public SqlSessionTemplate renhangSqlSessionTemplate(@Qualifier("renhangSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory); return new SqlSessionTemplate(sqlSessionFactory);
} }
@Bean(name = "tidbRiskJdbcTemplate") @Bean(name = "renhangJdbcTemplate")
public JdbcTemplate tidbRiskJdbcTemplate(@Qualifier("tidbRiskDataSource") DataSource dataSource) { public JdbcTemplate tidbRiskJdbcTemplate(@Qualifier("renhangDataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource); return new JdbcTemplate(dataSource);
} }
......
package cn.quantgroup.report.config.datasource.tidbrisk; package cn.quantgroup.report.config.datasource.renhang;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
...@@ -18,7 +18,8 @@ import org.springframework.context.annotation.Configuration; ...@@ -18,7 +18,8 @@ import org.springframework.context.annotation.Configuration;
@Getter @Getter
@Setter @Setter
@Configuration @Configuration
public class TidbRiskDatasourceProperties { public class RenHangDatasourceProperties {
@Value("${db.driver}") @Value("${db.driver}")
private String driverClass; private String driverClass;
...@@ -27,20 +28,17 @@ public class TidbRiskDatasourceProperties { ...@@ -27,20 +28,17 @@ public class TidbRiskDatasourceProperties {
@Value("${db.maxPoolSize}") @Value("${db.maxPoolSize}")
private int maxPoolSize; private int maxPoolSize;
/**
* tidb.risk_datasource
*/
@Value("${db.tidb.risk_datasource.fullurl}")
private String tidbRiskDatasourceJdbcUrl;
//private String tidbRiskDatasourceJdbcUrl="jdbc:mysql://fengkong-tidb.quantgroups.com:4010/risk_datasource?useUnicode=true&characterEncoding=UTF8";
@Value("${db.tidb.risk_datasource.username}")
private String tidbRiskDatasourceUsername;
//private String tidbRiskDatasourceUsername="risk_datasource_w";
@Value("${db.tidb.risk_datasource.password}") @Value("${db.renhang.rc_sync_guangda.fullurl}")
private String tidbRiskDatasourcePassword; private String datasourceJdbcUrl;
//private String tidbRiskDatasourcePassword="50GjQLd6hUOSeTMB";
@Value("${db.renhang.rc_sync_guangda.username}")
private String datasourceUsername;
@Value("${db.renhang.rc_sync_guangda.password}")
private String datasourcePassword;
} }
package cn.quantgroup.report.controller;
import cn.quantgroup.report.response.GlobalResponse;
import cn.quantgroup.report.service.cache.CacheService;
import cn.quantgroup.report.service.DataSourceCacheConfigService;
import cn.quantgroup.report.service.common.CommonQueryService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
@RequestMapping(value = "/cache")
public class CacheController {
@Autowired
private CacheService cacheService;
@Autowired
private DataSourceCacheConfigService cacheConfigService;
@Autowired
private CommonQueryService commonQueryService;
@Autowired
private RedisTemplate redisTemplate;
@RequestMapping("/clear_huadao_token")
public GlobalResponse clearHuadaoToken(){
try{
redisTemplate.delete("NEW_HUADAO_QUERY_TOKEN_KEY");
log.info("清除华道缓存token成功");
return GlobalResponse.generate("清除华道缓存token成功");
}catch(Exception e){
log.info("清除华道缓存token异常");
return GlobalResponse.generate("清除华道缓存token异常");
}
}
@RequestMapping("/get_huadao_token")
public GlobalResponse getHuadaoToken(){
try{
String token = String.valueOf(redisTemplate.opsForValue().get("NEW_HUADAO_QUERY_TOKEN_KEY"));
log.info("获取华道缓存token结果, token : {} ", token);
return GlobalResponse.generate(token);
}catch(Exception e){
log.info("获取华道缓存token异常");
return GlobalResponse.generate("获取华道缓存token异常");
}
}
@RequestMapping("/reload")
public GlobalResponse reload(){
try{
cacheConfigService.init();
log.info("刷新数据源缓存时间完成");
return GlobalResponse.generate("Ok");
}catch(Exception e){
log.info("刷新数据源缓存时间异常", e);
return GlobalResponse.generate(e.getMessage());
}
}
@RequestMapping("/config/clear")
public GlobalResponse clearConfigCache(String configName) {
try{
cacheService.clearCache(configName);
log.info("刷新缓存配置成功, configName: {} ", configName);
return GlobalResponse.generate("OK");
}catch (Exception e){
log.error("刷新缓存异常, {} , {} , {} ", configName, e.getMessage(), e);
return GlobalResponse.generate(e.getMessage());
}
}
@RequestMapping("/lock/clear")
public GlobalResponse clearLock(String lockName) {
try{
cacheService.clearLock(lockName);
return GlobalResponse.generate("OK");
}catch (Exception e){
log.error("{}", e.getMessage(), e);
return GlobalResponse.generate(e.getMessage());
}
}
}
package cn.quantgroup.report.controller; package cn.quantgroup.report.controller;
import cn.quantgroup.report.response.GlobalResponse; import cn.quantgroup.report.response.GlobalResponse;
import cn.quantgroup.report.service.common.CommonQueryService;
import cn.quantgroup.report.service.manualTool.CleanningTransactionLogService;
import cn.quantgroup.report.service.manualTool.ManualToolService; import cn.quantgroup.report.service.manualTool.ManualToolService;
import com.alibaba.fastjson.JSON;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -21,41 +18,7 @@ public class ManualToolController { ...@@ -21,41 +18,7 @@ public class ManualToolController {
@Autowired @Autowired
private ManualToolService manualToolService; private ManualToolService manualToolService;
@Autowired
private CommonQueryService queryService;
@Autowired
private CleanningTransactionLogService cleanningTransactionLogService;
@RequestMapping("/send/baihang")
public String sendBaihang(String p1,String p2,String p3,String p4,String p5,String secretKey, String isSend,String errorCode, String isProduct, String sendIncludeType) {
try{
Map<String,String> resultMap = manualToolService.sendBaiHangData(p1,p2,p3,p4,p5,secretKey,isSend,errorCode, isProduct, sendIncludeType);
return JSON.toJSONString(resultMap);
}catch (Exception e){
log.error("众信利民助贷模式To百行征信手动报送异常, {} , {} ", e.getMessage(), e);
return "众信利民助贷模式To百行征信手动报送异常";
}
}
/**
* 描述: 放款信息 D2 <br/>
* 参数: [jsonFile] <br/>
* 返回值: GlobalResponse <br/>
* 创建人: yanhui.Hao <br/>
* 创建时间: 2019.09.27 <br/>
*/
@RequestMapping("/build/d2")
public GlobalResponse buildLoanInfoD2(String jsonFile) {
try{
return manualToolService.buildLoanInfoD2(jsonFile);
}catch (Exception e){
log.error("百行征信手动报送异常, {} , {} ", e.getMessage(), e);
return GlobalResponse.generate(e.getMessage());
}
}
@RequestMapping("/dealWithExcelData") @RequestMapping("/dealWithExcelData")
...@@ -83,53 +46,7 @@ public class ManualToolController { ...@@ -83,53 +46,7 @@ public class ManualToolController {
return "调用结束"; return "调用结束";
} }
@RequestMapping("/d2_saveLog")
public String d2_saveLog(String d2JsonFileName,String reqIdFileName,String no_reqId_start, String isHaveRecordId){
manualToolService.d2_saveLog(d2JsonFileName,reqIdFileName,no_reqId_start,isHaveRecordId);
return "d2_saveLog调用结束";
}
@RequestMapping("/d3_saveLog")
public String d3_saveLog(String d3FilePath, String d3JsonFileNames, String reqIdLogName, String no_reqId_start, String isHaveRecordId){
manualToolService.d3_saveLog(d3FilePath,d3JsonFileNames,reqIdLogName,no_reqId_start,isHaveRecordId);
return "d3_saveLog调用结束";
}
@RequestMapping("/synCallRecordNew")
public String synCallRecordNew(String newYnrTime,String isExecuteOnce){
cleanningTransactionLogService.synCallRecordNew(newYnrTime,isExecuteOnce);
return "synCallRecordNew调度完成";
}
@RequestMapping("/checkCallRecordCF")
public String checkCallRecordCF(String newYnrTime,String isExecuteOnce){
cleanningTransactionLogService.checkCallRecordCF(newYnrTime,isExecuteOnce);
return "checkCallRecordCF调度完成";
}
@RequestMapping("/checkTransactionLogCF")
public String checkTransactionLogCF(String newYnrTime,String isExecuteOnce){
cleanningTransactionLogService.checkTransactionLogCF(newYnrTime,isExecuteOnce);
return "checkTransactionLogCF调度完成";
}
@RequestMapping("/checkCallRecordCFByTransactionLog")
public String checkCallRecordCFByTransactionLog(String newYnrTime,String isExecuteOnce){
cleanningTransactionLogService.checkCallRecordCFByTransactionLog(newYnrTime,isExecuteOnce);
return "checkCallRecordCFByTransactionLog调度完成";
}
@RequestMapping("/checkCallRecordCFByTransactionLog2")
public String checkCallRecordCFByTransactionLog2(String newYnrTime,String isExecuteOnce){
cleanningTransactionLogService.checkCallRecordCFByTransactionLog2(newYnrTime,isExecuteOnce);
return "checkCallRecordCFByTransactionLog2调度完成";
}
@RequestMapping("/deleteTidbCallRecordCF")
public String deleteTidbCallRecordCF(String cfFileName, String bakFileName){
cleanningTransactionLogService.deleteTidbCallRecordCF(cfFileName,bakFileName);
return "deleteTidbCallRecordCF调度完成";
}
@RequestMapping("/deleteRedisKey") @RequestMapping("/deleteRedisKey")
public Map<String,Object> deleteRedisKey(String key1, String key2, String key3){ public Map<String,Object> deleteRedisKey(String key1, String key2, String key3){
......
package cn.quantgroup.report.domain.master;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AccountPO implements Serializable{
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column account.id
*
* @mbg.generated
*/
private Integer id;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column account.source_name
*
* @mbg.generated
*/
private String sourceName;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column account.blance
*
* @mbg.generated
*/
private BigDecimal blance;
private BigDecimal thershold;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column account.status
*
* @mbg.generated
*/
private String status;
}
\ No newline at end of file
package cn.quantgroup.report.domain.master;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ApiRequestLogPO implements Serializable{
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column api_request_log_201805.id
*
* @mbg.generated
*/
private Long id;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column api_request_log_201805.url_type
*
* @mbg.generated
*/
private String urlType;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column api_request_log_201805.res_code
*
* @mbg.generated
*/
private String resCode;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column api_request_log_201805.res_msg
*
* @mbg.generated
*/
private String resMsg;
private String hitFlag;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column api_request_log_201805.time_elapse
*
* @mbg.generated
*/
private Integer timeElapse;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column api_request_log_201805.create_time
*
* @mbg.generated
*/
private Date createTime;
/**
* yyyymm --- 201805
*/
private String suffix;
}
\ No newline at end of file
package cn.quantgroup.report.domain.master;
import lombok.Data;
import java.io.Serializable;
import java.sql.Timestamp;
/**
* @Author fengjunkai
*/
@Data
public class CallRecord1 implements Serializable {
private static final long serialVersionUID = 3380282142711506937L;
private String transactionId;
private String uuid;
private String urlType;
private String code;
private Timestamp created_at;
private Timestamp updated_at;
}
package cn.quantgroup.report.domain.master;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* Created by suh on 2018/3/28.
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CommonWithBillingApiRequestEvent {
private String userId;
private Date timeCreated;
private String responseCode;
private String responseMessage;
private Integer mills;
private String requestUrlType;
private String isBilling;
}
package cn.quantgroup.report.domain.master;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CostRecordPO implements Serializable {
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column cost_record.id
*
* @mbg.generated
*/
private Integer id;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column cost_record.source_name
*
* @mbg.generated
*/
private String sourceName;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column cost_record.url_type
*
* @mbg.generated
*/
private String urlType;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column cost_record.invoke_times
*
* @mbg.generated
*/
private Integer invokeTimes;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column cost_record.cost
*
* @mbg.generated
*/
private BigDecimal cost;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column cost_record.balance
*
* @mbg.generated
*/
private BigDecimal balance;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column cost_record.create_time
*
* @mbg.generated
*/
private Date createTime;
/**
* yyyymm --- 201805
*/
private String suffix;
}
\ No newline at end of file
package cn.quantgroup.report.domain.master;
import lombok.*;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
@Builder
@Data
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class DataPriceConfigPO implements Serializable {
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column data_price_config.id
*
* @mbg.generated
*/
private Integer id;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column data_price_config.source_name
*
* @mbg.generated
*/
private String sourceName;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column data_price_config.data_type
*
* @mbg.generated
*/
private String dataType;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column data_price_config.url_type
*
* @mbg.generated
*/
private String urlType;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column data_price_config.price
*
* @mbg.generated
*/
private BigDecimal price;
private Integer frequency;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column data_price_config.status
*
* @mbg.generated
*/
private String status;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column data_price_config.create_time
*
* @mbg.generated
*/
private Date createTime;
}
\ No newline at end of file
package cn.quantgroup.report.domain.master;
import lombok.Data;
import java.io.Serializable;
import java.sql.Timestamp;
/**
* @Author fengjunkai
* @Date 2019-06-19 14:07
*/
@Data
public class DataSourceCacheConfig implements Serializable {
private static final long serialVersionUID = -8145976034591357518L;
private String productType;
private String productName;
private Integer productCacheTime;
private Integer productTestCacheTime;
private String dataSourceName;
}
package cn.quantgroup.report.domain.master;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* -----------------------------------------------------------------------------<br>
* 描述: 三方数据源项目通过uuid白名单将返回500的转换成400配置表 <br>
* 作者:yanhui.Hao <br>
* 时间:2019.10.22 <br>
* 授权: (C) Copyright (c) 2017 <br>
* 公司: 北京众信利民信息技术有限公司 <br>
* -----------------------------------------------------------------------------
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DsSpecialUserHandle {
private Long id;//主键id
private String methodName;//三方数据源实际方法名
private String serviceName;//三方数据源实际service名称
private String uuid;//用户的uuid
private Boolean enable; //数据是否可用, 默认1 true
}
package cn.quantgroup.report.domain.master;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* Created by suh on 2018/3/28.
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ElevenBeiApiRequestEvent {
private String identity;
private Date timeCreated;
private String responseCode;
private String responseMessage;
private Integer mills;
private String requestUrlType;
private String isBilling;
}
package cn.quantgroup.report.domain.master;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.util.Date;
@Data
@NoArgsConstructor
public class IntelliCreditLoanIssue {
private Long id;
private String name;
private String pid;
private String mobile;
private String loanType;
private Long accountOpenDate;
private Long applyDate;
private Long issueDate;
private BigDecimal loanAmount;
private Long loanId;
private Integer totalTerm;
private Long firstRepaymentDate;
private Integer termPeriod;
private Integer planCount;
private Integer status;
private Date timeCreated;
private String device;
@Builder
public IntelliCreditLoanIssue(Long id, String name, String pid, String mobile, String loanType, Long accountOpenDate, Long applyDate, Long issueDate, BigDecimal loanAmount, Long loanId, Integer totalTerm, Long firstRepaymentDate, Integer termPeriod, Integer planCount, Integer status, String device) {
this.name = name;
this.pid = pid;
this.mobile = mobile;
this.loanType = loanType;
this.accountOpenDate = accountOpenDate;
this.applyDate = applyDate;
this.issueDate = issueDate == null ? 0l : issueDate;
this.loanAmount = loanAmount == null ? BigDecimal.ZERO : loanAmount;
this.loanId = loanId;
this.totalTerm = totalTerm == null ? 0 : totalTerm;
this.firstRepaymentDate = firstRepaymentDate == null ? 0 : firstRepaymentDate;
this.termPeriod = termPeriod == null ? 0 : termPeriod;
this.planCount = planCount == null ? 0 : planCount;
this.status = status;
this.timeCreated = new Date();
this.device = device;
}
}
\ No newline at end of file
package cn.quantgroup.report.domain.master;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class IntelliCreditLoanTrace {
private Long id;
private Long loanId;
private Long repaymentPlanId;
private Integer termNo;
private String termStatus;
private Long targetRepaymentDate;
private Long realRepaymentDate;
private BigDecimal targetRepayment;
private BigDecimal realRepayment;
private Long statusConfirmAt;
private String overdueStatus;
private Integer status;
}
\ No newline at end of file
package cn.quantgroup.report.domain.master;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@NoArgsConstructor
public class IntelliCreditRequestEvent {
private Long id;
private String uuid;
private Date timeCreated;
private Integer httpCode;
private String responseMessage;
private Integer mills;
@Builder
public IntelliCreditRequestEvent(Long id, String uuid, Integer httpCode, String responseMessage, Integer mills) {
this.uuid = uuid;
this.id = id;
this.httpCode = httpCode;
this.responseMessage = responseMessage;
this.mills = mills;
this.timeCreated = new Date();
}
}
\ No newline at end of file
package cn.quantgroup.report.domain.master;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class JdApiRequestEvent {
private Long id;
private String uuid;
private Date timeCreated;
private String responseCode;
private String responseMessage;
private String businessCode;
private Integer mills;
private String requestUrlType;
}
\ No newline at end of file
package cn.quantgroup.report.domain.master;
import lombok.Data;
import java.io.Serializable;
/**
* -----------------------------------------------------------------------------<br>
* 描述: 百行报送逾期还款白名单表 <br>
* 作者:yanhui.Hao <br>
* 时间:2020.02.05 <br>
* 授权: (C) Copyright (c) 2017 <br>
* 公司: 北京众信利民信息技术有限公司 <br>
* -----------------------------------------------------------------------------
*/
@Data
//@Builder
public class RepaymentLoanWhiteList implements Serializable {
private static final long serialVersionUID = 8722959335665582382L;
private Long id;
private String pid;
private String mobile;
private String loanId; //贷款ID
private Integer type; //报送业务类型(1:广达小贷;2:众信利民助贷)
private Integer enable; //是否可用,0:不可用;1:可用
private String createdAt;
}
package cn.quantgroup.report.domain.master;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* Created by suh on 2018/2/11.
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UnionPayApiRequestEvent {
private String bankCardNo;
private Date timeCreated;
private Integer mills;
private String businessCode;
private String requestUrlType;
}
package cn.quantgroup.report.domain.renhang;
import java.io.Serializable;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class IdCardA implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private String name;
private String gender;//性别 男/女
private String nation;//民族
private String birthday;//出生日期 格式 :1990.02.14
private String citizen_id;//身份证号
private String address;
public IdCardA(String name, String gender, String nation, String birthday, String citizen_id, String address) {
super();
this.name = name;
this.gender = gender;
this.nation = nation;
this.birthday = birthday;
this.citizen_id = citizen_id;
this.address = address;
}
public IdCardA() {
}
}
package cn.quantgroup.report.domain.renhang;
import java.io.Serializable;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class IdCardB implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private String agency;//签发机关
private String valid_date_begin;//有效日期之起始日期 格式:20131022
private String valid_date_end;//有效日期之结束日期 格式:20231022
public IdCardB(String agency,String valid_date_begin,String valid_date_end) {
super();
this.agency = agency;
this.valid_date_begin = valid_date_begin;
this.valid_date_end = valid_date_end;
}
public IdCardB(){
}
}
package cn.quantgroup.report.domain.master; package cn.quantgroup.report.domain.renhang;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.apache.commons.net.ntp.TimeStamp;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date;
@Builder @Builder
@Data @Data
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
public class TransactionLogPO implements Serializable { public class User implements Serializable{
private static final long serialVersionUID = 1L;
private String transactionId; private Long id;
private String uuid; private String phoneNo;
private String password;
private String urlType; private String registeredFrom; //channel.id
private Integer code; private String uuid;
private Date timeCreated; private Integer enable; //'是否可用'
private TimeStamp createdAt;
private TimeStamp updatedAt;
} }
package cn.quantgroup.report.domain.renhang;
import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.net.ntp.TimeStamp;
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserOcrVo implements Serializable{
private static final long serialVersionUID = 1L;
private Long id;
private String uuid;
private String name;
private String gender;//性别 男/女
private String nation;//民族
private String birthday;//出生日期 格式 :1990.02.14
private String citizenId;//身份证号
private String address;
private String agency;//签发机关
private String validDateBegin;//有效日期之起始日期 格式:20131022
private String validDateEnd;//有效日期之结束日期 格式:20231022
private TimeStamp createdAt;
private TimeStamp updatedAt;
}
package cn.quantgroup.report.domain.tidbrisk;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
/**
* -----------------------------------------------------------------------------<br>
* 描述: 调用日志实体bean <br>
* 作者:yanhui.Hao <br>
* 时间:2019.12.30 <br>
* 授权: (C) Copyright (c) 2017 <br>
* 公司: 北京众信利民信息技术有限公司 <br>
* -----------------------------------------------------------------------------
*/
@Setter
@Getter
@Builder
public class CallRecord2 {
private String channelType;//数据源调用批次号
private String requestUrl;//数据源调用批次号
private String channelId;//渠道号, 融360-333, 国美-159843
private String transactionId;//数据源调用批次号
private String uuid;//用户uuid
private String urlType;//数据源, QCloud43Md5AntiFraud-腾讯43版反欺诈模型分
private Integer code;//1001:请求成功且命中;1002:请求成功且未命中;1003:请求失败;1004:命中HBase;
//private String createdAt;//创建时间
}
package cn.quantgroup.report.domain.tidbrisk;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.sql.Timestamp;
/**
* -----------------------------------------------------------------------------<br>
* 描述: 调用日志实体bean <br>
* 作者:yanhui.Hao <br>
* 时间:2019.12.30 <br>
* 授权: (C) Copyright (c) 2017 <br>
* 公司: 北京众信利民信息技术有限公司 <br>
* -----------------------------------------------------------------------------
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CallRecord3 implements Serializable {
private String channelType;//数据源调用批次号
private String requestUrl;//数据源调用批次号
private String channelId;//渠道号, 融360-333, 国美-159843
private String transactionId;//数据源调用批次号
private String uuid;//用户uuid
private String urlType;//数据源, QCloud43Md5AntiFraud-腾讯43版反欺诈模型分
private Integer code;//1001:请求成功且命中;1002:请求成功且未命中;1003:请求失败;1004:命中HBase;
private Timestamp createdAt;
private Timestamp updatedAt;
private Long id;
}
package cn.quantgroup.report.job; package cn.quantgroup.report.job;
import cn.quantgroup.report.service.baihang.BaiHangZhuDaiService;
import cn.quantgroup.report.service.baihang.constant.Constant; import cn.quantgroup.report.service.baihang.constant.Constant;
import cn.quantgroup.report.utils.dingtalk.DingTalk; import cn.quantgroup.report.utils.dingtalk.DingTalk;
import com.google.common.base.Stopwatch; import com.google.common.base.Stopwatch;
...@@ -9,7 +8,6 @@ import org.slf4j.LoggerFactory; ...@@ -9,7 +8,6 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.time.LocalDateTime; import java.time.LocalDateTime;
...@@ -36,18 +34,17 @@ public class QuantGroupZhuDaiReportToBaiHang { ...@@ -36,18 +34,17 @@ public class QuantGroupZhuDaiReportToBaiHang {
@Autowired @Autowired
private RedisTemplate<String,String> redisTemplate; private RedisTemplate<String,String> redisTemplate;
@Autowired /* @Autowired
private BaiHangZhuDaiService baiHangZhuDaiService; private BaiHangZhuDaiService baiHangZhuDaiService;
*/
@Autowired
private SynLoanInfoHistoryTask synLoanInfoHistoryTask;
@Autowired @Autowired
private DingTalk dingTalk; private DingTalk dingTalk;
@Async @Async
//@Scheduled(cron = "0 0 05 * * ?") //@Scheduled(cron = "0 0 05 * * ?")
public void startZhuDaiReport(){ /* public void startZhuDaiReport(){
if(increment()){ if(increment()){
redisTemplate.expire(Constant.QG_ZHU_DAI_REPORT_LOCK_KEY, 10, TimeUnit.SECONDS); redisTemplate.expire(Constant.QG_ZHU_DAI_REPORT_LOCK_KEY, 10, TimeUnit.SECONDS);
...@@ -93,7 +90,7 @@ public class QuantGroupZhuDaiReportToBaiHang { ...@@ -93,7 +90,7 @@ public class QuantGroupZhuDaiReportToBaiHang {
log.error("量化派-助贷模式报送贷款信息失败, 原因是同步历史表数据返回false, 请尽快人工处理, newTime: {} ", LocalDateTime.now()); log.error("量化派-助贷模式报送贷款信息失败, 原因是同步历史表数据返回false, 请尽快人工处理, newTime: {} ", LocalDateTime.now());
} }
} }
} }*/
public Boolean increment(){ public Boolean increment(){
......
package cn.quantgroup.report.mapper.master;
import cn.quantgroup.report.domain.master.AccountPO;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface AccountPOMapper {
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table account
*
* @mbg.generated
*/
int insert(AccountPO record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table account
*
* @mbg.generated
*/
int insertSelective(AccountPO record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table account
*
* @mbg.generated
*/
List<AccountPO> selectByExample(AccountPO example);
void updateByParams(AccountPO example);
}
\ No newline at end of file
package cn.quantgroup.report.mapper.master;
import cn.quantgroup.report.domain.master.ApiRequestLogPO;
import org.springframework.stereotype.Repository;
@Repository
public interface ApiRequestLogPOMapper {
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table api_request_log_201805
*
* @mbg.generated
*/
int insert(ApiRequestLogPO record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table api_request_log_201805
*
* @mbg.generated
*/
int insertSelective(ApiRequestLogPO record);
}
\ No newline at end of file
package cn.quantgroup.report.mapper.master;
import cn.quantgroup.report.domain.baihang.ApplyLoanInfo;
import cn.quantgroup.report.domain.baihang.ApplyLoanInfoZhuDai;
import cn.quantgroup.report.domain.baihang.LoanInfoZhuDai;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* 贷款申请信息查询mapper
*
* @Author fengjunkai
* @Date 2019-03-26 15:25
*/
@Repository
public interface ApplyLoanInfoDbMapper {
void saveApplyLoanInfoRecordLog(ApplyLoanInfo applyLoanInfo);
List<ApplyLoanInfo> findAll();
/**
* 描述: 根据loan_application_history_id查询手动报送的申请bean <br/>
* 参数: loanApplicationHistoryId <br/>
* 返回值: ApplyLoanInfoZhuDai <br/>
* 创建人: yanhui.Hao <br/>
* 创建时间: 2019.09.25 <br/>
*/
ApplyLoanInfoZhuDai findApplyInfoA1ByHistoryId(String loanApplicationHistoryId);
}
package cn.quantgroup.report.mapper.master;
import cn.quantgroup.report.domain.master.CommonWithBillingApiRequestEvent;
import org.springframework.stereotype.Repository;
/**
* Created by suh on 2017/11/6.
*/
@Repository
public interface CommonApiReqestEventMapper {
int insert(CommonWithBillingApiRequestEvent event);
}
package cn.quantgroup.report.mapper.master;
import cn.quantgroup.report.domain.master.CostRecordPO;
import org.springframework.stereotype.Repository;
@Repository
public interface CostRecordPOMapper {
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table cost_record
*
* @mbg.generated
*/
int insert(CostRecordPO record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table cost_record
*
* @mbg.generated
*/
int insertSelective(CostRecordPO record);
}
\ No newline at end of file
package cn.quantgroup.report.mapper.master;
import cn.quantgroup.report.domain.master.DataPriceConfigPO;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface DataPriceConfigPOMapper {
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table data_price_config
*
* @mbg.generated
*/
List<DataPriceConfigPO> queryByParams(DataPriceConfigPO dataPriceConfigPO);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table data_price_config
*
* @mbg.generated
*/
int insert(DataPriceConfigPO record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table data_price_config
*
* @mbg.generated
*/
int insertSelective(DataPriceConfigPO record);
}
\ No newline at end of file
package cn.quantgroup.report.mapper.master;
import cn.quantgroup.report.domain.master.DataSourceCacheConfig;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @Author fengjunkai
* @Date 2019-06-19 14:05
*/
@Repository
public interface DataSourceCacheConfigMapper {
List<DataSourceCacheConfig> findAllCacheConfig();
}
package cn.quantgroup.report.mapper.master;
import cn.quantgroup.report.domain.master.DsSpecialUserHandle;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* Created by suh on 2017/11/6.
*/
@Repository
public interface DsSpecialUserHandleMapper {
int insert(DsSpecialUserHandle event);
List<DsSpecialUserHandle> selectAllByEnable();
int updateNotEnableByParams(DsSpecialUserHandle record);
}
package cn.quantgroup.report.mapper.master;
import cn.quantgroup.report.domain.master.ElevenBeiApiRequestEvent;
import org.springframework.stereotype.Repository;
/**
* Created by suh on 2017/11/6.
*/
@Repository
public interface ElevenBeiApiReqestEventMapper {
int insert(ElevenBeiApiRequestEvent event);
}
package cn.quantgroup.report.mapper.master;
import cn.quantgroup.report.domain.master.IntelliCreditLoanIssue;
import java.util.List;
public interface IntelliCreditLoanIssueMapper {
int insert(IntelliCreditLoanIssue record);
int insertSelective(IntelliCreditLoanIssue record);
IntelliCreditLoanIssue selectByPrimaryKey(Long id);
List<IntelliCreditLoanIssue> selectUndoneByBeginId(Long id);
int updateByPrimaryKeySelective(IntelliCreditLoanIssue record);
int updateByPrimaryKeyWithBLOBs(IntelliCreditLoanIssue record);
int updateByPrimaryKey(IntelliCreditLoanIssue record);
}
\ No newline at end of file
package cn.quantgroup.report.mapper.master;
import cn.quantgroup.report.domain.master.IntelliCreditLoanTrace;
public interface IntelliCreditLoanTraceMapper {
int insert(IntelliCreditLoanTrace record);
int insertSelective(IntelliCreditLoanTrace record);
IntelliCreditLoanTrace selectByPrimaryKey(Long id);
int updateByPrimaryKeySelective(IntelliCreditLoanTrace record);
int updateByPrimaryKey(IntelliCreditLoanTrace record);
}
\ No newline at end of file
package cn.quantgroup.report.mapper.master;
import cn.quantgroup.report.domain.master.IntelliCreditRequestEvent;
import org.springframework.stereotype.Repository;
@Repository
public interface IntelliCreditRequestEventMapper {
int insert(IntelliCreditRequestEvent record);
int insertSelective(IntelliCreditRequestEvent record);
IntelliCreditRequestEvent selectByPrimaryKey(Long id);
int updateByPrimaryKeySelective(IntelliCreditRequestEvent record);
int updateByPrimaryKey(IntelliCreditRequestEvent record);
}
\ No newline at end of file
package cn.quantgroup.report.mapper.master;
import cn.quantgroup.report.domain.baihang.BaiHangUpDateRecord;
import cn.quantgroup.report.domain.baihang.LoanInfoZhuDai;
import org.springframework.stereotype.Repository;
/**
* -----------------------------------------------------------------------------<br>
* 描述: 放款信息查询 <br>
* 作者:yanhui.Hao <br>
* 时间:2019.11.06 <br>
* 授权: (C) Copyright (c) 2017 <br>
* 公司: 北京众信利民信息技术有限公司 <br>
* -----------------------------------------------------------------------------
*/
@Repository
public interface LoanInfoDbMapper {
void saveLoanInfoRecordLog(LoanInfoZhuDai loanInfo);
void updateCurrentRecordEnableFalce(BaiHangUpDateRecord baiHangUpDateRecord);
}
package cn.quantgroup.report.mapper.master;
import cn.quantgroup.report.domain.baihang.BaiHangRepayment;
import cn.quantgroup.report.domain.baihang.BaiHangUpDateRecord;
import cn.quantgroup.report.domain.baihang.RepaymentInfoZhuDai;
import cn.quantgroup.report.domain.baihang.RepaymentLoanInfoLog;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* -----------------------------------------------------------------------------<br>
* 描述: 还款信息查询 <br>
* 作者:yanhui.Hao <br>
* 时间:2019.11.06 <br>
* 授权: (C) Copyright (c) 2017 <br>
* 公司: 北京众信利民信息技术有限公司 <br>
* -----------------------------------------------------------------------------
*/
@Repository
public interface RepaymentLoanInfoDbMapper {
void saveRepaymentLoanInfoLog(RepaymentInfoZhuDai repaymentLoanInfo);
void updateCurrentRecordEnableFalse(BaiHangUpDateRecord baiHangUpDateRecord);
RepaymentInfoZhuDai findLastOne(BaiHangRepayment baiHangRepayment);
/**
* 描述: 根据recordId查询op_code=A的 <br/>
* 参数: <br/>
* 返回值: <br/>
* 创建人: yanhui.Hao <br/>
* 创建时间: 2019.09.24 <br/>
*/
List<RepaymentLoanInfoLog> findByD3RecordId(String[] recordIdArray);
}
package cn.quantgroup.report.mapper.master;
import cn.quantgroup.report.domain.master.RepaymentLoanWhiteList;
import org.springframework.stereotype.Repository;
import org.apache.ibatis.annotations.Param;
/**
* -----------------------------------------------------------------------------<br>
* 描述: 百行报送逾期还款白名单表 <br>
* 作者:yanhui.Hao <br>
* 时间:2020.02.05 <br>
* 授权: (C) Copyright (c) 2017 <br>
* 公司: 北京众信利民信息技术有限公司 <br>
* -----------------------------------------------------------------------------
*/
@Repository
public interface RepaymentLoanWhiteListMapper {
RepaymentLoanWhiteList findRepaymentLoanWhiteListOne(@Param("loanId")String loanId, @Param("type")int type);
}
package cn.quantgroup.report.mapper.master;
import cn.quantgroup.report.domain.master.TransactionLogPO;
import org.springframework.stereotype.Repository;
@Repository
public interface TransactionLogPOMapper {
int insert(TransactionLogPO transactionLogPO);
}
\ No newline at end of file
package cn.quantgroup.report.mapper.master;
import cn.quantgroup.report.domain.master.UnionPayApiRequestEvent;
import org.springframework.stereotype.Repository;
/**
* Created by suh on 2018/2/11.
*/
@Repository
public interface UnionPayApiRequestEventMapper {
int insert(UnionPayApiRequestEvent event);
}
package cn.quantgroup.report.mapper.renhang;
import cn.quantgroup.report.domain.renhang.User;
import cn.quantgroup.report.domain.renhang.UserOcrVo;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface UserMapper {
//查询日增用户,之前没有的
List<User> queryGrowingUser();
}
\ No newline at end of file
package cn.quantgroup.report.mapper.renhang;
import cn.quantgroup.report.domain.renhang.UserOcrVo;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface UserOcrMapper {
int insertUserOcr(UserOcrVo userOcr);
List<UserOcrVo> findUserOcr(UserOcrVo record);
}
\ No newline at end of file
package cn.quantgroup.report.mapper.tidbrisk;
import cn.quantgroup.report.domain.tidbrisk.CallRecord2;
import org.springframework.stereotype.Repository;
@Repository
public interface CallRecordMapper {
/**
* 描述: call_record表
* 迁移至fengkong-tidb.quantgroups.com的risk_datasource库<br/>
* 参数: <br/>
* 返回值: <br/>
* 创建人: yanhui.Hao <br/>
* 创建时间: 2019.12.30 <br/>
*/
int insertCallRecord(CallRecord2 callRecord);
}
\ No newline at end of file
package cn.quantgroup.report.service; package cn.quantgroup.report.service;
import cn.quantgroup.report.cmpt.MonitorCmpt; import cn.quantgroup.report.cmpt.MonitorCmpt;
import cn.quantgroup.report.enums.RequestUrlType;
import cn.quantgroup.report.service.thirdpartymonitor.ThirdpartyApiMonitorService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -19,9 +17,6 @@ public class AbstractBaseService { ...@@ -19,9 +17,6 @@ public class AbstractBaseService {
@Autowired @Autowired
protected MonitorCmpt monitorCmpt; protected MonitorCmpt monitorCmpt;
@Autowired
protected DataSourceCacheConfigService cacheConfigService;
static { static {
Runtime.getRuntime().addShutdownHook(new Thread(() -> { Runtime.getRuntime().addShutdownHook(new Thread(() -> {
if (pool != null) pool.shutdown(); if (pool != null) pool.shutdown();
...@@ -29,11 +24,11 @@ public class AbstractBaseService { ...@@ -29,11 +24,11 @@ public class AbstractBaseService {
})); }));
} }
protected void saveLog(ThirdpartyApiMonitorService thirdpartyApiMonitorService, RequestUrlType urlType, Long start, Long end, String buscode, String message, String hitFlag) { /*protected void saveLog(ThirdpartyApiMonitorService thirdpartyApiMonitorService, RequestUrlType urlType, Long start, Long end, String buscode, String message, String hitFlag) {
final String code = buscode; final String code = buscode;
final String msg = message; final String msg = message;
final int millsElapse = (int)(end-start); final int millsElapse = (int)(end-start);
final String flag = hitFlag; final String flag = hitFlag;
pool.execute(()->thirdpartyApiMonitorService.saveLog(urlType, code, msg, flag, millsElapse)); pool.execute(()->thirdpartyApiMonitorService.saveLog(urlType, code, msg, flag, millsElapse));
} }*/
} }
package cn.quantgroup.report.service;
import cn.quantgroup.report.domain.master.DataSourceCacheConfig;
import cn.quantgroup.report.mapper.master.DataSourceCacheConfigMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
/**
* 数据源缓存配置
*
* @Author fengjunkai
* @Date 2019-06-19 14:53
*/
@Slf4j
@Service
public class DataSourceCacheConfigService {
private Map<String, Integer> allDataSourceCacheConfigMap = new ConcurrentHashMap();
private Map<String, Integer> allDataSourceTestCacheConfigMap = new ConcurrentHashMap();
@Autowired
private DataSourceCacheConfigMapper dataSourceCacheConfigMapper;
@PostConstruct
private void initDataSourceCacheConfig() {
init();
}
public void init() {
allDataSourceCacheConfigMap.clear();
allDataSourceTestCacheConfigMap.clear();
List<DataSourceCacheConfig> allCacheConfig = dataSourceCacheConfigMapper.findAllCacheConfig();
allDataSourceCacheConfigMap = allCacheConfig.stream().collect(Collectors.toMap(DataSourceCacheConfig::getProductType, DataSourceCacheConfig::getProductCacheTime));
allDataSourceTestCacheConfigMap = allCacheConfig.stream().collect(Collectors.toMap(DataSourceCacheConfig::getProductType, DataSourceCacheConfig::getProductTestCacheTime));
}
public Integer getCacheTime(String productType) {
Integer cacheTime = allDataSourceCacheConfigMap.get(productType);
return cacheTime == null ? 1 : cacheTime;
}
public Integer getTestCacheTime(String productType) {
Integer testCacheTime = allDataSourceTestCacheConfigMap.get(productType);
return testCacheTime == null ? 1 : testCacheTime;
}
}
...@@ -2,9 +2,12 @@ package cn.quantgroup.report.service.baihang; ...@@ -2,9 +2,12 @@ package cn.quantgroup.report.service.baihang;
import cn.quantgroup.report.service.AbstractBaseService; import cn.quantgroup.report.service.AbstractBaseService;
import cn.quantgroup.report.service.CommonSuperService; import cn.quantgroup.report.service.CommonSuperService;
import cn.quantgroup.report.service.baihang.client.BhInterfaceCreditApiClient;
import cn.quantgroup.report.service.baihang.request.InterfaceUploadRequest;
import cn.quantgroup.report.service.baihang.response.InterfaceUploadResponse;
import cn.quantgroup.report.service.baihang.util.BHRSAUtils;
import cn.quantgroup.report.service.baihang.util.Base64; import cn.quantgroup.report.service.baihang.util.Base64;
import cn.quantgroup.report.service.http.IHttpService; import cn.quantgroup.report.service.http.IHttpService;
import cn.quantgroup.report.utils.IdUtils;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -12,7 +15,10 @@ import org.apache.commons.lang3.StringUtils; ...@@ -12,7 +15,10 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.security.PublicKey;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
...@@ -39,6 +45,8 @@ public class BaiHangQueryService extends AbstractBaseService implements CommonSu ...@@ -39,6 +45,8 @@ public class BaiHangQueryService extends AbstractBaseService implements CommonSu
@Autowired @Autowired
private IHttpService iHttpService; private IHttpService iHttpService;
private static PublicKey baihang_zhudai_publickey = null;
/** /**
* -----------------------------------------------------------------------------<br> * -----------------------------------------------------------------------------<br>
* 描 述: 百行个人征信报告(zxlm实体:贷前/贷中/贷后)查询公共方法 <br> * 描 述: 百行个人征信报告(zxlm实体:贷前/贷中/贷后)查询公共方法 <br>
...@@ -73,9 +81,9 @@ public class BaiHangQueryService extends AbstractBaseService implements CommonSu ...@@ -73,9 +81,9 @@ public class BaiHangQueryService extends AbstractBaseService implements CommonSu
try { try {
JSONObject applyLoanInfo = new JSONObject(); JSONObject applyLoanInfo = new JSONObject();
applyLoanInfo.put("reqID", transactionId);//记录唯一标识 applyLoanInfo.put("reqID", transactionId);//记录唯一标识
applyLoanInfo.put("name", BaiHangZhuDaiService.interfaceUploadClient(name)); applyLoanInfo.put("name", interfaceUploadClient(name));
applyLoanInfo.put("idType", 1);//证件类型 applyLoanInfo.put("idType", 1);//证件类型
applyLoanInfo.put("pid", BaiHangZhuDaiService.interfaceUploadClient(identity)); applyLoanInfo.put("pid", interfaceUploadClient(identity));
applyLoanInfo.put("creditRptVersion", 1);//信用报告版本 1:机构简版 applyLoanInfo.put("creditRptVersion", 1);//信用报告版本 1:机构简版
applyLoanInfo.put("queryReason", queryReason);//查询原因 applyLoanInfo.put("queryReason", queryReason);//查询原因
if ("2".equals(queryReason) || "3".equals(queryReason)) { if ("2".equals(queryReason) || "3".equals(queryReason)) {
...@@ -113,4 +121,34 @@ public class BaiHangQueryService extends AbstractBaseService implements CommonSu ...@@ -113,4 +121,34 @@ public class BaiHangQueryService extends AbstractBaseService implements CommonSu
return headerMap; return headerMap;
} }
public static String interfaceUploadClient(String param) throws Exception {
InterfaceUploadRequest req = new InterfaceUploadRequest();
List<String> datas = new ArrayList<String>();
datas.add(param);
//设置待加密的原始数据集合
req.setData(datas);
BhInterfaceCreditApiClient client = new BhInterfaceCreditApiClient();
//初始化设置RSA公钥
client.init(getBaihangZDPublickey());
//执行加密操作
InterfaceUploadResponse response = client.execute(req);
if (response.isSuccess) {
List<String> data = response.getEncryptData();
return data.get(0);
}
throw new Exception();
}
private static PublicKey getBaihangZDPublickey(){
if(baihang_zhudai_publickey==null){
try{
baihang_zhudai_publickey = BHRSAUtils.readRSAPublicKey("/baihang/rsa_public_key.pem");
log.info("初始化百行助贷PublicKey实例完成");
}catch(Exception e){
log.error("初始化百行助贷PublicKey实例", e);
}
}
return baihang_zhudai_publickey;
}
} }
package cn.quantgroup.report.service.renhang;
import cn.quantgroup.report.domain.renhang.UserOcrVo;
import com.alibaba.fastjson.JSON;
import com.mysql.jdbc.PreparedStatement;
import lombok.extern.slf4j.Slf4j;
import java.sql.*;
import java.util.List;
import static cn.quantgroup.report.utils.RenHangHikDataSource.HIK_DATA_SOURCE_RENHANG;
@Slf4j
public class RenHangBatchExecuteJdbc {
private static void close(Connection conn, Statement st, ResultSet rs){
try {
if(rs!=null)
rs.close();
if(st!=null)
st.close();
if(conn!=null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void batchInsertExecute(List<UserOcrVo> ocrInfoList){
String insert_sql = "INSERT INTO `user_ocr` (`uuid`, `address`, `birthday`, `citizen_id`, `gender`, `name`, `nation`, `agency`, `valid_date_begin`, `valid_date_end`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);";
Connection conn = null;
java.sql.PreparedStatement ps = null;
try {
conn = HIK_DATA_SOURCE_RENHANG.dataSourceJdbc.getConnection();
ps = conn.prepareStatement(insert_sql);
conn.setAutoCommit(false);
for (int i = 0; i < ocrInfoList.size(); i++) {
UserOcrVo bean = ocrInfoList.get(i);
ps.setString(1, bean.getUuid());
ps.setString(2, bean.getAddress());
ps.setString(3, bean.getBirthday());
ps.setString(4, bean.getCitizenId());
ps.setString(5, bean.getGender());
ps.setString(6, bean.getName());
ps.setString(7, bean.getNation());
ps.setString(8, bean.getAgency());
ps.setString(9, bean.getValidDateBegin());
ps.setString(10, bean.getValidDateEnd());
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
ps.setTimestamp(11, timestamp);
ps.setTimestamp(12, timestamp);
ps.addBatch();
}
ps.executeBatch();
conn.commit();
}catch(Exception e){
log.error("======执行batchInsertExecute异常======"+insert_sql+"\r\n",e);
e.printStackTrace();
}finally {
close(conn, ps,null);
}
}
public static void batchUpdateExecute(List<UserOcrVo> ocrInfoList){
String update_sql = "update user_ocr set valid_date_begin=?, valid_date_end=?, updated_at=? where uuid=?";
Connection conn = null;
java.sql.PreparedStatement ps = null;
try {
conn = HIK_DATA_SOURCE_RENHANG.dataSourceJdbc.getConnection();
ps = conn.prepareStatement(update_sql);
conn.setAutoCommit(false);
for (int i = 0; i < ocrInfoList.size(); i++) {
UserOcrVo bean = ocrInfoList.get(i);
ps.setString(1, bean.getValidDateBegin());
ps.setString(2, bean.getValidDateEnd());
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
ps.setTimestamp(3, timestamp);
ps.setString(4, bean.getUuid());
ps.addBatch();
}
ps.executeBatch();
conn.commit();
}catch(Exception e){
log.error("======执行batchUpdateExecute异常======"+update_sql+"\r\n",e);
e.printStackTrace();
}finally {
close(conn, ps,null);
}
}
}
package cn.quantgroup.report.service.thirdpartymonitor;
public class HBaseConfig {
public final static ThreadLocal<Boolean> readHBaseFirst = new ThreadLocal<Boolean>() {
public Boolean initialValue() {
return true;
}
};
public static void disableReadHBaseFirst() {
readHBaseFirst.set(false);
}
public static void enableReadHBaseFirst() {
readHBaseFirst.set(true);
}
}
package cn.quantgroup.report.service.thirdpartymonitor;
import cn.quantgroup.report.error.QGExceptionType;
import cn.quantgroup.report.error.QGPreconditions;
import cn.quantgroup.report.utils.ClockUtils;
//import com.lkb.data.hbase.utils.RowKeyTool;
import lombok.Builder;
import lombok.Data;
/*import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.util.Bytes;*/
@Data
public class ThirdPartyBean {
/* public static final TableName TABLE_NAME = TableName.valueOf("third-party-info");
public static final byte[] COLUMN_FAMILY = Bytes.toBytes("f");
public static final byte[] ID_NO = Bytes.toBytes("i");
public static final byte[] DATA_SOURCE = Bytes.toBytes("s");
public static final byte[] REQUEST_TIME = Bytes.toBytes("t");
public static final byte[] REQUEST_MESSAGE = Bytes.toBytes("q");
public static final byte[] RESPONSE_MESSAGE = Bytes.toBytes("p");
private String id;
private String requestTime;
private String datasource;
private String request;
private String response;
@Builder
public ThirdPartyBean(String id, String datasource, String request, String response) {
this.id = id;
this.datasource = datasource; //urltype
this.request = request;
this.response = response;
this.requestTime = ClockUtils.hBaseDateTimeStringFromTimestamp(ClockUtils.now());
}
public byte[] findRowKey() {
QGPreconditions.checkArgument(this.id != null && datasource != null, QGExceptionType.COMMON_STRING_PARAM_IS_NULL);
byte[] prefix = RowKeyTool.getMD5Prefix(id, 4);
QGPreconditions.checkArgument(prefix != null, QGExceptionType.COMMON_STRING_PARAM_IS_NULL);
return Bytes.add(prefix, RowKeyTool.createRowKeyField(id), Bytes.toBytes("|" + datasource));
}
public Put generatePut() {
byte[] rk = findRowKey();
Put put = new Put(rk);
put.addColumn(COLUMN_FAMILY, ID_NO, Bytes.toBytes(id));
put.addColumn(COLUMN_FAMILY, DATA_SOURCE, Bytes.toBytes(datasource));
put.addColumn(COLUMN_FAMILY, REQUEST_TIME, Bytes.toBytes(requestTime));
put.addColumn(COLUMN_FAMILY, REQUEST_MESSAGE, Bytes.toBytes(request));
put.addColumn(COLUMN_FAMILY, RESPONSE_MESSAGE, Bytes.toBytes(response));
return put;
}*/
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.quantgroup.report.mapper.master.CommonApiReqestEventMapper">
<insert id="insert" parameterType="cn.quantgroup.report.domain.master.CommonWithBillingApiRequestEvent">
insert into common_request_event(user_id,time_created,mills,response_code,response_message,request_url_type,is_billing) values(#{userId},#{timeCreated},#{mills},#{responseCode},#{responseMessage},#{requestUrlType},#{isBilling})
</insert>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.quantgroup.report.mapper.master.DataSourceCacheConfigMapper">
<resultMap id="BaseResultMap" type="cn.quantgroup.report.domain.master.DataSourceCacheConfig">
<result column="product_type" jdbcType="VARCHAR" property="productType" />
<result column="product_name" jdbcType="VARCHAR" property="productName" />
<result column="product_cache_time" jdbcType="INTEGER" property="productCacheTime" />
<result column="product_cache_time" jdbcType="INTEGER" property="productCacheTime" />
<result column="product_test_cache_time" jdbcType="INTEGER" property="productTestCacheTime" />
<result column="data_source_name" jdbcType="VARCHAR" property="dataSourceName" />
</resultMap>
<select id="findAllCacheConfig" parameterType="cn.quantgroup.report.domain.master.DataSourceCacheConfig" resultMap="BaseResultMap">
select * from data_source_cache_config where enable = true;
</select>
</mapper>
\ No newline at end of file
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