- sku category.
This commit is contained in:
@@ -27,11 +27,11 @@ func GetPurchaseHandler(vendorID int) partner.IPurchasePlatformHandler {
|
|||||||
func (v *VendorSync) SyncCategory(categoryID int, isForce bool, userName string) (err error) {
|
func (v *VendorSync) SyncCategory(categoryID int, isForce bool, userName string) (err error) {
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
cats := []*model.SkuCategory{}
|
cats := []*model.SkuCategory{}
|
||||||
|
cond := make(map[string]interface{})
|
||||||
if categoryID != 0 {
|
if categoryID != 0 {
|
||||||
err = dao.GetRows(db, &cats, "SELECT * FROM sku_category WHERE id = ?", categoryID)
|
cond["ID"] = categoryID
|
||||||
} else {
|
|
||||||
err = dao.GetRows(db, &cats, "SELECT * FROM sku_category")
|
|
||||||
}
|
}
|
||||||
|
err = dao.GetEntities(db, &cats, cond, true)
|
||||||
for _, cat := range cats {
|
for _, cat := range cats {
|
||||||
if (cat.JdSyncStatus & model.SyncFlagNewMask) != 0 { // 新增
|
if (cat.JdSyncStatus & model.SyncFlagNewMask) != 0 { // 新增
|
||||||
err = GetPurchaseHandler(model.VendorIDJD).CreateCategory(cat, userName)
|
err = GetPurchaseHandler(model.VendorIDJD).CreateCategory(cat, userName)
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package cms
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
|
||||||
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||||
@@ -13,11 +14,14 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// parentID 为-1表示所有
|
// parentID 为-1表示所有
|
||||||
func GetVendorCategories(vendorID int, parentID int) (cats []*model.SkuVendorCategory, err error) {
|
func GetVendorCategories(vendorID int, parentID int) (vendorCats []*model.SkuVendorCategory, err error) {
|
||||||
if parentID == -1 {
|
cond := map[string]interface{}{
|
||||||
return cats, dao.GetRows(nil, &cats, "SELECT * FROM sku_vendor_category WHERE vendor_id = ?", vendorID)
|
"VendorID": vendorID,
|
||||||
}
|
}
|
||||||
return cats, dao.GetRows(nil, &cats, "SELECT * FROM sku_vendor_category WHERE vendor_id = ? AND parent_id = ?", vendorID, parentID)
|
if parentID != -1 {
|
||||||
|
cond["ParentID"] = parentID
|
||||||
|
}
|
||||||
|
return vendorCats, dao.GetEntities(nil, &vendorCats, cond, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetSkuMetaInfo() (*model.SkuMetaInfo, error) {
|
func GetSkuMetaInfo() (*model.SkuMetaInfo, error) {
|
||||||
@@ -30,14 +34,15 @@ func GetSkuMetaInfo() (*model.SkuMetaInfo, error) {
|
|||||||
// parentID 为-1表示所有
|
// parentID 为-1表示所有
|
||||||
func GetCategories(parentID int) (cats []*model.SkuCategory, err error) {
|
func GetCategories(parentID int) (cats []*model.SkuCategory, err error) {
|
||||||
if parentID == -1 {
|
if parentID == -1 {
|
||||||
return cats, dao.GetRows(nil, &cats, "SELECT * FROM sku_category")
|
return cats, dao.GetEntities(nil, &cats, nil, false)
|
||||||
}
|
}
|
||||||
return cats, dao.GetRows(nil, &cats, "SELECT * FROM sku_category WHERE parent_id = ?", parentID)
|
return cats, dao.GetEntities(nil, &cats, utils.Params2Map("ParentID", parentID), false)
|
||||||
}
|
}
|
||||||
|
|
||||||
func AddCategory(cat *model.SkuCategory, userName string) (outCat *model.SkuCategory, err error) {
|
func AddCategory(cat *model.SkuCategory, userName string) (outCat *model.SkuCategory, err error) {
|
||||||
cat.ID = 0
|
cat.ID = 0
|
||||||
cat.JdSyncStatus = model.SyncFlagNewMask
|
cat.JdSyncStatus = model.SyncFlagNewMask
|
||||||
|
cat.DeletedAt = utils.DefaultTimeValue
|
||||||
if err = dao.CreateEntity(nil, cat); err == nil {
|
if err = dao.CreateEntity(nil, cat); err == nil {
|
||||||
outCat = cat
|
outCat = cat
|
||||||
err = CurVendorSync.SyncCategory(cat.ID, false, userName)
|
err = CurVendorSync.SyncCategory(cat.ID, false, userName)
|
||||||
@@ -63,7 +68,7 @@ func ReorderCategories(parentID int, categoryIDs []int, userName string) (err er
|
|||||||
parentCat.ID = parentID
|
parentCat.ID = parentID
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
if err = dao.GetEntity(db, parentCat); err == nil {
|
if err = dao.GetEntity(db, parentCat); err == nil {
|
||||||
if err = dao.GetRows(db, &cats, "SELECT * FROM sku_category WHERE parent_id = ?", parentID); err == nil {
|
if err = dao.GetEntities(db, &cats, utils.Params2Map("ParentID", parentID), false); err == nil {
|
||||||
catsLen := len(cats)
|
catsLen := len(cats)
|
||||||
if catsLen != len(categoryIDs) {
|
if catsLen != len(categoryIDs) {
|
||||||
return ErrInputCatsDoesntMatch
|
return ErrInputCatsDoesntMatch
|
||||||
@@ -86,3 +91,9 @@ func ReorderCategories(parentID int, categoryIDs []int, userName string) (err er
|
|||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func DeleteCategory(categoryID int, isForce bool, userName string) (num int64, err error) {
|
||||||
|
cat := &model.SkuCategory{}
|
||||||
|
cat.ID = categoryID
|
||||||
|
return dao.DeleteEntity(nil, cat, nil, userName)
|
||||||
|
}
|
||||||
|
|||||||
@@ -237,10 +237,13 @@ func CreateStore(store *model.Store, userName string) (id int, err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func SyncStore2Vendor(db *dao.DaoDB, vendorID int, store *model.Store, isForce bool, userName string) (err error) {
|
func SyncStore2Vendor(db *dao.DaoDB, vendorID int, store *model.Store, isForce bool, userName string) (err error) {
|
||||||
|
var (
|
||||||
|
storeMaps []*model.StoreMap
|
||||||
|
)
|
||||||
if db == nil {
|
if db == nil {
|
||||||
db = dao.GetDB()
|
db = dao.GetDB()
|
||||||
}
|
}
|
||||||
storeMaps, err := GetStoreVendorMaps(db, store.ID, -1)
|
err = dao.GetEntities(db, &storeMaps, utils.Params2Map("StoreID", store.ID), true)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
// globals.SugarLogger.Debug(utils.Format4Output(store, false))
|
// globals.SugarLogger.Debug(utils.Format4Output(store, false))
|
||||||
copiedStore := *store
|
copiedStore := *store
|
||||||
@@ -258,12 +261,13 @@ func SyncStore2Vendor(db *dao.DaoDB, vendorID int, store *model.Store, isForce b
|
|||||||
}
|
}
|
||||||
|
|
||||||
func GetStoreVendorMaps(db *dao.DaoDB, storeID int, vendorID int) (storeMaps []*model.StoreMap, err error) {
|
func GetStoreVendorMaps(db *dao.DaoDB, storeID int, vendorID int) (storeMaps []*model.StoreMap, err error) {
|
||||||
if vendorID == -1 {
|
cond := map[string]interface{}{
|
||||||
err = dao.GetRows(db, &storeMaps, "SELECT * FROM store_map WHERE store_id = ?", storeID)
|
"StoreID": storeID,
|
||||||
} else {
|
|
||||||
err = dao.GetRows(db, &storeMaps, "SELECT * FROM store_map WHERE store_id = ? AND vendor_id = ?", storeID, vendorID)
|
|
||||||
}
|
}
|
||||||
return storeMaps, err
|
if vendorID != -1 {
|
||||||
|
cond["VendorID"] = vendorID
|
||||||
|
}
|
||||||
|
return storeMaps, dao.GetEntities(db, &storeMaps, cond, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
func AddStoreVendorMap(db *dao.DaoDB, storeMap *model.StoreMap, userName string) (outStoreMap *model.StoreMap, err error) {
|
func AddStoreVendorMap(db *dao.DaoDB, storeMap *model.StoreMap, userName string) (outStoreMap *model.StoreMap, err error) {
|
||||||
@@ -281,7 +285,7 @@ func AddStoreVendorMap(db *dao.DaoDB, storeMap *model.StoreMap, userName string)
|
|||||||
|
|
||||||
func DeleteStoreVendorMap(db *dao.DaoDB, storeID, vendorID int, userName string) (num int64, err error) {
|
func DeleteStoreVendorMap(db *dao.DaoDB, storeID, vendorID int, userName string) (num int64, err error) {
|
||||||
storeMap := &model.StoreMap{}
|
storeMap := &model.StoreMap{}
|
||||||
return dao.DeleteEntity(db, storeMap, utils.Params2Map("StoreID", storeID, "VendorID", vendorID))
|
return dao.DeleteEntity(db, storeMap, utils.Params2Map("StoreID", storeID, "VendorID", vendorID), "")
|
||||||
}
|
}
|
||||||
|
|
||||||
func UpdateStoreVendorMap(db *dao.DaoDB, storeID, vendorID int, payload map[string]interface{}, userName string) (num int64, err error) {
|
func UpdateStoreVendorMap(db *dao.DaoDB, storeID, vendorID int, payload map[string]interface{}, userName string) (num int64, err error) {
|
||||||
|
|||||||
@@ -2,9 +2,11 @@ package dao
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"reflect"
|
"reflect"
|
||||||
|
"time"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
"github.com/astaxie/beego/orm"
|
"github.com/astaxie/beego/orm"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -79,6 +81,30 @@ func GetEntity(db *DaoDB, item interface{}, cols ...string) (err error) {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetEntities(db *DaoDB, item interface{}, conditions map[string]interface{}, isIncludeDeleted bool) (err error) {
|
||||||
|
if db == nil {
|
||||||
|
db = GetDB()
|
||||||
|
}
|
||||||
|
err = utils.CallFuncLogError(func() error {
|
||||||
|
typeInfo := reflect.TypeOf(item).Elem().Elem()
|
||||||
|
if typeInfo.Kind() == reflect.Ptr {
|
||||||
|
typeInfo = typeInfo.Elem()
|
||||||
|
}
|
||||||
|
qs := db.db.QueryTable(reflect.New(typeInfo).Interface())
|
||||||
|
for k, v := range conditions {
|
||||||
|
qs = qs.Filter(k, v)
|
||||||
|
}
|
||||||
|
if !isIncludeDeleted {
|
||||||
|
if _, ok := typeInfo.FieldByName(model.FieldDeletedAt); ok {
|
||||||
|
qs = qs.Filter(model.FieldDeletedAt, utils.DefaultTimeValue)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_, err = qs.All(item)
|
||||||
|
return err
|
||||||
|
}, reflect.TypeOf(item).Name())
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
func UpdateEntity(db *DaoDB, item interface{}, cols ...string) (num int64, err error) {
|
func UpdateEntity(db *DaoDB, item interface{}, cols ...string) (num int64, err error) {
|
||||||
if db == nil {
|
if db == nil {
|
||||||
db = GetDB()
|
db = GetDB()
|
||||||
@@ -97,7 +123,7 @@ func UpdateEntityByKV(db *DaoDB, item interface{}, kvs map[string]interface{}, c
|
|||||||
err = utils.CallFuncLogError(func() error {
|
err = utils.CallFuncLogError(func() error {
|
||||||
qs := db.db.QueryTable(item)
|
qs := db.db.QueryTable(item)
|
||||||
if conditions == nil {
|
if conditions == nil {
|
||||||
qs = qs.Filter("id", jxutils.GetObjFieldByName(item, "ID"))
|
qs = qs.Filter(model.FieldID, jxutils.GetObjFieldByName(item, model.FieldID))
|
||||||
} else {
|
} else {
|
||||||
for k, v := range conditions {
|
for k, v := range conditions {
|
||||||
qs = qs.Filter(k, v)
|
qs = qs.Filter(k, v)
|
||||||
@@ -120,18 +146,23 @@ func CreateEntity(db *DaoDB, item interface{}) (err error) {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func DeleteEntity(db *DaoDB, item interface{}, conditions map[string]interface{}) (num int64, err error) {
|
// 如果logicDeletedBy不为空,表示逻辑删除,否则物理删除
|
||||||
|
func DeleteEntity(db *DaoDB, item interface{}, conditions map[string]interface{}, logicDeletedBy string) (num int64, err error) {
|
||||||
if db == nil {
|
if db == nil {
|
||||||
db = GetDB()
|
db = GetDB()
|
||||||
}
|
}
|
||||||
err = utils.CallFuncLogError(func() error {
|
err = utils.CallFuncLogError(func() error {
|
||||||
if len(conditions) == 0 {
|
|
||||||
num, err = db.db.Delete(item)
|
|
||||||
} else {
|
|
||||||
qs := db.db.QueryTable(item)
|
qs := db.db.QueryTable(item)
|
||||||
|
if len(conditions) == 0 {
|
||||||
|
qs = qs.Filter("ID", jxutils.GetObjFieldByName(item, model.FieldID))
|
||||||
|
} else {
|
||||||
for k, v := range conditions {
|
for k, v := range conditions {
|
||||||
qs = qs.Filter(k, v)
|
qs = qs.Filter(k, v)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if logicDeletedBy != "" {
|
||||||
|
num, err = qs.Update(utils.Params2Map(model.FieldDeletedAt, time.Now(), model.FieldUpdatedAt, time.Now(), model.FieldLastOperator, logicDeletedBy))
|
||||||
|
} else {
|
||||||
num, err = qs.Delete()
|
num, err = qs.Delete()
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
|
|||||||
@@ -4,6 +4,13 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
FieldID = "ID"
|
||||||
|
FieldDeletedAt = "DeletedAt"
|
||||||
|
FieldUpdatedAt = "UpdatedAt"
|
||||||
|
FieldLastOperator = "LastOperator"
|
||||||
|
)
|
||||||
|
|
||||||
type ModelIDCUL struct {
|
type ModelIDCUL struct {
|
||||||
ID int `orm:"column(id)" json:"id"`
|
ID int `orm:"column(id)" json:"id"`
|
||||||
CreatedAt time.Time `orm:"auto_now_add;type(datetime)" json:"createdAt"`
|
CreatedAt time.Time `orm:"auto_now_add;type(datetime)" json:"createdAt"`
|
||||||
@@ -11,6 +18,14 @@ type ModelIDCUL struct {
|
|||||||
LastOperator string `orm:"size(32)" json:"lastOperator"` // 最后操作员
|
LastOperator string `orm:"size(32)" json:"lastOperator"` // 最后操作员
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ModelIDCULD struct {
|
||||||
|
ID int `orm:"column(id)" json:"id"`
|
||||||
|
CreatedAt time.Time `orm:"auto_now_add;type(datetime)" json:"createdAt"`
|
||||||
|
UpdatedAt time.Time `orm:"auto_now;type(datetime)" json:"updatedAt"`
|
||||||
|
LastOperator string `orm:"size(32)" json:"lastOperator"` // 最后操作员
|
||||||
|
DeletedAt time.Time `orm:"type(datetime);default('1970-01-01 00:00:00')" json:"deletedAt"`
|
||||||
|
}
|
||||||
|
|
||||||
// flag按位表示,第一位表示修改,第二位表示新增,第三位表示删除
|
// flag按位表示,第一位表示修改,第二位表示新增,第三位表示删除
|
||||||
const (
|
const (
|
||||||
SyncFlagModifiedMask = 1
|
SyncFlagModifiedMask = 1
|
||||||
|
|||||||
Reference in New Issue
Block a user