This commit is contained in:
2025-06-12 10:20:26 +08:00
parent 96d537c044
commit b71e718308
40 changed files with 1961 additions and 108 deletions

View File

@@ -2,10 +2,15 @@ package system
import (
"context"
"encoding/json"
"management/internal/erpserver/model/dto"
"management/internal/erpserver/model/system"
"management/internal/erpserver/repository"
"management/internal/pkg/database"
"management/internal/pkg/know/pearadmin"
"gorm.io/datatypes"
)
type configRepository struct {
@@ -18,6 +23,26 @@ func NewConfigRepository(repo *repository.Repository) system.ConfigRepository {
}
}
func (r *configRepository) Initialize(ctx context.Context) error {
_, err := r.GetByKey(ctx, pearadmin.PearKey)
if err != nil {
if database.IsNoRows(err) {
b, e := json.Marshal(pearadmin.PearJson)
if e != nil {
return e
}
s := system.Config{
Key: pearadmin.PearKey,
Value: datatypes.JSON(b),
}
return r.Create(ctx, &s)
}
return err
}
return nil
}
func (r *configRepository) Create(ctx context.Context, obj *system.Config) error {
return r.repo.DB(ctx).Create(obj).Error
}
@@ -44,6 +69,15 @@ func (r *configRepository) GetByKey(ctx context.Context, key string) (*system.Co
return &obj, nil
}
func (r *configRepository) GetValueByKey(ctx context.Context, key string) ([]byte, error) {
var obj system.Config
err := r.repo.DB(ctx).Where("key = ?", key).First(&obj).Error
if err != nil {
return nil, err
}
return obj.Value, nil
}
func (r *configRepository) List(ctx context.Context, q dto.SearchDto) ([]*system.Config, int64, error) {
query := r.repo.DB(ctx).
Model(&system.Config{}).

View File

@@ -2,6 +2,7 @@ package system
import (
"context"
"time"
"management/internal/erpserver/model/dto"
"management/internal/erpserver/model/system"
@@ -18,6 +19,26 @@ func NewDepartmentRepository(repo *repository.Repository) system.DepartmentRepos
}
}
func (r *departmentRepository) Initialize(ctx context.Context) error {
var count int64
if err := r.repo.DB(ctx).Model(&system.Department{}).Count(&count).Error; err != nil {
return err
}
if count == 0 {
obj := system.Department{
Name: "公司",
ParentID: 0,
ParentPath: ",0,",
Status: 0,
Sort: 6666,
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
}
return r.Create(ctx, &obj)
}
return nil
}
func (r *departmentRepository) Create(ctx context.Context, obj *system.Department) error {
return r.repo.DB(ctx).Create(obj).Error
}

View File

@@ -22,17 +22,18 @@ func (s *loginLogRepository) Create(ctx context.Context, obj *system.LoginLog) e
return s.repo.DB(ctx).Create(obj).Error
}
func (s *loginLogRepository) GetLatest(ctx context.Context, email string) (*system.LoginLog, error) {
var log system.LoginLog
func (s *loginLogRepository) GetLatest(ctx context.Context, email string) ([]*system.LoginLog, error) {
var logs []*system.LoginLog
err := s.repo.DB(ctx).
Where("email = ?", email).
Order("id DESC").
First(&log).
Limit(2).
Find(&logs).
Error
if err != nil {
return nil, err
}
return &log, nil
return logs, nil
}
func (s *loginLogRepository) List(ctx context.Context, q dto.SearchDto) ([]*system.LoginLog, int64, error) {

View File

@@ -17,8 +17,12 @@ func NewMenuRepository(repo *repository.Repository) system.MenuRepository {
}
}
func (r *menuRepository) Create(ctx context.Context, obj *system.Menu) error {
return r.repo.DB(ctx).Create(obj).Error
func (r *menuRepository) Create(ctx context.Context, obj *system.Menu) (*system.Menu, error) {
err := r.repo.DB(ctx).Create(obj).Error
if err != nil {
return nil, err
}
return obj, nil
}
func (r *menuRepository) Update(ctx context.Context, obj *system.Menu) error {

View File

@@ -0,0 +1,828 @@
package system
import (
"context"
"fmt"
"time"
"management/internal/erpserver/model/system"
"github.com/google/uuid"
)
func (r *menuRepository) Initialize(ctx context.Context) error {
var count int64
if err := r.repo.DB(ctx).Model(&system.Menu{}).Count(&count).Error; err != nil {
return err
}
if count > 0 {
return nil
}
sys, err := r.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 := r.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 := r.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 := r.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 := r.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 := r.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 = r.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 = r.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 = r.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 = r.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 = r.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 = r.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 = r.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 = r.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 = r.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 = r.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 = r.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 = r.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 = r.Create(ctx, &system.Menu{
Name: "刷新",
DisplayName: "刷新",
Url: "/system/role/refresh",
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 = r.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 = r.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 = r.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 = r.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 = r.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 = r.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 = r.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 = r.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 = r.Create(ctx, &system.Menu{
Name: "刷新",
DisplayName: "刷新",
Url: "/system/department/refresh",
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 = r.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 = r.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 = r.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 = r.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 = r.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 := r.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 := r.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 = r.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 = r.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 = r.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 = r.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 = r.Create(ctx, &system.Menu{
Name: "刷新",
DisplayName: "刷新",
Url: "/system/config/refresh",
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
}

View File

@@ -2,6 +2,8 @@ package system
import (
"context"
"fmt"
"time"
"management/internal/erpserver/model/dto"
"management/internal/erpserver/model/system"
@@ -18,6 +20,50 @@ func NewRoleRepository(repo *repository.Repository) system.RoleRepository {
}
}
func (r *roleRepository) Initialize(ctx context.Context) (*system.Role, error) {
var count int64
if err := r.repo.DB(ctx).Model(&system.Role{}).Count(&count).Error; err != nil {
return nil, err
}
if count == 0 {
obj := system.Role{
Name: "Company",
DisplayName: "公司",
Vip: false,
ParentID: 0,
ParentPath: ",0,",
Status: 0,
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
}
if err := r.Create(ctx, &obj); err != nil {
return nil, err
}
obj1 := system.Role{
Name: "SuperAdmin",
DisplayName: "超级管理员",
Vip: true,
ParentID: obj.ID,
ParentPath: fmt.Sprintf(",0,%d,", obj.ID),
Status: 0,
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
}
if err := r.Create(ctx, &obj1); err != nil {
return nil, err
}
return &obj1, nil
}
var role system.Role
err := r.repo.DB(ctx).Where("vip = ?", true).First(&role).Error
if err != nil {
return nil, err
}
return &role, nil
}
func (r *roleRepository) Create(ctx context.Context, obj *system.Role) error {
return r.repo.DB(ctx).Create(obj).Error
}

View File

@@ -2,10 +2,15 @@ package system
import (
"context"
"time"
"management/internal/erpserver/model/dto"
"management/internal/erpserver/model/system"
"management/internal/erpserver/repository"
"management/internal/pkg/crypto"
"management/internal/pkg/rand"
"github.com/google/uuid"
)
type userRepository struct {
@@ -18,6 +23,49 @@ func NewUserRepository(repo *repository.Repository) system.UserRepository {
}
}
func (s *userRepository) Initialize(ctx context.Context, departId, roleId int32) error {
var count int64
if err := s.repo.DB(ctx).Model(&system.User{}).Count(&count).Error; err != nil {
return err
}
if count == 0 {
salt, err := rand.String(10)
if err != nil {
return err
}
password := "secret"
hashedPassword, err := crypto.BcryptHashPassword(password + salt)
if err != nil {
return err
}
initTime, err := time.ParseInLocation(time.DateTime, "0001-01-01 00:00:00", time.Local)
if err != nil {
return err
}
user := system.User{
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 s.Create(ctx, &user)
}
return nil
}
func (s *userRepository) Create(ctx context.Context, obj *system.User) error {
return s.repo.DB(ctx).Create(obj).Error
}