- GetMissingStoreSkuFromOrder

This commit is contained in:
gazebo
2019-06-16 11:30:38 +08:00
parent c42e67529d
commit 68e569d885
5 changed files with 106 additions and 5 deletions

View File

@@ -2,6 +2,7 @@ package dao
import (
"fmt"
"time"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/model"
@@ -72,6 +73,16 @@ type StoreSkuSyncInfo struct {
CatPricePercentage int
}
type MissingStoreSkuInfo struct {
StoreID int `orm:"column(store_id)"`
NameID int `orm:"column(name_id)"`
SkuID int `orm:"column(sku_id)"`
SpecQuality float32
SpecUnit string
Unit string
RefPrice int
}
// 单门店模式厂商适用
// 从store_sku_bind中得到所有依赖的商家分类信息
func GetSkusCategories(db *DaoDB, vendorID, storeID int, skuIDs []int, level int) (cats []*SkuStoreCatInfo, err error) {
@@ -381,3 +392,37 @@ func GetStoresSkusInfo(db *DaoDB, storeIDs, skuIDs []int) (storeSkuList []*model
err = GetRows(db, &storeSkuList, sql, sqlParams...)
return storeSkuList, err
}
func GetMissingStoreSkuFromOrder(db *DaoDB, storeIDs []int, fromTime time.Time) (storeSkuList []*MissingStoreSkuInfo, err error) {
// if time.Now().Sub(fromTime) > 24*time.Hour*60 {
// return nil, fmt.Errorf("GetMissingStoreSkuFromOrder时间超过60天")
// }
sql := `
SELECT IF(t2.jx_store_id <> 0, t2.jx_store_id, t2.store_id) store_id, t4.name_id, t1.sku_id,
t4.spec_quality, t4.spec_unit, t5.unit,
COUNT(*) ct, CAST(AVG(IF(t1.vendor_price <> 0, t1.vendor_price, t1.sale_price)) AS SIGNED) ref_price
FROM order_sku t1
JOIN goods_order t2 ON t2.vendor_order_id = t1.vendor_order_id
LEFT JOIN store_sku_bind t3 ON t3.store_id = IF(t2.jx_store_id <> 0, t2.jx_store_id, t2.store_id) AND
t3.sku_id = t1.sku_id AND t3.deleted_at = ?
JOIN sku t4 ON t4.id = t1.sku_id
JOIN sku_name t5 ON t5.id = t4.name_id
WHERE t2.status = ? AND IF(t2.jx_store_id <> 0, t2.jx_store_id, t2.store_id) > 0 AND t1.sku_id > 0 AND t1.shop_price = 0 AND
t1.order_created_at > ? AND t3.id IS NULL
`
sqlParams := []interface{}{
utils.DefaultTimeValue,
model.OrderStatusFinished,
fromTime,
}
if len(storeIDs) > 0 {
sql += " AND IF(t2.jx_store_id <> 0, t2.jx_store_id, t2.store_id) IN (" + GenQuestionMarks(len(storeIDs)) + ")"
sqlParams = append(sqlParams, storeIDs)
}
sql += `
GROUP BY 1,2,3,4,5,6
ORDER BY 1,2,3,4,5,6
`
err = GetRows(db, &storeSkuList, sql, sqlParams...)
return storeSkuList, err
}