103 lines
2.1 KiB
Go
103 lines
2.1 KiB
Go
package controllers
|
|
|
|
import (
|
|
"anytunnel/at-admin/app/models"
|
|
"regexp"
|
|
"time"
|
|
|
|
validation "github.com/go-ozzo/ozzo-validation"
|
|
)
|
|
|
|
type RoleController struct {
|
|
BaseAdminController
|
|
}
|
|
|
|
func (this *RoleController) Delete() {
|
|
roleModel := models.Role{}
|
|
roleId := this.GetString("role_id")
|
|
hasUser, err := roleModel.HasUser(roleId)
|
|
if err != nil {
|
|
this.jsonError(err)
|
|
}
|
|
if hasUser {
|
|
this.jsonError("角色用户非空,不能删除")
|
|
}
|
|
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.jsonError("角色不存在")
|
|
}
|
|
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) getRoleFromPost(isUpdate bool) (roleId string, role map[string]interface{}) {
|
|
role = map[string]interface{}{
|
|
"name": this.GetString("name"),
|
|
"is_delete": 0,
|
|
}
|
|
err := validation.Validate(role["name"],
|
|
validation.Required.Error("名称不能为空"),
|
|
validation.Match(regexp.MustCompile("^.{1,15}$")).Error("名称长度必须是1-15字符"))
|
|
if err != nil {
|
|
this.jsonError(err.Error())
|
|
}
|
|
if isUpdate {
|
|
role["update_time"] = time.Now().Unix()
|
|
} else {
|
|
role["create_time"] = time.Now().Unix()
|
|
}
|
|
return
|
|
}
|