Commit f13d85a3 authored by zhoumaotao's avatar zhoumaotao

调整代码2

parent b2b1958f
# datasync
京东订单接口调用
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.gavel.datasync</groupId>
<artifactId>datasync</artifactId>
<version>1.0.0</version>
<name>gavel-datasync</name>
<description>gavel-datasync</description>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.8.1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.46</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>19.0</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>com.jd</groupId>
<artifactId>open-api-sdk</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.gavel.platform</groupId>
<artifactId>gavel-common</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
package com.gavel.datasync;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DatasyncApplication {
public static void main(String[] args) {
SpringApplication.run(DatasyncApplication.class, args);
}
}
package com.gavel.datasync.config;
import org.springframework.boot.CommandLineRunner;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
@Configuration
public class InitConfig {
@Component
@Order(0) //通过order值的大小来决定启动的顺序
public class CollectorRunner implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
}
}
}
package com.gavel.datasync.config;
import java.time.Duration;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.data.redis.connection.RedisPassword;
import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettucePoolingClientConfiguration;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
@Configuration
public class RedisConfig {
@Autowired
private RedisProperties redisProperties;
@Value("${redis.username:}")
private String username;
@Value("${redis.password:}")
private String password;
@Value("${redis.host:localhost}")
private String host;
@Value("${redis.port:6379}")
private int port;
@Value("${redis.database:0}")
private Integer database;
//最大空闲数
@Value("${redis.pool.maxIdle:20}")
private int maxIdle;
//控制一个pool可分配多少个jedis实例,用来替换上面的maxActive
@Value("${redis.pool.maxTotal:200}")
private int maxTotal;
//连接池的最大数据库连接数
@Value("${redis.pool.maxActive:-1}")
private int maxActive;
//最大建立连接等待时间。如果超过此时间将接到异常
@Value("${redis.pool.maxWaitMillis:1000}")
private long maxWaitMillis;
//逐出连接的最小空闲时间 默认1800000毫秒(30分钟)
@Value("${redis.pool.minEvictableIdleTimeMillis:1800000}")
private Long minEvictableIdleTimeMillis;
//每次释放连接的最大数目
@Value("${redis.pool.numTestsPerEvictionRun:3}")
private Integer numTestsPerEvictionRun;
//逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程
@Value("${redis.pool.timeBetweenEvictionRunsMillis:-1}")
private Long timeBetweenEvictionRunsMillis;
//是否在从池中取出连接前进行检验,如果检验失败,则从池中取出连接并尝试取出另一个
@Value("${redis.pool.testOnBorrow:true}")
private boolean testOnBorrow;
//#在空闲时检查有效性, 默认false
@Value("${redis.pool.testWhileIdle:false}")
private boolean testWhileIdle;
//#是否进行有效性检查
@Value("${redis.pool.testOnReturn:false}")
private boolean testOnReturn;
/**
* JedisPoolConfig 连接池
* @return
*/
@Bean("genericObjectPoolConfig")
public GenericObjectPoolConfig genericObjectPoolConfig() {
//连接池配置
GenericObjectPoolConfig genericObjectPoolConfig = new GenericObjectPoolConfig();
// 最大空闲数
genericObjectPoolConfig.setMaxIdle(maxIdle);
// 连接池的最大数据库连接数
genericObjectPoolConfig.setMaxTotal(maxTotal);
// 最大建立连接等待时间
genericObjectPoolConfig.setMaxWaitMillis(maxWaitMillis);
// 逐出连接的最小空闲时间 默认1800000毫秒(30分钟)
genericObjectPoolConfig.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
// 每次逐出检查时 逐出的最大数目 如果为负数就是 : 1/abs(n), 默认3
genericObjectPoolConfig.setNumTestsPerEvictionRun(numTestsPerEvictionRun);
// 逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
genericObjectPoolConfig.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
// 是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个
genericObjectPoolConfig.setTestOnBorrow(testOnBorrow);
// 在空闲时检查有效性, 默认false
genericObjectPoolConfig.setTestWhileIdle(testWhileIdle);
return genericObjectPoolConfig;
}
/**
* jedis连接工厂
* @return
*/
@Primary
@Bean("lettuceConnectionFactory")
public LettuceConnectionFactory lettuceConnectionFactory() {
RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
//设置redis服务器的host或者ip地址
redisStandaloneConfiguration.setHostName(host);
redisStandaloneConfiguration.setPort(port);
redisStandaloneConfiguration.setPassword(RedisPassword.of(password));
redisStandaloneConfiguration.setDatabase(database);
return new LettuceConnectionFactory(redisStandaloneConfiguration, lettuceClientConfiguration());
}
private LettuceClientConfiguration lettuceClientConfiguration(){
LettucePoolingClientConfiguration.LettucePoolingClientConfigurationBuilder builder = LettucePoolingClientConfiguration.builder();
builder.poolConfig(genericObjectPoolConfig());
if (this.redisProperties.isSsl()) {
builder.useSsl();
}
if (this.redisProperties.getTimeout() != null) {
Duration timeout = this.redisProperties.getTimeout();
builder.commandTimeout(timeout).shutdownTimeout(timeout);
}
builder.poolConfig(genericObjectPoolConfig());
return builder.build();
}
@Bean("redisTemplate")
public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory connectionFactory) {
RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
template.setConnectionFactory(lettuceConnectionFactory());
Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
// key采用String的序列化方式
template.setKeySerializer(stringRedisSerializer);
// hash的key也采用String的序列化方式
template.setHashKeySerializer(stringRedisSerializer);
// value序列化方式采用jackson
template.setValueSerializer(jackson2JsonRedisSerializer);
// hash的value序列化方式采用jackson
template.setHashValueSerializer(jackson2JsonRedisSerializer);
//redis开启事务保证所有命令串行执行
template.setEnableTransactionSupport(true);
template.afterPropertiesSet();
return template;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
public Integer getDatabase() {
return database;
}
public void setDatabase(Integer database) {
this.database = database;
}
public int getMaxIdle() {
return maxIdle;
}
public void setMaxIdle(int maxIdle) {
this.maxIdle = maxIdle;
}
public int getMaxTotal() {
return maxTotal;
}
public void setMaxTotal(int maxTotal) {
this.maxTotal = maxTotal;
}
public int getMaxActive() {
return maxActive;
}
public void setMaxActive(int maxActive) {
this.maxActive = maxActive;
}
public long getMaxWaitMillis() {
return maxWaitMillis;
}
public void setMaxWaitMillis(long maxWaitMillis) {
this.maxWaitMillis = maxWaitMillis;
}
public Long getMinEvictableIdleTimeMillis() {
return minEvictableIdleTimeMillis;
}
public void setMinEvictableIdleTimeMillis(Long minEvictableIdleTimeMillis) {
this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis;
}
public Integer getNumTestsPerEvictionRun() {
return numTestsPerEvictionRun;
}
public void setNumTestsPerEvictionRun(Integer numTestsPerEvictionRun) {
this.numTestsPerEvictionRun = numTestsPerEvictionRun;
}
public Long getTimeBetweenEvictionRunsMillis() {
return timeBetweenEvictionRunsMillis;
}
public void setTimeBetweenEvictionRunsMillis(Long timeBetweenEvictionRunsMillis) {
this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis;
}
public boolean isTestOnBorrow() {
return testOnBorrow;
}
public void setTestOnBorrow(boolean testOnBorrow) {
this.testOnBorrow = testOnBorrow;
}
public boolean isTestWhileIdle() {
return testWhileIdle;
}
public void setTestWhileIdle(boolean testWhileIdle) {
this.testWhileIdle = testWhileIdle;
}
public boolean isTestOnReturn() {
return testOnReturn;
}
public void setTestOnReturn(boolean testOnReturn) {
this.testOnReturn = testOnReturn;
}
}
package com.gavel.datasync.controller;
import com.alibaba.fastjson.JSONObject;
import com.gavel.datasync.service.DatasyncService;
import com.jd.open.api.sdk.domain.supplier.IDpsSearchAllOrdersInterface.response.searchAllOrders.QueryAllOrdersForJosResult;
import com.jd.open.api.sdk.domain.supplier.ProductManagementService.response.find.CategoryDto;
import com.jd.open.api.sdk.domain.supplier.ProductManagementService.response.find.MyProductInfoDto;
import com.jd.open.api.sdk.domain.supplier.ProductManagementService.response.find.SimpleBrandDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
import java.util.List;
@RestController
public class DatasyncController {
@Autowired
private DatasyncService datasyncService;
@PostMapping("/datasync")
@ResponseBody
public Object httpDoTran(@RequestBody JSONObject param ){
return "success!";
}
/**
* 获取类目接口查询
*/
@PostMapping("/getCategories")
@ResponseBody
public Object getCategories(@RequestBody JSONObject param) {
List<CategoryDto> categoryDtoList= datasyncService.getCategories();
return categoryDtoList;
}
/**
* 获取品牌接口查询
*/
@PostMapping("/getBrands")
@ResponseBody
public Object getBrands(@RequestBody JSONObject param) {
List<SimpleBrandDto> simpleBrandDtoList= datasyncService.getBrands();
return simpleBrandDtoList;
}
/**
* 获取商品接口
*/
@PostMapping("/getProducts")
@ResponseBody
public Object getProducts(@RequestBody JSONObject param) {
Date time = param.getDate("time");
String brandid = param.getString("brandid");
String categoryid = param.getString("categoryid");
List<MyProductInfoDto> myProductInfoDtoList= datasyncService.getProducts(time,brandid,categoryid);
return myProductInfoDtoList;
}
/**
* 获取查询订单
*/
@PostMapping("/searchOrders")
@ResponseBody
public Object searchOrders(@RequestBody JSONObject param) {
Date start = param.getDate("start");
Date end = param.getDate("end");
List<QueryAllOrdersForJosResult> resultLists= datasyncService.searchOrders(start,end);
return resultLists;
}
/**
* 获取查询订单
*/
@PostMapping("/searchOrders2")
@ResponseBody
public Object searchOrders2(@RequestBody JSONObject param) {
Date start = param.getDate("start");
Date end = param.getDate("end");
List<QueryAllOrdersForJosResult> resultLists= datasyncService.searchOrders2(start,end);
return resultLists;
}
}
package com.gavel.datasync.service;
import com.jd.open.api.sdk.domain.supplier.IDpsSearchAllOrdersInterface.response.searchAllOrders.QueryAllOrdersForJosResult;
import com.jd.open.api.sdk.domain.supplier.ProductManagementService.response.find.CategoryDto;
import com.jd.open.api.sdk.domain.supplier.ProductManagementService.response.find.MyProductInfoDto;
import com.jd.open.api.sdk.domain.supplier.ProductManagementService.response.find.SimpleBrandDto;
import java.util.Date;
import java.util.List;
public interface DatasyncService {
/**
* 获取类目接口查询
* @return
*/
public List<CategoryDto> getCategories();
/**
* 获取品牌接口查询
* @return
*/
public List<SimpleBrandDto> getBrands();
/**
* 获取商品接口
* @param time
* @param brandid
* @param categoryid
* @return
*/
public List<MyProductInfoDto> getProducts(Date time, String brandid, String categoryid);
/**
* 获取订单信息
* @param start
* @param end
* @return
*/
public List<QueryAllOrdersForJosResult> searchOrders(Date start, Date end);
public List<QueryAllOrdersForJosResult> searchOrders2(Date start, Date end);
}
package com.gavel.datasync.util;
public class JDClientUtil {
// 正式环境
public static final String SERVER_URL = "https://api.jd.com/routerjson";
public static final String APPKEY = "FEAFBABCDEEC48A569A10818138D7841";
public static final String APPSECRET = "36c196b5b2ea4c2aaaae6d80010a28a8";
public static final String ACCESS_TOKEN = "1d4a07ea9743455d99c2f7f63e2f7971a3zw";
}
#服务器端口
server.port=9080
\ No newline at end of file
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.gavel.local</groupId>
<artifactId>gavel-local</artifactId>
<version>1.0.0</version>
<packaging>pom</packaging>
<name>gavel-local</name>
<build>
<plugins>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<id>open-api-sdk</id>
<phase>install</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<file>local-artifacts/open-api-sdk-2.0-2022-03-15.jar</file>
<groupId>com.jd</groupId>
<artifactId>open-api-sdk</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<generatePom>true</generatePom>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.gavel.dasyncweb</groupId>
<artifactId>dasyncweb</artifactId>
<packaging>pom</packaging>
<version>1.0</version>
<modules>
<module>gavel-local</module>
<module>gavel-datasync</module>
</modules>
</project>
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