Bladeren bron

日常提交

gujiheimao 2 jaren geleden
bovenliggende
commit
6d5d6da190
4 gewijzigde bestanden met toevoegingen van 150 en 2 verwijderingen
  1. 105 0
      data/dao/ShopDao.go
  2. 17 0
      data/domain/vo/ShopHomeTopicVo.go
  3. 2 2
      file/virtual_mall.sql
  4. 26 0
      router/HomeRouter.go

+ 105 - 0
data/dao/ShopDao.go

@@ -2,8 +2,12 @@ package dao
 
 import (
 	"demo/configs"
+	"demo/data/dao/manage"
 	"demo/data/domain"
 	"demo/data/domain/vo"
+	"fmt"
+	"strconv"
+	"strings"
 )
 
 func GetAdviceData() (vo.ShopAdviceVo, error) {
@@ -29,3 +33,104 @@ func GetAdviceData() (vo.ShopAdviceVo, error) {
 	}
 	return vo, err
 }
+
+func GetTopicList() ([]vo.ShopHomeTopicVo, error) {
+	var topics []domain.ShopTopic
+	err := configs.Engine.Table("shop_topic").Asc("sort").Find(&topics)
+	if err != nil {
+		fmt.Println(err)
+		return nil, nil
+	}
+	var vos = make([]vo.ShopHomeTopicVo, 0)
+	for i := range topics {
+		vo := vo.ShopHomeTopicVo{Topic: topics[i]}
+		vos = append(vos, vo)
+		skus := make([]domain.GoodsSku, 0)
+		err := configs.Engine.Table("shop_topic_sku").Select("goods_sku.id,goods_sku.sku_image,goods_sku.sku_name,goods_sku.price,goods_sku.historical_prices,goods_sku.inventory_number,goods_sku.commodity_area_id,goods_sku.goods_id,goods_sku.create_by,goods_sku.create_time").
+			Join("INNER", "goods_sku", "shop_topic_sku.sku_id = goods_sku.id").
+			Where("shop_topic_sku.topic_id = ?", topics[i].Id).Find(&skus)
+		if err != nil {
+			fmt.Println(err)
+		}
+		vo.Skus = skus
+	}
+	for i := range vos {
+		if len(vos[i].Skus) == 0 {
+			//查询替换
+			//vo, err := manage.GetGoodsSkuList(domain.GoodsSku{}, 1, 20)
+			var skus []domain.GoodsSku
+			err = configs.Engine.Select("goods_sku.id,goods_sku.sku_image,goods_sku.sku_name,goods_sku.price,goods_sku.historical_prices,goods_sku.inventory_number,goods_sku.commodity_area_id,goods_sku.goods_id,goods_sku.create_by,goods_sku.create_time").
+				Table("goods_sku").Join("INNER", "goods", "goods_sku.goods_id = goods.id").
+				Join("INNER", "goods_type", "goods.type_id = goods_type.id").Limit(20).
+				Where("find_in_set(goods_type.id,?) ", vos[i].Topic.TypeIds).Find(&skus)
+			if err != nil {
+				fmt.Println(err)
+			}
+			vos[i].Skus = skus
+		}
+	}
+	return vos, nil
+}
+func GetTopicPageDataListById(topicId int64) (vo.TopicPageData, error) {
+	topic := domain.ShopTopic{}
+	var data vo.TopicPageData
+	topicRes, err := configs.Engine.Table("shop_topic").Where("id = ?", topicId).Get(&topic)
+	if err != nil {
+		fmt.Println(err)
+		return data, err
+	}
+	if !topicRes {
+		return data, err
+	}
+	//获取商品类型
+	typeIds := make([]int64, 0)
+	split := strings.Split(topic.TypeIds, ",")
+	for i := range split {
+		parseInt, err := strconv.ParseInt(split[i], 10, 64)
+		if err != nil {
+			fmt.Println(err)
+			return data, err
+		}
+		typeIds = append(typeIds, parseInt)
+	}
+	types, err := manage.GetGoodsTypeListInId(typeIds)
+	if err != nil {
+		fmt.Println(err)
+		return data, err
+	}
+	typeData := make([]vo.TopicPageTypeData, 0)
+	for i := range types {
+		typeVo := vo.TopicPageTypeData{
+			Type: types[i],
+		}
+
+		//根据typeId查询每个商品中的第一个sku
+		skus := make([]domain.GoodsSku, 0)
+
+		//获取商品
+		goodsId := make([]int64, 0)
+		err := configs.Engine.Select("id").Table("goods").Where("type_id = ?", types[i].Id).Find(&goodsId)
+		if err != nil {
+			fmt.Println(err)
+			return data, err
+		}
+		for i := range goodsId {
+			sku := domain.GoodsSku{}
+			skuRes, err := configs.Engine.Table("goods_sku").Where("goods_id = ?", goodsId[i]).Get(&sku)
+			if err != nil {
+				fmt.Println(err)
+				return data, err
+			}
+			if !skuRes {
+				continue
+			}
+			skus = append(skus, sku)
+		}
+		typeVo.SkuList = skus
+
+		typeData = append(typeData, typeVo)
+	}
+	data.Topic = topic
+	data.Types = typeData
+	return data, nil
+}

+ 17 - 0
data/domain/vo/ShopHomeTopicVo.go

@@ -0,0 +1,17 @@
+package vo
+
+import "demo/data/domain"
+
+type ShopHomeTopicVo struct {
+	Topic domain.ShopTopic  `json:"topic"`
+	Skus  []domain.GoodsSku `json:"skus"`
+}
+
+type TopicPageData struct {
+	Topic domain.ShopTopic    `json:"topic"`
+	Types []TopicPageTypeData `json:"types"`
+}
+type TopicPageTypeData struct {
+	Type    domain.GoodsType  `json:"type"`
+	SkuList []domain.GoodsSku `json:"skuList"`
+}

File diff suppressed because it is too large
+ 2 - 2
file/virtual_mall.sql


+ 26 - 0
router/HomeRouter.go

@@ -3,12 +3,15 @@ package router
 import (
 	"demo/data/dao"
 	"github.com/gin-gonic/gin"
+	"github.com/spf13/cast"
 )
 
 func HomeRouter(engine *gin.RouterGroup) {
 	user := engine.Group("/home")
 	//user.GET("/search", GetSearchByKey)
 	PushRouter(user, "GET", "/banner", GetIndexBanner)
+	PushRouter(user, "GET", "/index", GetHomeTopicList)
+	PushRouter(user, "GET", "/topic", GetTopicPageList)
 	//获取文章详情
 	//user.GET("/:id", GetDetailData)
 	//PushRouter(user, "GET", "/:id", GetDetailData)
@@ -29,3 +32,26 @@ func GetIndexBanner(c *gin.Context) {
 
 //设定 首页展示商品 sku数据,topic 添加一个首页显示参数,其次根据排序
 //获取商品类型信息 ->goods_type 然后获取到各个商品类型下的商品信息
+
+// GetHomeTopicList 判断topic中的type内容
+// sku中的排列为固定排序
+func GetHomeTopicList(c *gin.Context) {
+	list, err := dao.GetTopicList()
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	//判断同topic
+	c.JSON(200, CreateResultData(list))
+}
+
+func GetTopicPageList(c *gin.Context) {
+	value := c.Query("topicId")
+	list, err := dao.GetTopicPageDataListById(cast.ToInt64(value))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "查询错误"))
+		return
+	}
+	//判断同topic
+	c.JSON(200, CreateResultData(list))
+}

Some files were not shown because too many files changed in this diff