ZeusAutoCode コード生成ツール
1.はじめに
Zeus コード ジェネレーターは、基本的な CRUD コードをすばやく生成するように設計された自動コード生成ツールであり、これに基づいて、柔軟な構成を実現し、スケーラブルなコードを生成するための高度な機能も提供します。
バックエンドは、springboot、freemarker、mybatisplus に基づいて実装されています
フロントエンドは vue3、elementplus、electron テクノロジーを採用
バックエンド Gitee 倉庫アドレス|フロントエンド Gitee 倉庫アドレス
バックエンド GitHub ウェアハウス アドレス|フロントエンド GitHub ウェアハウス アドレス
アドバンテージ
1. 项目结构可视化,文件树、文件图形化的模板编辑,操作模板更加直观、简洁。
2. 使用Freemarker作为模板引擎,模板中支持Freemarker所有语法,系统提供强大的内置字典。模板操作更加灵活。
3. Zeus可以作为作为mysql、oracle客户端,直接连接内网数据库。
4. 脚本管理。取代Jenkins,轻量化快速更新打包项目。网页查看项目日志等功能。
5. 方便团队开发项目,统一代码风格,规范化代码接口。
クライアントは複数の開口部をサポートしています。複数のクライアントを同じコンピューターで開くことができます。管理者と一般ユーザーのアカウントに別々にログインでき、管理者はテンプレートの内容を変更できます。通常のユーザー生成コード。
2.クイック使用
-
アプリをダウンロード
-
クライアントにはデフォルトで 2 人のユーザーがいます
管理员 admin/admin 普通用户 test/123456
管理者アカウントにログインし、プロジェクト管理セクションでプロジェクトを表示し、プロジェクト管理に入って既存のテンプレートを表示できます。
コード生成とは、これらのテンプレートを元にデータベースからコードを逆に動的に生成することです -
新しい構成を作成する
一般的なユーザー アカウントにログインする構成管理で新しい構成情報を作成します。詳細については、6.2一般ユーザーの新規構成を参照してください。
-
コードを生成する
コード検索センターで構成を選択し、コードを生成するテーブルを選択します。詳細については、6.3通常のユーザー生成コードを参照してください。
-
あなたは終わった
構成の構成管理ファイル パスを開くと、生成されたコードが表示されます。
3. 役割の説明
管理者
团队技术leader,负责创建项目、组建项目人员、创建模板、管理用户、版本更新、脚本管理(更新打包)。
一般利用者
普通开发人员,(前端后端都可以)通过配置中心配置项目路径和数据库地址。在取码中心快速生成代码、注入项目中
4. ショートカットキーの説明
ショートカット キーはクライアント側でのみ有効です
1.バックグラウンドインターフェースを切り替える
ショートカットキーCTRL I
Zeus コード ジェネレーター クライアントは、要求のバックグラウンド インターフェイス アドレスを動的に切り替えることができます。
2.コンソールを開く
ショートカットキーCTRL ALT I
Zeus コード ジェネレーター クライアント。ブラウザー コンソールを開いてインターフェイス情報を表示できます。
5.機能説明
1. プロジェクト管理(管理者)
- プロジェクトは、zeus の基本単位です。これは、フロントエンド プロジェクトまたはバックエンド プロジェクトのいずれかです。
- コード生成はプロジェクトに基づいており、プロジェクトには独自の名前、説明、パブリック、およびその他の属性があります。拡張機能「データ辞書」も搭載(より柔軟な生成テンプレート)。
- プロジェクトが公開プロジェクトでない場合は、独自の開発チームを形成して開発者に参加することができます. 開発者のみが対応するプロジェクトを見ることができます.
- このプロジェクトには、スペース ツリーとテンプレートも含まれています。スペース ツリーはプロジェクトのディレクトリ構造であり、ファイルとフォルダーの 2 つの形式があります。
- ファイルはテンプレートに対応し、対応するコードはテンプレート内のコードに従って生成されます。
1. プロジェクトの説明
プロジェクトは管理者によって定義され、フロントエンド プロジェクトやバックエンド プロジェクトなど、任意の形式にすることができます。プロジェクト名、プロジェクトの説明、パブリックかどうか、および作成属性などの属性があります。非公開プロジェクトの場合は、プロジェクト担当者のチームを作成すると、指定された担当者がこのプロジェクトを見ることができます。
2.データ辞書
データ ディクショナリは、テンプレートの高度な構成です。組み込み辞書とユーザー辞書に分かれています
1.辞書内蔵
組み込みディクショナリは、システムに組み込まれているディクショナリで、テンプレートでは、ユーザーはディクショナリの値を直接使用して、対応するデータを取得できます。
組み込みディクショナリのデータ ソースは、構成センターで通常のユーザーによって構成されたデータベース接続であり、コード検索センターで選択されたテーブルです。(テーブル名、説明、フィールド リスト)
ユーザーは、テンプレートの組み込みディクショナリを使用して、基本的な単一テーブルの CRUD 操作を完了することができます
レベル 1 辞書 | 二次辞書 | 辞書の定義 | 例 |
---|---|---|---|
${テーブル名} | ヌル | テーブル名 | モデル_ユーザー |
${tableDesc} | ヌル | テーブルの説明 | ユーザーテーブル |
${テーブル名} | ヌル | テーブル名頭文字大文字キャメルケース | モデルユーザー |
${テーブル名} | ヌル | テーブル名の頭文字が小文字のキャメルケース | モデルユーザー |
${FiledList} | ファイル名 | フィールド名 | ユーザー名 |
${FiledList} | フィールド説明 | フィールドの説明 | ユーザー名 |
${FiledList} | ファイル名 | キャメルケースでフィールド名の最初の文字を大文字にする | ユーザー名 |
${FiledList} | ファイル名 | フィールド名の最初の文字は小文字のキャメルケースです | ユーザー名 |
${FiledList} | isKey | 主キーかどうか | はい/いいえ |
${FiledList} | null 許容 | 空でないか | はい/いいえ |
${FiledList} | 提出されたLen | フィールド長 (数値) | 20 |
${FiledList} | 規模 | 精度 (数値) | 2 |
${FiledList} | デフォルト値 | デフォルト | |
${FiledList} | リアルタイプ | 実体型 | varchar |
${FiledList} | javaType | フィールド型からJAVA型へ | 弦 |
${FiledList} | xmlType | フィールド型からXML型へ | VARCHAR |
組み込みの辞書変換規則
フィールド型から XML 型への規則 | フィールド型からJAVA型へのルール |
---|---|
varchar ==> VARCHAR | varchar ==> 文字列 |
char ==> VARCHAR | ダブル ==> ダブル |
テキスト ==> LONGVARCHAR | 文字 ==> 文字列 |
tinyint ==> TINYINT | テキスト ==> 文字列 |
bigint ==> BIGINT | int ==> 整数 |
int ==> 整数 | tinyint ==> 整数 |
数値 ==> DOUBLE | bigint ==> ロング |
10 進数 ==> FLOAT | 数値 ==> 倍精度 |
日付 ==> 日付 | 10 進数 ==> 浮動小数点数 |
日時 ==> タイムスタンプ | 日付 ==> 日付 |
日時 ==> タイムスタンプ |
2. ユーザー辞書
ユーザー辞書は、文字列、配列、および属性リストの 3 つのタイプに分けられます。
管理者は、プロジェクト内でプロジェクトの組み込み辞書を定義できます。テンプレートで組み込み辞書を使用します。スロットの宣言に似ています。ユーザーは、コードを生成するときにスロットに柔軟に値を割り当てることができます。必要なコードを動的に生成します。
分類 | 関数 |
---|---|
弦 | 文字列型のカスタム ディクショナリを宣言します。これは主に固定文字列をテンプレートに渡すために使用されます。パッケージ名など |
配列 | バックグラウンドでの追加、削除、変更、およびクエリ関数、またはフロントエンド、ボタン表示、追加、削除、変更、およびクエリ関数を制御するために一般的に使用される配列ディクショナリを宣言します |
物件一覧 | プロパティ リストは、組み込みディクショナリの FiledList に対するフィルタです。フロントエンドのクエリ条件、データの一覧表示、データ ダイナミクスの編集に使用できます |
3. 空間ツリー
スペース ツリーはプロジェクトのディレクトリ構造です. スペース ツリーはファイルとフォルダで構成されています. ファイルは Freemarker テンプレートです.
ユーザーは、独自のプロジェクト スペース ツリーを構築することにより、このディレクトリ構造を持つコードをプロジェクトに動的に生成します。
スペース ツリーのルート ノードは、プロジェクトのルート ディレクトリです。一般ユーザーのバックグラウンドプロジェクトのプロジェクトディレクトリ[設定センター]での設定に対応しています。
1. 新しいスペース ツリーを作成する
-
プロジェクトのルート ノードを選択し、右クリックして新しいファイルまたはフォルダーを作成します。
-
次に、フォルダをクリックして「右クリック」してフォルダを変更するか、フォルダの下にフォルダとファイルを追加します
-
ファイルをクリックし、右側に対応するテンプレート情報を入力します
-
填充好模板后,点击右上角提交代码按钮。即可保存模板
空间树目录要和实际项目目录保持一致
2. 空间树示例
2. 用户管理(管理员)
管理员可以通过用户管理功能创建系统用户
3. 版本更新(管理员)
管理员可以通过版本更新实现客户端的快速更新迭代
版本更新分为线上更新和线下更新两种模式。
实现方式:
通过判断当前版本的版本号(数据库存储)和客户端的版本号(package.json的version属性)是否一致,如果不一致,就拉取最新的版本,下载到本地。重启客户端,完成客户端升级
1. 线下更新
1. 修改前端代码中的package.json中的version属性。
2. 前端代码打包 yarn run package:prod
3. 通过对前端代码进行打包,找到D:\workspace\workspace-zeus\zeus-view\dist_electron\win-ia32-unpacked\resources\app.asar文件。对此文件进行压缩,压缩成zip包,
4. 在【版本更新】处新建一个版本,版本号和version的版本号一致。上传刚才压缩的zip包
5. 重启客户端,自动拉去最新版本,完成更新
2. 线上更新
1. 修改前端代码中的package.json中的version属性。
2. 提交代码到git上
3. 执行【脚本管理】的 ‘生成器前端打包’脚本
4. 在【版本更新】处新建一个版本,版本号和version的版本号一致。选择线上。url固定填 http://39.101.173.227/zeus/app.zip
5. 重启客户端,自动拉去最新版本,完成更新
3. 前端更新脚本示例
脚本文件 viewcode.sh
#!/bin/bash
#auth eric
#date 2021-07-14
#*********脚本入参#*********
appname=code
#Git源码位置
gitsrc=/home/egn/GitSpace/zeus-view
#Nginx位置
nginxsrc=/usr/local/nginx/html/zeus/
#*********脚本入参#*********
cd $gitsrc && git pull origin master && yarn run build:prod
mv -f $gitsrc/dist_electron/win-unpacked/resources/app.asar $nginxsrc
rm -rf $nginxsrc/*.zip
echo '删除历史包'
cd $nginxsrc
zip app.zip app.asar
echo '发布成功'
参考这个脚本,也可以做其他前端项目的自动打包
4. 后台更新脚本示例
脚本文件 code.sh
#!/bin/bash
#auth eric
#date 2021-07-14
#*********脚本入参#*********
appname=code
#Git源码位置
gitsrc=/home/egn/GitSpace/zeus-server
#Docker脚本位置
dockersrc=/home/egn/DockerBuilder/$appname
#*********脚本入参#*********
cd $gitsrc && git pull origin master && mvn install -DskipTests
if [ $? -eq 0 ];
then
echo "maven build success "
else
echo -e '\033[31m[ error ] gradle build faild \033[0m' && exit 1
fi
\cp -f $gitsrc/target/*.jar $dockersrc
echo '第二步:查看是否有镜像'
cd $dockersrc
imageresult=$(docker images |grep $appname | wc -l)
if [ $imageresult -eq 0 ];
then
echo "不存在镜像,需要重新初始化鏡像";
docker build -t $appname .
docker run -d --name $appname -p 8003:8003 --restart always $appname
else
conid=$(docker ps |grep $appname |awk '{print $1}')
docker cp *.jar $conid:/$appname.jar
docker restart $conid
if [ $? -eq 0 ];
then
echo "发布成功!"
else
echo -e '\033[31m[ error ] 发布失败 \033[0m' && exit 1
fi
fi
参考此脚本,同理可以做后台项目自动打包部署
5. 前后端脚本基础环境搭建
https://blog.csdn.net/qq_35921773/article/details/121694667
4. 脚本管理(管理员)
脚本管理核心是远程连接linux服务器,执行linux命令
用户可以通过该功能实现项目的远程打包、查看日志、服务重启……等操作
5. 网页库(管理员)
网页库是让用户快捷跳转项目常用网址的一个功能。管理员可以通过网页库新建该项目的所有网址,例如Gitlab、禅道、测试环境地址、原型地址……
6. 配置中心(普通用户)
普通用户在配置中心可以根据自己已有的项目,新建该项目的配置信息。
配置信息主要包含:选择项目、项目目录、配置名称、配置描述、数据库连接信息这些属性
用户可见的项目: 公开项目和私有项目用户在项目成员中
数据库连接信息: 客户端作为数据库连接工具,就像是Navicat一样获取当前数据的所有表。可以连接内网数据库
项目目录:生成的代码注入的目录。一般为项目根目录
7. 取码中心(普通用户)
注意:
使用zeus客户端生成代码会强制覆盖本地代码。所以在生成代码前,可以先通过配置详情功能选择要生成的文件
1. 操作步骤
- 选择用户在配置中心新建的配置数据
- 选择配置数据库加载而来的数据表
- 打开【配置详情】页面。可以动态勾选要生成的模板,以及动态填充自定义字典内容。
- 点击生成按钮,代码自动注入到 配置中心的用户自建的配置目录中
2. 高级配置
(前端待完善)
配置详情页面
数组类型字典,复选框勾选
属性列表型字典,表格复选框勾选
8. 网页库(普通用户)
用户通过管理员分配的网页库可见权限,点击网页直接打开浏览器跳转到对应的网址
六、使用手册
Tips: 客户端可以多开,可以同时打开两个客户端,一个登录管理员,一个登录普通用户。管理员实时编辑模板,普通用户实时生成代码。
1. 管理员新建项目
管理员可以通过新增按钮创建项目,也可以直接通过复制操作,完全拷贝一个项目
在项目中构建自己的空间树、和模板。详情参考功能说明中的空间树介绍
2. 普通用户新建配置
普通用户在【配置管理】菜单中,新建配置
- 选择项目
- 设置项目所在的本地目录
- 填写数据库连接信息
- 测试数据库连接
- 保存配置
3. 普通用户生成代码
- 用户打开【取码中心】功能
- 选择我们在配置中心新建的配置
- 选择根据配置信息加载的表
- 点击生成代码
4. 高级配置
5. 模板语法
主要参考已有模板,Freemarker的所有语法都支持。
这里列举下常见语法
-
遍历数组
<#list FiledList as field> private ${field.javaType} ${field.filedName}; </#list>
-
字符串转数组
<#assign function_list=FunctionList?split(",") > <#list function_list as function> <#if (function == 'findPage')> </#if> </#list>
-
遍历数组获取下标
<#list FiledList as column> <#if (column_index>0)> <#if (column.javaType== 'String')> if(StringUtils.isNotEmpty(body.getParameter().get${FiledList[0].FILEDNAME}())) queryWrapper.like("${column.filed_name}", body.getParameter().get${FiledList[0].FILEDNAME}()); </#if> <#if (column.javaType== 'Integer' || column.javaType== 'Double' || column.javaType== 'Float' || column.javaType== 'Long')> if(body.getParameter().get${FiledList[0].FILEDNAME}() != null) queryWrapper.eq("${column.filed_name}", body.getParameter().get${FiledList[0].FILEDNAME}()); </#if> </#if> </#list>
七、常见问题
1. 取码中心生成代码失败
通过管理员登录系统,进入脚本管理,运行查看代码生成器日志脚本,查看模板报错信息。
2. 取码中心生成无反应
-
zeus客户端软件权限
1. 桌面选择zeus客户端的logo 2. 右键》属性》打开文件所在位置》找到zeus.exe 以管理员权限运行 3. 桌面zeus快捷方式,右键》属性》高级》勾选 以管理员身份运行
-
切换【配置中心】代码。后台项目目录
尽量不要选C盘的,C盘权限不足会导致代码无法注入。
-
查看日志排查问题
接口问题排查
在客户端使用快捷键CTRL ALT I 可以打开控制台,查看生成代码接口,是否返回正常,如果是接口错误,大概率是模板错误
客户端问题排查
1. 桌面选择zeus客户端的logo 2. 右键》属性》打开文件所在位置 3. 复制当前路径 4. 使用管理员方式打开CMD,输入刚才输入的路径cd进去 5. 执行zeus.exe 6. 查看客户端日志