From f6b2c5d5f43811895f30d7739504ccc93661dea9 Mon Sep 17 00:00:00 2001
From: dafanshu <654789936@qq.com>
Date: Sat, 14 Jul 2018 10:04:57 +0800
Subject: [PATCH 1/2] =?UTF-8?q?=E6=9B=B4=E6=96=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitignore | 5 +-
bigfans-cloud-api-gateway/pom.xml | 4 +-
bigfans-cloud-base/pom.xml | 34 +++++-
bigfans-cloud-discovery-eureka/pom.xml | 2 +-
bigfans-cloud-service-cart/pom.xml | 13 +--
.../bigfans/cartservice/CartServiceApp.java | 4 -
bigfans-cloud-service-catalog/pom.xml | 8 +-
.../catalogservice/CatalogServiceApp.java | 1 -
bigfans-cloud-service-notification/pom.xml | 6 +-
bigfans-cloud-service-order/pom.xml | 10 +-
.../bigfans/orderservice/OrderServiceApp.java | 4 -
bigfans-cloud-service-payment/pom.xml | 8 +-
.../bigfans/paymentservice/PayServiceApp.java | 4 -
bigfans-cloud-service-pricing/pom.xml | 6 +-
bigfans-cloud-service-review/pom.xml | 6 +-
bigfans-cloud-service-search/pom.xml | 6 +-
bigfans-cloud-service-shipping/pom.xml | 90 ---------------
.../shippingservice/ShippingServiceApp.java | 13 ---
.../api/clients/OrderServiceClient.java | 37 ------
.../config/CORSConfiguration.java | 27 -----
.../config/DataSourceConfig.java | 108 ------------------
.../config/EventBusConfig.java | 38 ------
.../shippingservice/config/KafkaConfig.java | 63 ----------
.../shippingservice/config/PluginConfig.java | 29 -----
.../config/RedisTemplateConfig.java | 41 -------
.../config/RestTemplateConfig.java | 21 ----
.../shippingservice/config/WebConfig.java | 40 -------
.../shippingservice/dao/DeliveryDAO.java | 15 ---
.../dao/impl/DeliveryDAOImpl.java | 20 ----
.../listener/OrderListener.java | 41 -------
.../shippingservice/model/Delivery.java | 14 ---
.../bigfans/shippingservice/model/Order.java | 41 -------
.../model/entity/DeliveryEntity.java | 54 ---------
.../service/DeliveryService.java | 16 ---
.../service/impl/DeliveryServiceImpl.java | 26 -----
.../src/main/resources/application.yml | 58 ----------
.../src/main/resources/log4j2.xml | 26 -----
bigfans-cloud-service-system/pom.xml | 8 +-
bigfans-cloud-service-user/pom.xml | 8 +-
bigfans-cloud-zipkin-server/pom.xml | 1 -
.../sleuth/server/ZipkinServerApp.java | 2 -
.../framework/dao/DistributeIDGenerator.java | 5 -
.../bigfans/framework/utils/QiniuUtils.java | 31 -----
pom.xml | 63 +++++-----
44 files changed, 121 insertions(+), 936 deletions(-)
delete mode 100644 bigfans-cloud-service-shipping/pom.xml
delete mode 100644 bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/ShippingServiceApp.java
delete mode 100644 bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/api/clients/OrderServiceClient.java
delete mode 100644 bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/CORSConfiguration.java
delete mode 100644 bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/DataSourceConfig.java
delete mode 100644 bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/EventBusConfig.java
delete mode 100644 bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/KafkaConfig.java
delete mode 100644 bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/PluginConfig.java
delete mode 100644 bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/RedisTemplateConfig.java
delete mode 100644 bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/RestTemplateConfig.java
delete mode 100644 bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/WebConfig.java
delete mode 100644 bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/dao/DeliveryDAO.java
delete mode 100644 bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/dao/impl/DeliveryDAOImpl.java
delete mode 100644 bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/listener/OrderListener.java
delete mode 100644 bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/model/Delivery.java
delete mode 100644 bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/model/Order.java
delete mode 100644 bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/model/entity/DeliveryEntity.java
delete mode 100644 bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/service/DeliveryService.java
delete mode 100644 bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/service/impl/DeliveryServiceImpl.java
delete mode 100644 bigfans-cloud-service-shipping/src/main/resources/application.yml
delete mode 100644 bigfans-cloud-service-shipping/src/main/resources/log4j2.xml
diff --git a/.gitignore b/.gitignore
index f335e1c..a8d15f2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,6 @@
# Created by .ignore support plugin (hsz.mobi)
.idea/
-*.iml
\ No newline at end of file
+*.iml
+target/
+out/
+*.log
\ No newline at end of file
diff --git a/bigfans-cloud-api-gateway/pom.xml b/bigfans-cloud-api-gateway/pom.xml
index 61c1bd9..6224fc4 100644
--- a/bigfans-cloud-api-gateway/pom.xml
+++ b/bigfans-cloud-api-gateway/pom.xml
@@ -17,11 +17,11 @@
org.springframework.cloud
- spring-cloud-starter-zuul
+ spring-cloud-starter-netflix-zuul
org.springframework.cloud
- spring-cloud-starter-eureka
+ spring-cloud-starter-netflix-eureka-client
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- org.apache.kafka
- kafka_2.12
-
-
- org.elasticsearch.client
- transport
-
-
- org.elasticsearch
- elasticsearch
-
-
- org.elasticsearch.plugin
- transport-netty4-client
-
-
- mysql
- mysql-connector-java
-
-
- com.alibaba
- druid
-
-
- bigfans-cloud
- bigfans-cloud-base
- 0.0.1-SNAPSHOT
-
-
- org.neo4j.driver
- neo4j-java-driver
-
-
- com.qiniu
- qiniu-java-sdk
-
-
- net.coobird
- thumbnailator
-
-
- alidayu
- alidayu
-
-
-
-
-
-
\ No newline at end of file
diff --git a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/ShippingServiceApp.java b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/ShippingServiceApp.java
deleted file mode 100644
index e1c21eb..0000000
--- a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/ShippingServiceApp.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.bigfans.shippingservice;
-
-/**
- * @author lichong
- * @create 2018-03-25 上午8:05
- **/
-public class ShippingServiceApp {
-
- public static void main(String[] args) throws Exception{
-
- }
-
-}
diff --git a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/api/clients/OrderServiceClient.java b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/api/clients/OrderServiceClient.java
deleted file mode 100644
index 1646e94..0000000
--- a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/api/clients/OrderServiceClient.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.bigfans.shippingservice.api.clients;
-
-import com.bigfans.framework.utils.BeanUtils;
-import com.bigfans.framework.web.RestResponse;
-import com.bigfans.shippingservice.model.Order;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Component;
-import org.springframework.web.client.RestTemplate;
-import org.springframework.web.util.UriComponents;
-import org.springframework.web.util.UriComponentsBuilder;
-
-import java.util.Map;
-import java.util.concurrent.CompletableFuture;
-
-/**
- * @author lichong
- * @create 2018-02-25 下午4:21
- **/
-@Component
-public class OrderServiceClient {
-
- @Autowired
- private RestTemplate restTemplate;
-
- public CompletableFuture getOrder(String orderId){
- return CompletableFuture.supplyAsync(() -> {
- UriComponents builder = UriComponentsBuilder.fromUriString("http://order-service/orders/{id}").build().expand(orderId).encode();
- ResponseEntity responseEntity = restTemplate.getForEntity(builder.toUri(), RestResponse.class);
- RestResponse restResponse = responseEntity.getBody();
- Map data = (Map) restResponse.getData();
- Order order = new Order();
- BeanUtils.mapToModel(data , order);
- return order;
- });
- }
-}
diff --git a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/CORSConfiguration.java b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/CORSConfiguration.java
deleted file mode 100644
index d0eaaf6..0000000
--- a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/CORSConfiguration.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.bigfans.shippingservice.config;
-
-import org.springframework.boot.web.servlet.FilterRegistrationBean;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.cors.CorsConfiguration;
-import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
-import org.springframework.web.filter.CorsFilter;
-
-@Configuration
-public class CORSConfiguration {
-
- @Bean
- public FilterRegistrationBean corsFilter() {
- UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
- CorsConfiguration config = new CorsConfiguration();
- config.setAllowCredentials(true);
- config.addAllowedOrigin("*");
- config.addAllowedHeader("*");
- config.addAllowedMethod("*");
- source.registerCorsConfiguration("/**", config);
- FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
- bean.setOrder(0);
- return bean;
- }
-
-}
diff --git a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/DataSourceConfig.java b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/DataSourceConfig.java
deleted file mode 100644
index f33dbac..0000000
--- a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/DataSourceConfig.java
+++ /dev/null
@@ -1,108 +0,0 @@
-package com.bigfans.shippingservice.config;
-
-import com.alibaba.druid.pool.DruidDataSource;
-import com.bigfans.framework.dao.DynamicDataSource;
-import org.apache.ibatis.session.SqlSessionFactory;
-import org.mybatis.spring.SqlSessionFactoryBean;
-import org.mybatis.spring.SqlSessionTemplate;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.context.EnvironmentAware;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Primary;
-import org.springframework.core.env.Environment;
-import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
-import org.springframework.core.io.support.ResourcePatternResolver;
-import org.springframework.jdbc.core.JdbcTemplate;
-import org.springframework.jdbc.datasource.DataSourceTransactionManager;
-import org.springframework.transaction.PlatformTransactionManager;
-import org.springframework.transaction.support.TransactionTemplate;
-
-import javax.sql.DataSource;
-
-@Configuration
-public class DataSourceConfig implements EnvironmentAware {
-
- private static final String MYBATIS_MAPPER_LOCATION = "classpath:mybatis/mapper/*-Mapper.xml";
- private static final String MYBATIS_CONFIG_LOCATION = "classpath:mybatis/MybatisConfig.xml";
-
- private Environment env;
-
- @Override
- public void setEnvironment(Environment env) {
- this.env = env;
- }
-
- /**
- * 主库配置
- */
- @Bean(name = "masterDataSource")
- public DataSource createMasterDataSource() throws Exception {
- DruidDataSource dataSource = new DruidDataSource();
- dataSource.setDriverClassName(env.getProperty("master.datasource.driverClassName"));
- dataSource.setUrl(env.getProperty("master.datasource.url"));
- dataSource.setUsername(env.getProperty("master.datasource.username"));
- dataSource.setPassword(env.getProperty("master.datasource.password"));
- dataSource.setTestWhileIdle(true);
- return dataSource;
- }
-
- /**
- * 从库配置
- */
- @Bean(name = "clusterDataSource1")
- public DataSource createCluster1DataSource() throws Exception {
- DruidDataSource dataSource = new DruidDataSource();
- dataSource.setDriverClassName(env.getProperty("cluster1.datasource.driverClassName"));
- dataSource.setUrl(env.getProperty("cluster1.datasource.url"));
- dataSource.setUsername(env.getProperty("cluster1.datasource.username"));
- dataSource.setPassword(env.getProperty("cluster1.datasource.password"));
- dataSource.setTestWhileIdle(true);
- return dataSource;
- }
-
- @Bean(name = "dynamicDataSource")
- @Primary
- public DataSource createDynamicDataSource(
- @Qualifier("masterDataSource") DataSource masterDataSource ,
- @Qualifier("clusterDataSource1") DataSource clusterDataSource1){
- DynamicDataSource dynamicDataSource = new DynamicDataSource();
- dynamicDataSource.putMaster(masterDataSource);
- dynamicDataSource.putCluster(clusterDataSource1);
- dynamicDataSource.setTargetDataSources();
- return dynamicDataSource;
- }
-
- @Bean(name = "transactionManager")
- public DataSourceTransactionManager createTransactionManager(@Qualifier("dynamicDataSource") DataSource dynamicDataSource) throws Exception {
- return new DataSourceTransactionManager(dynamicDataSource);
- }
-
- @Bean(name = "sqlSessionFactory")
- public SqlSessionFactory masterSqlSessionFactory(@Qualifier("dynamicDataSource") DataSource dynamicDataSource)
- throws Exception {
- final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
- sessionFactory.setDataSource(dynamicDataSource);
- ResourcePatternResolver pathResolver = new PathMatchingResourcePatternResolver();
- sessionFactory.setConfigLocation(pathResolver.getResource(MYBATIS_CONFIG_LOCATION));
- sessionFactory.setMapperLocations(pathResolver.getResources(MYBATIS_MAPPER_LOCATION));
- return sessionFactory.getObject();
- }
-
- @Bean
- public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory){
- return new SqlSessionTemplate(sqlSessionFactory);
- }
-
- @Bean
- public JdbcTemplate jdbcTemplate(@Qualifier("dynamicDataSource") DataSource dynamicDataSource){
- return new JdbcTemplate(dynamicDataSource);
- }
-
- @Bean
- public TransactionTemplate transactionTemplate(@Qualifier("dynamicDataSource") DataSource dynamicDataSource){
- PlatformTransactionManager transactionManager = new DataSourceTransactionManager(dynamicDataSource);
- TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager);
- return transactionTemplate;
- }
-}
diff --git a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/EventBusConfig.java b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/EventBusConfig.java
deleted file mode 100644
index 5bd7141..0000000
--- a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/EventBusConfig.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.bigfans.shippingservice.config;
-
-import com.bigfans.framework.event.ApplicationEventBus;
-import com.bigfans.framework.event.EventRepository;
-import com.bigfans.framework.event.JdbcEventRepository;
-import com.bigfans.framework.event.SpringEventBus;
-import org.springframework.beans.BeansException;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationContextAware;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.jdbc.core.JdbcTemplate;
-
-/**
- * @author lichong
- * @create 2018-02-05 下午8:33
- **/
-@Configuration
-public class EventBusConfig implements ApplicationContextAware{
-
- private ApplicationContext applicationContext;
-
- @Bean
- public EventRepository eventRepository(JdbcTemplate jdbcTemplate){
- return new JdbcEventRepository(jdbcTemplate);
- }
-
- @Bean
- public ApplicationEventBus eventBus(EventRepository eventRepository){
- return new SpringEventBus(applicationContext);
- };
-
- @Override
- public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
- this.applicationContext = applicationContext;
- }
-
-}
diff --git a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/KafkaConfig.java b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/KafkaConfig.java
deleted file mode 100644
index 8f78ce0..0000000
--- a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/KafkaConfig.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package com.bigfans.shippingservice.config;
-
-import com.bigfans.framework.kafka.KafkaConsumerTaskManager;
-import com.bigfans.framework.kafka.KafkaFactory;
-import com.bigfans.framework.kafka.KafkaTemplate;
-import org.apache.kafka.clients.consumer.ConsumerConfig;
-import org.apache.kafka.clients.producer.ProducerConfig;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-import java.util.Properties;
-
-/**
- * @author lichong
- * @create 2018-02-04 上午10:46
- **/
-@Configuration
-public class KafkaConfig {
-
- @Value("${kafka.servers}")
- private String servers;
- @Value("${kafka.groupId}")
- private String groupId;
- @Value("${kafka.clientId}")
- private String clientId;
-
- @Bean
- public KafkaFactory kafkaFactory(){
-
- Properties producerProperties = new Properties();
- producerProperties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, servers);
- producerProperties.put(ProducerConfig.ACKS_CONFIG, "all");
- producerProperties.put(ProducerConfig.RETRIES_CONFIG, 0);
- producerProperties.put(ProducerConfig.BATCH_SIZE_CONFIG, 16384);
- producerProperties.put(ProducerConfig.LINGER_MS_CONFIG, 1);
- producerProperties.put(ProducerConfig.BUFFER_MEMORY_CONFIG, 33554432);
- producerProperties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
- producerProperties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
-
- Properties consumerProperties = new Properties();
- consumerProperties.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, servers);
- consumerProperties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer");
- consumerProperties.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer");
- consumerProperties.put(ConsumerConfig.GROUP_ID_CONFIG, groupId);
- consumerProperties.put(ConsumerConfig.CLIENT_ID_CONFIG, "simple");
-
- KafkaFactory factory = new KafkaFactory();
- factory.setConsumerProperties(consumerProperties);
- factory.setProducerProperties(producerProperties);
- return factory;
- }
-
- @Bean
- public KafkaConsumerTaskManager kafkaConsumerManager(KafkaFactory kafkaFactory){
- return new KafkaConsumerTaskManager(kafkaFactory);
- }
-
- @Bean
- public KafkaTemplate kafkaTemplate(KafkaFactory kafkaFactory){
- return new KafkaTemplate(kafkaFactory);
- }
-}
diff --git a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/PluginConfig.java b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/PluginConfig.java
deleted file mode 100644
index f881891..0000000
--- a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/PluginConfig.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.bigfans.shippingservice.config;
-
-import com.bigfans.framework.cache.CacheProvider;
-import com.bigfans.framework.cache.RedisCacheProvider;
-import com.bigfans.framework.redis.JedisTemplate;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.cloud.context.config.annotation.RefreshScope;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * @author lichong
- * @create 2018-03-21 下午9:21
- **/
-@Configuration
-@RefreshScope
-public class PluginConfig {
-
- @Value("${cache.type}")
- private String cacheType;
- @Value("${cache.dbindex}")
- private Integer cacheDbIndex;
-
- @Bean
- public CacheProvider cachePlugin(JedisTemplate jedisTemplate){
- CacheProvider cacheProvider = new RedisCacheProvider(jedisTemplate , cacheDbIndex);
- return cacheProvider;
- }
-}
diff --git a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/RedisTemplateConfig.java b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/RedisTemplateConfig.java
deleted file mode 100644
index 605dd65..0000000
--- a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/RedisTemplateConfig.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.bigfans.shippingservice.config;
-
-import com.bigfans.framework.redis.JedisConnectionFactory;
-import com.bigfans.framework.redis.JedisTemplate;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-@Configuration
-public class RedisTemplateConfig {
-
- @Value("${jedis.host}")
- private String host;
- @Value("${jedis.port}")
- private Integer port;
- @Value("${jedis.auth}")
- private String auth;
- @Value("${jedis.max_idle}")
- private Integer max_idle;
- @Value("${jedis.timeout}")
- private Integer timeout;
- @Value("${jedis.test_on_borrow}")
- private Boolean test_on_borrow;
- @Value("${jedis.default_db_index}")
- private Integer default_db_index;
-
- @Bean(name = "jedisTemplate")
- public JedisTemplate createTemplate() {
- JedisConnectionFactory factory = new JedisConnectionFactory();
- factory.setHost(host);
- factory.setPort(port);
- factory.setAuth(auth);
- factory.setMax_idle(max_idle);
- factory.setTimeout(timeout);
- factory.setTest_on_borrow(test_on_borrow);
- factory.setDefaultDbIndex(default_db_index);
- JedisTemplate jedisTemplate = new JedisTemplate(factory);
- return jedisTemplate;
- }
-
-}
diff --git a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/RestTemplateConfig.java b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/RestTemplateConfig.java
deleted file mode 100644
index 734bed9..0000000
--- a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/RestTemplateConfig.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.bigfans.shippingservice.config;
-
-import org.springframework.cloud.client.loadbalancer.LoadBalanced;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.client.RestTemplate;
-
-/**
- * @author lichong
- * @create 2018-02-14 下午5:06
- **/
-@Configuration
-public class RestTemplateConfig {
-
- @LoadBalanced
- @Bean
- public RestTemplate restTemplate(){
- return new RestTemplate();
- }
-
-}
diff --git a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/WebConfig.java b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/WebConfig.java
deleted file mode 100644
index 0659185..0000000
--- a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/WebConfig.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.bigfans.shippingservice.config;
-
-import org.springframework.boot.web.servlet.FilterRegistrationBean;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.cors.CorsConfiguration;
-import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
-import org.springframework.web.filter.CorsFilter;
-import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-
-/**
- * @author lichong
- * @create 2018-02-28 下午10:25
- **/
-@Configuration
-public class WebConfig implements WebMvcConfigurer {
-
- @Bean
- public FilterRegistrationBean corsFilter() {
- UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
- CorsConfiguration config = new CorsConfiguration();
- config.setAllowCredentials(true);
- config.addAllowedOrigin("*");
- config.addAllowedHeader("*");
- config.addAllowedMethod("*");
- source.registerCorsConfiguration("/**", config);
- FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
- bean.setOrder(0);
- return bean;
- }
-
- @Override
- public void addInterceptors(InterceptorRegistry registry) {
-// registry.addInterceptor(new DefaultInterceptor()).addPathPatterns("/**");
-// registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**").excludePathPatterns("/login");
- }
-}
-
-
diff --git a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/dao/DeliveryDAO.java b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/dao/DeliveryDAO.java
deleted file mode 100644
index 176c14d..0000000
--- a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/dao/DeliveryDAO.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.bigfans.shippingservice.dao;
-
-import com.bigfans.framework.dao.BaseDAO;
-import com.bigfans.shippingservice.model.Delivery;
-
-/**
- *
- * @Description:配送DAO操作
- * @author lichong
- * 2015年1月17日下午7:36:35
- *
- */
-public interface DeliveryDAO extends BaseDAO {
-
-}
diff --git a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/dao/impl/DeliveryDAOImpl.java b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/dao/impl/DeliveryDAOImpl.java
deleted file mode 100644
index 02e2546..0000000
--- a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/dao/impl/DeliveryDAOImpl.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.bigfans.shippingservice.dao.impl;
-
-import com.bigfans.framework.dao.MybatisDAOImpl;
-import com.bigfans.shippingservice.dao.DeliveryDAO;
-import com.bigfans.shippingservice.model.Delivery;
-import org.springframework.stereotype.Repository;
-
-
-/**
- *
- * @Description:配送DAO操作
- * @author lichong
- * 2015年1月17日下午7:36:35
- *
- */
-@Repository(DeliveryDAOImpl.BEAN_NAME)
-public class DeliveryDAOImpl extends MybatisDAOImpl implements DeliveryDAO {
-
- public static final String BEAN_NAME = "deliveryDAO";
-}
diff --git a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/listener/OrderListener.java b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/listener/OrderListener.java
deleted file mode 100644
index 850a62d..0000000
--- a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/listener/OrderListener.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.bigfans.shippingservice.listener;
-
-import com.bigfans.framework.kafka.KafkaConsumerBean;
-import com.bigfans.framework.kafka.KafkaListener;
-import com.bigfans.model.event.payment.OrderPaidEvent;
-import com.bigfans.shippingservice.api.clients.OrderServiceClient;
-import com.bigfans.shippingservice.model.Delivery;
-import com.bigfans.shippingservice.model.Order;
-import com.bigfans.shippingservice.service.DeliveryService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-@Component
-@KafkaConsumerBean
-public class OrderListener {
-
- @Autowired
- private DeliveryService deliveryService;
- @Autowired
- private OrderServiceClient orderServiceClient;
-
- @KafkaListener
- public void on(OrderPaidEvent event) {
- try {
- String orderId = event.getOrderId();
- Order order = orderServiceClient.getOrder(orderId).get();
- Delivery delivery = new Delivery();
- delivery.setAddress(order.getAddressDetail());
- delivery.setConsignee(order.getAddressConsignee());
- delivery.setEmail(order.getAddressEmail());
- delivery.setMobile(order.getAddressPhone());
- delivery.setUserId(order.getUserId());
- delivery.setOrderId(order.getId());
- delivery.setFreight(order.getFreight());
- deliveryService.create(delivery);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
-}
diff --git a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/model/Delivery.java b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/model/Delivery.java
deleted file mode 100644
index 3722694..0000000
--- a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/model/Delivery.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.bigfans.shippingservice.model;
-
-import com.bigfans.shippingservice.model.entity.DeliveryEntity;
-
-/**
- *
- * @Description: 配送
- * @author lichong
- * 2015年1月17日下午7:36:25
- *
- */
-public class Delivery extends DeliveryEntity {
-
-}
diff --git a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/model/Order.java b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/model/Order.java
deleted file mode 100644
index 8241733..0000000
--- a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/model/Order.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.bigfans.shippingservice.model;
-
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.util.Date;
-
-@Data
-public class Order {
-
- protected String id;
- protected Date createDate;
- protected Date updateDate;
- // 用户信息
- protected String userId;
- // 支付信息
- protected String paymentId;
- // 支付类型ID
- protected String payMethodCode;
- // 支付类型名称
- protected String payMethodName;
- // 收货地址
- protected String addressId;
- // 收货人
- protected String addressConsignee;
- // 送货详细地址
- protected String addressDetail;
- // 收货人电话
- protected String addressPhone;
- // 收货人email
- protected String addressEmail;
- // 留言
- protected String note;
- // 运费
- protected BigDecimal freight;
- protected Integer prodTotalQuantity;
- // 商品总价格
- protected BigDecimal prodTotalPrice;
- // 总价格(计算完邮费和各种优惠后的应付款额)
- protected BigDecimal totalPrice;
-}
diff --git a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/model/entity/DeliveryEntity.java b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/model/entity/DeliveryEntity.java
deleted file mode 100644
index 25e8ce5..0000000
--- a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/model/entity/DeliveryEntity.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package com.bigfans.shippingservice.model.entity;
-
-import com.bigfans.framework.model.AbstractModel;
-import lombok.Data;
-
-import javax.persistence.Column;
-import javax.persistence.Table;
-import java.math.BigDecimal;
-import java.util.Date;
-
-/**
- *
- * @Description:配送实体
- * @author lichong 2014年12月14日下午4:48:01
- *
- */
-@Data
-@Table(name="Delivery")
-public class DeliveryEntity extends AbstractModel {
- private static final long serialVersionUID = 5625942998949303053L;
-
- public static final String STATUS_UNSENT = "preparing";
- public static final String STATUS_DELIVERING = "delivering";
- public static final String STATUS_SIGNED = "signed";
-
- @Column(name="order_id")
- protected String orderId;
- @Column(name="user_id")
- protected String userId;
- @Column(name="address")
- protected String address;
- @Column(name="consignee")
- protected String consignee;
- @Column(name="postalcode")
- protected String postalcode;
- @Column(name="mobile")
- protected String mobile;
- @Column(name="tel")
- protected String tel;
- @Column(name="email")
- protected String email;
- @Column(name="complete_date",columnDefinition="DATETIME")
- protected Date completeDate;
- @Column(name="status")
- protected String status = STATUS_UNSENT;
- // 运费
- @Column(name="freight")
- protected BigDecimal freight;
-
- public String getModule() {
- return "Delivery";
- }
-
-}
\ No newline at end of file
diff --git a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/service/DeliveryService.java b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/service/DeliveryService.java
deleted file mode 100644
index 7013046..0000000
--- a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/service/DeliveryService.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.bigfans.shippingservice.service;
-
-import com.bigfans.framework.dao.BaseService;
-import com.bigfans.shippingservice.model.Delivery;
-
-
-/**
- *
- * @Description:配送服务接口
- * @author lichong
- * 2014年12月16日上午10:14:08
- *
- */
-public interface DeliveryService extends BaseService {
-
-}
diff --git a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/service/impl/DeliveryServiceImpl.java b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/service/impl/DeliveryServiceImpl.java
deleted file mode 100644
index aefb894..0000000
--- a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/service/impl/DeliveryServiceImpl.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.bigfans.shippingservice.service.impl;
-
-import com.bigfans.framework.dao.BaseServiceImpl;
-import com.bigfans.shippingservice.dao.DeliveryDAO;
-import com.bigfans.shippingservice.model.Delivery;
-import com.bigfans.shippingservice.service.DeliveryService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-/**
- *
- * @Description:配送服务类
- * @author lichong
- * 2014年12月16日上午10:13:56
- *
- */
-@Service(DeliveryServiceImpl.BEAN_NAME)
-public class DeliveryServiceImpl extends BaseServiceImpl implements DeliveryService {
-
- public static final String BEAN_NAME = "deliveryService";
-
- @Autowired
- public DeliveryServiceImpl(DeliveryDAO deliveryDAO) {
- super(deliveryDAO);
- }
-}
diff --git a/bigfans-cloud-service-shipping/src/main/resources/application.yml b/bigfans-cloud-service-shipping/src/main/resources/application.yml
deleted file mode 100644
index cd0eddc..0000000
--- a/bigfans-cloud-service-shipping/src/main/resources/application.yml
+++ /dev/null
@@ -1,58 +0,0 @@
-server:
- port: 8805
-spring:
- application:
- name: shipping-service
- datasource:
- initialize: false
-# zipkin:
-# base-url: http://127.0.0.1:7002
-eureka:
- instance:
- instance-id: ${spring.application.name}:${server.port}
- preferIpAddress: true
- health-check-url-path: /application
- status-page-url: http://${spring.cloud.client.hostname}:${server.port}/swagger-ui.html
- client:
- registerWithEureka: true
- fetchRegistry: true
- registry-fetch-interval-seconds: 20
- serviceUrl:
- defaultZone: http://localhost:8761/eureka/
- eureka-server-connect-timeout-seconds: 5
-
-## master
-master:
- datasource:
- url: jdbc:mysql://127.0.0.1:3307/bigfans_shipping?autoReconnect=true&useUnicode=true&characterEncoding=utf8
- username: root
- password: admin
- driverClassName: com.mysql.jdbc.Driver
-
-## cluster
-cluster1:
- datasource:
- url: jdbc:mysql://127.0.0.1:3307/bigfans_shipping?autoReconnect=true&useUnicode=true&characterEncoding=utf8
- username: root
- password: admin
- driverClassName: com.mysql.jdbc.Driver
-
-## kafka
-kafka:
- servers: 192.168.0.103:9092
- groupId: ${spring.application.name}
- clientId: ${spring.application.name}-client
-
-## redis
-#Redis服务器IP
-jedis:
- host: 127.0.0.1
-#Redis的端口号
- port: 6379
-#访问密码
- auth:
-#控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值是8。
- max_idle: 10
- timeout: 1000
-#在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
- test_on_borrow: false
\ No newline at end of file
diff --git a/bigfans-cloud-service-shipping/src/main/resources/log4j2.xml b/bigfans-cloud-service-shipping/src/main/resources/log4j2.xml
deleted file mode 100644
index db6917b..0000000
--- a/bigfans-cloud-service-shipping/src/main/resources/log4j2.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
- %d %p %C{1.} [%t] %m%n
-
-
-
-
- %d %p %C{1.} [%t] %m%n
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/bigfans-cloud-service-system/pom.xml b/bigfans-cloud-service-system/pom.xml
index 701c266..171cd2a 100644
--- a/bigfans-cloud-service-system/pom.xml
+++ b/bigfans-cloud-service-system/pom.xml
@@ -17,15 +17,19 @@
org.springframework.cloud
- spring-cloud-starter-eureka
+ spring-cloud-starter-netflix-eureka-client
org.springframework.boot
spring-boot-starter-actuator
+
+ org.springframework.boot
+ spring-boot-starter-web
+
org.springframework.cloud
- spring-cloud-starter-hystrix
+ spring-cloud-starter-netflix-hystrix
\ No newline at end of file
--
Gitee
From 3de24231bc8bceb9c94525befca4418872585065 Mon Sep 17 00:00:00 2001
From: dafanshu <654789936@qq.com>
Date: Sun, 5 Aug 2018 19:29:21 +0800
Subject: [PATCH 2/2] =?UTF-8?q?=E7=BB=A7=E7=BB=AD=E6=9B=B4=E6=96=B0=201.?=
=?UTF-8?q?=20=E7=BD=91=E5=85=B3=E5=B1=82=E4=BB=8Ezuul=E6=9B=BF=E6=8D=A2?=
=?UTF-8?q?=E6=88=90springcloud=20gateway=202.=20=E4=BC=98=E5=8C=96sku?=
=?UTF-8?q?=E7=AE=97=E6=B3=95=203.=20=E5=85=B6=E4=BB=96...?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
bigfans-cloud-api-gateway/pom.xml | 2 +-
.../cloud/api/gateway/GatewayApplication.java | 2 -
.../api/gateway/config/FiltersConfig.java | 21 --
.../gateway/config/ResourceServerConfig.java | 32 ---
.../cloud/api/gateway/config/RouteConfig.java | 23 +++
.../api/gateway/config/SecurityConfig.java | 36 ----
.../api/gateway/filter/AccessFilter.java | 130 ++++++------
.../api/gateway/filter/ErrorHandleFilter.java | 43 ----
.../src/main/resources/application.yml | 177 +++++++++++-----
.../src/main/resources/application_zuul.yml | 95 +++++++++
.../bigfans/catalogservice/api/SkuApi.java | 195 +++++-------------
.../bigfans/catalogservice/dao/SkuDAO.java | 2 +
.../catalogservice/dao/SpecOptionDAO.java | 3 +
.../catalogservice/dao/SpecValueDAO.java | 2 +-
.../catalogservice/dao/impl/SkuDAOImpl.java | 6 +
.../dao/impl/SpecOptionDAOImpl.java | 7 +
.../dao/impl/SpecValueDAOImpl.java | 2 +-
.../com/bigfans/catalogservice/model/SKU.java | 33 ++-
.../catalogservice/model/SkuResult.java | 3 +-
.../catalogservice/model/SpecGroup.java | 22 --
.../catalogservice/model/vo/SpecGroupVO.java | 29 +++
.../catalogservice/model/vo/SpecOptionVO.java | 18 ++
.../catalogservice/model/vo/SpecValueVO.java | 22 ++
.../service/sku/SkuService.java | 2 +
.../service/sku/SkuServiceImpl.java | 6 +
.../service/spec/SpecOptionService.java | 2 +
.../service/spec/SpecOptionServiceImpl.java | 5 +
.../service/spec/SpecValueService.java | 2 +-
.../service/spec/SpecValueServiceImpl.java | 4 +-
.../resources/mybatis/mapper/Sku-Mapper.xml | 10 +-
.../mybatis/mapper/SpecOption-Mapper.xml | 6 +
.../mybatis/mapper/SpecValue-Mapper.xml | 2 +-
bigfans-cloud-service-payment/pom.xml | 18 ++
.../paymentservice/api/PaymentApi.java | 3 -
.../paymentservice/config/WebConfig.java | 2 +-
.../config/WebSocketConfig.java | 19 --
.../api/mgr/CouponManageApi.java | 30 +++
bigfans-cloud-service-shipping/pom.xml | 96 +++++++++
.../shippingservice/ShippingServiceApp.java | 13 ++
.../api/clients/OrderServiceClient.java | 37 ++++
.../config/DataSourceConfig.java | 108 ++++++++++
.../config/EventBusConfig.java | 38 ++++
.../shippingservice/config/KafkaConfig.java | 63 ++++++
.../shippingservice/config/PluginConfig.java | 29 +++
.../config/RedisTemplateConfig.java | 41 ++++
.../config/RestTemplateConfig.java | 21 ++
.../shippingservice/config/WebConfig.java | 40 ++++
.../shippingservice/dao/DeliveryDAO.java | 15 ++
.../dao/impl/DeliveryDAOImpl.java | 20 ++
.../listener/OrderListener.java | 41 ++++
.../shippingservice/model/Delivery.java | 14 ++
.../bigfans/shippingservice/model/Order.java | 41 ++++
.../model/entity/DeliveryEntity.java | 54 +++++
.../service/DeliveryService.java | 16 ++
.../service/impl/DeliveryServiceImpl.java | 26 +++
.../src/main/resources/application.yml | 58 ++++++
.../src/main/resources/log4j2.xml | 26 +++
.../bigfans/userservice/api/WeChatApi.java | 22 ++
.../framework/lock/DistributedLock.java | 8 +
.../lock/ZookeeperDistributedLock.java | 8 +
pom.xml | 6 +
61 files changed, 1403 insertions(+), 454 deletions(-)
delete mode 100644 bigfans-cloud-api-gateway/src/main/java/org/bigfans/cloud/api/gateway/config/FiltersConfig.java
delete mode 100644 bigfans-cloud-api-gateway/src/main/java/org/bigfans/cloud/api/gateway/config/ResourceServerConfig.java
create mode 100644 bigfans-cloud-api-gateway/src/main/java/org/bigfans/cloud/api/gateway/config/RouteConfig.java
delete mode 100644 bigfans-cloud-api-gateway/src/main/java/org/bigfans/cloud/api/gateway/config/SecurityConfig.java
delete mode 100644 bigfans-cloud-api-gateway/src/main/java/org/bigfans/cloud/api/gateway/filter/ErrorHandleFilter.java
create mode 100644 bigfans-cloud-api-gateway/src/main/resources/application_zuul.yml
delete mode 100644 bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/model/SpecGroup.java
create mode 100644 bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/model/vo/SpecGroupVO.java
create mode 100644 bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/model/vo/SpecOptionVO.java
create mode 100644 bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/model/vo/SpecValueVO.java
delete mode 100644 bigfans-cloud-service-payment/src/main/java/com/bigfans/paymentservice/config/WebSocketConfig.java
create mode 100644 bigfans-cloud-service-pricing/src/main/java/com/bigfans/pricingservice/api/mgr/CouponManageApi.java
create mode 100644 bigfans-cloud-service-shipping/pom.xml
create mode 100644 bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/ShippingServiceApp.java
create mode 100644 bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/api/clients/OrderServiceClient.java
create mode 100644 bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/DataSourceConfig.java
create mode 100644 bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/EventBusConfig.java
create mode 100644 bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/KafkaConfig.java
create mode 100644 bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/PluginConfig.java
create mode 100644 bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/RedisTemplateConfig.java
create mode 100644 bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/RestTemplateConfig.java
create mode 100644 bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/WebConfig.java
create mode 100644 bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/dao/DeliveryDAO.java
create mode 100644 bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/dao/impl/DeliveryDAOImpl.java
create mode 100644 bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/listener/OrderListener.java
create mode 100644 bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/model/Delivery.java
create mode 100644 bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/model/Order.java
create mode 100644 bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/model/entity/DeliveryEntity.java
create mode 100644 bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/service/DeliveryService.java
create mode 100644 bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/service/impl/DeliveryServiceImpl.java
create mode 100644 bigfans-cloud-service-shipping/src/main/resources/application.yml
create mode 100644 bigfans-cloud-service-shipping/src/main/resources/log4j2.xml
create mode 100644 bigfans-cloud-service-user/src/main/java/com/bigfans/userservice/api/WeChatApi.java
create mode 100644 bigfans-framework/src/main/java/com/bigfans/framework/lock/DistributedLock.java
create mode 100644 bigfans-framework/src/main/java/com/bigfans/framework/lock/ZookeeperDistributedLock.java
diff --git a/bigfans-cloud-api-gateway/pom.xml b/bigfans-cloud-api-gateway/pom.xml
index 6224fc4..5f6b594 100644
--- a/bigfans-cloud-api-gateway/pom.xml
+++ b/bigfans-cloud-api-gateway/pom.xml
@@ -17,7 +17,7 @@
org.springframework.cloud
- spring-cloud-starter-netflix-zuul
+ spring-cloud-starter-gateway
org.springframework.cloud
diff --git a/bigfans-cloud-api-gateway/src/main/java/org/bigfans/cloud/api/gateway/GatewayApplication.java b/bigfans-cloud-api-gateway/src/main/java/org/bigfans/cloud/api/gateway/GatewayApplication.java
index 4518f07..fec019f 100644
--- a/bigfans-cloud-api-gateway/src/main/java/org/bigfans/cloud/api/gateway/GatewayApplication.java
+++ b/bigfans-cloud-api-gateway/src/main/java/org/bigfans/cloud/api/gateway/GatewayApplication.java
@@ -2,13 +2,11 @@ package org.bigfans.cloud.api.gateway;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
/**
* Hello world!
*
*/
-@EnableZuulProxy
@SpringBootApplication
public class GatewayApplication
{
diff --git a/bigfans-cloud-api-gateway/src/main/java/org/bigfans/cloud/api/gateway/config/FiltersConfig.java b/bigfans-cloud-api-gateway/src/main/java/org/bigfans/cloud/api/gateway/config/FiltersConfig.java
deleted file mode 100644
index 0ee3cad..0000000
--- a/bigfans-cloud-api-gateway/src/main/java/org/bigfans/cloud/api/gateway/config/FiltersConfig.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.bigfans.cloud.api.gateway.config;
-
-import org.bigfans.cloud.api.gateway.filter.AccessFilter;
-import org.bigfans.cloud.api.gateway.filter.ErrorHandleFilter;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-@Configuration
-public class FiltersConfig {
-
- @Bean
- public AccessFilter accessFilter() {
- return new AccessFilter();
- }
-
- @Bean
- public ErrorHandleFilter errorHandleFilter(){
- return new ErrorHandleFilter();
- }
-
-}
diff --git a/bigfans-cloud-api-gateway/src/main/java/org/bigfans/cloud/api/gateway/config/ResourceServerConfig.java b/bigfans-cloud-api-gateway/src/main/java/org/bigfans/cloud/api/gateway/config/ResourceServerConfig.java
deleted file mode 100644
index aedc699..0000000
--- a/bigfans-cloud-api-gateway/src/main/java/org/bigfans/cloud/api/gateway/config/ResourceServerConfig.java
+++ /dev/null
@@ -1,32 +0,0 @@
-//package org.bigfans.cloud.api.gateway.config;
-//
-//import org.springframework.context.annotation.Configuration;
-//import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-//import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer;
-//import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter;
-//import org.springframework.security.oauth2.config.annotation.web.configurers.ResourceServerSecurityConfigurer;
-//
-////@EnableResourceServer
-////@Configuration
-//public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
-//
-// @Override
-// public void configure(ResourceServerSecurityConfigurer resources) throws Exception {
-// super.configure(resources);
-// }
-//
-// @Override
-// public void configure(HttpSecurity http) throws Exception {
-// http
-// .authorizeRequests()
-// .antMatchers("/user-service/**").hasAuthority("AUTHORITY_SUPER")
-// .antMatchers("/addresse-service/**").hasAuthority("AUTHORITY_SUPER")
-// .antMatchers("/point-service/**").hasAuthority("AUTHORITY_SUPER")
-// .antMatchers("/itemservice-service/**").hasAuthority("AUTHORITY_SUPER")
-// .antMatchers("/order-service/**").hasAuthority("AUTHORITY_SUPER")
-// .antMatchers("/payment-service/**").hasAuthority("AUTHORITY_SUPER")
-// .antMatchers("/deliveriy-service/**").hasAuthority("AUTHORITY_SUPER")
-// .anyRequest().authenticated();
-// }
-//
-//}
diff --git a/bigfans-cloud-api-gateway/src/main/java/org/bigfans/cloud/api/gateway/config/RouteConfig.java b/bigfans-cloud-api-gateway/src/main/java/org/bigfans/cloud/api/gateway/config/RouteConfig.java
new file mode 100644
index 0000000..4103fa9
--- /dev/null
+++ b/bigfans-cloud-api-gateway/src/main/java/org/bigfans/cloud/api/gateway/config/RouteConfig.java
@@ -0,0 +1,23 @@
+package org.bigfans.cloud.api.gateway.config;
+
+import org.springframework.cloud.gateway.route.RouteLocator;
+import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author lichong
+ * @create 2018-07-29 下午7:46
+ **/
+@Configuration
+public class RouteConfig {
+
+ public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
+ return builder.routes()
+ .route(t -> t.path("/hello")
+ .and()
+ .uri("http://localhost:8080"))
+ .build();
+ }
+
+}
diff --git a/bigfans-cloud-api-gateway/src/main/java/org/bigfans/cloud/api/gateway/config/SecurityConfig.java b/bigfans-cloud-api-gateway/src/main/java/org/bigfans/cloud/api/gateway/config/SecurityConfig.java
deleted file mode 100644
index 16f84d2..0000000
--- a/bigfans-cloud-api-gateway/src/main/java/org/bigfans/cloud/api/gateway/config/SecurityConfig.java
+++ /dev/null
@@ -1,36 +0,0 @@
-//package org.bigfans.cloud.api.gateway.config;
-//
-//import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso;
-//import org.springframework.context.annotation.Configuration;
-//import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
-//import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-//import org.springframework.security.config.annotation.web.builders.WebSecurity;
-//import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
-//import org.springframework.security.web.authentication.preauth.AbstractPreAuthenticatedProcessingFilter;
-//import org.springframework.security.web.csrf.CsrfFilter;
-//
-//@Configuration
-//@EnableOAuth2Sso
-//public class SecurityConfig extends WebSecurityConfigurerAdapter{
-//
-// @Override
-// protected void configure(HttpSecurity http) throws Exception {
-// http.authorizeRequests().antMatchers("/sso/**", "/login").permitAll().anyRequest().authenticated()
-// .and()
-// .csrf().disable()
-// .logout().permitAll()
-// .logoutSuccessUrl("/");
-// }
-//
-// @Override
-// protected void configure(AuthenticationManagerBuilder auth) throws Exception {
-// // TODO Auto-generated method stub
-// super.configure(auth);
-// }
-//
-// @Override
-// public void configure(WebSecurity web) throws Exception {
-// // TODO Auto-generated method stub
-// super.configure(web);
-// }
-//}
diff --git a/bigfans-cloud-api-gateway/src/main/java/org/bigfans/cloud/api/gateway/filter/AccessFilter.java b/bigfans-cloud-api-gateway/src/main/java/org/bigfans/cloud/api/gateway/filter/AccessFilter.java
index 1e6711f..ebba3c2 100644
--- a/bigfans-cloud-api-gateway/src/main/java/org/bigfans/cloud/api/gateway/filter/AccessFilter.java
+++ b/bigfans-cloud-api-gateway/src/main/java/org/bigfans/cloud/api/gateway/filter/AccessFilter.java
@@ -2,53 +2,53 @@ package org.bigfans.cloud.api.gateway.filter;
import com.bigfans.Constants;
import com.bigfans.framework.CurrentUser;
-import com.bigfans.framework.CurrentUserFactory;
import com.bigfans.framework.utils.JsonUtils;
import com.bigfans.framework.utils.JwtUtils;
import com.bigfans.framework.utils.StringHelper;
-import com.netflix.zuul.ZuulFilter;
-import com.netflix.zuul.context.RequestContext;
-import org.springframework.cloud.netflix.zuul.filters.support.FilterConstants;
+import org.springframework.cloud.gateway.filter.GatewayFilterChain;
+import org.springframework.cloud.gateway.filter.GlobalFilter;
+import org.springframework.core.Ordered;
+import org.springframework.http.HttpCookie;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseCookie;
+import org.springframework.http.server.reactive.ServerHttpRequest;
+import org.springframework.http.server.reactive.ServerHttpResponse;
+import org.springframework.stereotype.Component;
+import org.springframework.web.server.ServerWebExchange;
+import reactor.core.publisher.Mono;
import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
import java.util.Date;
+import java.util.Map;
+import java.util.UUID;
/**
- * 检查用户是否登录
- *
* @author lichong
- */
-public class AccessFilter extends ZuulFilter {
+ * @create 2018-07-31 下午9:53
+ **/
+@Component
+public class AccessFilter implements GlobalFilter, Ordered {
@Override
- public boolean shouldFilter() {
- RequestContext ctx = RequestContext.getCurrentContext();
- String method = ctx.getRequest().getMethod();
- String url = (String) ctx.get(FilterConstants.REQUEST_URI_KEY);
- String serviceId = (String) ctx.get(FilterConstants.PROXY_KEY);
- return !"options".equalsIgnoreCase(method.toLowerCase()) && !url.equals("/login");
- }
-
- @Override
- public Object run() {
- RequestContext ctx = RequestContext.getCurrentContext();
- HttpServletRequest request = ctx.getRequest();
- String authorization = request.getHeader(Constants.OAUTH.HEADER_KEY_NAME);
+ public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) {
+ ServerHttpRequest request = exchange.getRequest();
+ ServerHttpResponse response = exchange.getResponse();
+ HttpMethod method = request.getMethod();
+ String path = request.getPath().value();
+ if(path.contains("/login")){
+ return chain.filter(exchange);
+ }
+ String authorization = this.extractAuthorization(request.getHeaders());
String token = "";
boolean hasAuth = false;
+ Map cookies = request.getCookies().toSingleValueMap();
if (authorization == null) {
- Cookie[] cookies = request.getCookies();
if (cookies != null) {
- for (Cookie cookie : cookies) {
- if (cookie.getName().equals(Constants.TOKEN.TMP_COOKIE_NAME)) {
- String tmpToken = cookie.getValue();
- if (tmpToken != null) {
- hasAuth = true;
- token = tmpToken;
- }
- }
+ String tmpToken = this.extraTempToken(cookies);
+ if (tmpToken != null) {
+ hasAuth = true;
+ token = tmpToken;
}
}
} else {
@@ -58,56 +58,52 @@ public class AccessFilter extends ZuulFilter {
token = authorization.substring(7, authorization.length());
if (StringHelper.isNotEmpty(token)) {
hasAuth = true;
- Cookie[] cookies = request.getCookies();
- if (cookies != null) {
- for (Cookie cookie : cookies) {
- if (cookie.getName().equals(Constants.TOKEN.TMP_COOKIE_NAME)) {
- cookie.setMaxAge(0);
- cookie.setPath("/");
- }
- }
- }
+ cookies.remove(Constants.TOKEN.TMP_COOKIE_NAME);
}
}
}
}
if (!hasAuth) {
- token = this.createTempToken(request, ctx.getResponse());
- Cookie cookie = new Cookie(Constants.TOKEN.TMP_COOKIE_NAME, token);
- cookie.setHttpOnly(false);
- // 如果不设置路径,只有当前路径和自路径可以访问,访问其他地址时候cookie不会被传递到服务端
- cookie.setPath("/");
- cookie.setDomain("localhost");
- // 设置7天内有效
- cookie.setMaxAge(60 * 60 * 24 * 7);
- // 浏览器退出时清空cookie
- // cookie.setMaxAge(-1);
- ctx.getResponse().addCookie(cookie);
+ token = this.createTempToken(UUID.randomUUID().toString());
+ ResponseCookie responseCookie = ResponseCookie
+ .from(Constants.TOKEN.TMP_COOKIE_NAME, token)
+ .maxAge(60 * 60 * 24 * 7)
+ .domain("localhost")
+ .path("/")
+ .httpOnly(false)
+ .build();
+ response.addCookie(responseCookie);
}
- ctx.addZuulRequestHeader(Constants.TOKEN.HEADER_KEY_NAME, token);
- return null;
+ ServerHttpRequest requestWithToken = exchange.getRequest().mutate()
+ .header(Constants.TOKEN.HEADER_KEY_NAME, token)
+ .build();
+ return chain.filter(exchange.mutate().request(requestWithToken).build());
+ }
+
+
+
+ protected String extractAuthorization(HttpHeaders headers){
+ return headers.get(Constants.OAUTH.HEADER_KEY_NAME) == null ? null : headers.get(Constants.OAUTH.HEADER_KEY_NAME).get(0);
}
- protected String createTempToken(HttpServletRequest request, HttpServletResponse response) {
+ protected String extraTempToken(Map cookies){
+ return cookies.get(Constants.TOKEN.TMP_COOKIE_NAME) == null ? null : cookies.get(Constants.TOKEN.TMP_COOKIE_NAME).getValue();
+ }
+
+ @Override
+ public int getOrder() {
+ return 0;
+ }
+
+ protected String createTempToken(String uid) {
CurrentUser currentUser = new CurrentUser();
currentUser.setAccount("tempUser");
currentUser.setLoginTime(new Date());
currentUser.setPeriod(60 * 60 * 24 * 7);
currentUser.setType(CurrentUser.TYPE.TMP_USER);
- currentUser.setUid(request.getSession().getId());
+ currentUser.setUid(uid);
// 创建临时的token作为用户唯一凭证
String tempToken = JwtUtils.create(JsonUtils.toJsonString(currentUser), Constants.TOKEN.JWT_SECURITY_KEY);
return tempToken;
}
-
- @Override
- public String filterType() {
- return FilterConstants.ROUTE_TYPE;
- }
-
- @Override
- public int filterOrder() {
- return 0;
- }
-
}
diff --git a/bigfans-cloud-api-gateway/src/main/java/org/bigfans/cloud/api/gateway/filter/ErrorHandleFilter.java b/bigfans-cloud-api-gateway/src/main/java/org/bigfans/cloud/api/gateway/filter/ErrorHandleFilter.java
deleted file mode 100644
index 20020f1..0000000
--- a/bigfans-cloud-api-gateway/src/main/java/org/bigfans/cloud/api/gateway/filter/ErrorHandleFilter.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package org.bigfans.cloud.api.gateway.filter;
-
-import com.netflix.zuul.ZuulFilter;
-import com.netflix.zuul.context.RequestContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.cloud.netflix.zuul.filters.support.FilterConstants;
-
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * @author lichong
- * @create 2018-04-25 下午9:39
- **/
-public class ErrorHandleFilter extends ZuulFilter {
-
- private Logger logger = LoggerFactory.getLogger(ErrorHandleFilter.class);
-
- @Override
- public String filterType() {
- return FilterConstants.ERROR_TYPE;
- }
-
- @Override
- public int filterOrder() {
- return 0;
- }
-
- @Override
- public boolean shouldFilter() {
- return true;
- }
-
- @Override
- public Object run() {
- RequestContext ctx = RequestContext.getCurrentContext();
- Throwable throwable = ctx.getThrowable();
- logger.error("this is a ErrorFilter :" + throwable.getCause().getMessage(), throwable);
- ctx.set("error.status_code", HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
- ctx.set("error.exception", throwable.getCause());
- return null;
- }
-}
diff --git a/bigfans-cloud-api-gateway/src/main/resources/application.yml b/bigfans-cloud-api-gateway/src/main/resources/application.yml
index 5cd6b5f..baeccd4 100644
--- a/bigfans-cloud-api-gateway/src/main/resources/application.yml
+++ b/bigfans-cloud-api-gateway/src/main/resources/application.yml
@@ -3,6 +3,77 @@ server:
spring:
application:
name: bigfans-api-gateway
+ cloud:
+ gateway:
+ discovery:
+ locator: true
+ routes:
+ - id: catalog-service
+ uri: lb://catalog-service
+ predicates:
+ - Path=/api/catalog-service/**
+ filters:
+ - StripPrefix=2
+ - id: cart-service
+ uri: lb://cart-service
+ predicates:
+ - Path=/api/cart-service/**
+ filters:
+ - StripPrefix=2
+ - id: order-service
+ uri: lb://order-service
+ predicates:
+ - Path=/api/order-service/**
+ filters:
+ - StripPrefix=2
+ - id: payment-service
+ uri: lb://payment-service
+ predicates:
+ - Path= /api/payment-service/**
+ filters:
+ - StripPrefix=2
+ - id: notification-service
+ uri: lb://notification-service
+ predicates:
+ - Path=/api/notification-service/**
+ filters:
+ - StripPrefix=2
+ - id: pricing-service
+ uri: lb://pricing-service
+ predicates:
+ - Path=/api/pricing-service/**
+ filters:
+ - StripPrefix=2
+ - id: review-service
+ uri: lb://review-service
+ predicates:
+ - Path=/api/review-service/**
+ filters:
+ - StripPrefix=2
+ - id: search-service
+ uri: lb://search-service
+ predicates:
+ - Path=/api/search-service/**
+ filters:
+ - StripPrefix=2
+ - id: shipping-service
+ uri: lb://shipping-service
+ predicates:
+ - Path=/api/shipping-service/**
+ filters:
+ - StripPrefix=2
+ - id: user-service
+ uri: lb://user-service
+ predicates:
+ - Path=/api/user-service/**
+ filters:
+ - StripPrefix=2
+ - id: system-service
+ uri: lb://system-service
+ predicates:
+ - Path=/api/system-service/**
+ filters:
+ - StripPrefix=2
eureka:
client:
registerWithEureka: true #是否注册到服务中心
@@ -11,59 +82,59 @@ eureka:
defaultZone: http://localhost:8761/eureka/
instance:
prefer-ip-address: true
-zuul:
- max:
- host:
- connections: 500
- host:
- socket-timeout-millis: 60000
- connect-timeout-millis: 60000
- prefix: /api #前缀, 这样请求url需要为/api/core-service才会匹配到/core-service
- routes:
- catalog-service:
- path: /catalog-service/**
- service-id: catalog-service
- sensitiveHeaders: Cookie,Set-Cookie
- cart-service:
- path: /cart-service/**
- service-id: cart-service
- sensitiveHeaders: Cookie,Set-Cookie
- order-service:
- path: /order-service/**
- service-id: order-service
- sensitiveHeaders: Cookie,Set-Cookie
- payment-service:
- path: /payment-service/**
- service-id: payment-service
- sensitiveHeaders: Cookie,Set-Cookie
- notification-service:
- path: /notification-service/**
- service-id: notification-service
- sensitiveHeaders: Cookie,Set-Cookie
- pricing-service:
- path: /pricing-service/**
- service-id: pricing-service
- sensitiveHeaders: Cookie,Set-Cookie
- review-service:
- path: /review-service/**
- service-id: review-service
- sensitiveHeaders: Cookie,Set-Cookie
- search-service:
- path: /search-service/**
- service-id: search-service
- sensitiveHeaders: Cookie,Set-Cookie
- shipping-service:
- path: /shipping-service/**
- service-id: shipping-service
- sensitiveHeaders: Cookie,Set-Cookie
- user-service:
- path: /user-service/**
- service-id: user-service
- sensitiveHeaders: Cookie,Set-Cookie
- system-service:
- path: /system-service/**
- service-id: system-service
- sensitiveHeaders: Cookie,Set-Cookie
+#zuul:
+# max:
+# host:
+# connections: 500
+# host:
+# socket-timeout-millis: 60000
+# connect-timeout-millis: 60000
+# prefix: /api #前缀, 这样请求url需要为/api/core-service才会匹配到/core-service
+# routes:
+# catalog-service:
+# path: /catalog-service/**
+# service-id: catalog-service
+# sensitiveHeaders: Cookie,Set-Cookie
+# cart-service:
+# path: /cart-service/**
+# service-id: cart-service
+# sensitiveHeaders: Cookie,Set-Cookie
+# order-service:
+# path: /order-service/**
+# service-id: order-service
+# sensitiveHeaders: Cookie,Set-Cookie
+# payment-service:
+# path: /payment-service/**
+# service-id: payment-service
+# sensitiveHeaders: Cookie,Set-Cookie
+# notification-service:
+# path: /notification-service/**
+# service-id: notification-service
+# sensitiveHeaders: Cookie,Set-Cookie
+# pricing-service:
+# path: /pricing-service/**
+# service-id: pricing-service
+# sensitiveHeaders: Cookie,Set-Cookie
+# review-service:
+# path: /review-service/**
+# service-id: review-service
+# sensitiveHeaders: Cookie,Set-Cookie
+# search-service:
+# path: /search-service/**
+# service-id: search-service
+# sensitiveHeaders: Cookie,Set-Cookie
+# shipping-service:
+# path: /shipping-service/**
+# service-id: shipping-service
+# sensitiveHeaders: Cookie,Set-Cookie
+# user-service:
+# path: /user-service/**
+# service-id: user-service
+# sensitiveHeaders: Cookie,Set-Cookie
+# system-service:
+# path: /system-service/**
+# service-id: system-service
+# sensitiveHeaders: Cookie,Set-Cookie
#security:
# basic:
# enabled: false
diff --git a/bigfans-cloud-api-gateway/src/main/resources/application_zuul.yml b/bigfans-cloud-api-gateway/src/main/resources/application_zuul.yml
new file mode 100644
index 0000000..5cd6b5f
--- /dev/null
+++ b/bigfans-cloud-api-gateway/src/main/resources/application_zuul.yml
@@ -0,0 +1,95 @@
+server:
+ port: 8080
+spring:
+ application:
+ name: bigfans-api-gateway
+eureka:
+ client:
+ registerWithEureka: true #是否注册到服务中心
+ fetchRegistry: true #是否拉取服务注册信息
+ serviceUrl:
+ defaultZone: http://localhost:8761/eureka/
+ instance:
+ prefer-ip-address: true
+zuul:
+ max:
+ host:
+ connections: 500
+ host:
+ socket-timeout-millis: 60000
+ connect-timeout-millis: 60000
+ prefix: /api #前缀, 这样请求url需要为/api/core-service才会匹配到/core-service
+ routes:
+ catalog-service:
+ path: /catalog-service/**
+ service-id: catalog-service
+ sensitiveHeaders: Cookie,Set-Cookie
+ cart-service:
+ path: /cart-service/**
+ service-id: cart-service
+ sensitiveHeaders: Cookie,Set-Cookie
+ order-service:
+ path: /order-service/**
+ service-id: order-service
+ sensitiveHeaders: Cookie,Set-Cookie
+ payment-service:
+ path: /payment-service/**
+ service-id: payment-service
+ sensitiveHeaders: Cookie,Set-Cookie
+ notification-service:
+ path: /notification-service/**
+ service-id: notification-service
+ sensitiveHeaders: Cookie,Set-Cookie
+ pricing-service:
+ path: /pricing-service/**
+ service-id: pricing-service
+ sensitiveHeaders: Cookie,Set-Cookie
+ review-service:
+ path: /review-service/**
+ service-id: review-service
+ sensitiveHeaders: Cookie,Set-Cookie
+ search-service:
+ path: /search-service/**
+ service-id: search-service
+ sensitiveHeaders: Cookie,Set-Cookie
+ shipping-service:
+ path: /shipping-service/**
+ service-id: shipping-service
+ sensitiveHeaders: Cookie,Set-Cookie
+ user-service:
+ path: /user-service/**
+ service-id: user-service
+ sensitiveHeaders: Cookie,Set-Cookie
+ system-service:
+ path: /system-service/**
+ service-id: system-service
+ sensitiveHeaders: Cookie,Set-Cookie
+#security:
+# basic:
+# enabled: false
+# ignored:
+# - /sso/oauth/token/**
+# oauth2:
+# client:
+# clientId: bigfans
+# clientSecret: bigfans
+# accessTokenUri: http://localhost:8010/sso/oauth/token # 通过authentication_code获取token的地址
+# userAuthorizationUri: http://localhost:8010/sso/oauth/authorize #用于返回authentication_code的地址
+# resource:
+# #userInfoUri: http://localhost:8010/sso/me
+# token-info-uri: http://localhost:8010/sso/oauth/check_token
+#logging:
+# level:
+# com.netflix : debug
+hystrix:
+ command:
+ default:
+ execution:
+ timeout:
+ enabled: true
+ isolation:
+ thread:
+ timeoutInMilliseconds: 60000
+ribbon:
+ ReadTimeout: 60000
+ ConnectTimeout: 60000
diff --git a/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/api/SkuApi.java b/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/api/SkuApi.java
index 7980779..592e723 100644
--- a/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/api/SkuApi.java
+++ b/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/api/SkuApi.java
@@ -1,15 +1,17 @@
package com.bigfans.catalogservice.api;
import com.bigfans.catalogservice.model.*;
+import com.bigfans.catalogservice.model.entity.SpecOptionEntity;
+import com.bigfans.catalogservice.model.vo.SpecGroupVO;
+import com.bigfans.catalogservice.model.vo.SpecOptionVO;
+import com.bigfans.catalogservice.model.vo.SpecValueVO;
import com.bigfans.catalogservice.service.product.ProductService;
import com.bigfans.catalogservice.service.sku.SkuService;
-import com.bigfans.catalogservice.service.sku.StockLogService;
import com.bigfans.catalogservice.service.sku.StockService;
import com.bigfans.catalogservice.service.spec.SpecOptionService;
import com.bigfans.catalogservice.service.spec.SpecService;
import com.bigfans.catalogservice.service.spec.SpecValueService;
-import com.bigfans.framework.Applications;
-import com.bigfans.framework.CurrentUser;
+import com.bigfans.framework.utils.CollectionUtils;
import com.bigfans.framework.web.RestResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -38,162 +40,69 @@ public class SkuApi {
@Autowired
private StockService stockService;
-
@GetMapping("/sku/{prodId}")
public RestResponse getSku(@PathVariable(value = "prodId") String prodId) throws Exception {
- SkuResult result = new SkuResult();
- SKU selectedSku = skuService.getByPid(prodId);
- if (selectedSku == null) {
- return RestResponse.ok();
- }
- List skuList = skuService.listByPgId(selectedSku.getPgId());
- if (skuList == null) {
+ // 1. 获取当前商品组下所有sku
+ List skuList = skuService.listByProdId(prodId);
+ if(CollectionUtils.isEmpty(skuList)){
return RestResponse.ok();
}
- Map skuMap = skuList.stream().collect(Collectors.toMap(SKU::getSkuKey , Function.identity()));
- // 1. 保存所有的sku字符串
- Set pgSkuVals = new HashSet<>();
- Map> optValsMap = new HashMap<>();
- for (SKU sku : skuList) {
- Map optValMap = sku.getSkuMap();
- pgSkuVals.add(sku.getValKey());
- for (Map.Entry entry : optValMap.entrySet()) {
- if (optValsMap.containsKey(entry.getKey())) {
- optValsMap.get(entry.getKey()).add(entry.getValue());
+ SKU selectedSku = skuList.stream().filter(sku -> prodId.equals(sku.getProdId())).findFirst().get();
+ // 保存每个选项下面的所有可选值
+ Map> allOptValMaps = new HashMap<>();
+ List optionIdList = new ArrayList<>();
+ List valueIdList = new ArrayList<>();
+ skuList.forEach((sku) -> {
+ Map skuMap = sku.getSkuMap();
+ for (Map.Entry entry : skuMap.entrySet()) {
+ if (allOptValMaps.containsKey(entry.getKey())) {
+ allOptValMaps.get(entry.getKey()).add(entry.getValue());
} else {
Set vals = new HashSet<>();
vals.add(entry.getValue());
- optValsMap.put(entry.getKey(), vals);
+ allOptValMaps.put(entry.getKey(), vals);
+ optionIdList.add(entry.getKey());
}
+ optionIdList.add(entry.getValue());
}
- }
- // 2. 根据当前选中的sku属性,确定出所有可选的sku组合
- Set combinedValKeys = new HashSet<>();
- Map selectedSkuMap = selectedSku.getSkuMap();
- for (Map.Entry entry : selectedSkuMap.entrySet()) {
+ });
- // 取出当前pg中所有商品中的sku属性,和当前选中商品属性依次组合,产生可选的商品sku组合
- List> skus = new ArrayList<>();
- for (Map.Entry interEntry : selectedSkuMap.entrySet()) {
- if (entry.getKey().equals(interEntry.getKey())) {
- skus.add(new ArrayList<>(optValsMap.get(interEntry.getKey())));
- continue;
- }
- // 保证sku的顺序
- List clonedKey = new ArrayList<>();
- clonedKey.add(interEntry.getValue());
- skus.add(clonedKey);
- }
+ List specOptionList = specOptionService.listByIdList(optionIdList);
+ List specValueList = specValueService.listByIdList(valueIdList);
+ Map specOptionNameMap = specOptionList.stream().collect(Collectors.toMap(SpecOption::getId , SpecOption::getName));
+ Map specValueNameMap = specValueList.stream().collect(Collectors.toMap(SpecValue::getId , SpecValue::getValue));
- combinedValKeys.addAll(this.combine(skus));
- }
-
- // 3. 确定可以disable的valId
- List valToDisable = new ArrayList<>();
- List valToEnable = new ArrayList<>();
- List outOfStock = new ArrayList<>();
- for (String valKey : combinedValKeys) {
- boolean disable = false;
- boolean oos = false;
- if (pgSkuVals.contains(valKey)) {
- Stock stock = stockService.getBySkuValKey(valKey);
- // 如果没有库存,添加到不可选列表
- if (stock == null || stock.getRest() <= 0) {
- oos = true;
- }
- } else {
- disable = true;
- }
- String[] optValPairs = valKey.split(";");
- for (String optValPair : optValPairs) {
- if (disable) {
- valToDisable.add(optValPair);
- } else if (oos) {
- outOfStock.add(optValPair);
+ // 根据当前选中的商品计算出所有可选sku组合
+ Map selectedSkuMap = selectedSku.getSkuMap();
+ List groupVOList = new ArrayList<>();
+ for(Map.Entry entry : selectedSkuMap.entrySet()){
+ String selectedOpt = entry.getKey();
+ String selectedVal = entry.getValue();
+ SpecGroupVO group = new SpecGroupVO();
+ group.setOption(specOptionNameMap.get(selectedOpt));
+
+ Set allValues = allOptValMaps.get(selectedOpt);
+ for (String val : allValues) {
+ Map currentSkuMap = new HashMap<>(selectedSkuMap);
+ currentSkuMap.put(selectedOpt , val);
+ SKU availableSku = skuList.stream().filter((item) -> item.skuMapEquals(currentSkuMap)).findFirst().orElse(null);
+ SpecValueVO valueVO = new SpecValueVO();
+ valueVO.setValue(specValueNameMap.get(val));
+ valueVO.setSelected(val.equals(selectedVal));
+ if(availableSku != null){
+ valueVO.setSelectable(true);
+ valueVO.setOutOfStock(availableSku.outOfStock());
+ valueVO.setProdId(availableSku.getProdId());
} else {
- valToEnable.add(optValPair);
- }
- }
- }
- // 4. 确定最终的不可选valId
- Set disabledValIdList = new HashSet<>();
- Set outOfStockList = new HashSet<>();
- // 4.1 不可点的valId
- for (String valD : valToDisable) {
- if (valToEnable.contains(valD)) {
- continue;
- }
- disabledValIdList.add(valD);
- }
-
- // 4.2 缺货的valId
- for (String valD : outOfStock) {
- if (valToEnable.contains(valD)) {
- continue;
- }
- outOfStockList.add(valD);
- }
-
- // 5. 创建返回结果
- List specGroups = new ArrayList<>();
- for (Map.Entry> entry : optValsMap.entrySet()) {
- String optId = entry.getKey();
- Set valIds = entry.getValue();
- SpecOption specOption = specOptionService.load(optId);
- List productSpecs = new ArrayList<>();
- for (String valId : valIds) {
- List selectedVals = selectedSku.getValIdList();
-
- boolean selectable = true;
- boolean selected = false;
- boolean oos = false;
- if (disabledValIdList.contains(valId)) {
- selectable = false;
+ valueVO.setSelectable(false);
}
- if(outOfStockList.contains(valId)){
- oos = true;
- }
- if (selectedVals.contains(valId)) {
- selected = true;
- }
-
- Map currentSkuMap = new HashMap<>(selectedSku.getSkuMap());
- currentSkuMap.put(optId , valId);
- StringBuilder skuKey = new StringBuilder(32);
- for(Map.Entry currentSkuEntry : currentSkuMap.entrySet()){
- skuKey.append(currentSkuEntry.getKey());
- skuKey.append(SKU.SKU_SEPARATOR);
- skuKey.append(currentSkuEntry.getValue());
- skuKey.append(SKU.KEYS_SEPARATOR);
- }
- skuKey.deleteCharAt(skuKey.length()-1);
- skuKey.trimToSize();
- SKU currentSku = skuMap.get(skuKey.toString());
- SpecValue specValue = specValueService.load(valId);
- ProductSpec productSpec = new ProductSpec();
- if(currentSku != null){
- productSpec.setProdId(currentSku.getProdId());
- }
- productSpec.setOptionId(optId);
- productSpec.setOption(specOption.getName());
- productSpec.setValueId(specValue.getId());
- productSpec.setValue(specValue.getValue());
- productSpec.setOutOfStock(oos);
- productSpec.setSelectable(selectable);
- productSpec.setSelected(selected);
- productSpecs.add(productSpec);
+ group.addValue(valueVO);
}
- SpecGroup group = new SpecGroup();
- group.setOption(specOption);
- group.setValues(productSpecs);
- specGroups.add(group);
+ groupVOList.add(group);
}
- result.setDisabledValIdList(disabledValIdList);
- result.setSelectedSku(selectedSku);
- result.setSkuMap(optValsMap);
- result.setSpecGroups(specGroups);
-
+ SkuResult result = new SkuResult();
+ result.setSpecGroups(groupVOList);
return RestResponse.ok(result);
}
diff --git a/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/dao/SkuDAO.java b/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/dao/SkuDAO.java
index 63e03b5..ef6ccc2 100644
--- a/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/dao/SkuDAO.java
+++ b/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/dao/SkuDAO.java
@@ -15,6 +15,8 @@ public interface SkuDAO extends BaseDAO {
List listByPgId(String pgId);
+ List listByProdId(String prodId);
+
SKU getByValKey(String valKey);
SKU getByPid(String prodId);
diff --git a/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/dao/SpecOptionDAO.java b/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/dao/SpecOptionDAO.java
index e4bd3ed..803a385 100644
--- a/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/dao/SpecOptionDAO.java
+++ b/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/dao/SpecOptionDAO.java
@@ -42,6 +42,9 @@ public interface SpecOptionDAO extends BaseDAO{
*/
List listByPid(String pid, Long start, Long pagesize);
+
+ List listByIdList(List idList);
+
/**
* 查询商品下的所有的规格项
* @param pid
diff --git a/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/dao/SpecValueDAO.java b/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/dao/SpecValueDAO.java
index 6a5ffe0..ef2ba18 100644
--- a/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/dao/SpecValueDAO.java
+++ b/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/dao/SpecValueDAO.java
@@ -14,7 +14,7 @@ import java.util.List;
*/
public interface SpecValueDAO extends BaseDAO{
- List listById(String[] idList);
+ List listByIdList(List idList);
List listByOptionId(String optionId);
diff --git a/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/dao/impl/SkuDAOImpl.java b/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/dao/impl/SkuDAOImpl.java
index 40f0c4c..a913691 100644
--- a/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/dao/impl/SkuDAOImpl.java
+++ b/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/dao/impl/SkuDAOImpl.java
@@ -32,6 +32,12 @@ public class SkuDAOImpl extends MybatisDAOImpl implements SkuDAO {
return getSqlSession().selectList(className +".list", params);
}
+ public List listByProdId(String prodId) {
+ ParameterMap params = new ParameterMap();
+ params.put("prodId", prodId);
+ return getSqlSession().selectList(className +".list", params);
+ }
+
@Override
@Cacheable
public SKU getByValKey(String valKey) {
diff --git a/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/dao/impl/SpecOptionDAOImpl.java b/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/dao/impl/SpecOptionDAOImpl.java
index 8485e6d..88e42d4 100644
--- a/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/dao/impl/SpecOptionDAOImpl.java
+++ b/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/dao/impl/SpecOptionDAOImpl.java
@@ -49,6 +49,13 @@ public class SpecOptionDAOImpl extends MybatisDAOImpl implements Spe
return getSqlSession().selectList(className + ".list", params);
}
+ @Override
+ public List listByIdList(List idList) {
+ ParameterMap params = new ParameterMap();
+ params.put("idList", idList);
+ return getSqlSession().selectList(className + ".list", params);
+ }
+
@Override
public List list(String catId, String pgId, String pid, Long start, Long pagesize) {
ParameterMap params = new ParameterMap(start , pagesize);
diff --git a/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/dao/impl/SpecValueDAOImpl.java b/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/dao/impl/SpecValueDAOImpl.java
index 6920baa..5831a1e 100644
--- a/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/dao/impl/SpecValueDAOImpl.java
+++ b/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/dao/impl/SpecValueDAOImpl.java
@@ -21,7 +21,7 @@ public class SpecValueDAOImpl extends MybatisDAOImpl implements SpecV
public static final String BEAN_NAME = "specValueDAO";
@Override
- public List listById(String[] idList) {
+ public List listByIdList(List idList) {
ParameterMap params = new ParameterMap();
params.put("idList", idList);
return getSqlSession().selectList(className + ".list", params);
diff --git a/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/model/SKU.java b/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/model/SKU.java
index 5b75ddc..4695fa8 100644
--- a/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/model/SKU.java
+++ b/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/model/SKU.java
@@ -21,7 +21,8 @@ public class SKU extends SKUEntity {
public static final String KEYS_SEPARATOR = ";";
public static final String SKU_SEPARATOR = ":";
-
+
+ private Integer stock;
private Map skuMap;
private List optIdList;
private List valIdList;
@@ -32,6 +33,24 @@ public class SKU extends SKUEntity {
}
return skuMap.get(optId);
}
+
+ public boolean skuMapEquals(Map targetMap){
+ if(this.skuMap == null){
+ this.parseSkuMap();
+ }
+ boolean eq = false;
+ if(targetMap.size() != this.skuMap.size()){
+ return eq;
+ }
+ eq = true;
+ for (Map.Entry entry: this.skuMap.entrySet()) {
+ if(!targetMap.get(entry.getKey()).equals(entry.getValue())){
+ eq = false;
+ break;
+ }
+ }
+ return eq;
+ }
public void parseSkuMap(){
if(skuMap != null){
@@ -68,4 +87,16 @@ public class SKU extends SKUEntity {
parseSkuMap();
return valIdList;
}
+
+ public Integer getStock() {
+ return stock;
+ }
+
+ public void setStock(Integer stock) {
+ this.stock = stock;
+ }
+
+ public boolean outOfStock(){
+ return this.stock == null || this.stock == 0;
+ }
}
diff --git a/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/model/SkuResult.java b/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/model/SkuResult.java
index 669bad9..e7f04c7 100644
--- a/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/model/SkuResult.java
+++ b/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/model/SkuResult.java
@@ -1,5 +1,6 @@
package com.bigfans.catalogservice.model;
+import com.bigfans.catalogservice.model.vo.SpecGroupVO;
import com.bigfans.framework.utils.CollectionUtils;
import lombok.Data;
@@ -22,7 +23,7 @@ public class SkuResult implements Serializable {
private Map> skuMap;
private SKU selectedSku;
private Set disabledValIdList;
- private List specGroups;
+ private List specGroups;
public Boolean getHasSku() {
return CollectionUtils.isNotEmpty(skuMap);
diff --git a/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/model/SpecGroup.java b/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/model/SpecGroup.java
deleted file mode 100644
index 4f23e53..0000000
--- a/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/model/SpecGroup.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.bigfans.catalogservice.model;
-
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.List;
-
-/**
- * 商品规格组,封装商品规格项->规格值
- *
- * @author lichong
- *
- */
-@Data
-public class SpecGroup implements Serializable{
-
- private static final long serialVersionUID = 7399149219218538867L;
-
- private SpecOption option;
- private List values;
-
-}
diff --git a/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/model/vo/SpecGroupVO.java b/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/model/vo/SpecGroupVO.java
new file mode 100644
index 0000000..941d717
--- /dev/null
+++ b/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/model/vo/SpecGroupVO.java
@@ -0,0 +1,29 @@
+package com.bigfans.catalogservice.model.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 商品规格组,封装商品规格项->规格值
+ *
+ * @author lichong
+ *
+ */
+@Data
+public class SpecGroupVO implements Serializable{
+
+ private static final long serialVersionUID = 7399149219218538867L;
+
+ protected String option;
+ protected List values;
+
+ public void addValue(SpecValueVO valueVO){
+ if(this.values == null){
+ this.values = new ArrayList<>();
+ }
+ this.values.add(valueVO);
+ }
+}
diff --git a/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/model/vo/SpecOptionVO.java b/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/model/vo/SpecOptionVO.java
new file mode 100644
index 0000000..572b311
--- /dev/null
+++ b/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/model/vo/SpecOptionVO.java
@@ -0,0 +1,18 @@
+package com.bigfans.catalogservice.model.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author lichong
+ * @create 2018-07-28 下午1:32
+ **/
+@Data
+public class SpecOptionVO implements Serializable {
+
+ private static final long serialVersionUID = 1;
+
+ private String id;
+ private String name;
+}
diff --git a/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/model/vo/SpecValueVO.java b/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/model/vo/SpecValueVO.java
new file mode 100644
index 0000000..ece8a1e
--- /dev/null
+++ b/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/model/vo/SpecValueVO.java
@@ -0,0 +1,22 @@
+package com.bigfans.catalogservice.model.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author lichong
+ * @create 2018-07-28 下午1:33
+ **/
+@Data
+public class SpecValueVO implements Serializable {
+
+ private static final long serialVersionUID = 1;
+
+ protected Boolean selected;
+ protected Boolean selectable;
+ protected Boolean outOfStock;
+ protected String value;
+ protected String prodId;
+
+}
diff --git a/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/service/sku/SkuService.java b/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/service/sku/SkuService.java
index 618a171..efbfe3f 100644
--- a/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/service/sku/SkuService.java
+++ b/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/service/sku/SkuService.java
@@ -18,5 +18,7 @@ public interface SkuService extends BaseService {
SKU getByValKey(String valKey) throws Exception;
List listByPgId(String pgId) throws Exception;
+
+ List listByProdId(String prodId) throws Exception;
}
diff --git a/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/service/sku/SkuServiceImpl.java b/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/service/sku/SkuServiceImpl.java
index b74d1f2..5f8aad6 100644
--- a/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/service/sku/SkuServiceImpl.java
+++ b/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/service/sku/SkuServiceImpl.java
@@ -69,6 +69,12 @@ public class SkuServiceImpl extends BaseServiceImpl implements SkuService {
return skudao.listByPgId(pgId);
}
+ @Override
+ @Transactional(readOnly = true)
+ public List listByProdId(String prodId) throws Exception {
+ return skudao.listByProdId(prodId);
+ }
+
@Override
@Transactional(readOnly = true)
public SKU getByValKey(String valKey) throws Exception {
diff --git a/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/service/spec/SpecOptionService.java b/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/service/spec/SpecOptionService.java
index 2b32324..26ffc1d 100644
--- a/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/service/spec/SpecOptionService.java
+++ b/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/service/spec/SpecOptionService.java
@@ -39,5 +39,7 @@ public interface SpecOptionService extends BaseService {
List listByCatId(String catId, Long start , Long pagesize) throws Exception;
List list(String catId , String pgId ,String pid , Long start , Long pagesize) throws Exception;
+
+ List listByIdList(List idList) throws Exception;
}
diff --git a/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/service/spec/SpecOptionServiceImpl.java b/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/service/spec/SpecOptionServiceImpl.java
index b802cf8..38872b3 100644
--- a/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/service/spec/SpecOptionServiceImpl.java
+++ b/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/service/spec/SpecOptionServiceImpl.java
@@ -103,4 +103,9 @@ public class SpecOptionServiceImpl extends BaseServiceImpl implement
return specOptionDAO.list(catId , pgId ,pid , start , pagesize);
}
+ @Override
+ public List listByIdList(List idList) throws Exception {
+ return specOptionDAO.listByIdList(idList);
+ }
+
}
diff --git a/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/service/spec/SpecValueService.java b/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/service/spec/SpecValueService.java
index f72a068..fad4933 100644
--- a/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/service/spec/SpecValueService.java
+++ b/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/service/spec/SpecValueService.java
@@ -14,7 +14,7 @@ import java.util.List;
*/
public interface SpecValueService extends BaseService {
- List listById(String[] ids) throws Exception;
+ List listByIdList(List idList) throws Exception;
List listByOptionId(String optionId) throws Exception;
diff --git a/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/service/spec/SpecValueServiceImpl.java b/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/service/spec/SpecValueServiceImpl.java
index 6676be4..4f33bcb 100644
--- a/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/service/spec/SpecValueServiceImpl.java
+++ b/bigfans-cloud-service-catalog/src/main/java/com/bigfans/catalogservice/service/spec/SpecValueServiceImpl.java
@@ -33,8 +33,8 @@ public class SpecValueServiceImpl extends BaseServiceImpl implements
@Override
@Cacheable
@Transactional(readOnly = true)
- public List listById(String[] ids) throws Exception{
- return specValueDAO.listById(ids);
+ public List listByIdList(List idList) throws Exception{
+ return specValueDAO.listByIdList(idList);
}
@Override
diff --git a/bigfans-cloud-service-catalog/src/main/resources/mybatis/mapper/Sku-Mapper.xml b/bigfans-cloud-service-catalog/src/main/resources/mybatis/mapper/Sku-Mapper.xml
index 8a20fc2..ab7d3b9 100644
--- a/bigfans-cloud-service-catalog/src/main/resources/mybatis/mapper/Sku-Mapper.xml
+++ b/bigfans-cloud-service-catalog/src/main/resources/mybatis/mapper/Sku-Mapper.xml
@@ -39,15 +39,19 @@
diff --git a/bigfans-cloud-service-catalog/src/main/resources/mybatis/mapper/SpecOption-Mapper.xml b/bigfans-cloud-service-catalog/src/main/resources/mybatis/mapper/SpecOption-Mapper.xml
index db66637..db411e2 100644
--- a/bigfans-cloud-service-catalog/src/main/resources/mybatis/mapper/SpecOption-Mapper.xml
+++ b/bigfans-cloud-service-catalog/src/main/resources/mybatis/mapper/SpecOption-Mapper.xml
@@ -47,6 +47,12 @@
#{categoryId}
+
+ AND so.id in
+
+ #{id}
+
+
order by so.update_date desc , so.order_num asc
diff --git a/bigfans-cloud-service-catalog/src/main/resources/mybatis/mapper/SpecValue-Mapper.xml b/bigfans-cloud-service-catalog/src/main/resources/mybatis/mapper/SpecValue-Mapper.xml
index 7a98dde..368c2ca 100644
--- a/bigfans-cloud-service-catalog/src/main/resources/mybatis/mapper/SpecValue-Mapper.xml
+++ b/bigfans-cloud-service-catalog/src/main/resources/mybatis/mapper/SpecValue-Mapper.xml
@@ -39,7 +39,7 @@
SpecValue sv
deleted = 0
-
+
AND sv.id in
#{id}
diff --git a/bigfans-cloud-service-payment/pom.xml b/bigfans-cloud-service-payment/pom.xml
index f60ba82..189b76d 100644
--- a/bigfans-cloud-service-payment/pom.xml
+++ b/bigfans-cloud-service-payment/pom.xml
@@ -38,6 +38,12 @@
spring-boot-starter-test
test
+
junit
junit
@@ -55,6 +61,18 @@
org.apache.kafka
kafka_2.12
+
+ org.alipay.sdk
+ sdk-java20161213173952
+ system
+ ${project.basedir}/lib/alipay-sdk-java20161213173952.jar
+
+
+ org.alipay.sdk
+ sdk-20161215
+ system
+ ${project.basedir}/lib/alipay-trade-sdk-20161215.jar
+
bigfans-cloud
bigfans-cloud-base
diff --git a/bigfans-cloud-service-payment/src/main/java/com/bigfans/paymentservice/api/PaymentApi.java b/bigfans-cloud-service-payment/src/main/java/com/bigfans/paymentservice/api/PaymentApi.java
index 1eb5a7c..197f0e3 100644
--- a/bigfans-cloud-service-payment/src/main/java/com/bigfans/paymentservice/api/PaymentApi.java
+++ b/bigfans-cloud-service-payment/src/main/java/com/bigfans/paymentservice/api/PaymentApi.java
@@ -47,9 +47,6 @@ public class PaymentApi extends BaseController {
@Autowired
private OrderServiceClient orderServiceClient;
- @Autowired
- private SimpMessagingTemplate messagingTemplate;
-
@PostMapping("/pay")
public RestResponse create(@RequestBody Payment payment) throws Exception{
paymentService.create(payment);
diff --git a/bigfans-cloud-service-payment/src/main/java/com/bigfans/paymentservice/config/WebConfig.java b/bigfans-cloud-service-payment/src/main/java/com/bigfans/paymentservice/config/WebConfig.java
index e65ea08..01f64f7 100644
--- a/bigfans-cloud-service-payment/src/main/java/com/bigfans/paymentservice/config/WebConfig.java
+++ b/bigfans-cloud-service-payment/src/main/java/com/bigfans/paymentservice/config/WebConfig.java
@@ -35,7 +35,7 @@ public class WebConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new DefaultInterceptor()).addPathPatterns("/**");
- registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**").excludePathPatterns("/login");
+ registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**").excludePathPatterns("/login","/static","/images");
}
}
diff --git a/bigfans-cloud-service-payment/src/main/java/com/bigfans/paymentservice/config/WebSocketConfig.java b/bigfans-cloud-service-payment/src/main/java/com/bigfans/paymentservice/config/WebSocketConfig.java
deleted file mode 100644
index b54ff16..0000000
--- a/bigfans-cloud-service-payment/src/main/java/com/bigfans/paymentservice/config/WebSocketConfig.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.bigfans.paymentservice.config;
-
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.socket.config.annotation.AbstractWebSocketMessageBrokerConfigurer;
-import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
-import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
-
-@Configuration
-@EnableWebSocketMessageBroker
-public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
-
-
-
-
- @Override
- public void registerStompEndpoints(StompEndpointRegistry stompEndpointRegistry) {
- stompEndpointRegistry.addEndpoint("/checkPaymentStatus").withSockJS();
- }
-}
diff --git a/bigfans-cloud-service-pricing/src/main/java/com/bigfans/pricingservice/api/mgr/CouponManageApi.java b/bigfans-cloud-service-pricing/src/main/java/com/bigfans/pricingservice/api/mgr/CouponManageApi.java
new file mode 100644
index 0000000..33a0cdc
--- /dev/null
+++ b/bigfans-cloud-service-pricing/src/main/java/com/bigfans/pricingservice/api/mgr/CouponManageApi.java
@@ -0,0 +1,30 @@
+package com.bigfans.pricingservice.api.mgr;
+
+import com.bigfans.framework.annotations.NeedLogin;
+import com.bigfans.framework.web.BaseController;
+import com.bigfans.framework.web.RestResponse;
+import com.bigfans.pricingservice.model.Coupon;
+import com.bigfans.pricingservice.service.CouponService;
+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.RestController;
+
+/**
+ * @author lichong
+ * @create 2018-08-04 下午6:10
+ **/
+@RestController("/coupon")
+public class CouponManageApi extends BaseController {
+
+ @Autowired
+ private CouponService couponService;
+
+ @PostMapping("/create")
+ @NeedLogin(roles = "admin")
+ public RestResponse create(@RequestBody Coupon coupon) throws Exception {
+ couponService.create(coupon);
+ return RestResponse.ok();
+ }
+
+}
diff --git a/bigfans-cloud-service-shipping/pom.xml b/bigfans-cloud-service-shipping/pom.xml
new file mode 100644
index 0000000..f893d85
--- /dev/null
+++ b/bigfans-cloud-service-shipping/pom.xml
@@ -0,0 +1,96 @@
+
+
+
+ bigfans-cloud
+ bigfans-cloud
+ 0.0.1-SNAPSHOT
+
+ 4.0.0
+
+ bigfans-cloud-service-shipping
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-netflix-eureka-client
+
+
+ org.springframework.cloud
+ spring-cloud-starter-netflix-hystrix
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ junit
+ junit
+ test
+
+
+ mysql
+ mysql-connector-java
+
+
+ com.alibaba
+ druid
+
+
+ org.apache.kafka
+ kafka_2.12
+
+
+ com.lmax
+ disruptor
+
+
+ bigfans-cloud
+ bigfans-cloud-base
+ 0.0.1-SNAPSHOT
+
+
+ org.neo4j.driver
+ neo4j-java-driver
+
+
+ org.elasticsearch.client
+ transport
+
+
+ com.belerweb
+ pinyin4j
+
+
+ net.coobird
+ thumbnailator
+
+
+ alidayu
+ alidayu
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/ShippingServiceApp.java b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/ShippingServiceApp.java
new file mode 100644
index 0000000..e1c21eb
--- /dev/null
+++ b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/ShippingServiceApp.java
@@ -0,0 +1,13 @@
+package com.bigfans.shippingservice;
+
+/**
+ * @author lichong
+ * @create 2018-03-25 上午8:05
+ **/
+public class ShippingServiceApp {
+
+ public static void main(String[] args) throws Exception{
+
+ }
+
+}
diff --git a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/api/clients/OrderServiceClient.java b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/api/clients/OrderServiceClient.java
new file mode 100644
index 0000000..1646e94
--- /dev/null
+++ b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/api/clients/OrderServiceClient.java
@@ -0,0 +1,37 @@
+package com.bigfans.shippingservice.api.clients;
+
+import com.bigfans.framework.utils.BeanUtils;
+import com.bigfans.framework.web.RestResponse;
+import com.bigfans.shippingservice.model.Order;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+import org.springframework.web.client.RestTemplate;
+import org.springframework.web.util.UriComponents;
+import org.springframework.web.util.UriComponentsBuilder;
+
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+
+/**
+ * @author lichong
+ * @create 2018-02-25 下午4:21
+ **/
+@Component
+public class OrderServiceClient {
+
+ @Autowired
+ private RestTemplate restTemplate;
+
+ public CompletableFuture getOrder(String orderId){
+ return CompletableFuture.supplyAsync(() -> {
+ UriComponents builder = UriComponentsBuilder.fromUriString("http://order-service/orders/{id}").build().expand(orderId).encode();
+ ResponseEntity responseEntity = restTemplate.getForEntity(builder.toUri(), RestResponse.class);
+ RestResponse restResponse = responseEntity.getBody();
+ Map data = (Map) restResponse.getData();
+ Order order = new Order();
+ BeanUtils.mapToModel(data , order);
+ return order;
+ });
+ }
+}
diff --git a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/DataSourceConfig.java b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/DataSourceConfig.java
new file mode 100644
index 0000000..f33dbac
--- /dev/null
+++ b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/DataSourceConfig.java
@@ -0,0 +1,108 @@
+package com.bigfans.shippingservice.config;
+
+import com.alibaba.druid.pool.DruidDataSource;
+import com.bigfans.framework.dao.DynamicDataSource;
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.mybatis.spring.SqlSessionFactoryBean;
+import org.mybatis.spring.SqlSessionTemplate;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.context.EnvironmentAware;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.env.Environment;
+import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
+import org.springframework.core.io.support.ResourcePatternResolver;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.datasource.DataSourceTransactionManager;
+import org.springframework.transaction.PlatformTransactionManager;
+import org.springframework.transaction.support.TransactionTemplate;
+
+import javax.sql.DataSource;
+
+@Configuration
+public class DataSourceConfig implements EnvironmentAware {
+
+ private static final String MYBATIS_MAPPER_LOCATION = "classpath:mybatis/mapper/*-Mapper.xml";
+ private static final String MYBATIS_CONFIG_LOCATION = "classpath:mybatis/MybatisConfig.xml";
+
+ private Environment env;
+
+ @Override
+ public void setEnvironment(Environment env) {
+ this.env = env;
+ }
+
+ /**
+ * 主库配置
+ */
+ @Bean(name = "masterDataSource")
+ public DataSource createMasterDataSource() throws Exception {
+ DruidDataSource dataSource = new DruidDataSource();
+ dataSource.setDriverClassName(env.getProperty("master.datasource.driverClassName"));
+ dataSource.setUrl(env.getProperty("master.datasource.url"));
+ dataSource.setUsername(env.getProperty("master.datasource.username"));
+ dataSource.setPassword(env.getProperty("master.datasource.password"));
+ dataSource.setTestWhileIdle(true);
+ return dataSource;
+ }
+
+ /**
+ * 从库配置
+ */
+ @Bean(name = "clusterDataSource1")
+ public DataSource createCluster1DataSource() throws Exception {
+ DruidDataSource dataSource = new DruidDataSource();
+ dataSource.setDriverClassName(env.getProperty("cluster1.datasource.driverClassName"));
+ dataSource.setUrl(env.getProperty("cluster1.datasource.url"));
+ dataSource.setUsername(env.getProperty("cluster1.datasource.username"));
+ dataSource.setPassword(env.getProperty("cluster1.datasource.password"));
+ dataSource.setTestWhileIdle(true);
+ return dataSource;
+ }
+
+ @Bean(name = "dynamicDataSource")
+ @Primary
+ public DataSource createDynamicDataSource(
+ @Qualifier("masterDataSource") DataSource masterDataSource ,
+ @Qualifier("clusterDataSource1") DataSource clusterDataSource1){
+ DynamicDataSource dynamicDataSource = new DynamicDataSource();
+ dynamicDataSource.putMaster(masterDataSource);
+ dynamicDataSource.putCluster(clusterDataSource1);
+ dynamicDataSource.setTargetDataSources();
+ return dynamicDataSource;
+ }
+
+ @Bean(name = "transactionManager")
+ public DataSourceTransactionManager createTransactionManager(@Qualifier("dynamicDataSource") DataSource dynamicDataSource) throws Exception {
+ return new DataSourceTransactionManager(dynamicDataSource);
+ }
+
+ @Bean(name = "sqlSessionFactory")
+ public SqlSessionFactory masterSqlSessionFactory(@Qualifier("dynamicDataSource") DataSource dynamicDataSource)
+ throws Exception {
+ final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
+ sessionFactory.setDataSource(dynamicDataSource);
+ ResourcePatternResolver pathResolver = new PathMatchingResourcePatternResolver();
+ sessionFactory.setConfigLocation(pathResolver.getResource(MYBATIS_CONFIG_LOCATION));
+ sessionFactory.setMapperLocations(pathResolver.getResources(MYBATIS_MAPPER_LOCATION));
+ return sessionFactory.getObject();
+ }
+
+ @Bean
+ public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory){
+ return new SqlSessionTemplate(sqlSessionFactory);
+ }
+
+ @Bean
+ public JdbcTemplate jdbcTemplate(@Qualifier("dynamicDataSource") DataSource dynamicDataSource){
+ return new JdbcTemplate(dynamicDataSource);
+ }
+
+ @Bean
+ public TransactionTemplate transactionTemplate(@Qualifier("dynamicDataSource") DataSource dynamicDataSource){
+ PlatformTransactionManager transactionManager = new DataSourceTransactionManager(dynamicDataSource);
+ TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager);
+ return transactionTemplate;
+ }
+}
diff --git a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/EventBusConfig.java b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/EventBusConfig.java
new file mode 100644
index 0000000..5bd7141
--- /dev/null
+++ b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/EventBusConfig.java
@@ -0,0 +1,38 @@
+package com.bigfans.shippingservice.config;
+
+import com.bigfans.framework.event.ApplicationEventBus;
+import com.bigfans.framework.event.EventRepository;
+import com.bigfans.framework.event.JdbcEventRepository;
+import com.bigfans.framework.event.SpringEventBus;
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.jdbc.core.JdbcTemplate;
+
+/**
+ * @author lichong
+ * @create 2018-02-05 下午8:33
+ **/
+@Configuration
+public class EventBusConfig implements ApplicationContextAware{
+
+ private ApplicationContext applicationContext;
+
+ @Bean
+ public EventRepository eventRepository(JdbcTemplate jdbcTemplate){
+ return new JdbcEventRepository(jdbcTemplate);
+ }
+
+ @Bean
+ public ApplicationEventBus eventBus(EventRepository eventRepository){
+ return new SpringEventBus(applicationContext);
+ };
+
+ @Override
+ public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+ this.applicationContext = applicationContext;
+ }
+
+}
diff --git a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/KafkaConfig.java b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/KafkaConfig.java
new file mode 100644
index 0000000..8f78ce0
--- /dev/null
+++ b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/KafkaConfig.java
@@ -0,0 +1,63 @@
+package com.bigfans.shippingservice.config;
+
+import com.bigfans.framework.kafka.KafkaConsumerTaskManager;
+import com.bigfans.framework.kafka.KafkaFactory;
+import com.bigfans.framework.kafka.KafkaTemplate;
+import org.apache.kafka.clients.consumer.ConsumerConfig;
+import org.apache.kafka.clients.producer.ProducerConfig;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.Properties;
+
+/**
+ * @author lichong
+ * @create 2018-02-04 上午10:46
+ **/
+@Configuration
+public class KafkaConfig {
+
+ @Value("${kafka.servers}")
+ private String servers;
+ @Value("${kafka.groupId}")
+ private String groupId;
+ @Value("${kafka.clientId}")
+ private String clientId;
+
+ @Bean
+ public KafkaFactory kafkaFactory(){
+
+ Properties producerProperties = new Properties();
+ producerProperties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, servers);
+ producerProperties.put(ProducerConfig.ACKS_CONFIG, "all");
+ producerProperties.put(ProducerConfig.RETRIES_CONFIG, 0);
+ producerProperties.put(ProducerConfig.BATCH_SIZE_CONFIG, 16384);
+ producerProperties.put(ProducerConfig.LINGER_MS_CONFIG, 1);
+ producerProperties.put(ProducerConfig.BUFFER_MEMORY_CONFIG, 33554432);
+ producerProperties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
+ producerProperties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
+
+ Properties consumerProperties = new Properties();
+ consumerProperties.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, servers);
+ consumerProperties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer");
+ consumerProperties.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer");
+ consumerProperties.put(ConsumerConfig.GROUP_ID_CONFIG, groupId);
+ consumerProperties.put(ConsumerConfig.CLIENT_ID_CONFIG, "simple");
+
+ KafkaFactory factory = new KafkaFactory();
+ factory.setConsumerProperties(consumerProperties);
+ factory.setProducerProperties(producerProperties);
+ return factory;
+ }
+
+ @Bean
+ public KafkaConsumerTaskManager kafkaConsumerManager(KafkaFactory kafkaFactory){
+ return new KafkaConsumerTaskManager(kafkaFactory);
+ }
+
+ @Bean
+ public KafkaTemplate kafkaTemplate(KafkaFactory kafkaFactory){
+ return new KafkaTemplate(kafkaFactory);
+ }
+}
diff --git a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/PluginConfig.java b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/PluginConfig.java
new file mode 100644
index 0000000..f881891
--- /dev/null
+++ b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/PluginConfig.java
@@ -0,0 +1,29 @@
+package com.bigfans.shippingservice.config;
+
+import com.bigfans.framework.cache.CacheProvider;
+import com.bigfans.framework.cache.RedisCacheProvider;
+import com.bigfans.framework.redis.JedisTemplate;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author lichong
+ * @create 2018-03-21 下午9:21
+ **/
+@Configuration
+@RefreshScope
+public class PluginConfig {
+
+ @Value("${cache.type}")
+ private String cacheType;
+ @Value("${cache.dbindex}")
+ private Integer cacheDbIndex;
+
+ @Bean
+ public CacheProvider cachePlugin(JedisTemplate jedisTemplate){
+ CacheProvider cacheProvider = new RedisCacheProvider(jedisTemplate , cacheDbIndex);
+ return cacheProvider;
+ }
+}
diff --git a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/RedisTemplateConfig.java b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/RedisTemplateConfig.java
new file mode 100644
index 0000000..605dd65
--- /dev/null
+++ b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/RedisTemplateConfig.java
@@ -0,0 +1,41 @@
+package com.bigfans.shippingservice.config;
+
+import com.bigfans.framework.redis.JedisConnectionFactory;
+import com.bigfans.framework.redis.JedisTemplate;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class RedisTemplateConfig {
+
+ @Value("${jedis.host}")
+ private String host;
+ @Value("${jedis.port}")
+ private Integer port;
+ @Value("${jedis.auth}")
+ private String auth;
+ @Value("${jedis.max_idle}")
+ private Integer max_idle;
+ @Value("${jedis.timeout}")
+ private Integer timeout;
+ @Value("${jedis.test_on_borrow}")
+ private Boolean test_on_borrow;
+ @Value("${jedis.default_db_index}")
+ private Integer default_db_index;
+
+ @Bean(name = "jedisTemplate")
+ public JedisTemplate createTemplate() {
+ JedisConnectionFactory factory = new JedisConnectionFactory();
+ factory.setHost(host);
+ factory.setPort(port);
+ factory.setAuth(auth);
+ factory.setMax_idle(max_idle);
+ factory.setTimeout(timeout);
+ factory.setTest_on_borrow(test_on_borrow);
+ factory.setDefaultDbIndex(default_db_index);
+ JedisTemplate jedisTemplate = new JedisTemplate(factory);
+ return jedisTemplate;
+ }
+
+}
diff --git a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/RestTemplateConfig.java b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/RestTemplateConfig.java
new file mode 100644
index 0000000..734bed9
--- /dev/null
+++ b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/RestTemplateConfig.java
@@ -0,0 +1,21 @@
+package com.bigfans.shippingservice.config;
+
+import org.springframework.cloud.client.loadbalancer.LoadBalanced;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.client.RestTemplate;
+
+/**
+ * @author lichong
+ * @create 2018-02-14 下午5:06
+ **/
+@Configuration
+public class RestTemplateConfig {
+
+ @LoadBalanced
+ @Bean
+ public RestTemplate restTemplate(){
+ return new RestTemplate();
+ }
+
+}
diff --git a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/WebConfig.java b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/WebConfig.java
new file mode 100644
index 0000000..0659185
--- /dev/null
+++ b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/config/WebConfig.java
@@ -0,0 +1,40 @@
+package com.bigfans.shippingservice.config;
+
+import org.springframework.boot.web.servlet.FilterRegistrationBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+/**
+ * @author lichong
+ * @create 2018-02-28 下午10:25
+ **/
+@Configuration
+public class WebConfig implements WebMvcConfigurer {
+
+ @Bean
+ public FilterRegistrationBean corsFilter() {
+ UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+ CorsConfiguration config = new CorsConfiguration();
+ config.setAllowCredentials(true);
+ config.addAllowedOrigin("*");
+ config.addAllowedHeader("*");
+ config.addAllowedMethod("*");
+ source.registerCorsConfiguration("/**", config);
+ FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
+ bean.setOrder(0);
+ return bean;
+ }
+
+ @Override
+ public void addInterceptors(InterceptorRegistry registry) {
+// registry.addInterceptor(new DefaultInterceptor()).addPathPatterns("/**");
+// registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**").excludePathPatterns("/login");
+ }
+}
+
+
diff --git a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/dao/DeliveryDAO.java b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/dao/DeliveryDAO.java
new file mode 100644
index 0000000..176c14d
--- /dev/null
+++ b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/dao/DeliveryDAO.java
@@ -0,0 +1,15 @@
+package com.bigfans.shippingservice.dao;
+
+import com.bigfans.framework.dao.BaseDAO;
+import com.bigfans.shippingservice.model.Delivery;
+
+/**
+ *
+ * @Description:配送DAO操作
+ * @author lichong
+ * 2015年1月17日下午7:36:35
+ *
+ */
+public interface DeliveryDAO extends BaseDAO {
+
+}
diff --git a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/dao/impl/DeliveryDAOImpl.java b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/dao/impl/DeliveryDAOImpl.java
new file mode 100644
index 0000000..02e2546
--- /dev/null
+++ b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/dao/impl/DeliveryDAOImpl.java
@@ -0,0 +1,20 @@
+package com.bigfans.shippingservice.dao.impl;
+
+import com.bigfans.framework.dao.MybatisDAOImpl;
+import com.bigfans.shippingservice.dao.DeliveryDAO;
+import com.bigfans.shippingservice.model.Delivery;
+import org.springframework.stereotype.Repository;
+
+
+/**
+ *
+ * @Description:配送DAO操作
+ * @author lichong
+ * 2015年1月17日下午7:36:35
+ *
+ */
+@Repository(DeliveryDAOImpl.BEAN_NAME)
+public class DeliveryDAOImpl extends MybatisDAOImpl implements DeliveryDAO {
+
+ public static final String BEAN_NAME = "deliveryDAO";
+}
diff --git a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/listener/OrderListener.java b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/listener/OrderListener.java
new file mode 100644
index 0000000..850a62d
--- /dev/null
+++ b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/listener/OrderListener.java
@@ -0,0 +1,41 @@
+package com.bigfans.shippingservice.listener;
+
+import com.bigfans.framework.kafka.KafkaConsumerBean;
+import com.bigfans.framework.kafka.KafkaListener;
+import com.bigfans.model.event.payment.OrderPaidEvent;
+import com.bigfans.shippingservice.api.clients.OrderServiceClient;
+import com.bigfans.shippingservice.model.Delivery;
+import com.bigfans.shippingservice.model.Order;
+import com.bigfans.shippingservice.service.DeliveryService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component
+@KafkaConsumerBean
+public class OrderListener {
+
+ @Autowired
+ private DeliveryService deliveryService;
+ @Autowired
+ private OrderServiceClient orderServiceClient;
+
+ @KafkaListener
+ public void on(OrderPaidEvent event) {
+ try {
+ String orderId = event.getOrderId();
+ Order order = orderServiceClient.getOrder(orderId).get();
+ Delivery delivery = new Delivery();
+ delivery.setAddress(order.getAddressDetail());
+ delivery.setConsignee(order.getAddressConsignee());
+ delivery.setEmail(order.getAddressEmail());
+ delivery.setMobile(order.getAddressPhone());
+ delivery.setUserId(order.getUserId());
+ delivery.setOrderId(order.getId());
+ delivery.setFreight(order.getFreight());
+ deliveryService.create(delivery);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+}
diff --git a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/model/Delivery.java b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/model/Delivery.java
new file mode 100644
index 0000000..3722694
--- /dev/null
+++ b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/model/Delivery.java
@@ -0,0 +1,14 @@
+package com.bigfans.shippingservice.model;
+
+import com.bigfans.shippingservice.model.entity.DeliveryEntity;
+
+/**
+ *
+ * @Description: 配送
+ * @author lichong
+ * 2015年1月17日下午7:36:25
+ *
+ */
+public class Delivery extends DeliveryEntity {
+
+}
diff --git a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/model/Order.java b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/model/Order.java
new file mode 100644
index 0000000..8241733
--- /dev/null
+++ b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/model/Order.java
@@ -0,0 +1,41 @@
+package com.bigfans.shippingservice.model;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class Order {
+
+ protected String id;
+ protected Date createDate;
+ protected Date updateDate;
+ // 用户信息
+ protected String userId;
+ // 支付信息
+ protected String paymentId;
+ // 支付类型ID
+ protected String payMethodCode;
+ // 支付类型名称
+ protected String payMethodName;
+ // 收货地址
+ protected String addressId;
+ // 收货人
+ protected String addressConsignee;
+ // 送货详细地址
+ protected String addressDetail;
+ // 收货人电话
+ protected String addressPhone;
+ // 收货人email
+ protected String addressEmail;
+ // 留言
+ protected String note;
+ // 运费
+ protected BigDecimal freight;
+ protected Integer prodTotalQuantity;
+ // 商品总价格
+ protected BigDecimal prodTotalPrice;
+ // 总价格(计算完邮费和各种优惠后的应付款额)
+ protected BigDecimal totalPrice;
+}
diff --git a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/model/entity/DeliveryEntity.java b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/model/entity/DeliveryEntity.java
new file mode 100644
index 0000000..25e8ce5
--- /dev/null
+++ b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/model/entity/DeliveryEntity.java
@@ -0,0 +1,54 @@
+package com.bigfans.shippingservice.model.entity;
+
+import com.bigfans.framework.model.AbstractModel;
+import lombok.Data;
+
+import javax.persistence.Column;
+import javax.persistence.Table;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ *
+ * @Description:配送实体
+ * @author lichong 2014年12月14日下午4:48:01
+ *
+ */
+@Data
+@Table(name="Delivery")
+public class DeliveryEntity extends AbstractModel {
+ private static final long serialVersionUID = 5625942998949303053L;
+
+ public static final String STATUS_UNSENT = "preparing";
+ public static final String STATUS_DELIVERING = "delivering";
+ public static final String STATUS_SIGNED = "signed";
+
+ @Column(name="order_id")
+ protected String orderId;
+ @Column(name="user_id")
+ protected String userId;
+ @Column(name="address")
+ protected String address;
+ @Column(name="consignee")
+ protected String consignee;
+ @Column(name="postalcode")
+ protected String postalcode;
+ @Column(name="mobile")
+ protected String mobile;
+ @Column(name="tel")
+ protected String tel;
+ @Column(name="email")
+ protected String email;
+ @Column(name="complete_date",columnDefinition="DATETIME")
+ protected Date completeDate;
+ @Column(name="status")
+ protected String status = STATUS_UNSENT;
+ // 运费
+ @Column(name="freight")
+ protected BigDecimal freight;
+
+ public String getModule() {
+ return "Delivery";
+ }
+
+}
\ No newline at end of file
diff --git a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/service/DeliveryService.java b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/service/DeliveryService.java
new file mode 100644
index 0000000..7013046
--- /dev/null
+++ b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/service/DeliveryService.java
@@ -0,0 +1,16 @@
+package com.bigfans.shippingservice.service;
+
+import com.bigfans.framework.dao.BaseService;
+import com.bigfans.shippingservice.model.Delivery;
+
+
+/**
+ *
+ * @Description:配送服务接口
+ * @author lichong
+ * 2014年12月16日上午10:14:08
+ *
+ */
+public interface DeliveryService extends BaseService {
+
+}
diff --git a/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/service/impl/DeliveryServiceImpl.java b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/service/impl/DeliveryServiceImpl.java
new file mode 100644
index 0000000..aefb894
--- /dev/null
+++ b/bigfans-cloud-service-shipping/src/main/java/com/bigfans/shippingservice/service/impl/DeliveryServiceImpl.java
@@ -0,0 +1,26 @@
+package com.bigfans.shippingservice.service.impl;
+
+import com.bigfans.framework.dao.BaseServiceImpl;
+import com.bigfans.shippingservice.dao.DeliveryDAO;
+import com.bigfans.shippingservice.model.Delivery;
+import com.bigfans.shippingservice.service.DeliveryService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * @Description:配送服务类
+ * @author lichong
+ * 2014年12月16日上午10:13:56
+ *
+ */
+@Service(DeliveryServiceImpl.BEAN_NAME)
+public class DeliveryServiceImpl extends BaseServiceImpl implements DeliveryService {
+
+ public static final String BEAN_NAME = "deliveryService";
+
+ @Autowired
+ public DeliveryServiceImpl(DeliveryDAO deliveryDAO) {
+ super(deliveryDAO);
+ }
+}
diff --git a/bigfans-cloud-service-shipping/src/main/resources/application.yml b/bigfans-cloud-service-shipping/src/main/resources/application.yml
new file mode 100644
index 0000000..cd0eddc
--- /dev/null
+++ b/bigfans-cloud-service-shipping/src/main/resources/application.yml
@@ -0,0 +1,58 @@
+server:
+ port: 8805
+spring:
+ application:
+ name: shipping-service
+ datasource:
+ initialize: false
+# zipkin:
+# base-url: http://127.0.0.1:7002
+eureka:
+ instance:
+ instance-id: ${spring.application.name}:${server.port}
+ preferIpAddress: true
+ health-check-url-path: /application
+ status-page-url: http://${spring.cloud.client.hostname}:${server.port}/swagger-ui.html
+ client:
+ registerWithEureka: true
+ fetchRegistry: true
+ registry-fetch-interval-seconds: 20
+ serviceUrl:
+ defaultZone: http://localhost:8761/eureka/
+ eureka-server-connect-timeout-seconds: 5
+
+## master
+master:
+ datasource:
+ url: jdbc:mysql://127.0.0.1:3307/bigfans_shipping?autoReconnect=true&useUnicode=true&characterEncoding=utf8
+ username: root
+ password: admin
+ driverClassName: com.mysql.jdbc.Driver
+
+## cluster
+cluster1:
+ datasource:
+ url: jdbc:mysql://127.0.0.1:3307/bigfans_shipping?autoReconnect=true&useUnicode=true&characterEncoding=utf8
+ username: root
+ password: admin
+ driverClassName: com.mysql.jdbc.Driver
+
+## kafka
+kafka:
+ servers: 192.168.0.103:9092
+ groupId: ${spring.application.name}
+ clientId: ${spring.application.name}-client
+
+## redis
+#Redis服务器IP
+jedis:
+ host: 127.0.0.1
+#Redis的端口号
+ port: 6379
+#访问密码
+ auth:
+#控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值是8。
+ max_idle: 10
+ timeout: 1000
+#在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
+ test_on_borrow: false
\ No newline at end of file
diff --git a/bigfans-cloud-service-shipping/src/main/resources/log4j2.xml b/bigfans-cloud-service-shipping/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..db6917b
--- /dev/null
+++ b/bigfans-cloud-service-shipping/src/main/resources/log4j2.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+ %d %p %C{1.} [%t] %m%n
+
+
+
+
+ %d %p %C{1.} [%t] %m%n
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bigfans-cloud-service-user/src/main/java/com/bigfans/userservice/api/WeChatApi.java b/bigfans-cloud-service-user/src/main/java/com/bigfans/userservice/api/WeChatApi.java
new file mode 100644
index 0000000..36c8e22
--- /dev/null
+++ b/bigfans-cloud-service-user/src/main/java/com/bigfans/userservice/api/WeChatApi.java
@@ -0,0 +1,22 @@
+package com.bigfans.userservice.api;
+
+import com.bigfans.framework.web.BaseController;
+import com.bigfans.framework.web.RestResponse;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author lichong
+ * @create 2018-08-04 下午8:45
+ **/
+@RestController("/wechat")
+public class WeChatApi extends BaseController {
+
+ private String appId = "wxb394f3ec882dfc42";
+
+ @GetMapping("/exchangeOpenId")
+ public RestResponse exchangeOpenId(){
+ return RestResponse.ok();
+ }
+
+}
diff --git a/bigfans-framework/src/main/java/com/bigfans/framework/lock/DistributedLock.java b/bigfans-framework/src/main/java/com/bigfans/framework/lock/DistributedLock.java
new file mode 100644
index 0000000..0d017f4
--- /dev/null
+++ b/bigfans-framework/src/main/java/com/bigfans/framework/lock/DistributedLock.java
@@ -0,0 +1,8 @@
+package com.bigfans.framework.lock;
+
+/**
+ * @author lichong
+ * @create 2018-07-22 上午9:49
+ **/
+public interface DistributedLock {
+}
diff --git a/bigfans-framework/src/main/java/com/bigfans/framework/lock/ZookeeperDistributedLock.java b/bigfans-framework/src/main/java/com/bigfans/framework/lock/ZookeeperDistributedLock.java
new file mode 100644
index 0000000..7e19fbb
--- /dev/null
+++ b/bigfans-framework/src/main/java/com/bigfans/framework/lock/ZookeeperDistributedLock.java
@@ -0,0 +1,8 @@
+package com.bigfans.framework.lock;
+
+/**
+ * @author lichong
+ * @create 2018-07-22 上午9:49
+ **/
+public class ZookeeperDistributedLock implements DistributedLock {
+}
diff --git a/pom.xml b/pom.xml
index 6290f3b..31f22b2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,6 +23,7 @@
bigfans-cloud-service-pricing
bigfans-cloud-service-notification
bigfans-cloud-config-server
+ bigfans-cloud-service-shipping
UTF-8
@@ -37,6 +38,7 @@
6.2.2
0.9.0
3.4.2
+ 4.1.23.Final
@@ -110,6 +112,10 @@
thumbnailator
0.4.6
+
+ io.netty
+ netty-all
+
--
Gitee