主题
业务模块开发
内置模块二次开发
内置功能模块功能已经比较完善能适配各行业的大部分需求,一般不建议修改,主要是方便后续版本的升级,对内置模块的二次开发可能有代码冲突导致无法升级,无法使用后续版本的新功能或 Bug 修复。有行业通用的需求可提给 FgxAdmin 团队。
如果有特殊的业务逻辑需二次开发,也是支持的。根据 3.1.3 和 3.2.3 章节可知 FgxAdmin 的内置功能是按模块划分的,不同模块使用不同的包或目录划分。如果要对内置的某个模块进行二次开发,找到对应模块进行修改即可。
自定义模块方式
代码生成器生成项目(推荐)
生成项目
在 FgxGen 代码生成器->研发工具->生成项目里可以一键生成前端和后端的项目框架。生成项目的代码结构和 fgx-admin-bootstrap、fgx-admin-ui 一样。
导入数据
新增数据库执行初始化 SQL 脚本 database-init-v1.0.0.sql , 注意:脚本的第一行的数据库名称要与新建的数据库一致
启动项目
后端的根据 3.1.6 章节修改配置即可本地启动项目。
前端使用以下命令启动项目
shell
# 进入项目
cd fgx-abc-ui
# 安装依赖
npm install --registry=https://registry.npm.taobao.org
# 启动服务
npm run dev
手动新建项目开发
新建后端项目
新建项目进行开发,代码结构跟 fgx-admin-bootstrap 一样,拷贝 fgx-admin-bootstrap 相关文件到新项目。fgx-admin-bootstrap 是一个启动器,它依赖 fgx-admin-web(所有内置功能在该项目),主要提供配置管理、打包构建等功能。
如:新建 fgx-mall 项目
pom.xml 如下,其它文件从 fgx-admin-bootstrap 拷贝:
xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.fuginx</groupId>
<artifactId>fgx-admin-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<groupId>com.fuginx</groupId>
<artifactId>fgx-mall</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>fgx-mall</name>
<description>fgx-mall</description>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>com.fuginx</groupId>
<artifactId>fgx-admin-web</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
导入数据
新增数据库执行初始化 SQL 脚本 fgx-admin-bootstrap-init-v1.0.0.sql , 注意:脚本的第一行的数据库名称要与新建的数据库一致
新建前端项目
通过拷贝 fgx-admin-ui 改名新建项目,修改 package.json 和 nginx.conf 里的项目名为新项目名。新建模块目录进行开发,如:xxx 为模块名
src/api/xxx
src/views/xxx
fgx-generator-ui 基于该方式开发,可参考。
第一个业务模块
需求说明
某司需要对公司的设备资产进行信息化管理,支持设备分类,支持父子类别。需记录设备的名称,厂商、生产日期和数量等(仅举例,其它字段忽略)
建立表模型
根据业务需求建立表模型如下:
sql
CREATE TABLE `tbl_demo_category` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
`corp_id` bigint NOT NULL COMMENT '企业ID',
`parent_id` bigint NOT NULL DEFAULT '0' COMMENT '父ID',
`parent_ids` varchar(512) COLLATE utf8mb4_general_ci NOT NULL COMMENT '祖先ID(多个以英文逗号分隔)',
`leaf` tinyint(1) NOT NULL COMMENT '是否末级',
`category_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '类目名称',
`remark` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '备注',
`name_path` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '完整路径(以斜杠分隔)',
`order_num` int DEFAULT NULL COMMENT '同级排序',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`create_uid` bigint DEFAULT NULL COMMENT '创建人UID',
`create_aid` bigint DEFAULT NULL COMMENT '创建人AID',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`update_uid` bigint DEFAULT NULL COMMENT '更新人UID',
`update_aid` bigint DEFAULT NULL COMMENT '更新人AID',
`deleted` int NOT NULL DEFAULT '0' COMMENT '是否删除(0否,1是)',
PRIMARY KEY (`id`),
KEY `idx_1` (`parent_id`),
KEY `idx_2` (`parent_ids`),
KEY `idx_3` (`category_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='类目';
CREATE TABLE `tbl_demo_device` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
`corp_id` bigint NOT NULL COMMENT '企业ID',
`device_name` varchar(128) COLLATE utf8mb4_general_ci NOT NULL COMMENT '设备名称',
`category_id` bigint NOT NULL COMMENT '设备分类',
`manufacturer` varchar(128) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '厂商',
`manufacture_date` datetime DEFAULT NULL COMMENT '生产日期',
`quantity` int DEFAULT NULL COMMENT '数量',
`intro` varchar(1024) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '简介',
`create_time` datetime NOT NULL COMMENT '创建时间',
`create_uid` bigint DEFAULT NULL COMMENT '创建人UID',
`create_aid` bigint DEFAULT NULL COMMENT '创建人AID',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`update_uid` bigint DEFAULT NULL COMMENT '更新人UID',
`update_aid` bigint DEFAULT NULL COMMENT '更新人AID',
`deleted` int NOT NULL DEFAULT '0' COMMENT '是否删除(0否,1是)',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='设备';
在 fgx-admin-bootstrap 的数据库执行上面 SQL 创建表
生成代码
添加数据源
在代码生成器-研发工具的数据源里添加 FgxAdmin 数据源
添加表配置
在代码生成器-研发工具的生成代码里添加表配置 tbl_demo_category
表的基础信息和列表配置:
主要关注圈选的信息填写
- 模板类型:系统会根据表的字段自动判断是否树表
- 模块名:填写模块名称,填写英文名称,如 demo
- 表单布局:表单是指数据编辑表单,支持 1-4 列,可根据字段的多少选择,默认 2 列。本例需编辑的字段少选 1 列
- 标签字段:当模板类型为树表时填写,一般选树名称字段,用于树名称展示
- 一级菜单名称:左侧边栏的一级菜单名称,用于生成菜单 SQL
- 二级菜单名称:左侧边栏的二级菜单名称,用于生成菜单 SQL
- 一级菜单图标:左侧边栏的一级菜单的图标 icon,用于生成菜单 SQL
- 二级菜单图标:左侧边栏的二级菜单的图标 icon,用于生成菜单 SQL
- 功能:列表页面的功能操作,系统默认勾选除批量删除以外的选项
- 列表展示:列表页面是否该字段,系统默认前 6 个有意义的字段
- 最小列宽:字段在列表页面的最小宽度,非必填,最小和固定列宽为空时系统自动适配宽度
- 固定列表:字段在列表页面的固定宽度,优先级比最小列宽高。非必填。最小和固定列宽为空时系统自动适配宽度
- 内容超出隐藏:当内容超过字段列宽时隐藏超出部分,鼠标悬停时以 tooltip 方式展示全部内容
查询配置:
- 是否查询:是否列表搜索条件字段
- 匹配方式:仅在是否查询为是的情况下有效,搜索的匹配方式,后端会根据匹配方式生成查询条件
- 条件排序:搜索条件排序,默认按字段在列表中的顺序一致。仅当搜索条件位置和列表不一致时填写。一般不填写
表单配置:
- 查看:查看详情页面是否展示该字段
- 新增:新增时表单是否展示该字段
- 编辑:编辑时表单是否展示该字段
- 必填:新增或编辑时该字段是否必填,必填时展示红色的星号并在表单提交前校验
- 校验唯一:校验该字段是否全局唯一
- 独占一行:在新增或编辑表单中该字段独占一行
- 表单排序:字段在表单的排序号,序号超大越靠前
- 控件类型:字段在表单里的 vue 组件类型,系统默认根据字段的数据库字段类型来确定 vue 组件类型,可根据实际情况微调
- 字典编码:如果该字段是枚举值,须在 FgxAdmin 的数据字典里添加枚举类型和字典选项,然后代码生成器才能引用。
- 字典 URL:如果该字段的数据来源于一个业务表(业务表须先用代码生成器生成代码或已有接口获取数据),填写获取字典下拉列表数据的接口 URL;一般使用代码生成器的 findTreeOptions 接口;字典编码和字典 URL 同时有值时字典 URL 无效
- 校验类型: 前端进行类型数据校验
同理添加 tbl_demo_device 表配置
生成代码
勾选 tbl_demo_category 和 tbl_demo_device 点生成代码并下载代码,代码结构如下:
生成的代码包括 3 部分:
frontend: 前端代码
main:后端代码,包括 java 代码和 mybatis 的 mapper.xml 配置文件
sql: 菜单的 SQL 脚本,sql 可重复执行,如果菜单记录已存在不会重复插入数据。
执行 sql 后分别把前端和后端代码拷贝到 fgx-admin-bootstrap 和 fgx-admin-ui 的对应目录,启动服务,给当前账号(如:admin 超级管理员)的角色加上新增的菜单权限,刷新页面即可看到新增加的设备模块页面。
当生成的代码需要微调时,可修改表配置重新生成代码。
生成代码二次开发
生成的代码一般情况下能满足大部分业务需求,当业务很复杂生成的代码不能满足需求时,可对生成的代码做二次开发。
二次开发后如果又重新生成代码,需手工合并代码。建议合并前先备份当前模块代码或提交到 git 仓库,以免合并时有冲突丢失代码。