diff --git a/business/jxstore/cms/sku.go b/business/jxstore/cms/sku.go index 91e48920b..7ec67735e 100644 --- a/business/jxstore/cms/sku.go +++ b/business/jxstore/cms/sku.go @@ -2534,3 +2534,51 @@ func deleteJdsSku(db *dao.DaoDB, skuID int) (err error) { } return err } + +func UpdateSkuExinfoMap(ctx *jxcontext.Context, nameIDs []int, imgWaterMark string, vendorID int, exPrefix, fromTime, toTime string, isAsync, isContinueWhenError bool) (hint string, err error) { + var ( + fromTimeP time.Time + toTimeP time.Time + db = dao.GetDB() + ) + if fromTime != "" { + fromTimeP = utils.Time2Date(utils.Str2Time(fromTime)) + } + if toTime != "" { + toTimeP = utils.Time2Date(utils.Str2Time(toTime)) + } + if toTimeP.Before(fromTimeP) { + return "", fmt.Errorf("结束时间不可以小于开始时间!开始时间:[%v],结束时间:[%v]", fromTimeP, toTimeP) + } + task := tasksch.NewParallelTask("RefreshOrdersPriceInfo", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx, + func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + nameID := batchItemList[0].(int) + skuEx := &model.SkuExinfoMap{ + NameID: nameID, + ImgWatermark: imgWaterMark, + ExPrefix: exPrefix, + VendorID: vendorID, + BeginAt: fromTimeP, + EndAt: toTimeP, + } + dao.WrapAddIDCULEntity(skuEx, ctx.GetUserName()) + skuExs, _ := dao.GetSkuExinfos(db, []int{nameID}, vendorID, "", utils.ZeroTimeValue, utils.ZeroTimeValue) + if len(skuExs) > 0 { + skuEx2 := skuExs[0] + dao.WrapAddIDCULDEntity(skuEx2, ctx.GetUserName()) + dao.UpdateEntity(db, skuEx2) + dao.CreateEntity(db, skuEx) + } else { + dao.CreateEntity(db, skuEx) + } + return retVal, err + }, nameIDs) + tasksch.HandleTask(task, nil, true).Run() + if isAsync { + hint = task.GetID() + } else { + _, err = task.GetResult(0) + hint = "1" + } + return hint, err +} diff --git a/business/model/dao/sku.go b/business/model/dao/sku.go index be89fa4a9..c04bc8c16 100644 --- a/business/model/dao/sku.go +++ b/business/model/dao/sku.go @@ -1,6 +1,8 @@ package dao import ( + "time" + "git.rosy.net.cn/baseapi/platformapi/aliupcapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/model" @@ -379,3 +381,34 @@ func InsertUpcDepot(db *DaoDB, result *aliupcapi.GetAliUpcInfoResult) (err error _, err = ExecuteSQL(db, sql, sqlParams) return err } + +func GetSkuExinfos(db *DaoDB, nameIDs []int, vendorID int, exPrefix string, fromTime, toTime time.Time) (skuExinfoMaps []*model.SkuExinfoMap, err error) { + sql := ` + SELECT * + FROM sku_exinfo_map + WHERE deleted_at = ? + ` + sqlParams := []interface{}{ + utils.DefaultTimeValue, + } + if len(nameIDs) > 0 { + sql += " AND name_id IN (" + GenQuestionMarks(len(nameIDs)) + ")" + sqlParams = append(sqlParams, nameIDs) + } + if vendorID != -1 { + sql += " AND vendor_id = ?" + sqlParams = append(sqlParams, vendorID) + } + if exPrefix != "" { + sql += " AND ex_prefix LIKE ?" + sqlParams = append(sqlParams, "%"+exPrefix+"%") + } + if fromTime != utils.ZeroTimeValue && toTime != utils.ZeroTimeValue { + sql += " AND NOT (begin_at > ? OR end_at < ?)" + sqlParams = append(sqlParams, toTime, fromTime) + } + if err = GetRows(db, &skuExinfoMaps, sql, sqlParams...); err == nil { + return skuExinfoMaps, nil + } + return nil, err +} diff --git a/business/model/sku.go b/business/model/sku.go index 84546c1e5..c43017da4 100644 --- a/business/model/sku.go +++ b/business/model/sku.go @@ -285,12 +285,12 @@ type SkuNameExt struct { type SkuExinfoMap struct { ModelIDCULD - ExPrefix string `orm:"size(255)" json:"exPrefix"` - ImgWatermark string `orm:"size(512)" json:"imgWatermark"` //图片水印 NameID int `orm:"column(name_id)" json:"nameID"` VendorID int `orm:"column(vendor_id)" json:"vendorID"` - BeginAt time.Time `orm:"type(datetime);index" json:"beginAt"` - EndAt time.Time `orm:"type(datetime);index" json:"endAt"` + BeginAt time.Time `orm:"type(datetime);index" json:"beginAt"` //设置起始时间 + EndAt time.Time `orm:"type(datetime);index" json:"endAt"` //设置结束时间 + ExPrefix string `orm:"size(255)" json:"exPrefix"` //额外前缀 + ImgWatermark string `orm:"size(512)" json:"imgWatermark"` //图片水印 } func (*SkuExinfoMap) TableIndex() [][]string { diff --git a/controllers/cms_sku.go b/controllers/cms_sku.go index 77c5462af..bd04f8fb0 100644 --- a/controllers/cms_sku.go +++ b/controllers/cms_sku.go @@ -483,3 +483,27 @@ func (c *SkuController) RefreshJdDepot() { return retVal, "", err }) } + +// @Title 批量设置商品额外信息 +// @Description 批量设置商品额外信息 +// @Param token header string true "认证token" +// @Param nameIDs formData string true "商品nameIDs" +// @Param exPrefix formData string false "商品额外前缀" +// @Param fromDate formData string true "生效开始时间,格式 2006-01-01 " +// @Param toDate formData string true "生效结束时间,格式 2006-01-01 " +// @Param imgWaterMark formData string false "商品水印图" +// @Param vendorID formData int true "平台ID" +// @Param isAsync formData bool false "是否异步" +// @Param isContinueWhenError formData bool false "单个同步失败是否继续,缺省false" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /UpdateSkuExinfoMap [put] +func (c *SkuController) UpdateSkuExinfoMap() { + c.callUpdateSkuExinfoMap(func(params *tSkuUpdateSkuExinfoMapParams) (retVal interface{}, errCode string, err error) { + var skuIDList []int + if err = jxutils.Strings2Objs(params.NameIDs, &skuIDList); err == nil { + retVal, err = cms.UpdateSkuExinfoMap(params.Ctx, skuIDList, params.ImgWaterMark, params.VendorID, params.ExPrefix, params.FromDate, params.ToDate, params.IsAsync, params.IsContinueWhenError) + } + return retVal, "", err + }) +}