diff --git a/model/gmodel/fs_product_logic.go b/model/gmodel/fs_product_logic.go
index d0f1850b..0afa4100 100755
--- a/model/gmodel/fs_product_logic.go
+++ b/model/gmodel/fs_product_logic.go
@@ -44,7 +44,7 @@ func (p *FsProductModel) GetProductListByIdsWithoutStatus(ctx context.Context, p
 	}
 	return
 }
-func (p *FsProductModel) GetProductListByTypeIds(ctx context.Context, productTypes []int64, sort string) (resp []FsProduct, err error) {
+func (p *FsProductModel) GetProductListByTypeIds(ctx context.Context, productTypes []int64, page int, limit int, sort string) (resp []FsProduct, total int64, err error) {
 	if len(productTypes) == 0 {
 		return
 	}
@@ -55,11 +55,13 @@ func (p *FsProductModel) GetProductListByTypeIds(ctx context.Context, productTyp
 	case "sort-desc":
 		db = db.Order("`sort` DESC")
 	}
-	err = db.Find(&resp).Error
+	err = db.Count(&total).Error
 	if err != nil {
-		return nil, err
+		return nil, 0, err
 	}
-	return
+	offset := (page - 1) * limit
+	err = db.Offset(offset).Limit(limit).Find(&resp).Error
+	return resp, total, err
 }
 func (p *FsProductModel) GetRandomProductList(ctx context.Context, limit int) (resp []FsProduct, err error) {
 	err = p.db.WithContext(ctx).Model(&FsProduct{}).
diff --git a/server/product/internal/logic/getproductlistlogic.go b/server/product/internal/logic/getproductlistlogic.go
index 3f370f86..ed7bfa8e 100644
--- a/server/product/internal/logic/getproductlistlogic.go
+++ b/server/product/internal/logic/getproductlistlogic.go
@@ -15,6 +15,7 @@ import (
 	"github.com/zeromicro/go-zero/core/logx"
 	"github.com/zeromicro/go-zero/core/stores/sqlc"
 	"gorm.io/gorm"
+	"math"
 	"sort"
 	"strings"
 )
@@ -44,13 +45,14 @@ func (l *GetProductListLogic) GetProductList(req *types.GetProductListReq, useri
 		}
 		return resp.SetStatusWithMessage(basic.CodeOK, "success", demo)
 	}
-	if req.Page <= 0 {
-		req.Page = 1
+	if req.Page <= 0 && req.Page > 10000 {
+		req.Page = constants.DEFAULT_PAGE
 	}
 	//获取合适尺寸
 	if req.Size > 0 {
 		req.Size = image.GetCurrentSize(req.Size)
 	}
+	pageSize := constants.DEFAULT_PAGE_SIZE
 	//查询用户信息(不用判断存在)
 	userModel := gmodel.NewFsUserModel(l.svcCtx.MysqlConn)
 	user, err := userModel.FindUserById(l.ctx, userinfo.UserId)
@@ -60,7 +62,7 @@ func (l *GetProductListLogic) GetProductList(req *types.GetProductListReq, useri
 	}
 	//查询符合的产品列表
 	productModel := gmodel.NewFsProductModel(l.svcCtx.MysqlConn)
-	productList, err := productModel.GetProductListByTypeIds(l.ctx, []int64{req.Cid}, "sort-desc")
+	productList, total, err := productModel.GetProductListByTypeIds(l.ctx, []int64{req.Cid}, int(req.Page), pageSize, "sort-desc")
 	if err != nil {
 		logx.Error(err)
 		return resp.SetStatusWithMessage(basic.CodeServiceErr, "failed to get product list")
@@ -172,6 +174,14 @@ func (l *GetProductListLogic) GetProductList(req *types.GetProductListReq, useri
 	return resp.SetStatusWithMessage(basic.CodeOK, "success", types.GetProductListRsp{
 		Ob: types.Ob{
 			Items: itemList,
-		}, TypeName: *tagInfo.Title, Description: *tagInfo.Description,
+			Meta: types.Meta{
+				TotalCount:  total,
+				PageCount:   int64(math.Ceil(float64(total) / float64(pageSize))),
+				CurrentPage: int(req.Page),
+				PerPage:     pageSize,
+			},
+		},
+		TypeName:    *tagInfo.Title,
+		Description: *tagInfo.Description,
 	})
 }