| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- package service
- import (
- "dashoo.cn/micro/app/dao"
- "dashoo.cn/micro/app/model"
- )
- type dept struct {
- }
- var Dept = new(dept)
- func (s *dept) GetList(searchParams *model.SysDeptSearchParams) ([]*model.SysDept, error) {
- deptModel := dao.SysDept.M
- if searchParams.DeptName != "" {
- deptModel = deptModel.Where("dept_name like ?", "%"+searchParams.DeptName+"%")
- }
- if searchParams.Status != "" {
- deptModel = deptModel.Where("status", searchParams.Status)
- }
- depts := ([]*model.SysDept)(nil)
- if err := deptModel.Scan(&depts); err != nil {
- return nil, err
- }
- list := make([]*model.SysDept, 0, len(depts))
- if searchParams.ExcludeId != 0 {
- for _, v := range depts {
- if searchParams.ExcludeId != v.Id {
- list = append(list, v)
- }
- }
- return list, nil
- } else {
- return depts, nil
- }
- }
- func (s *dept) GetRoleDepts(roleId int) ([]int, error) {
- var entitys []*model.SysRoleDept
- err := dao.SysRoleDept.Where("role_id", roleId).Scan(&entitys)
- if err != nil {
- return nil, err
- }
- result := make([]int, 0)
- for _, v := range entitys {
- result = append(result, v.DeptId)
- }
- return result, nil
- }
- func (s *dept) FindSonByParentId(depts []*model.SysDept, deptId int) []*model.SysDept {
- children := make([]*model.SysDept, 0, len(depts))
- for _, v := range depts {
- if v.ParentId == deptId {
- children = append(children, v)
- fChildren := s.FindSonByParentId(depts, v.Id)
- children = append(children, fChildren...)
- }
- }
- return children
- }
- func (s *dept) GetDeptListTree(pid int, list []*model.SysDept) []*model.SysDeptTreeRes {
- tree := make([]*model.SysDeptTreeRes, 0, len(list))
- for _, v := range list {
- if v.ParentId == pid {
- t := &model.SysDeptTreeRes{
- SysDept: v,
- }
- child := s.GetDeptListTree(v.Id, list)
- if len(child) > 0 {
- t.Children = child
- }
- tree = append(tree, t)
- }
- }
- return tree
- }
- func (s *dept) AddDept(params *model.SysDeptAddParams) (err error) {
- _, err = dao.SysDept.Insert(params)
- return
- }
- func (s *dept) GetDeptById(id uint64) (dept *model.SysDept, err error) {
- err = dao.SysDept.Where("dept_id", id).Scan(&dept)
- return
- }
- func (s *dept) EditDept(params *model.EditParams) error {
- _, err := dao.SysDept.FieldsEx(dao.SysDept.Columns.Id, dao.SysDept.Columns.CreatedBy).WherePri(params.DeptID).
- Update(params)
- return err
- }
- func (s *dept) DelDept(id int) error {
- var list []*model.SysDept
- err := dao.SysDept.Scan(&list)
- if err != nil {
- return err
- }
- children := s.FindSonByParentId(list, id)
- ids := make([]int, 0, len(list))
- for _, v := range children {
- ids = append(ids, v.Id)
- }
- ids = append(ids, id)
- _, err = dao.SysDept.Where(dao.SysDept.Columns.Id+" in (?)", ids).Delete()
- return err
- }
|