feat:完善项目信息
This commit is contained in:
114
app/api/admin/controller/department/instance.go
Normal file
114
app/api/admin/controller/department/instance.go
Normal file
@ -0,0 +1,114 @@
|
||||
package department
|
||||
|
||||
import (
|
||||
"SciencesServer/app/api/admin/model"
|
||||
model2 "SciencesServer/app/common/model"
|
||||
"SciencesServer/app/session"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Instance struct{ *session.Admin }
|
||||
|
||||
type InstanceHandle func(session *session.Admin) *Instance
|
||||
|
||||
type InstanceParams struct {
|
||||
ID, ParentID uint64
|
||||
Name, Contact, ContactMobile, Remark string
|
||||
Status int
|
||||
}
|
||||
|
||||
type (
|
||||
// InstanceInfo 部门信息
|
||||
InstanceInfo struct {
|
||||
ID string `json:"id"`
|
||||
ParentID string `json:"parent_id"`
|
||||
*model2.SysDepartment
|
||||
}
|
||||
// InstanceTreeInfo 部门树
|
||||
InstanceTreeInfo struct {
|
||||
*InstanceInfo
|
||||
Children []*InstanceTreeInfo `json:"children"`
|
||||
}
|
||||
)
|
||||
|
||||
func (c *Instance) tree(src []*model2.SysDepartment, parentID uint64) []*InstanceTreeInfo {
|
||||
out := make([]*InstanceTreeInfo, 0)
|
||||
|
||||
for _, v := range src {
|
||||
if v.ParentID == parentID {
|
||||
out = append(out, &InstanceTreeInfo{
|
||||
InstanceInfo: &InstanceInfo{
|
||||
ID: v.GetEncodeID(),
|
||||
ParentID: (&model2.Model{ID: v.ParentID}).GetEncodeID(),
|
||||
SysDepartment: v,
|
||||
},
|
||||
Children: c.tree(src, v.ID),
|
||||
})
|
||||
}
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
func (c *Instance) Index() ([]*InstanceTreeInfo, 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 *Instance) Select() ([]*InstanceTreeInfo, 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 *Instance) Form(params *InstanceParams) error {
|
||||
mSysDepartment := model.NewSysDepartment()
|
||||
|
||||
if params.ID <= 0 {
|
||||
mSysDepartment.ParentID = params.ParentID
|
||||
mSysDepartment.Name = params.Name
|
||||
mSysDepartment.Contact = params.Contact
|
||||
mSysDepartment.ContactMobile = params.ContactMobile
|
||||
mSysDepartment.Status = params.Status
|
||||
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, "name": params.Name, "contact": params.Contact,
|
||||
"contact_mobile": params.ContactMobile, "status": params.Status, "remark": params.Remark,
|
||||
"updated_at": time.Now(),
|
||||
})
|
||||
}
|
||||
|
||||
func (c *Instance) Delete(id uint64) error {
|
||||
mSysDepartment := model.NewSysDepartment()
|
||||
mSysDepartment.ID = id
|
||||
|
||||
if err := model2.Delete(mSysDepartment.SysDepartment); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func NewInstance() InstanceHandle {
|
||||
return func(session *session.Admin) *Instance {
|
||||
return &Instance{Admin: session}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user