mirror of
https://github.com/lzh-1625/go_process_manager.git
synced 2025-10-04 23:52:53 +08:00
56 lines
2.0 KiB
Go
56 lines
2.0 KiB
Go
package repository
|
|
|
|
import (
|
|
"reflect"
|
|
|
|
"github.com/lzh-1625/go_process_manager/internal/app/constants"
|
|
"github.com/lzh-1625/go_process_manager/internal/app/model"
|
|
"github.com/lzh-1625/go_process_manager/log"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type permissionRepository struct{}
|
|
|
|
var PermissionRepository = new(permissionRepository)
|
|
|
|
func (p *permissionRepository) GetPermssionList(account string) []model.PermissionPo {
|
|
result := []model.PermissionPo{}
|
|
if err := db.Raw(`SELECT p.name ,p.uuid as pid,p2.owned ,p2."start" ,p2.stop ,p2.terminal,p2.log ,p2.write
|
|
FROM users u full join process p left join permission p2 on p2.account == u.account and p2.pid =p.uuid
|
|
WHERE u.account = ? or u.account ISNULL`, account).Find(&result); err.Error != nil {
|
|
log.Logger.Warnw("权限查询失败", "err", err)
|
|
}
|
|
|
|
return result
|
|
}
|
|
|
|
func (p *permissionRepository) EditPermssion(data model.Permission) error {
|
|
if db.Model(&model.Permission{}).Where(&model.Permission{Account: data.Account, Pid: data.Pid}).First(nil).Error == gorm.ErrRecordNotFound {
|
|
db.Omit("name").Create(&model.Permission{
|
|
Account: data.Account,
|
|
Pid: data.Pid,
|
|
})
|
|
}
|
|
return db.Model(&model.Permission{}).Where(&model.Permission{Account: data.Account, Pid: data.Pid}).Updates(map[string]interface{}{
|
|
"owned": data.Owned,
|
|
"start": data.Start,
|
|
"stop": data.Stop,
|
|
"terminal": data.Terminal,
|
|
"log": data.Log,
|
|
"write": data.Write,
|
|
}).Error
|
|
}
|
|
|
|
func (p *permissionRepository) GetPermission(user string, pid int) (result model.Permission) {
|
|
db.Model(&model.Permission{}).Where(&model.Permission{Account: user, Pid: int32(pid)}).First(&result)
|
|
return
|
|
}
|
|
|
|
func (p *permissionRepository) GetProcessNameByPermission(user string, op constants.OprPermission) (result []string) {
|
|
query := model.PermissionPo{Account: user, Owned: true}
|
|
reflect.ValueOf(&query).Elem().FieldByName(string(op)).SetBool(true)
|
|
db.Model(&model.Permission{}).Select("name").Joins("right join process p on p.uuid = pid").Where(query).Find(&result)
|
|
return
|
|
}
|