From 2ac8f925c9d554dfdc35b07e16a40a305bab254a Mon Sep 17 00:00:00 2001 From: zhangwenjian Date: Sun, 23 May 2021 17:52:43 +0800 Subject: [PATCH] =?UTF-8?q?refactor=F0=9F=8E=A8=20api=E4=B8=9A=E5=8A=A1?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/apis/sys_api.go | 19 +++++------- app/admin/models/sys_api.go | 21 ++++++------- app/admin/service/dto/sys_api.go | 53 +++++++++----------------------- app/admin/service/sys_api.go | 14 +++++---- 4 files changed, 39 insertions(+), 68 deletions(-) diff --git a/app/admin/apis/sys_api.go b/app/admin/apis/sys_api.go index 7cc7dd31..c86204fe 100644 --- a/app/admin/apis/sys_api.go +++ b/app/admin/apis/sys_api.go @@ -30,7 +30,7 @@ type SysApi struct { // @Param pageSize query int false "页条数" // @Param pageIndex query int false "页码" // @Success 200 {object} response.Response{data=response.Page{list=[]models.SysApi}} "{"code": 200, "data": [...]}" -// @Router /api/v1/sys_api [get] +// @Router /api/v1/sys-api [get] // @Security Bearer func (e SysApi) GetSysApiList(c *gin.Context) { s := new(service.SysApi) @@ -105,35 +105,30 @@ func (e SysApi) GetSysApi(c *gin.Context) { // @Router /api/v1/sys_api/{id} [put] // @Security Bearer func (e SysApi) UpdateSysApi(c *gin.Context) { - control := new(dto.SysApiControl) + req := new(dto.SysApiControl) s := new(service.SysApi) err := e.MakeContext(c). MakeOrm(). - Bind(control). + Bind(req). MakeService(&s.Service). Errors if err != nil { e.Logger.Error(err) return } - object, err := control.GenerateM() - if err != nil { - e.Logger.Errorf("generate SysApi model error, %s", err.Error()) - e.Error(http.StatusInternalServerError, err, "模型生成失败") - return - } - object.SetUpdateBy(user.GetUserId(c)) + + req.SetUpdateBy(user.GetUserId(c)) //数据权限检查 p := actions.GetPermissionFromContext(c) - err = s.UpdateSysApi(object.(*models.SysApi), p) + err = s.UpdateSysApi(req, p) if err != nil { e.Logger.Errorf("Update SysApi error, %s", err.Error()) e.Error(http.StatusInternalServerError, err, "更新失败") return } - e.OK(object.GetId(), "更新成功") + e.OK(req.GetId(), "更新成功") } // DeleteSysApi 删除接口管理 diff --git a/app/admin/models/sys_api.go b/app/admin/models/sys_api.go index 27e83a40..b2bed004 100644 --- a/app/admin/models/sys_api.go +++ b/app/admin/models/sys_api.go @@ -1,26 +1,23 @@ package models import ( - // "gorm.io/gorm" - "encoding/json" "fmt" + "github.com/go-admin-team/go-admin-core/sdk" "github.com/go-admin-team/go-admin-core/sdk/runtime" "github.com/go-admin-team/go-admin-core/storage" + "go-admin/common/models" ) type SysApi struct { - Id int `json:"id" gorm:"primaryKey;autoIncrement;comment:主键编码"` - Handle string `json:"handle" gorm:"type:varchar(128);comment:handle"` - Title string `json:"title" gorm:"type:varchar(128);comment:标题"` - Permission string `json:"permission" gorm:"size:255;"` - Path string `json:"path" gorm:"type:varchar(128);comment:地址"` - Paths string `json:"paths" gorm:"type:varchar(128);comment:Paths"` - Action string `json:"action" gorm:"type:varchar(16);comment:类型"` - ParentId int `json:"parentId" gorm:"comment:按钮id"` - Sort int `json:"sort" gorm:"type:tinyint(4);comment:排序"` + Id int `json:"id" gorm:"primaryKey;autoIncrement;comment:主键编码"` + Handle string `json:"handle" gorm:"size:128;comment:handle"` + Title string `json:"title" gorm:"size:128;comment:标题"` + Path string `json:"path" gorm:"size:128;comment:地址"` + Action string `json:"action" gorm:"size:16;comment:请求类型"` + Type string `json:"type" gorm:"size:16;comment:接口类型"` models.ModelTime models.ControlBy } @@ -67,4 +64,4 @@ func SaveSysApi(message storage.Messager) (err error) { } } return nil -} \ No newline at end of file +} diff --git a/app/admin/service/dto/sys_api.go b/app/admin/service/dto/sys_api.go index 827d9341..514aedbb 100644 --- a/app/admin/service/dto/sys_api.go +++ b/app/admin/service/dto/sys_api.go @@ -43,47 +43,24 @@ func (m *SysApiSearch) Bind(ctx *gin.Context) error { } type SysApiControl struct { - Id int `uri:"id" comment:"编码"` // 编码 - Handle string `json:"handle" comment:"handle"` - Title string `json:"title" comment:"标题"` - Path string `json:"path" comment:"地址"` - Paths string `json:"paths" comment:""` - Action string `json:"action" comment:"类型"` - ParentId int `json:"parentId" comment:"按钮id"` - Sort int `json:"sort" comment:"排序"` + Id int `uri:"id" comment:"编码"` // 编码 + Handle string `json:"handle" comment:"handle"` + Title string `json:"title" comment:"标题"` + Path string `json:"path" comment:"地址"` + Type string `json:"type" comment:""` + Action string `json:"action" comment:"类型"` + common.ControlBy } -func (s *SysApiControl) Generate() dto.Control { - o := *s - return &o -} - -func (s *SysApiControl) Bind(ctx *gin.Context) error { - log := api.GetRequestLogger(ctx) - err := ctx.ShouldBindUri(s) - if err != nil { - log.Errorf("ShouldBindUri error: %s", err.Error()) - return errors.New("数据绑定出错") +func (s *SysApiControl) Generate(model *models.SysApi) { + if s.Id != 0 { + model.Id = s.Id } - err = ctx.ShouldBind(s) - if err != nil { - log.Errorf("ShouldBind error: %s", err.Error()) - err = errors.New("数据绑定出错") - } - return err -} - -func (s *SysApiControl) GenerateM() (common.ActiveRecord, error) { - return &models.SysApi{ - Id: s.Id, - Handle: s.Handle, - Title: s.Title, - Path: s.Path, - Paths: s.Paths, - Action: s.Action, - ParentId: s.ParentId, - Sort: s.Sort, - }, nil + model.Handle = s.Handle + model.Title = s.Title + model.Path = s.Path + model.Type = s.Type + model.Action = s.Action } func (s *SysApiControl) GetId() interface{} { diff --git a/app/admin/service/sys_api.go b/app/admin/service/sys_api.go index ab9e8ca8..0c6a7ba0 100644 --- a/app/admin/service/sys_api.go +++ b/app/admin/service/sys_api.go @@ -75,11 +75,13 @@ func (e *SysApi) CheckStorageSysApi(c *[]runtime.Router) error { } // UpdateSysApi 修改SysApi对象 -func (e *SysApi) UpdateSysApi(c *models.SysApi, p *actions.DataPermission) error { - db := e.Orm.Model(c). - Scopes( - actions.Permission(c.TableName(), p), - ).Where(c.GetId()).Updates(c) +func (e *SysApi) UpdateSysApi(c *dto.SysApiControl, p *actions.DataPermission) error { + var model = models.SysApi{} + e.Orm.Scopes( + actions.Permission(model.TableName(), p), + ).First(&model, c.GetId()) + c.Generate(&model) + db := e.Orm.Save(&model) if err := db.Error; err != nil { e.Log.Errorf("Service UpdateSysApi error:%s", err) return err @@ -106,4 +108,4 @@ func (e *SysApi) RemoveSysApi(d *dto.SysApiById, p *actions.DataPermission) erro return errors.New("无权删除该数据") } return nil -} \ No newline at end of file +}