package controllers import ( "encoding/json" "server/models" beego "github.com/beego/beego/v2/server/web" ) // DepartmentController 部门控制器 type DepartmentController struct { beego.Controller } // GetTenantDepartments 获取租户下的所有部门 // @router /departments/tenant/:tenantId [get] func (c *DepartmentController) GetTenantDepartments() { tenantId, err := c.GetInt(":tenantId") if err != nil || tenantId <= 0 { c.Data["json"] = map[string]interface{}{ "code": 1, "message": "租户ID无效", "data": nil, } c.ServeJSON() return } departments, err := models.GetTenantDepartments(tenantId) if err != nil { c.Data["json"] = map[string]interface{}{ "code": 1, "message": "获取部门列表失败: " + err.Error(), "data": nil, } c.ServeJSON() return } // 格式化返回数据 deptList := make([]map[string]interface{}, 0) for _, dept := range departments { deptList = append(deptList, map[string]interface{}{ "id": dept.Id, "tenant_id": dept.TenantId, "name": dept.Name, "code": dept.Code, "parent_id": dept.ParentId, "description": dept.Description, "manager_id": dept.ManagerId, "sort_order": dept.SortOrder, "status": dept.Status, }) } c.Data["json"] = map[string]interface{}{ "code": 0, "message": "获取部门列表成功", "data": deptList, } c.ServeJSON() } // GetDepartmentInfo 获取部门详情 // @router /departments/:id [get] func (c *DepartmentController) GetDepartmentInfo() { id, err := c.GetInt(":id") if err != nil || id <= 0 { c.Data["json"] = map[string]interface{}{ "code": 1, "message": "部门ID无效", "data": nil, } c.ServeJSON() return } department, err := models.GetDepartmentById(id) if err != nil { c.Data["json"] = map[string]interface{}{ "code": 1, "message": "部门不存在", "data": nil, } c.ServeJSON() return } c.Data["json"] = map[string]interface{}{ "code": 0, "message": "获取部门信息成功", "data": map[string]interface{}{ "id": department.Id, "tenant_id": department.TenantId, "name": department.Name, "code": department.Code, "parent_id": department.ParentId, "description": department.Description, "manager_id": department.ManagerId, "sort_order": department.SortOrder, "status": department.Status, }, } c.ServeJSON() } // AddDepartment 添加部门 // @router /departments [post] func (c *DepartmentController) AddDepartment() { var deptData struct { TenantId int `json:"tenant_id"` Name string `json:"name"` Code string `json:"code"` ParentId int `json:"parent_id"` Description string `json:"description"` ManagerId int `json:"manager_id"` SortOrder int `json:"sort_order"` Status int8 `json:"status"` } err := json.Unmarshal(c.Ctx.Input.RequestBody, &deptData) if err != nil { c.Data["json"] = map[string]interface{}{ "code": 1, "message": "请求参数错误: " + err.Error(), "data": nil, } c.ServeJSON() return } department := &models.Department{ TenantId: deptData.TenantId, Name: deptData.Name, Code: deptData.Code, ParentId: deptData.ParentId, Description: deptData.Description, ManagerId: deptData.ManagerId, SortOrder: deptData.SortOrder, Status: deptData.Status, } if department.TenantId == 0 { department.TenantId = 1 } id, err := models.AddDepartment(department) if err != nil { c.Data["json"] = map[string]interface{}{ "code": 1, "message": "添加部门失败: " + err.Error(), "data": nil, } c.ServeJSON() return } department.Id = int(id) c.Data["json"] = map[string]interface{}{ "code": 0, "message": "添加部门成功", "data": department, } c.ServeJSON() } // UpdateDepartment 更新部门信息 // @router /departments/:id [put] func (c *DepartmentController) UpdateDepartment() { id, err := c.GetInt(":id") if err != nil || id <= 0 { c.Data["json"] = map[string]interface{}{ "code": 1, "message": "部门ID无效", "data": nil, } c.ServeJSON() return } var updateData struct { Name string `json:"name"` Code string `json:"code"` ParentId int `json:"parent_id"` Description string `json:"description"` ManagerId int `json:"manager_id"` SortOrder int `json:"sort_order"` Status int8 `json:"status"` } err = json.Unmarshal(c.Ctx.Input.RequestBody, &updateData) if err != nil { c.Data["json"] = map[string]interface{}{ "code": 1, "message": "请求参数错误: " + err.Error(), "data": nil, } c.ServeJSON() return } department, err := models.GetDepartmentById(id) if err != nil { c.Data["json"] = map[string]interface{}{ "code": 1, "message": "部门不存在", "data": nil, } c.ServeJSON() return } department.Name = updateData.Name department.Code = updateData.Code department.ParentId = updateData.ParentId department.Description = updateData.Description department.ManagerId = updateData.ManagerId department.SortOrder = updateData.SortOrder department.Status = updateData.Status if err := models.UpdateDepartment(department); err != nil { c.Data["json"] = map[string]interface{}{ "code": 1, "message": "更新部门信息失败: " + err.Error(), "data": nil, } c.ServeJSON() return } c.Data["json"] = map[string]interface{}{ "code": 0, "message": "更新部门信息成功", "data": department, } c.ServeJSON() } // DeleteDepartment 删除部门 // @router /departments/:id [delete] func (c *DepartmentController) DeleteDepartment() { id, err := c.GetInt(":id") if err != nil || id <= 0 { c.Data["json"] = map[string]interface{}{ "code": 1, "message": "部门ID无效", "data": nil, } c.ServeJSON() return } if err := models.DeleteDepartment(id); err != nil { c.Data["json"] = map[string]interface{}{ "code": 1, "message": "删除部门失败: " + err.Error(), "data": nil, } c.ServeJSON() return } c.Data["json"] = map[string]interface{}{ "code": 0, "message": "删除部门成功", "data": nil, } c.ServeJSON() }