|
|
@@ -152,64 +152,6 @@ B:
|
|
|
|
|
|
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([]int64, 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([]int64, 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
|
|
|
-}
|
|
|
-
|
|
|
func SelectSkuInfoBySkuId(skuId int64) (vo.DetailInfoVo, error) {
|
|
|
//根据skuid 获取GoodsId
|
|
|
var sku domain.GoodsSku
|
|
|
@@ -285,3 +227,129 @@ func SelectSkuInfoBySkuId(skuId int64) (vo.DetailInfoVo, error) {
|
|
|
|
|
|
return infoVo, nil
|
|
|
}
|
|
|
+
|
|
|
+// 搜索==================
|
|
|
+
|
|
|
+func GetSkuByKey2(key string, pageNum, pageSize int) ([]domain.GoodsSku, int64, error) {
|
|
|
+ if pageNum == 0 {
|
|
|
+ pageNum = 1
|
|
|
+ }
|
|
|
+ if pageSize == 0 {
|
|
|
+ pageSize = 12
|
|
|
+ }
|
|
|
+
|
|
|
+ var sqlKey = "%" + key + "%"
|
|
|
+ arr := make([]domain.GoodsSku, 0)
|
|
|
+ if key == "" {
|
|
|
+ count, err := configs.Engine.Table("goods_sku").Desc("id").
|
|
|
+ Limit(pageSize, (pageNum-1)*pageSize).FindAndCount(&arr)
|
|
|
+ if err != nil {
|
|
|
+ return nil, 0, err
|
|
|
+ }
|
|
|
+ return arr, count, nil
|
|
|
+ }
|
|
|
+ //sql := `SELECT DISTINCT
|
|
|
+ // s.id,
|
|
|
+ // s.sku_image,
|
|
|
+ // s.sku_name,
|
|
|
+ // s.price,
|
|
|
+ // s.historical_prices,
|
|
|
+ // s.inventory_number,
|
|
|
+ // s.commodity_area_id,
|
|
|
+ // s.goods_id,
|
|
|
+ // s.create_by,
|
|
|
+ // s.create_time
|
|
|
+ // FROM goods_sku s
|
|
|
+ // LEFT JOIN goods g ON s.goods_id = g.id
|
|
|
+ // LEFT JOIN goods_tag t ON FIND_IN_SET(t.id, g.tag_ids)
|
|
|
+ // WHERE t.tag LIKE ?
|
|
|
+ // OR g.goods_name LIKE ?
|
|
|
+ // OR s.sku_name LIKE ?
|
|
|
+ // OR t.id IS NULL
|
|
|
+ // ORDER BY s.id DESC
|
|
|
+ // LIMIT ? OFFSET ?
|
|
|
+ //`
|
|
|
+ //count, err := configs.Engine.SQL(sql, sqlKey, sqlKey, sqlKey, pageSize, (pageNum-1)*pageSize).FindAndCount(&arr)
|
|
|
+ count, err := configs.Engine.Table("goods_sku s").
|
|
|
+ Join("left", "goods g", "s.goods_id = g.id").
|
|
|
+ //Join("left", "goods_tag t", "FIND_IN_SET(t.id, g.tag_ids)").Desc("s.id").
|
|
|
+ Join("left", "(SELECT gt.tag as tag,g.id AS goods_id FROM goods g JOIN goods_tag gt ON FIND_IN_SET(gt.id, g.tag_ids)) AS t ", " g.id = t.goods_id").Desc("s.id").
|
|
|
+ Where("t.tag LIKE ? OR g.goods_name LIKE ? OR s.sku_name LIKE ?", sqlKey, sqlKey, sqlKey).
|
|
|
+ Limit(pageSize, (pageNum-1)*pageSize).FindAndCount(&arr)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("sql语句错误", err)
|
|
|
+ return nil, 0, err
|
|
|
+ }
|
|
|
+ return arr, count, nil
|
|
|
+}
|
|
|
+
|
|
|
+func GetSkuByKey(key string, pageNum, pageSize int) ([]domain.GoodsSku, int64, error) {
|
|
|
+ var sqlKey = "%" + key + "%"
|
|
|
+ var sku domain.GoodsSku
|
|
|
+ var arr []domain.GoodsSku
|
|
|
+ //查询tag
|
|
|
+ var tag domain.GoodsTag
|
|
|
+ var goods domain.Goods
|
|
|
+
|
|
|
+ var inTags = make([]int64, 0)
|
|
|
+
|
|
|
+ //获取标签
|
|
|
+ targetRow, err := configs.Engine.Cols("id").Where("name like ?", sqlKey).Or("tag like ?", sqlKey).
|
|
|
+ //去重
|
|
|
+ Distinct("id").Rows(&tag)
|
|
|
+ for targetRow.Next() {
|
|
|
+ targetRow.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])
|
|
|
+ }
|
|
|
+ goodsRow, err := sess.Rows(&goods)
|
|
|
+ if err != nil {
|
|
|
+ return arr, 0, err
|
|
|
+ }
|
|
|
+ var goodsInTags = make([]int64, 0)
|
|
|
+ for goodsRow.Next() {
|
|
|
+ goodsRow.Scan(&goods)
|
|
|
+ goodsInTags = append(goodsInTags, goods.Id)
|
|
|
+ }
|
|
|
+
|
|
|
+ //最终sku查询
|
|
|
+ sess = configs.Engine.Where("sku_name like ?", sqlKey)
|
|
|
+ for i := range goodsInTags {
|
|
|
+ sess.Or("goods_id = ?", goodsInTags[i])
|
|
|
+ }
|
|
|
+ skuRow, err := sess.Desc("id").Limit(pageSize, (pageNum-1)*pageSize).Rows(&sku)
|
|
|
+ if err != nil {
|
|
|
+ return arr, 0, err
|
|
|
+ }
|
|
|
+
|
|
|
+ var skus = make([]any, 0)
|
|
|
+ for skuRow.Next() {
|
|
|
+ skuRow.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")
|
|
|
+
|
|
|
+ return arr, count, nil
|
|
|
+}
|
|
|
+
|
|
|
+func GetGoodsSkuList(goodsSku domain.GoodsSku, pageNum, pageSize int) ([]domain.GoodsSku, int64, error) {
|
|
|
+ var arr []domain.GoodsSku
|
|
|
+ Count, err := configs.Engine.Table("goods_sku").Limit(pageSize, (pageNum-1)*pageSize).FindAndCount(&arr, &goodsSku)
|
|
|
+ if err != nil {
|
|
|
+ return arr, 0, err
|
|
|
+ }
|
|
|
+ if err != nil {
|
|
|
+ return arr, 0, err
|
|
|
+ }
|
|
|
+ return arr, Count, nil
|
|
|
+}
|