Sample code
import (
"smartcloud/common"
"smartcloud/log"
"smartcloud/models"
"strconv"
"strings"
)
type SolutionsUserPermissionController struct {
SolutionsBaseController
}
func (this *SolutionsUserPermissionController) Get() {
writelog.WriteDebug("/SolutionsUserPermissionController")
v := this.GetSession("solutions_account")
CompanyId := this.MainSetting()
if CompanyId < 0 {
return
}
if !this.ExistSolutionsRolePermission("9") {
this.Ctx.Redirect(302, "/")
return
}
ReviewStatus, err := models.GetReviewStatusById(CompanyId)
status := ReviewStatus.Status
CompInfo, _ := models.GetCompanyCommonInfoById(CompanyId)
reg_date := CompInfo.RegistTime
writelog.WriteDebug("home email %s,status %d", v.(string), status)
if err != nil {
writelog.WriteWarning("home page not found review status. " + err.Error())
this.Ctx.Redirect(302, "/")
return
} else {
if status == common.Review_status_reviewing || status == common.Review_status_not_allowed {
this.Data["date"] = reg_date
this.TplName = "home_checking.html"
return
}
}
this.TplName = "solutions/solutions_user_permission.html"
}
type RoleInfoRet struct {
RoleId int `json:"role_id"`
RoleName string `json:"role_name"`
RoleDescription string `json:"role_description"`
RolePermission string `json:"role_permission"`
}
func (this *SolutionsUserPermissionController) Post() {
companyId := this.MainSetting()
if companyId < 0 {
return
}
this.functionName = "solutions_user_permission"
act := this.GetString("act")
if act == "role_list" {
RoleList(this)
return
} else if act == "role_add" {
RoleAdd(this)
return
} else if act == "role_edit" {
RoleEdit(this)
return
} else if act == "role_del" {
RoleDel(this)
return
} else if act == "getall_companymodle" {
GetAllCompanyModle(this)
return
} else if act == "check_role_name" {
CheckRoleName(this)
return
}
}
func RoleList(this *SolutionsUserPermissionController) {
companyId := this.MainSetting()
page, _ := strconv.Atoi(this.GetString("page"))
rownum, _ := strconv.Atoi(this.GetString("rownum"))
recordcount, currentcount, res := models.GetAllCompanyRolesByCompanyId(companyId, page, rownum)
info := make([]RoleInfoRet, currentcount)
for i := int64(0); i < currentcount; i++ {
info[i].RoleId = (*res)[i].RoleId
info[i].RoleName = (*res)[i].RoleName
info[i].RoleDescription = (*res)[i].RoleDescription
info[i].RolePermission = (*res)[i].RolePermission
}
this.Data["json"] = struct {
Ret int `json:"ret"`
Msg string `json:"msg"`
Recordcount int64 `json:"recordcount"`
Data []RoleInfoRet `json:"data"`
}{
Ret: 0,
Msg: "ok",
Recordcount: recordcount,
Data: info,
}
this.ServeJSON()
return
}
func RoleDel(this *SolutionsUserPermissionController) {
companyId := this.MainSetting()
id, _ := strconv.Atoi(this.GetString("id"))
if id == 0 {
msg := models.ReturnMsg(this.Lang, this.functionName, "not_found")
this.jsonStandardResult(-1, msg, "")
return
}
err := models.DelCompanyRoleById(id)
if err != nil {
msg := models.ReturnMsg(this.Lang, this.functionName, "delete_err")
this.jsonStandardResult(-2, msg, "")
return
}
CompanyUserDelPermission(nil, companyId, id)
this.jsonStandardResult(0, "ok", "")
return
}
func CheckRoleName(this *SolutionsUserPermissionController) {
companyId := this.MainSetting()
role_name := this.GetString("role_name")
if role_name != "" {
var msg string
if CompanyRoleIsExist(companyId, role_name) {
msg = "true"
} else {
msg = "false"
}
this.jsonStandardResult(0, msg, "")
return
}
this.jsonStandardResult(0, "false", "")
return
}
func CompanyRoleIsExist(companyId int, RoleName string) bool {
id, _ := models.GetCompanyRoleIdByName(RoleName, companyId)
if id > 0 {
return true
}
return false
}
type RetCompanyModleInfo struct {
ModuleId string `json:"module_id"`
ModuleParentId string `json:"parentid"`
MenuId string `json:"menu_id"`
MenuName string `json:"menu_name"`
}
func GetAllCompanyModle(this *SolutionsUserPermissionController) {
var page, rownum int
page = -1
rownum = 1000
recordcount, currcount, res := models.GetAllSolutionsModuleAndMenu(page, rownum)
info := make([]RetCompanyModleInfo, currcount)
for i := int64(0); i < currcount; i++ {
info[i].ModuleId = res[i]["module_id"].(string)
info[i].ModuleParentId = res[i]["module_parent_id"].(string)
info[i].MenuId = res[i]["menu_id"].(string)
info[i].MenuName = this.I18n.GetSectionMap("main")[res[i]["menu_name_flag"].(string)]
}
this.Data["json"] = struct {
Ret int `json:"ret"`
Msg string `json:"msg"`
Recordcount int64 `json:"recordcount"`
Data []RetCompanyModleInfo `json:"data"`
}{
Ret: 0,
Msg: "ok",
Recordcount: recordcount,
Data: info,
}
this.ServeJSON()
return
}
为企业子用户增加权限角色
func CompanyUserAddPermission(CompanyUserId int, RoleId int) {
if CompanyUserId == 0 && RoleId == 0 {
return
}
sRoleId := strconv.Itoa(RoleId)
CompanyUserInfo, err := models.GetCompanyUserById(CompanyUserId)
if err != nil {
return
}
if CompanyUserInfo.CompanyRoleIds == "" {
CompanyUserInfo.CompanyRoleIds = sRoleId
} else {
CompanyRoleIds := strings.Split(CompanyUserInfo.CompanyRoleIds, ",")
for _, v := range CompanyRoleIds {
if v == sRoleId {
return
}
}
CompanyUserInfo.CompanyRoleIds = CompanyUserInfo.CompanyRoleIds + "," + sRoleId
}
models.UpdateCompanyUserById(CompanyUserInfo)
return
}
删除企业子用户中的某个角色 / 删除企业子用户中角色 ID 为 RoleId 的角色
func CompanyUserDelPermission(CompanyUserIds []string, CompanyId, RoleId int) {
recordcount, _, CompanyUsers := models.GetCompanySubUser("", CompanyId)
for i := int64(0); i < recordcount; i++ {
if CompanyUsers[i]["company_user_id"] != nil {
flag := 0
for _, v := range CompanyUserIds {
if CompanyUsers[i]["company_user_id"].(string) == v {
flag = 1
break
}
}
if flag == 1 {
continue
} else {
companyuserid, _ := strconv.Atoi(CompanyUsers[i]["company_user_id"].(string))
companyuser, _ := models.GetCompanyUserById(companyuserid)
sRoleId := strconv.Itoa(RoleId)
if companyuser != nil {
CompanyRoleIds := strings.Split(companyuser.CompanyRoleIds, ",")
var tmp []string
for _, roleid := range CompanyRoleIds {
if roleid == sRoleId {
continue
}
tmp = append(tmp, roleid)
}
companyuser.CompanyRoleIds = strings.Join(tmp, ",")
models.UpdateCompanyUserById(companyuser)
}
}
}
}
return
}