From 7699d8cf420f2140aaa3d20d75d9cb887d46e12a Mon Sep 17 00:00:00 2001 From: zhangwenjian Date: Tue, 15 Jun 2021 09:29:35 +0800 Subject: [PATCH] =?UTF-8?q?refactor=F0=9F=8E=A8:=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E8=A1=8C=E6=94=BF=E5=8C=BA=E7=AE=A1=E7=90=86=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/other/apis/sys_china_area_data.go | 11 ++--- app/other/models/sys_china_area_data.go | 7 ++-- app/other/service/dto/sys_china_area_data.go | 15 ++++--- app/other/service/sys_china_area_data.go | 43 +++++++++++++++----- 4 files changed, 48 insertions(+), 28 deletions(-) diff --git a/app/other/apis/sys_china_area_data.go b/app/other/apis/sys_china_area_data.go index a3577177..6122fc72 100644 --- a/app/other/apis/sys_china_area_data.go +++ b/app/other/apis/sys_china_area_data.go @@ -32,18 +32,15 @@ func (e SysChinaAreaData) GetPage(c *gin.Context) { return } - //数据权限检查 - p := actions.GetPermissionFromContext(c) - list := make([]models.SysChinaAreaData, 0) - var count int64 - err = s.GetPage(&req, p, &list, &count) + err = s.GetPage(&req, &list).Error if err != nil { + e.Logger.Error(err) e.Error(http.StatusInternalServerError, err, "查询失败") return } - e.PageOK(list, int(count), req.GetPageIndex(), req.GetPageSize(), "查询成功") + e.OK(list, "查询成功") } func (e SysChinaAreaData) Get(c *gin.Context) { @@ -51,7 +48,7 @@ func (e SysChinaAreaData) Get(c *gin.Context) { req := dto.SysChinaAreaDataById{} err := e.MakeContext(c). MakeOrm(). - Bind(&req, binding.Form). + Bind(&req, nil). MakeService(&s.Service). Errors if err != nil { diff --git a/app/other/models/sys_china_area_data.go b/app/other/models/sys_china_area_data.go index 7e329420..ae07471f 100644 --- a/app/other/models/sys_china_area_data.go +++ b/app/other/models/sys_china_area_data.go @@ -5,9 +5,10 @@ import ( ) type SysChinaAreaData struct { - models.Model - PId string `json:"p_id" gorm:"size:11;comment:上级编码"` - Name string `json:"name" gorm:"size:128;comment:名称"` + Id int `json:"id" gorm:"primaryKey;comment:主键编码"` + PId int `json:"pId" gorm:"size:11;comment:上级编码"` + Name string `json:"name" gorm:"size:128;comment:名称"` + Children []SysChinaAreaData `json:"children,omitempty" gorm:"-"` models.ControlBy models.ModelTime } diff --git a/app/other/service/dto/sys_china_area_data.go b/app/other/service/dto/sys_china_area_data.go index 192c62e9..9a41df41 100644 --- a/app/other/service/dto/sys_china_area_data.go +++ b/app/other/service/dto/sys_china_area_data.go @@ -1,14 +1,13 @@ package dto import ( - models2 "go-admin/app/other/models" + "go-admin/app/other/models" "time" "github.com/gin-gonic/gin" "github.com/go-admin-team/go-admin-core/sdk/api" "go-admin/common/dto" - common "go-admin/common/models" ) type SysChinaAreaDataSearch struct { @@ -32,7 +31,7 @@ func (m *SysChinaAreaDataSearch) Bind(ctx *gin.Context) error { type SysChinaAreaDataControl struct { Id int `uri:"id" comment:"编码"` // 编码 - PId string `json:"pId" comment:"上级编码"` + PId int `json:"pId" comment:"上级编码"` Name string `json:"name" comment:"名称"` CreateTime time.Time `json:"createTime" comment:""` UpdateTime time.Time `json:"updateTime" comment:""` @@ -53,11 +52,11 @@ func (s *SysChinaAreaDataControl) Bind(ctx *gin.Context) error { return err } -func (s *SysChinaAreaDataControl) Generate() (*models2.SysChinaAreaData, error) { - return &models2.SysChinaAreaData{ - Model: common.Model{Id: s.Id}, - PId: s.PId, - Name: s.Name, +func (s *SysChinaAreaDataControl) Generate() (*models.SysChinaAreaData, error) { + return &models.SysChinaAreaData{ + Id: s.Id, + PId: s.PId, + Name: s.Name, }, nil } diff --git a/app/other/service/sys_china_area_data.go b/app/other/service/sys_china_area_data.go index 4e358f5b..32c6c79b 100644 --- a/app/other/service/sys_china_area_data.go +++ b/app/other/service/sys_china_area_data.go @@ -2,10 +2,9 @@ package service import ( "errors" + "github.com/go-admin-team/go-admin-core/sdk/service" "go-admin/app/other/models" "go-admin/app/other/service/dto" - - "github.com/go-admin-team/go-admin-core/sdk/service" "gorm.io/gorm" "go-admin/common/actions" @@ -17,22 +16,46 @@ type SysChinaAreaData struct { } // GetPage 获取SysChinaAreaData列表 -func (e *SysChinaAreaData) GetPage(c *dto.SysChinaAreaDataSearch, p *actions.DataPermission, list *[]models.SysChinaAreaData, count *int64) error { +func (e *SysChinaAreaData) GetPage(c *dto.SysChinaAreaDataSearch, list *[]models.SysChinaAreaData) *SysChinaAreaData { var data models.SysChinaAreaData - + var areaDataList []models.SysChinaAreaData err := e.Orm.Model(&data). Scopes( cDto.MakeCondition(c.GetNeedSearch()), - cDto.Paginate(c.GetPageSize(), c.GetPageIndex()), - actions.Permission(data.TableName(), p), ). - Find(list).Limit(-1).Offset(-1). - Count(count).Error + Find(&areaDataList).Error if err != nil { e.Log.Errorf("Service GetSysChinaAreaDataPage error:%s", err) - return err + _ = e.AddError(err) + return e } - return nil + for i := 0; i < len(areaDataList); i++ { + if areaDataList[i].PId != 86 { + continue + } + menusInfo := areaDataCall(&areaDataList, areaDataList[i]) + *list = append(*list, menusInfo) + } + return e +} + +// areaDataCall 构建树 +func areaDataCall(areaDataList *[]models.SysChinaAreaData, areaData models.SysChinaAreaData) models.SysChinaAreaData { + list := *areaDataList + + min := make([]models.SysChinaAreaData, 0) + for j := 0; j < len(list); j++ { + if areaData.Id != list[j].PId { + continue + } + mi := models.SysChinaAreaData{} + mi = list[j] + mi.Children = []models.SysChinaAreaData{} + ms := areaDataCall(areaDataList, mi) + min = append(min, ms) + } + areaData.Children = min + return areaData } // Get 获取SysChinaAreaData对象