aa
This commit is contained in:
@@ -2740,3 +2740,161 @@ func UpdateSkuExinfoMap(ctx *jxcontext.Context, nameIDs []int, imgWaterMark stri
|
||||
}
|
||||
return hint, err
|
||||
}
|
||||
|
||||
func GetVendorCategoryMap(ctx *jxcontext.Context, parentID, level, vendorID int, vendorOrgCode string) (vendorMaps []*model.VendorCategoryMap, err error) {
|
||||
db := dao.GetDB()
|
||||
vendorMaps, err = dao.GetVendorCategoryMap(db, parentID, level, vendorID, vendorOrgCode, 0)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return vendorMaps, err
|
||||
}
|
||||
|
||||
func AddVendorCategoryMap(ctx *jxcontext.Context, vendorCategoryMap *model.VendorCategoryMap) (result *model.VendorCategoryMap, err error) {
|
||||
var (
|
||||
db = dao.GetDB()
|
||||
)
|
||||
if vendorCategoryMap.Level != 1 {
|
||||
storeCatMaps, _ := dao.GetVendorCategoryMap(db, -1, 0, vendorCategoryMap.VendorID, vendorCategoryMap.VendorOrgCode, vendorCategoryMap.CategoryID)
|
||||
if len(storeCatMaps) > 0 {
|
||||
return nil, fmt.Errorf("已存在绑定的京西分类,分类名:[%v]", storeCatMaps[0].VendorCategoryName)
|
||||
}
|
||||
}
|
||||
vendorCategoryMap.VendorCategoryName = strings.Trim(vendorCategoryMap.VendorCategoryName, " ")
|
||||
dao.WrapAddIDCULDEntity(vendorCategoryMap, ctx.GetUserName())
|
||||
dao.Begin(db)
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
dao.Rollback(db)
|
||||
panic(r)
|
||||
}
|
||||
}()
|
||||
if err = dao.CreateEntity(db, vendorCategoryMap); err != nil {
|
||||
dao.Rollback(db)
|
||||
return nil, err
|
||||
}
|
||||
dao.Commit(db)
|
||||
result = vendorCategoryMap
|
||||
if vendorCategoryMap.CategoryID != 0 {
|
||||
_, err = CurVendorSync.SyncCategory(ctx, nil, vendorCategoryMap.CategoryID, false, ctx.GetUserName())
|
||||
}
|
||||
return result, err
|
||||
}
|
||||
|
||||
func UpdateVendorCategoryMap(ctx *jxcontext.Context, ID int, vendorCategoryMap *model.VendorCategoryMap, isDelete bool) (num int64, err error) {
|
||||
var (
|
||||
db = dao.GetDB()
|
||||
valid = make(map[string]interface{})
|
||||
vendorCategoryMap2 = &model.VendorCategoryMap{}
|
||||
vendorCategoryID int
|
||||
)
|
||||
vendorCategoryMap2.ID = ID
|
||||
if err = dao.GetEntity(db, vendorCategoryMap2); err != nil {
|
||||
return 0, err
|
||||
}
|
||||
if vendorCategoryMap.VendorCategoryName != "" {
|
||||
valid["vendorCategoryName"] = vendorCategoryMap.VendorCategoryName
|
||||
}
|
||||
if vendorCategoryMap.CategoryID != 0 {
|
||||
valid["categoryID"] = vendorCategoryMap.CategoryID
|
||||
if !isDelete {
|
||||
storeCatMaps, _ := dao.GetVendorCategoryMap(db, -1, 0, vendorCategoryMap2.VendorID, vendorCategoryMap2.VendorOrgCode, vendorCategoryMap.CategoryID)
|
||||
if len(storeCatMaps) > 0 {
|
||||
for _, v := range storeCatMaps {
|
||||
if v.ID != ID {
|
||||
return 0, fmt.Errorf("已存在绑定的京西分类,分类名:[%v]", storeCatMaps[0].VendorCategoryName)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
vendorCategoryID = vendorCategoryMap.CategoryID
|
||||
} else {
|
||||
vendorCategoryID = vendorCategoryMap2.CategoryID
|
||||
}
|
||||
if vendorCategoryMap.Level != 0 {
|
||||
valid["level"] = vendorCategoryMap.Level
|
||||
if vendorCategoryMap.Level == 2 {
|
||||
cat2, _ := dao.GetCategories(db, -1, 0, []int{vendorCategoryMap.CategoryID}, false)
|
||||
if len(cat2) > 0 {
|
||||
if cat2[0].ParentID != vendorCategoryMap.ParentID {
|
||||
return 0, fmt.Errorf("此二级分类只能绑定到对应一级分类下!")
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if isDelete {
|
||||
valid["deletedAt"] = time.Now()
|
||||
valid["updatedAt"] = time.Now()
|
||||
valid["lastOperator"] = ctx.GetUserName()
|
||||
//如果是1级分类则删除下面的子分类
|
||||
var catIDs []int
|
||||
if vendorCategoryMap2.Level == 1 {
|
||||
storeCatMaps, _ := dao.GetVendorCategoryMap(db, vendorCategoryMap2.CategoryID, 2, vendorCategoryMap2.VendorID, vendorCategoryMap2.VendorOrgCode, 0)
|
||||
if len(storeCatMaps) > 0 {
|
||||
for _, v := range storeCatMaps {
|
||||
catIDs = append(catIDs, v.CategoryID)
|
||||
v.DeletedAt = time.Now()
|
||||
v.LastOperator = ctx.GetUserName()
|
||||
dao.UpdateEntity(db, v, "DeletedAt", "LastOperator")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
dao.Begin(db)
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
dao.Rollback(db)
|
||||
panic(r)
|
||||
}
|
||||
}()
|
||||
if num, err = dao.UpdateEntityLogically(db, vendorCategoryMap2, valid, ctx.GetUserName(), nil); err != nil {
|
||||
dao.Rollback(db)
|
||||
return 0, err
|
||||
}
|
||||
if err = OnUpdateThing(ctx, db, nil, int64(vendorCategoryID), model.ThingTypeCategory); err != nil {
|
||||
dao.Rollback(db)
|
||||
return 0, err
|
||||
}
|
||||
dao.Commit(db)
|
||||
_, err = CurVendorSync.SyncCategory(ctx, nil, vendorCategoryID, false, ctx.GetUserName())
|
||||
return num, err
|
||||
}
|
||||
|
||||
func ReorderVendorCategories(ctx *jxcontext.Context, parentID, vendorID int, vendorOrgCode string, categoryIDs []int) (err error) {
|
||||
var (
|
||||
vendorCatsMap []*model.VendorCategoryMap
|
||||
)
|
||||
db := dao.GetDB()
|
||||
vendorCatsMap, err = dao.GetVendorCategoryMap(db, parentID, 0, vendorID, vendorOrgCode, 0)
|
||||
catsLen := len(vendorCatsMap)
|
||||
if catsLen != len(categoryIDs) {
|
||||
return ErrInputCatsDoesntMatch
|
||||
}
|
||||
catsMap := make(map[int]*model.VendorCategoryMap, catsLen)
|
||||
for _, cat := range vendorCatsMap {
|
||||
catsMap[cat.CategoryID] = cat
|
||||
}
|
||||
dao.Begin(db)
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
dao.Rollback(db)
|
||||
panic(r)
|
||||
}
|
||||
}()
|
||||
for k, v := range categoryIDs {
|
||||
if catsMap[v] == nil {
|
||||
dao.Rollback(db)
|
||||
return fmt.Errorf("分类:%d不在%d分类下", v, parentID)
|
||||
}
|
||||
catsMap[v].VendorCategorySeq = k
|
||||
catsMap[v].LastOperator = ctx.GetUserName()
|
||||
if _, err = dao.UpdateEntity(db, catsMap[v]); err != nil {
|
||||
dao.Rollback(db)
|
||||
return err
|
||||
}
|
||||
}
|
||||
dao.Commit(db)
|
||||
_, err = SyncCategories(ctx, nil, []int{model.VendorIDJD}, []string{vendorOrgCode}, categoryIDs, true)
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -441,3 +441,39 @@ func GetSkuVendorCategoryMaps(db *DaoDB, nameIDs, vendorIDs []int, vendorCategor
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
func GetVendorCategoryMap(db *DaoDB, parentID, level, vendorID int, vendorOrgCode string, categoryID int) (vendorMaps []*model.VendorCategoryMap, err error) {
|
||||
sql := `
|
||||
SELECT a.*
|
||||
FROM vendor_category_map a
|
||||
WHERE a.deleted_at = ?
|
||||
`
|
||||
sqlParams := []interface{}{
|
||||
utils.DefaultTimeValue,
|
||||
}
|
||||
if parentID >= 0 {
|
||||
sql += " AND a.parent_id = ?"
|
||||
sqlParams = append(sqlParams, parentID)
|
||||
}
|
||||
if level > 0 {
|
||||
sql += " AND a.level = ?"
|
||||
sqlParams = append(sqlParams, level)
|
||||
}
|
||||
if vendorID != -1 {
|
||||
sql += " AND a.vendor_id = ?"
|
||||
sqlParams = append(sqlParams, vendorID)
|
||||
}
|
||||
if vendorOrgCode != "" {
|
||||
sql += " AND a.vendor_org_code = ?"
|
||||
sqlParams = append(sqlParams, vendorOrgCode)
|
||||
}
|
||||
if categoryID > 0 {
|
||||
sql += " AND a.categoryID = ?"
|
||||
sqlParams = append(sqlParams, categoryID)
|
||||
}
|
||||
err = GetRows(db, &vendorMaps, sql, sqlParams)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return vendorMaps, err
|
||||
}
|
||||
|
||||
@@ -330,6 +330,8 @@ func (*SkuVendorCategoryMap) TableIndex() [][]string {
|
||||
|
||||
type VendorCategoryMap struct {
|
||||
ModelIDCULD
|
||||
|
||||
VendorID int `orm:"column(vendor_id)" json:"vendorID"`
|
||||
VendorOrgCode string `json:"vendorOrgCode"`
|
||||
CategoryID int `orm:"column(category_id)" json:"categoryID"` // 这个是指对应的sku_category
|
||||
VendorCategoryName string `orm:"size(255)" json:"vendorCategoryName"` // 平台类别单独的名字
|
||||
@@ -340,6 +342,6 @@ type VendorCategoryMap struct {
|
||||
|
||||
func (*VendorCategoryMap) TableUnique() [][]string {
|
||||
return [][]string{
|
||||
[]string{"VendorOrgCode", "CategoryID", "DeletedAt"},
|
||||
[]string{"VendorID", "VendorOrgCode", "CategoryID", "DeletedAt"},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -588,6 +588,16 @@ func (c *SkuController) GetVendorCategoryMap() {
|
||||
// @router /AddVendorCategoryMap [post]
|
||||
func (c *SkuController) AddVendorCategoryMap() {
|
||||
c.callAddVendorCategoryMap(func(params *tSkuAddVendorCategoryMapParams) (retVal interface{}, errCode string, err error) {
|
||||
vendorCategoryMap := &model.VendorCategoryMap{
|
||||
VendorID: params.VendorID,
|
||||
VendorOrgCode: params.VendorOrgCode,
|
||||
CategoryID: params.CategroyID,
|
||||
VendorCategoryName: params.VendorCategroyName,
|
||||
VendorCategorySeq: params.VendorCategroySeq,
|
||||
Level: params.Level,
|
||||
ParentID: params.ParentID,
|
||||
}
|
||||
retVal, err = cms.AddVendorCategoryMap(params.Ctx, vendorCategoryMap)
|
||||
return retVal, "", err
|
||||
})
|
||||
}
|
||||
@@ -606,6 +616,13 @@ func (c *SkuController) AddVendorCategoryMap() {
|
||||
// @router /UpdateVendorCategoryMap [put]
|
||||
func (c *SkuController) UpdateVendorCategoryMap() {
|
||||
c.callUpdateVendorCategoryMap(func(params *tSkuUpdateVendorCategoryMapParams) (retVal interface{}, errCode string, err error) {
|
||||
vendorCategoryMap := &model.VendorCategoryMap{
|
||||
CategoryID: params.CategoryID,
|
||||
VendorCategoryName: params.VendorCategroyName,
|
||||
Level: params.Level,
|
||||
ParentID: params.ParentID,
|
||||
}
|
||||
retVal, err = cms.UpdateVendorCategoryMap(params.Ctx, params.ID, vendorCategoryMap, params.IsDelete)
|
||||
return retVal, "", err
|
||||
})
|
||||
}
|
||||
@@ -622,6 +639,10 @@ func (c *SkuController) UpdateVendorCategoryMap() {
|
||||
// @router /ReorderVendorCategories [put]
|
||||
func (c *SkuController) ReorderVendorCategories() {
|
||||
c.callReorderVendorCategories(func(params *tSkuReorderVendorCategoriesParams) (retVal interface{}, errCode string, err error) {
|
||||
var idList []int
|
||||
if err = utils.UnmarshalUseNumber([]byte(params.CategoryIDs), &idList); err == nil {
|
||||
err = cms.ReorderVendorCategories(params.Ctx, params.CategoryID, params.VendorID, params.VendorOrgCode, idList)
|
||||
}
|
||||
return retVal, "", err
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user