| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- package service
- import (
- "context"
- "dashoo.cn/micro/app/dao"
- "dashoo.cn/micro/app/model"
- "github.com/gogf/gf/util/gconv"
- )
- type deptService struct {
- *contextService
- Dao *dao.SysDeptDao
- }
- func NewDeptService(ctx context.Context) (svc *deptService, err error) {
- svc = new(deptService)
- if svc.contextService, err = svc.Init(ctx); err != nil {
- return nil, err
- }
- svc.Dao = dao.NewSysDeptDao(svc.Tenant)
- svc.Table = svc.Dao.Table
- return svc, nil
- }
- func (s *deptService) GetList(searchParams *model.SysDeptSearchParams) ([]*model.SysDept, error) {
- deptModel := s.Dao.M
- if searchParams.DeptName != "" {
- deptModel = deptModel.WhereLike("dept_name", "%"+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 *deptService) GetRoleDepts(roleId int) ([]int, error) {
- var entityList []*model.SysRoleDept
- err := s.Dao.Where("role_id", roleId).Scan(&entityList)
- if err != nil {
- return nil, err
- }
- result := make([]int, 0)
- for _, v := range entityList {
- result = append(result, v.DeptId)
- }
- return result, nil
- }
- func (s *deptService) 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 *deptService) 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 *deptService) GetDeptById(id int64) (dept *model.SysDept, err error) {
- err = s.Dao.Where("id", id).Scan(&dept)
- return
- }
- func (s *deptService) Create(req *model.SysDeptReq) (err error) {
- data := new(model.SysDept)
- if err := gconv.Struct(req, data); err != nil {
- return err
- }
- SetCreatedInfo(data, s.GetCxtUserId(), s.GetCxtUserName())
- _, err = s.Dao.Insert(data)
- return
- }
- func (s *deptService) UpdateById(req *model.UpdateSysDeptReq) error {
- data := new(model.SysDept)
- if err := gconv.Struct(req, data); err != nil {
- return err
- }
- SetUpdatedInfo(data, s.GetCxtUserId(), s.GetCxtUserName())
- _, err := s.Dao.FieldsEx(UpdateFieldEx...).WherePri(data.Id).
- Update(data)
- return err
- }
- func (s *deptService) DeleteById(id int) error {
- var list []*model.SysDept
- err := s.Dao.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 = s.Dao.Where(s.Dao.Columns.Id+" in (?)", ids).Delete()
- return err
- }
|