feat: 主播昵称过人审
This commit is contained in:
parent
1fb5625ec0
commit
9c4394fb34
|
@ -99,6 +99,26 @@ const (
|
|||
RedisMomentPrefix = "moment:" //moment服务前缀
|
||||
)
|
||||
|
||||
// 用户表信息审核状态,按位判断
|
||||
// 状态大致如下:
|
||||
//
|
||||
// 00:昵称正常
|
||||
// 01:昵称违规
|
||||
// 10:昵称审核中
|
||||
const (
|
||||
AuditPass = 0 // 审核通过
|
||||
StreamerNikeNameAuditReject = 1 // 主播昵称违规
|
||||
StreamerNikeNameAuditing = 2 // 主播昵称审核状态
|
||||
//StreamerAvatarReject = 4 // 主播头像违规
|
||||
//StreamerAvatarAuditing = 8 // 主播头像审核状态
|
||||
)
|
||||
|
||||
// 审核的维度
|
||||
const (
|
||||
StreamNikeAudit = 1 // 主播昵称审核
|
||||
//StreamerAvatar = 2 // 主播头像审核
|
||||
)
|
||||
|
||||
//const PackageRootPath = "C:/Users/PC/Desktop/service"
|
||||
|
||||
const PackageRootPath = "/app/wishpal-ironfan"
|
||||
|
|
|
@ -55,7 +55,6 @@ import (
|
|||
"service/library/redis"
|
||||
interceptor "service/library/taginterceptor"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
Raven_IQ_testproto "service/api/proto/Raven_IQ_test/proto"
|
||||
|
@ -64,7 +63,6 @@ import (
|
|||
goproto "google.golang.org/protobuf/proto"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/mozillazg/go-pinyin"
|
||||
"github.com/qiniu/qmgo"
|
||||
"github.com/ulule/deepcopier"
|
||||
)
|
||||
|
@ -363,36 +361,41 @@ func (s *Service) ApiUpdateAccount(ctx *gin.Context, req *accountproto.ApiUpdate
|
|||
s.CreateUpdateAccountImageAudit(ctx, oldAccount, req.Account)
|
||||
s.CreateUpdateAccountTextAudit(ctx, oldAccount, req.Account)
|
||||
|
||||
// 主播昵称需要先过审核,后更新
|
||||
if oldAccount.GetRole() == consts.Streamer && oldAccount.Name != req.Name {
|
||||
ec = errcode.ErrCodeTextAuditTaskNikeNameWait
|
||||
return
|
||||
opUpdateReq := &accountproto.OpUpdateReq{
|
||||
Account: &dbstruct.Account{
|
||||
Mid: req.Account.Mid,
|
||||
Avatar: req.Account.Avatar,
|
||||
},
|
||||
}
|
||||
|
||||
// 主播昵称需要先过审核
|
||||
if oldAccount.GetRole() == consts.Streamer && oldAccount.Name != req.Account.Name {
|
||||
opUpdateReq.NewName = req.Account.Name
|
||||
auditStatus := s.SetAuditStatusBitMap(opUpdateReq.GetAuditStatus(), consts.StreamNikeAudit, consts.StreamerNikeNameAuditReject)
|
||||
opUpdateReq.AuditStatus = goproto.Int64(auditStatus)
|
||||
} else {
|
||||
opUpdateReq.Name = req.Account.Name
|
||||
}
|
||||
|
||||
// 用户只允许修改昵称和头像
|
||||
if err := _DefaultAccount.OpUpdate(ctx, &accountproto.OpUpdateReq{
|
||||
Account: &dbstruct.Account{
|
||||
Mid: req.Account.Mid,
|
||||
Name: req.Account.Name,
|
||||
Avatar: req.Account.Avatar,
|
||||
},
|
||||
}); err != nil {
|
||||
if err := _DefaultAccount.OpUpdate(ctx, opUpdateReq); err != nil {
|
||||
logger.Error("OpUpdate fail, req: %v, err: %v", util.ToJson(req), err)
|
||||
ec = errcode.ErrCodeAccountSrvFail
|
||||
return
|
||||
}
|
||||
|
||||
if oldAccount.GetRole() == consts.Streamer && req.Account.Name != nil {
|
||||
if err := _DefaultStreamerAcct.OpUpdate(ctx, &dbstruct.EsStreamerAcct{
|
||||
Mid: req.Account.GetMid(),
|
||||
Name: req.Account.GetName(),
|
||||
PinYin: strings.Join(pinyin.LazyConvert(req.Account.GetName(), nil), ""),
|
||||
}); err != nil {
|
||||
logger.Error("OpUpdate fail, req: %v, err: %v", util.ToJson(req), err)
|
||||
ec = errcode.ErrCodeAccountSrvFail
|
||||
return
|
||||
}
|
||||
}
|
||||
// 主播需要审核,暂时不需要更新 es
|
||||
//if oldAccount.GetRole() == consts.Streamer && req.Account.Name != nil {
|
||||
// if err := _DefaultStreamerAcct.OpUpdate(ctx, &dbstruct.EsStreamerAcct{
|
||||
// Mid: req.Account.GetMid(),
|
||||
// Name: req.Account.GetName(),
|
||||
// PinYin: strings.Join(pinyin.LazyConvert(req.Account.GetName(), nil), ""),
|
||||
// }); err != nil {
|
||||
// logger.Error("OpUpdate fail, req: %v, err: %v", util.ToJson(req), err)
|
||||
// ec = errcode.ErrCodeAccountSrvFail
|
||||
// return
|
||||
// }
|
||||
//}
|
||||
|
||||
return
|
||||
}
|
||||
|
@ -414,6 +417,11 @@ func (s *Service) ApiGetAccountListByMid(ctx *gin.Context, req *accountproto.Api
|
|||
return
|
||||
}
|
||||
|
||||
nameFlag := s.GetAuditStatusBitMap(account.GetAuditStatus(), consts.StreamNikeAudit)
|
||||
if account.GetRole() == consts.Streamer && nameFlag == consts.StreamerNikeNameAuditing {
|
||||
account.Name = account.NewName
|
||||
}
|
||||
|
||||
vo = &accountproto.ApiListVO{}
|
||||
vo.CopyAccount(account)
|
||||
|
||||
|
|
|
@ -22,7 +22,6 @@ func (s *Service) CreateUpdateAccountTextAudit(ctx *gin.Context, oldAccount *dbs
|
|||
return
|
||||
}
|
||||
|
||||
// TODO:wxy, 是否增加审核中状态
|
||||
tasks = append(tasks, &dbstruct.TextAuditTask{
|
||||
Mid: newAccount.Mid,
|
||||
RouteUrl: goproto.String(ctx.Request.URL.Path),
|
||||
|
@ -245,3 +244,36 @@ func addTextAuditTask(ctx *gin.Context, task *dbstruct.TextAuditTask, options ..
|
|||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// 获取用户主播的审核信息
|
||||
func (s *Service) GetAuditStatusBitMap(auditStatus int64, auditType int) int {
|
||||
|
||||
switch auditType {
|
||||
case consts.StreamNikeAudit:
|
||||
return int(auditStatus & consts.StreamerNikeNameAuditing)
|
||||
}
|
||||
|
||||
return -1
|
||||
}
|
||||
|
||||
// 设置用户主播的审核信息
|
||||
func (s *Service) SetAuditStatusBitMap(auditStatus int64, auditType int, flag int) int64 {
|
||||
if auditType < 0 {
|
||||
return auditStatus
|
||||
}
|
||||
|
||||
switch auditType {
|
||||
case consts.StreamNikeAudit:
|
||||
if flag == consts.StreamerNikeNameAuditing {
|
||||
auditStatus |= consts.StreamerNikeNameAuditing
|
||||
} else if flag == consts.StreamerNikeNameAuditReject {
|
||||
auditStatus |= consts.StreamerNikeNameAuditReject
|
||||
auditStatus &^= consts.StreamerNikeNameAuditing
|
||||
} else {
|
||||
auditStatus &^= consts.StreamerNikeNameAuditReject
|
||||
auditStatus &^= consts.StreamerNikeNameAuditing
|
||||
}
|
||||
}
|
||||
|
||||
return auditStatus
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@ import (
|
|||
)
|
||||
|
||||
var DefaultTextAuditTaskResultHandler *TextAuditTaskResultHandler
|
||||
var s *Service
|
||||
|
||||
type TextAuditTaskResultHandler struct {
|
||||
// 图像审核任务通过及回退方法生成器map
|
||||
|
@ -79,26 +80,41 @@ func (handler *TextAuditTaskResultHandler) generateAccountNameUpdateFunc() {
|
|||
return err
|
||||
}
|
||||
|
||||
// 主播昵称需要先过审核,后更新
|
||||
// TODO:wxy, 待优化
|
||||
var name *string
|
||||
if option == consts.TextAuditTaskUpdate_Pass {
|
||||
var auditStatus = int64(-1)
|
||||
if acct.GetRole() == consts.Streamer && option == consts.TextAuditTaskUpdate_Pass {
|
||||
// 主播昵称人审通过
|
||||
name = task.AuditedText
|
||||
} else if option != consts.TextAuditTaskUpdate_Pass && acct.GetRole() != consts.Streamer {
|
||||
auditStatus = s.SetAuditStatusBitMap(acct.GetAuditStatus(), consts.StreamNikeAudit, consts.AuditPass)
|
||||
} else if acct.GetRole() == consts.Streamer && option == consts.TextAuditTaskUpdate_Reject {
|
||||
// 主播昵称人审拒绝
|
||||
name = task.OldText
|
||||
auditStatus = s.SetAuditStatusBitMap(acct.GetAuditStatus(), consts.StreamNikeAudit, consts.StreamerNikeNameAuditReject)
|
||||
} else if acct.GetRole() != consts.Streamer && option == consts.TextAuditTaskUpdate_Pass {
|
||||
name = task.AuditedText
|
||||
} else {
|
||||
name = task.OldText
|
||||
}
|
||||
|
||||
err = _DefaultAccount.OpUpdate(ctx, &accountproto.OpUpdateReq{
|
||||
opUpdateReq := &accountproto.OpUpdateReq{
|
||||
Account: &dbstruct.Account{
|
||||
Mid: mid,
|
||||
Name: name,
|
||||
},
|
||||
})
|
||||
}
|
||||
if auditStatus != -1 {
|
||||
opUpdateReq.AuditStatus = goproto.Int64(auditStatus)
|
||||
}
|
||||
|
||||
err = _DefaultAccount.OpUpdate(ctx, opUpdateReq)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if acct.GetRole() == consts.Streamer {
|
||||
// 更新 es
|
||||
if acct.GetRole() == consts.Streamer && option == consts.TextAuditTaskUpdate_Pass {
|
||||
return _DefaultStreamerAcct.OpUpdate(ctx, &dbstruct.EsStreamerAcct{
|
||||
Mid: util.DerefInt64(mid),
|
||||
Name: util.DerefString(name),
|
||||
|
|
|
@ -8,6 +8,7 @@ const (
|
|||
type Account struct {
|
||||
Mid *int64 `json:"mid" bson:"_id"` // 用户表Id
|
||||
Name *string `json:"name" bson:"name"` // 用户名
|
||||
NewName *string `json:"new_name"` // 用户修改后的名字(主播昵称需要审核,用来更新)
|
||||
UserId *int64 `json:"user_id" bson:"user_id"` // 业务Id
|
||||
Avatar *MediaComponent `json:"avatar" bson:"avatar"` // 头像
|
||||
MobilePhone *string `json:"mobile_phone" bson:"mobile_phone" jcrypto:"rsa" bcrypto:"aes_cbc|1|0"` // 手机号,数据库加密,查询不解密
|
||||
|
@ -24,6 +25,7 @@ type Account struct {
|
|||
IsAMember *int64 `json:"is_a_member" bson:"is_a_member"` // 是否是会员,0-否,1-是
|
||||
Status *int64 `json:"status" bson:"status"` // 账户状态,0-正常,1-账户注销中,2-账户已注销
|
||||
DevType *int32 `bson:"dev_type"` // 注册来源
|
||||
AuditStatus *int64 `json:"audit_status" bson:"audit_status"` // 审核状态
|
||||
Latitude *float64 `bson:"latitude"` // 纬度
|
||||
Longitude *float64 `bson:"longitude"` // 经度
|
||||
UserIdString *string `json:"user_id_string" bson:"user_id_string"` // string型user_id,为模糊匹配设置
|
||||
|
@ -88,6 +90,13 @@ func (p *Account) GetRole() int64 {
|
|||
return *p.Role
|
||||
}
|
||||
|
||||
func (p *Account) GetAuditStatus() int64 {
|
||||
if p == nil || p.AuditStatus == nil {
|
||||
return -1
|
||||
}
|
||||
return *p.AuditStatus
|
||||
}
|
||||
|
||||
// StreamerAcct 用户结构
|
||||
type StreamerAcct struct {
|
||||
Mid *int64 `json:"mid" bson:"_id"` // 用户表Id
|
||||
|
|
Loading…
Reference in New Issue