优化
This commit is contained in:
@@ -32,15 +32,17 @@ type departmentPO struct {
|
||||
func (departmentPO) TableName() string { return "sys_departments" }
|
||||
|
||||
type userDepartmentPO struct {
|
||||
UserID uint `gorm:"primaryKey;column:sys_user_id"`
|
||||
DepartmentID uint `gorm:"primaryKey;column:sys_department_id"`
|
||||
// Match GVA's join model: no composite primary key, so repeated IDs in a
|
||||
// request are persisted in the same order/shape as the reference service.
|
||||
UserID uint `gorm:"column:sys_user_id"`
|
||||
DepartmentID uint `gorm:"column:sys_department_id"`
|
||||
}
|
||||
|
||||
func (userDepartmentPO) TableName() string { return "sys_user_departments" }
|
||||
|
||||
type authorityDepartmentPO struct {
|
||||
AuthorityID uint `gorm:"primaryKey;column:authority_id"`
|
||||
DepartmentID uint `gorm:"primaryKey;column:department_id"`
|
||||
AuthorityID uint `gorm:"column:sys_authority_authority_id;index"`
|
||||
DepartmentID uint `gorm:"column:sys_department_id"`
|
||||
}
|
||||
|
||||
func (authorityDepartmentPO) TableName() string { return "sys_authority_departments" }
|
||||
@@ -152,6 +154,12 @@ func (r *departmentRepo) ListDepartments(ctx context.Context, name string) ([]*b
|
||||
items := make([]*biz.Department, 0, len(pos))
|
||||
for _, po := range pos {
|
||||
item := deptFromPO(po)
|
||||
if name == "" {
|
||||
// Recursive GORM child queries initialize leaf collections to an empty
|
||||
// slice. Preserve that tree response shape while search and single-item
|
||||
// queries keep the model's nil children value.
|
||||
item.Children = []*biz.Department{}
|
||||
}
|
||||
nodes[po.ID] = item
|
||||
items = append(items, item)
|
||||
}
|
||||
@@ -161,7 +169,7 @@ func (r *departmentRepo) ListDepartments(ctx context.Context, name string) ([]*b
|
||||
if name != "" {
|
||||
return items, nil
|
||||
}
|
||||
var roots []*biz.Department
|
||||
roots := make([]*biz.Department, 0)
|
||||
for _, po := range pos {
|
||||
n := nodes[po.ID]
|
||||
if p := nodes[po.ParentID]; p != nil {
|
||||
|
||||
Reference in New Issue
Block a user