89 lines
2.8 KiB
Go
89 lines
2.8 KiB
Go
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"
|
||
)
|
||
|
||
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) {
|
||
return &model.SkuMetaInfo{
|
||
Units: model.UnitNames,
|
||
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
|
||
}
|