Files
2026-05-20 16:13:58 +08:00

105 lines
2.3 KiB
Go

package authoritySer
import (
"context"
"stat/api/proto"
"stat/common/genId"
"stat/common/stdLog"
"stat/models/authorityMod"
"time"
)
// 角色列表
func RoleList(ctx context.Context, param proto.RoleListReq) (code stdLog.CodeType, data interface{}, err error) {
skip := (param.PageNum - 1) * param.PageSize
limit := param.PageSize
resp := proto.RoleListRes{
Total: 0,
List: make([]proto.RoleInfo, 0),
}
total, auList, err := authorityMod.RoleList(ctx, skip, limit)
if err != nil {
code = stdLog.Failure
return
}
for _, v := range auList {
var tmp = proto.RoleInfo{
RoleId: v.Id,
Role: v.Role,
AuthJson: v.AuthJson,
CreatedAt: v.CreatedAt,
UpdatedAt: v.UpdatedAt,
}
resp.List = append(resp.List, tmp)
}
data = resp
resp.Total = total
code = stdLog.Success
return
}
// 添加角色
func AddRole(ctx context.Context, param proto.AddRoleReq) (code stdLog.CodeType, data interface{}, err error) {
// 查询是否存在该角色
roleInfo, err := authorityMod.GetAuthorityByRole(ctx, *param.Role)
if err != nil || roleInfo.Id > 0 {
code = stdLog.AuthorityRoleExists
return
}
// 获取id
roleId := genId.GetNextRoleId()
now := time.Now()
doc := authorityMod.Authority{
Id: roleId,
Role: *param.Role,
AuthJson: *param.AuthJson,
CreatedAt: now,
UpdatedAt: now,
}
if err = authorityMod.AddRole(ctx, &doc); err != nil {
code = stdLog.Failure
return
}
code = stdLog.Success
return
}
// 修改角色
func UpdateRole(ctx context.Context, param proto.UpdateRoleReq) (code stdLog.CodeType, data interface{}, err error) {
// 查询是否存在该角色
if param.Role != nil {
roleInfo, err := authorityMod.GetRoleExcludeRole(ctx, *param.RoleId, *param.Role)
if err != nil || roleInfo.Id > 0 {
code = stdLog.AuthorityRoleExists
return code, data, err
}
}
now := time.Now()
doc := authorityMod.UpdateDoc{
Role: param.Role,
AuthJson: param.AuthJson,
UpdatedAt: &now,
}
if err = authorityMod.UpdateRole(ctx, *param.RoleId, doc); err != nil {
code = stdLog.Failure
return
}
code = stdLog.Success
return
}
// 删除角色
func DelRole(ctx context.Context, param proto.DelRoleReq) (code stdLog.CodeType, data interface{}, err error) {
if err = authorityMod.DelRoleById(ctx, *param.RoleId); err != nil {
code = stdLog.Failure
return
}
code = stdLog.Success
return
}