67b97e4b38
看板(Recharts): - 概览页加 DAU/WAU/MAU、今日/本月新增 KPI,新增趋势/活跃趋势/月活/留存曲线 - GET /admin/analytics 内存计算,活跃口径=当天有记录/发帖/评论,排除 bot 内容安全(微信官方 UGC): - 文本 msg_sec_check 同步判、图片 media_check_async 异步查 - 帖子/评论加 pending/rejected 审核态,feed 只放 published - 图片结果回调 /api/wx/sec-callback,JSON/XML + 明文模式,签名校验 - 检测不了/未发布时一律转待审核,走后台手动审核 - 后台帖子/评论审核页:修好看不到图(补 attachPostImages)、 加状态筛选 + 通过/打回;新增评论审核状态接口 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
58 lines
1.1 KiB
Go
58 lines
1.1 KiB
Go
package model
|
|
|
|
import (
|
|
"time"
|
|
|
|
"gorm.io/gorm"
|
|
|
|
"github.com/sundynix/pets-be/pkg/idgen"
|
|
)
|
|
|
|
// Base 所有模型的公共字段。主键为雪花算法字符串 ID(非自增)。
|
|
type Base struct {
|
|
ID string `gorm:"primaryKey;size:24" json:"id"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
// BeforeCreate 未显式赋值时自动生成雪花 ID(通过嵌入对所有模型生效)。
|
|
func (b *Base) BeforeCreate(tx *gorm.DB) error {
|
|
if b.ID == "" {
|
|
b.ID = idgen.Next()
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// AllModels 需要 AutoMigrate 的模型清单(按依赖顺序)
|
|
func AllModels() []any {
|
|
return []any{
|
|
&User{},
|
|
&Pet{},
|
|
&HealthRecord{},
|
|
&RecordType{},
|
|
&Breed{},
|
|
&DailyTask{},
|
|
&Plan{},
|
|
&PlanTask{},
|
|
&Reminder{},
|
|
&Post{},
|
|
&Comment{},
|
|
&PostLike{},
|
|
&Article{},
|
|
&AIMessage{},
|
|
&ProMembership{},
|
|
&Admin{},
|
|
&DailyAdvice{},
|
|
&CareTemplate{},
|
|
&CareTemplateItem{},
|
|
&CommunityBotConfig{},
|
|
&File{},
|
|
&Feedback{},
|
|
&Follow{},
|
|
&RefreshToken{},
|
|
&AIQuotaConfig{},
|
|
&AIUsage{},
|
|
&MediaCheck{},
|
|
}
|
|
}
|