1.4.5.2
This commit is contained in:
208
EdgeAPI/internal/rpc/services/service_user_script_plus.go
Normal file
208
EdgeAPI/internal/rpc/services/service_user_script_plus.go
Normal file
@@ -0,0 +1,208 @@
|
||||
// Copyright 2023 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
|
||||
//go:build plus
|
||||
|
||||
package services
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
|
||||
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
||||
)
|
||||
|
||||
// UserScriptService 用户脚本服务
|
||||
type UserScriptService struct {
|
||||
BaseService
|
||||
}
|
||||
|
||||
// FindUserScript 查找单个用户脚本信息
|
||||
func (this *UserScriptService) FindUserScript(ctx context.Context, req *pb.FindUserScriptRequest) (*pb.FindUserScriptResponse, error) {
|
||||
_, err := this.ValidateAdmin(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var tx = this.NullTx()
|
||||
userScript, err := models.SharedUserScriptDAO.FindEnabledUserScript(tx, req.UserScriptId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if userScript == nil {
|
||||
return &pb.FindUserScriptResponse{
|
||||
UserScript: nil,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// user
|
||||
var pbUser *pb.User
|
||||
if userScript.UserId > 0 {
|
||||
user, err := models.SharedUserDAO.FindEnabledBasicUser(tx, int64(userScript.UserId))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if user != nil {
|
||||
pbUser = &pb.User{
|
||||
Id: int64(user.Id),
|
||||
Fullname: user.Fullname,
|
||||
Username: user.Username,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return &pb.FindUserScriptResponse{
|
||||
UserScript: &pb.UserScript{
|
||||
Id: int64(userScript.Id),
|
||||
UserId: int64(userScript.UserId),
|
||||
AdminId: int64(userScript.AdminId),
|
||||
Code: userScript.Code,
|
||||
CodeMD5: userScript.CodeMD5,
|
||||
CreatedAt: int64(userScript.CreatedAt),
|
||||
IsRejected: userScript.IsRejected,
|
||||
RejectedAt: int64(userScript.RejectedAt),
|
||||
RejectedReason: userScript.RejectedReason,
|
||||
IsPassed: userScript.IsPassed,
|
||||
PassedAt: int64(userScript.PassedAt),
|
||||
User: pbUser,
|
||||
},
|
||||
}, nil
|
||||
}
|
||||
|
||||
// FindUserScriptWithMD5 根据代码MD5查找脚本
|
||||
func (this *UserScriptService) FindUserScriptWithMD5(ctx context.Context, req *pb.FindUserScriptWithMD5Request) (*pb.FindUserScriptWithMD5Response, error) {
|
||||
_, userId, err := this.ValidateAdminAndUser(ctx, true)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var tx = this.NullTx()
|
||||
userScript, err := models.SharedUserScriptDAO.FindUserScriptWithCodeMD5(tx, req.CodeMD5)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if userScript == nil {
|
||||
return &pb.FindUserScriptWithMD5Response{
|
||||
UserScript: nil,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// check user
|
||||
if userId > 0 {
|
||||
if userId != int64(userScript.UserId) {
|
||||
return nil, this.PermissionError()
|
||||
}
|
||||
}
|
||||
|
||||
return &pb.FindUserScriptWithMD5Response{
|
||||
UserScript: &pb.UserScript{
|
||||
Id: int64(userScript.Id),
|
||||
UserId: int64(userScript.UserId),
|
||||
AdminId: int64(userScript.AdminId),
|
||||
Code: userScript.Code,
|
||||
CodeMD5: userScript.CodeMD5,
|
||||
CreatedAt: int64(userScript.CreatedAt),
|
||||
IsRejected: userScript.IsRejected,
|
||||
RejectedAt: int64(userScript.RejectedAt),
|
||||
RejectedReason: userScript.RejectedReason,
|
||||
IsPassed: userScript.IsPassed,
|
||||
PassedAt: int64(userScript.PassedAt),
|
||||
User: nil,
|
||||
},
|
||||
}, nil
|
||||
}
|
||||
|
||||
// CountUserScripts 计算用户脚本数量
|
||||
func (this *UserScriptService) CountUserScripts(ctx context.Context, req *pb.CountUserScriptsRequest) (*pb.RPCCountResponse, error) {
|
||||
_, err := this.ValidateAdmin(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var tx = this.NullTx()
|
||||
count, err := models.SharedUserScriptDAO.CountUserScripts(tx, req.UserId, req.IsAuditing)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return this.SuccessCount(count)
|
||||
}
|
||||
|
||||
// ListUserScripts 列出单页用户脚本
|
||||
func (this *UserScriptService) ListUserScripts(ctx context.Context, req *pb.ListUserScriptsRequest) (*pb.ListUserScriptsResponse, error) {
|
||||
_, err := this.ValidateAdmin(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var tx = this.NullTx()
|
||||
userScripts, err := models.SharedUserScriptDAO.ListUserScripts(tx, req.UserId, req.IsAuditing, req.Offset, req.Size)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
var pbUserScripts []*pb.UserScript
|
||||
for _, userScript := range userScripts {
|
||||
// user
|
||||
var pbUser *pb.User
|
||||
if userScript.UserId > 0 {
|
||||
user, err := models.SharedUserDAO.FindEnabledBasicUser(tx, int64(userScript.UserId))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if user != nil {
|
||||
pbUser = &pb.User{
|
||||
Id: int64(user.Id),
|
||||
Fullname: user.Fullname,
|
||||
Username: user.Username,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pbUserScripts = append(pbUserScripts, &pb.UserScript{
|
||||
Id: int64(userScript.Id),
|
||||
UserId: int64(userScript.UserId),
|
||||
AdminId: int64(userScript.AdminId),
|
||||
Code: userScript.Code,
|
||||
CodeMD5: userScript.CodeMD5,
|
||||
CreatedAt: int64(userScript.CreatedAt),
|
||||
IsRejected: userScript.IsRejected,
|
||||
RejectedAt: int64(userScript.RejectedAt),
|
||||
RejectedReason: userScript.RejectedReason,
|
||||
IsPassed: userScript.IsPassed,
|
||||
PassedAt: int64(userScript.PassedAt),
|
||||
User: pbUser,
|
||||
})
|
||||
}
|
||||
|
||||
return &pb.ListUserScriptsResponse{
|
||||
UserScripts: pbUserScripts,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// PassUserScript 审核并通过用户脚本
|
||||
func (this *UserScriptService) PassUserScript(ctx context.Context, req *pb.PassUserScriptRequest) (*pb.RPCSuccess, error) {
|
||||
adminId, err := this.ValidateAdmin(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var tx = this.NullTx()
|
||||
err = models.SharedUserScriptDAO.PassUserScript(tx, req.UserScriptId, adminId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return this.Success()
|
||||
}
|
||||
|
||||
// RejectUserScript 审核并驳回用户脚本
|
||||
func (this *UserScriptService) RejectUserScript(ctx context.Context, req *pb.RejectUserScriptRequest) (*pb.RPCSuccess, error) {
|
||||
adminId, err := this.ValidateAdmin(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var tx = this.NullTx()
|
||||
err = models.SharedUserScriptDAO.RejectUserScript(tx, req.UserScriptId, adminId, req.Reason)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return this.Success()
|
||||
}
|
||||
Reference in New Issue
Block a user