first commit

This commit is contained in:
2025-03-21 11:05:42 +08:00
commit 7dffc94035
1717 changed files with 724764 additions and 0 deletions

View File

@@ -0,0 +1,21 @@
package db
import (
"context"
db "management/internal/db/sqlc"
)
func initCategory() (*db.Category, error) {
arg := db.CreateCategoryParams{
Name: "根结点",
Icon: "",
Description: "",
Letter: "",
ParentID: 0,
ParentPath: ",0,",
Status: 0,
Sort: 6666,
}
return db.Engine.CreateCategory(context.Background(), &arg)
}

View File

@@ -0,0 +1,27 @@
package db
import (
"context"
"encoding/json"
db "management/internal/db/sqlc"
"management/internal/global/pearadmin"
)
func initConfig() error {
b, err := json.Marshal(pearadmin.PearJson)
if err != nil {
return err
}
arg := db.CreateSysConfigParams{
Key: pearadmin.PearKey,
Value: b,
}
err = db.Engine.CreateSysConfig(context.Background(), &arg)
if err != nil {
return err
}
return nil
}

View File

@@ -0,0 +1,21 @@
package db
import (
"context"
"time"
db "management/internal/db/sqlc"
)
func initDepartment() (*db.SysDepartment, error) {
arg := db.CreateSysDepartmentParams{
Name: "公司",
ParentID: 0,
ParentPath: ",0,",
Status: 0,
Sort: 6666,
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
}
return db.Engine.CreateSysDepartment(context.Background(), &arg)
}

92
internal/db/init/init.go Normal file
View File

@@ -0,0 +1,92 @@
package db
import (
"context"
"log"
db "management/internal/db/sqlc"
"management/internal/global/pearadmin"
)
func InitSeed() {
ctx := context.Background()
// 后台pear配置
b, err := db.Engine.ExistsSysConfigByKey(ctx, pearadmin.PearKey)
if err != nil {
log.Fatalf("failed to get sys config: %v", err)
}
if !b {
err = initConfig()
if err != nil {
log.Fatal("sys config: ", err)
}
}
// 部门
b, err = db.Engine.ExistsSysDepartment(ctx)
if err != nil {
log.Fatal("department exists: ", err)
}
var depart *db.SysDepartment
if !b {
depart, err = initDepartment()
if err != nil {
log.Fatal("department: ", err)
}
}
// 角色
b, err = db.Engine.ExistsVipRole(ctx)
if err != nil {
log.Fatal("role exists: ", err)
}
var role *db.SysRole
if !b {
role, err = initRole()
if err != nil {
log.Fatal("role: ", err)
}
} else {
role, err = db.Engine.GetFirstVipRole(ctx)
if err != nil {
log.Fatal("find role: ", err)
}
}
// 用户
b, err = db.Engine.ExistsSysUser(ctx)
if err != nil {
log.Fatal("user exists: ", err)
}
if !b {
_, err = initUser(depart.ID, role.ID)
if err != nil {
log.Fatal("user: ", err)
}
}
// 类别
b, err = db.Engine.ExistsCategories(ctx)
if err != nil {
log.Fatal("category exists: ", err)
}
if !b {
_, err := initCategory()
if err != nil {
log.Fatal("category: ", err)
}
}
// 菜单
b, err = db.Engine.ExistsMenu(ctx)
if err != nil {
log.Fatal("menu exists: ", err)
}
if !b {
err = initMenu()
if err != nil {
log.Fatal("menu: ", err)
}
}
}

28
internal/db/init/menu.go Normal file
View File

@@ -0,0 +1,28 @@
package db
import (
"context"
"management/internal/db/init/menus"
)
func initMenu() error {
ctx := context.Background()
err := menus.SystemInit(ctx)
if err != nil {
return err
}
err = menus.ERPInit(ctx)
if err != nil {
return err
}
// err = menus.PaperInit(ctx)
// if err != nil {
// return err
// }
return nil
}

View File

@@ -0,0 +1,555 @@
package menus
import (
"context"
"fmt"
"log"
"time"
db "management/internal/db/sqlc"
"github.com/google/uuid"
)
func ERPInit(ctx context.Context) error {
erp, err := db.Engine.CreateSysMenu(ctx, &db.CreateSysMenuParams{
Name: "ERP管理",
DisplayName: "ERP管理",
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
}
pro, err := db.Engine.CreateSysMenu(ctx, &db.CreateSysMenuParams{
Name: "项目管理",
DisplayName: "项目管理",
Url: uuid.Must(uuid.NewRandom()).String(),
Type: "node",
ParentID: erp.ID,
ParentPath: fmt.Sprintf("%s%d,", erp.ParentPath, erp.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
}
project, err := db.Engine.CreateSysMenu(ctx, &db.CreateSysMenuParams{
Name: "项目管理",
DisplayName: "项目管理",
Url: "/project/list",
Type: "menu",
ParentID: pro.ID,
ParentPath: fmt.Sprintf("%s%d,", pro.ParentPath, pro.ID),
Avatar: "",
Style: "",
Visible: true,
IsList: true,
Status: 0,
Sort: 6666,
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
})
if err != nil {
return err
}
_, err = db.Engine.CreateSysMenu(ctx, &db.CreateSysMenuParams{
Name: "新增",
DisplayName: "新增",
Url: "/project/add",
Type: "btn",
ParentID: project.ID,
ParentPath: fmt.Sprintf("%s%d,", project.ParentPath, project.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 = db.Engine.CreateSysMenu(ctx, &db.CreateSysMenuParams{
Name: "编辑",
DisplayName: "编辑",
Url: "/project/edit",
Type: "btn",
ParentID: project.ID,
ParentPath: fmt.Sprintf("%s%d,", project.ParentPath, project.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 = db.Engine.CreateSysMenu(ctx, &db.CreateSysMenuParams{
Name: "保存",
DisplayName: "保存",
Url: "/project/save",
Type: "btn",
ParentID: project.ID,
ParentPath: fmt.Sprintf("%s%d,", project.ParentPath, project.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 = db.Engine.CreateSysMenu(ctx, &db.CreateSysMenuParams{
Name: "xmselect",
DisplayName: "xmselect",
Url: "/project/xmselect",
Type: "btn",
ParentID: project.ID,
ParentPath: fmt.Sprintf("%s%d,", project.ParentPath, project.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
}
budget, err := db.Engine.CreateSysMenu(ctx, &db.CreateSysMenuParams{
Name: "项目预算",
DisplayName: "项目预算",
Url: "/budget/list",
Type: "menu",
ParentID: pro.ID,
ParentPath: fmt.Sprintf("%s%d,", pro.ParentPath, pro.ID),
Avatar: "",
Style: "",
Visible: true,
IsList: true,
Status: 0,
Sort: 6666,
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
})
if err != nil {
return err
}
_, err = db.Engine.CreateSysMenu(ctx, &db.CreateSysMenuParams{
Name: "新增",
DisplayName: "新增",
Url: "/budget/add",
Type: "btn",
ParentID: budget.ID,
ParentPath: fmt.Sprintf("%s%d,", budget.ParentPath, budget.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 = db.Engine.CreateSysMenu(ctx, &db.CreateSysMenuParams{
Name: "编辑",
DisplayName: "编辑",
Url: "/budget/edit",
Type: "btn",
ParentID: budget.ID,
ParentPath: fmt.Sprintf("%s%d,", budget.ParentPath, budget.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 = db.Engine.CreateSysMenu(ctx, &db.CreateSysMenuParams{
Name: "保存",
DisplayName: "保存",
Url: "/budget/save",
Type: "btn",
ParentID: budget.ID,
ParentPath: fmt.Sprintf("%s%d,", budget.ParentPath, budget.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
}
projectDashboard, err := db.Engine.CreateSysMenu(ctx, &db.CreateSysMenuParams{
Name: "项目统计看板",
DisplayName: "项目统计看板",
Url: "/project/dashboard",
Type: "menu",
ParentID: pro.ID,
ParentPath: fmt.Sprintf("%s%d,", pro.ParentPath, pro.ID),
Avatar: "",
Style: "",
Visible: true,
IsList: true,
Status: 0,
Sort: 6666,
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
})
if err != nil {
return err
}
log.Println(projectDashboard)
in, err := db.Engine.CreateSysMenu(ctx, &db.CreateSysMenuParams{
Name: "应收管理",
DisplayName: "应收管理",
Url: uuid.Must(uuid.NewRandom()).String(),
Type: "node",
ParentID: erp.ID,
ParentPath: fmt.Sprintf("%s%d,", erp.ParentPath, erp.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
}
customer, err := db.Engine.CreateSysMenu(ctx, &db.CreateSysMenuParams{
Name: "客户管理",
DisplayName: "客户管理",
Url: "/customer/list",
Type: "menu",
ParentID: in.ID,
ParentPath: fmt.Sprintf("%s%d,", in.ParentPath, in.ID),
Avatar: "",
Style: "",
Visible: true,
IsList: true,
Status: 0,
Sort: 6666,
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
})
if err != nil {
return err
}
_, err = db.Engine.CreateSysMenu(ctx, &db.CreateSysMenuParams{
Name: "新增",
DisplayName: "新增",
Url: "/customer/add",
Type: "btn",
ParentID: customer.ID,
ParentPath: fmt.Sprintf("%s%d,", customer.ParentPath, customer.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 = db.Engine.CreateSysMenu(ctx, &db.CreateSysMenuParams{
Name: "编辑",
DisplayName: "编辑",
Url: "/customer/edit",
Type: "btn",
ParentID: customer.ID,
ParentPath: fmt.Sprintf("%s%d,", customer.ParentPath, customer.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 = db.Engine.CreateSysMenu(ctx, &db.CreateSysMenuParams{
Name: "保存",
DisplayName: "保存",
Url: "/customer/save",
Type: "btn",
ParentID: customer.ID,
ParentPath: fmt.Sprintf("%s%d,", customer.ParentPath, customer.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 = db.Engine.CreateSysMenu(ctx, &db.CreateSysMenuParams{
Name: "xmselect",
DisplayName: "xmselect",
Url: "/customer/xmselect",
Type: "btn",
ParentID: customer.ID,
ParentPath: fmt.Sprintf("%s%d,", customer.ParentPath, customer.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
}
income, err := db.Engine.CreateSysMenu(ctx, &db.CreateSysMenuParams{
Name: "回款单",
DisplayName: "回款单",
Url: "/income/list",
Type: "menu",
ParentID: in.ID,
ParentPath: fmt.Sprintf("%s%d,", in.ParentPath, in.ID),
Avatar: "",
Style: "",
Visible: true,
IsList: true,
Status: 0,
Sort: 6666,
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
})
if err != nil {
return err
}
_, err = db.Engine.CreateSysMenu(ctx, &db.CreateSysMenuParams{
Name: "新增",
DisplayName: "新增",
Url: "/income/add",
Type: "btn",
ParentID: income.ID,
ParentPath: fmt.Sprintf("%s%d,", income.ParentPath, income.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 = db.Engine.CreateSysMenu(ctx, &db.CreateSysMenuParams{
Name: "编辑",
DisplayName: "编辑",
Url: "/income/edit",
Type: "btn",
ParentID: income.ID,
ParentPath: fmt.Sprintf("%s%d,", income.ParentPath, income.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 = db.Engine.CreateSysMenu(ctx, &db.CreateSysMenuParams{
Name: "保存",
DisplayName: "保存",
Url: "/income/save",
Type: "btn",
ParentID: income.ID,
ParentPath: fmt.Sprintf("%s%d,", income.ParentPath, income.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
}
cost, err := db.Engine.CreateSysMenu(ctx, &db.CreateSysMenuParams{
Name: "费用管理",
DisplayName: "费用管理",
Url: uuid.Must(uuid.NewRandom()).String(),
Type: "node",
ParentID: erp.ID,
ParentPath: fmt.Sprintf("%s%d,", erp.ParentPath, erp.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
}
expense, err := db.Engine.CreateSysMenu(ctx, &db.CreateSysMenuParams{
Name: "费用报销单",
DisplayName: "费用报销单",
Url: "/expense/list",
Type: "menu",
ParentID: cost.ID,
ParentPath: fmt.Sprintf("%s%d,", cost.ParentPath, cost.ID),
Avatar: "",
Style: "",
Visible: true,
IsList: true,
Status: 0,
Sort: 6666,
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
})
if err != nil {
return err
}
_, err = db.Engine.CreateSysMenu(ctx, &db.CreateSysMenuParams{
Name: "新增",
DisplayName: "新增",
Url: "/expense/add",
Type: "btn",
ParentID: expense.ID,
ParentPath: fmt.Sprintf("%s%d,", expense.ParentPath, expense.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 = db.Engine.CreateSysMenu(ctx, &db.CreateSysMenuParams{
Name: "编辑",
DisplayName: "编辑",
Url: "/expense/edit",
Type: "btn",
ParentID: expense.ID,
ParentPath: fmt.Sprintf("%s%d,", expense.ParentPath, expense.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 = db.Engine.CreateSysMenu(ctx, &db.CreateSysMenuParams{
Name: "保存",
DisplayName: "保存",
Url: "/expense/save",
Type: "btn",
ParentID: expense.ID,
ParentPath: fmt.Sprintf("%s%d,", expense.ParentPath, expense.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
}
return nil
}

File diff suppressed because it is too large Load Diff

38
internal/db/init/role.go Normal file
View File

@@ -0,0 +1,38 @@
package db
import (
"context"
"fmt"
"time"
db "management/internal/db/sqlc"
)
func initRole() (*db.SysRole, error) {
arg := db.CreateSysRoleParams{
Name: "Company",
DisplayName: "公司",
Vip: false,
ParentID: 0,
ParentPath: ",0,",
Status: 0,
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
}
role, err := db.Engine.CreateSysRole(context.Background(), &arg)
if err != nil {
return nil, err
}
arg = db.CreateSysRoleParams{
Name: "SuperAdmin",
DisplayName: "超级管理员",
Vip: true,
ParentID: role.ID,
ParentPath: fmt.Sprintf(",0,%d,", role.ID),
Status: 0,
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
}
return db.Engine.CreateSysRole(context.Background(), &arg)
}

46
internal/db/init/user.go Normal file
View File

@@ -0,0 +1,46 @@
package db
import (
"context"
"time"
db "management/internal/db/sqlc"
"management/internal/pkg/crypto"
"management/internal/pkg/rand"
"github.com/google/uuid"
)
func initUser(departID int32, roleID int32) (*db.SysUser, error) {
salt, err := rand.String(10)
if err != nil {
return nil, err
}
password := "secret"
hashedPassword, err := crypto.BcryptHashPassword(password + salt)
if err != nil {
return nil, err
}
initTime, err := time.ParseInLocation(time.DateTime, "0001-01-01 00:00:00", time.Local)
if err != nil {
return nil, err
}
arg := db.CreateSysUserParams{
Uuid: uuid.Must(uuid.NewV7()),
Email: "1185230223@qq.com",
Username: "kenneth",
HashedPassword: hashedPassword,
Salt: salt,
Avatar: "/statics/admin/images/avatar.jpg",
Gender: 1,
DepartmentID: departID,
RoleID: roleID,
Status: 0,
ChangePasswordAt: initTime,
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
}
return db.Engine.CreateSysUser(context.Background(), &arg)
}