This commit is contained in:
2025-06-06 14:31:58 +08:00
parent 38ee553cf3
commit 96d537c044
20 changed files with 412 additions and 421 deletions

View File

@@ -2,7 +2,6 @@ package system
import (
"context"
"encoding/json"
"errors"
"fmt"
"strconv"
@@ -12,19 +11,19 @@ import (
"management/internal/erpserver/model/form"
"management/internal/erpserver/model/system"
"management/internal/erpserver/model/view"
"management/internal/erpserver/service"
v1 "management/internal/erpserver/service/v1"
"management/internal/erpserver/service/util"
"management/internal/erpserver/service/v1"
"management/internal/pkg/convertor"
"management/internal/pkg/database"
"management/internal/pkg/know"
)
type roleService struct {
*service.Service
*v1.Service
repo system.RoleRepository
}
func NewRoleService(service *service.Service, repo system.RoleRepository) v1.RoleService {
func NewRoleService(service *v1.Service, repo system.RoleRepository) v1.RoleService {
return &roleService{
Service: service,
repo: repo,
@@ -110,27 +109,12 @@ func (s *roleService) Get(ctx context.Context, id int32) (*system.Role, error) {
}
func (s *roleService) All(ctx context.Context) ([]*system.Role, error) {
var res []*system.Role
key := know.GetManageKey(ctx, know.AllRoles)
bs, err := s.Redis.GetBytes(ctx, key)
if err == nil {
var res []*system.Role
if err := json.Unmarshal(bs, &res); err == nil {
return res, nil
}
}
res, err := s.repo.All(ctx)
if err != nil {
return nil, err
}
bs, err = json.Marshal(res)
if err != nil {
return nil, err
}
_ = s.Redis.Set(ctx, key, bs, time.Hour*6)
return res, nil
err := util.GetOrSetCache(ctx, s.Redis, key, util.GetCacheExpire(), func() (any, error) {
return s.repo.All(ctx)
}, &res)
return res, err
}
func (s *roleService) List(ctx context.Context, q dto.SearchDto) ([]*system.Role, int64, error) {
@@ -138,19 +122,11 @@ func (s *roleService) List(ctx context.Context, q dto.SearchDto) ([]*system.Role
}
func (s *roleService) RefreshCache(ctx context.Context) error {
var res []*system.Role
key := know.GetManageKey(ctx, know.AllRoles)
res, err := s.All(ctx)
if err != nil {
return err
}
b, err := json.Marshal(res)
if err != nil {
return err
}
_ = s.Redis.Set(ctx, key, b, time.Hour*6)
return nil
return util.GetOrSetCache(ctx, s.Redis, key, util.GetCacheExpire(), func() (any, error) {
return s.repo.All(ctx)
}, &res)
}
func (s *roleService) RebuildParentPath(ctx context.Context) error {
@@ -176,6 +152,23 @@ func (s *roleService) XmSelectTree(ctx context.Context, id int32) ([]*view.XmSel
}
func (s *roleService) toTree(parentId int32, data []*system.Role) []*view.LayuiTree {
//idFunc := func(s *system.Role) int32 {
// return s.ParentID
//}
//childrenFunc := func(s *system.Role, childNodes []*view.LayuiTree) *view.LayuiTree {
// spread := false
// if s.ParentID == 0 {
// spread = true
// }
// return &view.LayuiTree{
// Title: s.Name,
// ID: strconv.FormatInt(int64(s.ID), 10),
// Children: childNodes,
// Spread: spread,
// }
//}
//return util.BuildTree(parentId, data, idFunc, childrenFunc)
var res []*view.LayuiTree
for _, v := range data {
if v.ParentID == parentId {