aa
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user