271 lines
6.2 KiB
Go
271 lines
6.2 KiB
Go
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()
|
|
}
|
|
|