99 lines
2.6 KiB
Go
99 lines
2.6 KiB
Go
package controller
|
|
|
|
import (
|
|
"SciencesServer/app/api/manage/model"
|
|
model2 "SciencesServer/app/common/model"
|
|
"SciencesServer/app/service"
|
|
"time"
|
|
)
|
|
|
|
type Department struct{ *Platform }
|
|
|
|
type DepartmentHandle func(session *service.Session) *Department
|
|
|
|
type DepartmentParams struct {
|
|
ID, ParentID uint64
|
|
Title, Name, Mobile, Remark string
|
|
}
|
|
|
|
type DepartmentTree struct {
|
|
*model2.SysDepartment
|
|
Children []*DepartmentTree `json:"children"`
|
|
}
|
|
|
|
func (c *Department) tree(src []*model2.SysDepartment, parentID uint64) []*DepartmentTree {
|
|
out := make([]*DepartmentTree, 0)
|
|
|
|
for _, v := range src {
|
|
if v.ParentID == parentID {
|
|
out = append(out, &DepartmentTree{
|
|
SysDepartment: v,
|
|
Children: c.tree(src, v.ID),
|
|
})
|
|
}
|
|
}
|
|
return out
|
|
}
|
|
|
|
func (c *Department) List() ([]*DepartmentTree, error) {
|
|
mSysDepartment := model.NewSysDepartment()
|
|
|
|
out := make([]*model2.SysDepartment, 0)
|
|
|
|
if err := model2.Scan(mSysDepartment.SysDepartment, &out, &model2.ModelWhereOrder{
|
|
Where: model2.NewWhere("tenant_id", c.TenantID),
|
|
Order: model2.NewOrder("parent_id", model2.OrderModeToAsc)}); err != nil {
|
|
return nil, err
|
|
}
|
|
return c.tree(out, 0), nil
|
|
}
|
|
|
|
func (c *Department) Select() ([]*DepartmentTree, error) {
|
|
mSysDepartment := model.NewSysDepartment()
|
|
|
|
out := make([]*model2.SysDepartment, 0)
|
|
|
|
if err := model2.ScanFields(mSysDepartment.SysDepartment, &out, []string{"id", "name"}, &model2.ModelWhereOrder{
|
|
Where: model2.NewWhere("tenant_id", c.TenantID),
|
|
Order: model2.NewOrder("parent_id", model2.OrderModeToAsc)}); err != nil {
|
|
return nil, err
|
|
}
|
|
return c.tree(out, 0), nil
|
|
}
|
|
|
|
func (c *Department) Data(params *DepartmentParams) error {
|
|
mSysDepartment := model.NewSysDepartment()
|
|
|
|
if params.ID <= 0 {
|
|
mSysDepartment.ParentID = params.ParentID
|
|
mSysDepartment.Title = params.Title
|
|
mSysDepartment.Name = params.Name
|
|
mSysDepartment.Mobile = params.Mobile
|
|
mSysDepartment.Remark = params.Remark
|
|
|
|
return model2.Create(mSysDepartment.SysDepartment)
|
|
}
|
|
mSysDepartment.ID = params.ID
|
|
|
|
return model2.Updates(mSysDepartment.SysDepartment, map[string]interface{}{
|
|
"parent_id": params.ParentID, "title": params.Title, "name": params.Name,
|
|
"mobile": params.Mobile, "remark": params.Remark, "updated_at": time.Now(),
|
|
})
|
|
}
|
|
|
|
func (c *Department) Delete(id uint64) error {
|
|
mSysDepartment := model.NewSysDepartment()
|
|
mSysDepartment.ID = id
|
|
|
|
if err := model2.Delete(mSysDepartment.SysDepartment); err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func NewDepartment() DepartmentHandle {
|
|
return func(session *service.Session) *Department {
|
|
return &Department{Platform: &Platform{Session: session}}
|
|
}
|
|
}
|