增加了推荐搜索字段

This commit is contained in:
wucongxing8150 2024-08-12 10:04:42 +08:00
parent 43e7aee9c2
commit ca2f2c4421
7 changed files with 105 additions and 38 deletions

View File

@ -4,7 +4,7 @@ package controller
type Api struct {
Login // 登录
Public // 公共方法
Class // 分类
BaseClass // 分类
Question // 问题
User // 用户
UserCoupon // 用户优惠卷

View File

@ -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)

View File

@ -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
}

View File

@ -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,
}
// 将转换后的结构体添加到新切片中

View File

@ -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
}

12
api/requests/BaseClass.go Normal file
View File

@ -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:"是否推荐搜索"`
}

View File

@ -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)
}
// 问题