From 71066ded98cf682b5ff02ba5d70b77b354e1e0ed Mon Sep 17 00:00:00 2001 From: QAIU <736226400@qq.com> Date: Thu, 10 Aug 2023 14:54:45 +0800 Subject: [PATCH] =?UTF-8?q?core=E6=A1=86=E6=9E=B6=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/qaiu/db/ddl/CreateTable.java | 4 +-- .../java/cn/qaiu/db/pool/JDBCPoolInit.java | 2 +- core/pom.xml | 3 +- .../src/main/java/cn/qaiu/vx/core/Deploy.java | 19 ++++++------ .../vx/core/annotaions/InterceptorConfig.java | 23 ++++++++++++++ .../handlerfactory/RouterHandlerFactory.java | 12 ++++---- .../cn/qaiu/vx/core/util/ConfigConstant.java | 4 ++- .../cn/qaiu/vx/core/util/ReflectionUtil.java | 30 +++++++++++++++---- .../cn/qaiu/vx/core/util/SharedDataUtil.java | 2 +- .../qaiu/vx/core/verticle/RouterVerticle.java | 1 - .../vx/core/verticle/ServiceVerticle.java | 4 +-- .../interceptorImpl/DefaultInterceptor.java | 7 +++-- .../cn/qaiu/lz/common/model/BaseModel.java | 23 ++++++++++++++ .../cn/qaiu/lz/common/model/FileInfo.java | 16 ++++++++++ .../cn/qaiu/lz/common/model/ParserInfo.java | 5 ++++ .../cn/qaiu/lz/common/util/JsExecUtils.java | 3 +- .../lz/common}/util/SnowflakeIdWorker.java | 28 +++-------------- web-service/src/main/resources/app-dev.yml | 10 +++---- .../vx/core/util/SnowflakeIdWorkerTest.java | 30 +++++++++++++++++++ 19 files changed, 161 insertions(+), 65 deletions(-) create mode 100644 core/src/main/java/cn/qaiu/vx/core/annotaions/InterceptorConfig.java create mode 100644 web-service/src/main/java/cn/qaiu/lz/common/model/BaseModel.java create mode 100644 web-service/src/main/java/cn/qaiu/lz/common/model/FileInfo.java create mode 100644 web-service/src/main/java/cn/qaiu/lz/common/model/ParserInfo.java rename {core/src/main/java/cn/qaiu/vx/core => web-service/src/main/java/cn/qaiu/lz/common}/util/SnowflakeIdWorker.java (89%) create mode 100644 web-service/src/test/java/cn/qaiu/vx/core/util/SnowflakeIdWorkerTest.java diff --git a/core-database/src/main/java/cn/qaiu/db/ddl/CreateTable.java b/core-database/src/main/java/cn/qaiu/db/ddl/CreateTable.java index 063ad69..a039ae7 100644 --- a/core-database/src/main/java/cn/qaiu/db/ddl/CreateTable.java +++ b/core-database/src/main/java/cn/qaiu/db/ddl/CreateTable.java @@ -157,8 +157,8 @@ public class CreateTable { return sql.substring(0, sql.length() - 1) + ");\r\n"; } - public static void createTable(JDBCPool pool, String tableClassPath) { - Set> tableClassList = ReflectionUtil.getReflections(tableClassPath).getTypesAnnotatedWith(Table.class); + public static void createTable(JDBCPool pool) { + Set> tableClassList = ReflectionUtil.getReflections().getTypesAnnotatedWith(Table.class); if (tableClassList.isEmpty()) LOGGER.info("Table model class not fount"); tableClassList.forEach(clazz -> { String createTableSQL = getCreateTableSQL(clazz); diff --git a/core-database/src/main/java/cn/qaiu/db/pool/JDBCPoolInit.java b/core-database/src/main/java/cn/qaiu/db/pool/JDBCPoolInit.java index 3931192..23cca8c 100644 --- a/core-database/src/main/java/cn/qaiu/db/pool/JDBCPoolInit.java +++ b/core-database/src/main/java/cn/qaiu/db/pool/JDBCPoolInit.java @@ -92,7 +92,7 @@ public class JDBCPoolInit { private void poolInitExecute(Promise promise) { // 初始化连接池 pool = JDBCPool.pool(vertx, dbConfig); - CreateTable.createTable(pool, dbConfig.getString("tableClassPath")); + CreateTable.createTable(pool); promise.complete("init jdbc pool success"); } diff --git a/core/pom.xml b/core/pom.xml index cede9d9..9ff9aa4 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -20,6 +20,7 @@ 2.0.5 3.12.0 2.14.2 + 1.4.6 @@ -39,7 +40,7 @@ ch.qos.logback logback-classic - 1.4.6 + ${logback.version} org.slf4j diff --git a/core/src/main/java/cn/qaiu/vx/core/Deploy.java b/core/src/main/java/cn/qaiu/vx/core/Deploy.java index aea3e0e..7cac9c8 100644 --- a/core/src/main/java/cn/qaiu/vx/core/Deploy.java +++ b/core/src/main/java/cn/qaiu/vx/core/Deploy.java @@ -1,6 +1,5 @@ package cn.qaiu.vx.core; -import cn.qaiu.vx.core.util.ConfigConstant; import cn.qaiu.vx.core.util.ConfigUtil; import cn.qaiu.vx.core.util.VertxHolder; import cn.qaiu.vx.core.verticle.ReverseProxyVerticle; @@ -18,6 +17,8 @@ import java.util.Calendar; import java.util.Date; import java.util.concurrent.locks.LockSupport; +import static cn.qaiu.vx.core.util.ConfigConstant.*; + /** * vertx启动类 需要在主启动类完成回调 *
Create date 2021-05-07 10:26:54 @@ -108,10 +109,10 @@ public final class Deploy { private void deployVerticle() { tempVertx.close(); LOGGER.info("配置读取成功"); - customConfig = globalConfig.getJsonObject(ConfigConstant.CUSTOM); + customConfig = globalConfig.getJsonObject(CUSTOM); - JsonObject vertxConfig = globalConfig.getJsonObject(ConfigConstant.VERTX); - Integer vertxConfigELPS = vertxConfig.getInteger(ConfigConstant.EVENT_LOOP_POOL_SIZE); + JsonObject vertxConfig = globalConfig.getJsonObject(VERTX); + Integer vertxConfigELPS = vertxConfig.getInteger(EVENT_LOOP_POOL_SIZE); var vertxOptions = vertxConfigELPS == 0 ? new VertxOptions() : new VertxOptions(vertxConfig); @@ -122,10 +123,10 @@ public final class Deploy { VertxHolder.init(vertx); //配置保存在共享数据中 var sharedData = vertx.sharedData(); - LocalMap localMap = sharedData.getLocalMap(ConfigConstant.LOCAL); - localMap.put(ConfigConstant.GLOBAL_CONFIG, globalConfig); - localMap.put(ConfigConstant.CUSTOM_CONFIG, customConfig); - localMap.put(ConfigConstant.SERVER, globalConfig.getJsonObject(ConfigConstant.SERVER)); + LocalMap localMap = sharedData.getLocalMap(LOCAL); + localMap.put(GLOBAL_CONFIG, globalConfig); + localMap.put(CUSTOM_CONFIG, customConfig); + localMap.put(SERVER, globalConfig.getJsonObject(SERVER)); var future0 = vertx.createSharedWorkerExecutor("other-handle").executeBlocking(bch -> { handle.handle(globalConfig); bch.complete("other handle complete"); @@ -169,7 +170,7 @@ public final class Deploy { * @return Deployment Options */ private DeploymentOptions getWorkDeploymentOptions(String name) { - return getWorkDeploymentOptions(name, customConfig.getInteger(ConfigConstant.ASYNC_SERVICE_INSTANCES)); + return getWorkDeploymentOptions(name, customConfig.getInteger(ASYNC_SERVICE_INSTANCES)); } private DeploymentOptions getWorkDeploymentOptions(String name, int ins) { diff --git a/core/src/main/java/cn/qaiu/vx/core/annotaions/InterceptorConfig.java b/core/src/main/java/cn/qaiu/vx/core/annotaions/InterceptorConfig.java new file mode 100644 index 0000000..d158d46 --- /dev/null +++ b/core/src/main/java/cn/qaiu/vx/core/annotaions/InterceptorConfig.java @@ -0,0 +1,23 @@ +package cn.qaiu.vx.core.annotaions; + +import java.lang.annotation.*; + +/** + * 拦截器配置注解 + * 正则匹配拦截途径 + * + * @author QAIU + */ +@Documented +@Inherited +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface InterceptorConfig { + + String pattern() default ""; + + /** + * 注册顺序,数字越大越先注册 + */ + int order() default 0; +} diff --git a/core/src/main/java/cn/qaiu/vx/core/handlerfactory/RouterHandlerFactory.java b/core/src/main/java/cn/qaiu/vx/core/handlerfactory/RouterHandlerFactory.java index 3f3196e..49ded5a 100644 --- a/core/src/main/java/cn/qaiu/vx/core/handlerfactory/RouterHandlerFactory.java +++ b/core/src/main/java/cn/qaiu/vx/core/handlerfactory/RouterHandlerFactory.java @@ -6,6 +6,7 @@ import cn.qaiu.vx.core.annotaions.RouteMapping; import cn.qaiu.vx.core.annotaions.SockRouteMapper; import cn.qaiu.vx.core.base.BaseHttpApi; import cn.qaiu.vx.core.enums.MIMEType; +import cn.qaiu.vx.core.interceptor.Interceptor; import cn.qaiu.vx.core.model.JsonResult; import cn.qaiu.vx.core.util.*; import io.vertx.core.Future; @@ -62,10 +63,9 @@ public class RouterHandlerFactory implements BaseHttpApi { private final String gatewayPrefix; - public RouterHandlerFactory(String routerScanAddress, String gatewayPrefix) { - Objects.requireNonNull(routerScanAddress, "The router package address scan is empty."); + public RouterHandlerFactory(String gatewayPrefix) { Objects.requireNonNull(gatewayPrefix, "The gateway prefix is empty."); - reflections = ReflectionUtil.getReflections(routerScanAddress); + reflections = ReflectionUtil.getReflections(); this.gatewayPrefix = gatewayPrefix; } @@ -234,10 +234,8 @@ public class RouterHandlerFactory implements BaseHttpApi { private Handler getInterceptor() throws Throwable { // 配置拦截 Class interceptorClass = Class.forName(SharedDataUtil.getValueForCustomConfig("interceptorClassPath")); - Object handleInstance = ReflectionUtil.newWithNoParam(interceptorClass); - Method doHandle = interceptorClass.getMethod("doHandle"); - // 反射调用 - return CastUtil.cast(ReflectionUtil.invoke(doHandle, handleInstance)); + Interceptor handleInstance = (Interceptor)ReflectionUtil.newWithNoParam(interceptorClass); + return handleInstance.doHandle(); } /** diff --git a/core/src/main/java/cn/qaiu/vx/core/util/ConfigConstant.java b/core/src/main/java/cn/qaiu/vx/core/util/ConfigConstant.java index 7d84af5..656f7bd 100644 --- a/core/src/main/java/cn/qaiu/vx/core/util/ConfigConstant.java +++ b/core/src/main/java/cn/qaiu/vx/core/util/ConfigConstant.java @@ -3,11 +3,13 @@ package cn.qaiu.vx.core.util; public interface ConfigConstant { String CUSTOM = "custom"; String VERTX = "vertx"; - String EVENT_LOOP_POOL_SIZE = "eventLoopPoolSize"; String LOCAL = "local"; String SERVER = "server"; String GLOBAL_CONFIG = "globalConfig"; String CUSTOM_CONFIG = "customConfig"; String ASYNC_SERVICE_INSTANCES = "asyncServiceInstances"; + String IGNORES_REG="ignoresReg"; + + String BASE_LOCATIONS="baseLocations"; } diff --git a/core/src/main/java/cn/qaiu/vx/core/util/ReflectionUtil.java b/core/src/main/java/cn/qaiu/vx/core/util/ReflectionUtil.java index ff6a872..3178c54 100644 --- a/core/src/main/java/cn/qaiu/vx/core/util/ReflectionUtil.java +++ b/core/src/main/java/cn/qaiu/vx/core/util/ReflectionUtil.java @@ -24,6 +24,8 @@ import java.net.URL; import java.text.ParseException; import java.util.*; +import static cn.qaiu.vx.core.util.ConfigConstant.BASE_LOCATIONS; + /** * 基于org.reflection和javassist的反射工具包 * 通过包扫描实现路由地址的注解映射 @@ -33,6 +35,16 @@ import java.util.*; */ public final class ReflectionUtil { + + /** + * 以默认配置的基础包路径获取反射器 + * + * @return Reflections object + */ + public static Reflections getReflections() { + return getReflections(SharedDataUtil.getStringForCustomConfig(BASE_LOCATIONS)); + } + /** * 获取反射器 * @@ -48,6 +60,7 @@ public final class ReflectionUtil { } else { packageAddressList = Collections.singletonList(packageAddress); } + return getReflections(packageAddressList); } @@ -70,10 +83,11 @@ public final class ReflectionUtil { // 发现注解api层 没有继承父类时 这里反射一直有问题(Scanner SubTypesScanner was not configured) // 因此这里需要手动配置各种Scanner扫描器 -- https://blog.csdn.net/qq_29499107/article/details/106889781 configurationBuilder.setScanners( - Scanners.SubTypes.filterResultsBy(s -> true), //允许getAllTypes获取所有Object的子类, 不设置为false则 getAllTypes 会报错.默认为true. + Scanners.SubTypes.filterResultsBy(s -> true), //允许getAllTypes获取所有Object的子类, 不设置为false则 getAllTypes + // 会报错.默认为true. new MethodParameterNamesScanner(), //设置方法参数名称 扫描器,否则调用getConstructorParamNames 会报错 Scanners.MethodsAnnotated, //设置方法注解 扫描器, 否则getConstructorsAnnotatedWith,getMethodsAnnotatedWith 会报错 - new MemberUsageScanner(), //设置 member 扫描器,否则 getMethodUsage 会报错, 不推荐使用,有可能会报错 Caused by: java.lang.ClassCastException: javassist.bytecode.InterfaceMethodrefInfo cannot be cast to javassist.bytecode.MethodrefInfo + new MemberUsageScanner(), //设置 member 扫描器,否则 getMethodUsage 会报错 Scanners.TypesAnnotated //设置类注解 扫描器 ,否则 getTypesAnnotatedWith 会报错 ); @@ -98,7 +112,8 @@ public final class ReflectionUtil { MethodInfo methodInfo = cm.getMethodInfo(); CtClass[] parameterTypes = cm.getParameterTypes(); CodeAttribute codeAttribute = methodInfo.getCodeAttribute(); - LocalVariableAttribute attr = (LocalVariableAttribute) codeAttribute.getAttribute(LocalVariableAttribute.tag); + LocalVariableAttribute attr = + (LocalVariableAttribute) codeAttribute.getAttribute(LocalVariableAttribute.tag); boolean flag = true; boolean flag2 = cm.getModifiers() - 1 != AccessFlag.STATIC; @@ -110,7 +125,8 @@ public final class ReflectionUtil { continue; } flag = false; - paramMap.put(attr.variableName(j + (flag2 ? 1 : 0)), Pair.of(parameterAnnotations[j - k], parameterTypes[j - k])); + paramMap.put(attr.variableName(j + (flag2 ? 1 : 0)), Pair.of(parameterAnnotations[j - k], + parameterTypes[j - k])); } } catch (NotFoundException e) { e.printStackTrace(); @@ -214,7 +230,8 @@ public final class ReflectionUtil { if (ctClass.isPrimitive() || "java.util.Date".equals(ctClass.getName())) { return true; } - return ctClass.getName().matches("^java\\.lang\\.((Boolean)|(Character)|(Byte)|(Short)|(Integer)|(Long)|(Float)|(Double)|(String))$"); + return ctClass.getName().matches("^java\\.lang\\.((Boolean)|(Character)|(Byte)|(Short)|(Integer)|(Long)|" + + "(Float)|(Double)|(String))$"); } /** @@ -238,7 +255,8 @@ public final class ReflectionUtil { * @throws InstantiationException InstantiationException * @throws IllegalAccessException IllegalAccessException */ - public static T newWithNoParam(Class handler) throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException { + public static T newWithNoParam(Class handler) throws NoSuchMethodException, InvocationTargetException, + InstantiationException, IllegalAccessException { return handler.getConstructor().newInstance(); } diff --git a/core/src/main/java/cn/qaiu/vx/core/util/SharedDataUtil.java b/core/src/main/java/cn/qaiu/vx/core/util/SharedDataUtil.java index 4d59956..17690a1 100644 --- a/core/src/main/java/cn/qaiu/vx/core/util/SharedDataUtil.java +++ b/core/src/main/java/cn/qaiu/vx/core/util/SharedDataUtil.java @@ -36,7 +36,7 @@ public class SharedDataUtil { return getJsonConfig("customConfig").getJsonObject(key); } - public static String getJsonStringForCustomConfig(String key) { + public static String getStringForCustomConfig(String key) { return getJsonConfig("customConfig").getString(key); } diff --git a/core/src/main/java/cn/qaiu/vx/core/verticle/RouterVerticle.java b/core/src/main/java/cn/qaiu/vx/core/verticle/RouterVerticle.java index 607c7cc..5278ec1 100644 --- a/core/src/main/java/cn/qaiu/vx/core/verticle/RouterVerticle.java +++ b/core/src/main/java/cn/qaiu/vx/core/verticle/RouterVerticle.java @@ -23,7 +23,6 @@ public class RouterVerticle extends AbstractVerticle { private static final int port = SharedDataUtil.getValueForServerConfig("port"); private static final Router router = new RouterHandlerFactory( - SharedDataUtil.getJsonStringForCustomConfig("routerLocations"), SharedDataUtil.getJsonStringForServerConfig("contextPath")).createRouter(); private static final JsonObject globalConfig = SharedDataUtil.getJsonConfig("globalConfig"); diff --git a/core/src/main/java/cn/qaiu/vx/core/verticle/ServiceVerticle.java b/core/src/main/java/cn/qaiu/vx/core/verticle/ServiceVerticle.java index 148f0a3..8b2df50 100644 --- a/core/src/main/java/cn/qaiu/vx/core/verticle/ServiceVerticle.java +++ b/core/src/main/java/cn/qaiu/vx/core/verticle/ServiceVerticle.java @@ -3,7 +3,6 @@ package cn.qaiu.vx.core.verticle; import cn.qaiu.vx.core.annotaions.Service; import cn.qaiu.vx.core.base.BaseAsyncService; import cn.qaiu.vx.core.util.ReflectionUtil; -import cn.qaiu.vx.core.util.SharedDataUtil; import io.vertx.core.AbstractVerticle; import io.vertx.core.Promise; import io.vertx.serviceproxy.ServiceBinder; @@ -27,8 +26,7 @@ public class ServiceVerticle extends AbstractVerticle { private static final Set> handlers; static { - String handlerLocations = SharedDataUtil.getJsonStringForCustomConfig("handlerLocations"); - Reflections reflections = ReflectionUtil.getReflections(handlerLocations); + Reflections reflections = ReflectionUtil.getReflections(); handlers = reflections.getTypesAnnotatedWith(Service.class); } diff --git a/web-service/src/main/java/cn/qaiu/lz/common/interceptorImpl/DefaultInterceptor.java b/web-service/src/main/java/cn/qaiu/lz/common/interceptorImpl/DefaultInterceptor.java index 545f92e..cdc0a21 100644 --- a/web-service/src/main/java/cn/qaiu/lz/common/interceptorImpl/DefaultInterceptor.java +++ b/web-service/src/main/java/cn/qaiu/lz/common/interceptorImpl/DefaultInterceptor.java @@ -7,6 +7,8 @@ import io.vertx.core.json.JsonArray; import io.vertx.ext.web.RoutingContext; import lombok.extern.slf4j.Slf4j; +import static cn.qaiu.vx.core.util.ConfigConstant.IGNORES_REG; + /** * 默认拦截器实现 * 校验用户是否合法
@@ -15,7 +17,8 @@ import lombok.extern.slf4j.Slf4j; @Slf4j public class DefaultInterceptor implements Interceptor, BaseHttpApi { - private final JsonArray ignores = SharedDataUtil.getJsonArrayForCustomConfig("ignoresReg"); + + protected final JsonArray ignores = SharedDataUtil.getJsonArrayForCustomConfig(IGNORES_REG); @Override public void beforeHandle(RoutingContext ctx) { @@ -23,7 +26,7 @@ public class DefaultInterceptor implements Interceptor, BaseHttpApi { } @Override - public void afterHandle(RoutingContext context) { + public void afterHandle(RoutingContext ctx) { } } diff --git a/web-service/src/main/java/cn/qaiu/lz/common/model/BaseModel.java b/web-service/src/main/java/cn/qaiu/lz/common/model/BaseModel.java new file mode 100644 index 0000000..2047ff3 --- /dev/null +++ b/web-service/src/main/java/cn/qaiu/lz/common/model/BaseModel.java @@ -0,0 +1,23 @@ +package cn.qaiu.lz.common.model; + +import cn.qaiu.lz.common.util.SnowflakeIdWorker; +import lombok.Data; + +import java.util.Date; + +@Data +abstract public class BaseModel { + public static final long serialVersionUID = 1L; + + + private String id = String.valueOf(SnowflakeIdWorker.idWorker().nextId()); + + private String createBy; + + private Date createTime; + + private String updateBy; + + private Date updateTime; + +} diff --git a/web-service/src/main/java/cn/qaiu/lz/common/model/FileInfo.java b/web-service/src/main/java/cn/qaiu/lz/common/model/FileInfo.java new file mode 100644 index 0000000..0783cd9 --- /dev/null +++ b/web-service/src/main/java/cn/qaiu/lz/common/model/FileInfo.java @@ -0,0 +1,16 @@ +package cn.qaiu.lz.common.model; + +import io.vertx.core.MultiMap; + +public class FileInfo extends BaseModel { + + private String fileName; + + private String fileType; + + private Long fileSize; + + private String download; + + private MultiMap header; +} diff --git a/web-service/src/main/java/cn/qaiu/lz/common/model/ParserInfo.java b/web-service/src/main/java/cn/qaiu/lz/common/model/ParserInfo.java new file mode 100644 index 0000000..3aab398 --- /dev/null +++ b/web-service/src/main/java/cn/qaiu/lz/common/model/ParserInfo.java @@ -0,0 +1,5 @@ +package cn.qaiu.lz.common.model; + +public class ParserInfo { + +} diff --git a/web-service/src/main/java/cn/qaiu/lz/common/util/JsExecUtils.java b/web-service/src/main/java/cn/qaiu/lz/common/util/JsExecUtils.java index 501598e..9825488 100644 --- a/web-service/src/main/java/cn/qaiu/lz/common/util/JsExecUtils.java +++ b/web-service/src/main/java/cn/qaiu/lz/common/util/JsExecUtils.java @@ -6,7 +6,6 @@ import javax.script.Invocable; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; -import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.net.URL; @@ -18,7 +17,7 @@ import java.net.URL; */ public class JsExecUtils { private static final String JS_PATH = "/js/ye123.js"; - private static Invocable inv; + private static final Invocable inv; // 初始化脚本引擎 static { diff --git a/core/src/main/java/cn/qaiu/vx/core/util/SnowflakeIdWorker.java b/web-service/src/main/java/cn/qaiu/lz/common/util/SnowflakeIdWorker.java similarity index 89% rename from core/src/main/java/cn/qaiu/vx/core/util/SnowflakeIdWorker.java rename to web-service/src/main/java/cn/qaiu/lz/common/util/SnowflakeIdWorker.java index 577e657..6f4b84a 100644 --- a/core/src/main/java/cn/qaiu/vx/core/util/SnowflakeIdWorker.java +++ b/web-service/src/main/java/cn/qaiu/lz/common/util/SnowflakeIdWorker.java @@ -1,4 +1,4 @@ -package cn.qaiu.vx.core.util; +package cn.qaiu.lz.common.util; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -30,6 +30,8 @@ public class SnowflakeIdWorker { // ==============================Fields=========================================== + //开始时间截 (2021-01-01) + private static final long EPOCH = 1609459200000L; /** * 机器id所占的位数 */ @@ -133,9 +135,7 @@ public class SnowflakeIdWorker { //时间截向左移22位(5+5+12) long timestampLeftShift = sequenceBits + workerIdBits + datacenterIdBits; - //开始时间截 (2021-01-01) - long twepoch = 1609459200000L; - return ((timestamp - twepoch) << timestampLeftShift) // + return ((timestamp - EPOCH) << timestampLeftShift) // | (datacenterId << datacenterIdShift) // | (workerId << sequenceBits) // | sequence; @@ -220,24 +220,4 @@ public class SnowflakeIdWorker { } return snowflakeIdWorkerCluster; } - //==============================Test============================================= - - /** - * 测试 - */ - public static void main(String[] args) { - final SnowflakeIdWorker snowflakeIdWorkerCluster = idWorkerCluster(0, 1); - final SnowflakeIdWorker idWorker = idWorker(); - for (int i = 0; i < 100; i++) { - long id = idWorker.nextId(); - System.out.println(Long.toBinaryString(id)); - System.out.println(id); - System.out.println("------------"); - id = snowflakeIdWorkerCluster.nextId(); - System.out.println(Long.toBinaryString(id)); - System.out.println(id); - System.out.println("------------\n"); - } - - } } diff --git a/web-service/src/main/resources/app-dev.yml b/web-service/src/main/resources/app-dev.yml index 14959f7..724c077 100644 --- a/web-service/src/main/resources/app-dev.yml +++ b/web-service/src/main/resources/app-dev.yml @@ -19,19 +19,19 @@ custom: # 异步服务线程数 asyncServiceInstances: 4 # server路由(controller层)所在包路径 - routerLocations: cn.qaiu.lz.web.http + baseLocations: cn.qaiu.lz # 拦截器包路径 interceptorClassPath: cn.qaiu.lz.common.interceptorImpl.DefaultInterceptor - # server层包路径 - handlerLocations: cn.qaiu.lz.web.service - # 匹配规则 + # 拦截器匹配规则 ignoresReg: - .*/login$ - .*/test.*$ - # 实体类包路径匹配正则 + + # 参数注入的实体类包路径匹配正则 (防止同名类引发歧义) entityPackagesReg: - ^cn\.qaiu\.lz\.web\.model\..* + # 数据源配置 dataSource: provider_class: io.vertx.ext.jdbc.spi.impl.HikariCPDataSourceProvider diff --git a/web-service/src/test/java/cn/qaiu/vx/core/util/SnowflakeIdWorkerTest.java b/web-service/src/test/java/cn/qaiu/vx/core/util/SnowflakeIdWorkerTest.java new file mode 100644 index 0000000..347462c --- /dev/null +++ b/web-service/src/test/java/cn/qaiu/vx/core/util/SnowflakeIdWorkerTest.java @@ -0,0 +1,30 @@ +package cn.qaiu.vx.core.util; + +import cn.qaiu.lz.common.util.SnowflakeIdWorker; +import org.junit.Test; + +public class SnowflakeIdWorkerTest { + + @Test + public void idWorker() { + final SnowflakeIdWorker idWorker = SnowflakeIdWorker.idWorker(); + for (int i = 0; i < 100; i++) { + long id = idWorker.nextId(); + System.out.println(Long.toBinaryString(id)); + System.out.println(id); + System.out.println("------------"); + } + } + + @Test + public void idWorkerCluster() { + final SnowflakeIdWorker snowflakeIdWorkerCluster = SnowflakeIdWorker.idWorkerCluster(0, 1); + for (int i = 0; i < 100; i++) { + long id = snowflakeIdWorkerCluster.nextId(); + System.out.println(Long.toBinaryString(id)); + System.out.println(id); + System.out.println("------------\n"); + } + + } +}