Merge branch 'feature-userinfo-daiyb' into dev

This commit is contained in:
戴育兵 2025-12-16 15:22:12 +08:00
commit a4c48a1dba
5 changed files with 127 additions and 17 deletions

View File

@ -653,6 +653,7 @@ type UpdateMediaAccountReq struct {
ManagerUuid string `protobuf:"bytes,8,opt,name=managerUuid,proto3" json:"managerUuid"`
ManagerUserName string `protobuf:"bytes,9,opt,name=managerUserName,proto3" json:"managerUserName"`
ArtistPhoneAreaCode string `protobuf:"bytes,10,opt,name=artistPhoneAreaCode,proto3" json:"artistPhoneAreaCode"`
ArtistSubNum string `protobuf:"bytes,11,opt,name=artistSubNum,proto3" json:"artistSubNum"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
@ -757,6 +758,13 @@ func (x *UpdateMediaAccountReq) GetArtistPhoneAreaCode() string {
return ""
}
func (x *UpdateMediaAccountReq) GetArtistSubNum() string {
if x != nil {
return x.ArtistSubNum
}
return ""
}
type UpdateMediaAccountResp struct {
state protoimpl.MessageState `protogen:"open.v1"`
MediaAccountUuid string `protobuf:"bytes,1,opt,name=mediaAccountUuid,proto3" json:"mediaAccountUuid"`
@ -12168,7 +12176,7 @@ const file_pb_fiee_cast_proto_rawDesc = "" +
"authStatus\"R\n" +
"\x11MediaUserListResp\x12'\n" +
"\x04data\x18\x01 \x03(\v2\x13.Cast.MediaUserInfoR\x04data\x12\x14\n" +
"\x05count\x18\x02 \x01(\x03R\x05count\"\xad\x03\n" +
"\x05count\x18\x02 \x01(\x03R\x05count\"\xd1\x03\n" +
"\x15UpdateMediaAccountReq\x124\n" +
"\n" +
"platformID\x18\x01 \x01(\x0e2\x14.Cast.PlatformIDENUMR\n" +
@ -12186,7 +12194,8 @@ const file_pb_fiee_cast_proto_rawDesc = "" +
"\vmanagerUuid\x18\b \x01(\tR\vmanagerUuid\x12(\n" +
"\x0fmanagerUserName\x18\t \x01(\tR\x0fmanagerUserName\x120\n" +
"\x13artistPhoneAreaCode\x18\n" +
" \x01(\tR\x13artistPhoneAreaCode\"D\n" +
" \x01(\tR\x13artistPhoneAreaCode\x12\"\n" +
"\fartistSubNum\x18\v \x01(\tR\fartistSubNum\"D\n" +
"\x16UpdateMediaAccountResp\x12*\n" +
"\x10mediaAccountUuid\x18\x01 \x01(\tR\x10mediaAccountUuid\">\n" +
"\x10UnbindManagerReq\x12*\n" +

View File

@ -457,6 +457,8 @@ func (m *UpdateMediaAccountReq) validate(all bool) error {
// no validation rules for ArtistPhoneAreaCode
// no validation rules for ArtistSubNum
if len(errors) > 0 {
return UpdateMediaAccountReqMultiError(errors)
}

View File

@ -140,8 +140,6 @@ func UpdateMediaAccount(ctx *gin.Context) {
service.Error(ctx, errors.New("用户不存在"))
return
}
//TODO 判断是否注册ay
if err = CheckAsProfile(infoResp); err != nil {
service.Error(ctx, err)
return
@ -149,6 +147,7 @@ func UpdateMediaAccount(ctx *gin.Context) {
req.ArtistName = infoResp.Name
req.ArtistPhone = infoResp.TelNum
req.ArtistPhoneAreaCode = infoResp.TelAreaCode
req.ArtistSubNum = infoResp.SubNum
if _, ok := cast.PlatformIDENUM_name[int32(req.PlatformID)]; !ok {
service.Error(ctx, errors.New(e.GetMsg(e.InvalidParams)))
return

View File

@ -9,6 +9,7 @@ import (
"fonchain-fiee/api/aryshare"
"fonchain-fiee/api/bundle"
"fonchain-fiee/api/cast"
"fonchain-fiee/api/files"
"fonchain-fiee/cmd/config"
"fonchain-fiee/pkg/cache"
"fonchain-fiee/pkg/e"
@ -34,15 +35,16 @@ func UpdateWorkImage(ctx *gin.Context) {
var req *cast.UpdateWorkImageReq
var infoResp *accountFiee.UserInfoResponse
var err error
var ok bool
if err = ctx.ShouldBind(&req); err != nil {
service.Error(ctx, err)
return
}
// 图片鉴定
for _, v := range req.Images {
ok, _err := check.SecurityFile(v)
if _err != nil {
service.Error(ctx, _err)
ok, err = check.SecurityFile(v)
if err != nil {
service.Error(ctx, err)
return
}
if !ok {
@ -50,6 +52,24 @@ func UpdateWorkImage(ctx *gin.Context) {
return
}
}
ok, err = check.SecurityText(req.Title)
if err != nil {
service.Error(ctx, err)
return
}
if !ok {
service.Error(ctx, errors.New("标题鉴定未通过"))
return
}
ok, err = check.SecurityText(req.Content)
if err != nil {
service.Error(ctx, err)
return
}
if !ok {
service.Error(ctx, errors.New("内容鉴定未通过"))
return
}
artistId, _ := strconv.ParseUint(req.ArtistUuid, 10, 64)
infoResp, err = service.AccountFieeProvider.Info(context.Background(), &accountFiee.InfoRequest{
ID: artistId,
@ -108,19 +128,54 @@ func UpdateWorkVideo(ctx *gin.Context) {
var req *cast.UpdateWorkVideoReq
var infoResp *accountFiee.UserInfoResponse
var err error
var ok bool
if err = ctx.ShouldBind(&req); err != nil {
service.Error(ctx, err)
return
}
ok, _err := check.SecurityFile(req.CoverUrl)
if _err != nil {
service.Error(ctx, _err)
ok, err = check.SecurityText(req.Title)
if err != nil {
service.Error(ctx, err)
return
}
if !ok {
service.Error(ctx, errors.New("标题鉴定未通过"))
return
}
ok, err = check.SecurityText(req.Content)
if err != nil {
service.Error(ctx, err)
return
}
if !ok {
service.Error(ctx, errors.New("内容鉴定未通过"))
return
}
ok, err := check.SecurityFile(req.CoverUrl)
if err != nil {
service.Error(ctx, err)
return
}
if !ok {
service.Error(ctx, errors.New("图片鉴定未通过"))
return
}
if req.VideoUrl != "" {
//请求接口判断
fileResp, errs := service.FilesProvider.GetFileSecurityStatus(ctx, &files.GetFileSecurityStatusReq{
Url: req.VideoUrl,
FileName: "",
})
if errs != nil {
service.Error(ctx, err)
return
}
if fileResp.SecurityStatus != "none" {
service.Error(ctx, errors.New("视频鉴定未通过"))
return
}
}
if config.AppConfig.System.AppMode != "dev" {
artistId, _ := strconv.ParseUint(req.ArtistUuid, 10, 64)
infoResp, err = service.AccountFieeProvider.Info(context.Background(), &accountFiee.InfoRequest{

View File

@ -54,15 +54,15 @@ func ImageCheckByte(file *multipart.FileHeader) (bool, error) {
return false, nil
}
func SecurityFile(fileUrl string) (bool, error) {
if fileUrl == "" {
func SecurityFile(textVal string) (bool, error) {
if textVal == "" {
return true, nil
}
var fileInfo modelSecurity.FileInfo
fileInfo.FileName = fileUrl
fileInfo.FileUrl = fileUrl
fileInfo.FileName = textVal
fileInfo.FileUrl = textVal
//获取文件名称后缀
extension := filepath.Ext(fileUrl)
extension := filepath.Ext(textVal)
switch extension {
case ".jpg", ".jpeg", ".png", ".gif", ".bmp", ".webp":
fileInfo.FileType = "image"
@ -77,6 +77,21 @@ func SecurityFile(fileUrl string) (bool, error) {
}
return true, nil
}
func SecurityText(textVal string) (bool, error) {
aliConfig, err := pkgSecurity.GetGlobalConfig("./data/alibabacloud.env")
if err != nil {
return false, err
}
fmt.Println("开始获取STS Token")
err = aliConfig.GetSTSToken()
if err != nil {
return false, errors.New("获取STS Token失败")
}
if err = handleTextScan(aliConfig, textVal); err != nil {
return false, err
}
return true, nil
}
func securityScan(fileInfo *modelSecurity.FileInfo) (err error) {
//加载阿里云配置获取临时token
@ -113,7 +128,7 @@ func handleVideoScan(config *security.Config, fileInfo *modelSecurity.FileInfo)
fmt.Println("视频不能为空")
return errors.New("视频不能为空")
}
serviceType := security.VideoBaselineCheckGlobal
serviceType := security.VideoPostCheckByVLGlobal
dataID := "video_" + time.Now().Format("20060102150405")
fmt.Println("正在扫描视频(这可能需要几分钟)...")
@ -165,7 +180,7 @@ func handleImageScan(config *security.Config, fileInfo *modelSecurity.FileInfo)
return errors.New("文件不能为空")
}
serviceType := security.BaselineCheckGlobal
serviceType := security.PostImageCheckByVLGlobal
fmt.Println("正在扫描图片...")
result, err := scanner.ScanImageByURL(fileInfo.FileUrl, "image_"+time.Now().Format("20060102150405"), serviceType)
@ -189,3 +204,33 @@ func handleImageScan(config *security.Config, fileInfo *modelSecurity.FileInfo)
}
return nil
}
func handleTextScan(config *security.Config, textVal string) (err error) {
fmt.Println("\n=== 图片内容安全审核 ===")
scanner, err := security.NewTextScanner(config)
if err != nil {
fmt.Printf("创建扫描器失败:%v", err)
return errors.New("创建扫描器失败")
}
serviceType := security.TextBaselineCheckGlobal
fmt.Println("正在扫描图片...")
result, err := scanner.ScanText(textVal, "image_"+time.Now().Format("20060102150405"), serviceType)
if err != nil {
fmt.Printf("扫描失败: %v\n", err)
return errors.New("扫描失败")
}
scanner.PrintResult(result)
for _, v := range result.Data {
for _, vv := range v.Results {
label := *vv.Label
if label != "nonLabel" {
return errors.New("风险等级过高")
}
}
}
fmt.Println(result)
return nil
}