批量导入自媒体账号

This commit is contained in:
戴育兵 2025-12-19 20:51:03 +08:00
parent bc178ea266
commit 8d34f83459
2 changed files with 72 additions and 34 deletions

View File

@ -23,6 +23,7 @@ func MediaRouter(r *gin.RouterGroup) {
media.POST("refresh-token", serviceCast.RefreshToken)
media.POST("artist-info", serviceCast.ArtistInfo)
media.POST("sync-as-profile", serviceCast.SyncAsProfile)
media.POST("import-media-account", serviceCast.ImportMediaAccount)
}
mediaNoLogin := r.Group("media")
{

View File

@ -565,7 +565,7 @@ func ImportMediaAccount(ctx *gin.Context) {
}
var subInfoResp *accountFiee.UserInfoResponse
//查询艺人信息
if config.AppConfig.System.AppMode == "dev" {
//if config.AppConfig.System.AppMode == "dev" {
subInfoResp = &accountFiee.UserInfoResponse{
Id: 1245,
SubNum: "FL00023",
@ -574,12 +574,12 @@ func ImportMediaAccount(ctx *gin.Context) {
TelNum: "1826145872",
TelAreaCode: "86",
}
} else {
//} else {
subInfoResp, err = service.AccountFieeProvider.SubNumGetInfo(context.Background(), &accountFiee.SubNumGetInfoRequest{
SubNum: subNum,
Domain: "app",
})
}
//}
if err != nil {
excelSetRemark(excelData, line, "查询艺人出错")
continue
@ -624,11 +624,48 @@ func ImportMediaAccount(ctx *gin.Context) {
service.Error(ctx, err)
return
}
// 打开文件 遍历一下 F列没有数据success + 1 并且删掉有值的fail+1 留着
var successCount, failCount int
rows, err = excelData.GetRows("Sheet1")
if err != nil {
service.Error(ctx, err)
return
}
// 记录需要删除的行(从后往前删除,避免行号变化)
rowsToDelete := make([]int, 0)
for line := 1; line < len(rows); line++ { // 从第2行开始跳过表头
remarkCell := fmt.Sprintf("F%d", line+1)
remark, _ := excelData.GetCellValue("Sheet1", remarkCell)
if remark == "" {
// F列没有数据表示成功
successCount++
rowsToDelete = append(rowsToDelete, line+1)
} else {
// F列有值表示失败
failCount++
}
}
// 从后往前删除成功的行
for i := len(rowsToDelete) - 1; i >= 0; i-- {
if err = excelData.RemoveRow("Sheet1", rowsToDelete[i]); err != nil {
continue
}
}
// 再次保存文件
if err = excelData.SaveAs(resultPath); err != nil {
service.Error(ctx, err)
return
}
urlHost := config.AppConfig.System.FieeHost
urlResult := fmt.Sprintf("%s/api/fiee/static/media/%s", urlHost, fileName)
service.Success(ctx, map[string]interface{}{
"successCount": 0,
"failCount": 0,
"successCount": successCount,
"failCount": failCount,
"url": urlResult,
})
}
@ -643,7 +680,7 @@ func excelSetRemark(excelData *excelize.File, line int, remark string) {
func updateMediaAccount(platformName string, platformId cast.PlatformIDENUM, subInfoResp *accountFiee.UserInfoResponse, loginInfo login.Info) error {
var err error
if config.AppConfig.System.AppMode != "dev" {
//if config.AppConfig.System.AppMode != "dev" {
if _, err = CheckUserBundleBalance(int32(subInfoResp.Id), modelCast.BalanceTypeAccountValue); err != nil {
return err
}
@ -654,7 +691,7 @@ func updateMediaAccount(platformName string, platformId cast.PlatformIDENUM, sub
if err != nil {
return err
}
}
//}
_, err = service.CastProvider.UpdateMediaAccount(context.Background(), &cast.UpdateMediaAccountReq{
PlatformID: platformId,
PlatformUserName: platformName,
@ -667,13 +704,13 @@ func updateMediaAccount(platformName string, platformId cast.PlatformIDENUM, sub
ManagerUserName: loginInfo.Name,
ArtistSubNum: subInfoResp.SubNum,
})
if config.AppConfig.System.AppMode != "dev" {
//if config.AppConfig.System.AppMode != "dev" {
if err != nil {
_, err = service.BundleProvider.AddBundleBalance(context.Background(), &bundle.AddBundleBalanceReq{
UserId: int32(subInfoResp.Id),
AccountConsumptionNumber: -1,
})
}
}
//}
return err
}