Authored by tanling

订单号生成

Showing 34 changed files with 1022 additions and 195 deletions
package com.yohoufo.common.alarm;
public class Event {
}
\ No newline at end of file
... ...
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
... ...
package com.yohoufo.common.alarm;
public interface IEventHandler<T extends Event> {
void handle(T event);
}
... ...
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;
}
}
... ...
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
... ...
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
... ...
... ... @@ -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
... ...
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);
... ...
<?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" />
... ...
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;
}
}
... ...
... ... @@ -28,5 +28,9 @@ public interface OrderConstant {
String MONEY_UNIT = "元";
String N_STR= "N";
String Y_STR= "Y";
}
... ...
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();
}
... ...
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;
}
... ...
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;
}
... ...
package com.yohoufo.order.response;
import lombok.Data;
import lombok.experimental.Builder;
@Data
@Builder
public class OrderSubmitResponse {
long orderCode;
String paymentStatus;
}
... ...
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);
}
... ...
... ... @@ -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);
}
... ...
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;
}
}
... ...
... ... @@ -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();
}
... ...
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);
}
... ...
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;
}
}
... ...
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
... ...
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;
}
... ...
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;
}
}
... ...
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
... ...
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;
}
}
}
}
... ...
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);
}
... ...
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;
}
}
... ...
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);
}
}
... ...
... ... @@ -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" />
... ...
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
... ...
... ... @@ -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" />
... ...
<?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" />
... ...
... ... @@ -63,3 +63,5 @@ sdk.instanceName=yohopic
yoho.recovery.zkPath=/yh/config/recovery
env.machineId=0
... ...