RIceWqy 2 years ago
parent a392c4502a
commit b229f3df56

@ -9,38 +9,52 @@ func (Category) TableName() string {
} }
type Category struct { type Category struct {
Id int64 `json:"id"` Id int64 `json:"id"`
Type int64 `json:"type"` Image string `json:"image"`
Name string `json:"name"` Description string `json:"description"`
ParentId int64 `json:"parent_id"` Name string `json:"name"`
Children []Category `json:"children" xorm:"-"` Type string `json:"type"`
Pid int64 `json:"pid"`
Weigh int64 `json:"weigh"`
Children []Category `json:"children" xorm:"-"`
} }
func (c *Category) AfterQuery(session basedboperat.DbTransactionSession) { func (c *Category) AfterQuery(session basedboperat.DbTransactionSession) {
c.getChildens(session) var cs []Category
if len(c.Children) > 0 { cs = append(cs, Category{
Id: c.Id,
} Image: c.Image,
Description: c.Description,
Name: c.Name,
Type: c.Type,
Pid: c.Pid,
Weigh: c.Weigh,
Children: c.Children,
})
c.Children = findChildren(cs, session)
} }
func (c *Category) getChildens(session basedboperat.DbTransactionSession) {
var children []Category
var list basedboperat.List
list.Limit = -1
session.ListScan(&list, c, &children)
c.Children = children
}
// 递归查询子集方法 // 递归查询子集方法
func findChildren(categories []Category, parentId int64, session basedboperat.DbTransactionSession) []Category { func findChildren(categories []Category, session basedboperat.DbTransactionSession) []Category {
var result []Category var result []Category
for _, category := range categories { for _, category := range categories {
var children []Category
if category.ParentId == parentId { var list basedboperat.List
children := findChildren(categories, category.Id) list.Limit = -1
category.Children = children list.Where = append(list.Where, basedboperat.Condition{
result = append(result, category) Field: "pid",
} Operator: "=",
Value: category.Id,
})
session.ListScan(&list, category, children)
category.Children = findChildren(children, session)
result = append(result, category)
} }
return result return result
} }
func (c *Category) TreeList(session basedboperat.DbTransactionSession) {
}

@ -8,5 +8,8 @@ import (
func init() { func init() {
xormDriver.Sync2(new(Category)) xormDriver.Sync2(new(Category))
towgo.NewCRUDJsonrpcAPI("/category", Category{}, []Category{}).RegAPI() towgo.NewCRUDJsonrpcAPI("/category", Category{}, []Category{}).RegAPI()
towgo.SetFunc("/category/treeList", TreeList)
}
func TreeList(rpcConn towgo.JsonRpcConnection) {
} }

Loading…
Cancel
Save