update
This commit is contained in:
@@ -13,6 +13,10 @@ import (
|
||||
"github.com/drhin/logger"
|
||||
)
|
||||
|
||||
//type RouterGroup interface {
|
||||
// Register(router chi.Router)
|
||||
//}
|
||||
|
||||
type Handler struct {
|
||||
Config *config.Config
|
||||
Log *logger.Logger
|
||||
|
||||
@@ -107,7 +107,6 @@ func (h *RoleHandler) Save(w http.ResponseWriter, r *http.Request) {
|
||||
h.JSONErr(w, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
h.JSONOk(w, "更新成功")
|
||||
}
|
||||
}
|
||||
@@ -122,18 +121,14 @@ func (h *RoleHandler) Data(w http.ResponseWriter, r *http.Request) {
|
||||
h.JSONErr(w, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
h.JSON(w, res)
|
||||
return
|
||||
} else if t == "xm_select_tree" {
|
||||
res, err := h.roleService.XmSelectTree(ctx, 0)
|
||||
if err != nil {
|
||||
h.JSONErr(w, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
h.JSON(w, res)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
145
internal/erpserver/handler/system/router.go
Normal file
145
internal/erpserver/handler/system/router.go
Normal file
@@ -0,0 +1,145 @@
|
||||
package system
|
||||
|
||||
//
|
||||
//import (
|
||||
// v1 "management/internal/erpserver/service/v1"
|
||||
// mi "management/internal/pkg/middleware"
|
||||
// "management/internal/pkg/session"
|
||||
//
|
||||
// "github.com/go-chi/chi/v5"
|
||||
//)
|
||||
//
|
||||
//type HandlerGroup struct {
|
||||
// sm session.Manager
|
||||
// menuService v1.MenuService
|
||||
// HomeHandler *HomeHandler
|
||||
// ConfigHandler *ConfigHandler
|
||||
// UserHandler *UserHandler
|
||||
// LoginLogHandler *LoginLogHandler
|
||||
// AuditHandler *AuditHandler
|
||||
// MenuHandler *MenuHandler
|
||||
// RoleHandler *RoleHandler
|
||||
// DepartmentHandler *DepartmentHandler
|
||||
//}
|
||||
//
|
||||
//func NewHandlerGroup(
|
||||
// sm session.Manager,
|
||||
// menuService v1.MenuService,
|
||||
// homeHandler *HomeHandler,
|
||||
// configHandler *ConfigHandler,
|
||||
// userHandler *UserHandler,
|
||||
// loginLogHandler *LoginLogHandler,
|
||||
// auditHandler *AuditHandler,
|
||||
// menuHandler *MenuHandler,
|
||||
// roleHandler *RoleHandler,
|
||||
// departmentHandler *DepartmentHandler,
|
||||
//) *HandlerGroup {
|
||||
// return &HandlerGroup{
|
||||
// sm: sm,
|
||||
// HomeHandler: homeHandler,
|
||||
// ConfigHandler: configHandler,
|
||||
// UserHandler: userHandler,
|
||||
// LoginLogHandler: loginLogHandler,
|
||||
// AuditHandler: auditHandler,
|
||||
// MenuHandler: menuHandler,
|
||||
// RoleHandler: roleHandler,
|
||||
// DepartmentHandler: departmentHandler,
|
||||
// }
|
||||
//}
|
||||
//
|
||||
//func (g *HandlerGroup) Register(r chi.Router) {
|
||||
// //r.Get("/captcha", g.CaptchaHandler.Captcha)
|
||||
// //r.Post("/login", userHandler.Login)
|
||||
//
|
||||
// r.Get("/", g.UserHandler.Login)
|
||||
// r.Group(func(r chi.Router) {
|
||||
// r.Use(mi.Authorize(g.sm, menuService))
|
||||
//
|
||||
// r.Get("/logout", userHandler.Logout)
|
||||
//
|
||||
// r.Get("/home.html", homeHandler.Home)
|
||||
// r.Get("/dashboard", homeHandler.Dashboard)
|
||||
// r.Get("/pear.json", configHandler.Pear)
|
||||
//
|
||||
// r.Route("/upload", func(r chi.Router) {
|
||||
// r.Use(mi.Audit(sm, auditLogService, log))
|
||||
// r.Get("/img", uploadHandler.Img)
|
||||
// r.Get("/file", uploadHandler.File)
|
||||
// r.Get("/multi_files", uploadHandler.MultiFiles)
|
||||
// })
|
||||
//
|
||||
// r.Route("/system", func(r chi.Router) {
|
||||
// r.Use(mi.Audit(sm, auditLogService, log))
|
||||
//
|
||||
// r.Get("/menus", menuHandler.Menus)
|
||||
//
|
||||
// r.Route("/config", func(r chi.Router) {
|
||||
// r.Get("/list", configHandler.List)
|
||||
// r.Post("/list", configHandler.List)
|
||||
// r.Get("/add", configHandler.Add)
|
||||
// r.Get("/edit", configHandler.Edit)
|
||||
// r.Post("/save", configHandler.Save)
|
||||
// r.Post("/refresh_cache", configHandler.RefreshCache)
|
||||
// r.Post("/reset_pear", configHandler.ResetPear)
|
||||
// })
|
||||
//
|
||||
// r.Route("/menu", func(r chi.Router) {
|
||||
// r.Get("/list", menuHandler.List)
|
||||
// r.Post("/list", menuHandler.List)
|
||||
// r.Get("/add", menuHandler.Add)
|
||||
// r.Get("/add_children", menuHandler.AddChildren)
|
||||
// r.Get("/edit", menuHandler.Edit)
|
||||
// r.Post("/save", menuHandler.Save)
|
||||
// r.Post("/data", menuHandler.Data)
|
||||
// r.Post("/refresh_cache", menuHandler.RefreshCache)
|
||||
// })
|
||||
//
|
||||
// r.Route("/department", func(r chi.Router) {
|
||||
// r.Get("/list", departmentHandler.List)
|
||||
// r.Post("/list", departmentHandler.List)
|
||||
// r.Get("/add", departmentHandler.Add)
|
||||
// r.Get("/add_children", departmentHandler.AddChildren)
|
||||
// r.Get("/edit", departmentHandler.Edit)
|
||||
// r.Post("/save", departmentHandler.Save)
|
||||
// r.Post("/data", departmentHandler.Data)
|
||||
// r.Post("/refresh_cache", departmentHandler.RefreshCache)
|
||||
// r.Post("/rebuild_parent_path", departmentHandler.RebuildParentPath)
|
||||
// })
|
||||
//
|
||||
// r.Route("/role", func(r chi.Router) {
|
||||
// r.Get("/list", roleHandler.List)
|
||||
// r.Post("/list", roleHandler.List)
|
||||
// r.Get("/add", roleHandler.Add)
|
||||
// r.Get("/add_children", roleHandler.AddChildren)
|
||||
// r.Get("/edit", roleHandler.Edit)
|
||||
// r.Post("/save", roleHandler.Save)
|
||||
// r.Post("/data", roleHandler.Data)
|
||||
// r.Post("/refresh_cache", roleHandler.RefreshCache)
|
||||
// r.Post("/rebuild_parent_path", roleHandler.RebuildParentPath)
|
||||
// r.Post("/refresh_role_menus", roleHandler.RefreshRoleMenus)
|
||||
// r.Get("/set_menu", roleHandler.SetMenu)
|
||||
// r.Post("/set_menu", roleHandler.SetMenu)
|
||||
// })
|
||||
//
|
||||
// r.Route("/user", func(r chi.Router) {
|
||||
// r.Get("/list", userHandler.List)
|
||||
// r.Post("/list", userHandler.List)
|
||||
// r.Get("/add", userHandler.Add)
|
||||
// r.Get("/edit", userHandler.Edit)
|
||||
// r.Post("/save", userHandler.Save)
|
||||
// r.Get("/profile", userHandler.Profile)
|
||||
// r.Post("/data", userHandler.Data)
|
||||
// })
|
||||
//
|
||||
// r.Route("/login_log", func(r chi.Router) {
|
||||
// r.Get("/list", loginLogHandler.List)
|
||||
// r.Post("/list", loginLogHandler.List)
|
||||
// })
|
||||
//
|
||||
// r.Route("/audit_log", func(r chi.Router) {
|
||||
// r.Get("/list", auditHandler.List)
|
||||
// r.Post("/list", auditHandler.List)
|
||||
// })
|
||||
// })
|
||||
// })
|
||||
//}
|
||||
@@ -1,30 +0,0 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"management/internal/erpserver/repository"
|
||||
"management/internal/pkg/redis"
|
||||
"management/internal/pkg/session"
|
||||
|
||||
"github.com/drhin/logger"
|
||||
)
|
||||
|
||||
type Service struct {
|
||||
Log *logger.Logger
|
||||
Tx repository.Transaction
|
||||
Session session.Manager
|
||||
Redis redis.Cache
|
||||
}
|
||||
|
||||
func NewService(
|
||||
log *logger.Logger,
|
||||
tx repository.Transaction,
|
||||
session session.Manager,
|
||||
redis redis.Cache,
|
||||
) *Service {
|
||||
return &Service{
|
||||
Log: log,
|
||||
Tx: tx,
|
||||
Session: session,
|
||||
Redis: redis,
|
||||
}
|
||||
}
|
||||
54
internal/erpserver/service/util/util.go
Normal file
54
internal/erpserver/service/util/util.go
Normal file
@@ -0,0 +1,54 @@
|
||||
package util
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"log"
|
||||
"math/rand"
|
||||
"time"
|
||||
|
||||
"management/internal/erpserver/model/view"
|
||||
"management/internal/pkg/redis"
|
||||
)
|
||||
|
||||
func GetCacheExpire() time.Duration {
|
||||
return time.Hour*6 + time.Duration(rand.Intn(600))*time.Second // 6小时±10分钟
|
||||
}
|
||||
|
||||
func GetOrSetCache(ctx context.Context, redis redis.Cache, key string, expire time.Duration, getData func() (any, error), result any) error {
|
||||
if data, err := redis.GetBytes(ctx, key); err == nil {
|
||||
return json.Unmarshal(data, result)
|
||||
}
|
||||
|
||||
data, err := getData()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
bytes, err := json.Marshal(data)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := redis.Set(ctx, key, bytes, expire); err != nil {
|
||||
log.Printf("Failed to set cache: %v", err)
|
||||
}
|
||||
|
||||
return json.Unmarshal(bytes, result)
|
||||
}
|
||||
|
||||
func BuildTree[T any](
|
||||
parentID int32,
|
||||
data []*T,
|
||||
idFunc func(*T) int32,
|
||||
childrenFunc func(*T, []*view.LayuiTree) *view.LayuiTree,
|
||||
) []*view.LayuiTree {
|
||||
var res []*view.LayuiTree
|
||||
for _, item := range data {
|
||||
if idFunc(item) == parentID {
|
||||
childNodes := BuildTree[T](idFunc(item), data, idFunc, childrenFunc)
|
||||
res = append(res, childrenFunc(item, childNodes))
|
||||
}
|
||||
}
|
||||
return res
|
||||
}
|
||||
@@ -6,23 +6,25 @@ import (
|
||||
"github.com/mojocn/base64Captcha"
|
||||
)
|
||||
|
||||
type captchaService struct{}
|
||||
|
||||
func NewCaptchaService() v1.CaptchaService {
|
||||
return &captchaService{}
|
||||
type captchaService struct {
|
||||
store base64Captcha.Store
|
||||
}
|
||||
|
||||
var captchaStore = base64Captcha.DefaultMemStore
|
||||
func NewCaptchaService() v1.CaptchaService {
|
||||
return &captchaService{
|
||||
store: base64Captcha.DefaultMemStore,
|
||||
}
|
||||
}
|
||||
|
||||
func (b *captchaService) Generate(height int, width int, length int, maxSkew float64, dotCount int) (id, b64s, answer string, err error) {
|
||||
driver := base64Captcha.NewDriverDigit(height, width, length, maxSkew, dotCount)
|
||||
// driver := base64Captcha.NewDriverString(config.File.Captcha.ImgHeight,
|
||||
// config.File.Captcha.ImgWidth,
|
||||
// 6, 1, keyLong, source, nil, nil, nil)
|
||||
cp := base64Captcha.NewCaptcha(driver, captchaStore)
|
||||
cp := base64Captcha.NewCaptcha(driver, b.store)
|
||||
return cp.Generate()
|
||||
}
|
||||
|
||||
func (b *captchaService) Verify(id, answer string, clear bool) bool {
|
||||
return captchaStore.Verify(id, answer, clear)
|
||||
return b.store.Verify(id, answer, clear)
|
||||
}
|
||||
|
||||
@@ -8,8 +8,34 @@ import (
|
||||
"management/internal/erpserver/model/form"
|
||||
"management/internal/erpserver/model/system"
|
||||
"management/internal/erpserver/model/view"
|
||||
"management/internal/erpserver/repository"
|
||||
"management/internal/pkg/redis"
|
||||
"management/internal/pkg/session"
|
||||
|
||||
"github.com/drhin/logger"
|
||||
)
|
||||
|
||||
type Service struct {
|
||||
Log *logger.Logger
|
||||
Tx repository.Transaction
|
||||
Session session.Manager
|
||||
Redis redis.Cache
|
||||
}
|
||||
|
||||
func NewService(
|
||||
log *logger.Logger,
|
||||
tx repository.Transaction,
|
||||
session session.Manager,
|
||||
redis redis.Cache,
|
||||
) *Service {
|
||||
return &Service{
|
||||
Log: log,
|
||||
Tx: tx,
|
||||
Session: session,
|
||||
Redis: redis,
|
||||
}
|
||||
}
|
||||
|
||||
type CaptchaService interface {
|
||||
Generate(height int, width int, length int, maxSkew float64, dotCount int) (id, b64s, answer string, err error)
|
||||
Verify(id, answer string, clear bool) bool
|
||||
|
||||
@@ -5,16 +5,15 @@ import (
|
||||
|
||||
"management/internal/erpserver/model/dto"
|
||||
"management/internal/erpserver/model/system"
|
||||
"management/internal/erpserver/service"
|
||||
v1 "management/internal/erpserver/service/v1"
|
||||
"management/internal/erpserver/service/v1"
|
||||
)
|
||||
|
||||
type auditLogService struct {
|
||||
*service.Service
|
||||
*v1.Service
|
||||
repo system.AuditLogRepository
|
||||
}
|
||||
|
||||
func NewAuditLogService(service *service.Service, repo system.AuditLogRepository) v1.AuditLogService {
|
||||
func NewAuditLogService(service *v1.Service, repo system.AuditLogRepository) v1.AuditLogService {
|
||||
return &auditLogService{
|
||||
Service: service,
|
||||
repo: repo,
|
||||
|
||||
@@ -8,8 +8,8 @@ import (
|
||||
|
||||
"management/internal/erpserver/model/dto"
|
||||
"management/internal/erpserver/model/system"
|
||||
"management/internal/erpserver/service"
|
||||
v1 "management/internal/erpserver/service/v1"
|
||||
"management/internal/erpserver/service/util"
|
||||
"management/internal/erpserver/service/v1"
|
||||
"management/internal/pkg/know"
|
||||
"management/internal/pkg/know/pearadmin"
|
||||
|
||||
@@ -17,11 +17,11 @@ import (
|
||||
)
|
||||
|
||||
type configService struct {
|
||||
*service.Service
|
||||
*v1.Service
|
||||
repo system.ConfigRepository
|
||||
}
|
||||
|
||||
func NewConfigService(service *service.Service, repo system.ConfigRepository) v1.ConfigService {
|
||||
func NewConfigService(service *v1.Service, repo system.ConfigRepository) v1.ConfigService {
|
||||
return &configService{
|
||||
Service: service,
|
||||
repo: repo,
|
||||
@@ -45,28 +45,12 @@ func (s *configService) List(ctx context.Context, q dto.SearchDto) ([]*system.Co
|
||||
}
|
||||
|
||||
func (s *configService) Pear(ctx context.Context) (*dto.PearConfig, error) {
|
||||
// 判断redis是否存储
|
||||
var res *dto.PearConfig
|
||||
key := know.GetManageKey(ctx, know.PearAdmin)
|
||||
bs, err := s.Redis.GetBytes(ctx, key)
|
||||
if err == nil {
|
||||
var res *dto.PearConfig
|
||||
if err := json.Unmarshal(bs, &res); err == nil {
|
||||
return res, nil
|
||||
}
|
||||
}
|
||||
|
||||
conf, err := s.repo.GetByKey(ctx, pearadmin.PearKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var pear dto.PearConfig
|
||||
if err := json.Unmarshal([]byte(conf.Value), &pear); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
_ = s.Redis.Set(ctx, key, conf.Value, time.Hour*6)
|
||||
return &pear, nil
|
||||
err := util.GetOrSetCache(ctx, s.Redis, key, util.GetCacheExpire(), func() (any, error) {
|
||||
return s.repo.GetByKey(ctx, pearadmin.PearKey)
|
||||
}, &res)
|
||||
return res, err
|
||||
}
|
||||
|
||||
func (s *configService) RefreshCache(ctx context.Context, key string) error {
|
||||
|
||||
@@ -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 departmentService struct {
|
||||
*service.Service
|
||||
*v1.Service
|
||||
repo system.DepartmentRepository
|
||||
}
|
||||
|
||||
func NewDepartmentService(service *service.Service, repo system.DepartmentRepository) v1.DepartmentService {
|
||||
func NewDepartmentService(service *v1.Service, repo system.DepartmentRepository) v1.DepartmentService {
|
||||
return &departmentService{
|
||||
Service: service,
|
||||
repo: repo,
|
||||
@@ -107,27 +106,12 @@ func (s *departmentService) Get(ctx context.Context, id int32) (*system.Departme
|
||||
}
|
||||
|
||||
func (s *departmentService) All(ctx context.Context) ([]*system.Department, error) {
|
||||
var res []*system.Department
|
||||
key := know.GetManageKey(ctx, know.AllDepartments)
|
||||
bs, err := s.Redis.GetBytes(ctx, key)
|
||||
if err == nil {
|
||||
var res []*system.Department
|
||||
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 *departmentService) List(ctx context.Context, q dto.SearchDto) ([]*system.Department, int64, error) {
|
||||
@@ -135,19 +119,12 @@ func (s *departmentService) List(ctx context.Context, q dto.SearchDto) ([]*syste
|
||||
}
|
||||
|
||||
func (s *departmentService) RefreshCache(ctx context.Context) error {
|
||||
var res []*system.Department
|
||||
key := know.GetManageKey(ctx, know.AllDepartments)
|
||||
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
|
||||
err := util.GetOrSetCache(ctx, s.Redis, key, util.GetCacheExpire(), func() (any, error) {
|
||||
return s.All(ctx)
|
||||
}, &res)
|
||||
return err
|
||||
}
|
||||
|
||||
func (s *departmentService) RebuildParentPath(ctx context.Context) error {
|
||||
|
||||
@@ -6,16 +6,15 @@ import (
|
||||
|
||||
"management/internal/erpserver/model/dto"
|
||||
"management/internal/erpserver/model/system"
|
||||
"management/internal/erpserver/service"
|
||||
v1 "management/internal/erpserver/service/v1"
|
||||
"management/internal/erpserver/service/v1"
|
||||
)
|
||||
|
||||
type loginLogService struct {
|
||||
*service.Service
|
||||
*v1.Service
|
||||
repo system.LoginLogRepository
|
||||
}
|
||||
|
||||
func NewLoginLogService(service *service.Service, repo system.LoginLogRepository) v1.LoginLogService {
|
||||
func NewLoginLogService(service *v1.Service, repo system.LoginLogRepository) v1.LoginLogService {
|
||||
return &loginLogService{
|
||||
Service: service,
|
||||
repo: repo,
|
||||
|
||||
@@ -5,25 +5,24 @@ import (
|
||||
"encoding/json"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"management/internal/erpserver/model/dto"
|
||||
"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/know"
|
||||
)
|
||||
|
||||
type menuService struct {
|
||||
*service.Service
|
||||
*v1.Service
|
||||
repo system.MenuRepository
|
||||
roleService v1.RoleService
|
||||
roleMenuService v1.RoleMenuService
|
||||
}
|
||||
|
||||
func NewMenuService(
|
||||
service *service.Service,
|
||||
service *v1.Service,
|
||||
repo system.MenuRepository,
|
||||
roleService v1.RoleService,
|
||||
roleMenuService v1.RoleMenuService,
|
||||
@@ -53,27 +52,12 @@ func (s *menuService) GetByUrl(ctx context.Context, url string) (*system.Menu, e
|
||||
}
|
||||
|
||||
func (s *menuService) All(ctx context.Context) ([]*system.Menu, error) {
|
||||
var res []*system.Menu
|
||||
key := know.GetManageKey(ctx, know.AllMenus)
|
||||
b, err := s.Redis.GetBytes(ctx, key)
|
||||
if err == nil {
|
||||
var res []*system.Menu
|
||||
if err := json.Unmarshal(b, &res); err == nil {
|
||||
return res, nil
|
||||
}
|
||||
}
|
||||
|
||||
res, err := s.repo.All(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
b, err = json.Marshal(res)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
_ = s.Redis.Set(ctx, key, b, 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 *menuService) ListMenuTree(ctx context.Context) ([]*view.MenuTree, error) {
|
||||
@@ -111,7 +95,7 @@ func (s *menuService) SetListByRoleID(ctx context.Context, roleID int32) ([]*dto
|
||||
return nil, err
|
||||
}
|
||||
|
||||
_ = s.Redis.Set(ctx, key, b, time.Hour*6)
|
||||
_ = s.Redis.Set(ctx, key, b, util.GetCacheExpire())
|
||||
return res, nil
|
||||
}
|
||||
|
||||
@@ -141,7 +125,7 @@ func (s *menuService) SetListByRoleIDToMap(ctx context.Context, roleID int32) (m
|
||||
return nil, err
|
||||
}
|
||||
|
||||
_ = s.Redis.Set(ctx, key, b, time.Hour*6)
|
||||
_ = s.Redis.Set(ctx, key, b, util.GetCacheExpire())
|
||||
return res, nil
|
||||
}
|
||||
|
||||
@@ -172,7 +156,7 @@ func (s *menuService) SetOwerMenus(ctx context.Context, roleID int32) ([]*dto.Me
|
||||
return nil, err
|
||||
}
|
||||
|
||||
_ = s.Redis.Set(ctx, key, b, time.Hour*6)
|
||||
_ = s.Redis.Set(ctx, key, b, util.GetCacheExpire())
|
||||
return res, nil
|
||||
}
|
||||
|
||||
@@ -206,19 +190,12 @@ func (s *menuService) SetRoleMenu(ctx context.Context, roleID int32, rms []*syst
|
||||
}
|
||||
|
||||
func (s *menuService) RefreshCache(ctx context.Context) error {
|
||||
var res []*system.Menu
|
||||
key := know.GetManageKey(ctx, know.AllMenus)
|
||||
res, err := s.All(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
getData := func() (any, error) {
|
||||
return s.repo.All(ctx)
|
||||
}
|
||||
|
||||
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(), getData, &res)
|
||||
}
|
||||
|
||||
func (s *menuService) RebuildParentPath(ctx context.Context) error {
|
||||
@@ -303,15 +280,28 @@ func (s *menuService) toXmSelectTree(parentId int32, data []*system.Menu) []*vie
|
||||
}
|
||||
|
||||
func findMenu(rms []*system.RoleMenu, ms []*system.Menu) []*system.Menu {
|
||||
menuMap := make(map[int32]*system.Menu)
|
||||
for _, m := range ms {
|
||||
menuMap[m.ID] = m
|
||||
}
|
||||
|
||||
var res []*system.Menu
|
||||
for _, rm := range rms {
|
||||
for _, m := range ms {
|
||||
if rm.MenuID == m.ID {
|
||||
res = append(res, m)
|
||||
}
|
||||
if m, ok := menuMap[rm.MenuID]; ok {
|
||||
res = append(res, m)
|
||||
}
|
||||
}
|
||||
return res
|
||||
|
||||
//var res []*system.Menu
|
||||
//for _, rm := range rms {
|
||||
// for _, m := range ms {
|
||||
// if rm.MenuID == m.ID {
|
||||
// res = append(res, m)
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
//return res
|
||||
}
|
||||
|
||||
func toOwnerMenuDto(ms []*system.Menu) []*dto.OwnerMenuDto {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -4,16 +4,15 @@ import (
|
||||
"context"
|
||||
|
||||
"management/internal/erpserver/model/system"
|
||||
"management/internal/erpserver/service"
|
||||
v1 "management/internal/erpserver/service/v1"
|
||||
"management/internal/erpserver/service/v1"
|
||||
)
|
||||
|
||||
type roleMenuService struct {
|
||||
*service.Service
|
||||
*v1.Service
|
||||
repo system.RoleMenuRepository
|
||||
}
|
||||
|
||||
func NewRoleMenuService(service *service.Service, repo system.RoleMenuRepository) v1.RoleMenuService {
|
||||
func NewRoleMenuService(service *v1.Service, repo system.RoleMenuRepository) v1.RoleMenuService {
|
||||
return &roleMenuService{
|
||||
Service: service,
|
||||
repo: repo,
|
||||
|
||||
@@ -10,8 +10,7 @@ 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/v1"
|
||||
"management/internal/pkg/crypto"
|
||||
"management/internal/pkg/database"
|
||||
"management/internal/pkg/know"
|
||||
@@ -22,14 +21,14 @@ import (
|
||||
)
|
||||
|
||||
type userService struct {
|
||||
*service.Service
|
||||
*v1.Service
|
||||
repo system.UserRepository
|
||||
roleService v1.RoleService
|
||||
loginLogService v1.LoginLogService
|
||||
}
|
||||
|
||||
func NewUserService(
|
||||
service *service.Service,
|
||||
service *v1.Service,
|
||||
repo system.UserRepository,
|
||||
roleService v1.RoleService,
|
||||
loginLogService v1.LoginLogService,
|
||||
|
||||
@@ -9,7 +9,7 @@ import (
|
||||
systemHandler "management/internal/erpserver/handler/system"
|
||||
"management/internal/erpserver/repository"
|
||||
systemRepo "management/internal/erpserver/repository/system"
|
||||
"management/internal/erpserver/service"
|
||||
"management/internal/erpserver/service/v1"
|
||||
commonService "management/internal/erpserver/service/v1/common"
|
||||
systemService "management/internal/erpserver/service/v1/system"
|
||||
"management/internal/pkg/config"
|
||||
@@ -37,7 +37,7 @@ var repositorySet = wire.NewSet(
|
||||
)
|
||||
|
||||
var serviceSet = wire.NewSet(
|
||||
service.NewService,
|
||||
v1.NewService,
|
||||
commonService.NewCaptchaService,
|
||||
systemService.NewUserService,
|
||||
systemService.NewLoginLogService,
|
||||
|
||||
@@ -15,7 +15,7 @@ import (
|
||||
system3 "management/internal/erpserver/handler/system"
|
||||
"management/internal/erpserver/repository"
|
||||
"management/internal/erpserver/repository/system"
|
||||
"management/internal/erpserver/service"
|
||||
"management/internal/erpserver/service/v1"
|
||||
"management/internal/erpserver/service/v1/common"
|
||||
system2 "management/internal/erpserver/service/v1/system"
|
||||
"management/internal/pkg/config"
|
||||
@@ -43,15 +43,15 @@ func NewWire(configConfig *config.Config, loggerLogger *logger.Logger) (*chi.Mux
|
||||
cleanup()
|
||||
return nil, nil, err
|
||||
}
|
||||
serviceService := service.NewService(loggerLogger, transaction, manager, cache)
|
||||
service := v1.NewService(loggerLogger, transaction, manager, cache)
|
||||
menuRepository := system.NewMenuRepository(repositoryRepository)
|
||||
roleRepository := system.NewRoleRepository(repositoryRepository)
|
||||
roleService := system2.NewRoleService(serviceService, roleRepository)
|
||||
roleService := system2.NewRoleService(service, roleRepository)
|
||||
roleMenuRepository := system.NewRoleMenuRepository(repositoryRepository)
|
||||
roleMenuService := system2.NewRoleMenuService(serviceService, roleMenuRepository)
|
||||
menuService := system2.NewMenuService(serviceService, menuRepository, roleService, roleMenuService)
|
||||
roleMenuService := system2.NewRoleMenuService(service, roleMenuRepository)
|
||||
menuService := system2.NewMenuService(service, menuRepository, roleService, roleMenuService)
|
||||
auditLogRepository := system.NewAuditLogRepository(repositoryRepository)
|
||||
auditLogService := system2.NewAuditLogService(serviceService, auditLogRepository)
|
||||
auditLogService := system2.NewAuditLogService(service, auditLogRepository)
|
||||
renderRender, err := render.New(manager, menuService)
|
||||
if err != nil {
|
||||
cleanup2()
|
||||
@@ -63,15 +63,15 @@ func NewWire(configConfig *config.Config, loggerLogger *logger.Logger) (*chi.Mux
|
||||
captchaHandler := common2.NewCaptchaHandler(handlerHandler, captchaService)
|
||||
uploadHandler := common2.NewUploadHandler(handlerHandler)
|
||||
configRepository := system.NewConfigRepository(repositoryRepository)
|
||||
configService := system2.NewConfigService(serviceService, configRepository)
|
||||
configService := system2.NewConfigService(service, configRepository)
|
||||
configHandler := system3.NewConfigHandler(handlerHandler, configService)
|
||||
userRepository := system.NewUserRepository(repositoryRepository)
|
||||
loginLogRepository := system.NewLoginLogRepository(repositoryRepository)
|
||||
loginLogService := system2.NewLoginLogService(serviceService, loginLogRepository)
|
||||
userService := system2.NewUserService(serviceService, userRepository, roleService, loginLogService)
|
||||
loginLogService := system2.NewLoginLogService(service, loginLogRepository)
|
||||
userService := system2.NewUserService(service, userRepository, roleService, loginLogService)
|
||||
homeHandler := system3.NewHomeHandler(handlerHandler, userService, loginLogService)
|
||||
departmentRepository := system.NewDepartmentRepository(repositoryRepository)
|
||||
departmentService := system2.NewDepartmentService(serviceService, departmentRepository)
|
||||
departmentService := system2.NewDepartmentService(service, departmentRepository)
|
||||
userHandler := system3.NewUserHandler(handlerHandler, captchaService, userService, roleService, departmentService)
|
||||
loginLogHandler := system3.NewLoginLogHandler(handlerHandler, loginLogService)
|
||||
auditHandler := system3.NewAuditHandler(handlerHandler, auditLogService)
|
||||
@@ -89,7 +89,7 @@ func NewWire(configConfig *config.Config, loggerLogger *logger.Logger) (*chi.Mux
|
||||
|
||||
var repositorySet = wire.NewSet(repository.NewDB, repository.NewRepository, repository.NewTransaction, system.NewUserRepository, system.NewLoginLogRepository, system.NewAuditLogRepository, system.NewRoleRepository, system.NewMenuRepository, system.NewRoleMenuRepository, system.NewDepartmentRepository, system.NewConfigRepository)
|
||||
|
||||
var serviceSet = wire.NewSet(service.NewService, common.NewCaptchaService, system2.NewUserService, system2.NewLoginLogService, system2.NewAuditLogService, system2.NewRoleService, system2.NewMenuService, system2.NewRoleMenuService, system2.NewDepartmentService, system2.NewConfigService)
|
||||
var serviceSet = wire.NewSet(v1.NewService, common.NewCaptchaService, system2.NewUserService, system2.NewLoginLogService, system2.NewAuditLogService, system2.NewRoleService, system2.NewMenuService, system2.NewRoleMenuService, system2.NewDepartmentService, system2.NewConfigService)
|
||||
|
||||
var handlerSet = wire.NewSet(handler.NewHandler, common2.NewCaptchaHandler, common2.NewUploadHandler, system3.NewHomeHandler, system3.NewUserHandler, system3.NewLoginLogHandler, system3.NewAuditHandler, system3.NewRoleHandler, system3.NewMenuHandler, system3.NewDepartmentHandler, system3.NewConfigHandler)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user