From 945fbc58d315d0f66f67555d3587ee49b2bab551 Mon Sep 17 00:00:00 2001 From: tanling <ling.tan@yoho.cn> Date: Mon, 17 Sep 2018 11:25:38 +0800 Subject: [PATCH] 订单号生成 --- common/src/main/java/com/yohoufo/common/alarm/Event.java | 4 ++++ common/src/main/java/com/yohoufo/common/alarm/EventBusPublisher.java | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ common/src/main/java/com/yohoufo/common/alarm/IEventHandler.java | 6 ++++++ common/src/main/java/com/yohoufo/common/alarm/SendSmsEvent.java | 33 +++++++++++++++++++++++++++++++++ common/src/main/java/com/yohoufo/common/alarm/SmsAlarmEvent.java | 21 +++++++++++++++++++++ common/src/main/java/com/yohoufo/common/alarm/SmsAlarmEventHandler.java | 23 +++++++++++++++++++++++ common/yohoufo-fore-common.iml | 42 ++++++++++++++++++------------------------ dal/src/main/java/com/yohoufo/dal/order/SellerOrderMapper.java | 4 ++++ dal/yohoufo-fore-dal.iml | 33 +++++++++++++++++++-------------- order/src/main/java/com/yohoufo/order/common/OrderStatus.java | 37 +++++++++++++++++++++++++++++++++++++ order/src/main/java/com/yohoufo/order/constants/OrderConstant.java | 4 ++++ order/src/main/java/com/yohoufo/order/controller/ShoppingController.java | 30 +++++++++++++++++++++++++----- order/src/main/java/com/yohoufo/order/model/dto/OrderBuilder.java | 33 +++++++++++++++++++++++++++++++++ order/src/main/java/com/yohoufo/order/request/ShoppingRequest.java | 11 +++++++++++ order/src/main/java/com/yohoufo/order/response/OrderSubmitResponse.java | 15 +++++++++++++++ order/src/main/java/com/yohoufo/order/service/IOrdeCreationService.java | 13 +++++++++++++ order/src/main/java/com/yohoufo/order/service/IShoppingService.java | 11 ++++++++++- order/src/main/java/com/yohoufo/order/service/impl/OrdeCreationServiceImpl.java | 63 ++++++++++++++++++++++++++++++++++++++++++++------------------- order/src/main/java/com/yohoufo/order/service/impl/ShoppingServiceImpl.java | 56 +++++++++++++++++++++++++++++++++++++++----------------- order/src/main/java/com/yohoufo/order/service/support/codegenerator/OrderCodeGenerator.java | 27 ++++++++++++++++++++++----- order/src/main/java/com/yohoufo/order/service/support/codegenerator/OrderCodeType.java | 21 +++++++++++++++++++++ order/src/main/java/com/yohoufo/order/service/support/codegenerator/bean/CodeBitMeta.java | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ order/src/main/java/com/yohoufo/order/service/support/codegenerator/bean/CodeMeta.java | 23 +++++++++++++++++++++++ order/src/main/java/com/yohoufo/order/service/support/codegenerator/converter/IdConverterHelper.java | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ order/src/main/java/com/yohoufo/order/service/support/codegenerator/impl/OrderCodeGeneratorImpl.java | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ order/src/main/java/com/yohoufo/order/service/support/codegenerator/populater/AtomicIdPopulator.java | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ order/src/main/java/com/yohoufo/order/service/support/codegenerator/populater/IdPopulator.java | 12 ++++++++++++ order/src/main/java/com/yohoufo/order/service/support/codegenerator/timer/SimpleTimer.java | 43 +++++++++++++++++++++++++++++++++++++++++++ order/src/test/java/com/yohoufo/order/service/code/CodeTest.java | 18 ++++++++++++++++++ order/yohoufo-fore-order.iml | 84 ++++++++++++++++-------------------------------------------------------------------- payment/test/java/com/yoho/pay/IdWorker.java | 143 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ payment/yohoufo-fore-payment.iml | 46 ++++++++++++++++++++-------------------------- product/yohoufo-fore-product.iml | 36 ++++++++++++++++++++---------------- web/src/main/resources/config.properties | 2 ++ 34 files changed, 1022 insertions(+), 195 deletions(-) create mode 100644 common/src/main/java/com/yohoufo/common/alarm/Event.java create mode 100644 common/src/main/java/com/yohoufo/common/alarm/EventBusPublisher.java create mode 100644 common/src/main/java/com/yohoufo/common/alarm/IEventHandler.java create mode 100644 common/src/main/java/com/yohoufo/common/alarm/SendSmsEvent.java create mode 100644 common/src/main/java/com/yohoufo/common/alarm/SmsAlarmEvent.java create mode 100644 common/src/main/java/com/yohoufo/common/alarm/SmsAlarmEventHandler.java create mode 100644 order/src/main/java/com/yohoufo/order/common/OrderStatus.java create mode 100644 order/src/main/java/com/yohoufo/order/model/dto/OrderBuilder.java create mode 100644 order/src/main/java/com/yohoufo/order/response/OrderSubmitResponse.java create mode 100644 order/src/main/java/com/yohoufo/order/service/IOrdeCreationService.java create mode 100644 order/src/main/java/com/yohoufo/order/service/support/codegenerator/OrderCodeType.java create mode 100755 order/src/main/java/com/yohoufo/order/service/support/codegenerator/bean/CodeBitMeta.java create mode 100644 order/src/main/java/com/yohoufo/order/service/support/codegenerator/bean/CodeMeta.java create mode 100755 order/src/main/java/com/yohoufo/order/service/support/codegenerator/converter/IdConverterHelper.java create mode 100755 order/src/main/java/com/yohoufo/order/service/support/codegenerator/impl/OrderCodeGeneratorImpl.java create mode 100755 order/src/main/java/com/yohoufo/order/service/support/codegenerator/populater/AtomicIdPopulator.java create mode 100755 order/src/main/java/com/yohoufo/order/service/support/codegenerator/populater/IdPopulator.java create mode 100755 order/src/main/java/com/yohoufo/order/service/support/codegenerator/timer/SimpleTimer.java create mode 100644 order/src/test/java/com/yohoufo/order/service/code/CodeTest.java create mode 100644 payment/test/java/com/yoho/pay/IdWorker.java diff --git a/common/src/main/java/com/yohoufo/common/alarm/Event.java b/common/src/main/java/com/yohoufo/common/alarm/Event.java new file mode 100644 index 0000000..732d842 --- /dev/null +++ b/common/src/main/java/com/yohoufo/common/alarm/Event.java @@ -0,0 +1,4 @@ +package com.yohoufo.common.alarm; + +public class Event { +} \ No newline at end of file diff --git a/common/src/main/java/com/yohoufo/common/alarm/EventBusPublisher.java b/common/src/main/java/com/yohoufo/common/alarm/EventBusPublisher.java new file mode 100644 index 0000000..8d47f30 --- /dev/null +++ b/common/src/main/java/com/yohoufo/common/alarm/EventBusPublisher.java @@ -0,0 +1,51 @@ +package com.yohoufo.common.alarm; + +import com.google.common.eventbus.AsyncEventBus; +import com.google.common.eventbus.SubscriberExceptionContext; +import com.google.common.eventbus.SubscriberExceptionHandler; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeansException; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; + +import java.util.Collection; +import java.util.Map; +import java.util.concurrent.Executor; + +public class EventBusPublisher implements ApplicationContextAware { + + private final Logger logger = LoggerFactory.getLogger(EventBusPublisher.class); + + private static AsyncEventBus asyncEventBus; + + public EventBusPublisher(Executor executor) { + asyncEventBus = new AsyncEventBus(executor, new SubscriberExceptionHandler() { + @Override + public void handleException(Throwable exception, SubscriberExceptionContext context) { + logger.error("Could not dispatch event:{} to {}.{}", context.getEvent(), context.getSubscriber(), context.getSubscriberMethod(), exception); + } + }); + } + + public void register(Object handler) { + asyncEventBus.register(handler); + } + + public static void publishEvent(Object event) { + asyncEventBus.post(event); + } + + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + Map<String, IEventHandler> handlerBeans = applicationContext.getBeansOfType(IEventHandler.class); + addEventHandlers(handlerBeans.values()); + logger.info("Loaded event handler {} success.", handlerBeans); + } + + private void addEventHandlers(Collection<IEventHandler> handlers) { + for (IEventHandler handler : handlers) { + register(handler); + } + } +} \ No newline at end of file diff --git a/common/src/main/java/com/yohoufo/common/alarm/IEventHandler.java b/common/src/main/java/com/yohoufo/common/alarm/IEventHandler.java new file mode 100644 index 0000000..a4f12ef --- /dev/null +++ b/common/src/main/java/com/yohoufo/common/alarm/IEventHandler.java @@ -0,0 +1,6 @@ +package com.yohoufo.common.alarm; + +public interface IEventHandler<T extends Event> { + + void handle(T event); +} diff --git a/common/src/main/java/com/yohoufo/common/alarm/SendSmsEvent.java b/common/src/main/java/com/yohoufo/common/alarm/SendSmsEvent.java new file mode 100644 index 0000000..158546d --- /dev/null +++ b/common/src/main/java/com/yohoufo/common/alarm/SendSmsEvent.java @@ -0,0 +1,33 @@ +package com.yohoufo.common.alarm; + +import com.yoho.error.event.CommonEvent; + +public class SendSmsEvent extends CommonEvent { + + private static final long serialVersionUID = 5805800371910913724L; + + private String type;//事件类型 + private String smsContent;// 短信内容 + + public SendSmsEvent(String name, String type, String smsContent) { + super(name); + this.smsContent = smsContent; + this.type = type; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getSmsContent() { + return smsContent; + } + + public void setSmsContent(String smsContent) { + this.smsContent = smsContent; + } +} diff --git a/common/src/main/java/com/yohoufo/common/alarm/SmsAlarmEvent.java b/common/src/main/java/com/yohoufo/common/alarm/SmsAlarmEvent.java new file mode 100644 index 0000000..0ba803c --- /dev/null +++ b/common/src/main/java/com/yohoufo/common/alarm/SmsAlarmEvent.java @@ -0,0 +1,21 @@ +package com.yohoufo.common.alarm; + +import lombok.Data; +import lombok.ToString; + +@Data +@ToString +public class SmsAlarmEvent extends Event { + private String name; + private String type; + private String content; + + public SmsAlarmEvent() { + } + + public SmsAlarmEvent(String name, String type, String content) { + this.name = name; + this.type = type; + this.content = content; + } +} \ No newline at end of file diff --git a/common/src/main/java/com/yohoufo/common/alarm/SmsAlarmEventHandler.java b/common/src/main/java/com/yohoufo/common/alarm/SmsAlarmEventHandler.java new file mode 100644 index 0000000..2a68e6b --- /dev/null +++ b/common/src/main/java/com/yohoufo/common/alarm/SmsAlarmEventHandler.java @@ -0,0 +1,23 @@ +package com.yohoufo.common.alarm; + +import com.google.common.eventbus.Subscribe; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationEventPublisher; + +public class SmsAlarmEventHandler implements IEventHandler<SmsAlarmEvent> { + + private Logger logger = LoggerFactory.getLogger(getClass()); + + @Autowired + private ApplicationEventPublisher publisher; + + @Override + @Subscribe + public void handle(SmsAlarmEvent event) { + logger.info("begin to handle sms alarm event:{}", event); + publisher.publishEvent(new SendSmsEvent(event.getName(), event.getType(), event.getContent())); + logger.info("end to handle sms alarm event"); + } +} \ No newline at end of file diff --git a/common/yohoufo-fore-common.iml b/common/yohoufo-fore-common.iml index 2893e07..8ec2030 100644 --- a/common/yohoufo-fore-common.iml +++ b/common/yohoufo-fore-common.iml @@ -29,15 +29,17 @@ <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-cache:1.4.4-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: com.yoho.service.model:uic-service-model:1.4.4-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: com.yoho.service.model:social-service-model:1.4.4-SNAPSHOT" level="project" /> - <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-trace:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: com.yoho.common:error-code:1.4.5-SNAPSHOT" level="project" /> - <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.0.4" level="project" /> <orderEntry type="library" name="Maven: com.yoho.service.model:uic-service-model:1.4.5-SNAPSHOT" level="project" /> - <orderEntry type="library" name="Maven: xml-apis:xml-apis:1.0.b2" level="project" /> <orderEntry type="library" name="Maven: com.yoho.service.model:resource-service-model:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: com.yoho.service.model:users-service-model:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: com.yoho.service.model:shops-service-model:1.4.5-SNAPSHOT" level="project" /> - <orderEntry type="module" module-name="yoho-core-trace" /> + <orderEntry type="library" name="Maven: com.yoho.common:error-code:1.4.5-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.yoho.service.model:uic-service-model:1.4.5-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.yoho.service.model:resource-service-model:1.4.5-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.yoho.service.model:users-service-model:1.4.5-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.yoho.service.model:shops-service-model:1.4.5-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-trace:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: com.netflix.hystrix:hystrix-core:1.4.21" level="project" /> <orderEntry type="library" name="Maven: io.reactivex:rxjava:1.0.14" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.6.3" level="project" /> @@ -52,7 +54,7 @@ <orderEntry type="library" name="Maven: com.esotericsoftware:kryo-shaded:3.0.3" level="project" /> <orderEntry type="library" name="Maven: com.esotericsoftware:minlog:1.3.0" level="project" /> <orderEntry type="library" name="Maven: org.objenesis:objenesis:2.1" level="project" /> - <orderEntry type="module" module-name="yoho-core-config" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-config:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: com.netflix.archaius:archaius-zookeeper:0.7.3" level="project" /> <orderEntry type="library" name="Maven: org.apache.zookeeper:zookeeper:3.4.6" level="project" /> <orderEntry type="library" name="Maven: jline:jline:0.9.94" level="project" /> @@ -60,23 +62,21 @@ <orderEntry type="library" name="Maven: org.apache.curator:curator-framework:2.9.1" level="project" /> <orderEntry type="library" name="Maven: org.apache.curator:curator-client:2.9.1" level="project" /> <orderEntry type="module" module-name="error-code" /> - <orderEntry type="library" name="Maven: com.yoho.common:error-code:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-core:4.3.8.RELEASE" level="project" /> - <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-beans:4.3.8.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-context:4.3.8.RELEASE" level="project" /> <orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.13.sec01" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-test:4.3.8.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.14" level="project" /> - <orderEntry type="module" module-name="yoho-core-common" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-common:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: org.apache.curator:curator-recipes:2.9.1" level="project" /> <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.1" level="project" /> <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.3" level="project" /> <orderEntry type="library" name="Maven: net.sf.dozer:dozer:5.5.1" level="project" /> <orderEntry type="library" name="Maven: net.sf.dozer:dozer-spring:5.5.1" level="project" /> <orderEntry type="library" name="Maven: org.xerial.snappy:snappy-java:1.1.2.6" level="project" /> - <orderEntry type="module" module-name="yoho-core-redis-cluster" /> - <orderEntry type="module" module-name="yoho-core-config-client" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-redis-cluster:1.4.5-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-config-client:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: org.springframework.data:spring-data-redis:1.8.10.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.data:spring-data-keyvalue:1.2.10.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:1.13.10.RELEASE" level="project" /> @@ -94,9 +94,9 @@ <orderEntry type="library" name="Maven: com.squareup.okhttp3:okhttp:3.8.1" level="project" /> <orderEntry type="library" name="Maven: com.squareup.okio:okio:1.13.0" level="project" /> <orderEntry type="library" name="Maven: com.squareup.okhttp3:logging-interceptor:3.8.1" level="project" /> - <orderEntry type="module" module-name="yoho-core-rest-client-simple" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-rest-client-simple:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: commons-io:commons-io:2.2" level="project" /> - <orderEntry type="module" module-name="yoho-core-rest-common" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-rest-common:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-mapper-asl:1.9.13" level="project" /> <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-core-asl:1.9.13" level="project" /> <orderEntry type="library" name="Maven: io.protostuff:protostuff-core:1.4.4" level="project" /> @@ -106,13 +106,13 @@ <orderEntry type="library" name="Maven: io.netty:netty-all:4.1.6.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.6.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-common:4.1.6.Final" level="project" /> - <orderEntry type="module" module-name="yoho-core-alarm" /> - <orderEntry type="module" module-name="yoho-core-rest-governance" /> - <orderEntry type="module" module-name="yoho-core-rest-governance-model" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-alarm:1.4.5-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-rest-governance:1.4.5-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-rest-governance-model:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: org.apache.curator:curator-x-discovery:2.9.1" level="project" /> <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpasyncclient:4.1.2" level="project" /> <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore-nio:4.4.5" level="project" /> - <orderEntry type="module" module-name="yoho-core-cache" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-cache:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: net.spy:spymemcached:2.12.0" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-aop:4.3.8.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:4.3.8.RELEASE" level="project" /> @@ -142,6 +142,7 @@ <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" /> <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.5" level="project" /> <orderEntry type="library" name="Maven: commons-httpclient:commons-httpclient:3.1" level="project" /> + <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.0.4" level="project" /> <orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.1" level="project" /> <orderEntry type="library" scope="PROVIDED" name="Maven: javax.servlet:javax.servlet-api:3.1.0" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.6.3" level="project" /> @@ -160,23 +161,16 @@ <orderEntry type="library" name="Maven: javax.activation:activation:1.1" level="project" /> <orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.2" level="project" /> <orderEntry type="module" module-name="uic-service-model" /> - <orderEntry type="library" name="Maven: com.yoho.service.model:uic-service-model:1.4.5-SNAPSHOT" level="project" /> - <orderEntry type="module" module-name="uic-service-model" /> <orderEntry type="library" name="Maven: com.yoho.service.model:social-service-model:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.8.7" level="project" /> <orderEntry type="library" name="Maven: org.jdom:jdom:1.1" level="project" /> <orderEntry type="library" name="Maven: dom4j:dom4j:1.6.1" level="project" /> + <orderEntry type="library" name="Maven: xml-apis:xml-apis:1.0.b2" level="project" /> <orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk16:1.46" level="project" /> <orderEntry type="library" name="Maven: com.squareup.retrofit:retrofit:1.9.0" level="project" /> <orderEntry type="library" name="Maven: org.projectlombok:lombok:1.14.4" level="project" /> <orderEntry type="module" module-name="resource-service-model" /> <orderEntry type="module" module-name="users-service-model" /> <orderEntry type="module" module-name="shops-service-model" /> - <orderEntry type="library" name="Maven: com.yoho.service.model:resource-service-model:1.4.5-SNAPSHOT" level="project" /> - <orderEntry type="library" name="Maven: com.yoho.service.model:users-service-model:1.4.5-SNAPSHOT" level="project" /> - <orderEntry type="library" name="Maven: com.yoho.service.model:shops-service-model:1.4.5-SNAPSHOT" level="project" /> - <orderEntry type="module" module-name="resource-service-model" /> - <orderEntry type="module" module-name="users-service-model" /> - <orderEntry type="module" module-name="shops-service-model" /> </component> </module> \ No newline at end of file diff --git a/dal/src/main/java/com/yohoufo/dal/order/SellerOrderMapper.java b/dal/src/main/java/com/yohoufo/dal/order/SellerOrderMapper.java index 3853db2..07fb7a4 100644 --- a/dal/src/main/java/com/yohoufo/dal/order/SellerOrderMapper.java +++ b/dal/src/main/java/com/yohoufo/dal/order/SellerOrderMapper.java @@ -1,6 +1,7 @@ package com.yohoufo.dal.order; import com.yohoufo.dal.order.model.SellerOrder; +import org.apache.ibatis.annotations.Param; public interface SellerOrderMapper { int deleteByPrimaryKey(Integer id); @@ -11,6 +12,9 @@ public interface SellerOrderMapper { SellerOrder selectByPrimaryKey(Integer id); + + SellerOrder selectBySkup(@Param("skup") Integer skup); + int updateByPrimaryKeySelective(SellerOrder record); int updateByPrimaryKey(SellerOrder record); diff --git a/dal/yohoufo-fore-dal.iml b/dal/yohoufo-fore-dal.iml index 54ac7f2..6efc094 100644 --- a/dal/yohoufo-fore-dal.iml +++ b/dal/yohoufo-fore-dal.iml @@ -1,6 +1,11 @@ <?xml version="1.0" encoding="UTF-8"?> <module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4"> - <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8" inherit-compiler-output="false"> + <component name="FacetManager"> + <facet type="Spring" name="Spring"> + <configuration /> + </facet> + </component> + <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8"> <output url="file://$MODULE_DIR$/target/classes" /> <output-test url="file://$MODULE_DIR$/target/test-classes" /> <content url="file://$MODULE_DIR$"> @@ -12,7 +17,6 @@ <orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="library" name="Maven: com.yoho.common:error-code:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: com.yoho.service.model:uic-service-model:1.4.5-SNAPSHOT" level="project" /> - <orderEntry type="library" name="Maven: xml-apis:xml-apis:1.0.b2" level="project" /> <orderEntry type="library" name="Maven: com.yoho.service.model:resource-service-model:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: com.yoho.service.model:users-service-model:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: com.yoho.service.model:shops-service-model:1.4.5-SNAPSHOT" level="project" /> @@ -26,7 +30,7 @@ <orderEntry type="library" name="Maven: org.mybatis:mybatis:3.2.6" level="project" /> <orderEntry type="library" name="Maven: mysql:mysql-connector-java:5.1.30" level="project" /> <orderEntry type="module" module-name="yohoufo-fore-common" /> - <orderEntry type="module" module-name="yoho-core-trace" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-trace:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: com.netflix.hystrix:hystrix-core:1.4.21" level="project" /> <orderEntry type="library" name="Maven: io.reactivex:rxjava:1.0.14" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.6.3" level="project" /> @@ -44,15 +48,15 @@ <orderEntry type="library" name="Maven: org.springframework:spring-beans:4.3.8.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-context:4.3.8.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-test:4.3.8.RELEASE" level="project" /> - <orderEntry type="module" module-name="yoho-core-common" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-common:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: org.apache.curator:curator-recipes:2.9.1" level="project" /> <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.1" level="project" /> <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.3" level="project" /> <orderEntry type="library" name="Maven: net.sf.dozer:dozer:5.5.1" level="project" /> <orderEntry type="library" name="Maven: net.sf.dozer:dozer-spring:5.5.1" level="project" /> <orderEntry type="library" name="Maven: org.xerial.snappy:snappy-java:1.1.2.6" level="project" /> - <orderEntry type="module" module-name="yoho-core-redis-cluster" /> - <orderEntry type="module" module-name="yoho-core-config-client" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-redis-cluster:1.4.5-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-config-client:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: org.springframework.data:spring-data-redis:1.8.10.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.data:spring-data-keyvalue:1.2.10.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:1.13.10.RELEASE" level="project" /> @@ -69,9 +73,9 @@ <orderEntry type="library" name="Maven: com.squareup.okhttp3:okhttp:3.8.1" level="project" /> <orderEntry type="library" name="Maven: com.squareup.okio:okio:1.13.0" level="project" /> <orderEntry type="library" name="Maven: com.squareup.okhttp3:logging-interceptor:3.8.1" level="project" /> - <orderEntry type="module" module-name="yoho-core-rest-client-simple" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-rest-client-simple:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: commons-io:commons-io:2.2" level="project" /> - <orderEntry type="module" module-name="yoho-core-rest-common" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-rest-common:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-mapper-asl:1.9.13" level="project" /> <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-core-asl:1.9.13" level="project" /> <orderEntry type="library" name="Maven: io.protostuff:protostuff-core:1.4.4" level="project" /> @@ -81,13 +85,13 @@ <orderEntry type="library" name="Maven: io.netty:netty-all:4.1.6.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.6.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-common:4.1.6.Final" level="project" /> - <orderEntry type="module" module-name="yoho-core-alarm" /> - <orderEntry type="module" module-name="yoho-core-rest-governance" /> - <orderEntry type="module" module-name="yoho-core-rest-governance-model" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-alarm:1.4.5-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-rest-governance:1.4.5-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-rest-governance-model:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: org.apache.curator:curator-x-discovery:2.9.1" level="project" /> <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpasyncclient:4.1.2" level="project" /> <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore-nio:4.4.5" level="project" /> - <orderEntry type="module" module-name="yoho-core-cache" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-cache:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: net.spy:spymemcached:2.12.0" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-aop:4.3.8.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:4.3.8.RELEASE" level="project" /> @@ -134,14 +138,15 @@ <orderEntry type="library" name="Maven: com.yoho.service.model:social-service-model:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: org.jdom:jdom:1.1" level="project" /> <orderEntry type="library" name="Maven: dom4j:dom4j:1.6.1" level="project" /> + <orderEntry type="library" name="Maven: xml-apis:xml-apis:1.0.b2" level="project" /> <orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk16:1.46" level="project" /> <orderEntry type="library" name="Maven: com.squareup.retrofit:retrofit:1.9.0" level="project" /> <orderEntry type="library" name="Maven: org.projectlombok:lombok:1.14.4" level="project" /> <orderEntry type="module" module-name="resource-service-model" /> <orderEntry type="module" module-name="users-service-model" /> <orderEntry type="module" module-name="shops-service-model" /> - <orderEntry type="module" module-name="yoho-core-dal" /> - <orderEntry type="module" module-name="yoho-core-config" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-dal:1.4.5-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-config:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: com.netflix.archaius:archaius-zookeeper:0.7.3" level="project" /> <orderEntry type="library" name="Maven: org.apache.zookeeper:zookeeper:3.4.6" level="project" /> <orderEntry type="library" name="Maven: jline:jline:0.9.94" level="project" /> diff --git a/order/src/main/java/com/yohoufo/order/common/OrderStatus.java b/order/src/main/java/com/yohoufo/order/common/OrderStatus.java new file mode 100644 index 0000000..13c79b6 --- /dev/null +++ b/order/src/main/java/com/yohoufo/order/common/OrderStatus.java @@ -0,0 +1,37 @@ +package com.yohoufo.order.common; + +public enum OrderStatus { + + // 14:支付前取消,15:超时未支付取消,16:已支付,卖家发货前取消;17:客服取消 + WAITING_PAY(0, "未付款"), + HAS_PAYED(1, "已付款"), + SELLER_SEND_OUT(2, "商品调拨中(卖家发货,可查物流)"), + PLATFORM_CHECKING(3, "有货平台鉴定中"), + WAITING_RECEIVE(4, "待收货"), + DONE(5, "已完成"), + SELLER_CANCEL_BEFORE_PAY(10, "买家付款前卖家取消"), + SELLER_CANCEL_AFTER_PAY(11, "买家付款后卖家取消"), + SEND_OUT_TIMEOUT(12, "超时未发货取消"), + CHECKING_FAKE(13, "鉴定不通过取消"), + BUYER_CANCEL_BEFORE_PAY(14, "支付前取消"), + BUYER_CANCEL_TIMEOUT(15, "超时未支付取消"), + CUSTOMER_SERVICE(17, "客服取消") + ; + + int code; + + String desc; + + OrderStatus(int code, String desc) { + this.code = code; + this.desc = desc; + } + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } +} diff --git a/order/src/main/java/com/yohoufo/order/constants/OrderConstant.java b/order/src/main/java/com/yohoufo/order/constants/OrderConstant.java index a0c7c70..ea18593 100644 --- a/order/src/main/java/com/yohoufo/order/constants/OrderConstant.java +++ b/order/src/main/java/com/yohoufo/order/constants/OrderConstant.java @@ -28,5 +28,9 @@ public interface OrderConstant { String MONEY_UNIT = "元"; + String N_STR= "N"; + + String Y_STR= "Y"; + } diff --git a/order/src/main/java/com/yohoufo/order/controller/ShoppingController.java b/order/src/main/java/com/yohoufo/order/controller/ShoppingController.java index 71813c0..b458921 100644 --- a/order/src/main/java/com/yohoufo/order/controller/ShoppingController.java +++ b/order/src/main/java/com/yohoufo/order/controller/ShoppingController.java @@ -1,13 +1,16 @@ package com.yohoufo.order.controller; +import com.yohoufo.common.ApiResponse; import com.yohoufo.order.request.ShoppingRequest; +import com.yohoufo.order.response.OrderSubmitResponse; import com.yohoufo.order.response.ShoppingPaymentResponse; import com.yohoufo.order.service.IShoppingService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; @Controller @@ -21,14 +24,31 @@ public class ShoppingController { /** * 结算 - * @param shoppingRequest * @return */ - @RequestMapping("/payment") - @ResponseBody - public ShoppingPaymentResponse payment(@RequestBody ShoppingRequest shoppingRequest){ + @RequestMapping(params = "params=ufo.order.payment") + public ApiResponse payment(@RequestParam(name = "uid") int uid, + @RequestParam(name = "skup") int skup){ - return shoppingService.payment(shoppingRequest); + ShoppingPaymentResponse paymentResponse = shoppingService.payment(ShoppingRequest.builder().uid(uid).skup(skup).build()); + return new ApiResponse.ApiResponseBuilder().code(200).data(paymentResponse).message("结算成功").build(); + } + + + /** + * 提交订单成功 + * @return + */ + @RequestMapping(params = "params=ufo.order.submit") + public ApiResponse submit(@RequestParam(name = "uid") int uid, + @RequestParam(name = "skup") int skup, + @RequestParam(name = "channelNo") String channelNo, + @RequestParam(name = "addressId") String addressId, + @RequestParam(name = "clientType") String clientType){ + + ShoppingRequest request = ShoppingRequest.builder().uid(uid).skup(skup).channelNo(channelNo).clientType(clientType).addressId(addressId).build(); + OrderSubmitResponse paymentResponse = shoppingService.submit(request); + return new ApiResponse.ApiResponseBuilder().code(200).data(paymentResponse).message("提交订单SUCCESS").build(); } diff --git a/order/src/main/java/com/yohoufo/order/model/dto/OrderBuilder.java b/order/src/main/java/com/yohoufo/order/model/dto/OrderBuilder.java new file mode 100644 index 0000000..d7105ee --- /dev/null +++ b/order/src/main/java/com/yohoufo/order/model/dto/OrderBuilder.java @@ -0,0 +1,33 @@ +package com.yohoufo.order.model.dto; + + +import lombok.Data; +import lombok.ToString; +import lombok.experimental.Builder; + +import java.math.BigDecimal; + +@Data +@Builder +@ToString +public class OrderBuilder { + + int skup; + int productId; + long orderCode; + int uid; + String clientType; + int paymentType; + int deliverWay; + String channelNo; + + /** + * 实付金额 + */ + BigDecimal amount; + + /** + * 运费 + */ + BigDecimal shipFee; +} diff --git a/order/src/main/java/com/yohoufo/order/request/ShoppingRequest.java b/order/src/main/java/com/yohoufo/order/request/ShoppingRequest.java index be784c5..093beef 100644 --- a/order/src/main/java/com/yohoufo/order/request/ShoppingRequest.java +++ b/order/src/main/java/com/yohoufo/order/request/ShoppingRequest.java @@ -1,8 +1,14 @@ package com.yohoufo.order.request; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Builder; @Data +@Builder +@AllArgsConstructor +@NoArgsConstructor public class ShoppingRequest { private int skup; @@ -19,6 +25,11 @@ public class ShoppingRequest { */ private String clientType; + /** + * 渠道号 + */ + private String channelNo; + } diff --git a/order/src/main/java/com/yohoufo/order/response/OrderSubmitResponse.java b/order/src/main/java/com/yohoufo/order/response/OrderSubmitResponse.java new file mode 100644 index 0000000..0000db0 --- /dev/null +++ b/order/src/main/java/com/yohoufo/order/response/OrderSubmitResponse.java @@ -0,0 +1,15 @@ +package com.yohoufo.order.response; + + +import lombok.Data; +import lombok.experimental.Builder; + +@Data +@Builder +public class OrderSubmitResponse { + + long orderCode; + + String paymentStatus; + +} diff --git a/order/src/main/java/com/yohoufo/order/service/IOrdeCreationService.java b/order/src/main/java/com/yohoufo/order/service/IOrdeCreationService.java new file mode 100644 index 0000000..61c1fb8 --- /dev/null +++ b/order/src/main/java/com/yohoufo/order/service/IOrdeCreationService.java @@ -0,0 +1,13 @@ +package com.yohoufo.order.service; + +import com.yohoufo.order.model.dto.OrderBuilder; +import org.springframework.transaction.annotation.Transactional; + +public interface IOrdeCreationService { + + /** + * 创建订单 + * @param orderBuilder + */ + public void create(OrderBuilder orderBuilder); +} diff --git a/order/src/main/java/com/yohoufo/order/service/IShoppingService.java b/order/src/main/java/com/yohoufo/order/service/IShoppingService.java index 6fa3d79..8b9a1a8 100644 --- a/order/src/main/java/com/yohoufo/order/service/IShoppingService.java +++ b/order/src/main/java/com/yohoufo/order/service/IShoppingService.java @@ -2,14 +2,23 @@ package com.yohoufo.order.service; import com.yohoufo.order.request.ShoppingRequest; +import com.yohoufo.order.response.OrderSubmitResponse; import com.yohoufo.order.response.ShoppingPaymentResponse; public interface IShoppingService { /** * 结算页数据 + * @param request + * @return + */ + public ShoppingPaymentResponse payment(ShoppingRequest request); + + + /** + * 提交订单 * @param shoppingRequest * @return */ - public ShoppingPaymentResponse payment(ShoppingRequest shoppingRequest); + public OrderSubmitResponse submit(ShoppingRequest shoppingRequest); } diff --git a/order/src/main/java/com/yohoufo/order/service/impl/OrdeCreationServiceImpl.java b/order/src/main/java/com/yohoufo/order/service/impl/OrdeCreationServiceImpl.java index 2d446d7..42eb751 100644 --- a/order/src/main/java/com/yohoufo/order/service/impl/OrdeCreationServiceImpl.java +++ b/order/src/main/java/com/yohoufo/order/service/impl/OrdeCreationServiceImpl.java @@ -1,20 +1,25 @@ package com.yohoufo.order.service.impl; import com.yoho.core.common.utils.DateUtil; +import com.yoho.error.ServiceError; +import com.yoho.error.exception.ServiceException; +import com.yohoufo.common.caller.UfoServiceCaller; import com.yohoufo.dal.order.*; import com.yohoufo.dal.order.model.BuyerOrder; +import com.yohoufo.dal.order.model.BuyerOrderGoods; import com.yohoufo.dal.order.model.SellerOrder; import com.yohoufo.dal.order.model.SellerOrderGoods; +import com.yohoufo.order.common.OrderStatus; import com.yohoufo.order.common.SellerOrderStatus; import com.yohoufo.order.common.SkupStatus; +import com.yohoufo.order.model.dto.OrderBuilder; +import com.yohoufo.order.service.IOrdeCreationService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @Service -public class OrdeCreationServiceImpl { - - +public class OrdeCreationServiceImpl implements IOrdeCreationService { @Autowired SellerOrderGoodsMapper sellerOrderGoodsMapper; @@ -32,11 +37,16 @@ public class OrdeCreationServiceImpl { BuyerOrderMetaMapper buyerOrderMetaMapper; + @Autowired + private UfoServiceCaller serviceCaller; + + /** * 创建订单 + * @param orderBuilder */ @Transactional - public void create(int skup, int productId, long orderCode, int uid, String clientType){ + public void create(OrderBuilder orderBuilder){ try{ @@ -44,32 +54,47 @@ public class OrdeCreationServiceImpl { // 1.skup不可售 // 2.卖家订单,skup已经售出 - SellerOrderGoods sellerOrderGoods = new SellerOrderGoods(); - sellerOrderGoods.setId(skup); + sellerOrderGoods.setId(orderBuilder.getSkup()); sellerOrderGoods.setStatus((byte)SkupStatus.CAN_NOT_SELL.getCode()); sellerOrderGoodsMapper.updateByPrimaryKeySelective(sellerOrderGoods); // 根据skup 查询卖家订单 ==> 卖家uid -// SellerOrder sellerOrder = sellerOrderMapper.selectBySkup(skup); -// sellerOrder.setUpdateTime(DateUtil.getCurrentTimeSecond()); -// sellerOrder.setStatus((byte) SellerOrderStatus.HAS_SELLED.getCode()); -// sellerOrderMapper.updateByPrimaryKeySelective(sellerOrder); + SellerOrder sellerOrder = sellerOrderMapper.selectBySkup(orderBuilder.getSkup()); + sellerOrder.setUpdateTime(DateUtil.getCurrentTimeSecond()); + sellerOrder.setStatus((byte) SellerOrderStatus.HAS_SELLED.getCode()); + sellerOrderMapper.updateByPrimaryKeySelective(sellerOrder); // 订单入口 BuyerOrder buyerOrder = new BuyerOrder(); - buyerOrder.setUid(uid); - buyerOrder.setOrderCode(orderCode); -// buyerOrder.setSellerUid(sellerOrder.getUid()); -// buyerOrder.setPaymentType(); - - + buyerOrder.setUid(orderBuilder.getUid()); + buyerOrder.setOrderCode(orderBuilder.getOrderCode()); + buyerOrder.setSellerUid(sellerOrder.getUid()); + buyerOrder.setPaymentType((byte) orderBuilder.getPaymentType()); + buyerOrder.setAmount(orderBuilder.getAmount()); + buyerOrder.setShipFee(orderBuilder.getShipFee()); + buyerOrder.setChannelNo(orderBuilder.getChannelNo()); + int now = DateUtil.getCurrentTimeSecond(); + buyerOrder.setCreateTime(now); + buyerOrder.setUpdateTime(now); + buyerOrder.setStatus((byte)OrderStatus.WAITING_PAY.getCode()); buyerOrderMapper.insert(buyerOrder); - - }catch (Exception e){ - throw e; + BuyerOrderGoods buyerOrderGoods = new BuyerOrderGoods(); + buyerOrderGoods.setSkup(orderBuilder.getSkup()); + buyerOrderGoods.setOrderCode(orderBuilder.getOrderCode()); + buyerOrderGoods.setGoodsPrice(sellerOrderGoods.getGoodsPrice()); + buyerOrderGoods.setGoodsAmount(sellerOrderGoods.getGoodsPrice()); + buyerOrderGoodsMapper.insertSelective(buyerOrderGoods); + + }catch (Exception ex){ + if (!(ex instanceof ServiceException)) { + //上报告警事件 +// EventBusPublisher.publishEvent(new SmsAlarmEvent(OrderHanders.submit, "submit", "订单(" + order.getOrderCode() + ")创建失败")); + throw new ServiceException(ServiceError.SHOPPING_SUBMIT_ORDER_FAIL, ex); + } + throw ex; } } diff --git a/order/src/main/java/com/yohoufo/order/service/impl/ShoppingServiceImpl.java b/order/src/main/java/com/yohoufo/order/service/impl/ShoppingServiceImpl.java index 0c13dbf..82caf78 100644 --- a/order/src/main/java/com/yohoufo/order/service/impl/ShoppingServiceImpl.java +++ b/order/src/main/java/com/yohoufo/order/service/impl/ShoppingServiceImpl.java @@ -2,13 +2,15 @@ package com.yohoufo.order.service.impl; import com.yoho.error.ServiceError; import com.yoho.error.exception.ServiceException; -import com.yoho.service.model.consts.Constant; import com.yohoufo.dal.order.SellerOrderGoodsMapper; import com.yohoufo.dal.order.model.SellerOrderGoods; import com.yohoufo.order.common.SkupStatus; import com.yohoufo.order.constants.OrderConstant; +import com.yohoufo.order.model.dto.OrderBuilder; import com.yohoufo.order.request.ShoppingRequest; +import com.yohoufo.order.response.OrderSubmitResponse; import com.yohoufo.order.response.ShoppingPaymentResponse; +import com.yohoufo.order.service.IOrdeCreationService; import com.yohoufo.order.service.IShoppingService; import com.yohoufo.order.service.support.ShoppingSupport; import com.yohoufo.order.service.support.codegenerator.OrderCodeGenerator; @@ -34,41 +36,43 @@ public class ShoppingServiceImpl implements IShoppingService{ @Autowired OrderCodeGenerator orderCodeGenerator; + @Autowired + IOrdeCreationService ordeCreationService; + /** * 结算页数据 * @param shoppingRequest * @return */ - public ShoppingPaymentResponse payment(ShoppingRequest shoppingRequest){ + public ShoppingPaymentResponse payment(ShoppingRequest request){ // 入口参数检查 - if (shoppingRequest.getUid()<0 - || shoppingRequest.getSkup()<0){ + if (request.getSkup() < 0 || request.getUid() <0){ logger.warn("payment uid or skup is null"); // TODO throw new ServiceException(ServiceError.ORDER_REQUEST_ERROR); } // skup是否是可售状态 - SellerOrderGoods skup = sellerOrderGoodsMapper.selectByPrimaryKey(shoppingRequest.getSkup()); - if (skup == null){ - logger.warn("payment skup not exist, skup is {}", shoppingRequest.getSkup()); + SellerOrderGoods skupGood = sellerOrderGoodsMapper.selectByPrimaryKey(request.getSkup()); + if (skupGood == null){ + logger.warn("payment skup not exist, skup is {}", request.getSkup()); // TODO throw new ServiceException(ServiceError.ORDER_REQUEST_ERROR); } // 不可售 - if (skup.getStatus()!=null - && skup.getStatus().intValue() != SkupStatus.CAN_SELL.getCode()){ - logger.warn("payment skup status, skup is {}", shoppingRequest.getSkup()); + if (skupGood.getStatus()!=null + && skupGood.getStatus().intValue() != SkupStatus.CAN_SELL.getCode()){ + logger.warn("payment skup status, skup is {}", request.getSkup()); throw new ServiceException(ServiceError.ORDER_REQUEST_ERROR); } ShoppingPaymentResponse response = new ShoppingPaymentResponse(); response.setPaymentWay(shoppingSupport.getPaymentWay()); response.setDeliveryWay(shoppingSupport.getDeliverWay()); - response.setGoodsList(Arrays.asList(shoppingSupport.getGoodsInfo(skup))); - response.setPromotionFormulaList(shoppingSupport.getPromotionFormula(skup)); + response.setGoodsList(Arrays.asList(shoppingSupport.getGoodsInfo(skupGood))); + response.setPromotionFormulaList(shoppingSupport.getPromotionFormula(skupGood)); // TODO 赔偿金计算 response.setDamagesDesc(shoppingSupport.getDamagesDesc(null)); @@ -77,7 +81,12 @@ public class ShoppingServiceImpl implements IShoppingService{ } - public void submit(ShoppingRequest shoppingRequest){ + /** + * 提交订单 + * @param shoppingRequest + * @return + */ + public OrderSubmitResponse submit(ShoppingRequest shoppingRequest){ // 入口参数检查 if (shoppingRequest.getSkup() < 0 @@ -105,16 +114,29 @@ public class ShoppingServiceImpl implements IShoppingService{ } // 生成订单号 TODO - long orderCode = orderCodeGenerator.generate(); - // 减库存,skup更新成不可售,入库 + long orderCode = orderCodeGenerator.genId(); + // 减库存,skup更新成不可售,入库 + BigDecimal shipFee = new BigDecimal(OrderConstant.DELIVERY_WAY_SF_COST); + OrderBuilder orderBuilder = OrderBuilder.builder() + .uid(shoppingRequest.getUid()) + .skup(shoppingRequest.getSkup()) + .orderCode(orderCode) + .productId(skup.getProductId()) + .paymentType(OrderConstant.PAYMENT_ONLINE) + .deliverWay(OrderConstant.DELIVERY_WAY_SF) + .channelNo(shoppingRequest.getChannelNo()) + .amount(skup.getGoodsPrice().add(shipFee)) + .shipFee(shipFee) + .build(); + // 收货地址信息, 入口参数:uid, address_id TODO + ordeCreationService.create(orderBuilder); // 返回结果 - - + return OrderSubmitResponse.builder().orderCode(orderCode).paymentStatus(OrderConstant.N_STR).build(); } diff --git a/order/src/main/java/com/yohoufo/order/service/support/codegenerator/OrderCodeGenerator.java b/order/src/main/java/com/yohoufo/order/service/support/codegenerator/OrderCodeGenerator.java index 89368cf..f4b97fd 100644 --- a/order/src/main/java/com/yohoufo/order/service/support/codegenerator/OrderCodeGenerator.java +++ b/order/src/main/java/com/yohoufo/order/service/support/codegenerator/OrderCodeGenerator.java @@ -1,10 +1,27 @@ package com.yohoufo.order.service.support.codegenerator; + +import com.yohoufo.order.service.support.codegenerator.bean.CodeMeta; + +/** + * 订单号生成 + */ public interface OrderCodeGenerator { - /** - * 根据产生订单号 - * @return - */ - long generate(); + + /** + * 生成订单号 + * @param type + * @return + */ + long generate(OrderCodeType type); + + /** + * 反解 + * @param id + * @return + */ + CodeMeta expId(long id); + + } diff --git a/order/src/main/java/com/yohoufo/order/service/support/codegenerator/OrderCodeType.java b/order/src/main/java/com/yohoufo/order/service/support/codegenerator/OrderCodeType.java new file mode 100644 index 0000000..f3b1e33 --- /dev/null +++ b/order/src/main/java/com/yohoufo/order/service/support/codegenerator/OrderCodeType.java @@ -0,0 +1,21 @@ +package com.yohoufo.order.service.support.codegenerator; + +public enum OrderCodeType { + + SELLER_TYPE(0), + BUYER_TYPE(1); + + int type; + + OrderCodeType(int type) { + this.type = type; + } + + public int getType() { + return type; + } + + public void setType(int type) { + this.type = type; + } +} diff --git a/order/src/main/java/com/yohoufo/order/service/support/codegenerator/bean/CodeBitMeta.java b/order/src/main/java/com/yohoufo/order/service/support/codegenerator/bean/CodeBitMeta.java new file mode 100755 index 0000000..72d3160 --- /dev/null +++ b/order/src/main/java/com/yohoufo/order/service/support/codegenerator/bean/CodeBitMeta.java @@ -0,0 +1,66 @@ +package com.yohoufo.order.service.support.codegenerator.bean; + + +import lombok.Data; + +/** + * 生成订单号bit元数据 + * 订单号: + * 1位: 类型(标识是卖家订单号or买家订单号) + * 30位: 时间戳(秒级时间) 2的30次方/60/6024/365=34,也就是说可以用30年 + * 10位: 序列号, 也就是说 每秒支持1K多的id + * 3位: 服务节点,支持8个服务节点 + */ +@Data +public class CodeBitMeta { + + /** + * 类型 + */ + private byte typeBits = 1; + + + /** + * 时间戳 + */ + private byte timeBits = 30; + + /** + * 序列号 + */ + private byte seqBits = 10; + + /** + * 机器位 + */ + private byte machineBits = 3; + + + public long getMachineBitsMask() { + return -1L ^ -1L << machineBits; + } + + public long getSeqBitsStartPos() { + return machineBits; + } + + public long getSeqBitsMask() { + return -1L ^ (-1L << seqBits); + } + + public long getTimeBitsStartPos() { + return machineBits + seqBits; + } + + public long getTimeBitsMask() { + return -1L ^ (-1L << timeBits); + } + + public long getTypeBitsStartPos() { + return machineBits + seqBits + timeBits; + } + + public long getTypeBitsMask() { + return -1L ^ (-1L << typeBits); + } +} \ No newline at end of file diff --git a/order/src/main/java/com/yohoufo/order/service/support/codegenerator/bean/CodeMeta.java b/order/src/main/java/com/yohoufo/order/service/support/codegenerator/bean/CodeMeta.java new file mode 100644 index 0000000..3ef95e7 --- /dev/null +++ b/order/src/main/java/com/yohoufo/order/service/support/codegenerator/bean/CodeMeta.java @@ -0,0 +1,23 @@ +package com.yohoufo.order.service.support.codegenerator.bean; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.ToString; + +import java.io.Serializable; + +@Data +@ToString +@NoArgsConstructor +@AllArgsConstructor +public class CodeMeta implements Serializable { + + private static final long serialVersionUID = 6870931236218221183L; + + private long machine; + private long seq; + private long time; + private long type; + +} diff --git a/order/src/main/java/com/yohoufo/order/service/support/codegenerator/converter/IdConverterHelper.java b/order/src/main/java/com/yohoufo/order/service/support/codegenerator/converter/IdConverterHelper.java new file mode 100755 index 0000000..f689d4f --- /dev/null +++ b/order/src/main/java/com/yohoufo/order/service/support/codegenerator/converter/IdConverterHelper.java @@ -0,0 +1,53 @@ +package com.yohoufo.order.service.support.codegenerator.converter; + + +import com.yohoufo.order.service.support.codegenerator.bean.CodeBitMeta; +import com.yohoufo.order.service.support.codegenerator.bean.CodeMeta; + + +public class IdConverterHelper { + + + /** + * 根据元数据获取id + * @param id + * @param idBitMeta + * @return + */ + public static long convert(CodeMeta id, CodeBitMeta idBitMeta) { + long ret = 0; + + ret |= id.getMachine(); + + ret |= id.getSeq() << idBitMeta.getSeqBitsStartPos(); + + ret |= id.getTime() << idBitMeta.getTimeBitsStartPos(); + + ret |= id.getType() << idBitMeta.getTypeBitsStartPos(); + + return ret; + } + + /** + * 根据id反解元数据 + * @param id + * @param idBitMeta + * @return + */ + public static CodeMeta convert(long id, CodeBitMeta idBitMeta) { + + CodeMeta ret = new CodeMeta(); + + ret.setMachine(id & idBitMeta.getMachineBitsMask()); + + ret.setSeq((id >>> idBitMeta.getSeqBitsStartPos()) & idBitMeta.getSeqBitsMask()); + + ret.setTime((id >>> idBitMeta.getTimeBitsStartPos()) & idBitMeta.getTimeBitsMask()); + + ret.setType((id >>> idBitMeta.getTypeBitsStartPos()) & idBitMeta.getTypeBitsMask()); + + return ret; + } + + +} diff --git a/order/src/main/java/com/yohoufo/order/service/support/codegenerator/impl/OrderCodeGeneratorImpl.java b/order/src/main/java/com/yohoufo/order/service/support/codegenerator/impl/OrderCodeGeneratorImpl.java new file mode 100755 index 0000000..76af2bc --- /dev/null +++ b/order/src/main/java/com/yohoufo/order/service/support/codegenerator/impl/OrderCodeGeneratorImpl.java @@ -0,0 +1,87 @@ +package com.yohoufo.order.service.support.codegenerator.impl; + +import com.yohoufo.order.service.support.codegenerator.OrderCodeGenerator; +import com.yohoufo.order.service.support.codegenerator.OrderCodeType; +import com.yohoufo.order.service.support.codegenerator.bean.CodeBitMeta; +import com.yohoufo.order.service.support.codegenerator.bean.CodeMeta; +import com.yohoufo.order.service.support.codegenerator.converter.IdConverterHelper; +import com.yohoufo.order.service.support.codegenerator.populater.AtomicIdPopulator; +import com.yohoufo.order.service.support.codegenerator.timer.SimpleTimer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; + +@Component +public class OrderCodeGeneratorImpl implements OrderCodeGenerator { + + protected final Logger log = LoggerFactory.getLogger(this.getClass()); + + CodeBitMeta idBitMeta = new CodeBitMeta(); + + SimpleTimer timer ; + + AtomicIdPopulator idPopulator; + + /** + * 机器节点: 取值0-7 + */ + @Value("${env.machineId:0}") + private long machineId; + + @PostConstruct + public void init() { + + if (timer == null){ + timer = new SimpleTimer(); + } + + if (idPopulator == null){ + idPopulator = new AtomicIdPopulator(); + } + + // 3位 0~8 + validateMachineId(this.machineId); + } + + public long generate(OrderCodeType type) { + CodeMeta id = new CodeMeta(); + + id.setMachine(machineId); + id.setType(type.getType()); + + idPopulator.populateId(timer, id, idBitMeta); + + long time = id.getTime() & idBitMeta.getTimeBitsMask(); + id.setTime(time); + + long ret = IdConverterHelper.convert(id, this.idBitMeta); + + return ret; + } + + public CodeMeta expId(long id) { + return IdConverterHelper.convert(id, this.idBitMeta); + } + + + private void validateMachineId(long machineId){ + if (machineId < 0) { + log.error("The machine ID is not configured properly (" + machineId + " < 0) so that Vesta Service refuses to start."); + + throw new IllegalStateException( + "The machine ID is not configured properly (" + machineId + " < 0) so that Vesta Service refuses to start."); + + } else if (machineId >= (1 << this.idBitMeta.getMachineBits())) { + log.error("The machine ID is not configured properly (" + + machineId + " >= " + (1 << this.idBitMeta.getMachineBits()) + ") so that Vesta Service refuses to start."); + + throw new IllegalStateException("The machine ID is not configured properly (" + + machineId + " >= " + (1 << this.idBitMeta.getMachineBits()) + ") so that Vesta Service refuses to start."); + + } + } + +} \ No newline at end of file diff --git a/order/src/main/java/com/yohoufo/order/service/support/codegenerator/populater/AtomicIdPopulator.java b/order/src/main/java/com/yohoufo/order/service/support/codegenerator/populater/AtomicIdPopulator.java new file mode 100755 index 0000000..1b06fcb --- /dev/null +++ b/order/src/main/java/com/yohoufo/order/service/support/codegenerator/populater/AtomicIdPopulator.java @@ -0,0 +1,66 @@ +package com.yohoufo.order.service.support.codegenerator.populater; + + +import com.yohoufo.order.service.support.codegenerator.bean.CodeBitMeta; +import com.yohoufo.order.service.support.codegenerator.bean.CodeMeta; +import com.yohoufo.order.service.support.codegenerator.timer.SimpleTimer; + +import java.util.concurrent.atomic.AtomicReference; + +/** + * 生成秒级时间戳+序列号 + */ +public class AtomicIdPopulator implements IdPopulator { + + class Variant { + private long sequence = 0; + private long lastTimestamp = -1; + } + + private AtomicReference<Variant> variant = new AtomicReference<Variant>(new Variant()); + + public AtomicIdPopulator() { + super(); + } + + public void populateId(SimpleTimer timer, CodeMeta id, CodeBitMeta idBitMeta) { + Variant varOld, varNew; + long timestamp, sequence; + + while (true) { + + // Save the old variant + varOld = variant.get(); + + // populate the current variant + timestamp = timer.genTime(); + timer.validateTimestamp(varOld.lastTimestamp, timestamp); + + sequence = varOld.sequence; + + if (timestamp == varOld.lastTimestamp) { + sequence++; + sequence &= idBitMeta.getSeqBitsMask(); + if (sequence == 0) { + timestamp = timer.tillNextTimeUnit(varOld.lastTimestamp); + } + } else { + sequence = 0; + } + + // Assign the current variant by the atomic tools + varNew = new Variant(); + varNew.sequence = sequence; + varNew.lastTimestamp = timestamp; + + if (variant.compareAndSet(varOld, varNew)) { + id.setSeq(sequence); + id.setTime(timestamp); + + break; + } + + } + } + +} diff --git a/order/src/main/java/com/yohoufo/order/service/support/codegenerator/populater/IdPopulator.java b/order/src/main/java/com/yohoufo/order/service/support/codegenerator/populater/IdPopulator.java new file mode 100755 index 0000000..ca8b019 --- /dev/null +++ b/order/src/main/java/com/yohoufo/order/service/support/codegenerator/populater/IdPopulator.java @@ -0,0 +1,12 @@ +package com.yohoufo.order.service.support.codegenerator.populater; + + +import com.yohoufo.order.service.support.codegenerator.bean.CodeBitMeta; +import com.yohoufo.order.service.support.codegenerator.bean.CodeMeta; +import com.yohoufo.order.service.support.codegenerator.timer.SimpleTimer; + +public interface IdPopulator { + + void populateId(SimpleTimer timer, CodeMeta id, CodeBitMeta idBitMeta); + +} diff --git a/order/src/main/java/com/yohoufo/order/service/support/codegenerator/timer/SimpleTimer.java b/order/src/main/java/com/yohoufo/order/service/support/codegenerator/timer/SimpleTimer.java new file mode 100755 index 0000000..908a5fa --- /dev/null +++ b/order/src/main/java/com/yohoufo/order/service/support/codegenerator/timer/SimpleTimer.java @@ -0,0 +1,43 @@ +package com.yohoufo.order.service.support.codegenerator.timer; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +public class SimpleTimer { + protected static final Logger log = LoggerFactory.getLogger(SimpleTimer.class); + + long EPOCH = 1420041600000L; + + public void validateTimestamp(long lastTimestamp, long timestamp) { + if (timestamp < lastTimestamp) { + if (log.isErrorEnabled()) + log.error(String + .format("Clock moved backwards. Refusing to generate id for %d second/milisecond.", + lastTimestamp - timestamp)); + + throw new IllegalStateException( + String.format( + "Clock moved backwards. Refusing to generate id for %d second/milisecond.", + lastTimestamp - timestamp)); + } + } + + public long tillNextTimeUnit(final long lastTimestamp) { + + long timestamp = genTime(); + while (timestamp <= lastTimestamp) { + timestamp = genTime(); + } + + return timestamp; + } + + public long genTime() { + long time = (System.currentTimeMillis() - EPOCH) / 1000; + return time; + } + + + +} diff --git a/order/src/test/java/com/yohoufo/order/service/code/CodeTest.java b/order/src/test/java/com/yohoufo/order/service/code/CodeTest.java new file mode 100644 index 0000000..7021223 --- /dev/null +++ b/order/src/test/java/com/yohoufo/order/service/code/CodeTest.java @@ -0,0 +1,18 @@ +package com.yohoufo.order.service.code; + +public class CodeTest { + + + public static void main(String[] args){ +// OrderCodeGenerator orderCodeGenerator = new OrderCodeGeneratorImpl(); +// +// for (int i =0; i <100 ; i++){ +// long result = orderCodeGenerator.genId(); +// System.out.println(result); +// System.out.println("反解结果: "+ orderCodeGenerator.expId(result)); +// System.out.println("========================"); +// } + + System.out.println(1<<3); + } +} diff --git a/order/yohoufo-fore-order.iml b/order/yohoufo-fore-order.iml index b18bc54..d8e91b6 100644 --- a/order/yohoufo-fore-order.iml +++ b/order/yohoufo-fore-order.iml @@ -29,21 +29,18 @@ <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-cache:1.4.4-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: com.yoho.service.model:uic-service-model:1.4.4-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: com.yoho.service.model:social-service-model:1.4.4-SNAPSHOT" level="project" /> - <orderEntry type="module" module-name="yohoufo-fore-common" /> - <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-trace:1.4.5-SNAPSHOT" level="project" /> - <orderEntry type="library" name="Maven: com.netflix.hystrix:hystrix-core:1.4.21" level="project" /> - <orderEntry type="library" name="Maven: io.reactivex:rxjava:1.0.14" level="project" /> - <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.6.3" level="project" /> <orderEntry type="library" name="Maven: com.yoho.common:error-code:1.4.5-SNAPSHOT" level="project" /> - <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.0.4" level="project" /> <orderEntry type="library" name="Maven: com.yoho.service.model:uic-service-model:1.4.5-SNAPSHOT" level="project" /> - <orderEntry type="library" name="Maven: xml-apis:xml-apis:1.0.b2" level="project" /> <orderEntry type="library" name="Maven: com.yoho.service.model:resource-service-model:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: com.yoho.service.model:users-service-model:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: com.yoho.service.model:shops-service-model:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: com.yoho.ufo.model:order-ufo-model:1.0-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.yoho.service.model:uic-service-model:1.4.5-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.yoho.service.model:resource-service-model:1.4.5-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.yoho.service.model:users-service-model:1.4.5-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.yoho.service.model:shops-service-model:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="module" module-name="yohoufo-fore-common" /> - <orderEntry type="module" module-name="yoho-core-trace" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-trace:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: org.springframework.amqp:spring-amqp:1.5.1.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-messaging:4.3.8.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.integration:spring-integration-core:4.3.8.RELEASE" level="project" /> @@ -56,32 +53,17 @@ <orderEntry type="library" name="Maven: com.esotericsoftware:minlog:1.3.0" level="project" /> <orderEntry type="library" name="Maven: org.objenesis:objenesis:2.1" level="project" /> <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-config:1.4.5-SNAPSHOT" level="project" /> - <orderEntry type="library" name="Maven: com.netflix.archaius:archaius-zookeeper:0.7.3" level="project" /> - <orderEntry type="library" name="Maven: org.apache.zookeeper:zookeeper:3.4.6" level="project" /> - <orderEntry type="library" name="Maven: jline:jline:0.9.94" level="project" /> - <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.12" level="project" /> - <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" /> - <orderEntry type="library" name="Maven: io.netty:netty:3.7.0.Final" level="project" /> - <orderEntry type="library" name="Maven: org.apache.curator:curator-framework:2.9.1" level="project" /> - <orderEntry type="library" name="Maven: org.apache.curator:curator-client:2.9.1" level="project" /> - <orderEntry type="module" module-name="error-code" /> - <orderEntry type="library" name="Maven: org.springframework:spring-core:4.3.8.RELEASE" level="project" /> - <orderEntry type="library" name="Maven: org.springframework:spring-beans:4.3.8.RELEASE" level="project" /> - <orderEntry type="library" name="Maven: org.springframework:spring-context:4.3.8.RELEASE" level="project" /> - <orderEntry type="library" name="Maven: org.springframework:spring-test:4.3.8.RELEASE" level="project" /> - <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.14" level="project" /> - <orderEntry type="module" module-name="yoho-core-config" /> <orderEntry type="library" name="Maven: org.apache.curator:curator-client:2.9.1" level="project" /> <orderEntry type="module" module-name="error-code" /> <orderEntry type="library" name="Maven: org.springframework:spring-core:4.3.8.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-beans:4.3.8.RELEASE" level="project" /> - <orderEntry type="module" module-name="yoho-core-common" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-common:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: org.apache.curator:curator-recipes:2.9.1" level="project" /> <orderEntry type="library" name="Maven: net.sf.dozer:dozer:5.5.1" level="project" /> <orderEntry type="library" name="Maven: net.sf.dozer:dozer-spring:5.5.1" level="project" /> <orderEntry type="library" name="Maven: org.xerial.snappy:snappy-java:1.1.2.6" level="project" /> - <orderEntry type="module" module-name="yoho-core-redis-cluster" /> - <orderEntry type="module" module-name="yoho-core-config-client" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-redis-cluster:1.4.5-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-config-client:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: org.springframework.data:spring-data-redis:1.8.10.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.data:spring-data-keyvalue:1.2.10.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:1.13.10.RELEASE" level="project" /> @@ -98,26 +80,7 @@ <orderEntry type="library" name="Maven: com.squareup.okhttp3:okhttp:3.8.1" level="project" /> <orderEntry type="library" name="Maven: com.squareup.okio:okio:1.13.0" level="project" /> <orderEntry type="library" name="Maven: com.squareup.okhttp3:logging-interceptor:3.8.1" level="project" /> - <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-rest-client-simple:1.4.5-SNAPSHOT" level="project" /> - <orderEntry type="library" name="Maven: commons-io:commons-io:2.2" level="project" /> - <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-rest-common:1.4.5-SNAPSHOT" level="project" /> - <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-mapper-asl:1.9.13" level="project" /> - <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-core-asl:1.9.13" level="project" /> - <orderEntry type="library" name="Maven: io.protostuff:protostuff-core:1.4.4" level="project" /> - <orderEntry type="library" name="Maven: io.protostuff:protostuff-api:1.4.4" level="project" /> - <orderEntry type="library" name="Maven: io.protostuff:protostuff-runtime:1.4.4" level="project" /> - <orderEntry type="library" name="Maven: io.protostuff:protostuff-collectionschema:1.4.4" level="project" /> - <orderEntry type="library" name="Maven: io.netty:netty-all:4.1.6.Final" level="project" /> - <orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.6.Final" level="project" /> - <orderEntry type="library" name="Maven: io.netty:netty-common:4.1.6.Final" level="project" /> - <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-alarm:1.4.5-SNAPSHOT" level="project" /> - <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-rest-governance:1.4.5-SNAPSHOT" level="project" /> - <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-rest-governance-model:1.4.5-SNAPSHOT" level="project" /> - <orderEntry type="library" name="Maven: org.apache.curator:curator-x-discovery:2.9.1" level="project" /> - <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpasyncclient:4.1.2" level="project" /> - <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore-nio:4.4.5" level="project" /> <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-cache:1.4.5-SNAPSHOT" level="project" /> - <orderEntry type="module" module-name="yoho-core-cache" /> <orderEntry type="library" name="Maven: net.spy:spymemcached:2.12.0" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-aop:4.3.8.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:4.3.8.RELEASE" level="project" /> @@ -147,6 +110,7 @@ <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" /> <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.5" level="project" /> <orderEntry type="library" name="Maven: commons-httpclient:commons-httpclient:3.1" level="project" /> + <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.0.4" level="project" /> <orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.1" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.6.3" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.6.3" level="project" /> @@ -162,22 +126,17 @@ <orderEntry type="library" name="Maven: javax.activation:activation:1.1" level="project" /> <orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.2" level="project" /> <orderEntry type="module" module-name="uic-service-model" /> - <orderEntry type="library" name="Maven: com.yoho.service.model:uic-service-model:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: com.yoho.service.model:social-service-model:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.8.7" level="project" /> <orderEntry type="library" name="Maven: org.jdom:jdom:1.1" level="project" /> <orderEntry type="library" name="Maven: dom4j:dom4j:1.6.1" level="project" /> + <orderEntry type="library" name="Maven: xml-apis:xml-apis:1.0.b2" level="project" /> <orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk16:1.46" level="project" /> <orderEntry type="library" name="Maven: com.squareup.retrofit:retrofit:1.9.0" level="project" /> <orderEntry type="library" name="Maven: org.projectlombok:lombok:1.14.4" level="project" /> <orderEntry type="module" module-name="resource-service-model" /> <orderEntry type="module" module-name="users-service-model" /> <orderEntry type="module" module-name="shops-service-model" /> - <orderEntry type="module" module-name="order-service-model" /> - <orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.13.sec01" level="project" /> - <orderEntry type="module" module-name="product-service-model" /> - <orderEntry type="module" module-name="promotion-service-model" /> - <orderEntry type="library" scope="PROVIDED" name="Maven: javax.servlet:javax.servlet-api:3.1.0" level="project" /> <orderEntry type="module" module-name="yohoufo-fore-dal" /> <orderEntry type="library" name="Maven: org.apache.commons:commons-dbcp2:2.1.1" level="project" /> <orderEntry type="library" name="Maven: commons-dbcp:commons-dbcp:1.4" level="project" /> @@ -185,18 +144,7 @@ <orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:1.2.2" level="project" /> <orderEntry type="library" name="Maven: org.mybatis:mybatis:3.2.6" level="project" /> <orderEntry type="library" name="Maven: mysql:mysql-connector-java:5.1.30" level="project" /> - <orderEntry type="library" name="Maven: com.yoho.service.model:resource-service-model:1.4.5-SNAPSHOT" level="project" /> - <orderEntry type="library" name="Maven: com.yoho.service.model:users-service-model:1.4.5-SNAPSHOT" level="project" /> - <orderEntry type="library" name="Maven: com.yoho.service.model:shops-service-model:1.4.5-SNAPSHOT" level="project" /> - <orderEntry type="module" module-name="yohoufo-fore-dal" /> - <orderEntry type="library" name="Maven: org.apache.commons:commons-dbcp2:2.1.1" level="project" /> - <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" /> - <orderEntry type="library" name="Maven: commons-dbcp:commons-dbcp:1.4" level="project" /> - <orderEntry type="library" name="Maven: commons-pool:commons-pool:20030825.183949" level="project" /> - <orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:1.2.2" level="project" /> - <orderEntry type="library" name="Maven: org.mybatis:mybatis:3.2.6" level="project" /> - <orderEntry type="library" name="Maven: mysql:mysql-connector-java:5.1.30" level="project" /> - <orderEntry type="module" module-name="yoho-core-dal" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-dal:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-context-support:4.3.8.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:4.3.8.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.elasticsearch:elasticsearch:1.4.2" level="project" /> @@ -215,14 +163,14 @@ <orderEntry type="library" name="Maven: com.spatial4j:spatial4j:0.4.1" level="project" /> <orderEntry type="module" module-name="order-ufo-model" /> <orderEntry type="module" module-name="yohoufo-fore-product" /> - <orderEntry type="module" module-name="yoho-core-rest-client-simple" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-rest-client-simple:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-context:4.3.8.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.14" level="project" /> <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.1" level="project" /> <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.3" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-test:4.3.8.RELEASE" level="project" /> <orderEntry type="library" name="Maven: commons-io:commons-io:2.2" level="project" /> - <orderEntry type="module" module-name="yoho-core-rest-common" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-rest-common:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: org.apache.curator:curator-framework:2.9.1" level="project" /> <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-mapper-asl:1.9.13" level="project" /> <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-core-asl:1.9.13" level="project" /> @@ -233,9 +181,9 @@ <orderEntry type="library" name="Maven: io.netty:netty-all:4.1.6.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.6.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-common:4.1.6.Final" level="project" /> - <orderEntry type="module" module-name="yoho-core-alarm" /> - <orderEntry type="module" module-name="yoho-core-rest-governance" /> - <orderEntry type="module" module-name="yoho-core-rest-governance-model" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-alarm:1.4.5-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-rest-governance:1.4.5-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-rest-governance-model:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: com.netflix.archaius:archaius-zookeeper:0.7.3" level="project" /> <orderEntry type="library" name="Maven: org.apache.zookeeper:zookeeper:3.4.6" level="project" /> <orderEntry type="library" name="Maven: jline:jline:0.9.94" level="project" /> diff --git a/payment/test/java/com/yoho/pay/IdWorker.java b/payment/test/java/com/yoho/pay/IdWorker.java new file mode 100644 index 0000000..cfa06ce --- /dev/null +++ b/payment/test/java/com/yoho/pay/IdWorker.java @@ -0,0 +1,143 @@ +package com.yoho.pay; + +import com.yoho.core.common.utils.TimeUtils; + +public class IdWorker{ + + + + private long workerId; + private long datacenterId; + private long sequence=0; + + public IdWorker(long workerId, long datacenterId){ + // sanity check for workerId + if (workerId > maxWorkerId || workerId < 0) { + throw new IllegalArgumentException(String.format("worker CodeMeta can't be greater than %d or less than 0",maxWorkerId)); + } + if (datacenterId > maxDatacenterId || datacenterId < 0) { + throw new IllegalArgumentException(String.format("datacenter CodeMeta can't be greater than %d or less than 0",maxDatacenterId)); + } + System.out.printf("worker starting. timestamp left shift %d, datacenter id bits %d, worker id bits %d, sequence bits %d, workerid %d", + timestampLeftShift, datacenterIdBits, workerIdBits, sequenceBits, workerId); + + this.workerId = workerId; + this.datacenterId = datacenterId; + } + + private long twepoch = 1288834974657L; // 起始时间戳 + + // 1位(固定值0) 21位(时间戳) 2+2位(工作机器id=5位的datacenterId + 5位的workerId) 12位(序号位) + // 一共64位,2的64位,最大能表示多少啊 + + + + private long workerIdBits = 2L; + private long datacenterIdBits = 2L; + // 可以表示的最大正整数 2的N次方-1, 值为31 + private long maxWorkerId = -1L ^ (-1L << workerIdBits); + + // 可以标识的最大正整数 2的N次方-1,值为31 + private long maxDatacenterId = -1L ^ (-1L << datacenterIdBits); + private long sequenceBits = 12L; + + // 左移12位 + private long workerIdShift = sequenceBits; + // 左移 12+5位 + private long datacenterIdShift = sequenceBits + workerIdBits; + // 左移 12+5+5 位 + private long timestampLeftShift = sequenceBits + workerIdBits + datacenterIdBits; + + private long tmp = timestampLeftShift + 41L; + // 4095 2的n次方-1 + private long sequenceMask = -1L ^ (-1L << sequenceBits); + + private long tmpMask = -1L ^ (-1L << tmp);; + + private long lastTimestamp = -1L; + + public long getWorkerId(){ + return workerId; + } + + public long getDatacenterId(){ + return datacenterId; + } + + public long getTimestamp(){ + return System.currentTimeMillis(); + } + + public synchronized long nextId() { + long timestamp = timeGen(); + + if (timestamp < lastTimestamp) { + System.err.printf("clock is moving backwards. Rejecting requests until %d.", lastTimestamp); + throw new RuntimeException(String.format("Clock moved backwards. Refusing to generate id for %d milliseconds", + lastTimestamp - timestamp)); + } + + // 获取当前时间,如果此刻的毫秒和 上次的毫秒是同一个时间点,则序号+1 + if (lastTimestamp == timestamp) { + // 如果原来的序号+1 以后的结果是0,则说明这一毫秒可用的序列号都用完了,sequenceMask 都为0,要结果为0, 只能说明,左边的数据是0 + // 一个数 与 一个全1的数字,不是还是等于左边的数吗? + + sequence = (sequence + 1) & sequenceMask; + if (sequence == 0) { + timestamp = tilNextMillis(lastTimestamp); + } + } else { + sequence = 0; + } + + lastTimestamp = timestamp; + // 最后返回 返回的结果如下: + return + (((timestamp - twepoch) << timestampLeftShift) & tmpMask)| + (datacenterId << datacenterIdShift) | + (workerId << workerIdShift) | + sequence; + } + + private long tilNextMillis(long lastTimestamp) { + // 等待下一个毫秒 + long timestamp = timeGen(); + while (timestamp <= lastTimestamp) { + timestamp = timeGen(); + } + return timestamp; + } + + private long timeGen(){ + + return System.currentTimeMillis(); + } + + //---------------测试--------------- + public static void main(String[] args) { +// IdWorker worker = new IdWorker(1,1); +// for (int i = 0; i < 30; i++) { +// System.out.println(worker.nextId()); +// } + + // 现在的生成结果 + // 1041255103765549057 + + + + // 生成一个时间错 左移22位, long 64位,左移以后超过64位的都被只设置未0, 毫秒需要41位来表示吗 + // xxxxxx + // 00000000xxxxxxx22位 则相当于时间戳位 有20位 + // 与 位数最高位,全一的数据与一下 ====> 超过最高位的左边都会与成0,从而将数限制在范围内 + + + + System.out.println((System.currentTimeMillis() - 1288834974657L)<<22); + +// // 1000000000010 +// // 0111111111111 +// // 这样起到的作用,将位数超过的高位直接设置成0了,保证数据在 指定的位数之内,防止位数溢出 +// System.out.println(4095 & 4098); + } + +} \ No newline at end of file diff --git a/payment/yohoufo-fore-payment.iml b/payment/yohoufo-fore-payment.iml index a172df2..72b2fe2 100644 --- a/payment/yohoufo-fore-payment.iml +++ b/payment/yohoufo-fore-payment.iml @@ -11,7 +11,7 @@ <content url="file://$MODULE_DIR$"> <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/test/java" isTestSource="true" /> <excludeFolder url="file://$MODULE_DIR$/target" /> </content> <orderEntry type="inheritedJdk" /> @@ -29,17 +29,19 @@ <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-cache:1.4.4-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: com.yoho.service.model:uic-service-model:1.4.4-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: com.yoho.service.model:social-service-model:1.4.4-SNAPSHOT" level="project" /> - <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-trace:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: com.yoho.common:error-code:1.4.5-SNAPSHOT" level="project" /> - <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.0.4" level="project" /> <orderEntry type="library" name="Maven: com.yoho.service.model:uic-service-model:1.4.5-SNAPSHOT" level="project" /> - <orderEntry type="library" name="Maven: xml-apis:xml-apis:1.0.b2" level="project" /> <orderEntry type="library" name="Maven: com.yoho.service.model:resource-service-model:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: com.yoho.service.model:users-service-model:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: com.yoho.service.model:shops-service-model:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: com.yoho.ufo.model:order-ufo-model:1.0-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.yoho.common:error-code:1.4.5-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.yoho.service.model:uic-service-model:1.4.5-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.yoho.service.model:resource-service-model:1.4.5-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.yoho.service.model:users-service-model:1.4.5-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.yoho.service.model:shops-service-model:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="module" module-name="yohoufo-fore-common" /> - <orderEntry type="module" module-name="yoho-core-trace" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-trace:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: com.netflix.hystrix:hystrix-core:1.4.21" level="project" /> <orderEntry type="library" name="Maven: io.reactivex:rxjava:1.0.14" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.6.3" level="project" /> @@ -54,7 +56,7 @@ <orderEntry type="library" name="Maven: com.esotericsoftware:kryo-shaded:3.0.3" level="project" /> <orderEntry type="library" name="Maven: com.esotericsoftware:minlog:1.3.0" level="project" /> <orderEntry type="library" name="Maven: org.objenesis:objenesis:2.1" level="project" /> - <orderEntry type="module" module-name="yoho-core-config" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-config:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: com.netflix.archaius:archaius-zookeeper:0.7.3" level="project" /> <orderEntry type="library" name="Maven: org.apache.zookeeper:zookeeper:3.4.6" level="project" /> <orderEntry type="library" name="Maven: jline:jline:0.9.94" level="project" /> @@ -62,23 +64,21 @@ <orderEntry type="library" name="Maven: org.apache.curator:curator-framework:2.9.1" level="project" /> <orderEntry type="library" name="Maven: org.apache.curator:curator-client:2.9.1" level="project" /> <orderEntry type="module" module-name="error-code" /> - <orderEntry type="library" name="Maven: com.yoho.common:error-code:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-core:4.3.8.RELEASE" level="project" /> - <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-beans:4.3.8.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-context:4.3.8.RELEASE" level="project" /> <orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.13.sec01" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-test:4.3.8.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.14" level="project" /> - <orderEntry type="module" module-name="yoho-core-common" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-common:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: org.apache.curator:curator-recipes:2.9.1" level="project" /> <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.1" level="project" /> <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.3" level="project" /> <orderEntry type="library" name="Maven: net.sf.dozer:dozer:5.5.1" level="project" /> <orderEntry type="library" name="Maven: net.sf.dozer:dozer-spring:5.5.1" level="project" /> <orderEntry type="library" name="Maven: org.xerial.snappy:snappy-java:1.1.2.6" level="project" /> - <orderEntry type="module" module-name="yoho-core-redis-cluster" /> - <orderEntry type="module" module-name="yoho-core-config-client" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-redis-cluster:1.4.5-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-config-client:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: org.springframework.data:spring-data-redis:1.8.10.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.data:spring-data-keyvalue:1.2.10.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:1.13.10.RELEASE" level="project" /> @@ -96,9 +96,9 @@ <orderEntry type="library" name="Maven: com.squareup.okhttp3:okhttp:3.8.1" level="project" /> <orderEntry type="library" name="Maven: com.squareup.okio:okio:1.13.0" level="project" /> <orderEntry type="library" name="Maven: com.squareup.okhttp3:logging-interceptor:3.8.1" level="project" /> - <orderEntry type="module" module-name="yoho-core-rest-client-simple" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-rest-client-simple:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: commons-io:commons-io:2.2" level="project" /> - <orderEntry type="module" module-name="yoho-core-rest-common" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-rest-common:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-mapper-asl:1.9.13" level="project" /> <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-core-asl:1.9.13" level="project" /> <orderEntry type="library" name="Maven: io.protostuff:protostuff-core:1.4.4" level="project" /> @@ -108,13 +108,13 @@ <orderEntry type="library" name="Maven: io.netty:netty-all:4.1.6.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.6.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-common:4.1.6.Final" level="project" /> - <orderEntry type="module" module-name="yoho-core-alarm" /> - <orderEntry type="module" module-name="yoho-core-rest-governance" /> - <orderEntry type="module" module-name="yoho-core-rest-governance-model" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-alarm:1.4.5-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-rest-governance:1.4.5-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-rest-governance-model:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: org.apache.curator:curator-x-discovery:2.9.1" level="project" /> <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpasyncclient:4.1.2" level="project" /> <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore-nio:4.4.5" level="project" /> - <orderEntry type="module" module-name="yoho-core-cache" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-cache:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: net.spy:spymemcached:2.12.0" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-aop:4.3.8.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:4.3.8.RELEASE" level="project" /> @@ -144,6 +144,7 @@ <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" /> <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.5" level="project" /> <orderEntry type="library" name="Maven: commons-httpclient:commons-httpclient:3.1" level="project" /> + <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.0.4" level="project" /> <orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.1" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.6.3" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.6.3" level="project" /> @@ -159,11 +160,11 @@ <orderEntry type="library" name="Maven: javax.activation:activation:1.1" level="project" /> <orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.2" level="project" /> <orderEntry type="module" module-name="uic-service-model" /> - <orderEntry type="library" name="Maven: com.yoho.service.model:uic-service-model:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: com.yoho.service.model:social-service-model:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.8.7" level="project" /> <orderEntry type="library" name="Maven: org.jdom:jdom:1.1" level="project" /> <orderEntry type="library" name="Maven: dom4j:dom4j:1.6.1" level="project" /> + <orderEntry type="library" name="Maven: xml-apis:xml-apis:1.0.b2" level="project" /> <orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk16:1.46" level="project" /> <orderEntry type="library" name="Maven: com.squareup.retrofit:retrofit:1.9.0" level="project" /> <orderEntry type="library" name="Maven: org.projectlombok:lombok:1.14.4" level="project" /> @@ -171,13 +172,6 @@ <orderEntry type="module" module-name="users-service-model" /> <orderEntry type="module" module-name="shops-service-model" /> <orderEntry type="module" module-name="yohoufo-fore-order" /> - <orderEntry type="module" module-name="order-service-model" /> - <orderEntry type="module" module-name="product-service-model" /> - <orderEntry type="module" module-name="promotion-service-model" /> - <orderEntry type="library" name="Maven: com.yoho.service.model:resource-service-model:1.4.5-SNAPSHOT" level="project" /> - <orderEntry type="library" name="Maven: com.yoho.service.model:users-service-model:1.4.5-SNAPSHOT" level="project" /> - <orderEntry type="library" name="Maven: com.yoho.service.model:shops-service-model:1.4.5-SNAPSHOT" level="project" /> - <orderEntry type="module" module-name="yohoufo-fore-order" /> <orderEntry type="module" module-name="yohoufo-fore-dal" /> <orderEntry type="library" name="Maven: org.apache.commons:commons-dbcp2:2.1.1" level="project" /> <orderEntry type="library" name="Maven: commons-dbcp:commons-dbcp:1.4" level="project" /> @@ -185,7 +179,7 @@ <orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:1.2.2" level="project" /> <orderEntry type="library" name="Maven: org.mybatis:mybatis:3.2.6" level="project" /> <orderEntry type="library" name="Maven: mysql:mysql-connector-java:5.1.30" level="project" /> - <orderEntry type="module" module-name="yoho-core-dal" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-dal:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:4.3.8.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.elasticsearch:elasticsearch:1.4.2" level="project" /> <orderEntry type="library" name="Maven: org.apache.lucene:lucene-core:4.10.2" level="project" /> diff --git a/product/yohoufo-fore-product.iml b/product/yohoufo-fore-product.iml index 6190d30..8793026 100644 --- a/product/yohoufo-fore-product.iml +++ b/product/yohoufo-fore-product.iml @@ -1,6 +1,11 @@ <?xml version="1.0" encoding="UTF-8"?> <module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4"> - <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8" inherit-compiler-output="false"> + <component name="FacetManager"> + <facet type="Spring" name="Spring"> + <configuration /> + </facet> + </component> + <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8"> <output url="file://$MODULE_DIR$/target/classes" /> <output-test url="file://$MODULE_DIR$/target/test-classes" /> <content url="file://$MODULE_DIR$"> @@ -11,14 +16,12 @@ <orderEntry type="inheritedJdk" /> <orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="library" name="Maven: com.yoho.common:error-code:1.4.5-SNAPSHOT" level="project" /> - <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.0.4" level="project" /> <orderEntry type="library" name="Maven: com.yoho.service.model:uic-service-model:1.4.5-SNAPSHOT" level="project" /> - <orderEntry type="library" name="Maven: xml-apis:xml-apis:1.0.b2" level="project" /> <orderEntry type="library" name="Maven: com.yoho.service.model:resource-service-model:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: com.yoho.service.model:users-service-model:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: com.yoho.service.model:shops-service-model:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="module" module-name="yohoufo-fore-common" /> - <orderEntry type="module" module-name="yoho-core-trace" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-trace:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: com.netflix.hystrix:hystrix-core:1.4.21" level="project" /> <orderEntry type="library" name="Maven: io.reactivex:rxjava:1.0.14" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.6.3" level="project" /> @@ -33,7 +36,7 @@ <orderEntry type="library" name="Maven: com.esotericsoftware:kryo-shaded:3.0.3" level="project" /> <orderEntry type="library" name="Maven: com.esotericsoftware:minlog:1.3.0" level="project" /> <orderEntry type="library" name="Maven: org.objenesis:objenesis:2.1" level="project" /> - <orderEntry type="module" module-name="yoho-core-config" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-config:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: com.netflix.archaius:archaius-zookeeper:0.7.3" level="project" /> <orderEntry type="library" name="Maven: org.apache.zookeeper:zookeeper:3.4.6" level="project" /> <orderEntry type="library" name="Maven: jline:jline:0.9.94" level="project" /> @@ -49,15 +52,15 @@ <orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.13.sec01" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-test:4.3.8.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.14" level="project" /> - <orderEntry type="module" module-name="yoho-core-common" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-common:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: org.apache.curator:curator-recipes:2.9.1" level="project" /> <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.1" level="project" /> <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.3" level="project" /> <orderEntry type="library" name="Maven: net.sf.dozer:dozer:5.5.1" level="project" /> <orderEntry type="library" name="Maven: net.sf.dozer:dozer-spring:5.5.1" level="project" /> <orderEntry type="library" name="Maven: org.xerial.snappy:snappy-java:1.1.2.6" level="project" /> - <orderEntry type="module" module-name="yoho-core-redis-cluster" /> - <orderEntry type="module" module-name="yoho-core-config-client" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-redis-cluster:1.4.5-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-config-client:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: org.springframework.data:spring-data-redis:1.8.10.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.data:spring-data-keyvalue:1.2.10.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:1.13.10.RELEASE" level="project" /> @@ -74,9 +77,9 @@ <orderEntry type="library" name="Maven: com.squareup.okhttp3:okhttp:3.8.1" level="project" /> <orderEntry type="library" name="Maven: com.squareup.okio:okio:1.13.0" level="project" /> <orderEntry type="library" name="Maven: com.squareup.okhttp3:logging-interceptor:3.8.1" level="project" /> - <orderEntry type="module" module-name="yoho-core-rest-client-simple" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-rest-client-simple:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: commons-io:commons-io:2.2" level="project" /> - <orderEntry type="module" module-name="yoho-core-rest-common" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-rest-common:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-mapper-asl:1.9.13" level="project" /> <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-core-asl:1.9.13" level="project" /> <orderEntry type="library" name="Maven: io.protostuff:protostuff-core:1.4.4" level="project" /> @@ -86,13 +89,13 @@ <orderEntry type="library" name="Maven: io.netty:netty-all:4.1.6.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.6.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-common:4.1.6.Final" level="project" /> - <orderEntry type="module" module-name="yoho-core-alarm" /> - <orderEntry type="module" module-name="yoho-core-rest-governance" /> - <orderEntry type="module" module-name="yoho-core-rest-governance-model" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-alarm:1.4.5-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-rest-governance:1.4.5-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-rest-governance-model:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: org.apache.curator:curator-x-discovery:2.9.1" level="project" /> <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpasyncclient:4.1.2" level="project" /> <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore-nio:4.4.5" level="project" /> - <orderEntry type="module" module-name="yoho-core-cache" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-cache:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: net.spy:spymemcached:2.12.0" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-aop:4.3.8.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:4.3.8.RELEASE" level="project" /> @@ -122,6 +125,7 @@ <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" /> <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.5" level="project" /> <orderEntry type="library" name="Maven: commons-httpclient:commons-httpclient:3.1" level="project" /> + <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.0.4" level="project" /> <orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.1" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.6.3" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.6.3" level="project" /> @@ -141,6 +145,7 @@ <orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.8.7" level="project" /> <orderEntry type="library" name="Maven: org.jdom:jdom:1.1" level="project" /> <orderEntry type="library" name="Maven: dom4j:dom4j:1.6.1" level="project" /> + <orderEntry type="library" name="Maven: xml-apis:xml-apis:1.0.b2" level="project" /> <orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk16:1.46" level="project" /> <orderEntry type="library" name="Maven: com.squareup.retrofit:retrofit:1.9.0" level="project" /> <orderEntry type="library" name="Maven: org.projectlombok:lombok:1.14.4" level="project" /> @@ -150,13 +155,12 @@ <orderEntry type="library" scope="PROVIDED" name="Maven: javax.servlet:javax.servlet-api:3.1.0" level="project" /> <orderEntry type="module" module-name="yohoufo-fore-dal" /> <orderEntry type="library" name="Maven: org.apache.commons:commons-dbcp2:2.1.1" level="project" /> - <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" /> <orderEntry type="library" name="Maven: commons-dbcp:commons-dbcp:1.4" level="project" /> <orderEntry type="library" name="Maven: commons-pool:commons-pool:20030825.183949" level="project" /> <orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:1.2.2" level="project" /> <orderEntry type="library" name="Maven: org.mybatis:mybatis:3.2.6" level="project" /> <orderEntry type="library" name="Maven: mysql:mysql-connector-java:5.1.30" level="project" /> - <orderEntry type="module" module-name="yoho-core-dal" /> + <orderEntry type="library" name="Maven: com.yoho.core:yoho-core-dal:1.4.5-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-context-support:4.3.8.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:4.3.8.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.elasticsearch:elasticsearch:1.4.2" level="project" /> diff --git a/web/src/main/resources/config.properties b/web/src/main/resources/config.properties index 9ffde86..f8c3a81 100644 --- a/web/src/main/resources/config.properties +++ b/web/src/main/resources/config.properties @@ -63,3 +63,5 @@ sdk.instanceName=yohopic yoho.recovery.zkPath=/yh/config/recovery + +env.machineId=0 -- libgit2 0.24.0