# hzero-demo **Repository Path**: hzero-book/hzero-demo ## Basic Information - **Project Name**: hzero-demo - **Description**: HZERO后端Demo工程 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 1 - **Created**: 2021-04-20 - **Last Updated**: 2023-06-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # README 初始化本示例项目,请先创建相应的数据库 hzero_demo,接着进行表结构及数据初始化。如: ``` CREATE DATABASE hzero_demo DEFAULT CHARACTER SET utf8mb4; GRANT ALL PRIVILEGES ON hzero_demo.* TO hzero@'%'; FLUSH PRIVILEGES; ``` 本示例使用到的表结构及初始化脚本,如下: ``` CREATE TABLE demo_material_item ( item_id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '物料ID,主键', item_code varchar(80) NOT NULL COMMENT '物料编码', item_name varchar(200) NOT NULL COMMENT '物料名称', description varchar(2000) DEFAULT NULL COMMENT '描述说明', std_uom varchar(30) DEFAULT NULL COMMENT '标准单位', std_price decimal(11,0) DEFAULT NULL COMMENT '标准单价', enabled_flag tinyint(1) NOT NULL DEFAULT '1' COMMENT '启用标识', tenant_id bigint(20) NOT NULL DEFAULT '0' COMMENT '租户ID', object_version_number bigint(20) NOT NULL DEFAULT '1' COMMENT '行版本号,用来处理锁', creation_date datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, created_by bigint(20) NOT NULL DEFAULT '-1', last_updated_by bigint(20) NOT NULL DEFAULT '-1', last_update_date datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, attribute_category varchar(30) DEFAULT NULL, attribute1 varchar(150) DEFAULT NULL, attribute2 varchar(150) DEFAULT NULL, attribute3 varchar(150) DEFAULT NULL, attribute4 varchar(150) DEFAULT NULL, attribute5 varchar(150) DEFAULT NULL, attribute6 varchar(150) DEFAULT NULL, attribute7 varchar(150) DEFAULT NULL, attribute8 varchar(150) DEFAULT NULL, attribute9 varchar(150) DEFAULT NULL, attribute10 varchar(150) DEFAULT NULL, PRIMARY KEY (item_id), UNIQUE KEY demo_material_item_u1 (item_code,tenant_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='物料表'; CREATE TABLE demo_material_item_tl ( item_id bigint(20) NOT NULL COMMENT '物料ID,主键', lang varchar(30) NOT NULL COMMENT '语言', item_name varchar(200) NOT NULL COMMENT '物料名称', tenant_id bigint(20) NOT NULL DEFAULT '0' COMMENT '租户ID', UNIQUE KEY demo_material_item_tl_u1 (item_id,lang) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='物料多语言表'; CREATE TABLE demo_customer ( customer_id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '客户ID,主键', customer_code varchar(30) NOT NULL COMMENT '客户编码', customer_name varchar(200) DEFAULT NULL COMMENT '客户名称', area_code varchar(30) DEFAULT NULL COMMENT '所在地区,参考数据字典:DEMO.AREA_CODE', address varchar(200) DEFAULT NULL COMMENT '地址', contacts varchar(150) DEFAULT NULL COMMENT '联系人', contact_tel varchar(80) DEFAULT NULL COMMENT '联系电话', enabled_flag tinyint(1) NOT NULL DEFAULT '1' COMMENT '启用标识', tenant_id bigint(20) NOT NULL DEFAULT '0' COMMENT '租户ID', object_version_number bigint(20) NOT NULL DEFAULT '1' COMMENT '行版本号,用来处理锁', creation_date datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, created_by bigint(20) NOT NULL DEFAULT '-1', last_updated_by bigint(20) NOT NULL DEFAULT '-1', last_update_date datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, attribute_category varchar(30) DEFAULT NULL, attribute1 varchar(150) DEFAULT NULL, attribute2 varchar(150) DEFAULT NULL, attribute3 varchar(150) DEFAULT NULL, attribute4 varchar(150) DEFAULT NULL, attribute5 varchar(150) DEFAULT NULL, attribute6 varchar(150) DEFAULT NULL, attribute7 varchar(150) DEFAULT NULL, attribute8 varchar(150) DEFAULT NULL, attribute9 varchar(150) DEFAULT NULL, attribute10 varchar(150) DEFAULT NULL, PRIMARY KEY (customer_id), UNIQUE KEY demo_customer_u1 (customer_code,tenant_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='客户表'; CREATE TABLE demo_order_header ( order_header_id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '订单头表ID,主键', order_number varchar(30) NOT NULL COMMENT '订单编号', customer_id bigint(20) DEFAULT NULL COMMENT '客户ID', contacts varchar(150) DEFAULT NULL COMMENT '订单联系人', contact_tel varchar(80) DEFAULT NULL COMMENT '订单联系电话', need_date date DEFAULT NULL COMMENT '订单需求日期', order_status varchar(30) NOT NULL DEFAULT 'new' COMMENT '订单状态,参考快码:DEMO.ORDER_STATUS', approval_status varchar(30) NOT NULL DEFAULT 'unapproved' COMMENT '审批状态,参考快码:DEMO.APPROVAL_STATUS', description longtext COMMENT '备注说明', tenant_id bigint(20) NOT NULL DEFAULT '0' COMMENT '租户ID', object_version_number bigint(20) NOT NULL DEFAULT '1' COMMENT '行版本号,用来处理锁', creation_date datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, created_by bigint(20) NOT NULL DEFAULT '-1', last_updated_by bigint(20) NOT NULL DEFAULT '-1', last_update_date datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, attribute_category varchar(30) DEFAULT NULL, attribute1 varchar(150) DEFAULT NULL, attribute2 varchar(150) DEFAULT NULL, attribute3 varchar(150) DEFAULT NULL, attribute4 varchar(150) DEFAULT NULL, attribute5 varchar(150) DEFAULT NULL, attribute6 varchar(150) DEFAULT NULL, attribute7 varchar(150) DEFAULT NULL, attribute8 varchar(150) DEFAULT NULL, attribute9 varchar(150) DEFAULT NULL, attribute10 varchar(150) DEFAULT NULL, PRIMARY KEY (order_header_id), UNIQUE KEY demo_order_header_u1 (order_number,tenant_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单头表'; CREATE TABLE demo_order_line ( order_line_id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '订单行表ID,主键', order_header_id bigint(20) NOT NULL COMMENT '订单行头表ID', line_num bigint(20) DEFAULT NULL COMMENT '行号', item_id bigint(20) DEFAULT NULL COMMENT '物料ID', item_uom varchar(30) DEFAULT NULL COMMENT '物料单位', item_price decimal(10,2) DEFAULT NULL COMMENT '物料单价', description varchar(2000) DEFAULT NULL COMMENT '行备注', tenant_id bigint(20) NOT NULL DEFAULT '0' COMMENT '租户ID', object_version_number bigint(20) NOT NULL DEFAULT '1' COMMENT '行版本号,用来处理锁', creation_date datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, created_by bigint(20) NOT NULL DEFAULT '-1', last_updated_by bigint(20) NOT NULL DEFAULT '-1', last_update_date datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, attribute_category varchar(30) DEFAULT NULL, attribute1 varchar(150) DEFAULT NULL, attribute2 varchar(150) DEFAULT NULL, attribute3 varchar(150) DEFAULT NULL, attribute4 varchar(150) DEFAULT NULL, attribute5 varchar(150) DEFAULT NULL, attribute6 varchar(150) DEFAULT NULL, attribute7 varchar(150) DEFAULT NULL, attribute8 varchar(150) DEFAULT NULL, attribute9 varchar(150) DEFAULT NULL, attribute10 varchar(150) DEFAULT NULL, PRIMARY KEY (order_line_id), UNIQUE KEY demo_order_line_u1 (order_header_id,line_num) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单行表'; ``` 对HZERO平台的表结构及初始化数据在 hzero-resource 项目下。 * groovy:表结构 groovy 脚本 * init-data:初始化数据 * tool-jar:执行初始化的工具 * database-init.sh:执行初始化的脚本  * 脚本内容如图  * 需要替换以下配置 - `spring.datasource.url`:数据库连接URL - `spring.datasource.username`:数据库名称 - `spring.datasource.password`:数据库密码 - `data.update.exclusion`:排除数据更新的表或列 - `service`:要初始化或升级的服务,不同的服务需更改此处执行 - `dir`:要初始化或升级的脚本路径,不同的数据库需更改此处执行
请注意:表结构和初始化数据是分开执行的,便于服务升级。如果更新表结构,设置 dir=groovy/$service 即可;如果更新数据,设置 dir=init-data/$service 即可。特别需要注意的是,hzero-iam 服务下的数据分 SaaS 版本和 OP 版本,请选择对应版本的数据初始化。hzero-iam 的数据初始化好之后,默认的用户名密码为 [admin/Admin@123],可使用此用户密码登陆系统。 在 **部署后端服务** 完成后,需调用IAM服务的初始化接口进行一些初始化操作。 * 调用 `[GET /v1/init/menu-level-path]` 初始化菜单层级路径(`h_level_path`),如果发现有些 level_path 不正确,可以直接将本列清掉并调用该接口重新生成。 * 调用 `[GET /v1/init/role-level-path]` 初始化角色层级路径(`h_level_path`、`h_inherit_level__path`),如果发现有些 level_path 不正确,可以直接将这两列清掉并调用该接口重新生成。 * 调用 `[GET /v1/init/super-role-permission-sets]` 将权限集分别分配到平台超级管理员和租户超级管理员上。 
服务初始化前,请先确定项目或产品是使用SaaS版还是OP版,SaaS 版本支持多租户,OP版本没有租户概念。* 正常情况下依赖于 hzero 的服务进行开发,hzero 服务发新版之后可自行决定是否升级服务。注:所有HZERO服务及组件在发布时都会统一升级一个版本,升级服务时可定一个稳定版本即可。 * 以 hzero-gateway 服务为例,首先创建一个空的工程,一般以产品或编码为前缀命名,如 demo-gateway。  * 修改 `pom.xml`,可以 hzero-parent 为父 pom,也可自行建一个所属产品或项目的顶级 parent 项目进行统一版本管理,接着引入依赖的服务。 > 引用服务坐标时,可在服务清单下找到服务的坐标,SaaS 版本的 artifactId 是以 -saas 结尾的,请注意区分。  ```xml