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()
 | |
| }
 |