91 lines
2.4 KiB
Go
91 lines
2.4 KiB
Go
|
package dao
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
|
||
|
model "go-common/app/admin/main/macross/model/manager"
|
||
|
"go-common/library/log"
|
||
|
)
|
||
|
|
||
|
const (
|
||
|
// load cache(get all).
|
||
|
_rolesSQL = `SELECT id,system,name,ctime,mtime FROM role`
|
||
|
// role.
|
||
|
_inRoleSQL = `INSERT INTO role (system,name) VALUES(?,?)`
|
||
|
_upRoleSQL = `UPDATE role SET name=? WHERE id=?`
|
||
|
_delRoleSQL = `DELETE FROM role WHERE id=?`
|
||
|
_cleanRelationByRole = "DELETE FROM auth_relation WHERE rid=?"
|
||
|
)
|
||
|
|
||
|
// Roles select all role from db.
|
||
|
func (d *Dao) Roles(c context.Context) (res map[string]map[int64]*model.Role, err error) {
|
||
|
rows, err := d.db.Query(c, _rolesSQL)
|
||
|
if err != nil {
|
||
|
log.Error("Roles d.db.Query(%d) error(%v)", err)
|
||
|
return
|
||
|
}
|
||
|
defer rows.Close()
|
||
|
res = make(map[string]map[int64]*model.Role)
|
||
|
for rows.Next() {
|
||
|
var (
|
||
|
roles map[int64]*model.Role
|
||
|
ok bool
|
||
|
)
|
||
|
role := &model.Role{}
|
||
|
if err = rows.Scan(&role.RoleID, &role.System, &role.RoleName, &role.CTime, &role.MTime); err != nil {
|
||
|
log.Error("Roles rows.Scan error(%v)", err)
|
||
|
return
|
||
|
}
|
||
|
if roles, ok = res[role.System]; !ok {
|
||
|
roles = make(map[int64]*model.Role)
|
||
|
res[role.System] = roles
|
||
|
}
|
||
|
roles[role.RoleID] = role
|
||
|
}
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// AddRole insert role.
|
||
|
func (d *Dao) AddRole(c context.Context, system, roleName string) (rows int64, err error) {
|
||
|
res, err := d.db.Exec(c, _inRoleSQL, system, roleName)
|
||
|
if err != nil {
|
||
|
log.Error("AddRole d.db.Exec() error(%v)", err)
|
||
|
return
|
||
|
}
|
||
|
rows, err = res.RowsAffected()
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// UpRole update role.
|
||
|
func (d *Dao) UpRole(c context.Context, roleName string, roleID int64) (rows int64, err error) {
|
||
|
res, err := d.db.Exec(c, _upRoleSQL, roleName, roleID)
|
||
|
if err != nil {
|
||
|
log.Error("UpRole d.db.Exec() error(%v)", err)
|
||
|
return
|
||
|
}
|
||
|
rows, err = res.RowsAffected()
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// DelRole del role.
|
||
|
func (d *Dao) DelRole(c context.Context, roleID int64) (rows int64, err error) {
|
||
|
res, err := d.db.Exec(c, _delRoleSQL, roleID)
|
||
|
if err != nil {
|
||
|
log.Error("DelRole d.db.Exec() error(%v)", err)
|
||
|
return
|
||
|
}
|
||
|
rows, err = res.RowsAffected()
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// CleanAuthRelationByRole del all auth relation by role.
|
||
|
func (d *Dao) CleanAuthRelationByRole(c context.Context, roleID int64) (rows int64, err error) {
|
||
|
res, err := d.db.Exec(c, _cleanRelationByRole, roleID)
|
||
|
if err != nil {
|
||
|
log.Error("CleanAuthRelationByRole d.db.Exec() error(%v)", err)
|
||
|
return
|
||
|
}
|
||
|
rows, err = res.RowsAffected()
|
||
|
return
|
||
|
}
|