busniess-user-center/internal/repo/role.go

131 lines
3.9 KiB
Go

// Code generated by sql2gorm. DO NOT EDIT.
package repo
import (
"context"
"time"
"fmt"
"github.com/samber/do"
"gorm.io/gorm"
)
func init(){
do.Provide[RoleRepo](nil,NewRoleRepo)
}
// 表
type Role struct {
ID uint `gorm:"column:id;primary_key;AUTO_INCREMENT"` // id
Code string `gorm:"column:code;NOT NULL"` // code
Name string `gorm:"column:name;NOT NULL"` // 名称
CreatedBy string `gorm:"column:created_by"` // 创建人
CreatedOn time.Time `gorm:"column:created_on;default:CURRENT_TIMESTAMP;NOT NULL"` // 记录创建时间
ModifiedBy string `gorm:"column:modified_by"` // 修改人
ModifiedOn time.Time `gorm:"column:modified_on;default:CURRENT_TIMESTAMP"` // 记录修改时间
}
func (m *Role) TableName() string {
return "role"
}
type RoleRepo interface{
ExistCode(ctx context.Context,code string)(exist bool,err error)
ExistId(ctx context.Context,id uint)(exist bool,err error)
Create(ctx context.Context,role Role)error
Save(ctx context.Context,role Role)error
Search(ctx context.Context,query Query)([]Role,error)
GetById(ctx context.Context,id uint)(Role,error)
DelById(ctx context.Context,id uint)error
// 用户角色
CreateUserRole(ctx context.Context,items []UserRole)error
GetUserRolesByAccount(ctx context.Context,account string)([]Role,error)
RemoveUserRole(ctx context.Context,items []UserRole)error
// 组织角色
GetOrgRolesByIDs(ctx context.Context,ids []uint)([]Role,error)
}
type roleRepo struct{
db *gorm.DB
}
func NewRoleRepo(i *do.Injector)(RoleRepo,error){
return &roleRepo{
db :do.MustInvoke[*gorm.DB](i),
},nil
}
func (r *roleRepo)ExistCode(ctx context.Context,code string)(exist bool,err error){
var count int64 = 0
err = r.db.Model(&Role{}).Where("code = ?",code).Count(&count).Error
if count > 0{
return true,err
}
return false,err
}
func (r *roleRepo)ExistId(ctx context.Context,id uint)(exist bool,err error){
var count int64 = 0
err = r.db.Model(&Role{}).Where("id = ?",id).Count(&count).Error
if count > 0{
return true,err
}
return false,err
}
func (r *roleRepo)Create(ctx context.Context,role Role)error{
return r.db.Create(&role).Error
}
func (r *roleRepo)Save(ctx context.Context,role Role)error{
return r.db.Model(&Role{}).Where("id = ?",role.ID).Update("name",role.Name).Error
}
func (r *roleRepo)Search(ctx context.Context,query Query)([]Role,error){
roles := make([]Role, 0)
keyword := fmt.Sprintf("%%%s%%", query.Keyword)
db := r.db.Model(&Role{})
if query.Keyword != "" {
db = db.Where("code like ? or name like ?", keyword, keyword)
}
err := db.Order(query.Sort).Limit(query.PageSize).Offset(query.Page * query.PageSize).Find(&roles).Error
return roles, err
}
func (r *roleRepo)GetById(ctx context.Context,id uint)(Role,error){
role := Role{}
err := r.db.Where("id = ?",id).Take(&role).Error
return role,err
}
func (r *roleRepo)DelById(ctx context.Context,id uint)error{
return r.db.Where("id = ?",id).Delete(&Role{}).Error
}
func (r *roleRepo)GetUserRolesByAccount(ctx context.Context,account string)([]Role,error){
roles := make([]Role,0)
err := r.db.Model(Role{}).Joins("join user_role on user_role.role_code = role.code and user_role.user_account = ?",account).Find(&roles).Error
return roles,err
}
func (r *roleRepo)GetOrgRolesByIDs(ctx context.Context,ids []uint)([]Role,error){
roles := make([]Role,0)
err := r.db.Model(Role{}).Joins("join organization_role on organization_role.role_id = role.id and organization_role.org_id in ?",ids).Find(&roles).Error
return roles,err
}
func (r *roleRepo)RemoveUserRole(ctx context.Context,items []UserRole)error{
for _,item := range items{
if err := r.db.Where("user_account = ? and role_code = ?",item.UserAccount,item.RoleCode).Delete(&UserRole{}).Error;err != nil{
return err
}
}
return nil
}