用户与角色关联表
This commit is contained in:
15
features/sys_user_role/model_sys_user_role.go
Normal file
15
features/sys_user_role/model_sys_user_role.go
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
package sysuserrole
|
||||||
|
|
||||||
|
// SysUserRole 用户和角色关联对象 sys_user_role
|
||||||
|
type SysUserRole struct {
|
||||||
|
UserID string `json:"userId"` // 用户ID
|
||||||
|
RoleID string `json:"roleId"` // 角色ID
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewSysUserRole 创建用户和角色关联对象的构造函数
|
||||||
|
func NewSysUserRole(userID string, roleID string) SysUserRole {
|
||||||
|
return SysUserRole{
|
||||||
|
UserID: userID,
|
||||||
|
RoleID: roleID,
|
||||||
|
}
|
||||||
|
}
|
||||||
72
features/sys_user_role/repo_sys_user_role.go
Normal file
72
features/sys_user_role/repo_sys_user_role.go
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
package sysuserrole
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"ems.agt/lib/core/datasource"
|
||||||
|
"ems.agt/lib/core/utils/parse"
|
||||||
|
"github.com/go-admin-team/go-admin-core/logger"
|
||||||
|
)
|
||||||
|
|
||||||
|
// 实例化数据层 RepoSysUserRole 结构体
|
||||||
|
var NewRepoSysUserRole = &RepoSysUserRole{}
|
||||||
|
|
||||||
|
// RepoSysUserRole 用户与角色关联表 数据层处理
|
||||||
|
type RepoSysUserRole struct{}
|
||||||
|
|
||||||
|
// CountUserRoleByRoleId 通过角色ID查询角色使用数量
|
||||||
|
func (r *RepoSysUserRole) CountUserRoleByRoleId(roleId string) int64 {
|
||||||
|
querySql := "select count(1) as total from sys_user_role where role_id = ?"
|
||||||
|
results, err := datasource.RawDB("", querySql, []any{roleId})
|
||||||
|
if err != nil {
|
||||||
|
logger.Errorf("query err => %v", err)
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
if len(results) > 0 {
|
||||||
|
return parse.Number(results[0]["total"])
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// BatchUserRole 批量新增用户角色信息
|
||||||
|
func (r *RepoSysUserRole) BatchUserRole(sysUserRoles []SysUserRole) int64 {
|
||||||
|
keyValues := make([]string, 0)
|
||||||
|
for _, item := range sysUserRoles {
|
||||||
|
keyValues = append(keyValues, fmt.Sprintf("(%s,%s)", item.UserID, item.RoleID))
|
||||||
|
}
|
||||||
|
sql := "insert into sys_user_role(user_id, role_id) values " + strings.Join(keyValues, ",")
|
||||||
|
results, err := datasource.ExecDB("", sql, nil)
|
||||||
|
if err != nil {
|
||||||
|
logger.Errorf("delete err => %v", err)
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
return results
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteUserRole 批量删除用户和角色关联
|
||||||
|
func (r *RepoSysUserRole) DeleteUserRole(userIds []string) int64 {
|
||||||
|
placeholder := datasource.KeyPlaceholderByQuery(len(userIds))
|
||||||
|
sql := "delete from sys_user_role where user_id in (" + placeholder + ")"
|
||||||
|
parameters := datasource.ConvertIdsSlice(userIds)
|
||||||
|
results, err := datasource.ExecDB("", sql, parameters)
|
||||||
|
if err != nil {
|
||||||
|
logger.Errorf("delete err => %v", err)
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
return results
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteUserRoleByRoleId 批量取消授权用户角色
|
||||||
|
func (r *RepoSysUserRole) DeleteUserRoleByRoleId(roleId string, userIds []string) int64 {
|
||||||
|
placeholder := datasource.KeyPlaceholderByQuery(len(userIds))
|
||||||
|
sql := "delete from sys_user_role where role_id= ? and user_id in (" + placeholder + ")"
|
||||||
|
parameters := datasource.ConvertIdsSlice(userIds)
|
||||||
|
parameters = append([]any{roleId}, parameters...)
|
||||||
|
results, err := datasource.ExecDB("", sql, parameters)
|
||||||
|
if err != nil {
|
||||||
|
logger.Errorf("delete err => %v", err)
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
return results
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user