|
@@ -0,0 +1,140 @@
|
|
|
|
|
+package dao
|
|
|
|
|
+
|
|
|
|
|
+import (
|
|
|
|
|
+ "demo/configs"
|
|
|
|
|
+ "demo/data/domain"
|
|
|
|
|
+ "demo/data/domain/vo"
|
|
|
|
|
+ "fmt"
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
|
|
+// SelectGoodsDetailById 获取相同的商品详情
|
|
|
|
|
+func SelectGoodsDetailById(skuId int) (vo.DetailVo, error) {
|
|
|
|
|
+ detailVo := vo.DetailVo{}
|
|
|
|
|
+ //================查询sku========================
|
|
|
|
|
+ var sku domain.GoodsSku
|
|
|
|
|
+ //查询 sku
|
|
|
|
|
+ rows, err := configs.Engine.Table("goods_sku").
|
|
|
|
|
+ Where("goods_id = (select a.goods_id as goods_id from goods_sku as a where a.id = ? )", skuId).
|
|
|
|
|
+ Desc("create_time").Rows(&sku)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ println("查询sku失败", err)
|
|
|
|
|
+ return vo.DetailVo{}, err
|
|
|
|
|
+ }
|
|
|
|
|
+ var skus []domain.GoodsSku
|
|
|
|
|
+ var commodityAreaIds = make([]int, 0)
|
|
|
|
|
+ commodityAreaIdsString := ""
|
|
|
|
|
+A:
|
|
|
|
|
+ for rows.Next() {
|
|
|
|
|
+ rows.Scan(&sku)
|
|
|
|
|
+ skus = append(skus, sku)
|
|
|
|
|
+ //去重
|
|
|
|
|
+ for i := range commodityAreaIds {
|
|
|
|
|
+ if sku.CommodityAreaId == commodityAreaIds[i] {
|
|
|
|
|
+ continue A
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ commodityAreaIds = append(commodityAreaIds, sku.CommodityAreaId)
|
|
|
|
|
+ commodityAreaIdsString = fmt.Sprint(commodityAreaIdsString, ",", sku.CommodityAreaId)
|
|
|
|
|
+ }
|
|
|
|
|
+ commodityAreaIdsString = commodityAreaIdsString[1:]
|
|
|
|
|
+ fmt.Println("=============================>", commodityAreaIdsString)
|
|
|
|
|
+ //================查询goods========================
|
|
|
|
|
+ var goods domain.Goods
|
|
|
|
|
+ _, err = configs.Engine.Table("goods").Where("id = ?", sku.GoodsId).Get(&goods)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ println("查询goods失败", err)
|
|
|
|
|
+ return vo.DetailVo{}, err
|
|
|
|
|
+ }
|
|
|
|
|
+ //=================查询goods_tag========================
|
|
|
|
|
+ var goodsTag domain.GoodsTag
|
|
|
|
|
+ rows, err = configs.Engine.Table("goods_tag").
|
|
|
|
|
+ Where(" FIND_IN_SET(goods_tag.id,?)", goods.TagIds).
|
|
|
|
|
+ Rows(&goodsTag)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ println("查询goods_tag失败", err)
|
|
|
|
|
+ return vo.DetailVo{}, err
|
|
|
|
|
+ }
|
|
|
|
|
+ var goodsTags []domain.GoodsTag
|
|
|
|
|
+ for rows.Next() {
|
|
|
|
|
+ rows.Scan(&goodsTag)
|
|
|
|
|
+ goodsTags = append(goodsTags, goodsTag)
|
|
|
|
|
+ }
|
|
|
|
|
+ //=================查询goods_type========================
|
|
|
|
|
+ var goodsType domain.GoodsType
|
|
|
|
|
+ _, err = configs.Engine.Table("goods_type").Where("id = ?", goods.TypeId).Get(&goodsType)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ println("查询goods_type失败", err)
|
|
|
|
|
+ return vo.DetailVo{}, err
|
|
|
|
|
+ }
|
|
|
|
|
+ //=================查询goods_CommodityArea========================
|
|
|
|
|
+ var goodsCommodityArea domain.GoodsCommodityArea
|
|
|
|
|
+ rows, err = configs.Engine.Table("goods_commodity_area").
|
|
|
|
|
+ Where(" FIND_IN_SET(goods_commodity_area.id,?) and goods_id = ?", commodityAreaIdsString, goods.Id).
|
|
|
|
|
+ Rows(&goodsCommodityArea)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ println("查询goods_CommodityArea失败", err)
|
|
|
|
|
+ return vo.DetailVo{}, err
|
|
|
|
|
+ }
|
|
|
|
|
+ var goodsCommodityAreas []domain.GoodsCommodityArea
|
|
|
|
|
+
|
|
|
|
|
+ var introductionIds = make([]int, 0)
|
|
|
|
|
+ var introductionIdString = ""
|
|
|
|
|
+B:
|
|
|
|
|
+ for rows.Next() {
|
|
|
|
|
+ rows.Scan(&goodsCommodityArea)
|
|
|
|
|
+ goodsCommodityAreas = append(goodsCommodityAreas, goodsCommodityArea)
|
|
|
|
|
+ for i := range introductionIds {
|
|
|
|
|
+ if goodsCommodityArea.DetailIntroductionId == introductionIds[i] {
|
|
|
|
|
+ continue B
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ introductionIds = append(introductionIds, goodsCommodityArea.DetailIntroductionId)
|
|
|
|
|
+ introductionIdString = fmt.Sprint(introductionIdString, ",", goodsCommodityArea.DetailIntroductionId)
|
|
|
|
|
+ }
|
|
|
|
|
+ introductionIdString = introductionIdString[1:]
|
|
|
|
|
+ fmt.Println("=============================>", introductionIdString)
|
|
|
|
|
+ //=================查询goods_introduction========================
|
|
|
|
|
+ var goodsIntroduction domain.GoodsIntroduction
|
|
|
|
|
+ rows, err = configs.Engine.Table("goods_introduction").
|
|
|
|
|
+ Where("FIND_IN_SET(id,?)", introductionIdString).
|
|
|
|
|
+ Rows(&goodsIntroduction)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ println("查询goods_introduction失败", err)
|
|
|
|
|
+ return vo.DetailVo{}, err
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ var goodsIntroductions []domain.GoodsIntroduction
|
|
|
|
|
+ for rows.Next() {
|
|
|
|
|
+ rows.Scan(&goodsIntroduction)
|
|
|
|
|
+ goodsIntroductions = append(goodsIntroductions, goodsIntroduction)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ detailVo.DetailGoodsVo = vo.DetailGoodsVo{
|
|
|
|
|
+ Tags: goodsTags,
|
|
|
|
|
+ GoodsId: goods.Id,
|
|
|
|
|
+ Name: goods.GoodsName,
|
|
|
|
|
+ SalesVolume: goods.SalesVolume,
|
|
|
|
|
+ Type: goodsType,
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ detailVo.DetailSkuVo = vo.DetailSkuVo{
|
|
|
|
|
+ SkuList: skus,
|
|
|
|
|
+ NowSkuId: skuId,
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ detailVo.DetailCommodityAreaVo = vo.DetailCommodityAreaVo{
|
|
|
|
|
+ CommodityAreaList: goodsCommodityAreas,
|
|
|
|
|
+ NowCommodityAreaId: sku.CommodityAreaId,
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //=================相关推荐========================
|
|
|
|
|
+ //复制sku 8个数据
|
|
|
|
|
+ if len(skus) >= 8 {
|
|
|
|
|
+ detailVo.RecommendedGoods = skus[0:8]
|
|
|
|
|
+ } else {
|
|
|
|
|
+ detailVo.RecommendedGoods = skus
|
|
|
|
|
+ }
|
|
|
|
|
+ detailVo.Introduction = goodsIntroductions
|
|
|
|
|
+
|
|
|
|
|
+ return detailVo, nil
|
|
|
|
|
+}
|