查询skunames优化

This commit is contained in:
苏尹岚
2020-04-09 17:14:48 +08:00
parent 14b8ef36d5
commit be496be64a
3 changed files with 46 additions and 33 deletions

View File

@@ -72,7 +72,7 @@ func changeStoreSkusByOrder(order *weimobapi.OrderDetail) {
for _, v := range skuBindInfos { for _, v := range skuBindInfos {
nameIDs = append(nameIDs, v.NameID) nameIDs = append(nameIDs, v.NameID)
} }
if skuNamesInfo, err := cms.GetSkuNames(ctx, "", false, map[string]interface{}{ if skuNamesInfo, err := cms.GetSkuNames(ctx, "", false, false, map[string]interface{}{
"nameIDs": string(utils.MustMarshal(nameIDs)), "nameIDs": string(utils.MustMarshal(nameIDs)),
}, 0, 0); err == nil { }, 0, 0); err == nil {
for _, skuName := range skuNamesInfo.SkuNames { for _, skuName := range skuNamesInfo.SkuNames {

View File

@@ -410,19 +410,22 @@ func DeleteCategoryMap(ctx *jxcontext.Context, db *dao.DaoDB, categoryID int) (n
}) })
} }
func GetSkuNames(ctx *jxcontext.Context, keyword string, isBySku bool, params map[string]interface{}, offset, pageSize int) (skuNamesInfo *SkuNamesInfo, err error) { func GetSkuNames(ctx *jxcontext.Context, keyword string, isBySku, isQueryMidPrice bool, params map[string]interface{}, offset, pageSize int) (skuNamesInfo *SkuNamesInfo, err error) {
db := dao.GetDB() db := dao.GetDB()
sql := ` sql := `
FROM sku_name t1 FROM sku_name t1
LEFT JOIN sku t2 ON t1.id = t2.name_id AND t2.deleted_at = ? LEFT JOIN sku t2 ON t1.id = t2.name_id AND t2.deleted_at = ?
LEFT JOIN sku_name_place_bind t3 ON t1.id = t3.name_id LEFT JOIN sku_name_place_bind t3 ON t1.id = t3.name_id
LEFT JOIN price_refer_snapshot t4 ON t4.city_code = ? AND t4.snapshot_at = ? AND t4.name_id = t1.id `
WHERE t1.deleted_at = ?`
sqlParams := []interface{}{ sqlParams := []interface{}{
utils.DefaultTimeValue, utils.DefaultTimeValue,
0, utils.Time2Date(time.Now().AddDate(0, 0, -1)),
utils.DefaultTimeValue,
} }
if isQueryMidPrice {
sql += " LEFT JOIN price_refer_snapshot t4 ON t4.city_code = ? AND t4.snapshot_at = ? AND t4.name_id = t1.id"
sqlParams = append(sqlParams, 0, utils.Time2Date(time.Now().AddDate(0, 0, -1)))
}
sql += " WHERE t1.deleted_at = ?"
sqlParams = append(sqlParams, utils.DefaultTimeValue)
if keyword != "" { if keyword != "" {
keywordLike := "%" + keyword + "%" keywordLike := "%" + keyword + "%"
sql += ` sql += `
@@ -588,8 +591,12 @@ func GetSkuNames(ctx *jxcontext.Context, keyword string, isBySku bool, params ma
t1.ex_prefix, t1.ex_prefix,
t1.ex_prefix_begin, t1.ex_prefix_begin,
t1.ex_prefix_end, t1.ex_prefix_end,
t1.yb_name_suffix, t1.yb_name_suffix
t4.mid_unit_price` `
if isQueryMidPrice {
sql += `,
t4.mid_unit_pirce`
}
if isBySku { if isBySku {
sql += `, sql += `,
t2.id` t2.id`
@@ -624,7 +631,12 @@ func GetSkuNames(ctx *jxcontext.Context, keyword string, isBySku bool, params ma
t1.ex_prefix_begin, t1.ex_prefix_begin,
t1.ex_prefix_end, t1.ex_prefix_end,
t1.yb_name_suffix, t1.yb_name_suffix,
t4.mid_unit_price, `
if isQueryMidPrice {
sqlData += " t4.mid_unit_price,"
}
sqlData +=
`
CONCAT("[", GROUP_CONCAT(DISTINCT CONCAT('{"id":', t2.id, ',"comment":"', t2.comment, '","status":', t2.status, CONCAT("[", GROUP_CONCAT(DISTINCT CONCAT('{"id":', t2.id, ',"comment":"', t2.comment, '","status":', t2.status,
',"createdAt":"', CONCAT(REPLACE(t2.created_at," ","T"),"+08:00"), '","updatedAt":"', CONCAT(REPLACE(t2.updated_at," ","T"),"+08:00"), ',"createdAt":"', CONCAT(REPLACE(t2.created_at," ","T"),"+08:00"), '","updatedAt":"', CONCAT(REPLACE(t2.updated_at," ","T"),"+08:00"),
'","lastOperator":"', t2.last_operator, '","specQuality":', t2.spec_quality, ',"specUnit":"', t2.spec_unit, '","lastOperator":"', t2.last_operator, '","specQuality":', t2.spec_quality, ',"specUnit":"', t2.spec_unit,
@@ -841,7 +853,7 @@ func AddSkuName(ctx *jxcontext.Context, skuNameExt *model.SkuNameExt, userName s
} }
dao.Commit(db) dao.Commit(db)
tmpInfo, err := GetSkuNames(ctx, "", false, utils.Params2Map("nameID", skuNameExt.SkuName.ID), 0, 1) tmpInfo, err := GetSkuNames(ctx, "", false, false, utils.Params2Map("nameID", skuNameExt.SkuName.ID), 0, 1)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -1091,7 +1103,7 @@ func AddSku(ctx *jxcontext.Context, nameID int, sku *model.Sku, userName string)
} }
dao.Commit(db) dao.Commit(db)
result, err2 := GetSkuNames(ctx, "", false, utils.Params2Map("skuID", sku.ID), 0, 0) result, err2 := GetSkuNames(ctx, "", false, false, utils.Params2Map("skuID", sku.ID), 0, 0)
if err = err2; err == nil { if err = err2; err == nil {
if result.TotalCount == 1 { if result.TotalCount == 1 {
outSkuNameExt = result.SkuNames[0] outSkuNameExt = result.SkuNames[0]
@@ -1978,7 +1990,7 @@ func writeToExcel(excelTitle []string, dataList interface{}, task *tasksch.SeqTa
if err != nil { if err != nil {
baseapi.SugarLogger.Errorf("WriteToExcel:upload %s , %s failed error:%v", fileName, err) baseapi.SugarLogger.Errorf("WriteToExcel:upload %s , %s failed error:%v", fileName, err)
} else { } else {
noticeMsg := fmt.Sprintf("[详情点我]path=%s\n", downloadURL) noticeMsg := fmt.Sprintf("[详情点我]%s/billshow/?normal=true&path=%s \n", globals.BackstageHost, downloadURL)
task.SetNoticeMsg(noticeMsg) task.SetNoticeMsg(noticeMsg)
baseapi.SugarLogger.Debug("WriteToExcel: dataSuccess downloadURL: [%v]", downloadURL) baseapi.SugarLogger.Debug("WriteToExcel: dataSuccess downloadURL: [%v]", downloadURL)
} }

View File

@@ -133,32 +133,33 @@ func (c *SkuController) SyncCategory() {
// @Title 得到商品信息 // @Title 得到商品信息
// @Description 得到商品信息,如下条件之间是与的关系 // @Description 得到商品信息,如下条件之间是与的关系
// @Param token header string true "认证token" // @Param token header string true "认证token"
// @Param keyword query string false "查询关键字(可以为空,为空表示不限制)" // @Param keyword query string false "查询关键字(可以为空,为空表示不限制)"
// @Param nameIDs query string false "SkuName IDs列表" // @Param nameIDs query string false "SkuName IDs列表"
// @Param skuIDs query string false "Sku ID列表" // @Param skuIDs query string false "Sku ID列表"
// @Param vendorSkuIDs query string false "厂商SKU ID列表" // @Param vendorSkuIDs query string false "厂商SKU ID列表"
// @Param name query string false "商品名称(不要求完全一致)" // @Param name query string false "商品名称(不要求完全一致)"
// @Param prefix query string false "商品前缀(不要求完全一致)" // @Param prefix query string false "商品前缀(不要求完全一致)"
// @Param placeCond query string false "查询地点的条件如果此字段没有设置placeCode与isGlobal无效andor指的是placeCodeisGlobal这两个条件间的关系这组条件与其它条件都是与的关系" // @Param placeCond query string false "查询地点的条件如果此字段没有设置placeCode与isGlobal无效andor指的是placeCodeisGlobal这两个条件间的关系这组条件与其它条件都是与的关系"
// @Param placeCode query int false "可售地点Code" // @Param placeCode query int false "可售地点Code"
// @Param isGlobal query bool false "是否全球可售" // @Param isGlobal query bool false "是否全球可售"
// @Param categoryID query int false "商品名所属类别ID" // @Param categoryID query int false "商品名所属类别ID"
// @Param skuCategoryID query int false "商品所属类别ID" // @Param skuCategoryID query int false "商品所属类别ID"
// @Param unit query string false "商品单位" // @Param unit query string false "商品单位"
// @Param isSpu query bool false "是否是SPU" // @Param isSpu query bool false "是否是SPU"
// @Param isExd query bool false "是否是饿鲜达商品" // @Param isExd query bool false "是否是饿鲜达商品"
// @Param fromStatus query int false "查询起始状态0下架1正常" // @Param fromStatus query int false "查询起始状态0下架1正常"
// @Param toStatus query int false "查询起始状态0下架1正常" // @Param toStatus query int false "查询起始状态0下架1正常"
// @Param offset query int false "门店列表起始序号以0开始缺省为0" // @Param offset query int false "门店列表起始序号以0开始缺省为0"
// @Param pageSize query int false "门店列表页大小缺省为50-1表示全部" // @Param pageSize query int false "门店列表页大小缺省为50-1表示全部"
// @Param isBySku query bool false "是否将sku拆开缺省为false" // @Param isBySku query bool false "是否将sku拆开缺省为false"
// @Param isQueryMidPrice query bool false "是否查询中位价缺省为false"
// @Success 200 {object} controllers.CallResult // @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult
// @router /GetSkuNames [get,post] // @router /GetSkuNames [get,post]
func (c *SkuController) GetSkuNames() { func (c *SkuController) GetSkuNames() {
c.callGetSkuNames(func(params *tSkuGetSkuNamesParams) (retVal interface{}, errCode string, err error) { c.callGetSkuNames(func(params *tSkuGetSkuNamesParams) (retVal interface{}, errCode string, err error) {
retVal, err = cms.GetSkuNames(params.Ctx, params.Keyword, params.IsBySku, params.MapData, params.Offset, params.PageSize) retVal, err = cms.GetSkuNames(params.Ctx, params.Keyword, params.IsBySku, params.IsQueryMidPrice, params.MapData, params.Offset, params.PageSize)
return retVal, "", err return retVal, "", err
}) })
} }