init
This commit is contained in:
@@ -0,0 +1,155 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"anytunnel/at-admin/app/modules/web/models"
|
||||
"regexp"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
validation "github.com/go-ozzo/ozzo-validation"
|
||||
)
|
||||
|
||||
type RoleController struct {
|
||||
BaseController
|
||||
}
|
||||
|
||||
func (this *RoleController) Delete() {
|
||||
roleModel := models.Role{}
|
||||
roleId := this.GetString("role_id")
|
||||
// if roleId == "0" {
|
||||
// this.JsonError("系统角色不能删除")
|
||||
// }
|
||||
if roleId == "1" {
|
||||
this.JsonError("默认角色不能删除")
|
||||
}
|
||||
hasUser, err := roleModel.HasUser(roleId)
|
||||
if err != nil {
|
||||
this.JsonError(err)
|
||||
}
|
||||
if hasUser {
|
||||
this.JsonError("角色用户非空,不能删除")
|
||||
}
|
||||
err = roleModel.SetRegions(roleId, []string{})
|
||||
if err != nil {
|
||||
this.JsonError(err)
|
||||
}
|
||||
err = roleModel.Delete(roleId)
|
||||
if err != nil {
|
||||
this.JsonError(err)
|
||||
}
|
||||
this.JsonSuccess("")
|
||||
|
||||
}
|
||||
func (this *RoleController) Add() {
|
||||
roleModel := models.Role{}
|
||||
if this.Ctx.Input.IsPost() {
|
||||
_, data := this.getRoleFromPost(false)
|
||||
_, err := roleModel.Insert(data)
|
||||
if err != nil {
|
||||
this.JsonError(err)
|
||||
}
|
||||
this.JsonSuccess("")
|
||||
} else {
|
||||
this.Data["action"] = "add"
|
||||
this.viewLayout("role/form", "form")
|
||||
}
|
||||
|
||||
}
|
||||
func (this *RoleController) Edit() {
|
||||
roleModel := models.Role{}
|
||||
roleId := this.GetString("role_id")
|
||||
if this.Ctx.Input.IsPost() {
|
||||
_, data := this.getRoleFromPost(true)
|
||||
_, err := roleModel.Update(roleId, data)
|
||||
if err != nil {
|
||||
this.JsonError(err)
|
||||
}
|
||||
this.JsonSuccess("")
|
||||
} else {
|
||||
role, err := roleModel.GetRoleByRoleId(roleId)
|
||||
if err != nil {
|
||||
this.JsonError(err, "")
|
||||
}
|
||||
if len(role) == 0 {
|
||||
this.ViewError("角色不存在")
|
||||
}
|
||||
this.Data["tunnel_mode_arr"] = strings.Split(role["tunnel_mode"], ",")
|
||||
this.Data["role"] = role
|
||||
this.Data["action"] = "edit"
|
||||
this.viewLayout("role/form", "form")
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func (this *RoleController) List() {
|
||||
roleModel := models.Role{}
|
||||
|
||||
roles, err := roleModel.GetAllRoles()
|
||||
if err != nil {
|
||||
this.ViewError(err.Error())
|
||||
}
|
||||
|
||||
this.Data["roles"] = roles
|
||||
this.view("role/list")
|
||||
}
|
||||
|
||||
func (this *RoleController) Regions() {
|
||||
roleModel := models.Role{}
|
||||
roleID := this.GetString("role_id")
|
||||
if this.Ctx.Input.IsPost() {
|
||||
regionIds := this.GetStrings("region-ids")
|
||||
err := roleModel.SetRegions(roleID, regionIds)
|
||||
if err != nil {
|
||||
this.JsonError(err)
|
||||
}
|
||||
this.JsonSuccess("")
|
||||
} else {
|
||||
regionModel := models.Region{}
|
||||
regions, err := regionModel.GetAllRegions()
|
||||
if err != nil {
|
||||
this.ViewError(err.Error())
|
||||
}
|
||||
regionIds, err := roleModel.GetRoleRegionIds(roleID)
|
||||
if err != nil {
|
||||
this.ViewError(err.Error())
|
||||
}
|
||||
this.Data["regionIds"] = regionIds
|
||||
this.Data["roleId"] = this.GetString("role_id")
|
||||
this.Data["regions"] = regions
|
||||
this.view("role/region")
|
||||
}
|
||||
}
|
||||
func (this *RoleController) getRoleFromPost(isUpdate bool) (roleId string, role map[string]interface{}) {
|
||||
role = map[string]interface{}{
|
||||
"name": this.GetString("name"),
|
||||
"server_area": this.GetString("server_area"),
|
||||
"client_area": this.GetString("client_area"),
|
||||
"bandwidth": this.GetString("bandwidth"),
|
||||
"is_delete": 0,
|
||||
}
|
||||
errs := validation.Errors{
|
||||
"名称": validation.Validate(role["name"],
|
||||
validation.Required.Error("不能为空"),
|
||||
validation.Match(regexp.MustCompile("^.{1,15}$")).Error("长度必须是1-15字符")),
|
||||
"Server区域": validation.Validate(role["server_area"],
|
||||
validation.Required.Error("不能为空"),
|
||||
validation.Match(regexp.MustCompile("^(china|foreign|all)$")).Error("错误")),
|
||||
"Client区域": validation.Validate(role["client_area"],
|
||||
validation.Required.Error("不能为空"),
|
||||
validation.Match(regexp.MustCompile("^(china|foreign|all)$")).Error("错误")),
|
||||
"带宽": validation.Validate(role["bandwidth"],
|
||||
validation.Required.Error("不能为空"),
|
||||
validation.Match(regexp.MustCompile("^(0|([1-9][0-9]*))$")).Error("必须是大于等于0的整数")),
|
||||
}
|
||||
err := errs.Filter()
|
||||
if err != nil {
|
||||
this.JsonError(err)
|
||||
}
|
||||
role["tunnel_mode"] = strings.Join(this.GetStrings("tunnel_mode"), ",")
|
||||
if isUpdate {
|
||||
role["update_time"] = time.Now().Unix()
|
||||
} else {
|
||||
role["create_time"] = time.Now().Unix()
|
||||
}
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user