ZeusAutoCode代码生成工具(开源)

ZeusAutoCode代码生成工具

一、简介

Zeus代码生成器是一款自动代码生成工具,旨在快速生成基础的CRUD代码,在此基础上也提供了一些高级功能,做到灵活配置,生成可扩展性强的代码。

后端是基于springboot、freemarker、mybatisplus实现

前端采用vue3、elementplus、electron技术

ZEUS官网

客户端在线下载

后端Gitee 仓库地址 | 前端Gitee 仓库地址

后端GitHub 仓库地址 | 前端GitHub 仓库地址

优势

1. 项目结构可视化,文件树、文件图形化的模板编辑,操作模板更加直观、简洁。
2. 使用Freemarker作为模板引擎,模板中支持Freemarker所有语法,系统提供强大的内置字典。模板操作更加灵活。
3. Zeus可以作为作为mysql、oracle客户端,直接连接内网数据库。
4. 脚本管理。取代Jenkins,轻量化快速更新打包项目。网页查看项目日志等功能。
5. 方便团队开发项目,统一代码风格,规范化代码接口。

客户端支持多开。同一个电脑可以打开多个客户端。可以分别登录管理员和普通用户的账号,管理员修改模板内容。普通用户生成代码。

二、快速使用

  1. 下载客户端

    客户端在线下载

  2. 客户端默认有两个用户

    管理员 admin/admin
    普通用户 test/123456
    

    登录管理员账号,在项目管理处,可以查看 项目,进入项目管理查看目前已有的模板。
    代码生成就是根据这些模板动态根据数据库反向生成代码

  3. 新建配置
    登录普通用户账号

    在配置管理处新建一条配置信息 具体查看6.2 普通用户新建配置

  4. 生成代码

    在取码中心 选择配置、选择表 生成代码 具体查看6.3 普通用户生成代码

  5. 大功告成

    打开配置管理 我们配置的文件路径,会看到生成的代码

三、角色说明

管理员

团队技术leader,负责创建项目、组建项目人员、创建模板、管理用户、版本更新、脚本管理(更新打包)。

普通用户

普通开发人员,(前端后端都可以)通过配置中心配置项目路径和数据库地址。在取码中心快速生成代码、注入项目中

四、快捷键说明

快捷键只在客户端有效

1. 切换后台接口

快捷键CTRL I

zeus代码生成器客户端可以动态切换请求的后台接口地址

2. 打开控制台

快捷键CTRL ALT I

zeus代码生成器客户端,可打开浏览器控制台,查看接口信息

五、功能说明

1. 项目管理(管理员)

  1. 项目在zeus中是一个基础单元。他可以是前端项目,也可以是后端项目。
  2. 代码生成是基于项目来的,项目除了有本身的名称、描述、公开等属性外。还具有高级功能【数据字典】(更灵活的生成模板)。
  3. 如果项目不是公开项目,就可以组建自己的开发团队,加入开发人员,只有开发人员才能看到对应的项目。
  4. 项目中还包括了空间树和模板。空间树是项目的目录结构,有文件和文件夹两种形式。
  5. 文件对应的就是模板,根据模板里的代码生成对应的代码。

1. 项目说明

项目是由管理员定义,可以是前端项目、后端项目等任意形式,他具有项目名称、项目描述、是否公开、创建属性的属性。如果是非公开项目,可以给项目组建人员团队,指定人员能看到此项目。

2. 数据字典

数据字典是模板的高级配置。分为内置字典和自定义字典两种

1. 内置字典

内置字典是系统中自带的字典,在模板中用户可以直接使用字典值获取对应的数据。

内置字典的数据来源是,普通用户在配置中心配置的数据库连接,然后在取码中心选择的表。(表名、描述、字段列表)

用户通过在模板中使用内置字典可以完成基本单表CRUD操作

一级字典 二级字典 字典释义 示例
${table_name} 表名字 model_user
${tableDesc} 表描述 用户表
${TableName} 表名字首字母大写驼峰 ModelUser
${tableName} 表名字首字母小写驼峰 modelUser
${FiledList} filed_name 字段名字 user_name
${FiledList} filedDesc 字段描述 用户名称
${FiledList} FILEDNAME 字段名字首字母大写驼峰 UserName
${FiledList} filedName 字段名字首字母小写驼峰 userName
${FiledList} isKey 是否主键 Y/N
${FiledList} nullable 是否非空 Y/N
${FiledList} filedLen 字段长度(数字) 20
${FiledList} scale 精度(数字) 2
${FiledList} defaultValue 默认值
${FiledList} realType 真实字段类型 varchar
${FiledList} javaType 字段类型转JAVA类型 String
${FiledList} xmlType 字段类型转XML类型 VARCHAR

内置字典转化规则

字段类型转XML类型规则 字段类型转JAVA类型规则
varchar ==> VARCHAR varchar ==> String
char ==> VARCHAR double ==> Double
text ==> LONGVARCHAR char ==> String
tinyint ==> TINYINT text ==> String
bigint ==> BIGINT int ==> Integer
int ==> INTEGER tinyint ==> Integer
numeric ==> DOUBLE bigint ==> Long
decimal ==> FLOAT numeric ==> Double
date ==> DATE decimal ==> Float
datetime ==> TIMESTAMP date ==> Date
datetime ==> TIMESTAMP
2. 自定义字典

自定义字典分为三类 字符串、数组、属性列表。

管理员可以在项目中定义该项目的内置字典。在模板中使用内置字典。类似于声明一个插槽。用户在生成代码的时候可以去灵活给插槽赋值。动态生成自己想要的代码。

分类 功能
字符串 声明字符串类型的自定义字典,主要用来给模板中传如固定字符串。比如包名
数组 声明数组型字典,常见的主要用来控制后台的增删改查功能,或者前台的,按钮显示,增删改查功能
属性列表 属性列表是对内置字典中的FiledList的筛选。可以用来做前端查询条件、列表数据、编辑数据动态化

3. 空间树

空间树是项目的目录结构,空间树,有文件和文件夹组成,文件是Freemarker模板。

用户通过构建自己项目空间树,动态生成具有此目录结构的代码到项目中来。

空间树的根节点就是项目的根目录。对应普通用户【配置中心】后台项目项目目录中的配置。

1. 新建空间树
  1. 选中项目根节点,右键,即可新建文件或者文件夹。

  2. 然后,点击文件夹》右键》可以修改该文件夹,也可以新增该文件夹下的文件夹和文件

  3. 点击文件,在右侧填充对应的模板信息

  4. 填充好模板后,点击右上角提交代码按钮。即可保存模板

ZeusAutoCode代码生成工具(开源)_第1张图片

空间树目录要和实际项目目录保持一致

2. 空间树示例

ZeusAutoCode代码生成工具(开源)_第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. 操作步骤

  1. 选择用户在配置中心新建的配置数据
  2. 选择配置数据库加载而来的数据表
  3. 打开【配置详情】页面。可以动态勾选要生成的模板,以及动态填充自定义字典内容。
  4. 点击生成按钮,代码自动注入到 配置中心的用户自建的配置目录中

2. 高级配置

(前端待完善)

配置详情页面

数组类型字典,复选框勾选

属性列表型字典,表格复选框勾选

8. 网页库(普通用户)

用户通过管理员分配的网页库可见权限,点击网页直接打开浏览器跳转到对应的网址

六、使用手册

Tips: 客户端可以多开,可以同时打开两个客户端,一个登录管理员,一个登录普通用户。管理员实时编辑模板,普通用户实时生成代码。

1. 管理员新建项目

管理员可以通过新增按钮创建项目,也可以直接通过复制操作,完全拷贝一个项目

ZeusAutoCode代码生成工具(开源)_第3张图片

在项目中构建自己的空间树、和模板。详情参考功能说明中的空间树介绍

2. 普通用户新建配置

普通用户在【配置管理】菜单中,新建配置

  1. 选择项目
  2. 设置项目所在的本地目录
  3. 填写数据库连接信息
  4. 测试数据库连接
  5. 保存配置

ZeusAutoCode代码生成工具(开源)_第4张图片

3. 普通用户生成代码

  1. 用户打开【取码中心】功能
  2. 选择我们在配置中心新建的配置
  3. 选择根据配置信息加载的表
  4. 点击生成代码

ZeusAutoCode代码生成工具(开源)_第5张图片

4. 高级配置

ZeusAutoCode代码生成工具(开源)_第6张图片

5. 模板语法

主要参考已有模板,Freemarker的所有语法都支持。

这里列举下常见语法

  1. 遍历数组

    <#list FiledList as field>
    	private ${field.javaType} ${field.filedName};
    
    
  2. 字符串转数组

    <#assign function_list=FunctionList?split(",") >
    <#list function_list as function>
       <#if (function == 'findPage')>
       
       
    
  3. 遍历数组获取下标

    <#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 (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}());
    	
    	
    
    

七、常见问题

1. 取码中心生成代码失败

通过管理员登录系统,进入脚本管理,运行查看代码生成器日志脚本,查看模板报错信息。

2. 取码中心生成无反应

  1. zeus客户端软件权限

    1. 桌面选择zeus客户端的logo
    2. 右键》属性》打开文件所在位置》找到zeus.exe 以管理员权限运行
    3. 桌面zeus快捷方式,右键》属性》高级》勾选 以管理员身份运行
    
  2. 切换【配置中心】代码。后台项目目录

    尽量不要选C盘的,C盘权限不足会导致代码无法注入。

  3. 查看日志排查问题

    接口问题排查

    在客户端使用快捷键CTRL ALT I 可以打开控制台,查看生成代码接口,是否返回正常,如果是接口错误,大概率是模板错误

    客户端问题排查

    1. 桌面选择zeus客户端的logo
    2. 右键》属性》打开文件所在位置
    3. 复制当前路径
    4. 使用管理员方式打开CMD,输入刚才输入的路径cd进去
    5. 执行zeus.exe
    6. 查看客户端日志
    

你可能感兴趣的:(Zeus代码生成器,代码生成器,electron,elementplus,开源)