- sku category man almost ok.
- mysql connect str add utf8mb4.
This commit is contained in:
@@ -4,9 +4,18 @@ import (
|
||||
"errors"
|
||||
|
||||
"git.rosy.net.cn/jx-callback/business/jxcallback/scheduler/basesch"
|
||||
"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"
|
||||
)
|
||||
|
||||
type VendorSync struct {
|
||||
}
|
||||
|
||||
var (
|
||||
CurVendorSync VendorSync
|
||||
)
|
||||
|
||||
var (
|
||||
ErrHaveNotImplementedYet = errors.New("还没有实现")
|
||||
)
|
||||
@@ -14,3 +23,28 @@ var (
|
||||
func GetPurchaseHandler(vendorID int) partner.IPurchasePlatformHandler {
|
||||
return basesch.FixedBaseScheduler.GetPurchasePlatformFromVendorID(vendorID)
|
||||
}
|
||||
|
||||
func (v *VendorSync) SyncCategory(categoryID int, isForce bool, userName string) (err error) {
|
||||
db := dao.GetDB()
|
||||
cats := []*model.SkuCategory{}
|
||||
if categoryID != 0 {
|
||||
err = dao.GetRows(db, &cats, "SELECT * FROM sku_category WHERE id = ?", categoryID)
|
||||
} else {
|
||||
err = dao.GetRows(db, &cats, "SELECT * FROM sku_category")
|
||||
}
|
||||
for _, cat := range cats {
|
||||
if (cat.JdSyncStatus & model.SyncFlagNewMask) != 0 { // 新增
|
||||
err = GetPurchaseHandler(model.VendorIDJD).CreateCategory(cat, userName)
|
||||
} else if (cat.JdSyncStatus&model.SyncFlagModifiedMask) != 0 || isForce { // 修改
|
||||
err = GetPurchaseHandler(model.VendorIDJD).UpdateCategory(cat, userName)
|
||||
}
|
||||
if err == nil {
|
||||
cat.JdSyncStatus = 0
|
||||
_, err = dao.UpdateEntity(db, cat, "JdSyncStatus")
|
||||
}
|
||||
if err != nil {
|
||||
break
|
||||
}
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -1,13 +1,23 @@
|
||||
package cms
|
||||
|
||||
import (
|
||||
"errors"
|
||||
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||
)
|
||||
|
||||
func GetVendorCategories(vendorID int) ([]*model.SkuVendorCategory, error) {
|
||||
cats := []*model.SkuVendorCategory{}
|
||||
return cats, dao.GetRows(nil, &cats, "SELECT * FROM sku_vendor_category WHERE vendor_id = ?", vendorID)
|
||||
var (
|
||||
ErrInputCatsDoesntMatch = errors.New("输入的类别列表不合法,需要输入一个父ID下的所有子类别")
|
||||
)
|
||||
|
||||
// parentID 为-1表示所有
|
||||
func GetVendorCategories(vendorID int, parentID int) (cats []*model.SkuVendorCategory, err error) {
|
||||
if parentID == -1 {
|
||||
return cats, dao.GetRows(nil, &cats, "SELECT * FROM sku_vendor_category WHERE vendor_id = ?", vendorID)
|
||||
}
|
||||
return cats, dao.GetRows(nil, &cats, "SELECT * FROM sku_vendor_category WHERE vendor_id = ? AND parent_id = ?", vendorID, parentID)
|
||||
}
|
||||
|
||||
func GetSkuMetaInfo() (*model.SkuMetaInfo, error) {
|
||||
@@ -16,3 +26,63 @@ func GetSkuMetaInfo() (*model.SkuMetaInfo, error) {
|
||||
SpecUnits: model.SpecUnitNames,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// parentID 为-1表示所有
|
||||
func GetCategories(parentID int) (cats []*model.SkuCategory, err error) {
|
||||
if parentID == -1 {
|
||||
return cats, dao.GetRows(nil, &cats, "SELECT * FROM sku_category")
|
||||
}
|
||||
return cats, dao.GetRows(nil, &cats, "SELECT * FROM sku_category WHERE parent_id = ?", parentID)
|
||||
}
|
||||
|
||||
func AddCategory(cat *model.SkuCategory, userName string) (outCat *model.SkuCategory, err error) {
|
||||
cat.ID = 0
|
||||
cat.JdSyncStatus = model.SyncFlagNewMask
|
||||
if err = dao.CreateEntity(nil, cat); err == nil {
|
||||
outCat = cat
|
||||
err = CurVendorSync.SyncCategory(cat.ID, false, userName)
|
||||
}
|
||||
return outCat, err
|
||||
}
|
||||
|
||||
func UpdateCategory(categoryID int, payload map[string]interface{}, userName string) (num int64, err error) {
|
||||
cat := &model.SkuCategory{}
|
||||
cat.ID = categoryID
|
||||
valid := jxutils.NormalMakeMapByStructObject(payload, cat, userName)
|
||||
valid["JdSyncStatus"] = model.SyncFlagModifiedMask
|
||||
db := dao.GetDB()
|
||||
if num, err = dao.UpdateEntityByKV(db, cat, valid, nil); err == nil {
|
||||
err = CurVendorSync.SyncCategory(categoryID, false, userName)
|
||||
}
|
||||
return num, err
|
||||
}
|
||||
|
||||
func ReorderCategories(parentID int, categoryIDs []int, userName string) (err error) {
|
||||
var cats []*model.SkuCategory
|
||||
parentCat := &model.SkuCategory{}
|
||||
parentCat.ID = parentID
|
||||
db := dao.GetDB()
|
||||
if err = dao.GetEntity(db, parentCat); err == nil {
|
||||
if err = dao.GetRows(db, &cats, "SELECT * FROM sku_category WHERE parent_id = ?", parentID); err == nil {
|
||||
catsLen := len(cats)
|
||||
if catsLen != len(categoryIDs) {
|
||||
return ErrInputCatsDoesntMatch
|
||||
}
|
||||
catsMap := make(map[int]*model.SkuCategory, catsLen)
|
||||
for _, cat := range cats {
|
||||
catsMap[cat.ID] = cat
|
||||
}
|
||||
for k, v := range categoryIDs {
|
||||
catsMap[v].Seq = k * 5
|
||||
// catsMap[v].JdSyncStatus = model.SyncFlagModifiedMask
|
||||
if _, err = dao.UpdateEntity(db, catsMap[v], "Seq"); err != nil {
|
||||
break
|
||||
}
|
||||
}
|
||||
if err == nil {
|
||||
err = GetPurchaseHandler(model.VendorIDJD).ReorderCategories(parentCat, userName)
|
||||
}
|
||||
}
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -211,11 +211,9 @@ func GetVendorStore(vendorStoreID string, vendorID int) (retVal *StoreExt, err e
|
||||
func UpdateStore(storeID int, payload map[string]interface{}, userName string) (num int64, err error) {
|
||||
store := &model.Store{}
|
||||
store.ID = storeID
|
||||
valid := jxutils.NormalMakeMapByStructObject(payload, &model.Store{}, userName)
|
||||
valid := jxutils.NormalMakeMapByStructObject(payload, store, userName)
|
||||
db := dao.GetDB()
|
||||
globals.SugarLogger.Debug("1")
|
||||
if num, err = dao.UpdateEntityByKV(db, store, valid, nil); err == nil {
|
||||
globals.SugarLogger.Debug("2")
|
||||
dummy := &model.StoreMap{}
|
||||
_, err2 := dao.UpdateEntityByKV(db, dummy, utils.Params2Map("SyncStatus", model.SyncFlagModifiedMask), utils.Params2Map("StoreID", store.ID))
|
||||
if err = err2; err == nil {
|
||||
|
||||
Reference in New Issue
Block a user