refactor🎨 链式调用改造

This commit is contained in:
zhangwenjian
2021-05-16 16:17:37 +08:00
parent 9fdde1a13b
commit 33275573f9
5 changed files with 158 additions and 111 deletions
+36 -23
View File
@@ -2,11 +2,11 @@ package dto
import (
"encoding/json"
"go-admin/app/admin/models"
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/binding"
"github.com/go-admin-team/go-admin-core/sdk/api"
"go-admin/app/admin/models"
common "go-admin/common/models"
"go-admin/common/dto"
)
@@ -58,6 +58,15 @@ type SysMenuControl struct {
Sort int `form:"sort" comment:"排序"` //排序
Visible string `form:"visible" comment:"是否显示"` //是否显示
IsFrame string `form:"isFrame" comment:"是否frame"` //是否frame
common.ControlBy
}
func (s *SysMenuControl) SetCreateBy(id int) {
s.CreateBy = id
}
func (s *SysMenuControl) SetUpdateBy(id int) {
s.UpdateBy = id
}
// Bind 映射上下文中的结构体数据
@@ -82,26 +91,30 @@ func (s *SysMenuControl) Bind(ctx *gin.Context) error {
}
// Generate 结构体数据转化 从 Control 至 model 对应的模型
func (s *SysMenuControl) Generate() (*models.SysMenu, error) {
return &models.SysMenu{
MenuId: s.MenuId,
MenuName: s.MenuName,
Title: s.Title,
Icon: s.Icon,
Path: s.Path,
Paths: s.Paths,
MenuType: s.MenuType,
Action: s.Action,
SysApi: s.SysApi,
Permission: s.Permission,
ParentId: s.ParentId,
NoCache: s.NoCache,
Breadcrumb: s.Breadcrumb,
Component: s.Component,
Sort: s.Sort,
Visible: s.Visible,
IsFrame: s.IsFrame,
}, nil
func (s *SysMenuControl) Generate(model *models.SysMenu) {
model.MenuId = s.MenuId
model.MenuName = s.MenuName
model.Title = s.Title
model.Icon = s.Icon
model.Path = s.Path
model.Paths = s.Paths
model.MenuType = s.MenuType
model.Action = s.Action
model.SysApi = s.SysApi
model.Permission = s.Permission
model.ParentId = s.ParentId
model.NoCache = s.NoCache
model.Breadcrumb = s.Breadcrumb
model.Component = s.Component
model.Sort = s.Sort
model.Visible = s.Visible
model.IsFrame = s.IsFrame
if s.CreateBy != 0 {
model.CreateBy = s.CreateBy
}
if s.UpdateBy != 0 {
model.UpdateBy = s.UpdateBy
}
}
// GetId 获取数据对应的ID
@@ -155,4 +168,4 @@ type MenuRole struct {
type SelectRole struct {
RoleId int `uri:"roleId"`
}
}
+33 -16
View File
@@ -2,18 +2,33 @@ package service
import (
"errors"
"github.com/go-admin-team/go-admin-core/sdk/pkg"
"github.com/go-admin-team/go-admin-core/sdk/pkg/logger"
"gorm.io/gorm"
"go-admin/app/admin/models"
"go-admin/app/admin/service/dto"
cDto "go-admin/common/dto"
"go-admin/common/service"
"gorm.io/gorm"
)
type SysMenu struct {
service.Service
}
// MakeOrm 设置ORM
func (e *SysMenu) MakeOrm(orm *gorm.DB) *SysMenu {
e.Orm = orm
return e
}
// MakeLog 设置Log
func (e *SysMenu) MakeLog(l *logger.Logger) *SysMenu {
e.Log = l
return e
}
// GetSysMenuPage 获取SysMenu列表
func (e *SysMenu) GetSysMenuPage(c *dto.SysMenuSearch) (*[]models.SysMenu, error) {
var m = make([]models.SysMenu, 0)
@@ -73,17 +88,16 @@ func (e *SysMenu) GetSysMenu(d *dto.SysMenuById, model *models.SysMenu) error {
}
// InsertSysMenu 创建SysMenu对象
func (e *SysMenu) InsertSysMenu(model *models.SysMenu) error {
func (e *SysMenu) InsertSysMenu(c *dto.SysMenuControl) *SysMenu {
var err error
var data models.SysMenu
err = e.Orm.Model(&data).
Create(model).Error
c.Generate(&data)
err = e.Orm.Create(&data).Error
if err != nil {
e.Log.Errorf("db error:%s", err)
return err
_ = e.AddError(err)
}
return nil
return e
}
func (e *SysMenu) initPaths(menu *models.SysMenu) error {
@@ -105,20 +119,23 @@ func (e *SysMenu) initPaths(menu *models.SysMenu) error {
}
// UpdateSysMenu 修改SysMenu对象
func (e *SysMenu) UpdateSysMenu(c *models.SysMenu) error {
func (e *SysMenu) UpdateSysMenu(c *dto.SysMenuControl) *SysMenu {
var err error
db := e.Orm.Session(&gorm.Session{FullSaveAssociations: true}).Debug().Save(c)
model := models.SysMenu{}
e.Orm.First(&model, c.GetId())
c.Generate(&model)
db := e.Orm.Session(&gorm.Session{FullSaveAssociations: true}).Debug().Save(&model)
if db.Error != nil {
e.Log.Errorf("db error:%s", err)
return err
_ = e.AddError(err)
return e
}
if db.RowsAffected == 0 {
return errors.New("无权更新该数据")
e.AddError(errors.New("无权更新该数据"))
return e
}
return nil
}
return e
}
// RemoveSysMenu 删除SysMenu
func (e *SysMenu) RemoveSysMenu(d *dto.SysMenuById) error {
@@ -303,4 +320,4 @@ func (e *SysMenu) getByRoleName(roleName string) (Menus []models.SysMenu, err er
return
}
return
}
}