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 }