From ca2f2c442119b76ab2e65d8f7854333b285778bc Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Mon, 12 Aug 2024 10:04:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E6=8E=A8=E8=8D=90?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/controller/Base.go | 2 +- api/controller/{Class.go => BaseClass.go} | 27 +++++++++--- api/dao/BaseClass.go | 34 +++++++++++++++ api/dto/BaseClass.go | 51 ++++++++++++----------- api/model/BaseClass.go | 13 +++--- api/requests/BaseClass.go | 12 ++++++ api/router/router.go | 4 +- 7 files changed, 105 insertions(+), 38 deletions(-) rename api/controller/{Class.go => BaseClass.go} (62%) create mode 100644 api/requests/BaseClass.go diff --git a/api/controller/Base.go b/api/controller/Base.go index 0315cf3..fc8272a 100644 --- a/api/controller/Base.go +++ b/api/controller/Base.go @@ -4,7 +4,7 @@ package controller type Api struct { Login // 登录 Public // 公共方法 - Class // 分类 + BaseClass // 分类 Question // 问题 User // 用户 UserCoupon // 用户优惠卷 diff --git a/api/controller/Class.go b/api/controller/BaseClass.go similarity index 62% rename from api/controller/Class.go rename to api/controller/BaseClass.go index 4bfbf06..af58770 100644 --- a/api/controller/Class.go +++ b/api/controller/BaseClass.go @@ -4,19 +4,36 @@ import ( "github.com/gin-gonic/gin" "hepa-calc-api/api/dao" "hepa-calc-api/api/dto" + "hepa-calc-api/api/requests" "hepa-calc-api/api/responses" + "hepa-calc-api/global" + "hepa-calc-api/utils" "strconv" ) -type Class struct{} +type BaseClass struct{} + +// GetBaseClassList 获取分类列表 +func (b *BaseClass) GetBaseClassList(c *gin.Context) { + baseClassRequest := requests.BaseClassRequest{} + req := baseClassRequest.GetBaseClassList + if err := c.ShouldBind(&req); err != nil { + responses.FailWithMessage(err.Error(), c) + return + } + + // 参数验证 + if err := global.Validate.Struct(req); err != nil { + responses.FailWithMessage(utils.Translate(err), c) + return + } -func (b *Class) GetClassList(c *gin.Context) { // 获取分类数据 baseClassDao := dao.BaseClassDao{} maps := make(map[string]interface{}) maps["class_status"] = 1 - baseClass, err := baseClassDao.GetBaseClassOrderList(maps) + baseClass, err := baseClassDao.GetBaseClassListSearch(req) if err != nil { responses.FailWithMessage(err.Error(), c) return @@ -32,8 +49,8 @@ func (b *Class) GetClassList(c *gin.Context) { responses.OkWithData(g, c) } -// GetClass 获取分类详情 -func (r *Class) GetClass(c *gin.Context) { +// GetBaseClass 获取分类详情 +func (r *BaseClass) GetBaseClass(c *gin.Context) { id := c.Param("class_id") if id == "" { responses.FailWithMessage("缺少参数", c) diff --git a/api/dao/BaseClass.go b/api/dao/BaseClass.go index 81cee96..4feb5c1 100644 --- a/api/dao/BaseClass.go +++ b/api/dao/BaseClass.go @@ -4,6 +4,7 @@ import ( "gorm.io/gorm" "gorm.io/gorm/clause" "hepa-calc-api/api/model" + "hepa-calc-api/api/requests" "hepa-calc-api/global" ) @@ -115,3 +116,36 @@ func (r *BaseClassDao) GetBaseClass(maps interface{}) (m *model.BaseClass, err e } return m, nil } + +// GetBaseClassListSearch 获取列表 +func (r *BaseClassDao) GetBaseClassListSearch(req requests.GetBaseClassList) (m []*model.BaseClass, err error) { + // 构建查询条件 + query := global.Db.Model(&model.BaseClass{}) + + query = query.Where("class_status = ?", 1) + + // 分类名称 + if req.ClassName != "" { + query = query.Where("class_name LIKE ?", "%"+req.ClassName+"%") + } + + // 分类简介 + if req.ClassBrief != "" { + query = query.Where("class_brief LIKE ?", "%"+req.ClassBrief+"%") + } + + // 是否推荐搜索 + if req.IsRecommendSearch != nil { + query = query.Where("is_recommend_search = ?", req.IsRecommendSearch) + } + + // 排序 + query = query.Order("sort desc") + query = query.Order("created_at desc") + + err = query.Scopes(model.Paginate(1, 10)).Find(&m).Error + if err != nil { + return nil, err + } + return m, nil +} diff --git a/api/dto/BaseClass.go b/api/dto/BaseClass.go index 1f97654..0cd35a8 100644 --- a/api/dto/BaseClass.go +++ b/api/dto/BaseClass.go @@ -8,27 +8,29 @@ import ( // BaseClassDto 基础数据-分类表 type BaseClassDto struct { - ClassId string `json:"class_id"` // 主键id - ClassName string `json:"class_name"` // 分类名称 - ClassStatus int `json:"class_status"` // 分类状态(1:正常 2:隐藏) - ClassIcon string `json:"class_icon"` // 图标地址 - ClassBrief string `json:"class_brief"` // 分类简介 - Sort uint `json:"sort"` // 排序值(越大排名越靠前) - CreatedAt model.LocalTime `json:"created_at"` // 创建时间 - UpdatedAt model.LocalTime `json:"updated_at"` // 更新时间 + ClassId string `json:"class_id"` // 主键id + ClassName string `json:"class_name"` // 分类名称 + ClassStatus int `json:"class_status"` // 分类状态(1:正常 2:隐藏) + ClassIcon string `json:"class_icon"` // 图标地址 + ClassBrief string `json:"class_brief"` // 分类简介 + Sort uint `json:"sort"` // 排序值(越大排名越靠前) + IsRecommendSearch int `json:"is_recommend_search"` // 是否推荐搜索 + CreatedAt model.LocalTime `json:"created_at"` // 创建时间 + UpdatedAt model.LocalTime `json:"updated_at"` // 更新时间 } // GetBaseClassDto 详情-基础数据-分类表 func GetBaseClassDto(m *model.BaseClass) *BaseClassDto { return &BaseClassDto{ - ClassId: fmt.Sprintf("%d", m.ClassId), - ClassName: m.ClassName, - ClassStatus: m.ClassStatus, - ClassIcon: utils.AddOssDomain(m.ClassIcon), - ClassBrief: m.ClassBrief, - Sort: m.Sort, - CreatedAt: m.CreatedAt, - UpdatedAt: m.UpdatedAt, + ClassId: fmt.Sprintf("%d", m.ClassId), + ClassName: m.ClassName, + ClassStatus: m.ClassStatus, + ClassIcon: utils.AddOssDomain(m.ClassIcon), + ClassBrief: m.ClassBrief, + Sort: m.Sort, + IsRecommendSearch: m.IsRecommendSearch, + CreatedAt: m.CreatedAt, + UpdatedAt: m.UpdatedAt, } } @@ -40,14 +42,15 @@ func GetBaseClassListDto(m []*model.BaseClass) []*BaseClassDto { if len(m) > 0 { for i, v := range m { response := &BaseClassDto{ - ClassId: fmt.Sprintf("%d", v.ClassId), - ClassName: v.ClassName, - ClassStatus: v.ClassStatus, - ClassIcon: utils.AddOssDomain(v.ClassIcon), - ClassBrief: v.ClassBrief, - Sort: v.Sort, - CreatedAt: v.CreatedAt, - UpdatedAt: v.UpdatedAt, + ClassId: fmt.Sprintf("%d", v.ClassId), + ClassName: v.ClassName, + ClassStatus: v.ClassStatus, + ClassIcon: utils.AddOssDomain(v.ClassIcon), + ClassBrief: v.ClassBrief, + Sort: v.Sort, + IsRecommendSearch: v.IsRecommendSearch, + CreatedAt: v.CreatedAt, + UpdatedAt: v.UpdatedAt, } // 将转换后的结构体添加到新切片中 diff --git a/api/model/BaseClass.go b/api/model/BaseClass.go index 1f7324c..22893e8 100644 --- a/api/model/BaseClass.go +++ b/api/model/BaseClass.go @@ -8,12 +8,13 @@ import ( // BaseClass 基础数据-分类表 type BaseClass struct { - ClassId int64 `gorm:"column:class_id;type:bigint(19);primary_key;comment:主键id" json:"class_id"` - ClassName string `gorm:"column:class_name;type:varchar(100);comment:分类名称" json:"class_name"` - ClassStatus int `gorm:"column:class_status;type:tinyint(1);default:1;comment:分类状态(1:正常 2:隐藏)" json:"class_status"` - ClassIcon string `gorm:"column:class_icon;type:varchar(255);comment:图标地址" json:"class_icon"` - ClassBrief string `gorm:"column:class_brief;type:text;comment:分类简介" json:"class_brief"` - Sort uint `gorm:"column:sort;type:int(10) unsigned;default:1;comment:排序值(越大排名越靠前)" json:"sort"` + ClassId int64 `gorm:"column:class_id;type:bigint(19);primary_key;comment:主键id" json:"class_id"` + ClassName string `gorm:"column:class_name;type:varchar(100);comment:分类名称" json:"class_name"` + ClassStatus int `gorm:"column:class_status;type:tinyint(1);default:1;comment:分类状态(1:正常 2:隐藏)" json:"class_status"` + ClassIcon string `gorm:"column:class_icon;type:varchar(255);comment:图标地址" json:"class_icon"` + ClassBrief string `gorm:"column:class_brief;type:text;comment:分类简介" json:"class_brief"` + Sort uint `gorm:"column:sort;type:int(10) unsigned;default:1;comment:排序值(越大排名越靠前)" json:"sort"` + IsRecommendSearch int `gorm:"column:is_recommend_search;type:tinyint(1);default:0;comment:是否推荐搜索" json:"is_recommend_search"` Model } diff --git a/api/requests/BaseClass.go b/api/requests/BaseClass.go new file mode 100644 index 0000000..c3196fe --- /dev/null +++ b/api/requests/BaseClass.go @@ -0,0 +1,12 @@ +package requests + +type BaseClassRequest struct { + GetBaseClassList // 获取分类列表 +} + +// GetBaseClassList 获取分类列表 +type GetBaseClassList struct { + ClassName string `json:"class_name" form:"class_name" label:"分类名称"` + ClassBrief string `json:"class_brief" form:"class_brief" label:"分类简介"` + IsRecommendSearch *int `json:"is_recommend_search" form:"is_recommend_search" label:"是否推荐搜索"` +} diff --git a/api/router/router.go b/api/router/router.go index f2e510b..cd6c40a 100644 --- a/api/router/router.go +++ b/api/router/router.go @@ -137,10 +137,10 @@ func privateRouter(r *gin.Engine, api controller.Api) { classGroup := r.Group("/class") { // 获取分类列表 - classGroup.GET("/list", api.Class.GetClassList) + classGroup.GET("/list", api.BaseClass.GetBaseClassList) // 获取分类详情 - classGroup.GET("/:class_id", api.Class.GetClass) + classGroup.GET("/:class_id", api.BaseClass.GetBaseClass) } // 问题