feat: 添加数据库资产、命令拦截器、授权资产等功能,修复GitHub Actions工作流

This commit is contained in:
2026-04-18 07:44:18 +08:00
parent 6e2e2f9387
commit 3c217ab039
64 changed files with 3308 additions and 760 deletions
+106
View File
@@ -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
}