本地环境搭建
本地运行好 mariadb + redis 服务。
version: "3.8"
services:
mariadb:
image: mariadb:11.2.2-jammy
container_name: mariadb
restart: always
environment:
# MYSQL_USER: adminer
# MYSQL_PASSWORD: adminer
# MYSQL_DATABASE: test
MARIADB_ROOT_PASSWORD: root
MARIADB_USER: adminer
MARIADB_PASSWORD: adminer
MARIADB_DATABASE: test
ports:
- 3306:3306
volumes:
- db_data:/var/lib/mysql
adminer:
image: adminer:4.8.1-standalone
container_name: adminer
environment:
ADMINER_DEFAULT_SERVER: mariadb
restart: always
ports:
- 47201:8080
redis:
image: redis:7.2.4-alpine
ports:
- 6379:6379
volumes:
db_data:
导入数据库
字符问题
直接使用hotgo 的 fix-sqlchatset 分支中已经替换好的
hotgo.sql
即可解决问题
本地准备运行 hotgo
框架,在导入初始化数据库脚本时,发现在 adminer 面板下,mariadb 数据库中,导入错误。
CREATE TABLE IF NOT EXISTS `hg_admin_credits_log` (
`id` bigint NOT NULL COMMENT '变动ID',
`member_id` bigint DEFAULT '0' COMMENT '管理员ID',
`app_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '应用id',
`addons_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '插件名称',
`credit_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '变动类型',
`credit_group` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '变动组别',
`before_num` decimal(10,2) DEFAULT '0.00' COMMENT '变动前',
`num` decimal(10,2) DEFAULT '0.00' COMMENT '变动数据',
`after_num` decimal(10,2) DEFAULT '0.00' COMMENT '变动后',
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '备注',
`ip` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900…
-- 查询出错 (1273): Unknown collation: 'utf8mb4_0900_ai_ci'
通过以下命令即可修复,使导入成功。
cd hotgo/server/storage/data/
find . -name "*.sql" -type f -exec sed -i 's/utf8mb3/utf8mb4/g' {} +
find . -type f -name "*.sql" -exec sed -i 's/utf8mb4_0900_ai_ci/utf8mb4_general_ci/g' {} +
find . -type f -name "*.sql" -exec sed -i 's/utf8_general_ci/utf8mb4_general_ci/g' {} +
运行 hotgo
# 前端服务
cd hotgo/web
yarn
yarn dev
# 后端服务
cd hotgo/server
go run main.go
插件使用
创建插件
登陆后台,点击左侧菜单【开发工具】->【插件管理】->【创建新插件】,填写插件信息,点击【确认创建】即可。
我这里的功能分组选择了主要业务。 插件标签和插件报名都填写的是 compat_scan。 标签只是标识,可以填写中文。
插件创建成功后会在服务端对应的项目目录中生成插件模块文件,并自动注册到当前项目中。
会发现前后端都生成了对应的文件。
server/addons/compat_scan/
server/addons/modules/compat_scan.go
web/src/api/addons/compat_scan/
web/src/views/addons/compat_scan/
详细文件列表如下:
new file: server/addons/compat_scan/README.MD
new file: server/addons/compat_scan/api/admin/config/config.go
new file: server/addons/compat_scan/api/admin/index/index.go
new file: server/addons/compat_scan/api/api/index/index.go
new file: server/addons/compat_scan/api/home/index/index.go
new file: server/addons/compat_scan/api/websocket/index/index.go
new file: server/addons/compat_scan/controller/admin/sys/config.go
new file: server/addons/compat_scan/controller/admin/sys/index.go
new file: server/addons/compat_scan/controller/api/index.go
new file: server/addons/compat_scan/controller/home/index.go
new file: server/addons/compat_scan/controller/websocket/index.go
new file: server/addons/compat_scan/crons/crons.go
new file: server/addons/compat_scan/global/global.go
new file: server/addons/compat_scan/global/init.go
new file: server/addons/compat_scan/logic/.gitkeep
new file: server/addons/compat_scan/logic/logic.go
new file: server/addons/compat_scan/logic/sys/config.go
new file: server/addons/compat_scan/logic/sys/index.go
new file: server/addons/compat_scan/main.go
new file: server/addons/compat_scan/model/config.go
new file: server/addons/compat_scan/model/input/sysin/config.go
new file: server/addons/compat_scan/model/input/sysin/index.go
new file: server/addons/compat_scan/queues/queues.go
new file: server/addons/compat_scan/resource/public/.gitkeep
new file: server/addons/compat_scan/resource/public/default
new file: server/addons/compat_scan/resource/template/home/index.html
new file: server/addons/compat_scan/router/admin.go
new file: server/addons/compat_scan/router/api.go
new file: server/addons/compat_scan/router/genrouter/init.go
new file: server/addons/compat_scan/router/home.go
new file: server/addons/compat_scan/router/websocket.go
new file: server/addons/compat_scan/service/.gitkeep
new file: server/addons/compat_scan/service/sys.go
new file: server/addons/modules/compat_scan.go
new file: web/src/api/addons/compat_scan/config/index.ts
new file: web/src/views/addons/compat_scan/config/BasicSetting.vue
new file: web/src/views/addons/compat_scan/config/system.vue
插件安装
如果项目没有热更新,需要手动重启服务端。
服务重启后,会在插件管理列表中显示出刚刚创建的插件,点击【安装模块】即可。
前台可以访问的页面:
- http://localhost:8000/home/compat_scan/index/test 接口可以访问的地址:
- http://localhost:8000/api/compat_scan/index/test
- http://localhost:8000/admin/compat_scan/index/test
当前我们是超级管理员,所以我们有所有权限。下面我们只需要创建插件对应的菜单。
添加一级菜单
【权限管理】->【菜单权限】->【添加菜单】。
菜单类型: 目录
上机目录: 根目录
路由地址,组建路径: /compat_scan
路由别名: compat_scan
组件路径: LAYOUT
不填写此项时,将不会显示页面框架,而只单纯展示页面内容
添加子菜单
由于我们在刚刚生成的代码中发现了 addons/compat_scan/config
目录相关system
页面
所以我们可以现在就直接添加插件"配置"的子菜单
【权限管理】->【菜单权限】。
选中刚刚添加的一级菜单compat_scan
,点击【添加子菜单】
刚刚选中了创建的一级菜单,所以上级目录已经创建好。
二级菜单图标似乎不用。
路由地址和别名: compat_scan_config
组件路径填写 system
页面路径: /addons/compat_scan/config/system
其它填写项: 默认
至此刷新页面,即可在后台管理中看到菜单,并点击菜单,看见页面内容
使用菜单
点击菜单中刚刚创建的配置
菜单,发现有一个错误提示,这是因为后端数据库没有对应的记录导致的。
只需要 找到数据库中的 hg_sys_addons_config
表,将 hgexample
记录复制后,将插件名addon_name
改为 compat_scan
即可。
数据库
mysql to sqlite3
docker run -it \
--workdir $(pwd) \
--volume $(pwd):$(pwd) \
--rm ghcr.io/techouse/sqlite3-to-mysql:latest \
--sqlite-file baz.db \
--mysql-user adminer \
--mysql-password adminer \
--mysql-database test \
--mysql-host 192.168.1.101
docker run -it \
--workdir $(pwd) \
--volume $(pwd):$(pwd) \
--rm ghcr.io/techouse/mysql-to-sqlite3:latest \
--sqlite-file test.db \
--mysql-user adminer \
--mysql-password adminer \
--mysql-database test \
--mysql-host 192.168.1.101
线上转换: https://brunocassol.com/mysql2sqlite/ 也可以考虑线上转换:https://www.rebasedata.com/convert-sql-to-sqlite-online