This commit is contained in:
2025-10-27 15:24:08 +08:00
parent 4186cd0caf
commit df4c3dd46f
47 changed files with 1757 additions and 306 deletions

View File

@@ -41,7 +41,7 @@ func (s *Seed) Run() error {
}
// 部门
err := s.departmentRepository.Initialize(ctx)
depart, err := s.departmentRepository.Initialize(ctx)
if err != nil {
return err
}
@@ -53,7 +53,7 @@ func (s *Seed) Run() error {
}
// 用户
if err := s.userRepository.Initialize(ctx, 0, role.ID); err != nil {
if err := s.userRepository.Initialize(ctx, depart.ID, role.ID); err != nil {
return err
}

View File

@@ -3,13 +3,14 @@ package config
import (
"bytes"
"context"
"database/sql"
"encoding/json"
"errors"
"fmt"
"management/internal/erpserver/model/dto"
"management/internal/erpserver/model/system"
"management/internal/erpserver/repository"
"management/internal/pkg/database"
"management/internal/pkg/know/pearadmin"
"management/internal/pkg/sqldb"
@@ -32,7 +33,7 @@ func NewStore(db *repository.Store, log *logger.Logger) system.ConfigRepository
func (s *store) Initialize(ctx context.Context) error {
_, err := s.GetByKey(ctx, pearadmin.PearKey)
if err != nil {
if database.IsNoRows(err) {
if errors.Is(err, sql.ErrNoRows) {
b, e := json.Marshal(pearadmin.PearJson)
if e != nil {
return e

View File

@@ -26,14 +26,14 @@ func NewStore(db *repository.Store, log *logger.Logger) system.DepartmentReposit
}
}
func (s *store) Initialize(ctx context.Context) error {
func (s *store) Initialize(ctx context.Context) (*system.Department, error) {
count, err := s.Count(ctx, dto.SearchDto{})
if err != nil {
return err
return nil, err
}
if count == 0 {
obj := system.Department{
obj := &system.Department{
Name: "公司",
ParentID: 0,
ParentPath: ",0,",
@@ -42,21 +42,33 @@ func (s *store) Initialize(ctx context.Context) error {
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
}
return s.Create(ctx, &obj)
return s.Create(ctx, obj)
}
return nil
return s.Get(ctx, 1)
}
func (s *store) Create(ctx context.Context, obj *system.Department) error {
func (s *store) Create(ctx context.Context, obj *system.Department) (*system.Department, error) {
//goland:noinspection ALL
const q = `
INSERT INTO sys_department (
name, parent_id, parent_path, status, sort
) VALUES (
:name, :parent_id, :parent_path, :status, :sort
);`
) RETURNING *;`
return sqldb.NamedExecContext(ctx, s.log, s.db.DB(ctx), q, obj)
data := map[string]any{
"name": obj.Name,
"parent_id": obj.ParentID,
"parent_path": obj.ParentPath,
"status": obj.Status,
"sort": obj.Sort,
}
err := sqldb.NamedQueryStruct(ctx, s.log, s.db.DB(ctx), q, data, &obj)
if err != nil {
return nil, err
}
return obj, err
}
func (s *store) Update(ctx context.Context, obj *system.Department) error {

View File

@@ -30,9 +30,24 @@ func (s *store) Create(ctx context.Context, obj *system.Menu) (*system.Menu, err
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
);`
) RETURNING *;`
err := sqldb.NamedExecContext(ctx, s.log, s.db.DB(ctx), q, obj)
data := map[string]any{
"name": obj.Name,
"display_name": obj.DisplayName,
"url": obj.Url,
"type": obj.Type,
"parent_id": obj.ParentID,
"parent_path": obj.ParentPath,
"avatar": obj.Avatar,
"style": obj.Style,
"visible": obj.Visible,
"is_list": obj.IsList,
"status": obj.Status,
"sort": obj.Sort,
}
err := sqldb.NamedQueryStruct(ctx, s.log, s.db.DB(ctx), q, data, &obj)
if err != nil {
return nil, err
}

View File

@@ -32,7 +32,8 @@ func (s *store) Initialize(ctx context.Context) (*system.Role, error) {
return nil, err
}
if count == 0 {
obj := system.Role{
var err error
obj := &system.Role{
Name: "Company",
DisplayName: "公司",
Vip: false,
@@ -42,11 +43,12 @@ func (s *store) Initialize(ctx context.Context) (*system.Role, error) {
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
}
if err := s.Create(ctx, &obj); err != nil {
obj, err = s.Create(ctx, obj)
if err != nil {
return nil, err
}
obj1 := system.Role{
obj1 := &system.Role{
Name: "SuperAdmin",
DisplayName: "超级管理员",
Vip: true,
@@ -56,26 +58,42 @@ func (s *store) Initialize(ctx context.Context) (*system.Role, error) {
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
}
if err := s.Create(ctx, &obj1); err != nil {
obj1, err = s.Create(ctx, obj1)
if err != nil {
return nil, err
}
return &obj1, nil
return obj1, nil
}
return s.GetByVip(ctx, true)
}
func (s *store) Create(ctx context.Context, obj *system.Role) error {
func (s *store) Create(ctx context.Context, obj *system.Role) (*system.Role, error) {
//goland:noinspection ALL
const q = `
INSERT INTO sys_role (
name, display_name, parent_id, parent_path, vip, status, sort
) VALUES (
:name, :display_name, :parent_id, :parent_path, :vip, :status, :sort
)`
) RETURNING *`
return sqldb.NamedExecContext(ctx, s.log, s.db.DB(ctx), q, obj)
data := map[string]any{
"name": obj.Name,
"display_name": obj.DisplayName,
"parent_id": obj.ParentID,
"parent_path": obj.ParentPath,
"vip": obj.Vip,
"status": obj.Status,
"sort": obj.Sort,
}
err := sqldb.NamedQueryStruct(ctx, s.log, s.db.DB(ctx), q, data, &obj)
if err != nil {
return nil, err
}
return obj, nil
}
func (s *store) Update(ctx context.Context, obj *system.Role) error {

View File

@@ -67,25 +67,44 @@ func (s *store) Initialize(ctx context.Context, departId, roleId int32) error {
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
}
return s.Create(ctx, &user)
_, err = s.Create(ctx, &user)
return err
}
return nil
}
func (s *store) Create(ctx context.Context, obj *system.User) error {
func (s *store) Create(ctx context.Context, obj *system.User) (*system.User, error) {
//goland:noinspection ALL
const q = `
INSERT INTO sys_user (
uuid, email, username, hashed_password, salt, avatar, gender, department_id, role_id, status
) VALUES (
:uuid, :email, :username, :hashed_password, :salt, :avatar, :gender, :department_id, :role_id, :status
);`
) RETURNING *;`
return sqldb.NamedExecContext(ctx, s.log, s.db.DB(ctx), q, obj)
data := map[string]any{
"uuid": obj.Uuid.String(),
"email": obj.Email,
"username": obj.Username,
"hashed_password": obj.HashedPassword,
"salt": obj.Salt,
"avatar": obj.Avatar,
"gender": obj.Gender,
"department_id": obj.DepartmentID,
"role_id": obj.RoleID,
"status": obj.Status,
}
err := sqldb.NamedQueryStruct(ctx, s.log, s.db.DB(ctx), q, data, &obj)
if err != nil {
return nil, err
}
return obj, nil
}
func (s *store) Update(ctx context.Context, obj *system.User) error {
func (s *store) Update(ctx context.Context, obj *system.User) (*system.User, error) {
//goland:noinspection ALL
const q = `
UPDATE sys_user
@@ -99,9 +118,28 @@ func (s *store) Update(ctx context.Context, obj *system.User) error {
status = :status,
change_password_at = :change_password_at,
updated_at = :updated_at
WHERE id = :id;`
WHERE id = :id RETURNING *;`
return sqldb.NamedExecContext(ctx, s.log, s.db.DB(ctx), q, obj)
data := map[string]any{
"email": obj.Email,
"username": obj.Username,
"hashed_password": obj.HashedPassword,
"avatar": obj.Avatar,
"gender": obj.Gender,
"department_id": obj.DepartmentID,
"role_id": obj.RoleID,
"status": obj.Status,
"change_password_at": obj.ChangePasswordAt,
"updated_at": obj.UpdatedAt,
"id": obj.ID,
}
err := sqldb.NamedQueryStruct(ctx, s.log, s.db.DB(ctx), q, data, &obj)
if err != nil {
return nil, err
}
return obj, nil
}
func (s *store) Get(ctx context.Context, id int32) (*system.User, error) {