by Robin at 20240717

This commit is contained in:
Leufolium 2024-07-17 17:55:46 +08:00
parent 7d22149037
commit 02e9883ffe
7 changed files with 98 additions and 91 deletions

View File

@ -2319,7 +2319,7 @@ func (m *Mongo) CreateStreamer(ctx *gin.Context, streamer *dbstruct.Streamer) er
func (m *Mongo) UpdateStreamer(ctx *gin.Context, streamer *dbstruct.Streamer) error { func (m *Mongo) UpdateStreamer(ctx *gin.Context, streamer *dbstruct.Streamer) error {
col := m.getColStreamer() col := m.getColStreamer()
set := util.DeepEntityToM(streamer) set := util.EntityToM(streamer)
set["ut"] = time.Now().Unix() set["ut"] = time.Now().Unix()
filter := qmgo.M{ filter := qmgo.M{
"mid": util.DerefInt64(streamer.Mid), "mid": util.DerefInt64(streamer.Mid),

View File

@ -1086,37 +1086,44 @@ func (s *Service) ApiUpdateStreamer(ctx *gin.Context, req *streamerproto.ApiUpda
// 初始化审核内容 // 初始化审核内容
initAuditComp := &dbstruct.AuditComponent{ initAuditComp := &dbstruct.AuditComponent{
AuditStatus: goproto.Int64(consts.ImageAudit_Created), AuditStatus: goproto.Int64(consts.ImageAudit_Created),
AuditOpinion: goproto.String("该字段有更新,正在等待机审"), AuditOpinion: goproto.String("该字段有更新,正在等待机审"),
ReviewStatus: goproto.Int64(consts.ImageManuallyReview_Waiting), }
ReviewOpinion: goproto.String("该字段有更新,正在等待人工复审"), initReviewComp := &dbstruct.AuditComponent{
AuditStatus: goproto.Int64(consts.ImageManuallyReview_Waiting),
AuditOpinion: goproto.String("该字段有更新,正在等待人工复审"),
} }
if len(imageaudittasks) > 0 { if len(imageaudittasks) > 0 {
for _, task := range imageaudittasks { for _, task := range imageaudittasks {
if task.GetAssociativeTableColumn() == "cover" { if task.GetAssociativeTableColumn() == "cover" {
updateReq.Streamer.CoverAudit = initAuditComp updateReq.Streamer.CoverAudit = initAuditComp
updateReq.Streamer.CoverReview = initReviewComp
} else if task.GetAssociativeTableColumn() == "album" { } else if task.GetAssociativeTableColumn() == "album" {
updateReq.Streamer.AlbumAudit = initAuditComp updateReq.Streamer.AlbumAudit = initAuditComp
updateReq.Streamer.AlbumReview = initReviewComp
} }
} }
} }
if len(textaudittasks) > 0 { if len(textaudittasks) > 0 {
initAuditComp.AuditStatus = goproto.Int64(consts.TextAudit_Created) initAuditComp.AuditStatus = goproto.Int64(consts.TextAudit_Created)
initAuditComp.ReviewStatus = goproto.Int64(consts.TextManuallyReview_Waiting) initReviewComp.AuditStatus = goproto.Int64(consts.TextManuallyReview_Waiting)
for _, task := range textaudittasks { for _, task := range textaudittasks {
if task.GetAssociativeTableColumn() == "bio" { if task.GetAssociativeTableColumn() == "bio" {
updateReq.Streamer.BioAudit = initAuditComp updateReq.Streamer.BioAudit = initAuditComp
updateReq.Streamer.BioReview = initReviewComp
} else if task.GetAssociativeTableColumn() == "auto_response_message" { } else if task.GetAssociativeTableColumn() == "auto_response_message" {
updateReq.Streamer.AutoResponseMessageAudit = initAuditComp updateReq.Streamer.AutoResponseMessageAudit = initAuditComp
updateReq.Streamer.AutoResponseMessageReview = initReviewComp
} }
} }
} }
if len(videomoderationtasks) > 0 { if len(videomoderationtasks) > 0 {
initAuditComp.AuditStatus = goproto.Int64(consts.VideoModeration_Created) initAuditComp.AuditStatus = goproto.Int64(consts.VideoModeration_Created)
initAuditComp.ReviewStatus = goproto.Int64(consts.VideoManuallyReview_Waiting) initReviewComp.AuditStatus = goproto.Int64(consts.VideoManuallyReview_Waiting)
for _, task := range videomoderationtasks { for _, task := range videomoderationtasks {
if task.GetAssociativeTableColumn() == "shorts" { if task.GetAssociativeTableColumn() == "shorts" {
updateReq.Streamer.ShortsAudit = initAuditComp updateReq.Streamer.ShortsAudit = initAuditComp
updateReq.Streamer.ShortsReview = initReviewComp
} }
} }
} }

View File

@ -87,12 +87,13 @@ func (handler *ImageAuditTaskResultHandler) generateStreamerCoverUpdateFunc() {
handler.imageAuditTaskUpdateFuncGeneratorMap["streamer|streamer|cover"] = func(ctx *gin.Context, task *dbstruct.ImageAuditTask, option int) func() error { handler.imageAuditTaskUpdateFuncGeneratorMap["streamer|streamer|cover"] = func(ctx *gin.Context, task *dbstruct.ImageAuditTask, option int) func() error {
return func() error { return func() error {
mid := task.AssociativeTableId mid := task.AssociativeTableId
auditcomp, finalMedia := getImageUpdateInfo(task, option) auditcomp, reviewcomp, finalMedia := getImageUpdateInfo(task, option)
return _DefaultStreamer.OpUpdate(ctx, &streamerproto.OpUpdateReq{ return _DefaultStreamer.OpUpdate(ctx, &streamerproto.OpUpdateReq{
Streamer: &dbstruct.Streamer{ Streamer: &dbstruct.Streamer{
Mid: mid, Mid: mid,
Cover: finalMedia, Cover: finalMedia,
CoverAudit: auditcomp, CoverAudit: auditcomp,
CoverReview: reviewcomp,
}, },
}) })
} }
@ -104,12 +105,13 @@ func (handler *ImageAuditTaskResultHandler) generateStreamerAlbumUpdateFunc() {
handler.imageAuditTaskUpdateFuncGeneratorMap["streamer|streamer|album"] = func(ctx *gin.Context, task *dbstruct.ImageAuditTask, option int) func() error { handler.imageAuditTaskUpdateFuncGeneratorMap["streamer|streamer|album"] = func(ctx *gin.Context, task *dbstruct.ImageAuditTask, option int) func() error {
return func() error { return func() error {
mid := task.AssociativeTableId mid := task.AssociativeTableId
auditcomp, finalMedia := getImageUpdateInfo(task, option) auditcomp, reviewcomp, finalMedia := getImageUpdateInfo(task, option)
return _DefaultStreamer.OpUpdate(ctx, &streamerproto.OpUpdateReq{ return _DefaultStreamer.OpUpdate(ctx, &streamerproto.OpUpdateReq{
Streamer: &dbstruct.Streamer{ Streamer: &dbstruct.Streamer{
Mid: mid, Mid: mid,
Album: finalMedia, Album: finalMedia,
AlbumAudit: auditcomp, AlbumAudit: auditcomp,
CoverReview: reviewcomp,
}, },
}) })
} }
@ -266,17 +268,17 @@ func tryToFinishImageAuditTaskOfMoment(ctx *gin.Context, task *dbstruct.ImageAud
return nil return nil
} }
func getImageUpdateInfo(task *dbstruct.ImageAuditTask, option int) (auditcomp *dbstruct.AuditComponent, finalMedia *dbstruct.MediaComponent) { func getImageUpdateInfo(task *dbstruct.ImageAuditTask, option int) (auditcomp *dbstruct.AuditComponent, reviewcomp *dbstruct.AuditComponent, finalMedia *dbstruct.MediaComponent) {
auditcomp = &dbstruct.AuditComponent{}
// 机审成功后切面 // 机审成功后切面
if option == consts.ImageAuditTaskUpdate_Success { if option == consts.ImageAuditTaskUpdate_Success {
auditcomp = &dbstruct.AuditComponent{}
auditcomp.AuditStatus = goproto.Int64(consts.ImageAudit_Passed) auditcomp.AuditStatus = goproto.Int64(consts.ImageAudit_Passed)
auditcomp.AuditOpinion = goproto.String("机审通过") auditcomp.AuditOpinion = goproto.String("机审通过")
} }
// 机审失败后切面将机审信息写入streamer表 // 机审失败后切面将机审信息写入streamer表
if option == consts.ImageAuditTaskUpdate_Rollback { if option == consts.ImageAuditTaskUpdate_Rollback {
auditcomp = &dbstruct.AuditComponent{}
imageAuditOpinion := &strings.Builder{} imageAuditOpinion := &strings.Builder{}
if task.GetStatus() == consts.ImageAudit_ServiceFailed { if task.GetStatus() == consts.ImageAudit_ServiceFailed {
imageAuditOpinion.WriteString("机审失败") imageAuditOpinion.WriteString("机审失败")
@ -296,15 +298,17 @@ func getImageUpdateInfo(task *dbstruct.ImageAuditTask, option int) (auditcomp *d
// 人审通过后切面,执行更新 // 人审通过后切面,执行更新
if option == consts.ImageAuditTaskUpdate_Pass { if option == consts.ImageAuditTaskUpdate_Pass {
auditcomp.ReviewStatus = goproto.Int64(consts.ImageManuallyReview_Passed) reviewcomp = &dbstruct.AuditComponent{}
auditcomp.ReviewOpinion = task.Remarks reviewcomp.AuditStatus = goproto.Int64(consts.ImageManuallyReview_Passed)
reviewcomp.AuditOpinion = task.Remarks
finalMedia = task.AuditedMedia finalMedia = task.AuditedMedia
} }
// 人审拒绝后切面 // 人审拒绝后切面
if option == consts.ImageAuditTaskUpdate_Reject { if option == consts.ImageAuditTaskUpdate_Reject {
auditcomp.ReviewStatus = goproto.Int64(consts.ImageManuallyReview_Rejected) reviewcomp = &dbstruct.AuditComponent{}
auditcomp.ReviewOpinion = task.Remarks reviewcomp.AuditStatus = goproto.Int64(consts.ImageManuallyReview_Rejected)
reviewcomp.AuditOpinion = task.Remarks
} }
return return
} }

View File

@ -110,12 +110,13 @@ func (handler *TextAuditTaskResultHandler) generateStreamerBioUpdateFunc() {
handler.textAuditTaskUpdateFuncGeneratorMap["streamer|streamer|bio"] = func(ctx *gin.Context, task *dbstruct.TextAuditTask, option int) func() error { handler.textAuditTaskUpdateFuncGeneratorMap["streamer|streamer|bio"] = func(ctx *gin.Context, task *dbstruct.TextAuditTask, option int) func() error {
return func() error { return func() error {
mid := task.AssociativeTableId mid := task.AssociativeTableId
auditcomp, finalText := getTextUpdateInfo(task, option) auditcomp, reviewcomp, finalText := getTextUpdateInfo(task, option)
return _DefaultStreamer.OpUpdate(ctx, &streamerproto.OpUpdateReq{ return _DefaultStreamer.OpUpdate(ctx, &streamerproto.OpUpdateReq{
Streamer: &dbstruct.Streamer{ Streamer: &dbstruct.Streamer{
Mid: mid, Mid: mid,
Bio: finalText, Bio: finalText,
BioAudit: auditcomp, BioAudit: auditcomp,
BioReview: reviewcomp,
}, },
}) })
} }
@ -127,12 +128,13 @@ func (handler *TextAuditTaskResultHandler) generateStreamerAutoResponseMessageUp
handler.textAuditTaskUpdateFuncGeneratorMap["streamer|streamer|auto_response_message"] = func(ctx *gin.Context, task *dbstruct.TextAuditTask, option int) func() error { handler.textAuditTaskUpdateFuncGeneratorMap["streamer|streamer|auto_response_message"] = func(ctx *gin.Context, task *dbstruct.TextAuditTask, option int) func() error {
return func() error { return func() error {
mid := task.AssociativeTableId mid := task.AssociativeTableId
auditcomp, finalText := getTextUpdateInfo(task, option) auditcomp, reviewcomp, finalText := getTextUpdateInfo(task, option)
return _DefaultStreamer.OpUpdate(ctx, &streamerproto.OpUpdateReq{ return _DefaultStreamer.OpUpdate(ctx, &streamerproto.OpUpdateReq{
Streamer: &dbstruct.Streamer{ Streamer: &dbstruct.Streamer{
Mid: mid, Mid: mid,
AutoResponseMessage: finalText, AutoResponseMessage: finalText,
AutoResponseMessageAudit: auditcomp, AutoResponseMessageAudit: auditcomp,
AutoResponseMessageReview: reviewcomp,
}, },
}) })
} }
@ -239,17 +241,17 @@ func tryToFinishTextAuditTaskOfMoment(ctx *gin.Context, task *dbstruct.TextAudit
return nil return nil
} }
func getTextUpdateInfo(task *dbstruct.TextAuditTask, option int) (auditcomp *dbstruct.AuditComponent, finalText *string) { func getTextUpdateInfo(task *dbstruct.TextAuditTask, option int) (auditcomp *dbstruct.AuditComponent, reviewcomp *dbstruct.AuditComponent, finalText *string) {
auditcomp = &dbstruct.AuditComponent{}
// 机审成功后切面 // 机审成功后切面
if option == consts.TextAuditTaskUpdate_Success { if option == consts.TextAuditTaskUpdate_Success {
auditcomp = &dbstruct.AuditComponent{}
auditcomp.AuditStatus = goproto.Int64(consts.TextAudit_Passed) auditcomp.AuditStatus = goproto.Int64(consts.TextAudit_Passed)
auditcomp.AuditOpinion = goproto.String("机审通过") auditcomp.AuditOpinion = goproto.String("机审通过")
} }
// 机审失败后切面将机审信息写入streamer表 // 机审失败后切面将机审信息写入streamer表
if option == consts.TextAuditTaskUpdate_Rollback { if option == consts.TextAuditTaskUpdate_Rollback {
auditcomp = &dbstruct.AuditComponent{}
var textAuditOpinion string var textAuditOpinion string
if task.GetStatus() == consts.TextAudit_ServiceFailed { if task.GetStatus() == consts.TextAudit_ServiceFailed {
textAuditOpinion = "机审失败" textAuditOpinion = "机审失败"
@ -263,15 +265,17 @@ func getTextUpdateInfo(task *dbstruct.TextAuditTask, option int) (auditcomp *dbs
// 人审通过后切面,执行更新 // 人审通过后切面,执行更新
if option == consts.TextAuditTaskUpdate_Pass { if option == consts.TextAuditTaskUpdate_Pass {
auditcomp.ReviewStatus = goproto.Int64(consts.TextManuallyReview_Passed) reviewcomp = &dbstruct.AuditComponent{}
auditcomp.ReviewOpinion = task.Remarks reviewcomp.AuditStatus = goproto.Int64(consts.TextManuallyReview_Passed)
reviewcomp.AuditOpinion = task.Remarks
finalText = task.AuditedText finalText = task.AuditedText
} }
// 人审拒绝后切面 // 人审拒绝后切面
if option == consts.TextAuditTaskUpdate_Reject { if option == consts.TextAuditTaskUpdate_Reject {
auditcomp.ReviewStatus = goproto.Int64(consts.TextManuallyReview_Rejected) reviewcomp = &dbstruct.AuditComponent{}
auditcomp.ReviewOpinion = task.Remarks reviewcomp.AuditStatus = goproto.Int64(consts.TextManuallyReview_Rejected)
reviewcomp.AuditOpinion = task.Remarks
} }
return return
} }

View File

@ -58,12 +58,13 @@ func (handler *VideoModerationTaskResultHandler) generateStreamerShortsUpdateFun
handler.videoModerationTaskUpdateFuncGeneratorMap["streamer|streamer|cover"] = func(ctx *gin.Context, task *dbstruct.VideoModerationTask, option int) func() error { handler.videoModerationTaskUpdateFuncGeneratorMap["streamer|streamer|cover"] = func(ctx *gin.Context, task *dbstruct.VideoModerationTask, option int) func() error {
return func() error { return func() error {
mid := task.AssociativeTableId mid := task.AssociativeTableId
auditcomp, finalMedia := getVideoUpdateInfo(task, option) auditcomp, reviewcomp, finalMedia := getVideoUpdateInfo(task, option)
return _DefaultStreamer.OpUpdate(ctx, &streamerproto.OpUpdateReq{ return _DefaultStreamer.OpUpdate(ctx, &streamerproto.OpUpdateReq{
Streamer: &dbstruct.Streamer{ Streamer: &dbstruct.Streamer{
Mid: mid, Mid: mid,
Shorts: finalMedia, Shorts: finalMedia,
ShortsAudit: auditcomp, ShortsAudit: auditcomp,
ShortsReview: reviewcomp,
}, },
}) })
} }
@ -169,17 +170,17 @@ func tryToFinishVideoModerationTaskOfMoment(ctx *gin.Context, task *dbstruct.Vid
return nil return nil
} }
func getVideoUpdateInfo(task *dbstruct.VideoModerationTask, option int) (auditcomp *dbstruct.AuditComponent, finalMedia *dbstruct.MediaComponent) { func getVideoUpdateInfo(task *dbstruct.VideoModerationTask, option int) (auditcomp *dbstruct.AuditComponent, reviewcomp *dbstruct.AuditComponent, finalMedia *dbstruct.MediaComponent) {
auditcomp = &dbstruct.AuditComponent{}
// 机审成功后切面 // 机审成功后切面
if option == consts.VideoModerationTaskUpdate_Success { if option == consts.VideoModerationTaskUpdate_Success {
auditcomp = &dbstruct.AuditComponent{}
auditcomp.AuditStatus = goproto.Int64(consts.VideoModeration_Passed) auditcomp.AuditStatus = goproto.Int64(consts.VideoModeration_Passed)
auditcomp.AuditOpinion = goproto.String("机审通过") auditcomp.AuditOpinion = goproto.String("机审通过")
} }
// 机审失败后切面将机审信息写入streamer表 // 机审失败后切面将机审信息写入streamer表
if option == consts.VideoModerationTaskUpdate_Rollback { if option == consts.VideoModerationTaskUpdate_Rollback {
auditcomp = &dbstruct.AuditComponent{}
videoModerationOpinion := &strings.Builder{} videoModerationOpinion := &strings.Builder{}
if task.GetStatus() == consts.VideoModeration_ServiceFailed { if task.GetStatus() == consts.VideoModeration_ServiceFailed {
videoModerationOpinion.WriteString("机审失败") videoModerationOpinion.WriteString("机审失败")
@ -198,15 +199,17 @@ func getVideoUpdateInfo(task *dbstruct.VideoModerationTask, option int) (auditco
// 人审通过后切面,执行更新 // 人审通过后切面,执行更新
if option == consts.VideoModerationTaskUpdate_Pass { if option == consts.VideoModerationTaskUpdate_Pass {
auditcomp.ReviewStatus = goproto.Int64(consts.VideoManuallyReview_Passed) reviewcomp = &dbstruct.AuditComponent{}
auditcomp.ReviewOpinion = task.Remarks reviewcomp.AuditStatus = goproto.Int64(consts.VideoManuallyReview_Passed)
reviewcomp.AuditOpinion = task.Remarks
finalMedia = task.AuditedMedia finalMedia = task.AuditedMedia
} }
// 人审拒绝后切面 // 人审拒绝后切面
if option == consts.VideoModerationTaskUpdate_Reject { if option == consts.VideoModerationTaskUpdate_Reject {
auditcomp.ReviewStatus = goproto.Int64(consts.VideoManuallyReview_Rejected) reviewcomp = &dbstruct.AuditComponent{}
auditcomp.ReviewOpinion = task.Remarks reviewcomp.AuditStatus = goproto.Int64(consts.VideoManuallyReview_Rejected)
reviewcomp.AuditOpinion = task.Remarks
} }
return return
} }

View File

@ -1,10 +1,8 @@
package dbstruct package dbstruct
type AuditComponent struct { type AuditComponent struct {
AuditStatus *int64 `json:"audit_status" bson:"audit_status"` // 审核状态 AuditStatus *int64 `json:"audit_status" bson:"audit_status"` // 审核状态
AuditOpinion *string `json:"audit_opinion" bson:"audit_opinion"` // 审核意见 AuditOpinion *string `json:"audit_opinion" bson:"audit_opinion"` // 审核意见
ReviewStatus *int64 `json:"review_status" bson:"review_status"` // 人审状态
ReviewOpinion *string `json:"review_opinion" bson:"review_opinion"` // 人审意见
} }
func (p *AuditComponent) GetAuditStatus() int64 { func (p *AuditComponent) GetAuditStatus() int64 {
@ -20,17 +18,3 @@ func (p *AuditComponent) GetAuditOpinion() string {
} }
return *p.AuditOpinion return *p.AuditOpinion
} }
func (p *AuditComponent) GetReviewStatus() int64 {
if p == nil || p.ReviewStatus == nil {
return 0
}
return *p.ReviewStatus
}
func (p *AuditComponent) GetReviewOpinion() string {
if p == nil || p.ReviewOpinion == nil {
return ""
}
return *p.ReviewOpinion
}

View File

@ -1,31 +1,36 @@
package dbstruct package dbstruct
type Streamer struct { type Streamer struct {
Id *int64 `json:"id" bson:"_id"` // 主播表id Id *int64 `json:"id" bson:"_id"` // 主播表id
Mid *int64 `json:"mid" bson:"mid"` // 用户表id Mid *int64 `json:"mid" bson:"mid"` // 用户表id
Gender *int64 `json:"gender" bson:"gender"` // 性别 Gender *int64 `json:"gender" bson:"gender"` // 性别
Bio *string `json:"bio" bson:"bio"` // 个性签名 Bio *string `json:"bio" bson:"bio"` // 个性签名
Cover *MediaComponent `json:"cover" bson:"cover"` // 封面 Cover *MediaComponent `json:"cover" bson:"cover"` // 封面
Shorts *MediaComponent `json:"shorts" bson:"shorts"` // 展示视频 Shorts *MediaComponent `json:"shorts" bson:"shorts"` // 展示视频
Album *MediaComponent `json:"album" bson:"album"` // 相册 Album *MediaComponent `json:"album" bson:"album"` // 相册
Age *int64 `json:"age" bson:"age"` // 年龄 Age *int64 `json:"age" bson:"age"` // 年龄
Height *int64 `json:"height" bson:"height"` // 身高 Height *int64 `json:"height" bson:"height"` // 身高
Weight *int64 `json:"weight" bson:"weight"` // 体重 Weight *int64 `json:"weight" bson:"weight"` // 体重
Constellation *string `json:"constellation" bson:"constellation"` // 星座 Constellation *string `json:"constellation" bson:"constellation"` // 星座
City *string `json:"city" bson:"city"` // 所在城市 City *string `json:"city" bson:"city"` // 所在城市
Tag *[]string `json:"tag" bson:"tag"` // 主播标签 Tag *[]string `json:"tag" bson:"tag"` // 主播标签
Fans *int64 `json:"fans" bson:"fans"` // 全网粉丝 Fans *int64 `json:"fans" bson:"fans"` // 全网粉丝
AutoResponseMessage *string `json:"auto_response_message" bson:"auto_response_message"` // 自动回复消息 AutoResponseMessage *string `json:"auto_response_message" bson:"auto_response_message"` // 自动回复消息
Inviters *[]int64 `json:"inviters" bson:"inviters"` // 邀请人 Inviters *[]int64 `json:"inviters" bson:"inviters"` // 邀请人
IsHided *int64 `json:"is_hided" bson:"is_hided"` // 是否隐藏 IsHided *int64 `json:"is_hided" bson:"is_hided"` // 是否隐藏
Ct *int64 `json:"ct" bson:"ct"` // 创建时间 Ct *int64 `json:"ct" bson:"ct"` // 创建时间
Ut *int64 `json:"ut" bson:"ut"` // 更新时间 Ut *int64 `json:"ut" bson:"ut"` // 更新时间
DelFlag *int64 `json:"del_flag" bson:"del_flag"` // 删除标记 DelFlag *int64 `json:"del_flag" bson:"del_flag"` // 删除标记
CoverAudit *AuditComponent `bson:"cover_audit"` // 封面审核 CoverAudit *AuditComponent `bson:"cover_audit"` // 封面审核
ShortsAudit *AuditComponent `bson:"shorts_audit"` // 展示视频审核 ShortsAudit *AuditComponent `bson:"shorts_audit"` // 展示视频审核
AlbumAudit *AuditComponent `bson:"album_audit"` // 相册审核 AlbumAudit *AuditComponent `bson:"album_audit"` // 相册审核
BioAudit *AuditComponent `bson:"bio_audit"` // 个性签名审核 BioAudit *AuditComponent `bson:"bio_audit"` // 个性签名审核
AutoResponseMessageAudit *AuditComponent `bson:"auto_response_message_audit"` // 自动回复消息审核 AutoResponseMessageAudit *AuditComponent `bson:"auto_response_message_audit"` // 自动回复消息审核
CoverReview *AuditComponent `bson:"cover_review"` // 封面人审
ShortsReview *AuditComponent `bson:"shorts_review"` // 展示视频人审
AlbumReview *AuditComponent `bson:"album_review"` // 相册人审
BioReview *AuditComponent `bson:"bio_review"` // 个性签名人审
AutoResponseMessageReview *AuditComponent `bson:"auto_response_message_review"` // 自动回复消息人审
WechatLockType *int32 `json:"wechat_lock_type"` // 微信解锁方式 WechatLockType *int32 `json:"wechat_lock_type"` // 微信解锁方式
WechatContact *string `json:"wechat_contact"` // 微信联系方式 WechatContact *string `json:"wechat_contact"` // 微信联系方式