- Convert2JDSPU
This commit is contained in:
@@ -8,12 +8,15 @@ import (
|
|||||||
|
|
||||||
"git.rosy.net.cn/baseapi/platformapi/autonavi"
|
"git.rosy.net.cn/baseapi/platformapi/autonavi"
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/jxstore/cms"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||||
"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"
|
"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/partner/purchase/mtwm"
|
"git.rosy.net.cn/jx-callback/business/partner/purchase/mtwm"
|
||||||
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
"git.rosy.net.cn/jx-callback/globals/api"
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -193,3 +196,88 @@ func InitVendorCategory(ctx *jxcontext.Context) (num int64, err error) {
|
|||||||
}
|
}
|
||||||
return num, err
|
return num, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Convert2JDSPU(ctx *jxcontext.Context, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||||
|
sql := `
|
||||||
|
SELECT t1.*
|
||||||
|
FROM sku_name t1
|
||||||
|
LEFT JOIN sku_name t2 ON t1.link_id = t2.id
|
||||||
|
WHERE t1.deleted_at = ? AND t1.status <> ? AND t1.is_spu = 0 AND t1.unit = '份'
|
||||||
|
AND t2.id IS NULL
|
||||||
|
;
|
||||||
|
`
|
||||||
|
sqlParams := []interface{}{
|
||||||
|
utils.DefaultTimeValue,
|
||||||
|
model.SkuStatusDeleted,
|
||||||
|
}
|
||||||
|
|
||||||
|
db := dao.GetDB()
|
||||||
|
var skuNameList []*model.SkuName
|
||||||
|
if err = dao.GetRows(db, &skuNameList, sql, sqlParams...); err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
globals.SugarLogger.Debug(len(skuNameList))
|
||||||
|
for _, skuName := range skuNameList {
|
||||||
|
globals.SugarLogger.Debug(skuName.Name)
|
||||||
|
sql = `
|
||||||
|
SELECT *
|
||||||
|
FROM sku
|
||||||
|
WHERE name_id = ? AND deleted_at = ? AND status <> ?;
|
||||||
|
`
|
||||||
|
sqlParams := []interface{}{
|
||||||
|
skuName.ID,
|
||||||
|
utils.DefaultTimeValue,
|
||||||
|
model.SkuStatusDeleted,
|
||||||
|
}
|
||||||
|
var skuList []*model.Sku
|
||||||
|
if err = dao.GetRows(db, &skuList, sql, sqlParams...); err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
if len(skuList) > 0 {
|
||||||
|
dao.Begin(db)
|
||||||
|
skuNameNew := &(*skuName)
|
||||||
|
dao.WrapAddIDCULEntity(skuNameNew, ctx.GetUserName())
|
||||||
|
skuNameNew.JdID = 0
|
||||||
|
skuNameNew.LinkID = skuName.ID
|
||||||
|
skuNameNew.IsSpu = 1
|
||||||
|
if err = dao.CreateEntity(db, skuNameNew); err != nil {
|
||||||
|
dao.Rollback(db)
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
for _, sku := range skuList {
|
||||||
|
skuNew := &(*sku)
|
||||||
|
dao.WrapAddIDCULEntity(skuNew, ctx.GetUserName())
|
||||||
|
skuNew.JdID = jxutils.GenFakeID()
|
||||||
|
skuNew.LinkID = sku.ID
|
||||||
|
skuNew.NameID = skuNameNew.ID
|
||||||
|
if err = dao.CreateEntity(db, skuNew); err != nil {
|
||||||
|
dao.Rollback(db)
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dao.Commit(db)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sql = `
|
||||||
|
SELECT t1.*
|
||||||
|
FROM sku_name t1
|
||||||
|
WHERE t1.link_id <> 0;
|
||||||
|
`
|
||||||
|
if err = dao.GetRows(db, &skuNameList, sql); err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
rootTask := tasksch.NewParallelTask("Convert2JDSPU", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx.GetUserName(), func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
|
skuName := batchItemList[0].(*model.SkuName)
|
||||||
|
_, err = cms.CurVendorSync.SyncSku(ctx, db, skuName.ID, -1, false, ctx.GetUserName())
|
||||||
|
return nil, err
|
||||||
|
}, skuNameList)
|
||||||
|
tasksch.ManageTask(rootTask).Run()
|
||||||
|
|
||||||
|
if !isAsync {
|
||||||
|
_, err = rootTask.GetResult(0)
|
||||||
|
} else {
|
||||||
|
hint = rootTask.ID
|
||||||
|
}
|
||||||
|
return hint, err
|
||||||
|
}
|
||||||
|
|||||||
@@ -167,13 +167,15 @@ type SkuName struct {
|
|||||||
Upc string `orm:"size(20)"`
|
Upc string `orm:"size(20)"`
|
||||||
Status int `orm:"default(1)" json:"status"` // skuname状态,取值同sku.Status
|
Status int `orm:"default(1)" json:"status"` // skuname状态,取值同sku.Status
|
||||||
IsSpu int8 `orm:"column(is_spu)" json:"isSpu"` // 用于指明是否SKUNAME当成SPU
|
IsSpu int8 `orm:"column(is_spu)" json:"isSpu"` // 用于指明是否SKUNAME当成SPU
|
||||||
JdID int64 `orm:"column(jd_id);null" json:"jdID"`
|
JdID int64 `orm:"column(jd_id);null;index" json:"jdID"`
|
||||||
JdSyncStatus int8 `orm:"default(2)" json:"jdSyncStatus"`
|
JdSyncStatus int8 `orm:"default(2)" json:"jdSyncStatus"`
|
||||||
|
|
||||||
|
LinkID int `orm:"column(link_id);null;index" json:"linkID"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*SkuName) TableUnique() [][]string {
|
func (*SkuName) TableUnique() [][]string {
|
||||||
return [][]string{
|
return [][]string{
|
||||||
[]string{"Name", "Prefix", "SpecQuality", "SpecUnit", "Unit", "DeletedAt"},
|
[]string{"Name", "Prefix", "SpecQuality", "SpecUnit", "Unit", "IsSpu", "DeletedAt"},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -188,15 +190,17 @@ type Sku struct {
|
|||||||
Weight int `json:"weight"` // 重量/质量,单位为克,当相应的SkuName的SpecUnit为g或kg时,必须等于SpecQuality
|
Weight int `json:"weight"` // 重量/质量,单位为克,当相应的SkuName的SpecUnit为g或kg时,必须等于SpecQuality
|
||||||
Status int `json:"status"`
|
Status int `json:"status"`
|
||||||
|
|
||||||
JdID int64 `orm:"column(jd_id);null" json:"jdID"`
|
JdID int64 `orm:"column(jd_id);null;index" json:"jdID"`
|
||||||
JdSyncStatus int8 `orm:"default(2)" json:"jdSyncStatus"`
|
JdSyncStatus int8 `orm:"default(2)" json:"jdSyncStatus"`
|
||||||
|
|
||||||
|
LinkID int `orm:"column(link_id);null;index" json:"linkID"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*Sku) TableUnique() [][]string {
|
// func (*Sku) TableUnique() [][]string {
|
||||||
return [][]string{
|
// return [][]string{
|
||||||
[]string{"JdID", "DeletedAt"},
|
// []string{"JdID", "DeletedAt"},
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
func (*Sku) TableIndex() [][]string {
|
func (*Sku) TableIndex() [][]string {
|
||||||
return [][]string{
|
return [][]string{
|
||||||
|
|||||||
@@ -396,8 +396,8 @@ func (p *PurchaseHandler) syncSkuNameAsSpu(db *dao.DaoDB, sku *model.Sku, skuExt
|
|||||||
spuName := jxutils.ComposeSpuName(skuExt.Prefix, skuExt.Name, 0)
|
spuName := jxutils.ComposeSpuName(skuExt.Prefix, skuExt.Name, 0)
|
||||||
skus := []map[string]interface{}{
|
skus := []map[string]interface{}{
|
||||||
map[string]interface{}{
|
map[string]interface{}{
|
||||||
jdapi.KeyOutSkuId: utils.Int2Str(sku.ID),
|
jdapi.KeyOutSkuId: utils.Int2Str(sku.ID),
|
||||||
jdapi.KeySkuName: skuName,
|
// jdapi.KeySkuName: skuName,
|
||||||
jdapi.KeyFixedStatus: jxStatus2jdStatus(sku.Status),
|
jdapi.KeyFixedStatus: jxStatus2jdStatus(sku.Status),
|
||||||
jdapi.KeySkuPrice: price,
|
jdapi.KeySkuPrice: price,
|
||||||
jdapi.KeyWeight: jxutils.IntWeight2Float(sku.Weight),
|
jdapi.KeyWeight: jxutils.IntWeight2Float(sku.Weight),
|
||||||
|
|||||||
@@ -50,3 +50,18 @@ func (c *InitDataController) InitVendorCategory() {
|
|||||||
return retVal, "", err
|
return retVal, "", err
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @Title 将为份的商品在京东转成SPU
|
||||||
|
// @Description 将为份的商品在京东转成SPU
|
||||||
|
// @Param token header string true "认证token"
|
||||||
|
// @Param isAsync formData bool false "是否异步操作"
|
||||||
|
// @Param isContinueWhenError formData bool false "单个同步失败是否继续,缺省false"
|
||||||
|
// @Success 200 {object} controllers.CallResult
|
||||||
|
// @Failure 200 {object} controllers.CallResult
|
||||||
|
// @router /Convert2JDSPU [post]
|
||||||
|
func (c *InitDataController) Convert2JDSPU() {
|
||||||
|
c.callConvert2JDSPU(func(params *tInitdataConvert2JDSPUParams) (retVal interface{}, errCode string, err error) {
|
||||||
|
retVal, err = initdata.Convert2JDSPU(params.Ctx, params.IsAsync, params.IsContinueWhenError)
|
||||||
|
return retVal, "", err
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@@ -167,6 +167,14 @@ func init() {
|
|||||||
MethodParams: param.Make(),
|
MethodParams: param.Make(),
|
||||||
Params: nil})
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:InitDataController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:InitDataController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "Convert2JDSPU",
|
||||||
|
Router: `/Convert2JDSPU`,
|
||||||
|
AllowHTTPMethods: []string{"post"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:InitDataController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:InitDataController"],
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:InitDataController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:InitDataController"],
|
||||||
beego.ControllerComments{
|
beego.ControllerComments{
|
||||||
Method: "InitPlace",
|
Method: "InitPlace",
|
||||||
|
|||||||
Reference in New Issue
Block a user