125 lines
2.9 KiB
Go
125 lines
2.9 KiB
Go
package controllers
|
|
|
|
import (
|
|
"anytunnel/at-admin/app/modules/web/models"
|
|
"regexp"
|
|
"time"
|
|
|
|
validation "github.com/go-ozzo/ozzo-validation"
|
|
)
|
|
|
|
type RegionController struct {
|
|
BaseController
|
|
}
|
|
|
|
func (this *RegionController) Delete() {
|
|
regionModel := models.Region{}
|
|
regionId := this.GetString("region_id")
|
|
hasRole, err := regionModel.HasRole(regionId)
|
|
if err != nil {
|
|
this.JsonError(err)
|
|
}
|
|
if hasRole {
|
|
this.JsonError("角色引用非空,不能删除")
|
|
}
|
|
HasCluster, err := regionModel.HasCluster(regionId)
|
|
if err != nil {
|
|
this.JsonError(err)
|
|
}
|
|
if HasCluster {
|
|
this.JsonError("Cluster引用非空,不能删除")
|
|
}
|
|
HasSubRegion, err := regionModel.HasSubRegion(regionId)
|
|
if err != nil {
|
|
this.JsonError(err)
|
|
}
|
|
if HasSubRegion {
|
|
this.JsonError("子区域非空,不能删除")
|
|
}
|
|
err = regionModel.Delete(regionId)
|
|
if err != nil {
|
|
this.JsonError(err)
|
|
}
|
|
this.JsonSuccess("")
|
|
|
|
}
|
|
func (this *RegionController) Add() {
|
|
regionModel := models.Region{}
|
|
if this.Ctx.Input.IsPost() {
|
|
_, data := this.getRegionFromPost(false)
|
|
_, err := regionModel.Insert(data)
|
|
if err != nil {
|
|
this.JsonError(err)
|
|
}
|
|
this.JsonSuccess("")
|
|
} else {
|
|
regions, err := regionModel.GetTopRegions()
|
|
if err != nil {
|
|
this.ViewError(err.Error())
|
|
}
|
|
this.Data["regions"] = regions
|
|
this.Data["action"] = "add"
|
|
this.viewLayout("region/form", "form")
|
|
}
|
|
|
|
}
|
|
func (this *RegionController) Edit() {
|
|
regionModel := models.Region{}
|
|
regionId := this.GetString("region_id")
|
|
if this.Ctx.Input.IsPost() {
|
|
_, data := this.getRegionFromPost(true)
|
|
_, err := regionModel.Update(regionId, data)
|
|
if err != nil {
|
|
this.JsonError(err)
|
|
}
|
|
this.JsonSuccess("")
|
|
} else {
|
|
region, err := regionModel.GetRegionByRegionId(regionId)
|
|
if err != nil {
|
|
this.JsonError(err, "")
|
|
}
|
|
if len(region) == 0 {
|
|
this.ViewError("区域不存在")
|
|
}
|
|
regions, err := regionModel.GetTopRegions()
|
|
if err != nil {
|
|
this.ViewError(err.Error())
|
|
}
|
|
this.Data["regions"] = regions
|
|
this.Data["region"] = region
|
|
this.Data["action"] = "edit"
|
|
this.viewLayout("region/form", "form")
|
|
}
|
|
|
|
}
|
|
|
|
func (this *RegionController) List() {
|
|
regionModel := models.Region{}
|
|
regions, err := regionModel.GetAllRegions()
|
|
if err != nil {
|
|
this.ViewError(err.Error())
|
|
}
|
|
this.Data["regions"] = regions
|
|
this.view("region/list")
|
|
}
|
|
|
|
func (this *RegionController) getRegionFromPost(isUpdate bool) (regionId string, region map[string]interface{}) {
|
|
region = map[string]interface{}{
|
|
"name": this.GetString("name"),
|
|
"parent_id": this.GetString("parent_id"),
|
|
"is_delete": 0,
|
|
}
|
|
err := validation.Validate(region["name"],
|
|
validation.Required.Error("名称不能为空"),
|
|
validation.Match(regexp.MustCompile("^.{1,15}$")).Error("名称长度必须是1-15字符"))
|
|
if err != nil {
|
|
this.JsonError(err.Error())
|
|
}
|
|
if isUpdate {
|
|
region["update_time"] = time.Now().Unix()
|
|
} else {
|
|
region["create_time"] = time.Now().Unix()
|
|
}
|
|
return
|
|
}
|