feat: 添加数据库资产、命令拦截器、授权资产等功能,修复GitHub Actions工作流
This commit is contained in:
@@ -0,0 +1,106 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"next-terminal/server/model"
|
||||
)
|
||||
|
||||
var UserDepartmentRepository = new(userDepartmentRepository)
|
||||
|
||||
type userDepartmentRepository struct {
|
||||
baseRepository
|
||||
}
|
||||
|
||||
func (r userDepartmentRepository) FindByUserId(c context.Context, userId string) (o []model.UserDepartmentRef, err error) {
|
||||
err = r.GetDB(c).Where("user_id = ?", userId).Find(&o).Error
|
||||
return
|
||||
}
|
||||
|
||||
func (r userDepartmentRepository) FindByDepartmentId(c context.Context, departmentId string) (o []model.UserDepartmentRef, err error) {
|
||||
err = r.GetDB(c).Where("department_id = ?", departmentId).Find(&o).Error
|
||||
return
|
||||
}
|
||||
|
||||
func (r userDepartmentRepository) FindUsersByDepartmentId(c context.Context, departmentId string) (userIds []string, err error) {
|
||||
var refs []model.UserDepartmentRef
|
||||
err = r.GetDB(c).Where("department_id = ?", departmentId).Find(&refs).Error
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
for _, ref := range refs {
|
||||
userIds = append(userIds, ref.UserId)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (r userDepartmentRepository) SaveUserDepartments(c context.Context, userId string, departmentIds []string) error {
|
||||
tx := r.GetDB(c).Begin()
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
tx.Rollback()
|
||||
}
|
||||
}()
|
||||
|
||||
if err := tx.Where("user_id = ?", userId).Delete(&model.UserDepartmentRef{}).Error; err != nil {
|
||||
tx.Rollback()
|
||||
return err
|
||||
}
|
||||
|
||||
for _, deptId := range departmentIds {
|
||||
ref := model.UserDepartmentRef{
|
||||
UserId: userId,
|
||||
DepartmentId: deptId,
|
||||
}
|
||||
if err := tx.Create(&ref).Error; err != nil {
|
||||
tx.Rollback()
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return tx.Commit().Error
|
||||
}
|
||||
|
||||
func (r userDepartmentRepository) SaveDepartmentUsers(c context.Context, departmentId string, userIds []string) error {
|
||||
tx := r.GetDB(c).Begin()
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
tx.Rollback()
|
||||
}
|
||||
}()
|
||||
|
||||
if err := tx.Where("department_id = ?", departmentId).Delete(&model.UserDepartmentRef{}).Error; err != nil {
|
||||
tx.Rollback()
|
||||
return err
|
||||
}
|
||||
|
||||
for _, userId := range userIds {
|
||||
ref := model.UserDepartmentRef{
|
||||
UserId: userId,
|
||||
DepartmentId: departmentId,
|
||||
}
|
||||
if err := tx.Create(&ref).Error; err != nil {
|
||||
tx.Rollback()
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return tx.Commit().Error
|
||||
}
|
||||
|
||||
func (r userDepartmentRepository) RemoveUsersFromDepartment(c context.Context, departmentId string, userIds []string) error {
|
||||
return r.GetDB(c).Where("department_id = ? AND user_id IN ?", departmentId, userIds).Delete(&model.UserDepartmentRef{}).Error
|
||||
}
|
||||
|
||||
func (r userDepartmentRepository) DeleteByUserId(c context.Context, userId string) error {
|
||||
return r.GetDB(c).Where("user_id = ?", userId).Delete(&model.UserDepartmentRef{}).Error
|
||||
}
|
||||
|
||||
func (r userDepartmentRepository) DeleteByDepartmentId(c context.Context, departmentId string) error {
|
||||
return r.GetDB(c).Where("department_id = ?", departmentId).Delete(&model.UserDepartmentRef{}).Error
|
||||
}
|
||||
|
||||
func (r userDepartmentRepository) CountByDepartmentId(c context.Context, departmentId string) (total int64, err error) {
|
||||
err = r.GetDB(c).Model(&model.UserDepartmentRef{}).Where("department_id = ?", departmentId).Count(&total).Error
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user