Compare commits

...

3 Commits

View File

@ -21,6 +21,7 @@ import (
"strings" "strings"
"time" "time"
"dubbo.apache.org/dubbo-go/v3/common/constant"
"github.com/go-redis/redis" "github.com/go-redis/redis"
"go.uber.org/zap" "go.uber.org/zap"
) )
@ -142,6 +143,8 @@ func AutoManuallyConfirmWorkTaskWithRandomInterval() {
// 执行任务 // 执行任务
zap.L().Debug("开始执行自动确认任务") zap.L().Debug("开始执行自动确认任务")
AutoManuallyConfirmWorkTask() AutoManuallyConfirmWorkTask()
// AutoManuallyConfirmWorkAnalysisTask()
// AutoManuallyConfirmCompetitiveReportTask()
zap.L().Debug("自动确认任务执行完成") zap.L().Debug("自动确认任务执行完成")
}() }()
@ -295,6 +298,289 @@ func AutoManuallyConfirmWorkTask() {
} }
} }
func AutoManuallyConfirmWorkAnalysisTask() {
randomHours := rand.Intn(22) + 2
now := time.Now()
startTime := now.Add(-time.Duration(randomHours+2) * time.Hour).Format("2006-01-02 15:04:05")
endTime := now.Add(-time.Duration(randomHours) * time.Hour).Format("2006-01-02 15:04:05")
listResp, err := service.CastProvider.ListWorkAnalysis(context.Background(), &cast.ListWorkAnalysisReq{
Status: 4,
StatusUpdateTimeStart: startTime,
StatusUpdateTimeEnd: endTime,
Page: 1,
PageSize: 4,
})
if err != nil {
zap.L().Error("获取待确认数据分析列表失败", zap.Error(err))
return
}
if listResp == nil || len(listResp.Data) == 0 {
return
}
for _, item := range listResp.Data {
if item == nil || item.Uuid == "" {
continue
}
artistID, err := strconv.ParseInt(item.ArtistID, 10, 64)
if err != nil {
zap.L().Error("解析艺术家ID失败", zap.Error(err), zap.String("analysisUuid", item.Uuid))
continue
}
mm := make(map[string]interface{}, 3)
mm["userid"] = fmt.Sprintf("%d", artistID)
mm["name"] = item.ArtistName
mm["phone"] = item.ArtistPhone
artistCtx := context.WithValue(context.Background(), constant.DubboCtxKey("attachment"), mm)
balanceInfoRes, err := service.BundleProvider.GetBundleBalanceByUserId(context.Background(), &bundle.GetBundleBalanceByUserIdReq{
UserId: int32(artistID),
})
if err != nil {
fmt.Println(err)
continue
}
analysisInfoRes, err := service.CastProvider.GetWorkAnalysis(context.Background(), &cast.GetWorkAnalysisDetailReq{
Uuid: item.Uuid,
})
if err != nil {
continue
}
if analysisInfoRes == nil {
continue
}
if balanceInfoRes.BundleStatus == common.BundleExpired {
_, err := service.CastProvider.UpdateWorkAnalysisStatus(artistCtx, &cast.UpdateWorkAnalysisStatusReq{
WorkAction: cast.WorkActionENUM_CONFIRM,
Uuid: item.Uuid,
ConfirmRemark: "套餐已过期",
ConfirmStatus: 3,
ConfirmType: 1,
})
if err != nil {
fmt.Printf("更新数据分析状态失败: %v, analysisUuid=%s\n", err, item.Uuid)
zap.L().Error("更新数据分析状态失败", zap.Error(err), zap.String("analysisUuid", item.Uuid))
}
continue
}
if analysisInfoRes.WorkAnalysisStatus != 4 {
continue
}
if balanceInfoRes.PurchaseType == 1 {
if analysisInfoRes.BundleOrderUuid != balanceInfoRes.OrderUUID {
_, err := service.CastProvider.UpdateWorkAnalysisStatus(artistCtx, &cast.UpdateWorkAnalysisStatusReq{
WorkAction: cast.WorkActionENUM_CONFIRM,
Uuid: item.Uuid,
ConfirmRemark: "套餐为新套餐,确认失败",
ConfirmStatus: 3,
ConfirmType: 1,
})
if err != nil {
fmt.Printf("更新数据分析状态失败: %v, analysisUuid=%s\n", err, item.Uuid)
zap.L().Error("更新数据分析状态失败", zap.Error(err), zap.String("analysisUuid", item.Uuid))
}
continue
}
}
if balanceInfoRes.DataAnalysisConsumptionNumber >= balanceInfoRes.DataAnalysisNumber {
zap.L().Info("数据分析余量不足,跳过确认", zap.String("analysisUuid", item.Uuid))
continue
}
resp, err := service.BundleProvider.AddBundleBalance(context.Background(), &bundle.AddBundleBalanceReq{
UserId: int32(artistID),
DataAnalysisConsumptionNumber: 1,
})
if err != nil {
_, _ = service.CastProvider.UpdateWorkAnalysisStatus(artistCtx, &cast.UpdateWorkAnalysisStatusReq{
WorkAction: cast.WorkActionENUM_CONFIRM,
Uuid: item.Uuid,
ConfirmRemark: "扣除余额失败",
ConfirmStatus: 3,
ConfirmType: 1,
})
continue
}
_, err = service.CastProvider.UpdateWorkAnalysisStatus(artistCtx, &cast.UpdateWorkAnalysisStatusReq{
WorkAction: cast.WorkActionENUM_CONFIRM,
Uuid: item.Uuid,
ConfirmRemark: "",
CostType: resp.UsedType,
ConfirmStatus: 1,
ConfirmType: 1,
})
if err != nil {
continue
}
_, err = service.CastProvider.UpdateWorkAnalysisStatus(artistCtx, &cast.UpdateWorkAnalysisStatusReq{
WorkAction: cast.WorkActionENUM_READ,
Uuid: item.Uuid,
})
if err != nil {
continue
}
}
}
func AutoManuallyConfirmCompetitiveReportTask() {
randomHours := rand.Intn(22) + 2
now := time.Now()
startTime := now.Add(-time.Duration(randomHours+2) * time.Hour).Format("2006-01-02 15:04:05")
endTime := now.Add(-time.Duration(randomHours) * time.Hour).Format("2006-01-02 15:04:05")
listResp, err := service.CastProvider.ListCompetitiveReport(context.Background(), &cast.ListCompetitiveReportReq{
Status: 4,
StatusUpdateTimeStart: startTime,
StatusUpdateTimeEnd: endTime,
Page: 1,
PageSize: 4,
})
if err != nil {
fmt.Printf("获取待确认竞品报告列表失败: %v, startTime=%s, endTime=%s\n", err, startTime, endTime)
zap.L().Error("获取待确认竞品报告列表失败", zap.Error(err), zap.String("startTime", startTime), zap.String("endTime", endTime))
return
}
if listResp == nil || len(listResp.Data) == 0 {
return
}
for _, item := range listResp.Data {
if item == nil || item.Uuid == "" {
continue
}
artistID, err := strconv.ParseInt(item.ArtistID, 10, 64)
if err != nil {
fmt.Printf("解析艺术家ID失败: %v, reportUuid=%s, artistIDRaw=%s\n", err, item.Uuid, item.ArtistID)
zap.L().Error("解析艺术家ID失败", zap.Error(err), zap.String("reportUuid", item.Uuid), zap.String("artistID", item.ArtistID))
continue
}
mm := make(map[string]interface{}, 3)
mm["userid"] = fmt.Sprintf("%d", artistID)
mm["name"] = item.ArtistName
mm["phone"] = item.ArtistPhone
artistCtx := context.WithValue(context.Background(), constant.DubboCtxKey("attachment"), mm)
balanceInfoRes, err := service.BundleProvider.GetBundleBalanceByUserId(context.Background(), &bundle.GetBundleBalanceByUserIdReq{
UserId: int32(artistID),
})
if err != nil {
fmt.Printf("获取艺人套餐余额失败: %v, reportUuid=%s, artistID=%d\n", err, item.Uuid, artistID)
zap.L().Error("获取艺人套餐余额失败", zap.Error(err), zap.String("reportUuid", item.Uuid), zap.Int64("artistID", artistID))
continue
}
reportInfoRes, err := service.CastProvider.GetCompetitiveReport(context.Background(), &cast.GetCompetitiveReportDetailReq{
Uuid: item.Uuid,
})
if err != nil {
fmt.Printf("获取竞品报告详情失败: %v, reportUuid=%s\n", err, item.Uuid)
zap.L().Error("获取竞品报告详情失败", zap.Error(err), zap.String("reportUuid", item.Uuid))
continue
}
if reportInfoRes == nil {
continue
}
if balanceInfoRes.BundleStatus == common.BundleExpired {
_, err := service.CastProvider.UpdateCompetitiveReportStatus(artistCtx, &cast.UpdateCompetitiveReportStatusReq{
WorkAction: cast.WorkActionENUM_CONFIRM,
Uuid: item.Uuid,
ConfirmRemark: "套餐已过期",
ConfirmStatus: 3,
ConfirmType: 1,
})
if err != nil {
fmt.Printf("更新竞品报告状态失败: %v, reportUuid=%s\n", err, item.Uuid)
zap.L().Error("更新竞品报告状态失败", zap.Error(err), zap.String("reportUuid", item.Uuid))
}
continue
}
if reportInfoRes.WorkReportStatus != 4 {
continue
}
if balanceInfoRes.PurchaseType == 1 {
if reportInfoRes.BundleOrderUuid != balanceInfoRes.OrderUUID {
_, err := service.CastProvider.UpdateCompetitiveReportStatus(artistCtx, &cast.UpdateCompetitiveReportStatusReq{
WorkAction: cast.WorkActionENUM_CONFIRM,
Uuid: item.Uuid,
ConfirmRemark: "套餐为新套餐,确认失败",
ConfirmStatus: 3,
ConfirmType: 1,
})
if err != nil {
fmt.Printf("更新竞品报告状态失败: %v, reportUuid=%s\n", err, item.Uuid)
zap.L().Error("更新竞品报告状态失败", zap.Error(err), zap.String("reportUuid", item.Uuid))
}
continue
}
}
if balanceInfoRes.CompetitiveConsumptionNumber >= balanceInfoRes.CompetitiveNumber {
zap.L().Info("竞品报告余额不足,跳过确认", zap.String("reportUuid", item.Uuid))
continue
}
resp, err := service.BundleProvider.AddBundleBalance(context.Background(), &bundle.AddBundleBalanceReq{
UserId: int32(artistID),
CompetitiveConsumptionNumber: 1,
})
if err != nil {
fmt.Printf("扣除竞品报告余额失败: %v, reportUuid=%s, artistID=%d\n", err, item.Uuid, artistID)
zap.L().Error("扣除竞品报告余额失败", zap.Error(err), zap.String("reportUuid", item.Uuid), zap.Int64("artistID", artistID))
_, uErr := service.CastProvider.UpdateCompetitiveReportStatus(artistCtx, &cast.UpdateCompetitiveReportStatusReq{
WorkAction: cast.WorkActionENUM_CONFIRM,
Uuid: item.Uuid,
ConfirmRemark: "扣除余额失败",
ConfirmStatus: 3,
ConfirmType: 1,
})
if uErr != nil {
fmt.Printf("扣除余额失败后更新竞品报告状态失败: %v, reportUuid=%s\n", uErr, item.Uuid)
zap.L().Error("扣除余额失败后更新竞品报告状态失败", zap.Error(uErr), zap.String("reportUuid", item.Uuid))
}
continue
}
_, err = service.CastProvider.UpdateCompetitiveReportStatus(artistCtx, &cast.UpdateCompetitiveReportStatusReq{
WorkAction: cast.WorkActionENUM_CONFIRM,
Uuid: item.Uuid,
ConfirmRemark: "",
CostType: resp.UsedType,
ConfirmStatus: 1,
ConfirmType: 1,
})
if err != nil {
fmt.Printf("确认竞品报告状态更新失败: %v, reportUuid=%s\n", err, item.Uuid)
zap.L().Error("确认竞品报告状态更新失败", zap.Error(err), zap.String("reportUuid", item.Uuid))
continue
}
_, err = service.CastProvider.UpdateCompetitiveReportStatus(artistCtx, &cast.UpdateCompetitiveReportStatusReq{
WorkAction: cast.WorkActionENUM_READ,
Uuid: item.Uuid,
})
if err != nil {
fmt.Printf("竞品报告自动标记已阅读失败: %v, reportUuid=%s\n", err, item.Uuid)
zap.L().Error("竞品报告自动标记已阅读失败", zap.Error(err), zap.String("reportUuid", item.Uuid))
continue
}
}
}
func RefreshWorkAnalysisApprovalStatusTask() { func RefreshWorkAnalysisApprovalStatusTask() {
resp, err := service.CastProvider.ListWorkAnalysis(context.Background(), &cast.ListWorkAnalysisReq{ resp, err := service.CastProvider.ListWorkAnalysis(context.Background(), &cast.ListWorkAnalysisReq{
Page: 1, Page: 1,