From d1e46afb79de5b62b8ed9061542a8527cc925437 Mon Sep 17 00:00:00 2001 From: jlzhou <12020042@qq.com> Date: Wed, 28 Aug 2024 09:08:33 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E6=96=B0=E5=A2=9Emongo=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E7=94=9F=E6=88=90=E5=99=A8=EF=BC=8C=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?IdUtils=E7=9A=84=E5=85=A8=E5=B1=80ID=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-admin/pom.xml | 4 + .../test/java/com/ruoyi/MongoGenerator.java | 298 ++++++++++++++++++ .../src/test/resources/generator/WAdd.vue.vm | 55 ++++ .../src/test/resources/generator/WEdit.vue.vm | 59 ++++ .../src/test/resources/generator/api.js.vm | 13 + .../src/test/resources/generator/api.vm | 99 ++++++ .../src/test/resources/generator/index.vue.vm | 132 ++++++++ .../src/test/resources/generator/query.vm | 53 ++++ .../src/test/resources/generator/sql.vm | 26 ++ .../com/ruoyi/common/annotation/Info.java | 65 ++++ .../java/com/ruoyi/common/utils/IdUtils.java | 13 +- 11 files changed, 811 insertions(+), 6 deletions(-) create mode 100644 ruoyi-admin/src/test/java/com/ruoyi/MongoGenerator.java create mode 100644 ruoyi-admin/src/test/resources/generator/WAdd.vue.vm create mode 100644 ruoyi-admin/src/test/resources/generator/WEdit.vue.vm create mode 100644 ruoyi-admin/src/test/resources/generator/api.js.vm create mode 100644 ruoyi-admin/src/test/resources/generator/api.vm create mode 100644 ruoyi-admin/src/test/resources/generator/index.vue.vm create mode 100644 ruoyi-admin/src/test/resources/generator/query.vm create mode 100644 ruoyi-admin/src/test/resources/generator/sql.vm create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/annotation/Info.java 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="#") + + + + + \ 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="#") + + + + + \ 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="#") + + + \ 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); }