From 044b859c5bcc3eeab89a8d9bbf39ef1d0d15de0c Mon Sep 17 00:00:00 2001 From: lijiahang Date: Wed, 20 Sep 2023 11:55:50 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BB=A3=E7=A0=81=E7=94=9F?= =?UTF-8?q?=E6=88=90=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- .../ops/launch/generator/CodeGenerator.java | 11 ++++-- .../launch/generator/{ => core}/GenTable.java | 2 +- .../{ => core}/VelocityTemplateEngine.java | 21 ++++++++---- .../resources/templates/orion-sql-menu.sql.vm | 2 +- .../resources/templates/orion-vue-api.ts.vm | 34 +++++++++---------- .../templates/orion-vue-router.ts.vm | 8 ++--- ...ion-vue-views-components-form-modal.vue.vm | 6 ++-- .../orion-vue-views-components-table.vue.vm | 14 ++++---- .../templates/orion-vue-views-index.vue.vm | 6 ++-- 10 files changed, 59 insertions(+), 47 deletions(-) rename orion-ops-launch/src/main/java/com/orion/ops/launch/generator/{ => core}/GenTable.java (98%) rename orion-ops-launch/src/main/java/com/orion/ops/launch/generator/{ => core}/VelocityTemplateEngine.java (94%) diff --git a/README.md b/README.md index e39ab00c..607de868 100644 --- a/README.md +++ b/README.md @@ -61,7 +61,7 @@ new GenTable("system_role", "角色", "role") .ignoreApi() // 忽略生成单元测试 .ignoreTest() - // 生成 vue 文件, 一级业务包为 user, 二级业务包为 role + // 生成 vue 文件, 一级业务包为 user, 二级业务包为 role (前端命名只能使用脊柱命名法) .vue("user", "role") // 前端代码生成的枚举对象 可变参数 .enums(RoleStatusEnum.class); diff --git a/orion-ops-launch/src/main/java/com/orion/ops/launch/generator/CodeGenerator.java b/orion-ops-launch/src/main/java/com/orion/ops/launch/generator/CodeGenerator.java index d4f35994..d2300265 100644 --- a/orion-ops-launch/src/main/java/com/orion/ops/launch/generator/CodeGenerator.java +++ b/orion-ops-launch/src/main/java/com/orion/ops/launch/generator/CodeGenerator.java @@ -15,6 +15,8 @@ import com.orion.lang.utils.ansi.style.color.AnsiForeground; import com.orion.lang.utils.ext.yml.YmlExt; import com.orion.ops.framework.mybatis.core.domain.BaseDO; import com.orion.ops.framework.mybatis.core.mapper.IMapper; +import com.orion.ops.launch.generator.core.GenTable; +import com.orion.ops.launch.generator.core.VelocityTemplateEngine; import org.apache.ibatis.annotations.Mapper; import java.io.File; @@ -44,10 +46,12 @@ public class CodeGenerator { // new GenTable("system_user", "用户", "user") // .vue("user", "user") // .enums(UserStatusEnum.class), - new GenTable("host", "主机", "host") - .vue("asset", "host") + new GenTable("host_key", "主机秘钥", "host") + .vue("asset", "host-key") + .ignoreTest(), + new GenTable("host_identity", "主机身份", "host") + .vue("asset", "host-identity") .ignoreTest(), - new GenTable("host_config", "主机配置", "host").ignoreTest(), }; // jdbc 配置 - 使用配置文件 File yamlFile = new File("orion-ops-launch/src/main/resources/application-dev.yaml"); @@ -386,6 +390,7 @@ public class CodeGenerator { .append(AnsiForeground.BRIGHT_BLUE.and(AnsiFont.BOLD), "- 后端代码复制后请先 clean 模块父工程\n") .append(AnsiForeground.BRIGHT_BLUE.and(AnsiFont.BOLD), "- 后端代码复制后请先执行单元测试检测是否正常\n") .append(AnsiForeground.BRIGHT_BLUE.and(AnsiFont.BOLD), "- vue 代码需要注意同一模块的 router 需要自行合并\n") + .append(AnsiForeground.BRIGHT_BLUE.and(AnsiFont.BOLD), "- 菜单 sql 执行完成后 需要在菜单页面刷新缓存\n") .toString(); System.out.print(line); } diff --git a/orion-ops-launch/src/main/java/com/orion/ops/launch/generator/GenTable.java b/orion-ops-launch/src/main/java/com/orion/ops/launch/generator/core/GenTable.java similarity index 98% rename from orion-ops-launch/src/main/java/com/orion/ops/launch/generator/GenTable.java rename to orion-ops-launch/src/main/java/com/orion/ops/launch/generator/core/GenTable.java index 18c075f6..92b0770b 100644 --- a/orion-ops-launch/src/main/java/com/orion/ops/launch/generator/GenTable.java +++ b/orion-ops-launch/src/main/java/com/orion/ops/launch/generator/core/GenTable.java @@ -1,4 +1,4 @@ -package com.orion.ops.launch.generator; +package com.orion.ops.launch.generator.core; import com.orion.lang.utils.collect.Lists; import lombok.Data; diff --git a/orion-ops-launch/src/main/java/com/orion/ops/launch/generator/VelocityTemplateEngine.java b/orion-ops-launch/src/main/java/com/orion/ops/launch/generator/core/VelocityTemplateEngine.java similarity index 94% rename from orion-ops-launch/src/main/java/com/orion/ops/launch/generator/VelocityTemplateEngine.java rename to orion-ops-launch/src/main/java/com/orion/ops/launch/generator/core/VelocityTemplateEngine.java index 99b75d72..452e7560 100644 --- a/orion-ops-launch/src/main/java/com/orion/ops/launch/generator/VelocityTemplateEngine.java +++ b/orion-ops-launch/src/main/java/com/orion/ops/launch/generator/core/VelocityTemplateEngine.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.orion.ops.launch.generator; +package com.orion.ops.launch.generator.core; import com.baomidou.mybatisplus.core.toolkit.StringPool; import com.baomidou.mybatisplus.generator.config.ConstVal; @@ -25,6 +25,7 @@ import com.baomidou.mybatisplus.generator.engine.AbstractTemplateEngine; import com.orion.lang.define.collect.MultiLinkedHashMap; import com.orion.lang.utils.Enums; import com.orion.lang.utils.Strings; +import com.orion.lang.utils.VariableStyles; import com.orion.lang.utils.io.Files1; import com.orion.lang.utils.reflect.BeanMap; import com.orion.lang.utils.reflect.Fields; @@ -309,12 +310,18 @@ public class VelocityTemplateEngine extends AbstractTemplateEngine { String outPath = getConfigBuilder().getGlobalConfig().getOutputDir(); GenTable table = tables.get(tableInfo.getName()); BeanMap beanMap = BeanMap.create(table, "enums"); - // 模块名称首字母大写 - beanMap.put("moduleFirstUpper", Strings.firstUpper(table.getModule())); - // 功能名称首字母大写 - beanMap.put("featureFirstUpper", Strings.firstUpper(table.getFeature())); - // 功能名称全大写 - beanMap.put("featureAllUpper", table.getFeature().toUpperCase()); + // 模块名称实体 + beanMap.put("moduleEntity", VariableStyles.SPINE.toBigHump(table.getModule())); + // 模块名称实体 + beanMap.put("moduleEntityFirstLower", Strings.firstLower(beanMap.get("moduleEntity"))); + // 模块名称常量 + beanMap.put("moduleConst", VariableStyles.SPINE.toSerpentine(table.getModule()).toUpperCase()); + // 功能名称实体 + beanMap.put("featureEntity", VariableStyles.SPINE.toBigHump(table.getFeature())); + // 功能名称实体 + beanMap.put("featureEntityFirstLower", Strings.firstLower(beanMap.get("featureEntity"))); + // 功能名称常量 + beanMap.put("featureConst", VariableStyles.SPINE.toSerpentine(table.getFeature()).toUpperCase()); // 枚举 beanMap.put("enums", this.getEnumMap(table)); objectMap.put("vue", beanMap); diff --git a/orion-ops-launch/src/main/resources/templates/orion-sql-menu.sql.vm b/orion-ops-launch/src/main/resources/templates/orion-sql-menu.sql.vm index 8b6acf3c..a9bf7a50 100644 --- a/orion-ops-launch/src/main/resources/templates/orion-sql-menu.sql.vm +++ b/orion-ops-launch/src/main/resources/templates/orion-sql-menu.sql.vm @@ -13,7 +13,7 @@ SELECT @TMP_PARENT_ID:=LAST_INSERT_ID(); INSERT INTO system_menu (parent_id, name, type, sort, visible, status, cache, component) VALUES - (@TMP_PARENT_ID, '$vue.comment', 2, 10, 1, 1, 1, '$vue.module$vue.featureFirstUpper'); + (@TMP_PARENT_ID, '$vue.comment', 2, 10, 1, 1, 1, '$vue.moduleEntityFirstLower$vue.featureEntity'); -- 设置临时子菜单id SELECT @TMP_SUB_ID:=LAST_INSERT_ID(); diff --git a/orion-ops-launch/src/main/resources/templates/orion-vue-api.ts.vm b/orion-ops-launch/src/main/resources/templates/orion-vue-api.ts.vm index 7f56038f..9a7dbe7d 100644 --- a/orion-ops-launch/src/main/resources/templates/orion-vue-api.ts.vm +++ b/orion-ops-launch/src/main/resources/templates/orion-vue-api.ts.vm @@ -5,7 +5,7 @@ import { DataGrid, Pagination } from '@/types/global'; /** * ${table.comment}创建请求 */ -export interface ${vue.featureFirstUpper}CreateRequest { +export interface ${vue.featureEntity}CreateRequest { #foreach($field in ${table.fields}) #if("$!field.propertyName" != "id") #if("$field.propertyType" == "String" || "$field.propertyType" == "Date") @@ -24,14 +24,14 @@ export interface ${vue.featureFirstUpper}CreateRequest { /** * ${table.comment}更新请求 */ -export interface ${vue.featureFirstUpper}UpdateRequest extends ${vue.featureFirstUpper}CreateRequest { +export interface ${vue.featureEntity}UpdateRequest extends ${vue.featureEntity}CreateRequest { id: number; } /** * ${table.comment}查询请求 */ -export interface ${vue.featureFirstUpper}QueryRequest extends Pagination { +export interface ${vue.featureEntity}QueryRequest extends Pagination { #foreach($field in ${table.fields}) #if("$field.propertyType" == "String" || "$field.propertyType" == "Date") ${field.propertyName}?: string; @@ -48,7 +48,7 @@ export interface ${vue.featureFirstUpper}QueryRequest extends Pagination { /** * ${table.comment}查询响应 */ -export interface ${vue.featureFirstUpper}QueryResponse { +export interface ${vue.featureEntity}QueryResponse { #foreach($field in ${table.fields}) #if("$field.propertyType" == "String") ${field.propertyName}?: string; @@ -69,29 +69,29 @@ export interface ${vue.featureFirstUpper}QueryResponse { /** * $apiComment.create */ -export function create${vue.featureFirstUpper}(request: ${vue.featureFirstUpper}CreateRequest) { +export function create${vue.featureEntity}(request: ${vue.featureEntity}CreateRequest) { return axios.post('/${package.ModuleName}/${typeHyphen}/create', request); } /** * $apiComment.updateById */ -export function update${vue.featureFirstUpper}(request: ${vue.featureFirstUpper}UpdateRequest) { +export function update${vue.featureEntity}(request: ${vue.featureEntity}UpdateRequest) { return axios.put('/${package.ModuleName}/${typeHyphen}/update', request); } /** * $apiComment.getById */ -export function get${vue.featureFirstUpper}(id: number) { - return axios.get<${vue.featureFirstUpper}QueryResponse>('/${package.ModuleName}/${typeHyphen}/get', { params: { id } }); +export function get${vue.featureEntity}(id: number) { + return axios.get<${vue.featureEntity}QueryResponse>('/${package.ModuleName}/${typeHyphen}/get', { params: { id } }); } /** * $apiComment.listByIdList */ -export function get${vue.featureFirstUpper}List(idList: Array) { - return axios.get<${vue.featureFirstUpper}QueryResponse[]>('/${package.ModuleName}/${typeHyphen}/list', { +export function get${vue.featureEntity}List(idList: Array) { + return axios.get<${vue.featureEntity}QueryResponse[]>('/${package.ModuleName}/${typeHyphen}/list', { params: { idList }, paramsSerializer: params => { return qs.stringify(params, { arrayFormat: 'comma' }); @@ -102,28 +102,28 @@ export function get${vue.featureFirstUpper}List(idList: Array) { /** * $apiComment.listAll */ -export function get${vue.featureFirstUpper}ListAll(request: ${vue.featureFirstUpper}QueryRequest) { - return axios.post>('/${package.ModuleName}/${typeHyphen}/list-all', request); +export function get${vue.featureEntity}ListAll(request: ${vue.featureEntity}QueryRequest) { + return axios.post>('/${package.ModuleName}/${typeHyphen}/list-all', request); } /** * $apiComment.queryPage */ -export function get${vue.featureFirstUpper}Page(request: ${vue.featureFirstUpper}QueryRequest) { - return axios.post>('/${package.ModuleName}/${typeHyphen}/query', request); +export function get${vue.featureEntity}Page(request: ${vue.featureEntity}QueryRequest) { + return axios.post>('/${package.ModuleName}/${typeHyphen}/query', request); } /** * $apiComment.deleteById */ -export function delete${vue.featureFirstUpper}(id: number) { +export function delete${vue.featureEntity}(id: number) { return axios.delete('/${package.ModuleName}/${typeHyphen}/delete', { params: { id } }); } /** * $apiComment.batchDeleteByIdList */ -export function batchDelete${vue.featureFirstUpper}(idList: Array) { +export function batchDelete${vue.featureEntity}(idList: Array) { return axios.delete('/${package.ModuleName}/${typeHyphen}/delete-batch', { params: { idList }, paramsSerializer: params => { @@ -135,6 +135,6 @@ export function batchDelete${vue.featureFirstUpper}(idList: Array) { /** * $apiComment.export */ -export function export${vue.featureFirstUpper}(request: ${vue.featureFirstUpper}QueryRequest) { +export function export${vue.featureEntity}(request: ${vue.featureEntity}QueryRequest) { return axios.post('/${package.ModuleName}/${typeHyphen}/export', request); } diff --git a/orion-ops-launch/src/main/resources/templates/orion-vue-router.ts.vm b/orion-ops-launch/src/main/resources/templates/orion-vue-router.ts.vm index 24ecd000..547d043b 100644 --- a/orion-ops-launch/src/main/resources/templates/orion-vue-router.ts.vm +++ b/orion-ops-launch/src/main/resources/templates/orion-vue-router.ts.vm @@ -1,17 +1,17 @@ import { DEFAULT_LAYOUT } from '../base'; import { AppRouteRecordRaw } from '../types'; -const $vue.featureAllUpper: AppRouteRecordRaw = { - name: '$vue.module', +const $vue.moduleConst: AppRouteRecordRaw = { + name: '$vue.moduleEntityFirstLower', path: '/$vue.module', component: DEFAULT_LAYOUT, children: [ { - name: '$vue.module$vue.featureFirstUpper', + name: '$vue.moduleEntityFirstLower$vue.featureEntity', path: '/$vue.module/$vue.feature', component: () => import('@/views/$vue.module/$vue.feature/index.vue'), }, ], }; -export default $vue.featureAllUpper; +export default $vue.moduleConst; diff --git a/orion-ops-launch/src/main/resources/templates/orion-vue-views-components-form-modal.vue.vm b/orion-ops-launch/src/main/resources/templates/orion-vue-views-components-form-modal.vue.vm index 7faab3ee..990ade05 100644 --- a/orion-ops-launch/src/main/resources/templates/orion-vue-views-components-form-modal.vue.vm +++ b/orion-ops-launch/src/main/resources/templates/orion-vue-views-components-form-modal.vue.vm @@ -53,7 +53,7 @@ import useLoading from '@/hooks/loading'; import useVisible from '@/hooks/visible'; import formRules from '../types/form.rules'; - import { create${vue.featureFirstUpper}, update${vue.featureFirstUpper} } from '@/api/${vue.module}/${vue.feature}'; + import { create${vue.featureEntity}, update${vue.featureEntity} } from '@/api/${vue.module}/${vue.feature}'; import { Message } from '@arco-design/web-vue'; import { } from '../types/enum.types'; import { } from '../types/const'; @@ -114,12 +114,12 @@ } if (isAddHandle.value) { // 新增 - await create${vue.featureFirstUpper}(formModel as any); + await create${vue.featureEntity}(formModel as any); Message.success('创建成功'); emits('added'); } else { // 修改 - await update${vue.featureFirstUpper}(formModel as any); + await update${vue.featureEntity}(formModel as any); Message.success('修改成功'); emits('updated'); } diff --git a/orion-ops-launch/src/main/resources/templates/orion-vue-views-components-table.vue.vm b/orion-ops-launch/src/main/resources/templates/orion-vue-views-components-table.vue.vm index 116b1d2d..04a30902 100644 --- a/orion-ops-launch/src/main/resources/templates/orion-vue-views-components-table.vue.vm +++ b/orion-ops-launch/src/main/resources/templates/orion-vue-views-components-table.vue.vm @@ -110,7 +110,7 @@