- 重构新京西活动,平台接口定为笼统的SyncAct,京平台支持添加,删除商品,暂不支持修改
This commit is contained in:
@@ -1,15 +1,13 @@
|
|||||||
package act
|
package act
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||||
"git.rosy.net.cn/jx-callback/business/partner"
|
"git.rosy.net.cn/jx-callback/business/partner"
|
||||||
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
|
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
|
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||||
)
|
)
|
||||||
@@ -33,7 +31,8 @@ type ActDetail struct {
|
|||||||
model.Act2
|
model.Act2
|
||||||
}
|
}
|
||||||
|
|
||||||
func ActStoreSkuParam2Model(ctx *jxcontext.Context, act *model.Act, vendorIDs []int, actStoreSku []*ActStoreSkuParam) (actMapList []*model.ActMap, actStoreMapList []*model.ActStoreMap, actStoreSkuList []*model.ActStoreSku, actStoreSkuMapList []*model.ActStoreSkuMap, err error) {
|
func ActStoreSkuParam2Model(ctx *jxcontext.Context, db *dao.DaoDB, act *model.Act, vendorIDs []int, actStoreSku []*ActStoreSkuParam) (validVendorIDs []int, actStoreSkuList []*model.ActStoreSku, actStoreSkuMapList []*model.ActStoreSkuMap, err error) {
|
||||||
|
wholeValidVendorMap := make(map[int]int)
|
||||||
if len(actStoreSku) > 0 {
|
if len(actStoreSku) > 0 {
|
||||||
storeIDMap := make(map[int]int)
|
storeIDMap := make(map[int]int)
|
||||||
skuIDMap := make(map[int]int)
|
skuIDMap := make(map[int]int)
|
||||||
@@ -43,18 +42,16 @@ func ActStoreSkuParam2Model(ctx *jxcontext.Context, act *model.Act, vendorIDs []
|
|||||||
skuIDMap[v.SkuID] = 1
|
skuIDMap[v.SkuID] = 1
|
||||||
storeSkuParamMap[v.StoreID] = append(storeSkuParamMap[v.StoreID], v)
|
storeSkuParamMap[v.StoreID] = append(storeSkuParamMap[v.StoreID], v)
|
||||||
}
|
}
|
||||||
db := dao.GetDB()
|
|
||||||
|
|
||||||
storeSkuList, err2 := dao.GetStoresSkusInfo(db, jxutils.IntMap2List(storeIDMap), jxutils.IntMap2List(skuIDMap))
|
storeSkuList, err2 := dao.GetStoresSkusInfo(db, jxutils.IntMap2List(storeIDMap), jxutils.IntMap2List(skuIDMap))
|
||||||
if err = err2; err != nil {
|
if err = err2; err != nil {
|
||||||
return nil, nil, nil, nil, err
|
return nil, nil, nil, err
|
||||||
}
|
}
|
||||||
storeSkuMap := make(map[int64]*model.StoreSkuBind)
|
storeSkuMap := make(map[int64]*model.StoreSkuBind)
|
||||||
for _, v := range storeSkuList {
|
for _, v := range storeSkuList {
|
||||||
storeSkuMap[jxutils.Combine2Int(v.StoreID, v.SkuID)] = v
|
storeSkuMap[jxutils.Combine2Int(v.StoreID, v.SkuID)] = v
|
||||||
}
|
}
|
||||||
|
|
||||||
wholeValidVendorMap := make(map[int]int)
|
|
||||||
for storeID, oneStoreSkuParam := range storeSkuParamMap {
|
for storeID, oneStoreSkuParam := range storeSkuParamMap {
|
||||||
validVendorMap := make(map[int]int)
|
validVendorMap := make(map[int]int)
|
||||||
validSkuMap := make(map[int]int)
|
validSkuMap := make(map[int]int)
|
||||||
@@ -87,15 +84,16 @@ func ActStoreSkuParam2Model(ctx *jxcontext.Context, act *model.Act, vendorIDs []
|
|||||||
actStoreSkuMapList = append(actStoreSkuMapList, actSkuMap)
|
actStoreSkuMapList = append(actStoreSkuMapList, actSkuMap)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
wholeValidVendorMap[vendorID] = 1
|
||||||
} else if !dao.IsNoRowsError(err) {
|
} else if !dao.IsNoRowsError(err) {
|
||||||
return nil, nil, nil, nil, err
|
return nil, nil, nil, err
|
||||||
} else {
|
} else {
|
||||||
err = nil
|
err = nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, v := range oneStoreSkuParam {
|
for _, v := range oneStoreSkuParam {
|
||||||
if validSkuMap[v.SkuID] == 1 {
|
if validSkuMap[v.SkuID] == 1 { // todo 这里是否需要判断
|
||||||
if storeSkuInfo := storeSkuMap[jxutils.Combine2Int(v.StoreID, v.SkuID)]; storeSkuInfo != nil {
|
if storeSkuInfo := storeSkuMap[jxutils.Combine2Int(v.StoreID, v.SkuID)]; storeSkuInfo != nil {
|
||||||
storeSku := &v.ActStoreSku
|
storeSku := &v.ActStoreSku
|
||||||
storeSku.ActID = act.ID
|
storeSku.ActID = act.ID
|
||||||
@@ -105,40 +103,12 @@ func ActStoreSkuParam2Model(ctx *jxcontext.Context, act *model.Act, vendorIDs []
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for vendorID := range validVendorMap {
|
|
||||||
wholeValidVendorMap[vendorID] = 1
|
|
||||||
actStoreMap := &model.ActStoreMap{
|
|
||||||
ActID: act.ID,
|
|
||||||
StoreID: storeID,
|
|
||||||
VendorID: vendorID,
|
|
||||||
|
|
||||||
SyncStatus: model.SyncFlagNewMask,
|
|
||||||
}
|
|
||||||
dao.WrapAddIDCULDEntity(actStoreMap, ctx.GetUserName())
|
|
||||||
actStoreMapList = append(actStoreMapList, actStoreMap)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for vendorID := range wholeValidVendorMap {
|
|
||||||
actMap := &model.ActMap{
|
|
||||||
ActID: act.ID,
|
|
||||||
VendorID: vendorID,
|
|
||||||
|
|
||||||
SyncStatus: model.SyncFlagNewMask,
|
|
||||||
}
|
|
||||||
dao.WrapAddIDCULDEntity(actMap, ctx.GetUserName())
|
|
||||||
actMapList = append(actMapList, actMap)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return actMapList, actStoreMapList, actStoreSkuList, actStoreSkuMapList, err
|
return jxutils.IntMap2List(wholeValidVendorMap), actStoreSkuList, actStoreSkuMapList, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func CreateAct(ctx *jxcontext.Context, act *model.Act, vendorIDs []int, actRules []*ActOrderRuleParam, actStoreSku []*ActStoreSkuParam) (actID int, err error) {
|
func addActStoreBind(ctx *jxcontext.Context, db *dao.DaoDB, actStoreSkuList []*model.ActStoreSku, actStoreSkuMapList []*model.ActStoreSkuMap) (err error) {
|
||||||
vendorIDMap := make(map[int]bool)
|
|
||||||
for _, v := range vendorIDs {
|
|
||||||
vendorIDMap[v] = true
|
|
||||||
}
|
|
||||||
db := dao.GetDB()
|
|
||||||
dao.WrapAddIDCULDEntity(act, ctx.GetUserName())
|
|
||||||
dao.Begin(db)
|
dao.Begin(db)
|
||||||
defer func() {
|
defer func() {
|
||||||
if r := recover(); r != nil {
|
if r := recover(); r != nil {
|
||||||
@@ -146,32 +116,108 @@ func CreateAct(ctx *jxcontext.Context, act *model.Act, vendorIDs []int, actRules
|
|||||||
panic(r)
|
panic(r)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
err = dao.CreateEntity(db, act)
|
|
||||||
if err != nil {
|
storeSkuMap := make(map[int64]int)
|
||||||
return 0, err
|
for _, v := range actStoreSkuList {
|
||||||
|
err = dao.CreateEntity(db, v)
|
||||||
|
if err != nil {
|
||||||
|
dao.Rollback(db)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
storeSkuMap[jxutils.Combine2Int(v.StoreID, v.SkuID)] = v.ID
|
||||||
}
|
}
|
||||||
actMapList, actStoreMapList, actStoreSkuList, actStoreSkuMapList, err := ActStoreSkuParam2Model(ctx, act, vendorIDs, actStoreSku)
|
for _, v := range actStoreSkuMapList {
|
||||||
if err != nil {
|
v.BindID = storeSkuMap[jxutils.Combine2Int(v.StoreID, v.SkuID)]
|
||||||
return 0, err
|
|
||||||
}
|
}
|
||||||
isEmptyAct := true
|
|
||||||
for _, list := range []interface{}{
|
if len(actStoreSkuMapList) > 0 {
|
||||||
actMapList, actStoreMapList, actStoreSkuList, actStoreSkuMapList,
|
err = dao.CreateMultiEntities(db, actStoreSkuMapList)
|
||||||
} {
|
if err != nil {
|
||||||
if len(utils.Interface2Slice(list)) > 0 {
|
dao.Rollback(db)
|
||||||
err = dao.CreateMultiEntities(db, list)
|
return err
|
||||||
if err != nil {
|
|
||||||
dao.Rollback(db)
|
|
||||||
return 0, err
|
|
||||||
}
|
|
||||||
isEmptyAct = false
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if isEmptyAct {
|
dao.Commit(db)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func AddActStoreBind(ctx *jxcontext.Context, actID int, actStoreSku []*ActStoreSkuParam) (err error) {
|
||||||
|
db := dao.GetDB()
|
||||||
|
var vendorIDs []int
|
||||||
|
actMap, err := dao.GetActVendorInfo(db, actID, nil)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
for vendorID := range actMap {
|
||||||
|
vendorIDs = append(vendorIDs, vendorID)
|
||||||
|
}
|
||||||
|
var act *model.Act
|
||||||
|
if len(vendorIDs) > 0 {
|
||||||
|
act = &actMap[vendorIDs[0]].Act
|
||||||
|
} else {
|
||||||
|
act = &model.Act{}
|
||||||
|
act.ID = actID
|
||||||
|
if err = dao.GetEntity(db, act); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_, actStoreSkuList, actStoreSkuMapList, err := ActStoreSkuParam2Model(ctx, db, act, vendorIDs, actStoreSku)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = addActStoreBind(ctx, db, actStoreSkuList, actStoreSkuMapList)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func CreateAct(ctx *jxcontext.Context, act *model.Act, vendorIDs []int, actRules []*ActOrderRuleParam, actStoreSku []*ActStoreSkuParam) (actID int, err error) {
|
||||||
|
db := dao.GetDB()
|
||||||
|
|
||||||
|
dao.Begin(db)
|
||||||
|
defer func() {
|
||||||
|
if r := recover(); r != nil {
|
||||||
|
dao.Rollback(db)
|
||||||
|
panic(r)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
dao.WrapAddIDCULDEntity(act, ctx.GetUserName())
|
||||||
|
err = dao.CreateEntity(db, act)
|
||||||
|
if err != nil {
|
||||||
dao.Rollback(db)
|
dao.Rollback(db)
|
||||||
return 0, fmt.Errorf("没有门店及SKU满足需求,空操作")
|
return 0, err
|
||||||
|
}
|
||||||
|
|
||||||
|
validVendorIDs, actStoreSkuList, actStoreSkuMapList, err := ActStoreSkuParam2Model(ctx, db, act, vendorIDs, actStoreSku)
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var actMapList []*model.ActMap
|
||||||
|
for vendorID := range validVendorIDs {
|
||||||
|
actMap := &model.ActMap{
|
||||||
|
ActID: act.ID,
|
||||||
|
VendorID: vendorID,
|
||||||
|
|
||||||
|
SyncStatus: model.SyncFlagNewMask,
|
||||||
|
}
|
||||||
|
dao.WrapAddIDCULDEntity(actMap, ctx.GetUserName())
|
||||||
|
actMapList = append(actMapList, actMap)
|
||||||
|
}
|
||||||
|
if len(actMapList) > 0 {
|
||||||
|
err = dao.CreateMultiEntities(db, actMapList)
|
||||||
|
if err != nil {
|
||||||
|
dao.Rollback(db)
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if err = addActStoreBind(ctx, db, actStoreSkuList, actStoreSkuMapList); err != nil {
|
||||||
|
dao.Rollback(db)
|
||||||
|
return 0, err
|
||||||
}
|
}
|
||||||
dao.Commit(db)
|
dao.Commit(db)
|
||||||
|
|
||||||
actID = act.ID
|
actID = act.ID
|
||||||
err = SyncAct(ctx, actID, nil, nil, nil)
|
err = SyncAct(ctx, actID, nil, nil, nil)
|
||||||
return actID, err
|
return actID, err
|
||||||
@@ -185,18 +231,6 @@ func GetActDetail(ctx *jxcontext.Context, actID int) (actDetail *ActDetail, err
|
|||||||
return actDetail, err
|
return actDetail, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// func GetAcVendorInfo(ctx *jxcontext.Context, actID int) (err error) {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
|
|
||||||
// func GetAcStoresVendorInfo(ctx *jxcontext.Context, actID int, storeIDs []int) (err error) {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
|
|
||||||
// func GetAcStoresSkusVendorInfo(ctx *jxcontext.Context, actID int, storeIDs, skuIDs []int) (err error) {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
|
|
||||||
func UpdateAct(ctx *jxcontext.Context, act *model.Act, actRules []*ActOrderRuleParam, actStoreSku []*ActStoreSkuParam) (err error) {
|
func UpdateAct(ctx *jxcontext.Context, act *model.Act, actRules []*ActOrderRuleParam, actStoreSku []*ActStoreSkuParam) (err error) {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -214,27 +248,13 @@ func DeleteActStoreBind(ctx *jxcontext.Context, actID int, actStoreSku []*ActSto
|
|||||||
return deleteActStoreBind(ctx, dao.GetDB(), actID, actStoreSku)
|
return deleteActStoreBind(ctx, dao.GetDB(), actID, actStoreSku)
|
||||||
}
|
}
|
||||||
|
|
||||||
func deleteActStoreBind(ctx *jxcontext.Context, db *dao.DaoDB, actID int, actStoreSku []*ActStoreSkuParam) (err error) {
|
func deleteActStoreBind(ctx *jxcontext.Context, db *dao.DaoDB, actID int, actStoreSkuParam []*ActStoreSkuParam) (err error) {
|
||||||
storeIDMap := make(map[int]int)
|
|
||||||
skuIDMap := make(map[int]int)
|
|
||||||
actStoreSkuParamMap := make(map[int64]*ActStoreSkuParam)
|
|
||||||
for _, v := range actStoreSku {
|
|
||||||
storeIDMap[v.StoreID] = 1
|
|
||||||
skuIDMap[v.SkuID] = 1
|
|
||||||
actStoreSkuParamMap[jxutils.Combine2Int(v.StoreID, v.SkuID)] = v
|
|
||||||
}
|
|
||||||
storeIDs := jxutils.IntMap2List(storeIDMap)
|
|
||||||
skuIDs := jxutils.IntMap2List(skuIDMap)
|
|
||||||
|
|
||||||
actMap, err := dao.GetActVendorInfo(db, actID, nil)
|
actMap, err := dao.GetActVendorInfo(db, actID, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
actStoreMap, err := dao.GetActStoreVendorInfo(db, actID, nil, storeIDs)
|
|
||||||
if err != nil {
|
actStoreSkuMap, err := dao.GetActStoreSkuVendorInfo(db, actID, nil, nil, nil)
|
||||||
return err
|
|
||||||
}
|
|
||||||
actStoreSkuMap, err := dao.GetActStoreSkuVendorInfo(db, actID, nil, storeIDs, skuIDs)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -248,50 +268,66 @@ func deleteActStoreBind(ctx *jxcontext.Context, db *dao.DaoDB, actID int, actSto
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
actStoreSkuParamMap := make(map[int64]*ActStoreSkuParam)
|
||||||
|
for _, v := range actStoreSkuParam {
|
||||||
|
actStoreSkuParamMap[jxutils.Combine2Int(v.StoreID, v.SkuID)] = v
|
||||||
|
if _, err = dao.DeleteEntityLogically(db, &model.ActStoreSku{}, nil, ctx.GetUserName(),
|
||||||
|
map[string]interface{}{
|
||||||
|
model.FieldActID: actID,
|
||||||
|
model.FieldStoreID: v.StoreID,
|
||||||
|
model.FieldSkuID: v.SkuID,
|
||||||
|
}); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
isNeedCancelAct := true
|
isNeedCancelAct := true
|
||||||
for vendorID, act := range actMap {
|
for vendorID, act := range actMap {
|
||||||
actStoreMap := partner.SplitActStore(actStoreMap[vendorID])
|
isDeleteAll := true
|
||||||
|
isDeleteAtLeastOne := false
|
||||||
actStoreSkuMap := partner.SplitActStoreSku(actStoreSkuMap[vendorID])
|
actStoreSkuMap := partner.SplitActStoreSku(actStoreSkuMap[vendorID])
|
||||||
isStoreAllDeleted := true
|
for storeID := range actStoreSkuMap {
|
||||||
for _, actStore := range actStoreMap {
|
for _, actStoreSku := range actStoreSkuMap[storeID] {
|
||||||
isStoreSkuAllDeleted := true
|
if actStoreSkuParam == nil || actStoreSkuParamMap[jxutils.Combine2Int(actStoreSku.StoreID, actStoreSku.SkuID)] != nil {
|
||||||
for _, actStoreSku := range actStoreSkuMap[actStore.StoreID] {
|
if _, err = dao.UpdateEntityLogically(db, partner.ActStoreSku2ActStoreSkuMap(actStoreSku),
|
||||||
if actStoreSku == nil || actStoreSkuParamMap[jxutils.Combine2Int(actStoreSku.StoreID, actStoreSku.SkuID)] != nil {
|
map[string]interface{}{
|
||||||
if _, err = dao.UpdateEntityLogically(db, partner.ActStoreSku2ActStoreSkuMap(actStoreSku), map[string]interface{}{
|
model.FieldSyncStatus: actStoreSku.SyncStatus | model.SyncFlagDeletedMask,
|
||||||
model.FieldSyncStatus: actStoreSku.SyncStatus | model.SyncFlagDeletedMask,
|
}, ctx.GetUserName(), nil); err != nil {
|
||||||
}, ctx.GetUserName(), nil); err != nil {
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
isDeleteAtLeastOne = true
|
||||||
} else {
|
} else {
|
||||||
isStoreSkuAllDeleted = false
|
isNeedCancelAct = false
|
||||||
|
isDeleteAll = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if isStoreSkuAllDeleted {
|
|
||||||
if _, err = dao.UpdateEntityLogically(db, partner.ActStore2ActStoreMap(actStore), map[string]interface{}{
|
|
||||||
model.FieldSyncStatus: actStore.SyncStatus | model.SyncFlagDeletedMask,
|
|
||||||
}, ctx.GetUserName(), nil); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
isStoreAllDeleted = false
|
|
||||||
isNeedCancelAct = false
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
if isDeleteAll || isDeleteAtLeastOne {
|
||||||
if isStoreAllDeleted {
|
// globals.SugarLogger.Debugf("isDeleteAll:%t", isDeleteAll)
|
||||||
if _, err = dao.UpdateEntityLogically(db, partner.Act2ActMap(act), map[string]interface{}{
|
syncStatus := model.SyncFlagModifiedMask
|
||||||
model.FieldSyncStatus: act.SyncStatus | model.SyncFlagDeletedMask,
|
if isDeleteAll {
|
||||||
}, ctx.GetUserName(), nil); err != nil {
|
syncStatus = model.SyncFlagDeletedMask
|
||||||
|
}
|
||||||
|
syncStatus |= act.SyncStatus
|
||||||
|
if _, err = dao.UpdateEntityLogically(db, partner.Act2ActMap(act),
|
||||||
|
map[string]interface{}{
|
||||||
|
model.FieldSyncStatus: syncStatus,
|
||||||
|
}, ctx.GetUserName(), nil); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if isDeleteAll != isNeedCancelAct {
|
||||||
|
globals.SugarLogger.Warnf("deleteActStoreBind, actID:%d isDeleteAll:%t != isNeedCancelAct:%t", act.ID, isDeleteAll, isNeedCancelAct)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if isNeedCancelAct {
|
if isNeedCancelAct {
|
||||||
act := &model.Act{}
|
act := &model.Act{}
|
||||||
act.ID = actID
|
act.ID = actID
|
||||||
if _, err = dao.UpdateEntityLogically(db, act, map[string]interface{}{
|
if _, err = dao.UpdateEntityLogically(db, act,
|
||||||
model.FieldStatus: model.ActStatusCanceled,
|
map[string]interface{}{
|
||||||
}, ctx.GetUserName(), nil); err != nil {
|
model.FieldStatus: model.ActStatusCanceled,
|
||||||
|
}, ctx.GetUserName(), nil); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -300,93 +336,110 @@ func deleteActStoreBind(ctx *jxcontext.Context, db *dao.DaoDB, actID int, actSto
|
|||||||
}
|
}
|
||||||
|
|
||||||
func SyncAct(ctx *jxcontext.Context, actID int, vendorIDs, storeIDs, skuIDs []int) (err error) {
|
func SyncAct(ctx *jxcontext.Context, actID int, vendorIDs, storeIDs, skuIDs []int) (err error) {
|
||||||
var actOrderRules []*model.ActOrderRule
|
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
actMap, err := dao.GetActVendorInfo(db, actID, vendorIDs)
|
actMap, err := dao.GetActVendorInfo(db, actID, vendorIDs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
actStoreMap, err := dao.GetActStoreVendorInfo(db, actID, vendorIDs, storeIDs)
|
actStoreSkuMap, err := dao.GetActStoreSkuVendorInfo(db, actID, nil, storeIDs, skuIDs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
actStoreSkuMap, err := dao.GetActStoreSkuVendorInfo(db, actID, vendorIDs, storeIDs, skuIDs)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
var realVendorIDs []int
|
|
||||||
for vendorID := range actMap {
|
for vendorID := range actMap {
|
||||||
realVendorIDs = append(realVendorIDs, vendorID)
|
if handler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IPurchasePlatformActHandler); handler != nil {
|
||||||
}
|
if err = handler.SyncAct(ctx, nil, actMap[vendorID], nil, actStoreSkuMap[vendorID]); err != nil {
|
||||||
|
return err
|
||||||
task := tasksch.NewParallelTask("SyncAct", nil, ctx,
|
|
||||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
|
||||||
vendorID := batchItemList[0].(int)
|
|
||||||
handler := partner.GetPurchasePlatformFromVendorID(vendorID)
|
|
||||||
if handler == nil {
|
|
||||||
err = fmt.Errorf("不被支持的vendorID:%d", vendorID)
|
|
||||||
} else {
|
|
||||||
act := actMap[vendorID]
|
|
||||||
actStore := actStoreMap[vendorID]
|
|
||||||
actStoreSku := actStoreSkuMap[vendorID]
|
|
||||||
// globals.SugarLogger.Debugf("%s", utils.Format4Output(act, false))
|
|
||||||
// globals.SugarLogger.Debugf("%s", utils.Format4Output(actStore, false))
|
|
||||||
// globals.SugarLogger.Debugf("%s", utils.Format4Output(actStoreSku, false))
|
|
||||||
if act != nil && actStore != nil && actStoreSku != nil {
|
|
||||||
if model.IsSyncStatusNeedCreate(act.SyncStatus) {
|
|
||||||
err = handler.CreateAct(ctx, task, act, actOrderRules, actStore, actStoreSku)
|
|
||||||
} else if model.IsSyncStatusNeedUpdate(act.SyncStatus) {
|
|
||||||
if act.Status == model.ActStatusCanceled {
|
|
||||||
err = handler.CancelAct(ctx, task, act, actStore, actStoreSku)
|
|
||||||
} else {
|
|
||||||
// actStoreMap2Remove, actStoreMap2Add, actStoreMap2Update := splitActStore(actStore)
|
|
||||||
// err = handler.UpdateAct(ctx, task, act, actOrderRules, actStoreMap2Remove, actStoreMap2Add, actStoreMap2Update, actStoreSku)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if err == nil {
|
|
||||||
actMap := &model.ActMap{}
|
|
||||||
actMap.ID = act.MapID
|
|
||||||
dao.UpdateEntityLogically(db, actMap, map[string]interface{}{
|
|
||||||
model.FieldSyncStatus: 0,
|
|
||||||
model.FieldVendorActID: act.VendorActID,
|
|
||||||
}, ctx.GetUserName(), nil)
|
|
||||||
for _, v := range actStore {
|
|
||||||
storeMap := model.ActStoreMap{}
|
|
||||||
storeMap.ID = v.MapID
|
|
||||||
dao.UpdateEntityLogically(db, storeMap, map[string]interface{}{
|
|
||||||
model.FieldSyncStatus: 0,
|
|
||||||
model.FieldVendorActID: v.VendorActID,
|
|
||||||
}, ctx.GetUserName(), nil)
|
|
||||||
}
|
|
||||||
for _, v := range actStoreSku {
|
|
||||||
storeSkuMap := model.ActStoreSkuMap{}
|
|
||||||
storeSkuMap.ID = v.MapID
|
|
||||||
dao.UpdateEntityLogically(db, storeSkuMap, map[string]interface{}{
|
|
||||||
model.FieldSyncStatus: 0,
|
|
||||||
model.FieldVendorActID: v.VendorActID,
|
|
||||||
}, ctx.GetUserName(), nil)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return nil, err
|
}
|
||||||
}, realVendorIDs)
|
}
|
||||||
tasksch.ManageTask(task).Run()
|
return err
|
||||||
_, err = task.GetResult(0)
|
// var actOrderRules []*model.ActOrderRule
|
||||||
|
// db := dao.GetDB()
|
||||||
|
// actMap, err := dao.GetActVendorInfo(db, actID, vendorIDs)
|
||||||
|
// if err != nil {
|
||||||
|
// return err
|
||||||
|
// }
|
||||||
|
// actStoreMap, err := dao.GetActStoreVendorInfo(db, actID, vendorIDs, storeIDs)
|
||||||
|
// if err != nil {
|
||||||
|
// return err
|
||||||
|
// }
|
||||||
|
// actStoreSkuMap, err := dao.GetActStoreSkuVendorInfo(db, actID, vendorIDs, storeIDs, skuIDs)
|
||||||
|
// if err != nil {
|
||||||
|
// return err
|
||||||
|
// }
|
||||||
|
// var realVendorIDs []int
|
||||||
|
// for vendorID := range actMap {
|
||||||
|
// realVendorIDs = append(realVendorIDs, vendorID)
|
||||||
|
// }
|
||||||
|
|
||||||
|
// task := tasksch.NewParallelTask("SyncAct", nil, ctx,
|
||||||
|
// func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
|
// vendorID := batchItemList[0].(int)
|
||||||
|
// handler := partner.GetPurchasePlatformFromVendorID(vendorID)
|
||||||
|
// if handler == nil {
|
||||||
|
// err = fmt.Errorf("不被支持的vendorID:%d", vendorID)
|
||||||
|
// } else {
|
||||||
|
// act := actMap[vendorID]
|
||||||
|
// actStore := actStoreMap[vendorID]
|
||||||
|
// actStoreSku := actStoreSkuMap[vendorID]
|
||||||
|
// // globals.SugarLogger.Debugf("%s", utils.Format4Output(act, false))
|
||||||
|
// // globals.SugarLogger.Debugf("%s", utils.Format4Output(actStore, false))
|
||||||
|
// // globals.SugarLogger.Debugf("%s", utils.Format4Output(actStoreSku, false))
|
||||||
|
// if act != nil && actStore != nil && actStoreSku != nil {
|
||||||
|
// if model.IsSyncStatusNeedCreate(act.SyncStatus) {
|
||||||
|
// err = handler.CreateAct(ctx, task, act, actOrderRules, actStore, actStoreSku)
|
||||||
|
// } else if model.IsSyncStatusNeedUpdate(act.SyncStatus) {
|
||||||
|
// if act.Status == model.ActStatusCanceled {
|
||||||
|
// err = handler.CancelAct(ctx, task, act, actStore, actStoreSku)
|
||||||
|
// } else {
|
||||||
|
// // actStoreMap2Remove, actStoreMap2Add, actStoreMap2Update := splitActStore(actStore)
|
||||||
|
// // err = handler.UpdateAct(ctx, task, act, actOrderRules, actStoreMap2Remove, actStoreMap2Add, actStoreMap2Update, actStoreSku)
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// if err == nil {
|
||||||
|
// actMap := &model.ActMap{}
|
||||||
|
// actMap.ID = act.MapID
|
||||||
|
// dao.UpdateEntityLogically(db, actMap, map[string]interface{}{
|
||||||
|
// model.FieldSyncStatus: 0,
|
||||||
|
// model.FieldVendorActID: act.VendorActID,
|
||||||
|
// }, ctx.GetUserName(), nil)
|
||||||
|
// for _, v := range actStore {
|
||||||
|
// storeMap := model.ActStoreMap{}
|
||||||
|
// storeMap.ID = v.MapID
|
||||||
|
// dao.UpdateEntityLogically(db, storeMap, map[string]interface{}{
|
||||||
|
// model.FieldSyncStatus: 0,
|
||||||
|
// model.FieldVendorActID: v.VendorActID,
|
||||||
|
// }, ctx.GetUserName(), nil)
|
||||||
|
// }
|
||||||
|
// for _, v := range actStoreSku {
|
||||||
|
// storeSkuMap := model.ActStoreSkuMap{}
|
||||||
|
// storeSkuMap.ID = v.MapID
|
||||||
|
// dao.UpdateEntityLogically(db, storeSkuMap, map[string]interface{}{
|
||||||
|
// model.FieldSyncStatus: 0,
|
||||||
|
// model.FieldVendorActID: v.VendorActID,
|
||||||
|
// }, ctx.GetUserName(), nil)
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// return nil, err
|
||||||
|
// }, realVendorIDs)
|
||||||
|
// tasksch.ManageTask(task).Run()
|
||||||
|
// _, err = task.GetResult(0)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func splitActStore(actStore []*model.ActStore2) (actStoreMap2Remove, actStoreMap2Add, actStoreMap2Update []*model.ActStore2) {
|
// func splitActStore(actStore []*model.ActStore2) (actStoreMap2Remove, actStoreMap2Add, actStoreMap2Update []*model.ActStore2) {
|
||||||
for _, v := range actStore {
|
// for _, v := range actStore {
|
||||||
if model.IsSyncStatusNeedDelete(v.SyncStatus) {
|
// if model.IsSyncStatusNeedDelete(v.SyncStatus) {
|
||||||
if !dao.IsVendorThingIDEmpty(v.VendorActID) {
|
// if !dao.IsVendorThingIDEmpty(v.VendorActID) {
|
||||||
actStoreMap2Remove = append(actStoreMap2Remove, v)
|
// actStoreMap2Remove = append(actStoreMap2Remove, v)
|
||||||
}
|
// }
|
||||||
} else if model.IsSyncStatusNeedCreate(v.SyncStatus) {
|
// } else if model.IsSyncStatusNeedCreate(v.SyncStatus) {
|
||||||
actStoreMap2Add = append(actStoreMap2Add, v)
|
// actStoreMap2Add = append(actStoreMap2Add, v)
|
||||||
} else if model.IsSyncStatusNeedUpdate(v.SyncStatus) {
|
// } else if model.IsSyncStatusNeedUpdate(v.SyncStatus) {
|
||||||
actStoreMap2Update = append(actStoreMap2Update, v)
|
// actStoreMap2Update = append(actStoreMap2Update, v)
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
return actStoreMap2Remove, actStoreMap2Add, actStoreMap2Update
|
// return actStoreMap2Remove, actStoreMap2Add, actStoreMap2Update
|
||||||
}
|
// }
|
||||||
|
|||||||
@@ -21,15 +21,15 @@ func init() {
|
|||||||
|
|
||||||
func TestInitDb(t *testing.T) {
|
func TestInitDb(t *testing.T) {
|
||||||
dao.ExecuteSQL(dao.GetDB(), `
|
dao.ExecuteSQL(dao.GetDB(), `
|
||||||
DROP TABLE IF EXISTS act,act_map, act_order_rule, act_store_map, act_store_sku, act_store_sku_map;
|
DROP TABLE IF EXISTS act, act_map, act_order_rule, act_store_sku, act_store_sku_map;
|
||||||
`)
|
`)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestCreateAct(t *testing.T) {
|
func TestCreateAct(t *testing.T) {
|
||||||
actID, err := CreateAct(jxcontext.AdminCtx, &model.Act{
|
actID, err := CreateAct(jxcontext.AdminCtx, &model.Act{
|
||||||
Name: "测试活动2",
|
Name: "测试活动",
|
||||||
PricePercentage: 80,
|
PricePercentage: 80,
|
||||||
}, []int{0, 1, 3}, nil, []*ActStoreSkuParam{
|
}, []int{0}, nil, []*ActStoreSkuParam{
|
||||||
&ActStoreSkuParam{
|
&ActStoreSkuParam{
|
||||||
ActStoreSku: model.ActStoreSku{
|
ActStoreSku: model.ActStoreSku{
|
||||||
StoreID: 100119,
|
StoreID: 100119,
|
||||||
@@ -68,6 +68,70 @@ func TestCancelAct(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestDeleteActStoreBind(t *testing.T) {
|
||||||
|
err := DeleteActStoreBind(jxcontext.AdminCtx, 1, []*ActStoreSkuParam{
|
||||||
|
// &ActStoreSkuParam{
|
||||||
|
// ActStoreSku: model.ActStoreSku{
|
||||||
|
// StoreID: 100119,
|
||||||
|
// SkuID: 30828,
|
||||||
|
// },
|
||||||
|
// },
|
||||||
|
// &ActStoreSkuParam{
|
||||||
|
// ActStoreSku: model.ActStoreSku{
|
||||||
|
// StoreID: 100119,
|
||||||
|
// SkuID: 30827,
|
||||||
|
// },
|
||||||
|
// },
|
||||||
|
&ActStoreSkuParam{
|
||||||
|
ActStoreSku: model.ActStoreSku{
|
||||||
|
StoreID: 100118,
|
||||||
|
SkuID: 30592,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
&ActStoreSkuParam{
|
||||||
|
ActStoreSku: model.ActStoreSku{
|
||||||
|
StoreID: 100118,
|
||||||
|
SkuID: 30565,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestAddActStoreBind(t *testing.T) {
|
||||||
|
err := AddActStoreBind(jxcontext.AdminCtx, 1, []*ActStoreSkuParam{
|
||||||
|
// &ActStoreSkuParam{
|
||||||
|
// ActStoreSku: model.ActStoreSku{
|
||||||
|
// StoreID: 100119,
|
||||||
|
// SkuID: 30828,
|
||||||
|
// },
|
||||||
|
// },
|
||||||
|
// &ActStoreSkuParam{
|
||||||
|
// ActStoreSku: model.ActStoreSku{
|
||||||
|
// StoreID: 100119,
|
||||||
|
// SkuID: 30827,
|
||||||
|
// },
|
||||||
|
// },
|
||||||
|
&ActStoreSkuParam{
|
||||||
|
ActStoreSku: model.ActStoreSku{
|
||||||
|
StoreID: 100118,
|
||||||
|
SkuID: 30592,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
&ActStoreSkuParam{
|
||||||
|
ActStoreSku: model.ActStoreSku{
|
||||||
|
StoreID: 100118,
|
||||||
|
SkuID: 30565,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestSyncAct(t *testing.T) {
|
func TestSyncAct(t *testing.T) {
|
||||||
err := SyncAct(jxcontext.AdminCtx, 1, nil, nil, nil)
|
err := SyncAct(jxcontext.AdminCtx, 1, nil, nil, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -48,6 +48,13 @@ type ActMap struct {
|
|||||||
SyncStatus int `orm:"default(2)" json:"syncStatus"`
|
SyncStatus int `orm:"default(2)" json:"syncStatus"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (*ActMap) TableUnique() [][]string {
|
||||||
|
return [][]string{
|
||||||
|
[]string{"ActID", "VendorID", "DeletedAt"},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 不建表
|
||||||
type Act2 struct {
|
type Act2 struct {
|
||||||
MapID int `orm:"column(map_id)"`
|
MapID int `orm:"column(map_id)"`
|
||||||
|
|
||||||
@@ -66,32 +73,6 @@ type ActOrderRule struct {
|
|||||||
DeductPrice int64 `orm:"" json:"deductPrice"` // 减的价格
|
DeductPrice int64 `orm:"" json:"deductPrice"` // 减的价格
|
||||||
}
|
}
|
||||||
|
|
||||||
// type ActStore struct {
|
|
||||||
// ModelIDCULD
|
|
||||||
|
|
||||||
// ActID int `orm:"column(act_id)" json:"actID"`
|
|
||||||
// StoreID int `orm:"column(store_id)" json:"storeID"`
|
|
||||||
// }
|
|
||||||
|
|
||||||
type ActStoreMap struct {
|
|
||||||
ModelIDCULD
|
|
||||||
|
|
||||||
ActID int `orm:"column(act_id)" json:"actID"`
|
|
||||||
StoreID int `orm:"column(store_id)" json:"storeID"`
|
|
||||||
VendorID int `orm:"column(vendor_id)" json:"vendorID"`
|
|
||||||
|
|
||||||
VendorActID string `orm:"column(vendor_act_id);size(48)" json:"vendorActID"`
|
|
||||||
SyncStatus int `orm:"default(2)" json:"syncStatus"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type ActStore2 struct {
|
|
||||||
MapID int `orm:"column(map_id)"`
|
|
||||||
|
|
||||||
ActStoreMap
|
|
||||||
|
|
||||||
VendorStoreID string `orm:"column(vendor_store_id)" json:"vendorStoreID"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type ActStoreSku struct {
|
type ActStoreSku struct {
|
||||||
ModelIDCULD
|
ModelIDCULD
|
||||||
|
|
||||||
@@ -111,13 +92,14 @@ type ActStoreSku struct {
|
|||||||
|
|
||||||
func (*ActStoreSku) TableUnique() [][]string {
|
func (*ActStoreSku) TableUnique() [][]string {
|
||||||
return [][]string{
|
return [][]string{
|
||||||
[]string{"ActID", "SkuID", "StoreID", "DeletedAt"},
|
[]string{"ActID", "StoreID", "SkuID", "DeletedAt"},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type ActStoreSkuMap struct {
|
type ActStoreSkuMap struct {
|
||||||
ModelIDCULD
|
ModelIDCULD
|
||||||
|
|
||||||
|
BindID int `orm:"column(bind_id)" json:"bindID"`
|
||||||
ActID int `orm:"column(act_id)" json:"actID"`
|
ActID int `orm:"column(act_id)" json:"actID"`
|
||||||
StoreID int `orm:"column(store_id)" json:"storeID"`
|
StoreID int `orm:"column(store_id)" json:"storeID"`
|
||||||
SkuID int `orm:"column(sku_id)" json:"skuID"`
|
SkuID int `orm:"column(sku_id)" json:"skuID"`
|
||||||
@@ -128,6 +110,19 @@ type ActStoreSkuMap struct {
|
|||||||
ActualActPrice int64 `orm:"" json:"actualActPrice"` // 单品级活动用,创建活动时商品的活动价格
|
ActualActPrice int64 `orm:"" json:"actualActPrice"` // 单品级活动用,创建活动时商品的活动价格
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (*ActStoreSkuMap) TableUnique() [][]string {
|
||||||
|
return [][]string{
|
||||||
|
[]string{"ActID", "BindID", "VendorID"},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*ActStoreSkuMap) TableIndex() [][]string {
|
||||||
|
return [][]string{
|
||||||
|
[]string{"ActID", "StoreID", "SkuID", "VendorID", "DeletedAt"},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 不建表
|
||||||
type ActStoreSku2 struct {
|
type ActStoreSku2 struct {
|
||||||
MapID int `orm:"column(map_id)"`
|
MapID int `orm:"column(map_id)"`
|
||||||
|
|
||||||
|
|||||||
@@ -32,38 +32,6 @@ func GetActVendorInfo(db *DaoDB, actID int, vendorIDs []int) (actMap map[int]*mo
|
|||||||
return actMap, err
|
return actMap, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetActStoreVendorInfo(db *DaoDB, actID int, vendorIDs, storeIDs []int) (actStoreMap map[int][]*model.ActStore2, err error) {
|
|
||||||
sql := `
|
|
||||||
SELECT t1.*,
|
|
||||||
t1.id map_id,
|
|
||||||
t2.vendor_store_id
|
|
||||||
FROM act_store_map t1
|
|
||||||
JOIN store_map t2 ON t2.store_id = t1.store_id AND t2.vendor_id = t1.vendor_id AND t2.deleted_at = ?
|
|
||||||
WHERE t1.deleted_at = ? AND t1.act_id = ?
|
|
||||||
`
|
|
||||||
sqlParams := []interface{}{
|
|
||||||
utils.DefaultTimeValue,
|
|
||||||
utils.DefaultTimeValue,
|
|
||||||
actID,
|
|
||||||
}
|
|
||||||
if len(vendorIDs) > 0 {
|
|
||||||
sql += " AND t1.vendor_id IN (" + GenQuestionMarks(len(vendorIDs)) + ")"
|
|
||||||
sqlParams = append(sqlParams, vendorIDs)
|
|
||||||
}
|
|
||||||
if len(storeIDs) > 0 {
|
|
||||||
sql += " AND t1.store_id IN (" + GenQuestionMarks(len(storeIDs)) + ")"
|
|
||||||
sqlParams = append(sqlParams, storeIDs)
|
|
||||||
}
|
|
||||||
var actStoreList []*model.ActStore2
|
|
||||||
if err = GetRows(db, &actStoreList, sql, sqlParams...); err == nil {
|
|
||||||
actStoreMap = make(map[int][]*model.ActStore2)
|
|
||||||
for _, v := range actStoreList {
|
|
||||||
actStoreMap[v.VendorID] = append(actStoreMap[v.VendorID], v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return actStoreMap, err
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetActStoreSkuVendorInfo(db *DaoDB, actID int, vendorIDs, storeIDs, skuIDs []int) (actStoreSkuMap map[int][]*model.ActStoreSku2, err error) {
|
func GetActStoreSkuVendorInfo(db *DaoDB, actID int, vendorIDs, storeIDs, skuIDs []int) (actStoreSkuMap map[int][]*model.ActStoreSku2, err error) {
|
||||||
sql := `
|
sql := `
|
||||||
SELECT t1.*,
|
SELECT t1.*,
|
||||||
@@ -79,15 +47,14 @@ func GetActStoreSkuVendorInfo(db *DaoDB, actID int, vendorIDs, storeIDs, skuIDs
|
|||||||
ELSE
|
ELSE
|
||||||
''
|
''
|
||||||
END vendor_sku_id
|
END vendor_sku_id
|
||||||
FROM act_store_sku t1
|
FROM act_store_sku_map t2
|
||||||
JOIN act_store_sku_map t2 ON t2.act_id = t1.act_id AND t2.sku_id = t1.sku_id AND t2.store_id = t1.store_id AND t2.deleted_at = ?
|
JOIN act_store_sku t1 ON t1.id = t2.bind_id
|
||||||
JOIN store_map t3 ON t3.store_id = t1.store_id AND t3.vendor_id = t2.vendor_id AND t3.deleted_at = ?
|
JOIN store_map t3 ON t3.store_id = t1.store_id AND t3.vendor_id = t2.vendor_id AND t3.deleted_at = ?
|
||||||
JOIN sku t4 ON t4.id = t1.sku_id AND t4.deleted_at = ?
|
JOIN sku t4 ON t4.id = t1.sku_id AND t4.deleted_at = ?
|
||||||
JOIN store_sku_bind t5 ON t5.sku_id = t1.sku_id AND t5.store_id = t1.store_id AND t5.deleted_at = ?
|
JOIN store_sku_bind t5 ON t5.sku_id = t1.sku_id AND t5.store_id = t1.store_id AND t5.deleted_at = ?
|
||||||
WHERE t1.deleted_at = ? AND t1.act_id = ?
|
WHERE t2.deleted_at = ? AND t2.act_id = ?
|
||||||
`
|
`
|
||||||
sqlParams := []interface{}{
|
sqlParams := []interface{}{
|
||||||
utils.DefaultTimeValue,
|
|
||||||
utils.DefaultTimeValue,
|
utils.DefaultTimeValue,
|
||||||
utils.DefaultTimeValue,
|
utils.DefaultTimeValue,
|
||||||
utils.DefaultTimeValue,
|
utils.DefaultTimeValue,
|
||||||
|
|||||||
@@ -11,6 +11,11 @@ import (
|
|||||||
"github.com/astaxie/beego/orm"
|
"github.com/astaxie/beego/orm"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type KVUpdateItem struct {
|
||||||
|
Item interface{}
|
||||||
|
KVs map[string]interface{}
|
||||||
|
}
|
||||||
|
|
||||||
// 这里面的函数要求实体是IDCUDL的,即含有ID, UpdatedAt, LastOperator, DeletedAt字段
|
// 这里面的函数要求实体是IDCUDL的,即含有ID, UpdatedAt, LastOperator, DeletedAt字段
|
||||||
|
|
||||||
func GetEntitiesByKV(db *DaoDB, item interface{}, conditions map[string]interface{}, isIncludeDeleted bool) (err error) {
|
func GetEntitiesByKV(db *DaoDB, item interface{}, conditions map[string]interface{}, isIncludeDeleted bool) (err error) {
|
||||||
@@ -57,6 +62,29 @@ func UpdateEntityByKV(db *DaoDB, item interface{}, kvs map[string]interface{}, c
|
|||||||
return num, err
|
return num, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func BatchUpdateEntityByKV(db *DaoDB, items []*KVUpdateItem) (num int64, err error) {
|
||||||
|
if len(items) > 0 {
|
||||||
|
Begin(db)
|
||||||
|
defer func() {
|
||||||
|
if r := recover(); r != nil || err != nil {
|
||||||
|
Rollback(db)
|
||||||
|
if r != nil {
|
||||||
|
panic(r)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
for _, v := range items {
|
||||||
|
num2, err2 := UpdateEntityByKV(db, v.Item, v.KVs, nil)
|
||||||
|
if err = err2; err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
num += num2
|
||||||
|
}
|
||||||
|
Commit(db)
|
||||||
|
}
|
||||||
|
return num, nil
|
||||||
|
}
|
||||||
|
|
||||||
func UpdateEntityLogically(db *DaoDB, item interface{}, kvs map[string]interface{}, userName string, conditions map[string]interface{}) (num int64, err error) {
|
func UpdateEntityLogically(db *DaoDB, item interface{}, kvs map[string]interface{}, userName string, conditions map[string]interface{}) (num int64, err error) {
|
||||||
if conditions != nil && refutil.IsFieldExist(item, model.FieldDeletedAt) {
|
if conditions != nil && refutil.IsFieldExist(item, model.FieldDeletedAt) {
|
||||||
conditions = utils.MergeMaps(conditions, map[string]interface{}{
|
conditions = utils.MergeMaps(conditions, map[string]interface{}{
|
||||||
|
|||||||
@@ -172,7 +172,7 @@ type IStoreManager interface {
|
|||||||
// 所有非以Sync,Refresh开头的函数不用自己清理sync_status标记(VendorSync统一处理)
|
// 所有非以Sync,Refresh开头的函数不用自己清理sync_status标记(VendorSync统一处理)
|
||||||
|
|
||||||
type IPurchasePlatformHandler interface {
|
type IPurchasePlatformHandler interface {
|
||||||
IPurchasePlatformPromotionHandler
|
IPurchasePlatformActHandler
|
||||||
GetVendorID() int
|
GetVendorID() int
|
||||||
|
|
||||||
GetStatusFromVendorStatus(vendorStatus string) int
|
GetStatusFromVendorStatus(vendorStatus string) int
|
||||||
|
|||||||
@@ -1,26 +1,23 @@
|
|||||||
package partner
|
package partner
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"time"
|
||||||
|
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
|
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||||
)
|
)
|
||||||
|
|
||||||
type IPurchasePlatformPromotionHandler interface {
|
type IPurchasePlatformActHandler interface {
|
||||||
// 如果是单品级活动,actOrderRules为空
|
// // 如果是单品级活动,actOrderRules为空
|
||||||
// 如果是订单级活动,actStoreSku可以为空(表示不限制SKU)
|
// // 如果是订单级活动,actStoreSku可以为空(表示不限制SKU)
|
||||||
CreateAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actOrderRules []*model.ActOrderRule, actStoreMap []*model.ActStore2, actStoreSku []*model.ActStoreSku2) (err error)
|
// CreateAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actOrderRules []*model.ActOrderRule, actStoreSku []*model.ActStoreSku2) (err error)
|
||||||
UpdateAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actOrderRules []*model.ActOrderRule, actStoreMap2Remove, actStoreMap2Add, actStoreMap2Update []*model.ActStore2, actStoreSku []*model.ActStoreSku2) (err error)
|
// UpdateAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actOrderRules []*model.ActOrderRule, actStoreSku []*model.ActStoreSku2) (err error)
|
||||||
// 取消整个京西活动
|
// // 取消整个京西活动
|
||||||
CancelAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actStoreMap []*model.ActStore2, actStoreSku []*model.ActStoreSku2) (err error)
|
// CancelAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actStoreSku []*model.ActStoreSku2) (err error)
|
||||||
}
|
|
||||||
|
|
||||||
func SplitActStore(actStoreList []*model.ActStore2) (actStoreMap map[int]*model.ActStore2) {
|
SyncAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actOrderRules []*model.ActOrderRule, actStoreSkuList []*model.ActStoreSku2) (err error)
|
||||||
actStoreMap = make(map[int]*model.ActStore2)
|
|
||||||
for _, v := range actStoreList {
|
|
||||||
actStoreMap[v.StoreID] = v
|
|
||||||
}
|
|
||||||
return actStoreMap
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func SplitActStoreSku(actStoreSkuList []*model.ActStoreSku2) (actStoreSkuMap map[int][]*model.ActStoreSku2) {
|
func SplitActStoreSku(actStoreSkuList []*model.ActStoreSku2) (actStoreSkuMap map[int][]*model.ActStoreSku2) {
|
||||||
@@ -31,18 +28,56 @@ func SplitActStoreSku(actStoreSkuList []*model.ActStoreSku2) (actStoreSkuMap map
|
|||||||
return actStoreSkuMap
|
return actStoreSkuMap
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func SplitActStoreSku2List(actStoreSkuList []*model.ActStoreSku2) (actStoreSkuListList [][]*model.ActStoreSku2) {
|
||||||
|
actStoreSkuMap := SplitActStoreSku(actStoreSkuList)
|
||||||
|
for _, v := range actStoreSkuMap {
|
||||||
|
actStoreSkuListList = append(actStoreSkuListList, v)
|
||||||
|
}
|
||||||
|
return actStoreSkuListList
|
||||||
|
}
|
||||||
|
|
||||||
func Act2ActMap(act *model.Act2) (actMap *model.ActMap) {
|
func Act2ActMap(act *model.Act2) (actMap *model.ActMap) {
|
||||||
actMap = &model.ActMap{}
|
actMap = &model.ActMap{}
|
||||||
actMap.ID = act.MapID
|
actMap.ID = act.MapID
|
||||||
return actMap
|
return actMap
|
||||||
}
|
}
|
||||||
|
|
||||||
func ActStore2ActStoreMap(actStore *model.ActStore2) (actStoreMap *model.ActStoreMap) {
|
|
||||||
return &actStore.ActStoreMap
|
|
||||||
}
|
|
||||||
|
|
||||||
func ActStoreSku2ActStoreSkuMap(actStoreSku *model.ActStoreSku2) (actStoreSkuMap *model.ActStoreSkuMap) {
|
func ActStoreSku2ActStoreSkuMap(actStoreSku *model.ActStoreSku2) (actStoreSkuMap *model.ActStoreSkuMap) {
|
||||||
actStoreSkuMap = &model.ActStoreSkuMap{}
|
actStoreSkuMap = &model.ActStoreSkuMap{}
|
||||||
actStoreSkuMap.ID = actStoreSku.MapID
|
actStoreSkuMap.ID = actStoreSku.MapID
|
||||||
return actStoreSkuMap
|
return actStoreSkuMap
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Act2Update(act *model.Act2, syncStatus int) (item *dao.KVUpdateItem) {
|
||||||
|
kvs := map[string]interface{}{
|
||||||
|
model.FieldSyncStatus: 0,
|
||||||
|
}
|
||||||
|
if syncStatus == model.SyncFlagDeletedMask {
|
||||||
|
kvs[model.FieldDeletedAt] = time.Now()
|
||||||
|
} else if syncStatus == model.SyncFlagNewMask {
|
||||||
|
kvs[model.FieldVendorActID] = act.VendorActID
|
||||||
|
}
|
||||||
|
item = &dao.KVUpdateItem{
|
||||||
|
Item: Act2ActMap(act),
|
||||||
|
KVs: kvs,
|
||||||
|
}
|
||||||
|
return item
|
||||||
|
}
|
||||||
|
|
||||||
|
func ActStoreSku2Update(actStoreSkuList []*model.ActStoreSku2, syncStatus int) (items []*dao.KVUpdateItem) {
|
||||||
|
for _, v := range actStoreSkuList {
|
||||||
|
kvs := map[string]interface{}{
|
||||||
|
model.FieldSyncStatus: 0,
|
||||||
|
}
|
||||||
|
if syncStatus == model.SyncFlagDeletedMask {
|
||||||
|
kvs[model.FieldDeletedAt] = time.Now()
|
||||||
|
} else if syncStatus == model.SyncFlagNewMask {
|
||||||
|
kvs[model.FieldVendorActID] = v.VendorActID
|
||||||
|
}
|
||||||
|
items = append(items, &dao.KVUpdateItem{
|
||||||
|
Item: ActStoreSku2ActStoreSkuMap(v),
|
||||||
|
KVs: kvs,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return items
|
||||||
|
}
|
||||||
|
|||||||
@@ -102,16 +102,20 @@ func ActivitySkuUpdateBatch(activityID int64, actSkuInfoList []*ebaiapi.Activity
|
|||||||
return api.EbaiAPI.ActivitySkuUpdateBatch(activityID, actSkuInfoList)
|
return api.EbaiAPI.ActivitySkuUpdateBatch(activityID, actSkuInfoList)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PurchaseHandler) CreateAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actOrderRules []*model.ActOrderRule, actStoreMap []*model.ActStore2, actStoreSku []*model.ActStoreSku2) (err error) {
|
func (c *PurchaseHandler) CreateAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actOrderRules []*model.ActOrderRule, actStoreSku []*model.ActStoreSku2) (err error) {
|
||||||
activity := act2EbaiActivity(act, actOrderRules)
|
activity := act2EbaiActivity(act, actOrderRules)
|
||||||
if act.Type < model.ActOrderBegin {
|
if act.Type < model.ActOrderBegin {
|
||||||
actStoreSkuMap := partner.SplitActStoreSku(actStoreSku)
|
actStoreSkuListList := partner.SplitActStoreSku2List(actStoreSku)
|
||||||
task := tasksch.NewParallelTask("ebai CreateAct", nil, ctx,
|
task := tasksch.NewParallelTask("ebai CreateAct", nil, ctx,
|
||||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
store := batchItemList[0].(*model.ActStore2)
|
list := batchItemList[0].([]*model.ActStoreSku2)
|
||||||
store.VendorActID, err = createOneShopAct(utils.Int2Str(store.StoreID), activity, actStoreSkuMap[store.StoreID])
|
var vendorActID string
|
||||||
|
vendorActID, err = createOneShopAct(utils.Int2Str(list[0].StoreID), activity, list)
|
||||||
|
for _, v := range list {
|
||||||
|
v.VendorActID = vendorActID
|
||||||
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
}, actStoreMap)
|
}, actStoreSkuListList)
|
||||||
tasksch.HandleTask(task, parentTask, true).Run()
|
tasksch.HandleTask(task, parentTask, true).Run()
|
||||||
_, err = task.GetResult(0)
|
_, err = task.GetResult(0)
|
||||||
} else {
|
} else {
|
||||||
@@ -120,67 +124,55 @@ func (c *PurchaseHandler) CreateAct(ctx *jxcontext.Context, parentTask tasksch.I
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PurchaseHandler) UpdateAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actOrderRules []*model.ActOrderRule, actStoreMap2Remove, actStoreMap2Add, actStoreMap2Update []*model.ActStore2, actStoreSku []*model.ActStoreSku2) (err error) {
|
func (c *PurchaseHandler) UpdateAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actOrderRules []*model.ActOrderRule, actStoreSku []*model.ActStoreSku2) (err error) {
|
||||||
if act.Type < model.ActOrderBegin {
|
// if act.Type < model.ActOrderBegin {
|
||||||
actStoreSkuMap := partner.SplitActStoreSku(actStoreSku)
|
// actStoreSkuMap := partner.SplitActStoreSku(actStoreSku)
|
||||||
if len(actStoreMap2Remove) > 0 {
|
// task := tasksch.NewParallelTask("ebai UpdateAct", nil, ctx,
|
||||||
if err = c.CancelAct(ctx, parentTask, act, actStoreMap2Remove, nil); err != nil {
|
// func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
return err
|
// v := batchItemList[0].(*model.ActStore2)
|
||||||
}
|
// if storeSkus := actStoreSkuMap[v.StoreID]; storeSkus != nil {
|
||||||
for _, v := range actStoreMap2Remove {
|
// if list := actStoreSu2Ebai4Delete(storeSkus); len(list) > 0 {
|
||||||
delete(actStoreSkuMap, v.StoreID)
|
// if _, err = ActivitySkuDeleteBatch(utils.Str2Int64(v.VendorActID), utils.Int2Str(v.StoreID), 0, list, false); err != nil {
|
||||||
}
|
// return nil, err
|
||||||
}
|
// }
|
||||||
if len(actStoreMap2Add) > 0 {
|
// }
|
||||||
if err = c.CreateAct(ctx, parentTask, act, actOrderRules, actStoreMap2Add, actStoreSku); err != nil {
|
// if list := actStoreSu2Ebai4Add(storeSkus); len(list) > 0 {
|
||||||
return err
|
// if _, err = ActivitySkuAddBatch(utils.Str2Int64(v.VendorActID), utils.Int2Str(v.StoreID), 0, actType2Ebai(act.Type), list, false); err != nil {
|
||||||
}
|
// return nil, err
|
||||||
for _, v := range actStoreMap2Add {
|
// }
|
||||||
delete(actStoreSkuMap, v.StoreID)
|
// }
|
||||||
}
|
// if list := actStoreSu2Ebai4Update(storeSkus); len(list) > 0 {
|
||||||
}
|
// if _, err = ActivitySkuUpdateBatch(utils.Str2Int64(v.VendorActID), list); err != nil {
|
||||||
task := tasksch.NewParallelTask("ebai UpdateAct", nil, ctx,
|
// return nil, err
|
||||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
// }
|
||||||
v := batchItemList[0].(*model.ActStore2)
|
// }
|
||||||
if storeSkus := actStoreSkuMap[v.StoreID]; storeSkus != nil {
|
// }
|
||||||
if list := actStoreSu2Ebai4Delete(storeSkus); len(list) > 0 {
|
// return nil, err
|
||||||
if _, err = ActivitySkuDeleteBatch(utils.Str2Int64(v.VendorActID), utils.Int2Str(v.StoreID), 0, list, false); err != nil {
|
// }, actStoreMap2Update)
|
||||||
return nil, err
|
// tasksch.HandleTask(task, parentTask, true).Run()
|
||||||
}
|
// _, err = task.GetResult(0)
|
||||||
}
|
// } else {
|
||||||
if list := actStoreSu2Ebai4Add(storeSkus); len(list) > 0 {
|
|
||||||
if _, err = ActivitySkuAddBatch(utils.Str2Int64(v.VendorActID), utils.Int2Str(v.StoreID), 0, actType2Ebai(act.Type), list, false); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if list := actStoreSu2Ebai4Update(storeSkus); len(list) > 0 {
|
|
||||||
if _, err = ActivitySkuUpdateBatch(utils.Str2Int64(v.VendorActID), list); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil, err
|
|
||||||
}, actStoreMap2Update)
|
|
||||||
tasksch.HandleTask(task, parentTask, true).Run()
|
|
||||||
_, err = task.GetResult(0)
|
|
||||||
} else {
|
|
||||||
|
|
||||||
}
|
// }
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PurchaseHandler) CancelAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actStoreMap []*model.ActStore2, actStoreSku []*model.ActStoreSku2) (err error) {
|
func (c *PurchaseHandler) CancelAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actStoreSku []*model.ActStoreSku2) (err error) {
|
||||||
if act.Type < model.ActOrderBegin {
|
// if act.Type < model.ActOrderBegin {
|
||||||
task := tasksch.NewParallelTask("ebai DeleteAct", nil, ctx,
|
// task := tasksch.NewParallelTask("ebai DeleteAct", nil, ctx,
|
||||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
// func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
v := batchItemList[0].(*model.ActStore2)
|
// v := batchItemList[0].(*model.ActStore2)
|
||||||
if globals.EnableEbaiStoreWrite {
|
// if globals.EnableEbaiStoreWrite {
|
||||||
err = api.EbaiAPI.ActivityDisable(utils.Str2Int64(v.VendorActID), utils.Int2Str(v.StoreID), 0, 0)
|
// err = api.EbaiAPI.ActivityDisable(utils.Str2Int64(v.VendorActID), utils.Int2Str(v.StoreID), 0, 0)
|
||||||
}
|
// }
|
||||||
return nil, err
|
// return nil, err
|
||||||
}, actStoreMap)
|
// }, actStoreMap)
|
||||||
tasksch.HandleTask(task, parentTask, true).Run()
|
// tasksch.HandleTask(task, parentTask, true).Run()
|
||||||
_, err = task.GetResult(0)
|
// _, err = task.GetResult(0)
|
||||||
}
|
// }
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *PurchaseHandler) SyncAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actOrderRules []*model.ActOrderRule, actStoreSkuList []*model.ActStoreSku2) (err error) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -6,14 +6,6 @@ import (
|
|||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (c *PurchaseHandler) CreateAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actOrderRules []*model.ActOrderRule, actStoreMap []*model.ActStore2, actStoreSku []*model.ActStoreSku2) (err error) {
|
func (c *PurchaseHandler) SyncAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actOrderRules []*model.ActOrderRule, actStoreSkuList []*model.ActStoreSku2) (err error) {
|
||||||
return err
|
return nil
|
||||||
}
|
|
||||||
|
|
||||||
func (c *PurchaseHandler) UpdateAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actOrderRules []*model.ActOrderRule, actStoreMap2Remove, actStoreMap2Add, actStoreMap2Update []*model.ActStore2, actStoreSku []*model.ActStoreSku2) (err error) {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *PurchaseHandler) CancelAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actStoreMap []*model.ActStore2, actStoreSku []*model.ActStoreSku2) (err error) {
|
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package jd
|
|||||||
import (
|
import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||||
"git.rosy.net.cn/jx-callback/business/partner"
|
"git.rosy.net.cn/jx-callback/business/partner"
|
||||||
|
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||||
@@ -132,7 +133,7 @@ func storeSku2Jd(actStoreSku []*model.ActStoreSku2, handler func(syncStatus int)
|
|||||||
return jdActStoreSku
|
return jdActStoreSku
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PurchaseHandler) CreateAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actOrderRules []*model.ActOrderRule, actStoreMap []*model.ActStore2, actStoreSku []*model.ActStoreSku2) (err error) {
|
func (c *PurchaseHandler) CreateAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actOrderRules []*model.ActOrderRule, actStoreSku []*model.ActStoreSku2) (err error) {
|
||||||
if act.Type < model.ActOrderBegin {
|
if act.Type < model.ActOrderBegin {
|
||||||
act.VendorActID, err = createSkuAct(ctx, act, actStoreSku)
|
act.VendorActID, err = createSkuAct(ctx, act, actStoreSku)
|
||||||
} else {
|
} else {
|
||||||
@@ -152,7 +153,11 @@ func createSkuAct(ctx *jxcontext.Context, act *model.Act2, actStoreSku []*model.
|
|||||||
vendorActID = utils.Int64ToStr(infoID)
|
vendorActID = utils.Int64ToStr(infoID)
|
||||||
if err = CreatePromotionRules(act.Type, infoID, "", act.LimitDevice, act.LimitPin, act.LimitCount, act.LimitDaily, traceID); err == nil {
|
if err = CreatePromotionRules(act.Type, infoID, "", act.LimitDevice, act.LimitPin, act.LimitCount, act.LimitDaily, traceID); err == nil {
|
||||||
if _, err = CreatePromotionSku(act.Type, infoID, "", storeSku2Jd(actStoreSku, model.IsSyncStatusNeedCreate), traceID); err == nil {
|
if _, err = CreatePromotionSku(act.Type, infoID, "", storeSku2Jd(actStoreSku, model.IsSyncStatusNeedCreate), traceID); err == nil {
|
||||||
err = ConfirmPromotion(act.Type, infoID, "", traceID)
|
if err = ConfirmPromotion(act.Type, infoID, "", traceID); err == nil {
|
||||||
|
for _, v := range actStoreSku {
|
||||||
|
v.VendorActID = vendorActID
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -166,114 +171,93 @@ func cancelSkuActSkus(ctx *jxcontext.Context, actType int, vendorActID string, a
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PurchaseHandler) UpdateAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actOrderRules []*model.ActOrderRule, actStoreMap2Remove, actStoreMap2Add, actStoreMap2Update []*model.ActStore2, actStoreSku []*model.ActStoreSku2) (err error) {
|
func cancelSkuAct(ctx *jxcontext.Context, actType int, vendorActID string) (err error) {
|
||||||
|
err = CancelPromotion(actType, utils.Str2Int64(vendorActID), "", getTraceID(ctx))
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PurchaseHandler) CancelAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actStoreMap []*model.ActStore2, actStoreSku []*model.ActStoreSku2) (err error) {
|
func (c *PurchaseHandler) UpdateAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actOrderRules []*model.ActOrderRule, actStoreSku []*model.ActStoreSku2) (err error) {
|
||||||
traceID := getTraceID(ctx)
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *PurchaseHandler) CancelAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actStoreSku []*model.ActStoreSku2) (err error) {
|
||||||
if act.Type < model.ActOrderBegin {
|
if act.Type < model.ActOrderBegin {
|
||||||
outInfoID := utils.Int2Str(act.ID)
|
outInfoID := utils.Int2Str(act.ID)
|
||||||
err = CancelPromotion(act.Type, 0, outInfoID, traceID)
|
err = CancelPromotion(act.Type, 0, outInfoID, getTraceID(ctx))
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PurchaseHandler) SyncAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actStoreList []*model.ActStore2, actStoreSkuList []*model.ActStoreSku2) (err error) {
|
func (c *PurchaseHandler) SyncAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actOrderRules []*model.ActOrderRule, actStoreSkuList []*model.ActStoreSku2) (err error) {
|
||||||
traceID := getTraceID(ctx)
|
globals.SugarLogger.Debugf("jd SyncAct, actID:%d", act.ID)
|
||||||
|
vendorActInfoMap := make(map[string][]*model.ActStoreSku2)
|
||||||
|
deleteActInfoMap := make(map[string][]*model.ActStoreSku2)
|
||||||
|
var actStoreSkuList4Create []*model.ActStoreSku2
|
||||||
|
var updateItems []*dao.KVUpdateItem
|
||||||
|
|
||||||
actStoreMap := partner.SplitActStore(actStoreList)
|
|
||||||
actStoreSkuMap := partner.SplitActStoreSku(actStoreSkuList)
|
actStoreSkuMap := partner.SplitActStoreSku(actStoreSkuList)
|
||||||
var actStoreSkuList4Create, actStoreSkuList4Delete []*model.ActStoreSku2
|
for storeID := range actStoreSkuMap {
|
||||||
var okList []*LogicUpdateInfo
|
for _, actStoreSku := range actStoreSkuMap[storeID] {
|
||||||
for _, actStore := range actStoreMap {
|
vendorActInfoMap[actStoreSku.VendorActID] = append(vendorActInfoMap[actStoreSku.VendorActID], actStoreSku)
|
||||||
for _, actStoreSku := range actStoreSkuMap[actStore.StoreID] {
|
|
||||||
if model.IsSyncStatusNeedCreate(actStoreSku.SyncStatus) {
|
if model.IsSyncStatusNeedCreate(actStoreSku.SyncStatus) {
|
||||||
if actStore.VendorActID == "" {
|
actStoreSkuList4Create = append(actStoreSkuList4Create, actStoreSku)
|
||||||
actStoreSkuList4Create = append(actStoreSkuList4Create, actStoreSku)
|
|
||||||
} else {
|
|
||||||
if actStoreSku.VendorActID, err = createSkuAct(ctx, act, []*model.ActStoreSku2{actStoreSku}); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
okList = append(okList, &LogicUpdateInfo{
|
|
||||||
Item: partner.ActStoreSku2ActStoreSkuMap(actStoreSku),
|
|
||||||
KVs: map[string]interface{}{
|
|
||||||
model.FieldSyncStatus: 0,
|
|
||||||
model.FieldVendorActID: actStoreSku.VendorActID,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
}
|
|
||||||
} else if model.IsSyncStatusNeedDelete(actStoreSku.SyncStatus) {
|
} else if model.IsSyncStatusNeedDelete(actStoreSku.SyncStatus) {
|
||||||
if actStoreSku.VendorActID == "" {
|
vendorActID := actStoreSku.VendorActID
|
||||||
actStoreSkuList4Delete = append(actStoreSkuList4Delete, actStoreSku)
|
if vendorActID == "" {
|
||||||
} else {
|
vendorActID = act.VendorActID
|
||||||
if err = CancelPromotion(act.Type, utils.Str2Int64(actStoreSku.VendorActID), "", traceID); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
okList = append(okList, &LogicUpdateInfo{
|
|
||||||
Item: partner.ActStoreSku2ActStoreSkuMap(actStoreSku),
|
|
||||||
KVs: map[string]interface{}{
|
|
||||||
model.FieldSyncStatus: 0,
|
|
||||||
model.FieldDeletedAt: time.Now(),
|
|
||||||
},
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}
|
deleteActInfoMap[vendorActID] = append(deleteActInfoMap[vendorActID], actStoreSku)
|
||||||
}
|
|
||||||
if actStore.VendorActID != "" {
|
|
||||||
if model.IsSyncStatusDelete(actStore.SyncStatus) {
|
|
||||||
if err = CancelPromotion(act.Type, utils.Str2Int64(actStore.VendorActID), "", traceID); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
okList = append(okList, &LogicUpdateInfo{
|
|
||||||
Item: partner.ActStore2ActStoreMap(actStore),
|
|
||||||
KVs: map[string]interface{}{
|
|
||||||
model.FieldSyncStatus: 0,
|
|
||||||
model.FieldDeletedAt: time.Now(),
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
} else if len(actStoreSkuList4Delete) > 0 {
|
|
||||||
if err = cancelSkuActSkus(ctx, act.Type, actStore.VendorActID, actStoreSkuList4Delete); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for _, v := range actStoreSkuList4Delete {
|
|
||||||
okList = append(okList, &LogicUpdateInfo{
|
|
||||||
Item: partner.ActStoreSku2ActStoreSkuMap(v),
|
|
||||||
KVs: map[string]interface{}{
|
|
||||||
model.FieldSyncStatus: 0,
|
|
||||||
model.FieldDeletedAt: time.Now(),
|
|
||||||
},
|
|
||||||
})
|
|
||||||
}
|
|
||||||
actStoreSkuList4Delete = nil
|
|
||||||
}
|
|
||||||
|
|
||||||
if act.VendorActID != "" {
|
|
||||||
if len(actStoreSkuList4Create) > 0 {
|
|
||||||
if actStore.VendorActID, err = createSkuAct(ctx, act, actStoreSkuList4Create); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
okList = append(okList, &LogicUpdateInfo{
|
|
||||||
Item: partner.ActStore2ActStoreMap(actStore),
|
|
||||||
KVs: map[string]interface{}{
|
|
||||||
model.FieldSyncStatus: 0,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
for _, v := range actStoreSkuList4Create {
|
|
||||||
okList = append(okList, &LogicUpdateInfo{
|
|
||||||
Item: partner.ActStoreSku2ActStoreSkuMap(v),
|
|
||||||
KVs: map[string]interface{}{
|
|
||||||
model.FieldSyncStatus: 0,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
}
|
|
||||||
actStoreSkuList4Create = nil
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// db := dao.GetDB()
|
err = func() (err error) {
|
||||||
|
if model.IsSyncStatusNeedCreate(act.SyncStatus) {
|
||||||
|
if act.VendorActID, err = createSkuAct(ctx, act, actStoreSkuList4Create); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
updateItems = append(updateItems, partner.ActStoreSku2Update(actStoreSkuList4Create, model.SyncFlagNewMask)...)
|
||||||
|
updateItems = append(updateItems, partner.Act2Update(act, model.SyncFlagNewMask))
|
||||||
|
} else if model.IsSyncStatusNeedDelete(act.SyncStatus) {
|
||||||
|
for vendorActID := range vendorActInfoMap {
|
||||||
|
if vendorActID != "" {
|
||||||
|
if err = cancelSkuAct(ctx, act.Type, vendorActID); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for _, actStoreSkuList := range vendorActInfoMap {
|
||||||
|
updateItems = append(updateItems, partner.ActStoreSku2Update(actStoreSkuList, model.SyncFlagDeletedMask)...)
|
||||||
|
}
|
||||||
|
updateItems = append(updateItems, partner.Act2Update(act, model.SyncFlagDeletedMask))
|
||||||
|
} else if model.IsSyncStatusNeedUpdate(act.SyncStatus) {
|
||||||
|
// globals.SugarLogger.Debug(utils.Format4Output(updateItems, false))
|
||||||
|
for vendorActID := range deleteActInfoMap {
|
||||||
|
if vendorActID != "" {
|
||||||
|
if len(vendorActInfoMap[vendorActID]) == len(deleteActInfoMap[vendorActID]) {
|
||||||
|
err = cancelSkuAct(ctx, act.Type, vendorActID)
|
||||||
|
} else {
|
||||||
|
err = cancelSkuActSkus(ctx, act.Type, vendorActID, deleteActInfoMap[vendorActID])
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
updateItems = append(updateItems, partner.ActStoreSku2Update(deleteActInfoMap[vendorActID], model.SyncFlagDeletedMask)...)
|
||||||
|
}
|
||||||
|
if len(actStoreSkuList4Create) > 0 {
|
||||||
|
if _, err = createSkuAct(ctx, act, actStoreSkuList4Create); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
updateItems = append(updateItems, partner.ActStoreSku2Update(actStoreSkuList4Create, model.SyncFlagNewMask)...)
|
||||||
|
}
|
||||||
|
updateItems = append(updateItems, partner.Act2Update(act, model.SyncFlagModifiedMask))
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}()
|
||||||
|
db := dao.GetDB()
|
||||||
|
_, err2 := dao.BatchUpdateEntityByKV(db, updateItems)
|
||||||
|
if err == nil {
|
||||||
|
err = err2
|
||||||
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import (
|
|||||||
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
|
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
"git.rosy.net.cn/jx-callback/business/partner"
|
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
"git.rosy.net.cn/jx-callback/globals/api"
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
)
|
)
|
||||||
@@ -60,11 +59,11 @@ func isCreateOrUpdate(syncStatus int) bool {
|
|||||||
return model.IsSyncStatusNeedCreate(syncStatus) || model.IsSyncStatusNeedUpdate(syncStatus)
|
return model.IsSyncStatusNeedCreate(syncStatus) || model.IsSyncStatusNeedUpdate(syncStatus)
|
||||||
}
|
}
|
||||||
|
|
||||||
func createOneShopAct(act *model.Act2, storeMap *model.ActStore2, actStoreSku []*model.ActStoreSku2) (err error) {
|
func createOneShopAct(act *model.Act2, vendorStoreID string, actStoreSku []*model.ActStoreSku2) (err error) {
|
||||||
actData := storeSku2ActData(act, actStoreSku, isCreateOrUpdate)
|
actData := storeSku2ActData(act, actStoreSku, isCreateOrUpdate)
|
||||||
if len(actData) > 0 {
|
if len(actData) > 0 {
|
||||||
if globals.EnableMtwmStoreWrite {
|
if globals.EnableMtwmStoreWrite {
|
||||||
actResult, err2 := api.MtwmAPI.RetailDiscountBatchSave(storeMap.VendorStoreID, actData)
|
actResult, err2 := api.MtwmAPI.RetailDiscountBatchSave(vendorStoreID, actData)
|
||||||
if err = err2; err != nil {
|
if err = err2; err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -86,84 +85,13 @@ func createOneShopAct(act *model.Act2, storeMap *model.ActStore2, actStoreSku []
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PurchaseHandler) CreateAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actOrderRules []*model.ActOrderRule, actStoreMap []*model.ActStore2, actStoreSku []*model.ActStoreSku2) (err error) {
|
func cancelOneShopAct(ctx *jxcontext.Context, vendorStoreID string, actStoreSku []*model.ActStoreSku2) (err error) {
|
||||||
globals.SugarLogger.Debugf("mtwm CreateAct actID:%d", act.ID)
|
if list := storeSku2ActData4Delete(actStoreSku, model.IsSyncStatusNeedDelete); len(list) > 0 {
|
||||||
if act.Type < model.ActOrderBegin {
|
err = api.MtwmAPI.RetailDiscountDelete(vendorStoreID, list)
|
||||||
actStoreSkuMap := partner.SplitActStoreSku(actStoreSku)
|
|
||||||
task := tasksch.NewParallelTask("mtwm CreateAct", nil, ctx,
|
|
||||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
|
||||||
store := batchItemList[0].(*model.ActStore2)
|
|
||||||
err = createOneShopAct(act, store, actStoreSkuMap[store.StoreID])
|
|
||||||
return nil, err
|
|
||||||
}, actStoreMap)
|
|
||||||
tasksch.HandleTask(task, parentTask, true).Run()
|
|
||||||
_, err = task.GetResult(0)
|
|
||||||
} else {
|
|
||||||
|
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PurchaseHandler) UpdateAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actOrderRules []*model.ActOrderRule, actStoreMap2Remove, actStoreMap2Add, actStoreMap2Update []*model.ActStore2, actStoreSku []*model.ActStoreSku2) (err error) {
|
func (c *PurchaseHandler) SyncAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actOrderRules []*model.ActOrderRule, actStoreSkuList []*model.ActStoreSku2) (err error) {
|
||||||
if act.Type < model.ActOrderBegin {
|
return nil
|
||||||
actStoreSkuMap := partner.SplitActStoreSku(actStoreSku)
|
|
||||||
if len(actStoreMap2Remove) > 0 {
|
|
||||||
if err = c.CancelAct(ctx, parentTask, act, actStoreMap2Remove, nil); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
for _, v := range actStoreMap2Remove {
|
|
||||||
delete(actStoreSkuMap, v.StoreID)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if len(actStoreMap2Add) > 0 {
|
|
||||||
if err = c.CreateAct(ctx, parentTask, act, actOrderRules, actStoreMap2Add, actStoreSku); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
for _, v := range actStoreMap2Add {
|
|
||||||
delete(actStoreSkuMap, v.StoreID)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
task := tasksch.NewParallelTask("mtwm UpdateAct", nil, ctx,
|
|
||||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
|
||||||
v := batchItemList[0].(*model.ActStore2)
|
|
||||||
if storeSkus := actStoreSkuMap[v.StoreID]; storeSkus != nil {
|
|
||||||
if list := storeSku2ActData4Delete(storeSkus, model.IsSyncStatusNeedDelete); len(list) > 0 {
|
|
||||||
if err = api.MtwmAPI.RetailDiscountDelete(v.VendorStoreID, list); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if err = createOneShopAct(act, v, actStoreSkuMap[v.StoreID]); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil, err
|
|
||||||
}, actStoreMap2Update)
|
|
||||||
tasksch.HandleTask(task, parentTask, true).Run()
|
|
||||||
_, err = task.GetResult(0)
|
|
||||||
} else {
|
|
||||||
|
|
||||||
}
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *PurchaseHandler) CancelAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actStoreMap []*model.ActStore2, actStoreSku []*model.ActStoreSku2) (err error) {
|
|
||||||
if act.Type < model.ActOrderBegin {
|
|
||||||
actStoreSkuMap := partner.SplitActStoreSku(actStoreSku)
|
|
||||||
task := tasksch.NewParallelTask("mtwm DeleteAct", nil, ctx,
|
|
||||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
|
||||||
v := batchItemList[0].(*model.ActStore2)
|
|
||||||
actIDList := storeSku2ActData4Delete(actStoreSkuMap[v.StoreID], nil)
|
|
||||||
if len(actIDList) > 0 {
|
|
||||||
if globals.EnableMtwmStoreWrite {
|
|
||||||
err = api.MtwmAPI.RetailDiscountDelete(v.VendorStoreID, actIDList)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil, err
|
|
||||||
}, actStoreMap)
|
|
||||||
tasksch.HandleTask(task, parentTask, true).Run()
|
|
||||||
_, err = task.GetResult(0)
|
|
||||||
} else {
|
|
||||||
|
|
||||||
}
|
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,14 +6,6 @@ import (
|
|||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (c *PurchaseHandler) CreateAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actOrderRules []*model.ActOrderRule, actStoreMap []*model.ActStore2, actStoreSku []*model.ActStoreSku2) (err error) {
|
func (c *PurchaseHandler) SyncAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actOrderRules []*model.ActOrderRule, actStoreSkuList []*model.ActStoreSku2) (err error) {
|
||||||
return err
|
return nil
|
||||||
}
|
|
||||||
|
|
||||||
func (c *PurchaseHandler) UpdateAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actOrderRules []*model.ActOrderRule, actStoreMap2Remove, actStoreMap2Add, actStoreMap2Update []*model.ActStore2, actStoreSku []*model.ActStoreSku2) (err error) {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *PurchaseHandler) CancelAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actStoreMap []*model.ActStore2, actStoreSku []*model.ActStoreSku2) (err error) {
|
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ func Init() {
|
|||||||
// 如下语句建表时要出错(INDEX名字太长了),暂时放一下,必须放最后一句
|
// 如下语句建表时要出错(INDEX名字太长了),暂时放一下,必须放最后一句
|
||||||
orm.RegisterModel(&model.OrderFinancial{}, &model.AfsOrder{}, &model.OrderDiscountFinancial{}, &model.OrderSkuFinancial{})
|
orm.RegisterModel(&model.OrderFinancial{}, &model.AfsOrder{}, &model.OrderDiscountFinancial{}, &model.OrderSkuFinancial{})
|
||||||
// orm.RegisterModel(&model.Act{}, &model.ActOrderRule{}, &model.ActStoreSku{})
|
// orm.RegisterModel(&model.Act{}, &model.ActOrderRule{}, &model.ActStoreSku{})
|
||||||
// orm.RegisterModel(&model.ActMap{}, &model.ActStoreMap{}, &model.ActStoreSkuMap{})
|
// orm.RegisterModel(&model.ActMap{}, &model.ActStoreSkuMap{})
|
||||||
// create table
|
// create table
|
||||||
orm.RunSyncdb("default", false, true)
|
orm.RunSyncdb("default", false, true)
|
||||||
}
|
}
|
||||||
|
|||||||
1
main.go
1
main.go
@@ -20,6 +20,7 @@ import (
|
|||||||
"git.rosy.net.cn/jx-callback/globals/beegodb"
|
"git.rosy.net.cn/jx-callback/globals/beegodb"
|
||||||
_ "git.rosy.net.cn/jx-callback/routers"
|
_ "git.rosy.net.cn/jx-callback/routers"
|
||||||
|
|
||||||
|
// _ "git.rosy.net.cn/jx-callback/business/jxstore/act"
|
||||||
_ "git.rosy.net.cn/jx-callback/business/partner/printer/feie"
|
_ "git.rosy.net.cn/jx-callback/business/partner/printer/feie"
|
||||||
_ "git.rosy.net.cn/jx-callback/business/partner/printer/xiaowm"
|
_ "git.rosy.net.cn/jx-callback/business/partner/printer/xiaowm"
|
||||||
_ "git.rosy.net.cn/jx-callback/business/partner/printer/yilianyun"
|
_ "git.rosy.net.cn/jx-callback/business/partner/printer/yilianyun"
|
||||||
|
|||||||
Reference in New Issue
Block a user