- 替换 Beego 框架为 GoFrame v2 - 重构项目结构: controller/service/dao/middleware 分层 - 替换自定义 crons 包为 gcron - 模板从 views/ 迁移到 resource/template/ - 配置从 conf/app.conf 迁移到 config.yml - 数据库从 MySQL 切换为 SQLite (modernc.org/sqlite) - 移除 agent/ 远程执行器(待后续迁移) - 移除 crons/ 自定义定时器包 - 静态资源整理到 resource/static/
169 lines
7.7 KiB
Go
169 lines
7.7 KiB
Go
package boot
|
||
|
||
import (
|
||
"context"
|
||
"time"
|
||
|
||
"ppgo_job/service/scheduler"
|
||
|
||
"github.com/gogf/gf/v2/frame/g"
|
||
)
|
||
|
||
func init() {
|
||
ctx := context.Background()
|
||
g.Log().Info(ctx, "PPGo_Job 正在初始化...")
|
||
|
||
autoInitDB(ctx)
|
||
scheduler.Scheduler.Init(ctx)
|
||
|
||
g.Log().Info(ctx, "PPGo_Job 初始化完成")
|
||
}
|
||
|
||
func autoInitDB(ctx context.Context) {
|
||
tables := []string{
|
||
`CREATE TABLE IF NOT EXISTS pp_uc_admin (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
login_name TEXT NOT NULL UNIQUE, real_name TEXT NOT NULL DEFAULT '',
|
||
password TEXT NOT NULL DEFAULT '', role_ids TEXT NOT NULL DEFAULT '',
|
||
phone TEXT NOT NULL DEFAULT '', email TEXT NOT NULL DEFAULT '',
|
||
dingtalk TEXT NOT NULL DEFAULT '', wechat TEXT NOT NULL DEFAULT '',
|
||
salt TEXT NOT NULL DEFAULT '', last_login INTEGER NOT NULL DEFAULT 0,
|
||
last_ip TEXT NOT NULL DEFAULT '', status INTEGER NOT NULL DEFAULT 1,
|
||
create_id INTEGER NOT NULL DEFAULT 0, update_id INTEGER NOT NULL DEFAULT 0,
|
||
create_time INTEGER NOT NULL DEFAULT 0, update_time INTEGER NOT NULL DEFAULT 0
|
||
)`,
|
||
`CREATE TABLE IF NOT EXISTS pp_uc_auth (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
auth_name TEXT NOT NULL DEFAULT '', auth_url TEXT NOT NULL DEFAULT '',
|
||
user_id INTEGER NOT NULL DEFAULT 0, pid INTEGER NOT NULL DEFAULT 0,
|
||
sort INTEGER NOT NULL DEFAULT 0, icon TEXT NOT NULL DEFAULT '',
|
||
is_show INTEGER NOT NULL DEFAULT 1, status INTEGER NOT NULL DEFAULT 1,
|
||
create_id INTEGER NOT NULL DEFAULT 0, update_id INTEGER NOT NULL DEFAULT 0,
|
||
create_time INTEGER NOT NULL DEFAULT 0, update_time INTEGER NOT NULL DEFAULT 0
|
||
)`,
|
||
`CREATE TABLE IF NOT EXISTS pp_uc_role (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
role_name TEXT NOT NULL DEFAULT '', detail TEXT NOT NULL DEFAULT '',
|
||
server_group_ids TEXT NOT NULL DEFAULT '', task_group_ids TEXT NOT NULL DEFAULT '',
|
||
status INTEGER NOT NULL DEFAULT 1,
|
||
create_id INTEGER NOT NULL DEFAULT 0, update_id INTEGER NOT NULL DEFAULT 0,
|
||
create_time INTEGER NOT NULL DEFAULT 0, update_time INTEGER NOT NULL DEFAULT 0
|
||
)`,
|
||
`CREATE TABLE IF NOT EXISTS pp_uc_role_auth (
|
||
auth_id INTEGER NOT NULL, role_id INTEGER NOT NULL,
|
||
PRIMARY KEY (auth_id, role_id)
|
||
)`,
|
||
`CREATE TABLE IF NOT EXISTS pp_task_server_group (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
group_name TEXT NOT NULL DEFAULT '', description TEXT NOT NULL DEFAULT '',
|
||
create_id INTEGER NOT NULL DEFAULT 0, update_id INTEGER NOT NULL DEFAULT 0,
|
||
create_time INTEGER NOT NULL DEFAULT 0, update_time INTEGER NOT NULL DEFAULT 0,
|
||
status INTEGER NOT NULL DEFAULT 1
|
||
)`,
|
||
`CREATE TABLE IF NOT EXISTS pp_task_server (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
group_id INTEGER NOT NULL DEFAULT 0, connection_type INTEGER NOT NULL DEFAULT 0,
|
||
server_name TEXT NOT NULL DEFAULT '', server_account TEXT NOT NULL DEFAULT '',
|
||
server_outer_ip TEXT NOT NULL DEFAULT '', server_ip TEXT NOT NULL DEFAULT '',
|
||
port INTEGER NOT NULL DEFAULT 22, password TEXT NOT NULL DEFAULT '',
|
||
private_key_src TEXT NOT NULL DEFAULT '', public_key_src TEXT NOT NULL DEFAULT '',
|
||
type INTEGER NOT NULL DEFAULT 0, detail TEXT NOT NULL DEFAULT '',
|
||
create_time INTEGER NOT NULL DEFAULT 0, update_time INTEGER NOT NULL DEFAULT 0,
|
||
status INTEGER NOT NULL DEFAULT 1
|
||
)`,
|
||
`CREATE TABLE IF NOT EXISTS pp_task_group (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
group_name TEXT NOT NULL DEFAULT '', description TEXT NOT NULL DEFAULT '',
|
||
create_id INTEGER NOT NULL DEFAULT 0, update_id INTEGER NOT NULL DEFAULT 0,
|
||
create_time INTEGER NOT NULL DEFAULT 0, update_time INTEGER NOT NULL DEFAULT 0,
|
||
status INTEGER NOT NULL DEFAULT 1
|
||
)`,
|
||
`CREATE TABLE IF NOT EXISTS pp_task (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
group_id INTEGER NOT NULL DEFAULT 0, server_ids TEXT NOT NULL DEFAULT '',
|
||
server_type INTEGER NOT NULL DEFAULT 0, task_name TEXT NOT NULL DEFAULT '',
|
||
description TEXT NOT NULL DEFAULT '', cron_spec TEXT NOT NULL DEFAULT '',
|
||
concurrent INTEGER NOT NULL DEFAULT 0, command TEXT NOT NULL DEFAULT '',
|
||
timeout INTEGER NOT NULL DEFAULT 0, execute_times INTEGER NOT NULL DEFAULT 0,
|
||
prev_time INTEGER NOT NULL DEFAULT 0, status INTEGER NOT NULL DEFAULT 2,
|
||
is_notify INTEGER NOT NULL DEFAULT 0, notify_type INTEGER NOT NULL DEFAULT 0,
|
||
notify_tpl_id INTEGER NOT NULL DEFAULT 0, notify_user_ids TEXT NOT NULL DEFAULT '',
|
||
create_id INTEGER NOT NULL DEFAULT 0, update_id INTEGER NOT NULL DEFAULT 0,
|
||
create_time INTEGER NOT NULL DEFAULT 0, update_time INTEGER NOT NULL DEFAULT 0
|
||
)`,
|
||
`CREATE TABLE IF NOT EXISTS pp_task_log (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
task_id INTEGER NOT NULL DEFAULT 0, server_id INTEGER NOT NULL DEFAULT 0,
|
||
server_name TEXT NOT NULL DEFAULT '', output TEXT NOT NULL DEFAULT '',
|
||
error TEXT NOT NULL DEFAULT '', status INTEGER NOT NULL DEFAULT 0,
|
||
process_time INTEGER NOT NULL DEFAULT 0, create_time INTEGER NOT NULL DEFAULT 0
|
||
)`,
|
||
`CREATE TABLE IF NOT EXISTS pp_task_ban (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
code TEXT NOT NULL DEFAULT '', create_time INTEGER NOT NULL DEFAULT 0,
|
||
update_time INTEGER NOT NULL DEFAULT 0, status INTEGER NOT NULL DEFAULT 1
|
||
)`,
|
||
`CREATE TABLE IF NOT EXISTS pp_notify_tpl (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
type TEXT NOT NULL DEFAULT 'system', tpl_name TEXT NOT NULL DEFAULT '',
|
||
tpl_type INTEGER NOT NULL DEFAULT 0, title TEXT NOT NULL DEFAULT '',
|
||
content TEXT NOT NULL DEFAULT '', status INTEGER NOT NULL DEFAULT 1,
|
||
create_id INTEGER NOT NULL DEFAULT 0, update_id INTEGER NOT NULL DEFAULT 0,
|
||
create_time INTEGER NOT NULL DEFAULT 0, update_time INTEGER NOT NULL DEFAULT 0
|
||
)`,
|
||
}
|
||
|
||
for _, sql := range tables {
|
||
if _, err := g.DB().Exec(ctx, sql); err != nil {
|
||
g.Log().Warningf(ctx, "建表失败: %v", err)
|
||
}
|
||
}
|
||
|
||
var adminCount int
|
||
_ = g.DB().GetScan(ctx, &adminCount, "SELECT COUNT(*) FROM pp_uc_admin WHERE id=?", 1)
|
||
if adminCount == 0 {
|
||
_, _ = g.DB().Exec(ctx,
|
||
"INSERT INTO pp_uc_admin(id, login_name, real_name, password, role_ids, salt, status, create_time, update_time) VALUES(?,?,?,?,?,?,?,?,?)",
|
||
1, "admin", "管理员", "bc9b5718afdffe85fb13555347969ff5", "0", "abcd", 1, time.Now().Unix(), time.Now().Unix(),
|
||
)
|
||
g.Log().Info(ctx, "已创建默认管理员 admin / 123456")
|
||
}
|
||
|
||
var authCount int
|
||
_ = g.DB().GetScan(ctx, &authCount, "SELECT COUNT(*) FROM pp_uc_auth")
|
||
if authCount == 0 {
|
||
seedAuth(ctx)
|
||
}
|
||
}
|
||
|
||
func seedAuth(ctx context.Context) {
|
||
now := time.Now().Unix()
|
||
type row struct{ id, pid, sort, isShow int; name, url, icon string }
|
||
rows := []row{
|
||
// pid=0 = 一级菜单
|
||
{1, 0, 1, 1, "任务管理", " ", "fa-tasks"},
|
||
{2, 0, 2, 1, "服务器管理", " ", "fa-server"},
|
||
{3, 0, 3, 1, "系统设置", " ", "fa-cog"},
|
||
{4, 0, 4, 1, "日志管理", " ", "fa-file-text"},
|
||
{5, 0, 5, 1, "权限管理", " ", "fa-lock"},
|
||
// 二级菜单(pid=父菜单的id)
|
||
{14, 1, 1, 1, "任务列表", "/task/list", "fa-tasks"},
|
||
{15, 1, 2, 1, "任务审核", "/task/audit_list", "fa-check"},
|
||
{16, 2, 1, 1, "服务器列表", "/server/list", "fa-server"},
|
||
{6, 3, 1, 1, "任务分组", "/group/list", "fa-folder"},
|
||
{7, 3, 2, 1, "资源分组", "/server_group/list","fa-sitemap"},
|
||
{8, 3, 3, 1, "禁用命令", "/ban/list", "fa-ban"},
|
||
{9, 3, 4, 1, "通知模板", "/notify_tpl/list", "fa-bullhorn"},
|
||
{10, 4, 1, 1, "执行日志", "/task_log/list", "fa-file"},
|
||
{11, 5, 1, 1, "权限因子", "/auth/index", "fa-key"},
|
||
{12, 5, 2, 1, "角色管理", "/role/list", "fa-group"},
|
||
{13, 5, 3, 1, "管理员管理","/admin/list", "fa-user"},
|
||
}
|
||
for _, r := range rows {
|
||
g.DB().Exec(ctx,
|
||
"INSERT INTO pp_uc_auth(id, auth_name, auth_url, pid, sort, icon, is_show, status, create_time, update_time) VALUES(?,?,?,?,?,?,?,1,?,?)",
|
||
r.id, r.name, r.url, r.pid, r.sort, r.icon, r.isShow, now, now,
|
||
)
|
||
}
|
||
}
|