209 lines
4.6 KiB
Go
209 lines
4.6 KiB
Go
package controllers
|
|
|
|
import (
|
|
"encoding/json"
|
|
"strconv"
|
|
|
|
"server/models"
|
|
|
|
"github.com/beego/beego/v2/server/web"
|
|
)
|
|
|
|
type TenantController struct {
|
|
web.Controller
|
|
}
|
|
|
|
// GetAllTenants 获取所有租户
|
|
func (c *TenantController) GetAllTenants() {
|
|
tenants, err := models.GetTenantList()
|
|
if err != nil {
|
|
c.Data["json"] = map[string]interface{}{
|
|
"success": false,
|
|
"message": "获取租户列表失败: " + err.Error(),
|
|
}
|
|
} else {
|
|
c.Data["json"] = map[string]interface{}{
|
|
"success": true,
|
|
"message": "获取租户列表成功",
|
|
"data": tenants,
|
|
}
|
|
}
|
|
c.ServeJSON()
|
|
}
|
|
|
|
// CreateTenant 新增租户
|
|
func (c *TenantController) CreateTenant() {
|
|
var tenant models.Tenant
|
|
if err := json.Unmarshal(c.Ctx.Input.RequestBody, &tenant); err != nil {
|
|
c.Data["json"] = map[string]interface{}{
|
|
"success": false,
|
|
"message": "解析租户数据失败: " + err.Error(),
|
|
}
|
|
c.ServeJSON()
|
|
return
|
|
}
|
|
err := models.CreateTenant(&tenant)
|
|
if err != nil {
|
|
c.Data["json"] = map[string]interface{}{
|
|
"success": false,
|
|
"message": "创建租户失败: " + err.Error(),
|
|
}
|
|
} else {
|
|
c.Data["json"] = map[string]interface{}{
|
|
"success": true,
|
|
"message": "租户创建成功",
|
|
"data": tenant,
|
|
}
|
|
}
|
|
c.ServeJSON()
|
|
}
|
|
|
|
// UpdateTenant 编辑租户
|
|
func (c *TenantController) UpdateTenant() {
|
|
idStr := c.Ctx.Input.Param(":id")
|
|
id, err := strconv.Atoi(idStr)
|
|
if err != nil {
|
|
c.Data["json"] = map[string]interface{}{
|
|
"success": false,
|
|
"message": "无效的租户ID",
|
|
}
|
|
c.ServeJSON()
|
|
return
|
|
}
|
|
var data map[string]interface{}
|
|
if err := json.Unmarshal(c.Ctx.Input.RequestBody, &data); err != nil {
|
|
c.Data["json"] = map[string]interface{}{
|
|
"success": false,
|
|
"message": "解析更新数据失败: " + err.Error(),
|
|
}
|
|
c.ServeJSON()
|
|
return
|
|
}
|
|
err = models.UpdateTenant(id, data)
|
|
if err != nil {
|
|
c.Data["json"] = map[string]interface{}{
|
|
"success": false,
|
|
"message": "编辑租户失败: " + err.Error(),
|
|
}
|
|
} else {
|
|
c.Data["json"] = map[string]interface{}{
|
|
"success": true,
|
|
"message": "租户编辑成功",
|
|
}
|
|
}
|
|
c.ServeJSON()
|
|
}
|
|
|
|
// DeleteTenant 删除租户
|
|
func (c *TenantController) DeleteTenant() {
|
|
idStr := c.Ctx.Input.Param(":id")
|
|
id, err := strconv.Atoi(idStr)
|
|
if err != nil {
|
|
c.Data["json"] = map[string]interface{}{
|
|
"success": false,
|
|
"message": "无效的租户ID",
|
|
}
|
|
c.ServeJSON()
|
|
return
|
|
}
|
|
err = models.DeleteTenant(id)
|
|
if err != nil {
|
|
c.Data["json"] = map[string]interface{}{
|
|
"success": false,
|
|
"message": "删除租户失败: " + err.Error(),
|
|
}
|
|
} else {
|
|
c.Data["json"] = map[string]interface{}{
|
|
"success": true,
|
|
"message": "租户删除成功",
|
|
}
|
|
}
|
|
c.ServeJSON()
|
|
}
|
|
|
|
// AuditTenant 审核租户
|
|
func (c *TenantController) AuditTenant() {
|
|
idStr := c.Ctx.Input.Param(":id")
|
|
id, err := strconv.Atoi(idStr)
|
|
if err != nil {
|
|
c.Data["json"] = map[string]interface{}{
|
|
"success": false,
|
|
"message": "无效的租户ID",
|
|
}
|
|
c.ServeJSON()
|
|
return
|
|
}
|
|
|
|
// 解析 JSON 请求体
|
|
var auditData struct {
|
|
AuditStatus string `json:"audit_status"`
|
|
AuditComment string `json:"audit_comment"`
|
|
AuditBy string `json:"audit_by"`
|
|
}
|
|
|
|
if err := json.Unmarshal(c.Ctx.Input.RequestBody, &auditData); err != nil {
|
|
c.Data["json"] = map[string]interface{}{
|
|
"success": false,
|
|
"message": "解析审核数据失败: " + err.Error(),
|
|
}
|
|
c.ServeJSON()
|
|
return
|
|
}
|
|
|
|
if auditData.AuditStatus == "" {
|
|
c.Data["json"] = map[string]interface{}{
|
|
"success": false,
|
|
"message": "审核状态不能为空",
|
|
}
|
|
c.ServeJSON()
|
|
return
|
|
}
|
|
|
|
err = models.AuditTenant(id, auditData.AuditStatus, auditData.AuditComment, auditData.AuditBy)
|
|
if err != nil {
|
|
c.Data["json"] = map[string]interface{}{
|
|
"success": false,
|
|
"message": "审核租户失败: " + err.Error(),
|
|
}
|
|
} else {
|
|
c.Data["json"] = map[string]interface{}{
|
|
"success": true,
|
|
"message": "审核成功",
|
|
}
|
|
}
|
|
c.ServeJSON()
|
|
}
|
|
|
|
// GetTenantDetail 查看租户详情
|
|
func (c *TenantController) GetTenantDetail() {
|
|
idStr := c.Ctx.Input.Param(":id")
|
|
id, err := strconv.Atoi(idStr)
|
|
if err != nil {
|
|
c.Data["json"] = map[string]interface{}{
|
|
"success": false,
|
|
"message": "无效的租户ID",
|
|
}
|
|
c.ServeJSON()
|
|
return
|
|
}
|
|
tenant, err := models.GetTenantById(id)
|
|
if err != nil {
|
|
c.Data["json"] = map[string]interface{}{
|
|
"success": false,
|
|
"message": "获取租户详情失败: " + err.Error(),
|
|
}
|
|
} else if tenant == nil {
|
|
c.Data["json"] = map[string]interface{}{
|
|
"success": false,
|
|
"message": "租户不存在",
|
|
}
|
|
} else {
|
|
c.Data["json"] = map[string]interface{}{
|
|
"success": true,
|
|
"message": "获取租户详情成功",
|
|
"data": tenant,
|
|
}
|
|
}
|
|
c.ServeJSON()
|
|
}
|