|
@@ -143,3 +143,60 @@ B:
|
|
|
|
|
|
|
|
return detailVo, nil
|
|
return detailVo, nil
|
|
|
}
|
|
}
|
|
|
|
|
+func GetSkuByKey(key string, pageNum, pageSize int) (vo.BaseListVo, string, error) {
|
|
|
|
|
+ var sqlKey = "%" + key + "%"
|
|
|
|
|
+ var vo = vo.BaseListVo{}
|
|
|
|
|
+ var sku domain.GoodsSku
|
|
|
|
|
+ //查询tag
|
|
|
|
|
+ var tag domain.GoodsTag
|
|
|
|
|
+ var goods domain.Goods
|
|
|
|
|
+ r1, err := configs.Engine.Cols("id").Where("name like ?", sqlKey).Or("tag like ?", sqlKey).
|
|
|
|
|
+ //去重
|
|
|
|
|
+ Distinct("id").Rows(&tag)
|
|
|
|
|
+ var inTags = make([]int, 0)
|
|
|
|
|
+ for r1.Next() {
|
|
|
|
|
+ r1.Scan(&tag)
|
|
|
|
|
+ inTags = append(inTags, tag.Id)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ sess := configs.Engine.Cols("id").Distinct("id").Where("goods_name like ?", sqlKey)
|
|
|
|
|
+ for i := range inTags {
|
|
|
|
|
+ sess.Or("FIND_IN_SET(?,tag_ids)", inTags[i])
|
|
|
|
|
+ }
|
|
|
|
|
+ r2, err := sess.Rows(&goods)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return vo, "商品查询错误", err
|
|
|
|
|
+ }
|
|
|
|
|
+ var goodsInTags = make([]int, 0)
|
|
|
|
|
+ for r2.Next() {
|
|
|
|
|
+ r2.Scan(&goods)
|
|
|
|
|
+ goodsInTags = append(goodsInTags, goods.Id)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ sess = configs.Engine.Where("sku_name like ?", sqlKey)
|
|
|
|
|
+ for i := range goodsInTags {
|
|
|
|
|
+ sess.Or("goods_id = ?", goodsInTags[i])
|
|
|
|
|
+ }
|
|
|
|
|
+ r3, err := sess.Desc("id").Limit(pageSize, (pageNum-1)*pageSize).Rows(&sku)
|
|
|
|
|
+
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return vo, "商品sku查询错误", err
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ var skus = make([]any, 0)
|
|
|
|
|
+ for r3.Next() {
|
|
|
|
|
+ r3.Scan(&sku)
|
|
|
|
|
+ skus = append(skus, sku)
|
|
|
|
|
+ }
|
|
|
|
|
+ cs := configs.Engine.Where("sku_name like ?", sqlKey)
|
|
|
|
|
+ for i := range goodsInTags {
|
|
|
|
|
+ cs.Or("goods_id = ?", goodsInTags[i])
|
|
|
|
|
+ }
|
|
|
|
|
+ count, err := cs.Distinct("id").Count("id")
|
|
|
|
|
+
|
|
|
|
|
+ vo.Total = int(count)
|
|
|
|
|
+ vo.List = skus
|
|
|
|
|
+ vo.PageNum = pageNum
|
|
|
|
|
+ vo.PageSize = pageSize
|
|
|
|
|
+ return vo, "", nil
|
|
|
|
|
+}
|