- sku category man almost ok.

- mysql connect str add utf8mb4.
This commit is contained in:
gazebo
2018-09-09 20:43:48 +08:00
parent d71b0e6763
commit d8907cf010
14 changed files with 304 additions and 41 deletions

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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 {