Merge remote-tracking branch 'origin/mark' into jdshop

This commit is contained in:
苏尹岚
2020-05-13 16:34:52 +08:00
5 changed files with 78 additions and 19 deletions

View File

@@ -341,7 +341,6 @@ func (c *OrderManager) updateOrderSkuOtherInfo(order *model.GoodsOrder, db *dao.
return err
}
skumapper := storeSkuPriceAndWeight2Map(l)
var skuMultiCountMap = make(map[int][]*tSkuCountPrice)
for _, v := range orderSkus {
v.VendorOrderID = order.VendorOrderID
v.VendorID = order.VendorID
@@ -370,29 +369,26 @@ func (c *OrderManager) updateOrderSkuOtherInfo(order *model.GoodsOrder, db *dao.
salePrice = 0
}
v.EarningPrice = jxutils.CaculateSkuEarningPrice(v.ShopPrice, salePrice, storePayPercentage)
skuMultiCountMap[v.SkuID] = append(skuMultiCountMap[v.SkuID], &tSkuCountPrice{
Count: v.Count,
SalePrice: v.SalePrice,
})
}
// 直营店始终按比例结算,不考虑活动与结算表
if changePriceType != model.StoreChangePriceTypeManagedStore {
updateSingleOrderEarningPrice(order, db)
}
globals.SugarLogger.Debugf("skuMultiCountMap", utils.Format4Output(skuMultiCountMap, false))
//TODO 重复购买有活动且结算价大于0的商品需要拆分第一个商品按结算价后面的商品按shopprice 或者 saleprice, 2020-05-06
//TODO 京东美团的订单,做活动的商品之前就会拆分出来,所以只做更新,饿百暂时不管, 2020-05-07
//TODO 不根据商品是否拆分直接根据该商品做了活动并且他的vendorPrice 和 salePrice 相等,就按新规则结算, 2020-05-11
if order.VendorID == model.VendorIDJD || order.VendorID == model.VendorIDMTWM {
for _, v := range orderSkus {
if v.EarningPrice > 0 {
if len(skuMultiCountMap[v.SkuID]) > 1 {
var price = 0
for _, vv := range skuMultiCountMap[v.SkuID] {
if int(vv.SalePrice) > price {
price = int(vv.SalePrice)
}
}
if price == int(v.SalePrice) {
var storeID int
if order.StoreID == 0 {
storeID = order.JxStoreID
} else {
storeID = order.StoreID
}
result, err := dao.GetEffectiveActStoreSkuInfo2(db, 0, []int{order.VendorID}, []int{model.ActSkuSecKill, model.ActSkuDirectDown}, []int{storeID}, []int{v.SkuID}, order.OrderCreatedAt, order.OrderCreatedAt)
if len(result) > 0 && err == nil {
if v.VendorPrice == v.SalePrice {
var earningPrice = 0
if v.ShopPrice < v.SalePrice {
earningPrice = int(utils.Float64TwoInt64(math.Round(utils.Int2Float64(int(v.ShopPrice)) * utils.Int2Float64(storePayPercentage) / 100)))

View File

@@ -398,6 +398,10 @@ func getStoresSql(ctx *jxcontext.Context, keyword string, params map[string]inte
sqlWhere += " AND t1.address LIKE ?"
sqlWhereParams = append(sqlWhereParams, "%"+params["address"].(string)+"%")
}
if params["marketManPhone"] != nil {
sqlWhere += " AND t1.market_man_phone = ?"
sqlWhereParams = append(sqlWhereParams, params["marketManPhone"].(string))
}
if params["tel"] != nil {
sqlWhere += " AND (t1.tel1 LIKE ? OR t1.tel2 LIKE ?)"
sqlWhereParams = append(sqlWhereParams, "%"+params["tel"].(string)+"%")

View File

@@ -911,12 +911,15 @@ func (d *SyncErrResultLock) AppendData(syncErrResult SyncErrResult) {
func (v *VendorSync) SyncStoreSkusFromYb(ctx *jxcontext.Context, storeIDs []int, isAsync, isContinueWhenError bool) (hint string, err error) {
var (
vendorID = model.VendorIDYB
db = dao.GetDB()
)
storeMapList, err := dao.GetStoresMapList2(db, []int{vendorID}, storeIDs, nil, model.StoreStatusAll, model.StoreIsSyncYes, "", false)
for _, v := range storeMapList {
hint, err = syncStoreSkusFromYb(ctx, v.StoreID, vendorID, v.VendorStoreID, isAsync, isContinueWhenError)
}
hint, err = v.LoopStoresMap(ctx, dao.GetDB(), fmt.Sprintf("同步银豹到京西:%v", storeIDs), isAsync, true, []int{vendorID}, storeIDs,
func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (interface{}, error) {
loopMapInfo := batchItemList[0].(*LoopStoreMapInfo)
for _, v := range loopMapInfo.StoreMapList {
hint, err = syncStoreSkusFromYb(ctx, v.StoreID, vendorID, v.VendorStoreID, isAsync, isContinueWhenError)
}
return nil, partner.AddVendorInfo2Err(err, loopMapInfo.VendorID)
}, isContinueWhenError)
return hint, err
}

View File

@@ -419,6 +419,61 @@ func GetEffectiveActStoreSkuInfo(db *DaoDB, actID int, vendorIDs []int, actType
return actStoreSkuList, err
}
func GetEffectiveActStoreSkuInfo2(db *DaoDB, actID int, vendorIDs []int, actTypes []int, storeIDs, skuIDs []int, beginAt, endAt time.Time) (actStoreSkuList []*model.ActStoreSku2, err error) {
if utils.IsTimeZero(beginAt) {
return nil, fmt.Errorf("GeActStoreSkuInfo必须指定活动开始时间")
}
if utils.IsTimeZero(endAt) {
endAt = beginAt
}
sql := `
SELECT
t1.type,
t2.*,
t3.actual_act_price, t3.sync_status, t3.vendor_price, t3.vendor_id
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 t1.create_type = ?`
sqlParams := []interface{}{
utils.DefaultTimeValue,
model.SyncFlagNewMask,
model.ActSkuFake,
utils.DefaultTimeValue, model.SyncFlagNewMask, model.ActSkuFake,
utils.DefaultTimeValue, model.ActStatusCreated, endAt, beginAt, model.ActCreateTypeAPI,
}
if len(vendorIDs) > 0 {
sql += " AND (t1.vendor_mask & ?) <> 0 AND t3.vendor_id IN (" + GenQuestionMarks(len(vendorIDs)) + ")"
sqlParams = append(sqlParams, model.GetVendorMask(vendorIDs...), vendorIDs)
}
if actID > 0 {
sql += " AND t1.id = ?"
sqlParams = append(sqlParams, actID)
}
if len(actTypes) > 0 {
sql += " AND t1.type IN (" + GenQuestionMarks(len(actTypes)) + ")"
sqlParams = append(sqlParams, actTypes)
}
if len(storeIDs) > 0 {
sql += " AND t2.store_id IN (" + GenQuestionMarks(len(storeIDs)) + ")"
sqlParams = append(sqlParams, storeIDs)
}
if len(skuIDs) > 0 {
sql += " AND t2.sku_id IN (" + GenQuestionMarks(len(skuIDs)) + ")"
sqlParams = append(sqlParams, skuIDs)
}
if globals.IsStoreSkuAct {
sql += " AND t1.is_special = 0"
}
// globals.SugarLogger.Debug(sql)
// globals.SugarLogger.Debug(utils.Format4Output(sqlParams, false))
err = GetRows(db, &actStoreSkuList, sql, sqlParams...)
return actStoreSkuList, err
}
func UpdateActStatusByTime(db *DaoDB, refTime time.Time) (num int64, err error) {
sql := `
UPDATE act t1

View File

@@ -39,6 +39,7 @@ type StoreController struct {
// @Param orderTimeTo query string false "订单创建结束时间"
// @Param orderCountFrom query int false "订单量起始"
// @Param orderCountTo query int false "订单量结束"
// @Param marketManPhone query string false "市场负责人电话"
// @Param briefLevel query int false "返回信息精简模式"
// @Param offset query int false "门店列表起始序号以0开始缺省为0"
// @Param pageSize query int false "门店列表页大小缺省为50-1表示全部"