package system import ( "errors" "gorm.io/gorm" "server/global" "server/model/common/request" "server/model/system" ) type DeptService struct{} // 获取部门列表 func (appDeptService *DeptService) GetAppRootDept(info request.PageInfo) (list interface{}, total int64, err error) { limit := info.PageSize offset := info.PageSize * (info.Page - 1) db := global.GVA_DB.Model(&system.Dept{}) var rootDept []system.Dept err = db. Where("parent_id = ?", 0). Where("is_deleted", 0).Count(&total).Error if err != nil { return } db.Limit(limit).Offset(offset). Where("is_deleted", 0). Where("parent_id = ?", 0).Find(&rootDept) for i, dept := range rootDept { var childDepts []system.Dept global.GVA_DB.Table("dept").Select("*"). Where("is_deleted", 0).Where("parent_id = ?", dept.ID).Scan(&childDepts) rootDept[i].Children = childDepts } return rootDept, total, err } func (appDeptService *DeptService) Establish(d system.Dept) (err error) { err = global.GVA_DB.Create(&d).Error return err } // 设置部门信息 func (appDeptService *DeptService) SetDeptInfo(req system.Dept) error { return global.GVA_DB.Model(&system.Dept{}). Select("dept_name", "parent_id", "remark", "responsible", "phone"). Where("id=?", req.ID). Updates(map[string]interface{}{ "dept_name": req.DeptName, "parent_id": req.ParentId, "remark": req.Remark, "responsible": req.Responsible, "phone": req.Phone, }).Error } // 删除部门 func (DeptService *DeptService) DeleteDept(id int) error { var users []system.SysUser if !errors.Is(global.GVA_DB.Model(&system.SysUser{}).Debug().Where("dept_id = ?", id).First(&users).Error, gorm.ErrRecordNotFound) { // 判断部门下是否存在用户 return errors.New("该部门存在用户,删除失败!") } err := global.GVA_DB.Model(&system.Dept{}). Where("id=?", id). Updates(map[string]interface{}{"is_deleted": "1"}).Error return err } func (DeptService *DeptService) GetChildDepts() (depts []system.Dept, err error) { err = global.GVA_DB.Model(&system.Dept{}).Where("parent_id != ? and is_deleted = 0", 0).Find(&depts).Error return depts, err } func (DeptService *DeptService) GetAllUsers() (users []system.SysUser, err error) { err = global.GVA_DB.Model(&system.SysUser{}).Find(&users).Error return users, err } func (DeptService *DeptService) GetDeptsUsers(depts []int) (users []system.SysUser, err error) { err = global.GVA_DB.Model(&system.SysUser{}).Where("dept_id IN (?)", depts).Find(&users).Error return users, err }