diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index 7a1316965..21c2445bf 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -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 { diff --git a/business/jxstore/act/act.go b/business/jxstore/act/act.go index 70a24c64c..bc4595fc3 100644 --- a/business/jxstore/act/act.go +++ b/business/jxstore/act/act.go @@ -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 } diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index b29731c77..6f836f1f9 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -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 } diff --git a/business/model/dao/act.go b/business/model/dao/act.go index cacbcdc6e..7ae5c09ab 100644 --- a/business/model/dao/act.go +++ b/business/model/dao/act.go @@ -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" }