From 51069fc130b36111f76176cc430ed2ec9fcbecee Mon Sep 17 00:00:00 2001 From: zhuoda Date: Sun, 6 Apr 2025 20:57:30 +0800 Subject: [PATCH] =?UTF-8?q?v3.16.0=20=E3=80=90=E6=96=B0=E5=A2=9E=E3=80=91?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90=20?= =?UTF-8?q?=E5=AD=97=E5=85=B8=E5=92=8C=E6=96=87=E4=BB=B6=E9=A2=84=E8=A7=88?= =?UTF-8?q?=EF=BC=9B=E3=80=90=E6=96=B0=E5=A2=9E=E3=80=91=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E7=94=9F=E6=88=90=20=E8=8F=9C=E5=8D=95SQL=EF=BC=9B=E3=80=90?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E3=80=91=E7=99=BB=E5=BD=95=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?GIF=E7=82=AB=E9=85=B7=E5=9B=BE=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 5 +- .../service/CodeGeneratorTemplateService.java | 2 +- .../CodeGenerateBaseVariableService.java | 8 +- .../variable/front/FormVariableService.java | 1 + .../variable/front/ListVariableService.java | 66 +++++++++++++--- .../java/sql/Menu.sql.vm | 16 ++-- .../code-generator-template/js/form.vue.vm | 8 +- .../code-generator-template/js/list.vue.vm | 31 ++++---- .../mapper/support/CodeGeneratorMapper.xml | 24 +++--- .../src/main/resources/prod/sa-base.yaml | 2 +- .../service/CodeGeneratorTemplateService.java | 2 +- .../CodeGenerateBaseVariableService.java | 8 +- .../variable/front/FormVariableService.java | 1 + .../variable/front/ListVariableService.java | 67 +++++++++++++--- .../java/sql/Menu.sql.vm | 16 ++-- .../code-generator-template/js/form.vue.vm | 8 +- .../code-generator-template/js/list.vue.vm | 31 ++++---- .../mapper/support/CodeGeneratorMapper.xml | 24 +++--- .../src/main/resources/prod/sa-base.yaml | 4 +- .../src/assets/images/login/login.gif | Bin 0 -> 12466905 bytes .../views/business/erp/goods/goods-list.vue | 10 +-- .../code-generator/code-generator-list.vue | 11 ++- ...or-table-config-form-insert-and-update.vue | 1 + .../src/views/support/dict/index.vue | 2 +- .../src/views/system/login3/login.less | 2 +- .../src/views/system/login3/login.vue | 5 +- .../src/views/system/menu/menu-list.vue | 1 + smart-admin-web-typescript/package.json | 4 +- .../src/assets/images/login/login.gif | Bin 0 -> 12466905 bytes .../views/business/erp/goods/goods-list.vue | 10 +-- .../code-generator/code-generator-list.vue | 11 ++- ...or-table-config-form-insert-and-update.vue | 1 + .../src/views/support/dict/index.vue | 2 +- .../src/views/system/login3/login.less | 2 +- .../src/views/system/login3/login.vue | 5 +- .../src/views/system/menu/menu-list.vue | 1 + sql/README.md | 9 +++ smart_admin_v3.sql => sql/smart_admin_v3.sql | 0 sql/sql-update-log/v3.15.0.sql | 74 ++++++++++++++++++ 39 files changed, 331 insertions(+), 144 deletions(-) create mode 100644 smart-admin-web-javascript/src/assets/images/login/login.gif create mode 100644 smart-admin-web-typescript/src/assets/images/login/login.gif create mode 100644 sql/README.md rename smart_admin_v3.sql => sql/smart_admin_v3.sql (100%) create mode 100644 sql/sql-update-log/v3.15.0.sql diff --git a/README.md b/README.md index e850848d..958f1a1a 100644 --- a/README.md +++ b/README.md @@ -12,9 +12,8 @@ - 前端:JavaScript/TypeScript + Vue3 + Vite5 + Pinia + Ant Design Vue 4.X - 移动端:uniapp (vue3版本) + uni-ui + (同时支持APP、小程序、H5) - 后端:Java8/17 + SpringBoot2/3 + Sa Token + Mybatis-plus + 多种数据库 -- 电脑在线预览:[https://preview.smartadmin.vip](https://preview.smartadmin.vip) -- 官方文档:[https://smartadmin.vip](https://smartadmin.vip) -- 移动端在线预览:[https://app.smartadmin.vip](https://app.smartadmin.vip/#/pages/login/login) +- 官方文档:[http://115.190.111.229/smart-admin/](http://115.190.111.229/smart-admin/) +- 在线预览:[http://115.190.111.229/smart-admin-preview/](http://115.190.111.229/smart-admin-preview/) ### **理念与思想** - 我们分享的不是徒劳无功的各种功能,而是必须有的功能,如:数据变动记录、系统说明文档、版本更新记录、意见反馈、日志、心跳、单号生成器等等。 diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/CodeGeneratorTemplateService.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/CodeGeneratorTemplateService.java index 22cd5e09..930d73bf 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/CodeGeneratorTemplateService.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/CodeGeneratorTemplateService.java @@ -159,7 +159,7 @@ public class CodeGeneratorTemplateService { CodeDelete deleteInfo = JSON.parseObject(codeGeneratorConfigEntity.getDeleteInfo(), CodeDelete.class); List queryFields = JSONArray.parseArray(codeGeneratorConfigEntity.getQueryFields(), CodeQueryField.class); List tableFields = JSONArray.parseArray(codeGeneratorConfigEntity.getTableFields(), CodeTableField.class); - tableFields.stream().forEach(e -> e.setWidth(e.getWidth() == null ? 0 : e.getWidth())); + tableFields.forEach(e -> e.setWidth(e.getWidth() == null ? 0 : e.getWidth())); CodeGeneratorConfigForm form = CodeGeneratorConfigForm.builder().basic(basic).fields(fields).insertAndUpdate(insertAndUpdate).deleteInfo(deleteInfo).queryFields(queryFields).tableFields(tableFields).deleteInfo(deleteInfo).build(); form.setTableName(tableName); diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/CodeGenerateBaseVariableService.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/CodeGenerateBaseVariableService.java index d39bf6bf..b2e026e1 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/CodeGenerateBaseVariableService.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/CodeGenerateBaseVariableService.java @@ -64,8 +64,7 @@ public abstract class CodeGenerateBaseVariableService { return null; } - return fields.stream().filter(e -> columnName.equals(e.getColumnName())) - .findFirst().get(); + return fields.stream().filter(e -> SmartStringUtil.equals(columnName, e.getColumnName())).findFirst().orElse(null); } @@ -89,7 +88,7 @@ public abstract class CodeGenerateBaseVariableService { } CodeInsertAndUpdateField field = first.get(); - return SmartStringUtil.equals(field.getFrontComponent(), CodeFrontComponentEnum.FILE_UPLOAD.getValue()); + return CodeFrontComponentEnum.FILE_UPLOAD.equalsValue(field.getFrontComponent()); } /** @@ -114,8 +113,7 @@ public abstract class CodeGenerateBaseVariableService { return null; } - Optional first = fields.stream().filter(e -> columnName.equals(e.getColumnName())).findFirst(); - return first.orElse(null); + return fields.stream().filter(e -> columnName.equals(e.getColumnName())).findFirst().orElse(null); } /** diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/front/FormVariableService.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/front/FormVariableService.java index bdd4363f..85b2354f 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/front/FormVariableService.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/front/FormVariableService.java @@ -67,6 +67,7 @@ public class FormVariableService extends CodeGenerateBaseVariableService { if (CodeFrontComponentEnum.DICT_SELECT.equalsValue(field.getFrontComponent())) { frontImportSet.add("import DictSelect from '/@/components/support/dict-select/index.vue';"); + frontImportSet.add("import { DICT_CODE_ENUM } from '/@/constants/support/dict-const.js';"); } if (CodeFrontComponentEnum.FILE_UPLOAD.equalsValue(field.getFrontComponent())) { diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/front/ListVariableService.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/front/ListVariableService.java index 74e582ad..81619de5 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/front/ListVariableService.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/front/ListVariableService.java @@ -2,10 +2,14 @@ package net.lab1024.sa.base.module.support.codegenerator.service.variable.front; import cn.hutool.core.bean.BeanUtil; import com.google.common.base.CaseFormat; +import net.lab1024.sa.base.common.util.SmartStringUtil; +import net.lab1024.sa.base.module.support.codegenerator.constant.CodeFrontComponentEnum; import net.lab1024.sa.base.module.support.codegenerator.constant.CodeQueryFieldQueryTypeEnum; import net.lab1024.sa.base.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeField; +import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeInsertAndUpdateField; import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeQueryField; +import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeTableField; import net.lab1024.sa.base.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; import java.util.*; @@ -29,34 +33,74 @@ public class ListVariableService extends CodeGenerateBaseVariableService { public Map getInjectVariablesMap(CodeGeneratorConfigForm form) { Map variablesMap = new HashMap<>(); - List> variableList = new ArrayList<>(); - List queryFields = form.getQueryFields(); + HashSet frontImportSet = new HashSet<>(); frontImportSet.add("import " + CaseFormat.LOWER_CAMEL.to(CaseFormat.UPPER_CAMEL, form.getBasic().getModuleName()) + "Form from './" + CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_HYPHEN, form.getBasic().getModuleName()) + "-form.vue';"); + // 查询参数 + List> queryVariable = new ArrayList<>(); + List queryFields = form.getQueryFields(); + for (CodeQueryField queryField : queryFields) { Map objectMap = BeanUtil.beanToMap(queryField); CodeField codeField = getCodeFieldByColumnName(queryField.getColumnNameList().get(0), form); - objectMap.put("frontEnumName", codeField.getEnumName()); - objectMap.put("dict", codeField.getDict()); - if(CodeQueryFieldQueryTypeEnum.ENUM.equalsValue(queryField.getQueryTypeEnum())){ + if (CodeQueryFieldQueryTypeEnum.ENUM.equalsValue(queryField.getQueryTypeEnum())) { + objectMap.put("frontEnumName", codeField.getEnumName()); frontImportSet.add("import SmartEnumSelect from '/@/components/framework/smart-enum-select/index.vue';"); } - if(CodeQueryFieldQueryTypeEnum.DICT.equalsValue(queryField.getQueryTypeEnum())){ + if (CodeQueryFieldQueryTypeEnum.DICT.equalsValue(queryField.getQueryTypeEnum())) { + objectMap.put("dict", codeField.getDict()); frontImportSet.add("import DictSelect from '/@/components/support/dict-select/index.vue';"); } - if(CodeQueryFieldQueryTypeEnum.DATE_RANGE.equalsValue(queryField.getQueryTypeEnum())){ + if (CodeQueryFieldQueryTypeEnum.DATE_RANGE.equalsValue(queryField.getQueryTypeEnum())) { frontImportSet.add("import { defaultTimeRanges } from '/@/lib/default-time-ranges';"); } - variableList.add(objectMap); - + queryVariable.add(objectMap); } - variablesMap.put("queryFields",variableList); - variablesMap.put("frontImportList",new ArrayList<>(frontImportSet)); + + // 表格列表 + List> listVariable = new ArrayList<>(); + // 过滤掉不显示的字段 + List tableFields = form.getTableFields().stream().filter(CodeTableField::getShowFlag).toList(); + + for (CodeTableField tableField : tableFields) { + Map objectMap = BeanUtil.beanToMap(tableField); + objectMap.put("fieldName", tableField.getFieldName()); + + CodeField codeField = getCodeFieldByColumnName(tableField.getColumnName(), form); + if (codeField == null) { + continue; + } + + // 是否存在字典 + if (SmartStringUtil.isNotBlank(codeField.getDict())) { + objectMap.put("dict", codeField.getDict()); + frontImportSet.add("import { DICT_CODE_ENUM } from '/@/constants/support/dict-const.js';"); + frontImportSet.add("import DictLabel from '/@/components/support/dict-label/index.vue';"); + } + + CodeInsertAndUpdateField codeInsertAndUpdateField = form.getInsertAndUpdate().getFieldList().stream().filter(e -> SmartStringUtil.equals(tableField.getColumnName(), e.getColumnName())).findFirst().orElse(null); + if (codeInsertAndUpdateField == null) { + continue; + } + + // 是否存在上传组件 + if (CodeFrontComponentEnum.FILE_UPLOAD.equalsValue(codeInsertAndUpdateField.getFrontComponent())) { + objectMap.put("frontComponent", codeInsertAndUpdateField.getFrontComponent()); + frontImportSet.add("import FilePreview from '/@/components/support/file-preview/index.vue';"); + } + + listVariable.add(objectMap); + } + + variablesMap.put("queryFields", queryVariable); + variablesMap.put("listFields", listVariable); + variablesMap.put("frontImportList", new ArrayList<>(frontImportSet)); + return variablesMap; } } diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/java/sql/Menu.sql.vm b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/java/sql/Menu.sql.vm index 90525f78..4f066e34 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/java/sql/Menu.sql.vm +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/java/sql/Menu.sql.vm @@ -9,14 +9,14 @@ VALUES ( '${basic.description}', 2, 0, '/${name.lowerHyphenCamel}/list', '/busin SET @parent_id = NULL; SELECT t_menu.menu_id INTO @parent_id FROM t_menu WHERE t_menu.menu_name = '${basic.description}'; -INSERT INTO t_menu ( menu_name, menu_type, parent_id, frame_flag, cache_flag, visible_flag, disabled_flag, api_perms, perms_type, context_menu_id, create_user_id ) -VALUES ( '查询', 3, @parent_id, false, true, true, false, '${name.lowerCamel}:query', 1, @parent_id, 1 ); +INSERT INTO t_menu ( menu_name, menu_type, parent_id, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, api_perms, web_perms, context_menu_id, create_user_id ) +VALUES ( '查询', 3, @parent_id, false, false, true, false, 1, '${name.lowerCamel}:query', '${name.lowerCamel}:query', @parent_id, 1 ); -INSERT INTO t_menu ( menu_name, menu_type, parent_id, frame_flag, cache_flag, visible_flag, disabled_flag, api_perms, perms_type, context_menu_id, create_user_id ) -VALUES ( '添加', 3, @parent_id, false, true, true, false, '${name.lowerCamel}:add', 1, @parent_id, 1 ); +INSERT INTO t_menu ( menu_name, menu_type, parent_id, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, api_perms, web_perms, context_menu_id, create_user_id ) +VALUES ( '添加', 3, @parent_id, false, false, true, false, 1, '${name.lowerCamel}:add', '${name.lowerCamel}:add', @parent_id, 1 ); -INSERT INTO t_menu ( menu_name, menu_type, parent_id, frame_flag, cache_flag, visible_flag, disabled_flag, api_perms, perms_type, context_menu_id, create_user_id ) -VALUES ( '更新', 3, @parent_id, false, true, true, false, '${name.lowerCamel}:update', 1, @parent_id, 1 ); +INSERT INTO t_menu ( menu_name, menu_type, parent_id, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, api_perms, web_perms, context_menu_id, create_user_id ) +VALUES ( '更新', 3, @parent_id, false, false, true, false, 1, '${name.lowerCamel}:update', '${name.lowerCamel}:update', @parent_id, 1 ); -INSERT INTO t_menu ( menu_name, menu_type, parent_id, frame_flag, cache_flag, visible_flag, disabled_flag, api_perms, perms_type, context_menu_id, create_user_id ) -VALUES ( '删除', 3, @parent_id, false, true, true, false, '${name.lowerCamel}:delete', 1, @parent_id, 1 ); +INSERT INTO t_menu ( menu_name, menu_type, parent_id, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, api_perms, web_perms, context_menu_id, create_user_id ) +VALUES ( '删除', 3, @parent_id, false, false, true, false, 1, '${name.lowerCamel}:delete', '${name.lowerCamel}:delete', @parent_id, 1 ); diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/js/form.vue.vm b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/js/form.vue.vm index 336d14d7..6291a44b 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/js/form.vue.vm +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/js/form.vue.vm @@ -43,12 +43,12 @@ #end #if($field.frontComponent == "SmartEnumSelect") - + #end #if($field.frontComponent == "DictSelect") - + #end #if($field.frontComponent == "Date") @@ -101,12 +101,12 @@ #end #if($field.frontComponent == "SmartEnumSelect") - + #end #if($field.frontComponent == "DictSelect") - + #end #if($field.frontComponent == "Date") diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/js/list.vue.vm b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/js/list.vue.vm index f23fa092..e336227b 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/js/list.vue.vm +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/js/list.vue.vm @@ -22,12 +22,12 @@ #end #if($field.queryTypeEnum == "Dict") - + #end #if($field.queryTypeEnum == "Enum") - + #end #if($field.queryTypeEnum == "Date") @@ -101,18 +101,20 @@ >