diff --git a/business/jxstore/cms/sku.go b/business/jxstore/cms/sku.go index b7e4a5d9b..b5138382e 100644 --- a/business/jxstore/cms/sku.go +++ b/business/jxstore/cms/sku.go @@ -665,23 +665,23 @@ func GetSkuNames(ctx *jxcontext.Context, keyword string, isBySku, isQueryMidPric // return nil, err // } // } - skuVendorCats, _ := dao.GetSkuVendorCategoryMaps(db, []int{skuName.ID}, []int{model.VendorIDMTWM, model.VendorIDEBAI, model.VendorIDJDShop, model.VendorIDJD}, nil) - if len(skuVendorCats) > 0 { - for _, v := range skuVendorCats { - if v.VendorID == model.VendorIDJD { - skuName.JdCategoryID = v.VendorCategoryID - } - if v.VendorID == model.VendorIDEBAI { - skuName.EbaiCategoryID = v.VendorCategoryID - } - if v.VendorID == model.VendorIDMTWM { - skuName.MtwmCategoryID = v.VendorCategoryID - } - if v.VendorID == model.VendorIDJDShop { - skuName.JdsCategoryID = v.VendorCategoryID - } - } - } + // skuVendorCats, _ := dao.GetSkuVendorCategoryMaps(db, []int{skuName.ID}, []int{model.VendorIDMTWM, model.VendorIDEBAI, model.VendorIDJDShop, model.VendorIDJD}, nil) + // if len(skuVendorCats) > 0 { + // for _, v := range skuVendorCats { + // if v.VendorID == model.VendorIDJD { + // skuName.JdCategoryID = v.VendorCategoryID + // } + // if v.VendorID == model.VendorIDEBAI { + // skuName.EbaiCategoryID = v.VendorCategoryID + // } + // if v.VendorID == model.VendorIDMTWM { + // skuName.MtwmCategoryID = v.VendorCategoryID + // } + // if v.VendorID == model.VendorIDJDShop { + // skuName.JdsCategoryID = v.VendorCategoryID + // } + // } + // } var ( skus []*model.Sku sqlParams = []interface{}{utils.DefaultTimeValue} @@ -3048,3 +3048,142 @@ func setImgs2(v *model.SkuName, imgs []string) (err error) { } return err } + +func GetSkuNamesNew(ctx *jxcontext.Context, keyword string, skuIDs, skuNameIDs []int, categoryID, status, offset, pageSize int) (skuNamesInfo *SkuNamesInfo, err error) { + var ( + db = dao.GetDB() + ) + sql := ` + SELECT + SQL_CALC_FOUND_ROWS + DISTINCT + t1.id, + t1.created_at, + t1.updated_at, + t1.last_operator, + t1.deleted_at, + t1.prefix, + t1.name, + t1.brand_id, + t1.category_id, + t1.jd_category_id, + t1.is_global, + t1.unit, + t1.price, + t1.img, + t1.img2, + t1.img3, + t1.img4, + t1.img5, + t1.img_watermark, + t1.img_mix, + t1.status, + t1.is_spu, + t1.desc_img, + t1.upc, + t1.ex_prefix, + t1.ex_prefix_begin, + t1.ex_prefix_end, + t1.yb_name_suffix, + t1.jds_stock_switch, + t1.preparation_time, + t1.best_seller + FROM sku_name t1 + LEFT JOIN sku t2 ON t1.id = t2.name_id AND t2.deleted_at = ? + WHERE t1.deleted_at = ? + ` + sqlParams := []interface{}{ + utils.DefaultTimeValue, utils.DefaultTimeValue, + } + if keyword != "" { + keywordLike := "%" + keyword + "%" + sql += ` + AND (t1.name LIKE ? OR t1.prefix LIKE ? OR t2.comment LIKE ? OR t1.upc LIKE ?) ` + sqlParams = append(sqlParams, keywordLike, keywordLike, keywordLike, keywordLike) + } + if len(skuNameIDs) > 0 { + sql += " AND t1.id IN (" + dao.GenQuestionMarks(len(skuNameIDs)) + ")" + sqlParams = append(sqlParams, skuNameIDs) + } + + if len(skuIDs) > 0 { + sql += " AND t2.id IN (" + dao.GenQuestionMarks(len(skuIDs)) + ")" + sqlParams = append(sqlParams, skuIDs) + } + if categoryID > 0 { + cat := &model.SkuCategory{} + cat.ID = categoryID + if err = dao.GetEntity(db, cat); err != nil { + return nil, err + } + sql += " AND (t1.category_id = ?" + sqlParams = append(sqlParams, cat.ID) + if cat.Level == 1 { + sql += " OR t1.category_id IN (SELECT id FROM sku_category WHERE parent_id = ?)" + sqlParams = append(sqlParams, cat.ID) + } + sql += ")" + } + if status != -1 { + sql += " AND t2.status = ? " + sqlParams = append(sqlParams, status) + } + + sql += ` + ORDER BY t1.id DESC + LIMIT ? OFFSET ?` + pageSize = jxutils.FormalizePageSize(pageSize) + offset = jxutils.FormalizePageOffset(offset) + sqlParams = append(sqlParams, pageSize, offset) + skuNamesInfo = &SkuNamesInfo{} + txDB, _ := dao.Begin(db) // todo 这里用事务的原因是,SQL_CALC_FOUND_ROWS会出错 + defer func() { + if r := recover(); r != nil { + dao.Rollback(db, txDB) + panic(r) + } + }() + if err = dao.GetRowsTx(txDB, &skuNamesInfo.SkuNames, sql, sqlParams...); err == nil { + skuNamesInfo.TotalCount = dao.GetLastTotalRowCount2(db, txDB) + dao.Commit(db, txDB) + for _, skuName := range skuNamesInfo.SkuNames { + skuName.FullName = jxutils.ComposeSkuName(skuName.Prefix, skuName.Name, "", "", 0, "", 0, skuName.ExPrefix, skuName.ExPrefixBegin, skuName.ExPrefixEnd) + var ( + skus []*model.Sku + sqlParams = []interface{}{utils.DefaultTimeValue} + sql string + ) + sql = ` + SELECT * FROM sku WHERE deleted_at = ? AND name_id = ? + ` + sqlParams = append(sqlParams, skuName.ID) + if err = dao.GetRows(db, &skus, sql, sqlParams); err == nil { + var skusVendors []*model.SkuWithVendor + for _, v := range skus { + skusVendor := &model.SkuWithVendor{ + Sku: v, + } + skusVendors = append(skusVendors, skusVendor) + } + skuName.Skus = skusVendors + } + var ( + places []*model.SkuNamePlaceBind + placeCodes []int + ) + sql2 := ` + SELECT * FROM sku_name_place_bind WHERE name_id = ? + ` + sqlParams2 := []interface{}{skuName.ID} + if err = dao.GetRows(db, &places, sql2, sqlParams2); err == nil { + for _, v := range places { + placeCodes = append(placeCodes, v.PlaceCode) + } + skuName.Places = placeCodes + } + } + } else { + dao.Rollback(db, txDB) + } + return skuNamesInfo, err +} diff --git a/controllers/cms_sku.go b/controllers/cms_sku.go index 4a497dc2a..065c45e37 100644 --- a/controllers/cms_sku.go +++ b/controllers/cms_sku.go @@ -695,3 +695,26 @@ func (c *SkuController) RefreshNoImgSku() { return retVal, "", err }) } + +// @Title 得到商品信息2 +// @Description 得到商品信息2 +// @Param token header string true "认证token" +// @Param keyword query string false "查询关键字(可以为空,为空表示不限制)" +// @Param nameIDs query string false "SkuName IDs列表" +// @Param skuIDs query string false "Sku ID列表" +// @Param categoryID query int false "商品名所属类别ID" +// @Param status query int false "查询起始状态(0:下架,1:正常, -1全部)" +// @Param offset query int false "门店列表起始序号(以0开始,缺省为0)" +// @Param pageSize query int false "门店列表页大小(缺省为50,-1表示全部)" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /GetSkuNamesNew [get] +func (c *SkuController) GetSkuNamesNew() { + c.callGetSkuNamesNew(func(params *tSkuGetSkuNamesNewParams) (retVal interface{}, errCode string, err error) { + var skuIDs, skuNameIDs []int + if err = jxutils.Strings2Objs(params.SkuIDs, &skuIDs, params.NameIDs, &skuNameIDs); err == nil { + retVal, err = cms.GetSkuNamesNew(params.Ctx, params.Keyword, skuIDs, skuNameIDs, params.CategoryID, params.Status, params.Offset, params.PageSize) + } + return retVal, "", err + }) +} diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 4eacc5bdc..3f2e693db 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -1674,6 +1674,15 @@ func init() { Filters: nil, Params: nil}) + web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"] = append(web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"], + web.ControllerComments{ + Method: "GetSkuNamesNew", + Router: `/GetSkuNamesNew`, + AllowHTTPMethods: []string{"get"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"] = append(web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"], web.ControllerComments{ Method: "AddSku",