sqlx
This commit is contained in:
179
internal/erpserver/repository/system/menu/menu.go
Normal file
179
internal/erpserver/repository/system/menu/menu.go
Normal file
@@ -0,0 +1,179 @@
|
||||
package menu
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"management/internal/erpserver/model/system"
|
||||
"management/internal/erpserver/repository"
|
||||
"management/internal/pkg/sqldb"
|
||||
|
||||
"github.com/drhin/logger"
|
||||
)
|
||||
|
||||
type store struct {
|
||||
db *repository.Store
|
||||
log *logger.Logger
|
||||
}
|
||||
|
||||
func NewStore(db *repository.Store, log *logger.Logger) system.MenuRepository {
|
||||
return &store{
|
||||
db: db,
|
||||
log: log,
|
||||
}
|
||||
}
|
||||
|
||||
func (s *store) Create(ctx context.Context, obj *system.Menu) (*system.Menu, error) {
|
||||
//goland:noinspection ALL
|
||||
const q = `
|
||||
INSERT INTO sys_menu (
|
||||
name, display_name, url, type, parent_id, parent_path, avatar, style, visible, is_list, status, sort
|
||||
) VALUES (
|
||||
:name, :display_name, :url, :type, :parent_id, :parent_path, :avatar, :style, :visible, :is_list, :status, :sort
|
||||
);`
|
||||
|
||||
err := sqldb.NamedExecContext(ctx, s.log, s.db.DB(ctx), q, obj)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return obj, nil
|
||||
}
|
||||
|
||||
func (s *store) Update(ctx context.Context, obj *system.Menu) error {
|
||||
const q = `
|
||||
UPDATE sys_menu
|
||||
SET name = :name,
|
||||
display_name = :display_name,
|
||||
url = :url,
|
||||
type = :type,
|
||||
parent_id = :parent_id,
|
||||
parent_path = :parent_path,
|
||||
avatar = :avatar,
|
||||
style = :style,
|
||||
visible = :visible,
|
||||
is_list = :is_list,
|
||||
status = :status,
|
||||
sort = :sort,
|
||||
updated_at = :updated_at
|
||||
WHERE id = :id;`
|
||||
|
||||
return sqldb.NamedExecContext(ctx, s.log, s.db.DB(ctx), q, obj)
|
||||
}
|
||||
|
||||
func (s *store) Get(ctx context.Context, id int32) (*system.Menu, error) {
|
||||
//goland:noinspection ALL
|
||||
const q = `
|
||||
SELECT
|
||||
id, name, display_name, url, type, parent_id, parent_path, avatar, style,
|
||||
visible, is_list, status, sort, created_at, updated_at
|
||||
FROM
|
||||
sys_menu
|
||||
WHERE
|
||||
id = :id;`
|
||||
|
||||
data := map[string]any{
|
||||
"id": id,
|
||||
}
|
||||
|
||||
var menu system.Menu
|
||||
err := sqldb.NamedQueryStruct(ctx, s.log, s.db.DB(ctx), q, data, &menu)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("select id menu: %w", err)
|
||||
}
|
||||
|
||||
return &menu, nil
|
||||
}
|
||||
|
||||
func (s *store) GetByUrl(ctx context.Context, url string) (*system.Menu, error) {
|
||||
//goland:noinspection ALL
|
||||
const q = `
|
||||
SELECT
|
||||
id, name, display_name, url, type, parent_id, parent_path, avatar, style,
|
||||
visible, is_list, status, sort, created_at, updated_at
|
||||
FROM
|
||||
sys_menu
|
||||
WHERE
|
||||
url = :url;`
|
||||
|
||||
data := map[string]any{
|
||||
"url": url,
|
||||
}
|
||||
|
||||
var menu system.Menu
|
||||
err := sqldb.NamedQueryStruct(ctx, s.log, s.db.DB(ctx), q, data, &menu)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("select id menu: %w", err)
|
||||
}
|
||||
|
||||
return &menu, nil
|
||||
}
|
||||
|
||||
func (s *store) All(ctx context.Context) ([]*system.Menu, error) {
|
||||
//goland:noinspection ALL
|
||||
const q = `
|
||||
SELECT
|
||||
id, name, display_name, url, type, parent_id, parent_path, avatar, style,
|
||||
visible, is_list, status, sort, created_at, updated_at
|
||||
FROM
|
||||
sys_menu;`
|
||||
|
||||
data := map[string]any{}
|
||||
|
||||
var menus []system.Menu
|
||||
err := sqldb.NamedQuerySlice(ctx, s.log, s.db.DB(ctx), q, data, &menus)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("select all menu: %w", err)
|
||||
}
|
||||
|
||||
return toPointer(menus), nil
|
||||
}
|
||||
|
||||
func (s *store) Count(ctx context.Context) (int64, error) {
|
||||
//goland:noinspection ALL
|
||||
const q = `
|
||||
SELECT
|
||||
COUNT(1)
|
||||
FROM
|
||||
sys_menu`
|
||||
|
||||
data := map[string]any{}
|
||||
|
||||
var count struct {
|
||||
Count int64 `db:"count"`
|
||||
}
|
||||
|
||||
err := sqldb.NamedQueryStruct(ctx, s.log, s.db.DB(ctx), q, data, &count)
|
||||
if err != nil {
|
||||
return 0, fmt.Errorf("select count menu: %w", err)
|
||||
}
|
||||
|
||||
return count.Count, nil
|
||||
}
|
||||
|
||||
func (s *store) RebuildParentPath(ctx context.Context) error {
|
||||
query := `
|
||||
UPDATE sys_menu AS tm
|
||||
SET parent_path = (SELECT ',' || string_agg(cast(t.parent_id AS VARCHAR), ',') || ','
|
||||
FROM (WITH RECURSIVE temp (id, parent_id) AS (SELECT id, tm.parent_id
|
||||
FROM sys_menu
|
||||
WHERE id = tm.id
|
||||
UNION ALL
|
||||
SELECT sys_menu.id, sys_menu.parent_id
|
||||
FROM sys_menu,
|
||||
temp
|
||||
WHERE sys_menu.id = temp.parent_id)
|
||||
SELECT id, parent_id
|
||||
FROM temp
|
||||
ORDER BY id) AS t)
|
||||
WHERE tm.status = 0;`
|
||||
return sqldb.NamedExecContext(ctx, s.log, s.db.DB(ctx), query, nil)
|
||||
}
|
||||
|
||||
func toPointer(data []system.Menu) []*system.Menu {
|
||||
var res []*system.Menu
|
||||
for _, v := range data {
|
||||
res = append(res, &v)
|
||||
}
|
||||
return res
|
||||
}
|
||||
829
internal/erpserver/repository/system/menu/menu_seed.go
Normal file
829
internal/erpserver/repository/system/menu/menu_seed.go
Normal file
@@ -0,0 +1,829 @@
|
||||
package menu
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"management/internal/erpserver/model/system"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
func (s *store) Initialize(ctx context.Context) error {
|
||||
count, err := s.Count(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if count > 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
sys, err := s.Create(ctx, &system.Menu{
|
||||
Name: "系统管理",
|
||||
DisplayName: "系统管理",
|
||||
Url: uuid.Must(uuid.NewRandom()).String(),
|
||||
Type: "node",
|
||||
ParentID: 0,
|
||||
ParentPath: ",0,",
|
||||
Avatar: "layui-icon layui-icon-set",
|
||||
Style: "",
|
||||
Visible: true,
|
||||
IsList: false,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
accountPermission, err := s.Create(ctx, &system.Menu{
|
||||
Name: "账户权限",
|
||||
DisplayName: "账户权限",
|
||||
Url: uuid.Must(uuid.NewRandom()).String(),
|
||||
Type: "node",
|
||||
ParentID: sys.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", sys.ParentPath, sys.ID),
|
||||
Avatar: "layui-icon layui-icon-vercode",
|
||||
Style: "",
|
||||
Visible: true,
|
||||
IsList: false,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
systemMenu, err := s.Create(ctx, &system.Menu{
|
||||
Name: "菜单管理",
|
||||
DisplayName: "菜单管理",
|
||||
Url: "/system/menu/list",
|
||||
Type: "menu",
|
||||
ParentID: accountPermission.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", accountPermission.ParentPath, accountPermission.ID),
|
||||
Avatar: "",
|
||||
Style: "",
|
||||
Visible: true,
|
||||
IsList: true,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
systemRole, err := s.Create(ctx, &system.Menu{
|
||||
Name: "角色管理",
|
||||
DisplayName: "角色管理",
|
||||
Url: "/system/role/list",
|
||||
Type: "menu",
|
||||
ParentID: accountPermission.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", accountPermission.ParentPath, accountPermission.ID),
|
||||
Avatar: "",
|
||||
Style: "",
|
||||
Visible: true,
|
||||
IsList: true,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
systemDepartment, err := s.Create(ctx, &system.Menu{
|
||||
Name: "部门管理",
|
||||
DisplayName: "部门管理",
|
||||
Url: "/system/department/list",
|
||||
Type: "menu",
|
||||
ParentID: accountPermission.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", accountPermission.ParentPath, accountPermission.ID),
|
||||
Avatar: "",
|
||||
Style: "",
|
||||
Visible: true,
|
||||
IsList: true,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
systemUser, err := s.Create(ctx, &system.Menu{
|
||||
Name: "用户管理",
|
||||
DisplayName: "用户管理",
|
||||
Url: "/system/user/list",
|
||||
Type: "menu",
|
||||
ParentID: accountPermission.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", accountPermission.ParentPath, accountPermission.ID),
|
||||
Avatar: "",
|
||||
Style: "",
|
||||
Visible: true,
|
||||
IsList: true,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = s.Create(ctx, &system.Menu{
|
||||
Name: "登陆日志",
|
||||
DisplayName: "登陆日志",
|
||||
Url: "/system/login_log/list",
|
||||
Type: "menu",
|
||||
ParentID: accountPermission.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", accountPermission.ParentPath, accountPermission.ID),
|
||||
Avatar: "",
|
||||
Style: "",
|
||||
Visible: true,
|
||||
IsList: true,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = s.Create(ctx, &system.Menu{
|
||||
Name: "审计日志",
|
||||
DisplayName: "审计日志",
|
||||
Url: "/system/audit_log/list",
|
||||
Type: "menu",
|
||||
ParentID: accountPermission.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", accountPermission.ParentPath, accountPermission.ID),
|
||||
Avatar: "",
|
||||
Style: "",
|
||||
Visible: true,
|
||||
IsList: true,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 菜单
|
||||
_, err = s.Create(ctx, &system.Menu{
|
||||
Name: "新增",
|
||||
DisplayName: "新增",
|
||||
Url: "/system/menu/add",
|
||||
Type: "btn",
|
||||
ParentID: systemMenu.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", systemMenu.ParentPath, systemMenu.ID),
|
||||
Avatar: "layui-icon layui-icon-add-1",
|
||||
Style: "pear-btn-primary pear-btn-sm",
|
||||
Visible: true,
|
||||
IsList: false,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = s.Create(ctx, &system.Menu{
|
||||
Name: "新增子菜单",
|
||||
DisplayName: "新增子菜单",
|
||||
Url: "/system/menu/add_children",
|
||||
Type: "btn",
|
||||
ParentID: systemMenu.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", systemMenu.ParentPath, systemMenu.ID),
|
||||
Avatar: "layui-icon layui-icon-add-1",
|
||||
Style: "pear-btn-primary pear-btn-xs",
|
||||
Visible: true,
|
||||
IsList: false,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = s.Create(ctx, &system.Menu{
|
||||
Name: "编辑",
|
||||
DisplayName: "编辑",
|
||||
Url: "/system/menu/edit",
|
||||
Type: "btn",
|
||||
ParentID: systemMenu.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", systemMenu.ParentPath, systemMenu.ID),
|
||||
Avatar: "layui-icon layui-icon-edit",
|
||||
Style: "pear-btn-primary pear-btn-xs",
|
||||
Visible: true,
|
||||
IsList: false,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = s.Create(ctx, &system.Menu{
|
||||
Name: "保存",
|
||||
DisplayName: "保存",
|
||||
Url: "/system/menu/save",
|
||||
Type: "btn",
|
||||
ParentID: systemMenu.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", systemMenu.ParentPath, systemMenu.ID),
|
||||
Avatar: "layui-icon layui-icon-ok",
|
||||
Style: "pear-btn-primary pear-btn-sm",
|
||||
Visible: true,
|
||||
IsList: false,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = s.Create(ctx, &system.Menu{
|
||||
Name: "数据",
|
||||
DisplayName: "数据",
|
||||
Url: "/system/menu/data",
|
||||
Type: "btn",
|
||||
ParentID: systemMenu.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", systemMenu.ParentPath, systemMenu.ID),
|
||||
Avatar: "",
|
||||
Style: "",
|
||||
Visible: true,
|
||||
IsList: false,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = s.Create(ctx, &system.Menu{
|
||||
Name: "刷新",
|
||||
DisplayName: "刷新",
|
||||
Url: "/system/menu/refresh_cache",
|
||||
Type: "btn",
|
||||
ParentID: systemMenu.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", systemMenu.ParentPath, systemMenu.ID),
|
||||
Avatar: "layui-icon layui-icon-refresh",
|
||||
Style: "pear-btn-sm",
|
||||
Visible: true,
|
||||
IsList: false,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 角色
|
||||
_, err = s.Create(ctx, &system.Menu{
|
||||
Name: "新增",
|
||||
DisplayName: "新增",
|
||||
Url: "/system/role/add",
|
||||
Type: "btn",
|
||||
ParentID: systemRole.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", systemRole.ParentPath, systemRole.ID),
|
||||
Avatar: "layui-icon layui-icon-add-1",
|
||||
Style: "pear-btn-primary pear-btn-sm",
|
||||
Visible: true,
|
||||
IsList: false,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = s.Create(ctx, &system.Menu{
|
||||
Name: "编辑",
|
||||
DisplayName: "编辑",
|
||||
Url: "/system/role/edit",
|
||||
Type: "btn",
|
||||
ParentID: systemRole.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", systemRole.ParentPath, systemRole.ID),
|
||||
Avatar: "layui-icon layui-icon-edit",
|
||||
Style: "pear-btn-primary pear-btn-xs",
|
||||
Visible: true,
|
||||
IsList: false,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = s.Create(ctx, &system.Menu{
|
||||
Name: "保存",
|
||||
DisplayName: "保存",
|
||||
Url: "/system/role/save",
|
||||
Type: "btn",
|
||||
ParentID: systemRole.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", systemRole.ParentPath, systemRole.ID),
|
||||
Avatar: "layui-icon layui-icon-ok",
|
||||
Style: "pear-btn-primary pear-btn-sm",
|
||||
Visible: true,
|
||||
IsList: false,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = s.Create(ctx, &system.Menu{
|
||||
Name: "数据",
|
||||
DisplayName: "数据",
|
||||
Url: "/system/role/data",
|
||||
Type: "btn",
|
||||
ParentID: systemRole.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", systemRole.ParentPath, systemRole.ID),
|
||||
Avatar: "",
|
||||
Style: "",
|
||||
Visible: true,
|
||||
IsList: false,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = s.Create(ctx, &system.Menu{
|
||||
Name: "刷新",
|
||||
DisplayName: "刷新",
|
||||
Url: "/system/role/refresh_cache",
|
||||
Type: "btn",
|
||||
ParentID: systemRole.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", systemRole.ParentPath, systemRole.ID),
|
||||
Avatar: "layui-icon layui-icon-refresh",
|
||||
Style: "pear-btn-sm",
|
||||
Visible: true,
|
||||
IsList: false,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = s.Create(ctx, &system.Menu{
|
||||
Name: "重建父路径",
|
||||
DisplayName: "重建父路径",
|
||||
Url: "/system/role/rebuild_parent_path",
|
||||
Type: "btn",
|
||||
ParentID: systemRole.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", systemRole.ParentPath, systemRole.ID),
|
||||
Avatar: "layui-icon layui-icon-refresh",
|
||||
Style: "pear-btn-danger pear-btn-sm",
|
||||
Visible: true,
|
||||
IsList: false,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = s.Create(ctx, &system.Menu{
|
||||
Name: "权限刷新",
|
||||
DisplayName: "权限刷新",
|
||||
Url: "/system/role/refresh_role_menus",
|
||||
Type: "btn",
|
||||
ParentID: systemRole.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", systemRole.ParentPath, systemRole.ID),
|
||||
Avatar: "layui-icon layui-icon-refresh",
|
||||
Style: "pear-btn-xs",
|
||||
Visible: true,
|
||||
IsList: false,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = s.Create(ctx, &system.Menu{
|
||||
Name: "设置权限",
|
||||
DisplayName: "设置权限",
|
||||
Url: "/system/role/set_menu",
|
||||
Type: "btn",
|
||||
ParentID: systemRole.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", systemRole.ParentPath, systemRole.ID),
|
||||
Avatar: "layui-icon layui-icon-set",
|
||||
Style: "pear-btn-danger pear-btn-xs",
|
||||
Visible: true,
|
||||
IsList: false,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 部门
|
||||
_, err = s.Create(ctx, &system.Menu{
|
||||
Name: "新增",
|
||||
DisplayName: "新增",
|
||||
Url: "/system/department/add",
|
||||
Type: "btn",
|
||||
ParentID: systemDepartment.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", systemDepartment.ParentPath, systemDepartment.ID),
|
||||
Avatar: "layui-icon layui-icon-add-1",
|
||||
Style: "pear-btn-primary pear-btn-sm",
|
||||
Visible: true,
|
||||
IsList: false,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = s.Create(ctx, &system.Menu{
|
||||
Name: "新增子部门",
|
||||
DisplayName: "新增子部门",
|
||||
Url: "/system/department/add_children",
|
||||
Type: "btn",
|
||||
ParentID: systemDepartment.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", systemDepartment.ParentPath, systemDepartment.ID),
|
||||
Avatar: "layui-icon layui-icon-add-1",
|
||||
Style: "pear-btn-primary pear-btn-xs",
|
||||
Visible: true,
|
||||
IsList: false,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = s.Create(ctx, &system.Menu{
|
||||
Name: "编辑",
|
||||
DisplayName: "编辑",
|
||||
Url: "/system/department/edit",
|
||||
Type: "btn",
|
||||
ParentID: systemDepartment.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", systemDepartment.ParentPath, systemDepartment.ID),
|
||||
Avatar: "layui-icon layui-icon-edit",
|
||||
Style: "pear-btn-primary pear-btn-xs",
|
||||
Visible: true,
|
||||
IsList: false,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = s.Create(ctx, &system.Menu{
|
||||
Name: "保存",
|
||||
DisplayName: "保存",
|
||||
Url: "/system/department/save",
|
||||
Type: "btn",
|
||||
ParentID: systemDepartment.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", systemDepartment.ParentPath, systemDepartment.ID),
|
||||
Avatar: "layui-icon layui-icon-ok",
|
||||
Style: "pear-btn-primary pear-btn-sm",
|
||||
Visible: true,
|
||||
IsList: false,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = s.Create(ctx, &system.Menu{
|
||||
Name: "数据",
|
||||
DisplayName: "数据",
|
||||
Url: "/system/department/data",
|
||||
Type: "btn",
|
||||
ParentID: systemDepartment.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", systemDepartment.ParentPath, systemDepartment.ID),
|
||||
Avatar: "",
|
||||
Style: "",
|
||||
Visible: true,
|
||||
IsList: false,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = s.Create(ctx, &system.Menu{
|
||||
Name: "刷新",
|
||||
DisplayName: "刷新",
|
||||
Url: "/system/department/refresh_cache",
|
||||
Type: "btn",
|
||||
ParentID: systemDepartment.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", systemDepartment.ParentPath, systemDepartment.ID),
|
||||
Avatar: "layui-icon layui-icon-refresh",
|
||||
Style: "pear-btn-sm",
|
||||
Visible: true,
|
||||
IsList: false,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = s.Create(ctx, &system.Menu{
|
||||
Name: "重建父路径",
|
||||
DisplayName: "重建父路径",
|
||||
Url: "/system/department/rebuild_parent_path",
|
||||
Type: "btn",
|
||||
ParentID: systemDepartment.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", systemDepartment.ParentPath, systemDepartment.ID),
|
||||
Avatar: "layui-icon layui-icon-refresh",
|
||||
Style: "pear-btn-danger pear-btn-sm",
|
||||
Visible: true,
|
||||
IsList: false,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 用户
|
||||
_, err = s.Create(ctx, &system.Menu{
|
||||
Name: "新增",
|
||||
DisplayName: "新增",
|
||||
Url: "/system/user/add",
|
||||
Type: "btn",
|
||||
ParentID: systemUser.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", systemUser.ParentPath, systemUser.ID),
|
||||
Avatar: "layui-icon layui-icon-add-1",
|
||||
Style: "pear-btn-primary pear-btn-sm",
|
||||
Visible: true,
|
||||
IsList: false,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = s.Create(ctx, &system.Menu{
|
||||
Name: "编辑",
|
||||
DisplayName: "编辑",
|
||||
Url: "/system/user/edit",
|
||||
Type: "btn",
|
||||
ParentID: systemUser.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", systemUser.ParentPath, systemUser.ID),
|
||||
Avatar: "layui-icon layui-icon-edit",
|
||||
Style: "pear-btn-primary pear-btn-xs",
|
||||
Visible: true,
|
||||
IsList: false,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = s.Create(ctx, &system.Menu{
|
||||
Name: "基本资料",
|
||||
DisplayName: "基本资料",
|
||||
Url: "/system/user/profile",
|
||||
Type: "btn",
|
||||
ParentID: systemUser.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", systemUser.ParentPath, systemUser.ID),
|
||||
Avatar: "",
|
||||
Style: "",
|
||||
Visible: true,
|
||||
IsList: false,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = s.Create(ctx, &system.Menu{
|
||||
Name: "保存",
|
||||
DisplayName: "保存",
|
||||
Url: "/system/user/save",
|
||||
Type: "btn",
|
||||
ParentID: systemUser.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", systemUser.ParentPath, systemUser.ID),
|
||||
Avatar: "layui-icon layui-icon-ok",
|
||||
Style: "pear-btn-primary pear-btn-sm",
|
||||
Visible: true,
|
||||
IsList: false,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 基础数据
|
||||
basicData, err := s.Create(ctx, &system.Menu{
|
||||
Name: "基础数据",
|
||||
DisplayName: "基础数据",
|
||||
Url: uuid.Must(uuid.NewRandom()).String(),
|
||||
Type: "node",
|
||||
ParentID: sys.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", sys.ParentPath, sys.ID),
|
||||
Avatar: "layui-icon layui-icon-vercode",
|
||||
Style: "",
|
||||
Visible: true,
|
||||
IsList: false,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 系统配置
|
||||
systemConfig, err := s.Create(ctx, &system.Menu{
|
||||
Name: "系统属性",
|
||||
DisplayName: "系统属性",
|
||||
Url: "/system/config/list",
|
||||
Type: "menu",
|
||||
ParentID: basicData.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", basicData.ParentPath, basicData.ID),
|
||||
Avatar: "",
|
||||
Style: "",
|
||||
Visible: true,
|
||||
IsList: true,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = s.Create(ctx, &system.Menu{
|
||||
Name: "新增",
|
||||
DisplayName: "新增",
|
||||
Url: "/system/config/add",
|
||||
Type: "btn",
|
||||
ParentID: systemConfig.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", systemConfig.ParentPath, systemConfig.ID),
|
||||
Avatar: "layui-icon layui-icon-add-1",
|
||||
Style: "pear-btn-primary pear-btn-sm",
|
||||
Visible: true,
|
||||
IsList: false,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = s.Create(ctx, &system.Menu{
|
||||
Name: "编辑",
|
||||
DisplayName: "编辑",
|
||||
Url: "/system/config/edit",
|
||||
Type: "btn",
|
||||
ParentID: systemConfig.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", systemConfig.ParentPath, systemConfig.ID),
|
||||
Avatar: "layui-icon layui-icon-edit",
|
||||
Style: "pear-btn-primary pear-btn-xs",
|
||||
Visible: true,
|
||||
IsList: false,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = s.Create(ctx, &system.Menu{
|
||||
Name: "保存",
|
||||
DisplayName: "保存",
|
||||
Url: "/system/config/save",
|
||||
Type: "btn",
|
||||
ParentID: systemConfig.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", systemConfig.ParentPath, systemConfig.ID),
|
||||
Avatar: "layui-icon layui-icon-ok",
|
||||
Style: "pear-btn-primary pear-btn-sm",
|
||||
Visible: true,
|
||||
IsList: false,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = s.Create(ctx, &system.Menu{
|
||||
Name: "重置Pear",
|
||||
DisplayName: "重置Pear",
|
||||
Url: "/system/config/reset_pear",
|
||||
Type: "btn",
|
||||
ParentID: systemConfig.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", systemConfig.ParentPath, systemConfig.ID),
|
||||
Avatar: "layui-icon layui-icon-refresh",
|
||||
Style: "pear-btn-danger pear-btn-sm",
|
||||
Visible: true,
|
||||
IsList: false,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = s.Create(ctx, &system.Menu{
|
||||
Name: "刷新",
|
||||
DisplayName: "刷新",
|
||||
Url: "/system/config/refresh_cache",
|
||||
Type: "btn",
|
||||
ParentID: systemConfig.ID,
|
||||
ParentPath: fmt.Sprintf("%s%d,", systemConfig.ParentPath, systemConfig.ID),
|
||||
Avatar: "layui-icon layui-icon-refresh",
|
||||
Style: "pear-btn-xs",
|
||||
Visible: true,
|
||||
IsList: false,
|
||||
Status: 0,
|
||||
Sort: 6666,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user