冲突处理
This commit is contained in:
@@ -630,7 +630,7 @@ func (c *OrderManager) RefreshHistoryOrdersEarningPrice(ctx *jxcontext.Context,
|
||||
if fromDate != "" && toDate != "" {
|
||||
fromDateParam = utils.Str2Time(fromDate)
|
||||
toDateParam = utils.Str2Time(toDate)
|
||||
actList, _ := dao.QueryActs(db, actID, 0, math.MaxInt32, 0, "", -1, nil, nil, nil, 0, 0, 0, utils.DefaultTimeValue, utils.DefaultTimeValue, utils.DefaultTimeValue, utils.DefaultTimeValue)
|
||||
actList, _ := dao.QueryActs(db, actID, 0, math.MaxInt32, 0, "", -1, nil, nil, nil, 0, nil, 0, utils.DefaultTimeValue, utils.DefaultTimeValue, utils.DefaultTimeValue, utils.DefaultTimeValue)
|
||||
if len(actList.Data) > 0 {
|
||||
actBeginAt := actList.Data[0].BeginAt
|
||||
actEndAt := actList.Data[0].EndAt
|
||||
@@ -660,7 +660,7 @@ func (c *OrderManager) RefreshHistoryOrdersEarningPrice(ctx *jxcontext.Context,
|
||||
return "", model.ErrCodeGeneralFailed, errors.New(fmt.Sprintf("未查询到相关结算活动,活动ID:[%d]", actID))
|
||||
}
|
||||
} else if fromDate == "" && toDate == "" {
|
||||
actList, _ := dao.QueryActs(db, actID, 0, math.MaxInt32, 0, "", -1, nil, nil, nil, 0, 0, 0, utils.DefaultTimeValue, utils.DefaultTimeValue, utils.DefaultTimeValue, utils.DefaultTimeValue)
|
||||
actList, _ := dao.QueryActs(db, actID, 0, math.MaxInt32, 0, "", -1, nil, nil, nil, 0, nil, 0, utils.DefaultTimeValue, utils.DefaultTimeValue, utils.DefaultTimeValue, utils.DefaultTimeValue)
|
||||
if len(actList.Data) > 0 {
|
||||
orderList, _ = dao.QueryOrders(db, vendorOrderID, actID, vendorIDs, storeID, actList.Data[0].BeginAt, actList.Data[0].EndAt)
|
||||
} else {
|
||||
|
||||
@@ -685,7 +685,11 @@ func (a *ActManager) IsVendorActExist(ctx *jxcontext.Context, vendorActID string
|
||||
}
|
||||
|
||||
func QueryActs(ctx *jxcontext.Context, actID int, offset, pageSize int, syncStatus int, keyword string, vendorID int, statusList, actTypeList, createTypeList []int, storeID, skuID, cityCode int, beginAt, endAt, createdAtFrom, createdAtTo time.Time) (pagedInfo *dao.PagedActListInfo, err error) {
|
||||
return dao.QueryActs(dao.GetDB(), actID, offset, pageSize, syncStatus, keyword, vendorID, statusList, actTypeList, createTypeList, storeID, skuID, cityCode, beginAt, endAt, createdAtFrom, createdAtTo)
|
||||
var skuIDs []int
|
||||
if skuID > 0 {
|
||||
skuIDs = []int{skuID}
|
||||
}
|
||||
return dao.QueryActs(dao.GetDB(), actID, offset, pageSize, syncStatus, keyword, vendorID, statusList, actTypeList, createTypeList, storeID, skuIDs, cityCode, beginAt, endAt, createdAtFrom, createdAtTo)
|
||||
}
|
||||
|
||||
func GetActStoreSkuInfo(ctx *jxcontext.Context, actID int, vendorIDs []int, keyword string, offset, pageSize int) (retVal interface{}, err error) {
|
||||
@@ -889,7 +893,7 @@ func RefreshPageActs(ctx *jxcontext.Context, vendorIDs []int, createdFrom time.T
|
||||
return nil, err
|
||||
}
|
||||
// actInfo, err2 := dao.QueryActs(db, 0, 0, -1, -1, "", vendorID, nil, []int{model.ActCreateTypeSpider},
|
||||
// nil, 0, 0, 0, utils.DefaultTimeValue, utils.DefaultTimeValue, createdFrom, utils.DefaultTimeValue)
|
||||
// nil, 0, nil, 0, utils.DefaultTimeValue, utils.DefaultTimeValue, createdFrom, utils.DefaultTimeValue)
|
||||
vendorActIDs, err2 := dao.GetExistVendorActIDs(db, vendorID)
|
||||
if err = err2; err != nil {
|
||||
return nil, err
|
||||
@@ -975,16 +979,15 @@ func RefreshPageActs(ctx *jxcontext.Context, vendorIDs []int, createdFrom time.T
|
||||
func DeleteSkusFromAct(ctx *jxcontext.Context, vendorID int, actTypes, skuIDs []int, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||
db := dao.GetDB()
|
||||
actMap := make(map[int]*model.Act)
|
||||
for _, skuID := range skuIDs {
|
||||
pagedInfo, err2 := dao.QueryActs(db, 0, 0, -1, -1, "", vendorID, []int{model.ActStatusCreated}, actTypes, nil, 0, skuID, 0,
|
||||
utils.DefaultTimeValue, utils.DefaultTimeValue, time.Now().Add(-24*30*3*time.Hour), utils.DefaultTimeValue)
|
||||
if err = err2; err != nil {
|
||||
return "", err
|
||||
}
|
||||
for _, v := range pagedInfo.Data {
|
||||
actMap[v.Act.ID] = &v.Act
|
||||
}
|
||||
pagedInfo, err2 := dao.QueryActs(db, 0, 0, -1, -1, "", vendorID, []int{model.ActStatusCreated}, actTypes, nil, 0, skuIDs, 0,
|
||||
utils.DefaultTimeValue, utils.DefaultTimeValue, time.Now().Add(-24*30*3*time.Hour), utils.DefaultTimeValue)
|
||||
if err = err2; err != nil {
|
||||
return "", err
|
||||
}
|
||||
for _, v := range pagedInfo.Data {
|
||||
actMap[v.Act.ID] = &v.Act
|
||||
}
|
||||
|
||||
if len(actMap) == 0 {
|
||||
return "", nil
|
||||
}
|
||||
|
||||
@@ -13,8 +13,6 @@ import (
|
||||
"time"
|
||||
"unicode"
|
||||
|
||||
"git.rosy.net.cn/jx-callback/globals/refutil"
|
||||
|
||||
"git.rosy.net.cn/jx-callback/business/jxstore/event"
|
||||
|
||||
"git.rosy.net.cn/baseapi"
|
||||
@@ -1039,7 +1037,7 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs
|
||||
if tmpStatus := getSkuSaleStatus(inSkuBind, skuBindInfo); tmpStatus != model.StoreSkuBindStatusNA {
|
||||
skuBind.Status = tmpStatus
|
||||
}
|
||||
err = AddEventDetail(model.OperateAdd, v.RealSkuID, model.ThingTypeSku, storeID, ctx.GetTrackInfo(), "", "")
|
||||
// err = AddEventDetail(model.OperateAdd, v.RealSkuID, model.ThingTypeSku, storeID, ctx.GetTrackInfo(), "", "")
|
||||
setStoreSkuBindStatus(skuBind, model.SyncFlagNewMask)
|
||||
dao.WrapAddIDCULDEntity(skuBind, userName)
|
||||
// globals.SugarLogger.Debug(utils.Format4Output(skuBind, false))
|
||||
@@ -1065,7 +1063,7 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs
|
||||
} else {
|
||||
skuBind = &v.StoreSkuBind
|
||||
if skuBindInfo.IsFocus == -1 && isCanChangePrice {
|
||||
err = AddEventDetail(model.OperateDelete, skuBind.SkuID, model.ThingTypeSku, storeID, ctx.GetTrackInfo(), "", "")
|
||||
// err = AddEventDetail(model.OperateDelete, skuBind.SkuID, model.ThingTypeSku, storeID, ctx.GetTrackInfo(), "", "")
|
||||
if num, err = dao.DeleteEntityLogically(db, skuBind, map[string]interface{}{
|
||||
model.FieldStatus: model.StoreSkuBindStatusDeleted,
|
||||
model.FieldJdSyncStatus: model.SyncFlagDeletedMask,
|
||||
@@ -1094,40 +1092,37 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs
|
||||
setStoreSkuBindStatus(skuBind, model.SyncFlagSaleMask)
|
||||
updateFieldMap[model.FieldStatus] = 1
|
||||
}
|
||||
if skuBindInfo.UnitPrice != 0 && skuBind.UnitPrice != unitPrice && isCanChangePrice { // 这里是否需要加此条件限制
|
||||
skuBind.UnitPrice = unitPrice
|
||||
skuBind.Price = jxutils.CaculateSkuPrice(unitPrice, v.SpecQuality, v.SpecUnit, v.SkuNameUnit)
|
||||
skuBind.JxPrice = jxutils.CaculatePriceByPricePack(storeDetail.PricePercentagePackObj, int(storeDetail.PricePercentage), skuBind.Price)
|
||||
setStoreSkuBindStatus(skuBind, model.SyncFlagPriceMask)
|
||||
updateFieldMap["UnitPrice"] = 1
|
||||
updateFieldMap["Price"] = 1
|
||||
updateFieldMap["JxPrice"] = 1
|
||||
if skuBindInfo.UnitPrice != 0 && isCanChangePrice { // 这里是否需要加此条件限制
|
||||
price := jxutils.CaculateSkuPrice(unitPrice, v.SpecQuality, v.SpecUnit, v.SkuNameUnit)
|
||||
jxPrice := jxutils.CaculatePriceByPricePack(storeDetail.PricePercentagePackObj, int(storeDetail.PricePercentage), price)
|
||||
if unitPrice != skuBind.UnitPrice || price != skuBind.Price || jxPrice != skuBind.JxPrice {
|
||||
if price != skuBind.Price {
|
||||
setStoreSkuBindStatus(skuBind, model.SyncFlagPriceMask)
|
||||
updateFieldMap["Price"] = 1
|
||||
}
|
||||
skuBind.UnitPrice = unitPrice
|
||||
skuBind.Price = price
|
||||
skuBind.JxPrice = jxPrice
|
||||
updateFieldMap["UnitPrice"] = 1
|
||||
updateFieldMap["JxPrice"] = 1
|
||||
}
|
||||
}
|
||||
if skuBindInfo.StatusSaleBegin != 0 && skuBindInfo.StatusSaleEnd != 0 {
|
||||
if err := ValidateStruct(skuBindInfo); err != nil {
|
||||
dao.Rollback(db)
|
||||
return nil, fmt.Errorf("更改商品:%s, 可售时间不合法!时间范围:[%v] 至 [%v]", allBinds[0].Name, skuBindInfo.StatusSaleBegin, skuBindInfo.StatusSaleEnd)
|
||||
globals.SugarLogger.Infof("更改商品:%s, 可售时间不合法!时间范围:[%v] 至 [%v]", allBinds[0].Name, skuBindInfo.StatusSaleBegin, skuBindInfo.StatusSaleEnd)
|
||||
} else {
|
||||
updateFieldMap["StatusSaleBegin"] = int(skuBindInfo.StatusSaleBegin)
|
||||
updateFieldMap["StatusSaleEnd"] = int(skuBindInfo.StatusSaleEnd)
|
||||
skuBind.StatusSaleBegin = skuBindInfo.StatusSaleBegin
|
||||
skuBind.StatusSaleEnd = skuBindInfo.StatusSaleEnd
|
||||
}
|
||||
updateFieldMap["StatusSaleBegin"] = int(skuBindInfo.StatusSaleBegin)
|
||||
updateFieldMap["StatusSaleEnd"] = int(skuBindInfo.StatusSaleEnd)
|
||||
skuBind.StatusSaleBegin = skuBindInfo.StatusSaleBegin
|
||||
skuBind.StatusSaleEnd = skuBindInfo.StatusSaleEnd
|
||||
}
|
||||
// todo 这里应该是不需处理这个信息的吧?
|
||||
// if inSkuBind != nil && inSkuBind.EbaiID != 0 {
|
||||
// skuBind.EbaiID = inSkuBind.EbaiID
|
||||
// updateFieldMap["EbaiID"] = 1
|
||||
// if updateFieldMap != nil {
|
||||
// afterData := utils.MustMarshal(updateFieldMap)
|
||||
// mapresult := refutil.FindMapAndStructMixed(updateFieldMap, skuBind)
|
||||
// beforeData := utils.MustMarshal(mapresult)
|
||||
// AddEventDetail(model.OperateUpdate, v.RealSkuID, model.ThingTypeSku, storeID, ctx.GetTrackInfo(), string(beforeData), string(afterData))
|
||||
// }
|
||||
// if inSkuBind != nil && inSkuBind.ElmID != 0 {
|
||||
// skuBind.ElmID = inSkuBind.ElmID
|
||||
// updateFieldMap["ElmID"] = 1
|
||||
// }
|
||||
if updateFieldMap != nil {
|
||||
afterData := utils.MustMarshal(updateFieldMap)
|
||||
mapresult := refutil.FindMapAndStructMixed(updateFieldMap, skuBind)
|
||||
beforeData := utils.MustMarshal(mapresult)
|
||||
AddEventDetail(model.OperateUpdate, v.RealSkuID, model.ThingTypeSku, storeID, ctx.GetTrackInfo(), string(beforeData), string(afterData))
|
||||
}
|
||||
if len(updateFieldMap) > 0 {
|
||||
updateFieldMap[model.FieldJdSyncStatus] = 1
|
||||
updateFieldMap[model.FieldEbaiSyncStatus] = 1
|
||||
@@ -1135,9 +1130,11 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs
|
||||
updateFieldMap[model.FieldUpdatedAt] = 1
|
||||
updateFieldMap[model.FieldLastOperator] = 1
|
||||
|
||||
// setStoreSkuBindStatus(skuBind, model.SyncFlagModifiedMask)
|
||||
dao.WrapUpdateULEntity(skuBind, userName)
|
||||
skuBind.AutoSaleAt = utils.DefaultTimeValue
|
||||
if skuBind.Status == model.SkuStatusNormal {
|
||||
updateFieldMap["AutoSaleAt"] = 1
|
||||
skuBind.AutoSaleAt = utils.DefaultTimeValue
|
||||
}
|
||||
if num, err = dao.UpdateEntity(db, skuBind /*, utils.Map2KeySlice(updateFieldMap)...*/); err != nil {
|
||||
dao.Rollback(db)
|
||||
return nil, err
|
||||
@@ -3152,6 +3149,6 @@ func UpdateStoreSkuNamePrice(ctx *jxcontext.Context, storeID, nameID, unitPrice
|
||||
// for _, v := range skuList {
|
||||
// skuIDs = append(skuIDs, v.ID)
|
||||
// }
|
||||
// actStoreSkuList, err :=dao.GetEffectiveActStoreSkuInfo(db, 0, nil, model.ActSkuDirectDown, []int{storeID}, skuIDs, time.Now(),time.Now())
|
||||
// actStoreSkuList, err := dao.GetEffectiveActStoreSkuInfo(db, 0, nil, model.ActSkuDirectDown, []int{storeID}, skuIDs, time.Now(), time.Now())
|
||||
return hint, err
|
||||
}
|
||||
|
||||
@@ -186,7 +186,7 @@ func GetActStoreSkuVendorInfo(db *DaoDB, actID int, vendorIDs, storeIDs, skuIDs
|
||||
}
|
||||
|
||||
func QueryActs(db *DaoDB, actID int, offset, pageSize int, syncStatus int, keyword string, vendorID int, statusList, actTypeList, createTypeList []int,
|
||||
storeID, skuID, cityCode int, beginAt, endAt, createdAtFrom, createdAtTo time.Time) (pagedInfo *PagedActListInfo, err error) {
|
||||
storeID int, skuIDs []int, cityCode int, beginAt, endAt, createdAtFrom, createdAtTo time.Time) (pagedInfo *PagedActListInfo, err error) {
|
||||
if actID == 0 && utils.IsTimeZero(createdAtFrom) && utils.IsTimeZero(beginAt) {
|
||||
return nil, fmt.Errorf("actID,createdAtFrom和beginAt中,至少要指定一个条件")
|
||||
}
|
||||
@@ -231,7 +231,7 @@ func QueryActs(db *DaoDB, actID int, offset, pageSize int, syncStatus int, keywo
|
||||
}
|
||||
sql += ")"
|
||||
}
|
||||
if storeID > 0 || skuID > 0 || cityCode > 0 {
|
||||
if storeID > 0 || len(skuIDs) > 0 || cityCode > 0 {
|
||||
sql += ` AND (SELECT COUNT(*)
|
||||
FROM act_store_sku t2`
|
||||
if cityCode > 0 {
|
||||
@@ -245,9 +245,9 @@ func QueryActs(db *DaoDB, actID int, offset, pageSize int, syncStatus int, keywo
|
||||
sql += " AND t2.store_id = ?"
|
||||
sqlParams = append(sqlParams, storeID)
|
||||
}
|
||||
if skuID > 0 {
|
||||
sql += " AND t2.sku_id = ?"
|
||||
sqlParams = append(sqlParams, skuID)
|
||||
if len(skuIDs) > 0 {
|
||||
sql += " AND t2.sku_id IN (" + GenQuestionMarks(len(skuIDs)) + ")"
|
||||
sqlParams = append(sqlParams, skuIDs)
|
||||
}
|
||||
sql += ") > 0"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user