sync2.SyncCategories, SyncReorderCategories
This commit is contained in:
@@ -38,11 +38,6 @@ type SingleStoreHandlerWrapper struct {
|
|||||||
partner.ISingleStoreHandler
|
partner.ISingleStoreHandler
|
||||||
}
|
}
|
||||||
|
|
||||||
type tMultiStoreVendorInfo struct {
|
|
||||||
VendorID int
|
|
||||||
OrgCode string
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
var (
|
||||||
CurVendorSync VendorSync
|
CurVendorSync VendorSync
|
||||||
)
|
)
|
||||||
@@ -101,20 +96,6 @@ func (v *VendorSync) GetSingleStoreHandler(vendorID int) partner.ISingleStoreHan
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func getMultiStoreVendorInfoList() (list []*tMultiStoreVendorInfo) {
|
|
||||||
vendorIDs := partner.GetMultiStoreVendorIDs()
|
|
||||||
for _, vendorID := range vendorIDs {
|
|
||||||
orgCodeList := partner.CurAPIManager.GetAppOrgCodeList(vendorID)
|
|
||||||
for _, v := range orgCodeList {
|
|
||||||
list = append(list, &tMultiStoreVendorInfo{
|
|
||||||
VendorID: vendorID,
|
|
||||||
OrgCode: v,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return list
|
|
||||||
}
|
|
||||||
|
|
||||||
func (v *VendorSync) syncCategories(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorID int, db *dao.DaoDB, cats []*model.SkuCategory, userName string) (err error) {
|
func (v *VendorSync) syncCategories(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorID int, db *dao.DaoDB, cats []*model.SkuCategory, userName string) (err error) {
|
||||||
multiStoresHandler := v.GetMultiStoreHandler(vendorID)
|
multiStoresHandler := v.GetMultiStoreHandler(vendorID)
|
||||||
syncStatusFieldName := dao.GetSyncStatusStructField(model.VendorNames[vendorID])
|
syncStatusFieldName := dao.GetSyncStatusStructField(model.VendorNames[vendorID])
|
||||||
@@ -715,59 +696,3 @@ func GetTimeMixByInt(begin1, end1, begin2, end2 int16) (beginAt, endAt int16) {
|
|||||||
}
|
}
|
||||||
return beginAt, endAt
|
return beginAt, endAt
|
||||||
}
|
}
|
||||||
|
|
||||||
func OnCreateThing(ctx *jxcontext.Context, db *dao.DaoDB, thingID int64, thingType int8) (err error) {
|
|
||||||
for _, v := range getMultiStoreVendorInfoList() {
|
|
||||||
thingMap := &model.ThingMap{
|
|
||||||
ThingID: thingID,
|
|
||||||
ThingType: thingType,
|
|
||||||
VendorID: v.VendorID,
|
|
||||||
VendorOrgCode: v.OrgCode,
|
|
||||||
SyncStatus: model.SyncFlagNewMask,
|
|
||||||
}
|
|
||||||
dao.WrapAddIDCULDEntity(thingMap, ctx.GetUserName())
|
|
||||||
err = dao.CreateEntity(db, thingMap)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func OnUpdateThing(ctx *jxcontext.Context, db *dao.DaoDB, thingID int64, thingType int8) (err error) {
|
|
||||||
for _, v := range getMultiStoreVendorInfoList() {
|
|
||||||
thingMap := &model.ThingMap{
|
|
||||||
ThingID: thingID,
|
|
||||||
ThingType: thingType,
|
|
||||||
VendorID: v.VendorID,
|
|
||||||
VendorOrgCode: v.OrgCode,
|
|
||||||
}
|
|
||||||
thingMap.DeletedAt = utils.DefaultTimeValue
|
|
||||||
if err = dao.GetEntity(db, thingMap, "ThingID", "ThingType", "VendorID", "VendorOrgCode", model.FieldDeletedAt); err == nil {
|
|
||||||
thingMap.SyncStatus |= model.SyncFlagModifiedMask
|
|
||||||
thingMap.LastOperator = ctx.GetUserName()
|
|
||||||
_, err = dao.UpdateEntity(db, thingMap)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func OnDeleteThing(ctx *jxcontext.Context, db *dao.DaoDB, thingID int64, thingType int8) (err error) {
|
|
||||||
for _, v := range getMultiStoreVendorInfoList() {
|
|
||||||
thingMap := &model.ThingMap{
|
|
||||||
ThingID: thingID,
|
|
||||||
ThingType: thingType,
|
|
||||||
VendorID: v.VendorID,
|
|
||||||
VendorOrgCode: v.OrgCode,
|
|
||||||
}
|
|
||||||
thingMap.DeletedAt = utils.DefaultTimeValue
|
|
||||||
if err = dao.GetEntity(db, thingMap, "ThingID", "ThingType", "VendorID", "VendorOrgCode", model.FieldDeletedAt); err == nil {
|
|
||||||
if model.IsSyncStatusNew(thingMap.SyncStatus) {
|
|
||||||
thingMap.SyncStatus = 0
|
|
||||||
} else {
|
|
||||||
thingMap.SyncStatus |= model.SyncFlagDeletedMask
|
|
||||||
}
|
|
||||||
_, err = dao.DeleteEntityLogically(db, thingMap, map[string]interface{}{
|
|
||||||
model.FieldSyncStatus: thingMap.SyncStatus,
|
|
||||||
}, ctx.GetUserName(), nil)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,30 +1,206 @@
|
|||||||
package cms
|
package cms
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"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/dao"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/partner"
|
||||||
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type tMultiStoreVendorInfo struct {
|
||||||
|
VendorID int
|
||||||
|
OrgCode string
|
||||||
|
}
|
||||||
|
|
||||||
|
func CombineVendorIDAndOrgCode(vendorID int, orgCode string) string {
|
||||||
|
return fmt.Sprintf("%d-%s", vendorID, orgCode)
|
||||||
|
}
|
||||||
|
|
||||||
|
func getMultiStoreVendorInfoList() (list []*tMultiStoreVendorInfo) {
|
||||||
|
vendorIDs := partner.GetMultiStoreVendorIDs()
|
||||||
|
for _, vendorID := range vendorIDs {
|
||||||
|
orgCodeList := partner.CurAPIManager.GetAppOrgCodeList(vendorID)
|
||||||
|
for _, v := range orgCodeList {
|
||||||
|
list = append(list, &tMultiStoreVendorInfo{
|
||||||
|
VendorID: vendorID,
|
||||||
|
OrgCode: v,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return list
|
||||||
|
}
|
||||||
|
|
||||||
func SyncCategories(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorIDs []int, appOrgCodes []string, catIDs []int, isAsync bool) (hint string, err error) {
|
func SyncCategories(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorIDs []int, appOrgCodes []string, catIDs []int, isAsync bool) (hint string, err error) {
|
||||||
// if len(vendorIDs) == 0 {
|
globals.SugarLogger.Debugf("SyncCategories catIDs:%v", catIDs)
|
||||||
// vendorIDs = partner.GetMultiStoreVendorIDs()
|
db := dao.GetDB()
|
||||||
// }
|
catList, err := dao.GetSkuCategoryWithVendor(db, nil, nil, -1, catIDs, true)
|
||||||
// vendorOrgCodeList := apimanager.CurAPIManager.GetVendorOrgCodeList(vendorIDs, appOrgCodes)
|
if err == nil {
|
||||||
// task := tasksch.NewParallelTask("同步商家分类", nil, ctx,
|
// todo 按vendorID orgCode合并操作
|
||||||
// func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
task := tasksch.NewParallelTask(fmt.Sprintf("同步分类:%v", catIDs), nil, ctx,
|
||||||
// vendorOrgCodePair := batchItemList[0].(*apimanager.VendorOrgCodePair)
|
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
// if handler := partner.GetPurchasePlatformFromVendorID(vendorOrgCodePair.VendorID); handler != nil {
|
catVendorInfo := batchItemList[0].(*dao.SkuCategoryWithVendor)
|
||||||
// }
|
if multiStoresHandler, ok := partner.GetPurchasePlatformFromVendorID(catVendorInfo.VendorID).(partner.IMultipleStoresHandler); ok {
|
||||||
// return retVal, err
|
if model.IsSyncStatusDelete(catVendorInfo.SyncStatus) { //删除
|
||||||
// }, vendorOrgCodeList)
|
if !dao.IsVendorThingIDEmpty(catVendorInfo.VendorCatID) &&
|
||||||
// tasksch.HandleTask(task, parentTask, len(catIDs) > 0).Run()
|
model.IsSyncStatusNeedDelete(catVendorInfo.SyncStatus) {
|
||||||
// if isAsync {
|
err = multiStoresHandler.DeleteCategory2(ctx, catVendorInfo)
|
||||||
// hint = task.GetID()
|
}
|
||||||
// } else {
|
} else if model.IsSyncStatusNew(catVendorInfo.SyncStatus) { // 新增
|
||||||
// resultList, err2 := task.GetResult(0)
|
err = multiStoresHandler.CreateCategory2(ctx, catVendorInfo)
|
||||||
// if err = err2; err == nil {
|
} else if model.IsSyncStatusUpdate(catVendorInfo.SyncStatus) { // 修改
|
||||||
// hint = utils.Int2Str(len(resultList))
|
err = multiStoresHandler.UpdateCategory2(ctx, catVendorInfo)
|
||||||
// }
|
}
|
||||||
// }
|
} else {
|
||||||
|
err = fmt.Errorf("平台:%d不合法", catVendorInfo.VendorID)
|
||||||
|
}
|
||||||
|
if err = OnThingSync(ctx, dao.GetDB(), SkuCategoryVendor2ThingMap(catVendorInfo), err); err == nil {
|
||||||
|
retVal = []int{catVendorInfo.ID}
|
||||||
|
}
|
||||||
|
return retVal, err
|
||||||
|
}, catList)
|
||||||
|
tasksch.HandleTask(task, parentTask, len(catIDs) > 0).Run()
|
||||||
|
if isAsync {
|
||||||
|
hint = task.GetID()
|
||||||
|
} else {
|
||||||
|
resultList, err2 := task.GetResult(0)
|
||||||
|
if err = err2; err == nil {
|
||||||
|
hint = utils.Int2Str(len(resultList))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
return hint, err
|
return hint, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func SyncReorderCategories(ctx *jxcontext.Context, parentCatID int, isAsync bool) (hint string, err error) {
|
||||||
|
globals.SugarLogger.Debugf("SyncReorderCategories parentCatID:%d", parentCatID)
|
||||||
|
db := dao.GetDB()
|
||||||
|
hint, err = CurVendorSync.LoopMultiStoresVendors(ctx, db, fmt.Sprintf("分类重排序:%d", parentCatID), isAsync, false,
|
||||||
|
func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
|
vendorInfo := batchItemList[0].(*tMultiStoreVendorInfo)
|
||||||
|
multiStoresHandler := CurVendorSync.GetMultiStoreHandler(vendorInfo.VendorID)
|
||||||
|
if multiStoresHandler != nil {
|
||||||
|
catList, err2 := dao.GetSkuCategoryWithVendor(db, []int{vendorInfo.VendorID}, []string{vendorInfo.OrgCode}, parentCatID, nil, false)
|
||||||
|
if err = err2; err == nil {
|
||||||
|
var vendorCatIDList []string
|
||||||
|
for _, v := range catList {
|
||||||
|
if v.VendorCatID != "" {
|
||||||
|
vendorCatIDList = append(vendorCatIDList, v.VendorCatID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if len(vendorCatIDList) > 0 {
|
||||||
|
if err = multiStoresHandler.ReorderCategories2(ctx, vendorInfo.OrgCode, catList[0].VendorParentCatID, vendorCatIDList); err == nil {
|
||||||
|
retVal = []int{len(vendorCatIDList)}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
err = fmt.Errorf("非法平台:%d", vendorInfo.VendorID)
|
||||||
|
}
|
||||||
|
return retVal, err
|
||||||
|
})
|
||||||
|
return hint, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func OnCreateThing(ctx *jxcontext.Context, db *dao.DaoDB, thingID int64, thingType int8) (err error) {
|
||||||
|
for _, v := range getMultiStoreVendorInfoList() {
|
||||||
|
thingMap := &model.ThingMap{
|
||||||
|
ThingID: thingID,
|
||||||
|
ThingType: thingType,
|
||||||
|
VendorID: v.VendorID,
|
||||||
|
VendorOrgCode: v.OrgCode,
|
||||||
|
SyncStatus: model.SyncFlagNewMask,
|
||||||
|
}
|
||||||
|
dao.WrapAddIDCULDEntity(thingMap, ctx.GetUserName())
|
||||||
|
err = dao.CreateEntity(db, thingMap)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func OnUpdateThing(ctx *jxcontext.Context, db *dao.DaoDB, thingID int64, thingType int8) (err error) {
|
||||||
|
for _, v := range getMultiStoreVendorInfoList() {
|
||||||
|
thingMap := &model.ThingMap{
|
||||||
|
ThingID: thingID,
|
||||||
|
ThingType: thingType,
|
||||||
|
VendorID: v.VendorID,
|
||||||
|
VendorOrgCode: v.OrgCode,
|
||||||
|
}
|
||||||
|
thingMap.DeletedAt = utils.DefaultTimeValue
|
||||||
|
if err = dao.GetEntity(db, thingMap, "ThingID", "ThingType", "VendorID", "VendorOrgCode", model.FieldDeletedAt); err == nil {
|
||||||
|
thingMap.SyncStatus |= model.SyncFlagModifiedMask
|
||||||
|
thingMap.LastOperator = ctx.GetUserName()
|
||||||
|
_, err = dao.UpdateEntity(db, thingMap)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func OnDeleteThing(ctx *jxcontext.Context, db *dao.DaoDB, thingID int64, thingType int8) (err error) {
|
||||||
|
for _, v := range getMultiStoreVendorInfoList() {
|
||||||
|
thingMap := &model.ThingMap{
|
||||||
|
ThingID: thingID,
|
||||||
|
ThingType: thingType,
|
||||||
|
VendorID: v.VendorID,
|
||||||
|
VendorOrgCode: v.OrgCode,
|
||||||
|
}
|
||||||
|
thingMap.DeletedAt = utils.DefaultTimeValue
|
||||||
|
if err = dao.GetEntity(db, thingMap, "ThingID", "ThingType", "VendorID", "VendorOrgCode", model.FieldDeletedAt); err == nil {
|
||||||
|
if model.IsSyncStatusNew(thingMap.SyncStatus) {
|
||||||
|
thingMap.SyncStatus = 0
|
||||||
|
thingMap.DeletedAt = time.Now()
|
||||||
|
} else {
|
||||||
|
thingMap.SyncStatus |= model.SyncFlagDeletedMask
|
||||||
|
}
|
||||||
|
thingMap.LastOperator = ctx.GetUserName()
|
||||||
|
_, err = dao.UpdateEntity(db, thingMap)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func SkuCategoryVendor2ThingMap(cat *dao.SkuCategoryWithVendor) (thingMap *model.ThingMap) {
|
||||||
|
thingMap = &model.ThingMap{
|
||||||
|
ThingID: int64(cat.ID),
|
||||||
|
ThingType: model.ThingTypeCategory,
|
||||||
|
VendorID: cat.VendorID,
|
||||||
|
VendorOrgCode: cat.VendorOrgCode,
|
||||||
|
|
||||||
|
SyncStatus: cat.SyncStatus,
|
||||||
|
VendorThingID: cat.VendorCatID,
|
||||||
|
}
|
||||||
|
thingMap.ID = cat.MapID // 一定要赋值
|
||||||
|
return thingMap
|
||||||
|
}
|
||||||
|
|
||||||
|
func OnThingSync(ctx *jxcontext.Context, db *dao.DaoDB, thingMap *model.ThingMap, syncErr error) (err error) {
|
||||||
|
if syncErr != nil {
|
||||||
|
err = syncErr
|
||||||
|
thingMap.Remark = utils.LimitUTF8StringLen(err.Error(), 255)
|
||||||
|
dao.UpdateEntity(db, thingMap, "Remark")
|
||||||
|
} else {
|
||||||
|
updateFields := []string{
|
||||||
|
model.FieldSyncStatus,
|
||||||
|
model.FieldUpdatedAt,
|
||||||
|
model.FieldLastOperator,
|
||||||
|
"Remark",
|
||||||
|
}
|
||||||
|
if model.IsSyncStatusDelete(thingMap.SyncStatus) { //删除
|
||||||
|
thingMap.DeletedAt = time.Now()
|
||||||
|
thingMap.VendorThingID = ""
|
||||||
|
updateFields = append(updateFields, "VendorThingID", model.FieldDeletedAt)
|
||||||
|
} else if model.IsSyncStatusNew(thingMap.SyncStatus) { // 新增
|
||||||
|
updateFields = append(updateFields, "VendorThingID")
|
||||||
|
}
|
||||||
|
thingMap.SyncStatus = 0
|
||||||
|
thingMap.LastOperator = ctx.GetUserName()
|
||||||
|
thingMap.UpdatedAt = time.Now()
|
||||||
|
thingMap.Remark = ""
|
||||||
|
_, err = dao.UpdateEntity(db, thingMap, updateFields...)
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|||||||
@@ -14,8 +14,11 @@ type SkuCategoryWithVendor struct {
|
|||||||
VendorID int `orm:"column(vendor_id)" json:"vendorID"`
|
VendorID int `orm:"column(vendor_id)" json:"vendorID"`
|
||||||
VendorOrgCode string `orm:"size(32)" json:"vendorOrgCode"` // 同一平台下不同的商户代码,如果只有一个,可以为空
|
VendorOrgCode string `orm:"size(32)" json:"vendorOrgCode"` // 同一平台下不同的商户代码,如果只有一个,可以为空
|
||||||
|
|
||||||
|
MapID int `orm:"column(map_id)" json:"mapID"`
|
||||||
VendorCatID string `orm:"size(32);column(vendor_cat_id)" json:"vendorCatID"`
|
VendorCatID string `orm:"size(32);column(vendor_cat_id)" json:"vendorCatID"`
|
||||||
SyncStatus int8 `orm:"default(2)"`
|
SyncStatus int8 `orm:"default(2)"`
|
||||||
|
|
||||||
|
VendorParentCatID string `orm:"size(32);column(vendor_parent_cat_id)" json:"vendorParentCatID"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetSellCities(db *DaoDB, nameID int, vendorID int) (cities []*model.Place, err error) {
|
func GetSellCities(db *DaoDB, nameID int, vendorID int) (cities []*model.Place, err error) {
|
||||||
@@ -154,5 +157,55 @@ func SetSkuSyncStatus(db *DaoDB, vendorID int, skuIDs []int, syncStatus int) (nu
|
|||||||
return ExecuteSQL(db, sql, sqlParams...)
|
return ExecuteSQL(db, sql, sqlParams...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// func GetSkuCategoryWithVendor(db *DaoDB, vendorIDs []int, appOrgCodes []string, catIDs []int) (num int64, err error) {
|
func GetSkuCategoryWithVendor(db *DaoDB, vendorIDs []int, appOrgCodes []string, parentCatID int, catIDs []int, mustDirty bool) (catList []*SkuCategoryWithVendor, err error) {
|
||||||
// }
|
sql := `
|
||||||
|
SELECT t1.*,
|
||||||
|
t1m.vendor_id, t1m.vendor_org_code,
|
||||||
|
t1m.id map_id,
|
||||||
|
t1m.sync_status,
|
||||||
|
t1m.vendor_thing_id vendor_cat_id,
|
||||||
|
t1pm.vendor_thing_id vendor_parent_cat_id
|
||||||
|
/*
|
||||||
|
t1.jd_sync_status sync_status,
|
||||||
|
t1.jd_id vendor_cat_id,
|
||||||
|
t1p.jd_id vendor_parent_cat_id
|
||||||
|
*/
|
||||||
|
FROM sku_category t1
|
||||||
|
LEFT JOIN thing_map t1m ON t1m.thing_id = t1.id AND t1m.thing_type = ? AND t1m.deleted_at = ?
|
||||||
|
LEFT JOIN sku_category t1p ON t1p.id = t1.parent_id
|
||||||
|
LEFT JOIN thing_map t1pm ON t1pm.thing_id = t1p.id AND t1pm.thing_type = ? AND t1m.deleted_at = ?
|
||||||
|
AND t1pm.vendor_id = t1m.vendor_id AND t1pm.vendor_org_code = t1m.vendor_org_code
|
||||||
|
WHERE 1 = 1
|
||||||
|
`
|
||||||
|
sqlParams := []interface{}{
|
||||||
|
model.ThingTypeCategory,
|
||||||
|
utils.DefaultTimeValue,
|
||||||
|
model.ThingTypeCategory,
|
||||||
|
utils.DefaultTimeValue,
|
||||||
|
}
|
||||||
|
if mustDirty {
|
||||||
|
sql += " AND t1m.sync_status <> 0"
|
||||||
|
} else {
|
||||||
|
sql += " AND t1.deleted_at = ?"
|
||||||
|
sqlParams = append(sqlParams, utils.DefaultTimeValue)
|
||||||
|
}
|
||||||
|
if len(vendorIDs) > 0 {
|
||||||
|
sql += " AND t1m.vendor_id IN (" + GenQuestionMarks(len(vendorIDs)) + ")"
|
||||||
|
sqlParams = append(sqlParams, vendorIDs)
|
||||||
|
}
|
||||||
|
if len(appOrgCodes) > 0 {
|
||||||
|
sql += " AND t1m.vendor_org_code IN (" + GenQuestionMarks(len(appOrgCodes)) + ")"
|
||||||
|
sqlParams = append(sqlParams, appOrgCodes)
|
||||||
|
}
|
||||||
|
if len(catIDs) > 0 {
|
||||||
|
sql += " AND t1.id IN (" + GenQuestionMarks(len(catIDs)) + ")"
|
||||||
|
sqlParams = append(sqlParams, catIDs)
|
||||||
|
}
|
||||||
|
if parentCatID >= 0 {
|
||||||
|
sql += " AND t1.parent_id = ?"
|
||||||
|
sqlParams = append(sqlParams, parentCatID)
|
||||||
|
}
|
||||||
|
sql += " ORDER BY t1.seq"
|
||||||
|
err = GetRows(db, &catList, sql, sqlParams...)
|
||||||
|
return catList, err
|
||||||
|
}
|
||||||
|
|||||||
@@ -16,6 +16,8 @@ type ThingMap struct {
|
|||||||
|
|
||||||
VendorThingID string `orm:"size(32);column(vendor_thing_id);index" json:"vendorThingID"`
|
VendorThingID string `orm:"size(32);column(vendor_thing_id);index" json:"vendorThingID"`
|
||||||
SyncStatus int8 `orm:"default(2)"`
|
SyncStatus int8 `orm:"default(2)"`
|
||||||
|
|
||||||
|
Remark string `orm:"size(255)" json:"remark"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*ThingMap) TableUnique() [][]string {
|
func (*ThingMap) TableUnique() [][]string {
|
||||||
|
|||||||
@@ -161,6 +161,11 @@ type IMultipleStoresHandler interface {
|
|||||||
DeleteCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) error
|
DeleteCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) error
|
||||||
ReorderCategories(db *dao.DaoDB, parentCatID int, userName string) (err error)
|
ReorderCategories(db *dao.DaoDB, parentCatID int, userName string) (err error)
|
||||||
|
|
||||||
|
CreateCategory2(ctx *jxcontext.Context, cat *dao.SkuCategoryWithVendor) (err error)
|
||||||
|
UpdateCategory2(ctx *jxcontext.Context, cat *dao.SkuCategoryWithVendor) (err error)
|
||||||
|
DeleteCategory2(ctx *jxcontext.Context, cat *dao.SkuCategoryWithVendor) (err error)
|
||||||
|
ReorderCategories2(ctx *jxcontext.Context, vendorOrgCode, vendorParentCatID string, vendorCatIDList []string) (err error)
|
||||||
|
|
||||||
// sku
|
// sku
|
||||||
CreateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error)
|
CreateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error)
|
||||||
ReadSku(vendorSkuID string) (skuNameExt *model.SkuNameExt, err error)
|
ReadSku(vendorSkuID string) (skuNameExt *model.SkuNameExt, err error)
|
||||||
|
|||||||
@@ -303,7 +303,7 @@ func (c *PurchaseHandler) getStatusFromVendorStatus(vendorStatus string) int {
|
|||||||
|
|
||||||
func (c *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool, userName string) (err error) {
|
func (c *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool, userName string) (err error) {
|
||||||
globals.SugarLogger.Debugf("jd AcceptOrRefuseOrder orderID:%s, isAcceptIt:%t", order.VendorOrderID, isAcceptIt)
|
globals.SugarLogger.Debugf("jd AcceptOrRefuseOrder orderID:%s, isAcceptIt:%t", order.VendorOrderID, isAcceptIt)
|
||||||
if globals.EnableStoreWrite {
|
if globals.EnableJdStoreWrite {
|
||||||
err = getAPI("").OrderAcceptOperate(order.VendorOrderID, isAcceptIt, userName)
|
err = getAPI("").OrderAcceptOperate(order.VendorOrderID, isAcceptIt, userName)
|
||||||
if isAcceptIt && err == nil {
|
if isAcceptIt && err == nil {
|
||||||
c.postFakeMsg(order.VendorOrderID, jdapi.StatusIDWaitOutStore)
|
c.postFakeMsg(order.VendorOrderID, jdapi.StatusIDWaitOutStore)
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ func (p *PurchaseHandler) CreateCategory(db *dao.DaoDB, cat *model.SkuCategory,
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if globals.EnableStoreWrite {
|
if globals.EnableJdStoreWrite {
|
||||||
result, err2 := getAPI("").AddShopCategory(jdPid, cat.Name, int(cat.Level), cat.Seq, userName)
|
result, err2 := getAPI("").AddShopCategory(jdPid, cat.Name, int(cat.Level), cat.Seq, userName)
|
||||||
if err = err2; err == nil {
|
if err = err2; err == nil {
|
||||||
if jdID := utils.Str2Int64WithDefault(result, 0); jdID != 0 {
|
if jdID := utils.Str2Int64WithDefault(result, 0); jdID != 0 {
|
||||||
@@ -109,14 +109,14 @@ func (p *PurchaseHandler) GetAllCategories(ctx *jxcontext.Context, vendorOrgCode
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (p *PurchaseHandler) UpdateCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) error {
|
func (p *PurchaseHandler) UpdateCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) error {
|
||||||
if globals.EnableStoreWrite {
|
if globals.EnableJdStoreWrite {
|
||||||
return getAPI("").UpdateShopCategory(cat.JdID, cat.Name)
|
return getAPI("").UpdateShopCategory(cat.JdID, cat.Name)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *PurchaseHandler) DeleteCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) error {
|
func (p *PurchaseHandler) DeleteCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) error {
|
||||||
if globals.EnableStoreWrite {
|
if globals.EnableJdStoreWrite {
|
||||||
return getAPI("").DelShopCategory(cat.JdID)
|
return getAPI("").DelShopCategory(cat.JdID)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
@@ -142,13 +142,48 @@ func (p *PurchaseHandler) ReorderCategories(db *dao.DaoDB, parentCatID int, user
|
|||||||
for k, v := range cats {
|
for k, v := range cats {
|
||||||
jdCatIDs[k] = v.JdID
|
jdCatIDs[k] = v.JdID
|
||||||
}
|
}
|
||||||
if globals.EnableStoreWrite {
|
if globals.EnableJdStoreWrite {
|
||||||
err = getAPI("").ChangeShopCategoryOrder(parentJDID, jdCatIDs)
|
err = getAPI("").ChangeShopCategoryOrder(parentJDID, jdCatIDs)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *PurchaseHandler) CreateCategory2(ctx *jxcontext.Context, cat *dao.SkuCategoryWithVendor) (err error) {
|
||||||
|
if globals.EnableJdStoreWrite {
|
||||||
|
result, err2 := getAPI(cat.VendorOrgCode).AddShopCategory(utils.Str2Int64(cat.VendorParentCatID), cat.Name, int(cat.Level), cat.Seq, ctx.GetUserName())
|
||||||
|
if err = err2; err == nil {
|
||||||
|
if jdID := utils.Str2Int64WithDefault(result, 0); jdID != 0 {
|
||||||
|
cat.VendorCatID = utils.Int64ToStr(jdID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
cat.VendorCatID = utils.Int64ToStr(jxutils.GenFakeID())
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *PurchaseHandler) UpdateCategory2(ctx *jxcontext.Context, cat *dao.SkuCategoryWithVendor) (err error) {
|
||||||
|
if globals.EnableJdStoreWrite {
|
||||||
|
err = getAPI(cat.VendorOrgCode).UpdateShopCategory(utils.Str2Int64(cat.VendorCatID), cat.Name)
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *PurchaseHandler) DeleteCategory2(ctx *jxcontext.Context, cat *dao.SkuCategoryWithVendor) (err error) {
|
||||||
|
if globals.EnableJdStoreWrite {
|
||||||
|
err = getAPI(cat.VendorOrgCode).DelShopCategory(utils.Str2Int64(cat.VendorCatID))
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *PurchaseHandler) ReorderCategories2(ctx *jxcontext.Context, vendorOrgCode, vendorParentCatID string, vendorCatIDList []string) (err error) {
|
||||||
|
if globals.EnableJdStoreWrite {
|
||||||
|
err = getAPI(vendorOrgCode).ChangeShopCategoryOrder(utils.Str2Int64(vendorParentCatID), utils.StringSlice2Int64(vendorCatIDList))
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
func (p *PurchaseHandler) cuSku(db *dao.DaoDB, sku *model.Sku, handler func(skuExt *tSkuInfoExt, price int, skuName string, shopCategories []int64, addParams map[string]interface{}) (string, error)) (err error) {
|
func (p *PurchaseHandler) cuSku(db *dao.DaoDB, sku *model.Sku, handler func(skuExt *tSkuInfoExt, price int, skuName string, shopCategories []int64, addParams map[string]interface{}) (string, error)) (err error) {
|
||||||
var skuInfoExt tSkuInfoExt
|
var skuInfoExt tSkuInfoExt
|
||||||
err = dao.GetRow(nil, &skuInfoExt, `
|
err = dao.GetRow(nil, &skuInfoExt, `
|
||||||
@@ -215,7 +250,7 @@ func (p *PurchaseHandler) cuSku(db *dao.DaoDB, sku *model.Sku, handler func(skuE
|
|||||||
func (p *PurchaseHandler) CreateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) {
|
func (p *PurchaseHandler) CreateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) {
|
||||||
return p.cuSku(db, sku, func(skuExt *tSkuInfoExt, price int, skuName string, shopCategories []int64, addParams map[string]interface{}) (vendorSkuID string, err error) {
|
return p.cuSku(db, sku, func(skuExt *tSkuInfoExt, price int, skuName string, shopCategories []int64, addParams map[string]interface{}) (vendorSkuID string, err error) {
|
||||||
if skuExt.IsSpu == 0 {
|
if skuExt.IsSpu == 0 {
|
||||||
if globals.EnableStoreWrite {
|
if globals.EnableJdStoreWrite {
|
||||||
vendorSkuID, err = getAPI("").AddSku(utils.Int2Str(sku.ID), skuExt.JdCategoryID, shopCategories, skuExt.BrandID, skuName, price, jxutils.IntWeight2Float(sku.Weight), jxutils.BatchString2Slice(skuExt.Img, skuExt.Img2), jxStatus2jdStatus(sku.Status), true, addParams)
|
vendorSkuID, err = getAPI("").AddSku(utils.Int2Str(sku.ID), skuExt.JdCategoryID, shopCategories, skuExt.BrandID, skuName, price, jxutils.IntWeight2Float(sku.Weight), jxutils.BatchString2Slice(skuExt.Img, skuExt.Img2), jxStatus2jdStatus(sku.Status), true, addParams)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if jdSkuID := jdapi.GetJdSkuIDFromError(err); jdSkuID > 0 {
|
if jdSkuID := jdapi.GetJdSkuIDFromError(err); jdSkuID > 0 {
|
||||||
@@ -311,7 +346,7 @@ func (p *PurchaseHandler) UpdateSku(db *dao.DaoDB, sku *model.Sku, userName stri
|
|||||||
params[jdapi.KeyImages] = jxutils.BatchString2Slice(skuExt.Img, skuExt.Img2)
|
params[jdapi.KeyImages] = jxutils.BatchString2Slice(skuExt.Img, skuExt.Img2)
|
||||||
params[jdapi.KeyFixedStatus] = jxStatus2jdStatus(sku.Status)
|
params[jdapi.KeyFixedStatus] = jxStatus2jdStatus(sku.Status)
|
||||||
if skuExt.IsSpu == 0 {
|
if skuExt.IsSpu == 0 {
|
||||||
if globals.EnableStoreWrite {
|
if globals.EnableJdStoreWrite {
|
||||||
vendorSkuID, err = getAPI("").UpdateSku(utils.Int2Str(sku.ID), params)
|
vendorSkuID, err = getAPI("").UpdateSku(utils.Int2Str(sku.ID), params)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -335,7 +370,7 @@ func (p *PurchaseHandler) DeleteSku(db *dao.DaoDB, sku *model.Sku, userName stri
|
|||||||
err = dao.GetRow(db, &skuExt, sql, sku.ID)
|
err = dao.GetRow(db, &skuExt, sql, sku.ID)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
if skuExt.IsSpu == 0 {
|
if skuExt.IsSpu == 0 {
|
||||||
if globals.EnableStoreWrite {
|
if globals.EnableJdStoreWrite {
|
||||||
_, err = getAPI("").UpdateSku(utils.Int2Str(sku.ID), params)
|
_, err = getAPI("").UpdateSku(utils.Int2Str(sku.ID), params)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -380,7 +415,7 @@ func (p *PurchaseHandler) RefreshAllSkusID(ctx *jxcontext.Context, parentTask ta
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
globals.SugarLogger.Debug(utils.Format4Output(skuPairs, false))
|
globals.SugarLogger.Debug(utils.Format4Output(skuPairs, false))
|
||||||
if globals.EnableStoreWrite {
|
if globals.EnableJdStoreWrite {
|
||||||
_, err = getAPI("").BatchUpdateOutSkuId(skuPairs)
|
_, err = getAPI("").BatchUpdateOutSkuId(skuPairs)
|
||||||
}
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -420,7 +455,7 @@ func (p *PurchaseHandler) syncSkuNameAsSpu(db *dao.DaoDB, sku *model.Sku, skuExt
|
|||||||
globals.SugarLogger.Debugf("syncSkuNameAsSpu1 sku.id=%d, bareSkuName:%s, skuName:%s, skuNameJdID:%d", sku.ID, skuExt.Name, skuName, skuNameJdID)
|
globals.SugarLogger.Debugf("syncSkuNameAsSpu1 sku.id=%d, bareSkuName:%s, skuName:%s, skuNameJdID:%d", sku.ID, skuExt.Name, skuName, skuNameJdID)
|
||||||
spuAddParams, skuAddParams := splitAddParams(addParams)
|
spuAddParams, skuAddParams := splitAddParams(addParams)
|
||||||
if !jxutils.IsEmptyID(skuNameJdID) && sku.JdSyncStatus&model.SyncFlagDeletedMask != 0 { // 删除SKU
|
if !jxutils.IsEmptyID(skuNameJdID) && sku.JdSyncStatus&model.SyncFlagDeletedMask != 0 { // 删除SKU
|
||||||
if globals.EnableStoreWrite {
|
if globals.EnableJdStoreWrite {
|
||||||
err = getAPI("").UpdateSkuBaseInfo(utils.Int2Str(skuExt.ID), utils.Int2Str(sku.ID), utils.Params2Map(jdapi.KeyFixedStatus, jdapi.SkuFixedStatusDeleted))
|
err = getAPI("").UpdateSkuBaseInfo(utils.Int2Str(skuExt.ID), utils.Int2Str(sku.ID), utils.Params2Map(jdapi.KeyFixedStatus, jdapi.SkuFixedStatusDeleted))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -440,14 +475,14 @@ func (p *PurchaseHandler) syncSkuNameAsSpu(db *dao.DaoDB, sku *model.Sku, skuExt
|
|||||||
}
|
}
|
||||||
if count.Ct <= 1 && sku.JdSyncStatus&model.SyncFlagDeletedMask != 0 { // 1就是最后删的那个
|
if count.Ct <= 1 && sku.JdSyncStatus&model.SyncFlagDeletedMask != 0 { // 1就是最后删的那个
|
||||||
updateFields = append(updateFields, model.FieldJdSyncStatus)
|
updateFields = append(updateFields, model.FieldJdSyncStatus)
|
||||||
if globals.EnableStoreWrite {
|
if globals.EnableJdStoreWrite {
|
||||||
if err = getAPI("").UpdateSpu(utils.Int2Str(skuExt.ID), utils.Params2Map(jdapi.KeyFixedStatus, jdapi.SkuFixedStatusOffline)); err == nil {
|
if err = getAPI("").UpdateSpu(utils.Int2Str(skuExt.ID), utils.Params2Map(jdapi.KeyFixedStatus, jdapi.SkuFixedStatusOffline)); err == nil {
|
||||||
err = getAPI("").UpdateSpu(utils.Int2Str(skuExt.ID), utils.Params2Map(jdapi.KeyFixedStatus, jdapi.SkuFixedStatusDeleted))
|
err = getAPI("").UpdateSpu(utils.Int2Str(skuExt.ID), utils.Params2Map(jdapi.KeyFixedStatus, jdapi.SkuFixedStatusDeleted))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if skuExt.JdSyncStatus&model.SyncFlagNewMask != 0 && jxutils.IsEmptyID(skuNameJdID) {
|
} else if skuExt.JdSyncStatus&model.SyncFlagNewMask != 0 && jxutils.IsEmptyID(skuNameJdID) {
|
||||||
if globals.EnableStoreWrite {
|
if globals.EnableJdStoreWrite {
|
||||||
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{}{
|
||||||
@@ -462,7 +497,7 @@ func (p *PurchaseHandler) syncSkuNameAsSpu(db *dao.DaoDB, sku *model.Sku, skuExt
|
|||||||
}
|
}
|
||||||
skus[0] = utils.MergeMaps(skus[0], skuAddParams)
|
skus[0] = utils.MergeMaps(skus[0], skuAddParams)
|
||||||
updateFields = append(updateFields, model.FieldJdSyncStatus)
|
updateFields = append(updateFields, model.FieldJdSyncStatus)
|
||||||
if globals.EnableStoreWrite {
|
if globals.EnableJdStoreWrite {
|
||||||
vendorSpuID, skuPairs, err2 := getAPI("").AddSpu(utils.Int2Str(skuExt.ID), skuExt.JdCategoryID, shopCategories, skuExt.BrandID, spuName, []string{skuExt.Img}, jxStatus2jdStatus(skuExt.Status), spuAddParams, skus)
|
vendorSpuID, skuPairs, err2 := getAPI("").AddSpu(utils.Int2Str(skuExt.ID), skuExt.JdCategoryID, shopCategories, skuExt.BrandID, spuName, []string{skuExt.Img}, jxStatus2jdStatus(skuExt.Status), spuAddParams, skus)
|
||||||
if err = err2; err == nil {
|
if err = err2; err == nil {
|
||||||
skuExt.JdID = vendorSpuID
|
skuExt.JdID = vendorSpuID
|
||||||
@@ -483,7 +518,7 @@ func (p *PurchaseHandler) syncSkuNameAsSpu(db *dao.DaoDB, sku *model.Sku, skuExt
|
|||||||
jdapi.KeyFixedStatus: jxStatus2jdStatus(skuExt.Status),
|
jdapi.KeyFixedStatus: jxStatus2jdStatus(skuExt.Status),
|
||||||
}, spuAddParams)
|
}, spuAddParams)
|
||||||
updateFields = append(updateFields, model.FieldJdSyncStatus)
|
updateFields = append(updateFields, model.FieldJdSyncStatus)
|
||||||
if globals.EnableStoreWrite {
|
if globals.EnableJdStoreWrite {
|
||||||
err = getAPI("").UpdateSpu(utils.Int2Str(skuExt.ID), params)
|
err = getAPI("").UpdateSpu(utils.Int2Str(skuExt.ID), params)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -497,7 +532,7 @@ func (p *PurchaseHandler) syncSkuNameAsSpu(db *dao.DaoDB, sku *model.Sku, skuExt
|
|||||||
}
|
}
|
||||||
if err == nil && !jxutils.IsEmptyID(skuNameJdID) {
|
if err == nil && !jxutils.IsEmptyID(skuNameJdID) {
|
||||||
if sku.JdSyncStatus&model.SyncFlagNewMask != 0 { // 非首次新增SKU
|
if sku.JdSyncStatus&model.SyncFlagNewMask != 0 { // 非首次新增SKU
|
||||||
if globals.EnableStoreWrite {
|
if globals.EnableJdStoreWrite {
|
||||||
vendorSkuID2, err2 := getAPI("").AppendSku(utils.Int2Str(skuExt.ID), utils.Int2Str(sku.ID), skuName, price, jxutils.IntWeight2Float(sku.Weight), []string{skuExt.Img}, jxStatus2jdStatus(sku.Status), true, composeSkuSpec(sku.SpecQuality, sku.SpecUnit, skuExt.Unit), skuAddParams)
|
vendorSkuID2, err2 := getAPI("").AppendSku(utils.Int2Str(skuExt.ID), utils.Int2Str(sku.ID), skuName, price, jxutils.IntWeight2Float(sku.Weight), []string{skuExt.Img}, jxStatus2jdStatus(sku.Status), true, composeSkuSpec(sku.SpecQuality, sku.SpecUnit, skuExt.Unit), skuAddParams)
|
||||||
if err = err2; err == nil {
|
if err = err2; err == nil {
|
||||||
vendorSkuID = utils.Int64ToStr(vendorSkuID2)
|
vendorSkuID = utils.Int64ToStr(vendorSkuID2)
|
||||||
@@ -510,7 +545,7 @@ func (p *PurchaseHandler) syncSkuNameAsSpu(db *dao.DaoDB, sku *model.Sku, skuExt
|
|||||||
params[jdapi.KeyFixedStatus] = jxStatus2jdStatus(sku.Status)
|
params[jdapi.KeyFixedStatus] = jxStatus2jdStatus(sku.Status)
|
||||||
params[jdapi.KeyWeight] = jxutils.IntWeight2Float(sku.Weight)
|
params[jdapi.KeyWeight] = jxutils.IntWeight2Float(sku.Weight)
|
||||||
params[jdapi.KeySkuPrice] = price
|
params[jdapi.KeySkuPrice] = price
|
||||||
if globals.EnableStoreWrite {
|
if globals.EnableJdStoreWrite {
|
||||||
err = getAPI("").UpdateSkuBaseInfo(utils.Int2Str(skuExt.ID), utils.Int2Str(sku.ID), utils.MergeMaps(params, skuAddParams))
|
err = getAPI("").UpdateSkuBaseInfo(utils.Int2Str(skuExt.ID), utils.Int2Str(sku.ID), utils.MergeMaps(params, skuAddParams))
|
||||||
if sku.JdSyncStatus&model.SyncFlagSpecMask != 0 {
|
if sku.JdSyncStatus&model.SyncFlagSpecMask != 0 {
|
||||||
skuIndex := sku.SkuIndex
|
skuIndex := sku.SkuIndex
|
||||||
|
|||||||
@@ -30,6 +30,22 @@ func (p *PurchaseHandler) ReorderCategories(db *dao.DaoDB, parentCatID int, user
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *PurchaseHandler) CreateCategory2(ctx *jxcontext.Context, cat *dao.SkuCategoryWithVendor) (err error) {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *PurchaseHandler) UpdateCategory2(ctx *jxcontext.Context, cat *dao.SkuCategoryWithVendor) (err error) {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *PurchaseHandler) DeleteCategory2(ctx *jxcontext.Context, cat *dao.SkuCategoryWithVendor) (err error) {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *PurchaseHandler) ReorderCategories2(ctx *jxcontext.Context, vendorOrgCode, vendorParentCatID string, vendorCatIDList []string) (err error) {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
func (p *PurchaseHandler) CreateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) {
|
func (p *PurchaseHandler) CreateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user