package dal import ( "eai_agentplatform/backend/internal/model" ) // Department 部门仓库。 type DepartmentDAO struct{ *QueryBuilder } // List 获取部门列表。 func (r DepartmentDAO) List() []model.Department { var items []model.Department if r.Type(&items).Order("id ASC").Find(&items) { return items } return nil } // ListByStatus 按状态取部门列表(id 升序)。 // // status 沿用本站列表的档位约定(与 CourseDAO.List 一致): // // "" → 只看 active(前台字典默认) // "all" → 不过滤(管理员维护全量) // 其它 → 按该 status 过滤 func (r DepartmentDAO) ListByStatus(status string) []model.Department { q := r.Type(&model.Department{}) switch status { case "": q = q.Where("status = ?", "active") case "all": // 不过滤 default: q = q.Where("status = ?", status) } var items []model.Department if q.Order("id ASC").Find(&items) { return items } return nil } // CountByName 统计同名部门数;excludeID 非空时排除该条(改名查重用)。 func (r DepartmentDAO) CountByName(name string, excludeID *uint) int64 { q := r.Inner().Model(&model.Department{}).Where("name = ?", name) if excludeID != nil { q = q.Where("id <> ?", *excludeID) } var c int64 q.Count(&c) return c } // GetByID 按 ID 获取。 func (r DepartmentDAO) GetByID(id uint) (model.Department, bool) { var d model.Department if r.Type(&d).Where("id = ?", id).First(&d) { return d, true } return model.Department{}, false } // GetByName 按名称获取。 func (r DepartmentDAO) GetByName(name string) (model.Department, bool) { var d model.Department if r.Type(&d).Where("name = ?", name).First(&d) { return d, true } return model.Department{}, false } // Insert 创建部门。 func (r DepartmentDAO) Insert(d *model.Department) bool { return r.QueryBuilder.Insert(d) } // Update 更新部门。 func (r DepartmentDAO) Update(d *model.Department) bool { return r.Save(d) } // Delete 删除部门。 func (r DepartmentDAO) Delete(id uint) bool { return r.DeleteByID(&model.Department{}, id) }