Updata:增加启动自动手动确认定时任务

This commit is contained in:
jiaji.H 2025-12-16 17:35:29 +08:00
parent 5a41de85dd
commit 46b8e1862d

View File

@ -10,10 +10,11 @@ import (
"fonchain-fiee/pkg/cache" "fonchain-fiee/pkg/cache"
bundleModel "fonchain-fiee/pkg/model/bundle" bundleModel "fonchain-fiee/pkg/model/bundle"
modelCast "fonchain-fiee/pkg/model/cast" modelCast "fonchain-fiee/pkg/model/cast"
"fonchain-fiee/pkg/model/login"
"fonchain-fiee/pkg/service" "fonchain-fiee/pkg/service"
serverCast "fonchain-fiee/pkg/service/cast" serverCast "fonchain-fiee/pkg/service/cast"
"log" "log"
"math/rand"
"strconv"
"time" "time"
"github.com/go-redis/redis" "github.com/go-redis/redis"
@ -34,6 +35,9 @@ func InitTasks() error {
// 启动队列消费者 // 启动队列消费者
go WorkPublishQueueConsumer() go WorkPublishQueueConsumer()
// 启动随机间隔的自动确认任务
go AutoManuallyConfirmWorkTaskWithRandomInterval()
return nil return nil
} }
@ -53,6 +57,23 @@ func RefreshWorkApprovalStatusTask() {
serverCast.RefreshWorkApproval(nil, resp.Data) serverCast.RefreshWorkApproval(nil, resp.Data)
} }
// AutoManuallyConfirmWorkTaskWithRandomInterval 以随机间隔3-7分钟执行自动确认任务
func AutoManuallyConfirmWorkTaskWithRandomInterval() {
// 初始化随机数种子
rand.Seed(time.Now().UnixNano())
for {
// 执行任务
AutoManuallyConfirmWorkTask()
// 生成3-7分钟之间的随机间隔单位分钟
randomMinutes := rand.Intn(5) + 3 // 3-7分钟
randomDuration := time.Duration(randomMinutes) * time.Minute
// 等待随机时间
time.Sleep(randomDuration)
}
}
func AutoManuallyConfirmWorkTask() { func AutoManuallyConfirmWorkTask() {
var req bundle.GetWaitConfirmWorkListReq var req bundle.GetWaitConfirmWorkListReq
res, err := service.BundleProvider.GetWaitConfirmWorkList(context.Background(), &req) res, err := service.BundleProvider.GetWaitConfirmWorkList(context.Background(), &req)
@ -67,8 +88,13 @@ func AutoManuallyConfirmWorkTask() {
var req bundleModel.UserWorkConfirmReq var req bundleModel.UserWorkConfirmReq
req.WorkUuid = work.WorkUuid req.WorkUuid = work.WorkUuid
req.ConfirmStatus = 1 req.ConfirmStatus = 1
artistId, err := strconv.ParseInt(work.ArtistUuid, 10, 64)
if err != nil {
zap.L().Error("解析艺术家ID失败", zap.Error(err))
return
}
if req.ConfirmStatus == 2 { // 驳回完直接结束 if req.ConfirmStatus == 2 { // 驳回完直接结束
res, err := service.CastProvider.UpdateStatus(context.Background(), &cast.UpdateStatusReq{ _, err := service.CastProvider.UpdateStatus(context.Background(), &cast.UpdateStatusReq{
WorkAction: cast.WorkActionENUM_CONFIRM, WorkAction: cast.WorkActionENUM_CONFIRM,
WorkUuid: req.WorkUuid, WorkUuid: req.WorkUuid,
ConfirmRemark: req.ConfirmRemark, ConfirmRemark: req.ConfirmRemark,
@ -80,49 +106,61 @@ func AutoManuallyConfirmWorkTask() {
} }
continue continue
} }
userInfo := login.GetUserInfoFromC(context.Background())
balanceInfoRes, err := service.BundleProvider.GetBundleBalanceByUserId(context.Background(), &bundle.GetBundleBalanceByUserIdReq{ balanceInfoRes, err := service.BundleProvider.GetBundleBalanceByUserId(context.Background(), &bundle.GetBundleBalanceByUserIdReq{
UserId: int32(userInfo.ID), UserId: int32(artistId),
}) })
if err != nil { if err != nil {
return continue
} }
wordInfoRes, err := service.CastProvider.WorkDetail(c, &cast.WorkDetailReq{ wordInfoRes, err := service.CastProvider.WorkDetail(context.Background(), &cast.WorkDetailReq{
WorkUuid: req.WorkUuid, WorkUuid: req.WorkUuid,
}) })
if err != nil { if err != nil {
return continue
} }
if wordInfoRes.WorkStatus != 4 { if wordInfoRes.WorkStatus != 4 {
return continue
} }
var workCategory = wordInfoRes.WorkCategory var workCategory = wordInfoRes.WorkCategory
var addBalanceReq bundle.AddBundleBalanceReq var addBalanceReq bundle.AddBundleBalanceReq
addBalanceReq.UserId = int32(userInfo.ID) addBalanceReq.UserId = int32(artistId)
switch workCategory { switch workCategory {
case 1: case 1:
{ {
if balanceInfoRes.ImageConsumptionNumber >= balanceInfoRes.ImageNumber { // 图文余量不足 if balanceInfoRes.ImageConsumptionNumber >= balanceInfoRes.ImageNumber { // 图文余量不足
return _, err = service.CastProvider.UpdateStatus(context.Background(), &cast.UpdateStatusReq{
WorkAction: cast.WorkActionENUM_CONFIRM,
WorkUuid: req.WorkUuid,
ConfirmRemark: req.ConfirmRemark,
ConfirmStatus: 3,
})
continue
} }
addBalanceReq.ImageConsumptionNumber = 1 addBalanceReq.ImageConsumptionNumber = 1
} }
case 2: case 2:
{ {
if balanceInfoRes.VideoConsumptionNumber >= balanceInfoRes.VideoNumber { // 视频余量不足 if balanceInfoRes.VideoConsumptionNumber >= balanceInfoRes.VideoNumber { // 视频余量不足
return _, err = service.CastProvider.UpdateStatus(context.Background(), &cast.UpdateStatusReq{
WorkAction: cast.WorkActionENUM_CONFIRM,
WorkUuid: req.WorkUuid,
ConfirmRemark: req.ConfirmRemark,
ConfirmStatus: 3,
})
continue
} }
addBalanceReq.VideoConsumptionNumber = 1 addBalanceReq.VideoConsumptionNumber = 1
} }
default: default:
return continue
} }
resp, err := service.BundleProvider.AddBundleBalance(context.Background(), &addBalanceReq) resp, err := service.BundleProvider.AddBundleBalance(context.Background(), &addBalanceReq)
if err != nil { if err != nil {
zap.L().Error("扣除余额失败", zap.Error(err)) zap.L().Error("扣除余额失败,作品uuid:"+req.WorkUuid, zap.Error(err))
return continue
} }
_, err = service.CastProvider.UpdateStatus(context.Background(), &cast.UpdateStatusReq{ _, err = service.CastProvider.UpdateStatus(context.Background(), &cast.UpdateStatusReq{
WorkAction: cast.WorkActionENUM_CONFIRM, WorkAction: cast.WorkActionENUM_CONFIRM,
@ -132,7 +170,7 @@ func AutoManuallyConfirmWorkTask() {
ConfirmStatus: 1, ConfirmStatus: 1,
}) })
if err != nil { if err != nil {
zap.L().Error("更新作品状态失败", zap.Error(err)) zap.L().Error("更新作品状态失败,作品uuid:"+req.WorkUuid, zap.Error(err))
return return
} }
} }