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