diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml
index f16c875..52a5d79 100644
--- a/ruoyi-admin/pom.xml
+++ b/ruoyi-admin/pom.xml
@@ -26,6 +26,10 @@
spring-boot-starter-test
test
+
+ org.apache.velocity
+ velocity-engine-core
+
diff --git a/ruoyi-admin/src/test/java/com/ruoyi/MongoGenerator.java b/ruoyi-admin/src/test/java/com/ruoyi/MongoGenerator.java
new file mode 100644
index 0000000..3670b76
--- /dev/null
+++ b/ruoyi-admin/src/test/java/com/ruoyi/MongoGenerator.java
@@ -0,0 +1,298 @@
+package com.ruoyi;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.collection.ListUtil;
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.io.resource.ResourceUtil;
+import cn.hutool.core.util.ArrayUtil;
+import cn.hutool.core.util.ClassUtil;
+import cn.hutool.core.util.StrUtil;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.ruoyi.common.annotation.Info;
+import lombok.Data;
+import org.apache.velocity.VelocityContext;
+import org.apache.velocity.app.VelocityEngine;
+import org.junit.jupiter.api.Test;
+import org.springframework.data.annotation.Id;
+
+import java.io.File;
+import java.io.StringWriter;
+import java.lang.reflect.Field;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+@Info
+public class MongoGenerator {
+
+ /**
+ * 输出的类的根包,扫描的实体类为该包下的mongo子包下
+ */
+ private String packageName = "com.ruoyi.jobs";
+
+ /**
+ * 模块名,类的简单名称会先去掉前面的模块名
+ */
+ private String moduleName = "jobs";
+
+ @Test
+ public void generate() throws Exception {
+
+ List entityList = scan(); //所有编写了@Info的实体类
+// List entityList = scan("JobsTag1");//编写了@Info的实体类中的某些类
+
+ System.out.println(new ObjectMapper().writerWithDefaultPrettyPrinter().writeValueAsString(entityList));
+ generate(entityList);
+ System.out.println("完成");
+ }
+
+ public void generate(List entityList) throws Exception {
+
+ File[] fs = getOutPath();
+
+ /**
+ * 工程根
+ */
+ File root = fs[0];
+ /**
+ * java包根目录
+ */
+ File javaRoot = fs[1];
+
+ for (BaseInfo entity : entityList) {
+
+
+ String code = generate("query.vm", entity, entityList);
+ new File(javaRoot, "mongo/query").mkdirs();
+ FileUtil.writeString(code, new File(javaRoot, "mongo/query/" + entity.toUpperName() + "Query.java"), "UTF-8");
+
+ code = generate("api.vm", entity, entityList);
+ new File(javaRoot, "api").mkdirs();
+ FileUtil.writeString(code, new File(javaRoot, "api/" + entity.toUpperName() + "Api.java"), "UTF-8");
+
+
+ code = generate("api.js.vm", entity, entityList);
+ new File(root, "admin-ui/src/views/" + moduleName + "/api").mkdirs();
+ FileUtil.writeString(code, new File(root, "admin-ui/src/views/" + moduleName + "/api/" + entity.toSimpleLowerName() + ".js"), "UTF-8");
+
+ code = generate("index.vue.vm", entity, entityList);
+ new File(root, "admin-ui/src/views/" + moduleName + "/" + entity.toSimpleLowerName()).mkdirs();
+ FileUtil.writeString(code, new File(root, "admin-ui/src/views/" + moduleName + "/" + entity.toSimpleLowerName() + "/index.vue"), "UTF-8");
+
+ code = generate("WAdd.vue.vm", entity, entityList);
+ new File(root, "admin-ui/src/views/" + moduleName + "/" + entity.toSimpleLowerName() + "/components").mkdirs();
+ FileUtil.writeString(code, new File(root, "admin-ui/src/views/" + moduleName + "/" + entity.toSimpleLowerName() + "/components/WAdd.vue"), "UTF-8");
+
+ code = generate("WEdit.vue.vm", entity, entityList);
+ FileUtil.writeString(code, new File(root, "admin-ui/src/views/" + moduleName + "/" + entity.toSimpleLowerName() + "/components/WEdit.vue"), "UTF-8");
+
+
+ }
+
+ String code = generate("sql.vm", null, entityList);
+ FileUtil.writeString(code, new File(root, moduleName + "-menu.sql"), "UTF-8");
+ }
+
+ /**
+ * 使用模板引擎生成代码
+ * @param template
+ * @param entity
+ * @param list
+ * @return
+ * @throws Exception
+ */
+ public String generate(String template, BaseInfo entity, List list) throws Exception {
+ VelocityEngine ve = new VelocityEngine();
+ ve.init();
+
+ VelocityContext context = new VelocityContext();
+ context.put("package", packageName);
+ context.put("entity", entity);
+ context.put("list", list);
+ context.put("moduleName", moduleName);
+ StringWriter writer = new StringWriter();
+
+ template = ResourceUtil.readUtf8Str("classpath:/generator/" + template);
+
+ ve.evaluate(context, writer, this.getClass().getName(), template);
+
+ return writer.toString();
+ }
+
+ /**
+ * 获取输出的java包源目录
+ *
+ * @return
+ */
+ public File[] getOutPath() {
+ Set paths = ClassUtil.getClassPaths(packageName);
+ if (CollUtil.isEmpty(paths) || paths.size() != 1) {
+ throw new RuntimeException("不能确定java包源目录");
+ }
+ String path = paths.iterator().next();
+ File file = new File(path.replace("/target/classes/", "/src/main/java/"));
+ File root = new File(path.substring(0, path.indexOf("/target/classes/"))).getParentFile();
+
+
+ return new File[]{root, file};
+ }
+
+ /**
+ * 扫描获取包下需要生成的实体信息
+ *
+ * @param includes 包含的类名,不填表示扫描所有
+ * @return
+ */
+ public List scan(String... includes) {
+ Info defaultInfo = MongoGenerator.class.getAnnotation(Info.class);
+ List entityList = ListUtil.list(true);
+
+ ClassUtil.scanPackageByAnnotation(packageName + ".mongo", Info.class).stream().filter(c -> {
+ if (ArrayUtil.isEmpty(includes)) {
+ return true;
+ } else {
+ return ArrayUtil.indexOf(includes, c.getSimpleName()) > -1;
+ }
+ }).forEach(entityClazz -> {
+ BaseInfo entityInfo = loadByInfo(entityClazz.getAnnotation(Info.class));
+ entityList.add(entityInfo);
+ entityInfo.setClazz(entityClazz);
+ entityInfo.setJavaName(entityClazz.getSimpleName());
+ entityInfo.setModuleName(moduleName);
+
+ entityInfo.all = Arrays.stream(entityClazz.getDeclaredFields()).map(field -> {
+ BaseInfo info = null;
+ if (field.isAnnotationPresent(Info.class)) {
+ info = loadByInfo(field.getAnnotation(Info.class));
+ } else {
+ info = loadByInfo(defaultInfo);
+ }
+ info.setClazz(field.getType());
+ info.setJavaName(field.getName());
+ info.setIsId(field.isAnnotationPresent(Id.class));
+ info.setModuleName(moduleName);
+ return info;
+ }).sorted((a, b) -> a.order - b.order).collect(Collectors.toList());
+ entityInfo.cols = entityInfo.all.stream().filter(a -> !a.isId).collect(Collectors.toList());
+ entityInfo.id = entityInfo.all.stream().filter(a -> a.isId).findFirst().get();
+ });
+ return entityList;
+ }
+
+ public BaseInfo loadByInfo(Info info) {
+ BaseInfo base = new BaseInfo();
+ base.setAdd(info.add());
+ base.setUpdate(info.update());
+ base.setShow(info.show());
+ base.setOrder(info.order());
+ base.setName(info.value());
+ if (!info.addDefault().equals("")) {
+ base.setAddDefault(info.addDefault());
+ }
+ if (!info.updateDefault().equals("")) {
+ base.setUpdateDefault(info.updateDefault());
+ }
+ if (!info.comment().equals("")) {
+ base.setComment(info.comment());
+ }
+
+ return base;
+ }
+
+
+ @Data
+ public static class BaseInfo {
+
+ public Class> clazz;
+
+ public Field field;
+
+ /**
+ * 所有字段
+ */
+ public List all;
+
+ /**
+ * 不含主键
+ */
+ public List cols;
+
+ /**
+ * 主键字段
+ */
+ public BaseInfo id;
+
+ public Boolean isId = false;
+
+ public String name;
+
+ public String javaName;
+
+ public String moduleName;
+
+ public String toUpperName() {
+ return javaName.substring(0, 1).toUpperCase() + javaName.substring(1);
+ }
+
+ /**
+ * 去掉模块名后的
+ *
+ * @return
+ */
+ public String toSimpleUpperName() {
+ String n = toLowerName();
+ if (n.startsWith(moduleName)) {
+ return n.substring(moduleName.length());
+ } else {
+ return toUpperName();
+ }
+ }
+
+
+ public String toSimpleLowerName() {
+ String n = toLowerName();
+ if (n.startsWith(moduleName)) {
+ n = n.substring(moduleName.length());
+ return n.substring(0, 1).toLowerCase() + n.substring(1);
+ } else {
+ return toLowerName();
+ }
+ }
+
+ public String toLowerName() {
+ return javaName.substring(0, 1).toLowerCase() + javaName.substring(1);
+ }
+
+ public String comment;
+
+ /**
+ * @param tabNum
+ * @return
+ */
+ public String toComment(int tabNum) {
+ if (tabNum < 0) {
+ tabNum = 0;
+ }
+ String tabs = tabNum > 0 ? String.format("%" + (tabNum * 2) + "s", "") + " * " : " * ";
+ if (StrUtil.isNotBlank(comment)) {
+ return tabs + comment.replace("\n", "\n" + tabs);
+ } else {
+ return tabs;
+ }
+ }
+
+
+ public boolean show;
+
+ public boolean add;
+ public String addDefault;
+
+ public boolean update;
+ public String updateDefault;
+
+ public int order;
+
+
+ }
+}
diff --git a/ruoyi-admin/src/test/resources/generator/WAdd.vue.vm b/ruoyi-admin/src/test/resources/generator/WAdd.vue.vm
new file mode 100644
index 0000000..f736b45
--- /dev/null
+++ b/ruoyi-admin/src/test/resources/generator/WAdd.vue.vm
@@ -0,0 +1,55 @@
+#set($a="#")
+
+
+
+#foreach($item in $entity.cols)
+#if($item.add && !$item.addDefault)
+
+
+
+#end
+#end
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ruoyi-admin/src/test/resources/generator/WEdit.vue.vm b/ruoyi-admin/src/test/resources/generator/WEdit.vue.vm
new file mode 100644
index 0000000..8adb6c2
--- /dev/null
+++ b/ruoyi-admin/src/test/resources/generator/WEdit.vue.vm
@@ -0,0 +1,59 @@
+#set($a="#")
+
+
+
+#foreach($item in $entity.all)
+#if($item.update && !$item.updateDefault && !$item.isId)
+
+
+
+#else
+
+ {{ form.${item.toLowerName()} }}
+
+#end
+#end
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ruoyi-admin/src/test/resources/generator/api.js.vm b/ruoyi-admin/src/test/resources/generator/api.js.vm
new file mode 100644
index 0000000..5462bf9
--- /dev/null
+++ b/ruoyi-admin/src/test/resources/generator/api.js.vm
@@ -0,0 +1,13 @@
+import request from '@/utils/request'
+
+const base = '/${moduleName}/${entity.toSimpleLowerName()}/'
+
+export const doAdd = (data) => request.post(base, data)
+
+export const doUpdate = (data) => request.put(base, data)
+
+export const doDelete = (ids) => request.delete(base+ids)
+
+export const doPage = (params) => request.get(base + 'page', { params })
+
+export const doGet = (id) => request.get(base + id)
diff --git a/ruoyi-admin/src/test/resources/generator/api.vm b/ruoyi-admin/src/test/resources/generator/api.vm
new file mode 100644
index 0000000..85cb0b5
--- /dev/null
+++ b/ruoyi-admin/src/test/resources/generator/api.vm
@@ -0,0 +1,99 @@
+package ${package}.api;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.core.domain.Page;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.JsonUtils;
+import ${package}.mongo.${entity.toUpperName()};
+import ${package}.mongo.query.${entity.toUpperName()}Query;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+
+import static com.ruoyi.common.utils.MongoUtil.*;
+
+/**
+ * ${entity.name}
+${entity.toComment(0)}
+ */
+@Slf4j
+@Validated
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/${moduleName}/${entity.toSimpleLowerName()}/")
+public class ${entity.toUpperName()}Api {
+
+ @GetMapping("/{id}")
+ @SaCheckPermission("${moduleName}:${entity.toSimpleLowerName()}:query")
+ public ${entity.toUpperName()} id(@NotNull(message = "编号不能为空") @PathVariable Long id) {
+ return findById(${entity.toUpperName()}.class, id);
+ }
+
+ @SaCheckPermission("${moduleName}:${entity.toSimpleLowerName()}:page")
+ @GetMapping("/page")
+ public Page<${entity.toUpperName()}> page(Page<${entity.toUpperName()}> page, ${entity.toUpperName()} ${entity.toLowerName()}, ${entity.toUpperName()}Query query) {
+ return findPage(${entity.toUpperName()}.class, page, criteria(${entity.toLowerName()}), query.where());
+ }
+
+
+ @SaCheckPermission("${moduleName}:${entity.toSimpleLowerName()}:add")
+ @Log(title = "${entity.name}", businessType = BusinessType.INSERT)
+ @RepeatSubmit
+ @PostMapping
+ public void add(@Validated(AddGroup.class) @RequestBody ${entity.toUpperName()} ${entity.toLowerName()}) {
+ if (log.isTraceEnabled()) {
+ log.trace("${entity.name}添加参数:{}", JsonUtils.toJsonString(${entity.toLowerName()}));
+ }
+ fillId(${entity.toLowerName()});
+ #foreach($item in $entity.cols)
+ #if($item.add)
+ #if($item.addDefault)
+ ${entity.toLowerName()}.set${item.toUpperName()}(${item.addDefault});
+ #end
+ #else
+ ${entity.toLowerName()}.set${item.toUpperName()}(null);
+ #end
+ #end
+ doInsert(${entity.toLowerName()});
+ }
+
+
+ @SaCheckPermission("${moduleName}:${entity.toSimpleLowerName()}:update")
+ @Log(title = "${entity.name}", businessType = BusinessType.UPDATE)
+ @RepeatSubmit
+ @PutMapping
+ public void update(@Validated(EditGroup.class) @RequestBody ${entity.toUpperName()} ${entity.toLowerName()}) {
+ if (log.isTraceEnabled()) {
+ log.trace("${entity.name}修改参数:{}", JsonUtils.toJsonString(${entity.toLowerName()}));
+ }
+
+ #foreach($item in $entity.cols)
+ #if($item.update)
+ #if($item.updateDefault)
+ ${entity.toLowerName()}.set${item.toUpperName()}(${item.updateDefault});
+ #end
+ #else
+ ${entity.toLowerName()}.set${item.toUpperName()}(null);
+ #end
+ #end
+ doUpdate(${entity.toLowerName()});
+ }
+
+
+ @SaCheckPermission("${moduleName}:${entity.toSimpleLowerName()}:delete")
+ @Log(title = "${entity.name}", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public void remove(@NotEmpty(message = "编号不能为空") @PathVariable Long[] ids) {
+ doRemove(${entity.toUpperName()}.class, conditions().put("_id$in", ids).query());
+ }
+
+
+}
diff --git a/ruoyi-admin/src/test/resources/generator/index.vue.vm b/ruoyi-admin/src/test/resources/generator/index.vue.vm
new file mode 100644
index 0000000..1f48119
--- /dev/null
+++ b/ruoyi-admin/src/test/resources/generator/index.vue.vm
@@ -0,0 +1,132 @@
+#set($a="$")
+#set($b="#")
+
+
+
+
+
+
+#foreach($item in $entity.all)
+
+#end
+
+
+
+ 修改
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ruoyi-admin/src/test/resources/generator/query.vm b/ruoyi-admin/src/test/resources/generator/query.vm
new file mode 100644
index 0000000..eaadb9e
--- /dev/null
+++ b/ruoyi-admin/src/test/resources/generator/query.vm
@@ -0,0 +1,53 @@
+package ${package}.mongo.query;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjUtil;
+import cn.hutool.core.util.StrUtil;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.data.mongodb.core.query.Criteria;
+import static com.ruoyi.common.utils.MongoUtil.*;
+
+/**
+ * ${entity.name}的查询条件
+${entity.toComment(0)}
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ${entity.toUpperName()}Query {
+
+ // 设置请求日期参数格式
+ @org.springframework.format.annotation.DateTimeFormat(pattern = "yyyy-MM-dd")
+// 设置使用@RequestBody时日期参数格式
+// @com.fasterxml.jackson.annotation.JsonFormat(pattern = "yyyy-MM-dd")
+ private java.util.Date beginDate;
+
+// @org.springframework.format.annotation.DateTimeFormat(pattern = "yyyy-MM-dd")
+// private java.util.Date endDate;
+//
+// private String key;
+
+ public Criteria where() {
+ Criteria c = new Criteria();
+
+
+// if (ObjUtil.isNotNull(beginDate) && ObjUtil.isNotNull(endDate)) {
+// c = c.and("createTime").gte(beginDate).lte(DateUtil.endOfDay(endDate));
+// }
+
+// if(StrUtil.isNotBlank(key)){
+// c=c.orOperator(
+// conditions().put("name$like",key).criteria(),
+// conditions().put("name1$like",key).criteria()
+// );
+// }
+
+
+
+ return c;
+ }
+}
diff --git a/ruoyi-admin/src/test/resources/generator/sql.vm b/ruoyi-admin/src/test/resources/generator/sql.vm
new file mode 100644
index 0000000..7f12c21
--- /dev/null
+++ b/ruoyi-admin/src/test/resources/generator/sql.vm
@@ -0,0 +1,26 @@
+set @id = (SELECT max(menu_id) from sys_menu)+1;
+set @pid = '1';
+set @icon = 'excel';
+#set($a = "#")
+
+#foreach($item in $list)
+
+-- 菜单 SQL
+insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component,query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values(@id, '${item.name}', @pid, '100', '${item.toSimpleLowerName()}', '${moduleName}/${item.toSimpleLowerName()}/index', '', 1, 0, 'C', '0', '0', '${moduleName}:${item.toSimpleLowerName()}:page', @icon, 'admin', sysdate(), '', null, '${item.name}');
+
+-- 按钮 SQL
+insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values(@id+1, '查询', @id, '1', '${a}', '', 1, 0, 'F', '0', '0', '${moduleName}:${item.toSimpleLowerName()}:query', '${a}', 'admin', sysdate(), '', null, '');
+
+insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values(@id+2, '添加', @id, '2', '${a}', '', 1, 0, 'F', '0', '0', '${moduleName}:${item.toSimpleLowerName()}:add', '${a}', 'admin', sysdate(), '', null, '');
+
+insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values(@id+3, '修改', @id, '3', '${a}', '', 1, 0, 'F', '0', '0', '${moduleName}:${item.toSimpleLowerName()}:update', '${a}', 'admin', sysdate(), '', null, '');
+
+insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values(@id+4, '删除', @id, '4', '${a}', '', 1, 0, 'F', '0', '0', '${moduleName}:${item.toSimpleLowerName()}:delete', '${a}', 'admin', sysdate(), '', null, '');
+
+set @id = @id + 10;
+#end
\ No newline at end of file
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/Info.java b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/Info.java
new file mode 100644
index 0000000..888e7b4
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/Info.java
@@ -0,0 +1,65 @@
+package com.ruoyi.common.annotation;
+
+import java.lang.annotation.*;
+
+/**
+ * 实体类的相关信息
+ * 暂时主要用于mongodb的代码生成
+ */
+@Target({ElementType.FIELD, ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface Info {
+
+
+ /**
+ * 中文名称
+ *
+ * @return
+ */
+ String value() default "";
+
+ /**
+ * 字段或实体类的名称
+ * 主要用于持久化是的名称
+ * 默认未字段名
+ *
+ * @return
+ */
+ String javaName() default "";
+
+ /**
+ * 注释
+ * @return
+ */
+ String comment() default "";
+
+ boolean show() default true;
+
+ /**
+ * 是否允许添加
+ * @return
+ */
+ boolean add() default true;
+
+ /**
+ * 允许添加时的默认值
+ * @return
+ */
+ String addDefault() default "";
+
+ /**
+ * 是否允许更新
+ * @return
+ */
+ boolean update() default true;
+
+ /**
+ * 允许修改时的默认值
+ * @return
+ */
+ String updateDefault() default "";
+
+ int order() default 0;
+
+}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/IdUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/IdUtils.java
index 8b5cf43..fbe484a 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/IdUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/IdUtils.java
@@ -26,6 +26,7 @@ public class IdUtils {
private static final String DEFAULT_GROUP_NAME = "default";
private static final String PREFIX = "id:";
+ private static final String PREFIX_GLOBAL = "id:global:";
private static LocalDate day;
@@ -50,9 +51,9 @@ public class IdUtils {
* @return
*/
public static Long nextId(String groupName) {
- RedisAtomicLong counter = map.get(PREFIX + groupName);
+ RedisAtomicLong counter = map.get(PREFIX_GLOBAL + groupName);
if (counter == null) {
- counter = new RedisAtomicLong(PREFIX + groupName, redisTemplate.getConnectionFactory());
+ counter = new RedisAtomicLong(PREFIX_GLOBAL + groupName, redisTemplate.getConnectionFactory());
map.put(PREFIX + groupName, counter);
}
return counter.incrementAndGet();
@@ -73,7 +74,7 @@ public class IdUtils {
* @return
*/
public static boolean nextIdInit(String groupName) {
- return map.containsKey(PREFIX + groupName);
+ return map.containsKey(PREFIX_GLOBAL + groupName);
}
public static void nextIdInit(Long startId) {
@@ -91,10 +92,10 @@ public class IdUtils {
* @param startId
*/
public static void nextIdInit(String groupName, Long startId) {
- RedisAtomicLong counter = map.get(PREFIX + groupName);
+ RedisAtomicLong counter = map.get(PREFIX_GLOBAL + groupName);
if (counter == null) {
- counter = new RedisAtomicLong(PREFIX + groupName, redisTemplate.getConnectionFactory());
- map.put(PREFIX + groupName, counter);
+ counter = new RedisAtomicLong(PREFIX_GLOBAL + groupName, redisTemplate.getConnectionFactory());
+ map.put(PREFIX_GLOBAL + groupName, counter);
}
counter.set(startId);
}