feat: 添加毛隅管理模块的后台接口与菜单权限
This commit is contained in:
@@ -0,0 +1,209 @@
|
||||
package sysin
|
||||
|
||||
import (
|
||||
"context"
|
||||
"strings"
|
||||
|
||||
"github.com/gogf/gf/v2/os/gtime"
|
||||
|
||||
"hotgo/internal/model/input/form"
|
||||
)
|
||||
|
||||
// 毛隅管理页面输入输出:概览、互动动作配置、宠物档案、场景生成任务、互动通知。
|
||||
// 内容审核、举报、操作日志协议与养成一致,直接复用 Cultivate* 输入输出,仅路由前缀不同。
|
||||
|
||||
type MaoyuDashboardInp struct{}
|
||||
type MaoyuDashboardModel struct {
|
||||
PetCount int64 `json:"petCount"`
|
||||
ActivePetCount int64 `json:"activePetCount"`
|
||||
BuildingPetCount int64 `json:"buildingPetCount"`
|
||||
JobRunningCount int64 `json:"jobRunningCount"`
|
||||
JobSucceededCount int64 `json:"jobSucceededCount"`
|
||||
JobFailedCount int64 `json:"jobFailedCount"`
|
||||
NoticeCount int64 `json:"noticeCount"`
|
||||
UnreadNoticeCount int64 `json:"unreadNoticeCount"`
|
||||
PostCount int64 `json:"postCount"`
|
||||
PublicPostCount int64 `json:"publicPostCount"`
|
||||
FriendsPostCount int64 `json:"friendsPostCount"`
|
||||
PrivatePostCount int64 `json:"privatePostCount"`
|
||||
CommentCount int64 `json:"commentCount"`
|
||||
LikeCount int64 `json:"likeCount"`
|
||||
TakenDownCount int64 `json:"takenDownCount"`
|
||||
PendingAuditCount int64 `json:"pendingAuditCount"`
|
||||
ApprovedAuditCount int64 `json:"approvedAuditCount"`
|
||||
RejectedAuditCount int64 `json:"rejectedAuditCount"`
|
||||
PendingReportCount int64 `json:"pendingReportCount"`
|
||||
ProcessingCount int64 `json:"processingReportCount"`
|
||||
ProcessedCount int64 `json:"processedReportCount"`
|
||||
}
|
||||
|
||||
type MaoyuActionConfigListInp struct {
|
||||
form.PageReq
|
||||
Keyword string `json:"keyword"`
|
||||
Status string `json:"status" v:"in:,enabled,disabled#动作状态不正确"`
|
||||
Version string `json:"version"`
|
||||
CreatedAt []*gtime.Time `json:"createdAt"`
|
||||
}
|
||||
|
||||
func (in *MaoyuActionConfigListInp) Filter(ctx context.Context) (err error) {
|
||||
if in.CreatedAt != nil && len(in.CreatedAt) == 2 && !in.CreatedAt[0].IsZero() && !in.CreatedAt[1].IsZero() {
|
||||
in.CreatedAt = []*gtime.Time{in.CreatedAt[0].StartOfDay(), in.CreatedAt[1].EndOfDay()}
|
||||
} else {
|
||||
in.CreatedAt = nil
|
||||
}
|
||||
in.Keyword = strings.TrimSpace(in.Keyword)
|
||||
return nil
|
||||
}
|
||||
|
||||
type MaoyuActionConfigListModel struct {
|
||||
Id string `json:"id"`
|
||||
ActionCode string `json:"actionCode"`
|
||||
ActionName string `json:"actionName"`
|
||||
Enabled bool `json:"enabled"`
|
||||
DailyLimit int `json:"dailyLimit"`
|
||||
CooldownSeconds int `json:"cooldownSeconds"`
|
||||
MutexGroup string `json:"mutexGroup"`
|
||||
AssetKey string `json:"assetKey"`
|
||||
EffectConfig map[string]any `json:"effectConfig"`
|
||||
ConfigVersion string `json:"configVersion"`
|
||||
SortNo int `json:"sortNo"`
|
||||
CreatedAt string `json:"createdAt"`
|
||||
UpdatedAt string `json:"updatedAt"`
|
||||
}
|
||||
|
||||
type MaoyuActionConfigViewInp struct {
|
||||
Id string `json:"id" v:"required#动作配置ID不能为空"`
|
||||
}
|
||||
type MaoyuActionConfigViewModel struct{ MaoyuActionConfigListModel }
|
||||
|
||||
type MaoyuActionConfigEditInp struct {
|
||||
Id string `json:"id"`
|
||||
ActionCode string `json:"actionCode" v:"required|max-length:24|regex:^[a-z][a-z0-9_]*$#动作编码不能为空|动作编码过长|动作编码仅支持小写字母、数字和下划线"`
|
||||
ActionName string `json:"actionName" v:"required|max-length:64#动作名称不能为空|动作名称过长"`
|
||||
DailyLimit int `json:"dailyLimit" v:"min:0#每日次数不能为负"`
|
||||
CooldownSeconds int `json:"cooldownSeconds" v:"min:0#冷却时间不能为负"`
|
||||
MutexGroup string `json:"mutexGroup" v:"max-length:32#互斥组过长"`
|
||||
AssetKey string `json:"assetKey" v:"required|max-length:64#素材键不能为空|素材键过长"`
|
||||
EffectConfig map[string]any `json:"effectConfig"`
|
||||
SortNo int `json:"sortNo"`
|
||||
}
|
||||
type MaoyuActionConfigStatusInp struct {
|
||||
Id string `json:"id" v:"required#动作配置ID不能为空"`
|
||||
Reason string `json:"reason"`
|
||||
}
|
||||
|
||||
type MaoyuPetListInp struct {
|
||||
form.PageReq
|
||||
UserId string `json:"userId"`
|
||||
PetType string `json:"petType"`
|
||||
Status string `json:"status" v:"in:,creating,active,deleted#宠物状态不正确"`
|
||||
Keyword string `json:"keyword"`
|
||||
CreatedAt []*gtime.Time `json:"createdAt"`
|
||||
}
|
||||
|
||||
func (in *MaoyuPetListInp) Filter(ctx context.Context) (err error) {
|
||||
if in.CreatedAt != nil && len(in.CreatedAt) == 2 && !in.CreatedAt[0].IsZero() && !in.CreatedAt[1].IsZero() {
|
||||
in.CreatedAt = []*gtime.Time{in.CreatedAt[0].StartOfDay(), in.CreatedAt[1].EndOfDay()}
|
||||
} else {
|
||||
in.CreatedAt = nil
|
||||
}
|
||||
in.Keyword = strings.TrimSpace(in.Keyword)
|
||||
return nil
|
||||
}
|
||||
|
||||
type MaoyuPetListModel struct {
|
||||
Id string `json:"id"`
|
||||
UserId string `json:"userId"`
|
||||
PetType string `json:"petType"`
|
||||
CustomTypeName string `json:"customTypeName"`
|
||||
PetName string `json:"petName"`
|
||||
BirthDate string `json:"birthDate"`
|
||||
AgeEstimated bool `json:"ageEstimated"`
|
||||
WeightValue string `json:"weightValue"`
|
||||
WeightUnit string `json:"weightUnit"`
|
||||
AvatarFileId string `json:"avatarFileId"`
|
||||
Status string `json:"status"`
|
||||
CurrentSceneId string `json:"currentSceneId"`
|
||||
Version uint `json:"version"`
|
||||
CreatedAt string `json:"createdAt"`
|
||||
UpdatedAt string `json:"updatedAt"`
|
||||
}
|
||||
type MaoyuPetViewInp struct {
|
||||
Id string `json:"id" v:"required#宠物ID不能为空"`
|
||||
}
|
||||
type MaoyuPetViewModel struct{ MaoyuPetListModel }
|
||||
|
||||
type MaoyuJobListInp struct {
|
||||
form.PageReq
|
||||
PetId string `json:"petId"`
|
||||
UserId string `json:"userId"`
|
||||
Status string `json:"status" v:"in:,queued,prechecking,generating,reviewing,succeeded,failed,canceled#任务状态不正确"`
|
||||
ErrorCode string `json:"errorCode"`
|
||||
CreatedAt []*gtime.Time `json:"createdAt"`
|
||||
}
|
||||
|
||||
func (in *MaoyuJobListInp) Filter(ctx context.Context) (err error) {
|
||||
if in.CreatedAt != nil && len(in.CreatedAt) == 2 && !in.CreatedAt[0].IsZero() && !in.CreatedAt[1].IsZero() {
|
||||
in.CreatedAt = []*gtime.Time{in.CreatedAt[0].StartOfDay(), in.CreatedAt[1].EndOfDay()}
|
||||
} else {
|
||||
in.CreatedAt = nil
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type MaoyuJobListModel struct {
|
||||
Id string `json:"id"`
|
||||
UserId string `json:"userId"`
|
||||
PetId string `json:"petId"`
|
||||
Status string `json:"status"`
|
||||
Stage string `json:"stage"`
|
||||
Progress int `json:"progress"`
|
||||
ProgressMode string `json:"progressMode"`
|
||||
InputFileId string `json:"inputFileId"`
|
||||
ResultSceneId string `json:"resultSceneId"`
|
||||
ErrorCode string `json:"errorCode"`
|
||||
ErrorMessage string `json:"errorMessage"`
|
||||
Provider string `json:"provider"`
|
||||
StartedAt string `json:"startedAt"`
|
||||
FinishedAt string `json:"finishedAt"`
|
||||
CreatedAt string `json:"createdAt"`
|
||||
UpdatedAt string `json:"updatedAt"`
|
||||
}
|
||||
type MaoyuJobViewInp struct {
|
||||
Id string `json:"id" v:"required#任务ID不能为空"`
|
||||
}
|
||||
type MaoyuJobViewModel struct{ MaoyuJobListModel }
|
||||
|
||||
type MaoyuNoticeListInp struct {
|
||||
form.PageReq
|
||||
RecipientId string `json:"recipientId"`
|
||||
ActorId string `json:"actorId"`
|
||||
EventType string `json:"eventType" v:"in:,post_liked,comment_liked,post_commented#通知类型不正确"`
|
||||
Status string `json:"status" v:"in:,unread,read#通知状态不正确"`
|
||||
PostId string `json:"postId"`
|
||||
CreatedAt []*gtime.Time `json:"createdAt"`
|
||||
}
|
||||
|
||||
func (in *MaoyuNoticeListInp) Filter(ctx context.Context) (err error) {
|
||||
if in.CreatedAt != nil && len(in.CreatedAt) == 2 && !in.CreatedAt[0].IsZero() && !in.CreatedAt[1].IsZero() {
|
||||
in.CreatedAt = []*gtime.Time{in.CreatedAt[0].StartOfDay(), in.CreatedAt[1].EndOfDay()}
|
||||
} else {
|
||||
in.CreatedAt = nil
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type MaoyuNoticeListModel struct {
|
||||
Id string `json:"id"`
|
||||
RecipientId string `json:"recipientId"`
|
||||
ActorId string `json:"actorId"`
|
||||
EventType string `json:"eventType"`
|
||||
EventKey string `json:"eventKey"`
|
||||
PostId string `json:"postId"`
|
||||
CommentId string `json:"commentId"`
|
||||
TargetFileId string `json:"targetFileId"`
|
||||
Status string `json:"status"`
|
||||
OccurredAt string `json:"occurredAt"`
|
||||
ReadAt string `json:"readAt"`
|
||||
CreatedAt string `json:"createdAt"`
|
||||
}
|
||||
Reference in New Issue
Block a user