# 云静Admin(go) **Repository Path**: worklz/yunj-admin-go ## Basic Information - **Project Name**: 云静Admin(go) - **Description**: 云静Admin(go)是一款免费开源且自适应移动/PC的后台开发框架,基于gin、gorm等集成了表单、表格、数据导入构建器等相关功能模块,以方便开发者快速构建自己的应用。在使用过程中,若发现待优化问题请及时与我们取得联系。 - **Primary Language**: Go - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-01-17 - **Last Updated**: 2025-09-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 云静Admin(go) ## 体验地址 * 地址:[http://goadmin.iyunj.cn/admin](http://goadmin.iyunj.cn/admin) * 账户:admin 密码:123456 ## 目录说明 - app -- 应用的业务代码目录 - controller -- 控制器层 - corn -- 定时任务 - enum -- 枚举 - event -- 事件 - model -- 模型层 - queue -- 队列 - service-- 服务层 - config -- 配置文件 - pkg -- 公共代码库 - boot -- 服务启动(预加载资源) - global -- 全局变量 - html -- html模板(pongo2) - shutdown -- 服务关闭(释放资源) - yunj -- 云静核心包 - resource -- 资源目录 - static -- 静态资源目录(含css、js、图片等) - view -- 视图目录 - admin -- 管理后台视图目录 - page.html -- 管理后台页面父页面与pkg\yunj\resource\view\admin\page.html建立了软连接 - client -- 前台视图目录 - router -- 路由 - storage -- 存储目录 - libs -- 其他资源目录 - log -- 日志目录 - upload -- 上传目录 - main.go -- 程序启动/打包主文件 ## 创建数据库 ```sql -- 创建数据库 CREATE DATABASE db_yunj_admin_go CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 创建账户 CREATE USER 'your_username'@'your_host' IDENTIFIED BY 'your_password'; -- your_username 是你想要创建的账户的用户名。 -- your_host 指定了账户可以从哪个主机连接到 MySQL 服务器。通常,你可以使用 localhost 来限制账户只能从本地主机连接,或者使用 % 来允许从任何主机连接(但出于安全考虑,通常不建议这样做)。 -- your_password 是账户的密码。 CREATE USER 'db_yunj_admin_go'@'%' IDENTIFIED BY '123456'; -- 授予权限 GRANT ALL PRIVILEGES ON your_database_name.* TO 'your_username'@'your_host'; -- 创建账户后,你需要使用 GRANT 语句授予该账户访问数据库的权限。 -- 这条语句授予了 your_username 账户对 your_database_name 数据库的所有权限。如果你只想授予特定的权限(如 SELECT、INSERT、UPDATE、DELETE 等),你可以替换 ALL PRIVILEGES 为相应的权限列表。 GRANT ALL PRIVILEGES ON db_yunj_admin_go.* TO 'db_yunj_admin_go'@'%'; -- 刷新权限 -- 虽然 MySQL 通常会自动刷新权限表,但你可以手动执行以下命令来确保权限更改立即生效。 FLUSH PRIVILEGES; ``` ## 配置文件 进入项目根目录,复制一份:`config\example.config.yaml`配置示例文件 为:`config\config.yaml`, 修改其中MySQL、Redis等相关配置信息。 ## docker部署项目 前提:当前环境安装了docker 完成了配置文件初始化后,进入项目根目录,执行以下命令: ```bash # 进入项目根目录 # 构建镜像:yunj-admin-go 为镜像名(若可以本地构建镜像则在本地构建后上传,上传地址替换为自己的) docker rmi yunj-admin-go && docker rmi crpi-cb1t6ui6q7epw7vo.cn-chengdu.personal.cr.aliyuncs.com/worklz/yunj-admin-go docker build -t yunj-admin-go . # 镜像打标签 docker tag yunj-admin-go crpi-cb1t6ui6q7epw7vo.cn-chengdu.personal.cr.aliyuncs.com/worklz/yunj-admin-go # 镜像推送 docker push crpi-cb1t6ui6q7epw7vo.cn-chengdu.personal.cr.aliyuncs.com/worklz/yunj-admin-go ``` ```bash # 进入项目根目录,拉取最新代码 cd /www/go/src/yunj-admin-go git pull # 停止并删除已有容器 docker rm -f yunj-admin-go # 删除镜像 docker rmi yunj-admin-go && docker rmi crpi-cb1t6ui6q7epw7vo.cn-chengdu.personal.cr.aliyuncs.com/worklz/yunj-admin-go # 拉取镜像,标记镜像 docker pull crpi-cb1t6ui6q7epw7vo.cn-chengdu.personal.cr.aliyuncs.com/worklz/yunj-admin-go && docker tag crpi-cb1t6ui6q7epw7vo.cn-chengdu.personal.cr.aliyuncs.com/worklz/yunj-admin-go yunj-admin-go # 启动容器:yunj-admin-go 为容器名 # /www/go/src/yunj-admin-go 为项目根目录绝对路径 docker run --name yunj-admin-go \ -v /www/go/src/yunj-admin-go/config:/app/config \ -v /www/go/src/yunj-admin-go/storage:/app/storage \ -v /www/go/src/yunj-admin-go/resource:/app/resource \ -v /www/go/src/yunj-admin-go/pkg/yunj/resource:/app/pkg/yunj/resource \ -p 8083:8083 \ -d yunj-admin-go ``` 本机浏览器访问:`http://127.0.0.1:8083` 即可验证部署成功 ## 队列任务(当前是redis队列) 队列文件目录:`app\queue\...` 1. 创建队列结构体,嵌套`yunj/pkg/yunj/core/queue.Queue`,实现`yunj/pkg/yunj/core/queue.QueueInterface`接口 参考:`app\queue\tests.go` 2. 添加队列项配置`app\queue\config\queues.go` ```golang import ( appQueue "yunj/app/queue" "yunj/pkg/yunj/core/queue" ) // 队列 var Queues = []queue.QueueInterface{ appQueue.Tests, } ``` 3. 队列消息推送 ```golang appQueue.Tests.Push(推送消息...) ``` 4. 重新编译打包运行程序 > 队列消费状态,可在后台管理页面内进行管理 ## 添加/关闭定时任务 定时任务文件目录:`app\corn\...` ### 添加定时任务 1. 创建定时任务结构体,嵌套`yunj/pkg/yunj/core/corn.Task`,实现`yunj/pkg/yunj/core/corn.TaskInterface`接口 参考:`app\corn\tests.go` 2. 添加定时任务项配置`app/corn/config/tasks.go` ```golang import ( appCorn "yunj/app/corn" "yunj/pkg/yunj/core/corn" ) var Tasks = []corn.TaskInterface{ appCorn.Tests, } ``` 3. 重新编译打包运行程序 > 定时任务运行状态,可在后台管理页面内进行管理 ## 事件订阅和发布 事件配置文件目录:`app\event\...` subscribes.go文件地址:`app\event\subscribes.go` ### 添加事件订阅 1. 事件订阅配置文件:`app\event\subscribes.go` ```golang // Subscribes 事件订阅配置输出变量 var Subscribes = map[string][]any{ // 测试事件 "test": { func(p1 string, p2 string) error { fmt.Printf("测试事件订阅方法1 参数1:%v 参数2:%v\r\n", p1, p2) return nil }, func(p1 string, p2 string) error { fmt.Printf("测试事件订阅方法2 参数1:%v 参数2:%v\r\n", p1, p2) return nil }, }, } ``` 2. 重新编译打包运行程序 ### 事件发布 ```golang import ( "yunj/pkg/yunj/core/event" ) func main() { // ... event.Publish("test", "参数1", "参数2") // 输出如下: // 测试事件订阅方法2 参数1:参数1 参数2:参数2 // 测试事件订阅方法1 参数1:参数1 参数2:参数2 } ```