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)
}