This commit is contained in:
苏尹岚
2021-03-25 15:51:15 +08:00
parent 0bf471365c
commit c647fdb17e
2 changed files with 125 additions and 14 deletions

View File

@@ -264,6 +264,125 @@ var (
}
)
func GetStoresSkusForStore(ctx *jxcontext.Context, storeID int, isFocus, isAct bool, keyword string, categoryID, status, offset, pageSize int) (skuNamesInfo *dao.StoreSkuNamesInfo, err error) {
//权限
if permission.IsRoled(ctx) {
if storeIDsMap, err := permission.GetUserStoresResultMap(ctx.GetUserID()); err == nil {
if storeIDsMap[storeID] == 0 {
return skuNamesInfo, err
}
}
}
var (
sqlParams []interface{}
db = dao.GetDB()
SkuNames []*dao.StoreSkuNameExt
)
sql := `
SELECT SQL_CALC_FOUND_ROWS a.*, c.store_id
FROM sku_name a
LEFT JOIN sku b ON b.name_id = a.id AND b.status = ? AND b.deleted_at = ?
JOIN store d ON d.deleted_at = ? AND d.id = ?
`
sqlParams = append(sqlParams,
model.SkuStatusNormal, utils.DefaultTimeValue,
utils.DefaultTimeValue, storeID,
)
if isFocus {
sql += `
LEFT
`
}
sql += `
JOIN store_sku_bind c ON c.sku_id = b.id AND c.deleted_at = ? AND c.store_id = d.id
`
sqlParams = append(sqlParams, utils.DefaultTimeValue)
if status != -1 {
sql += " AND c.status = ?"
sqlParams = append(sqlParams, status)
}
sql += `
LEFT JOIN sku_category d ON d.id = c.category_id AND d.deleted_at = ?
`
if categoryID != 0 {
sql += " AND d.id = ?"
sqlParams = append(sqlParams, categoryID)
}
if isAct {
sql += `
JOIN (
SELECT t2.store_id, t2.sku_id,
MIN(IF(t3.actual_act_price <= 0, NULL, t3.actual_act_price)) actual_act_price, /*non-zero min value*/
MIN(IF(t2.earning_price <= 0, NULL, t2.earning_price)) earning_price /*non-zero min value*/
FROM act t1
JOIN act_store_sku t2 ON t2.act_id = t1.id AND t2.deleted_at = ?
JOIN act_store_sku_map t3 ON t3.bind_id = t2.id AND t3.act_id = t1.id AND (t3.sync_status & ? = 0 OR t1.type = ?)
JOIN act_map t4 ON t4.act_id = t1.id AND t4.vendor_id = t3.vendor_id AND t4.deleted_at = ? AND (t4.sync_status & ? = 0 OR t1.type = ?)
WHERE t1.deleted_at = ? AND t1.status = ? AND NOT (t1.begin_at > ? OR t1.end_at < ?)
AND t2.store_id = ?
GROUP BY 1,2
) ta ON ta.store_id = d.id AND ta.sku_id = b.id
`
sqlParams = append(sqlParams,
utils.DefaultTimeValue,
model.SyncFlagNewMask,
model.ActSkuFake,
utils.DefaultTimeValue,
model.SyncFlagNewMask,
model.ActSkuFake,
utils.DefaultTimeValue,
model.ActStatusCreated,
time.Now(),
time.Now(),
storeID,
)
}
sql += `
WHERE a.deleted_at = ? AND a.status = ?
`
sqlParams = append(sqlParams,
utils.DefaultTimeValue, model.SkuStatusNormal,
)
if keyword != "" {
sql += " AND a.name LIKE ?"
sqlParams = append(sqlParams, "%"+keyword+"%")
}
sql += `
LIMIT ? OFFSET ?
`
pageSize = jxutils.FormalizePageSize(pageSize)
offset = jxutils.FormalizePageOffset(offset)
sqlParams = append(sqlParams, pageSize, offset)
dao.Begin(db)
defer dao.Commit(db)
if err = dao.GetRows(db, &SkuNames, sql, sqlParams...); err == nil {
skuNamesInfo.TotalCount = dao.GetLastTotalRowCount(db)
for _, v := range SkuNames {
var skus []*dao.StoreSkuExt
sql := `
SELECT * FROM sku WHERE deleted_at = ? AND name_id = ?
`
sqlParams := []interface{}{utils.DefaultTimeValue, v.ID}
if err = dao.GetRows(db, &skus, sql, sqlParams); err == nil {
v.Skus = skus
}
}
skuNamesInfo.SkuNames = SkuNames
if err == nil {
if isFocus {
if err == nil {
storeIDs, skuIDs := GetStoreAndSkuIDsFromInfo(skuNamesInfo)
err = dao.UpdateActPrice4StoreSkuNameNew(db, storeIDs, skuIDs, skuNamesInfo, -1)
}
} else {
err = updateUnitPrice4StoreSkuNameNew(db, skuNamesInfo)
}
}
}
return skuNamesInfo, err
}
func GetStoreSkus(ctx *jxcontext.Context, storeID int, skuIDs []int, isFocus bool, keyword string, isBySku, isAct bool, params map[string]interface{}, offset, pageSize int) (skuNamesInfo *dao.StoreSkuNamesInfo, err error) {
return GetStoresSkus(ctx, []int{storeID}, skuIDs, nil, isFocus, false, 0, keyword, isBySku, isAct, params, offset, pageSize)
}

View File

@@ -944,28 +944,20 @@ func (c *StoreSkuController) GetVendorStoreSkus() {
// @Title 得到商家商品信息
// @Description 得到商家商品信息,如下条件之间是与的关系。对于没有认领的商品,按城市限制。但对于已经认领的商品就不限制了,因为已经在平台上可售,可以操作(改价等等)
// @Param token header string false "认证token"
// @Param storeIDs query string false "门店ID"
// @Param storeID query int true "门店ID"
// @Param isFocus query bool true "是否已关注(认领)"
// @Param keyword query string false "查询关键字(可以为空,为空表示不限制)"
// @Param name query string false "商品名称(不要求完全一致)"
// @Param categoryID query int false "商品所属类别ID"
// @Param fromStatus query int false "查询起始状态0不可售1可售"
// @Param toStatus query int false "查询结束状态0不可售1可售"
// @Param status query int false "查询起始状态0不可售1可售,-1 全部"
// @Param offset query int false "门店列表起始序号以0开始缺省为0"
// @Param pageSize query int false "门店列表页大小缺省为50-1表示全部"
// @Param isBySku query bool false "是否按SKU分拆"
// @Param isAct query bool false "是否活动商品(包括正常活动与补贴)"
// @Param actVendorID query int false "要得到哪个平台的活动信息(缺省不限制,非零最小值)"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /GetStoresSkusForStore [get]
func (c *StoreSkuController) GetStoresSkusForStore() {
// c.callGetStoresSkus(func(params *tStoreSkuGetStoresSkusParams) (retVal interface{}, errCode string, err error) {
// var storeIDs, skuIDs []int
// var upcs []string
// if err = jxutils.Strings2Objs(params.StoreIDs, &storeIDs, params.SkuIDs, &skuIDs, params.Upcs, &upcs); err == nil {
// retVal, err = cms.GetStoresSkus(params.Ctx, storeIDs, skuIDs, upcs, params.IsFocus, params.IsHighPrice, params.PriceType, params.Keyword, params.IsBySku, params.IsAct, params.MapData, params.Offset, params.PageSize)
// }
// return retVal, "", err
// })
c.callGetStoresSkusForStore(func(params *tStoreSkuGetStoresSkusForStoreParams) (retVal interface{}, errCode string, err error) {
retVal, err = cms.GetStoresSkusForStore(params.Ctx, params.StoreID, params.IsFocus, params.IsAct, params.Keyword, params.CategoryID, params.Status, params.Offset, params.PageSize)
return retVal, "", err
})
}