mirror of
https://github.com/lzh-1625/go_process_manager.git
synced 2025-10-05 16:06:51 +08:00
1
This commit is contained in:
@@ -1,12 +1,12 @@
|
|||||||
package repository
|
package repository
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"reflect"
|
"errors"
|
||||||
|
|
||||||
"github.com/lzh-1625/go_process_manager/internal/app/constants"
|
"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/internal/app/model"
|
||||||
|
"github.com/lzh-1625/go_process_manager/internal/app/repository/query"
|
||||||
"github.com/lzh-1625/go_process_manager/log"
|
"github.com/lzh-1625/go_process_manager/log"
|
||||||
|
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -26,21 +26,22 @@ func (p *permissionRepository) GetPermssionList(account string) []model.Permissi
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (p *permissionRepository) EditPermssion(data model.Permission) error {
|
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 {
|
per := query.Permission
|
||||||
db.Omit("name").Create(&model.Permission{
|
if _, err := per.Where(per.Account.Eq(data.Account)).Where(per.Pid.Eq(data.Pid)).First(); errors.Is(err, gorm.ErrRecordNotFound) {
|
||||||
|
per.Create(&model.Permission{
|
||||||
Account: data.Account,
|
Account: data.Account,
|
||||||
Pid: data.Pid,
|
Pid: data.Pid,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
return db.Model(&model.Permission{}).Where(&model.Permission{Account: data.Account, Pid: data.Pid}).Updates(map[string]interface{}{
|
_, err := per.Where(per.Account.Eq(data.Account)).Where(per.Pid.Eq(data.Pid)).Updates(map[string]any{
|
||||||
"owned": data.Owned,
|
per.Owned.ColumnName().String(): data.Owned,
|
||||||
"start": data.Start,
|
per.Start.ColumnName().String(): data.Start,
|
||||||
"stop": data.Stop,
|
per.Stop.ColumnName().String(): data.Stop,
|
||||||
"terminal": data.Terminal,
|
per.Terminal.ColumnName().String(): data.Terminal,
|
||||||
"log": data.Log,
|
per.Log.ColumnName().String(): data.Log,
|
||||||
"write": data.Write,
|
per.Write.ColumnName().String(): data.Write,
|
||||||
}).Error
|
})
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *permissionRepository) GetPermission(user string, pid int) (result model.Permission) {
|
func (p *permissionRepository) GetPermission(user string, pid int) (result model.Permission) {
|
||||||
@@ -49,8 +50,19 @@ func (p *permissionRepository) GetPermission(user string, pid int) (result model
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (p *permissionRepository) GetProcessNameByPermission(user string, op constants.OprPermission) (result []string) {
|
func (p *permissionRepository) GetProcessNameByPermission(user string, op constants.OprPermission) (result []string) {
|
||||||
query := model.PermissionPo{Account: user, Owned: true}
|
tx := query.Permission.Select(query.Process.Name).RightJoin(query.Permission, query.Process.Uuid.EqCol(query.Permission.Pid)).Where(query.Permission.Account.Eq(user)).Where(query.Permission.Owned.Is(true))
|
||||||
reflect.ValueOf(&query).Elem().FieldByName(string(op)).SetBool(true)
|
switch op {
|
||||||
db.Model(&model.Permission{}).Select("name").Joins("right join process p on p.uuid = pid").Where(query).Find(&result)
|
case constants.OPERATION_LOG:
|
||||||
|
tx = tx.Where(query.Permission.Log.Is(true))
|
||||||
|
case constants.OPERATION_START:
|
||||||
|
tx = tx.Where(query.Permission.Start.Is(true))
|
||||||
|
case constants.OPERATION_STOP:
|
||||||
|
tx = tx.Where(query.Permission.Stop.Is(true))
|
||||||
|
case constants.OPERATION_TERMINAL:
|
||||||
|
tx = tx.Where(query.Permission.Terminal.Is(true))
|
||||||
|
case constants.OPERATION_TERMINAL_WRITE:
|
||||||
|
tx = tx.Where(query.Permission.Write.Is(true))
|
||||||
|
}
|
||||||
|
tx.Scan(&result)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@@ -23,7 +23,7 @@ func (p *processRepository) GetAllProcessConfig() []model.Process {
|
|||||||
|
|
||||||
func (p *processRepository) GetProcessConfigByUser(username string) []model.Process {
|
func (p *processRepository) GetProcessConfigByUser(username string) []model.Process {
|
||||||
result := []model.Process{}
|
result := []model.Process{}
|
||||||
err := query.Permission.LeftJoin(query.Process, query.Process.Uuid.EqCol(query.Permission.Pid)).
|
err := query.Process.LeftJoin(query.Permission, query.Process.Uuid.EqCol(query.Permission.Pid)).
|
||||||
Where(query.Permission.Owned.Is(true)).
|
Where(query.Permission.Owned.Is(true)).
|
||||||
Where(query.Permission.Account.Eq(username)).
|
Where(query.Permission.Account.Eq(username)).
|
||||||
Scan(&result)
|
Scan(&result)
|
||||||
|
Reference in New Issue
Block a user