| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- package dao
- import (
- "demo/configs"
- "demo/data/domain"
- "demo/data/domain/vo"
- "fmt"
- )
- // SelectGoodsDetailById 获取相同的商品详情
- func SelectGoodsDetailById(skuId int) (vo.DetailVo, error) {
- detailVo := vo.DetailVo{}
- var caId = -1
- //================查询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)
- if sku.Id == skuId {
- caId = sku.CommodityAreaId
- }
- //去重
- 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: caId,
- }
- //=================相关推荐========================
- //复制sku 8个数据
- if len(skus) >= 8 {
- detailVo.RecommendedGoods = skus[0:8]
- } else {
- detailVo.RecommendedGoods = skus
- }
- detailVo.Introduction = goodsIntroductions
- return detailVo, nil
- }
|