feat: 增加自动确认竞品报告和数据分析
This commit is contained in:
parent
7cb339c903
commit
fc972ea0a3
305
pkg/cron/task.go
305
pkg/cron/task.go
@ -21,6 +21,7 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"dubbo.apache.org/dubbo-go/v3/common/constant"
|
||||
"github.com/go-redis/redis"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
@ -142,6 +143,8 @@ func AutoManuallyConfirmWorkTaskWithRandomInterval() {
|
||||
// 执行任务
|
||||
zap.L().Debug("开始执行自动确认任务")
|
||||
AutoManuallyConfirmWorkTask()
|
||||
AutoManuallyConfirmWorkAnalysisTask()
|
||||
AutoManuallyConfirmCompetitiveReportTask()
|
||||
zap.L().Debug("自动确认任务执行完成")
|
||||
}()
|
||||
|
||||
@ -295,6 +298,308 @@ 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 {
|
||||
_, err := service.CastProvider.UpdateWorkAnalysisStatus(artistCtx, &cast.UpdateWorkAnalysisStatusReq{
|
||||
WorkAction: cast.WorkActionENUM_CONFIRM,
|
||||
Uuid: item.Uuid,
|
||||
ConfirmRemark: "数据分析余量不足",
|
||||
ConfirmStatus: 3,
|
||||
ConfirmType: 1,
|
||||
})
|
||||
if err != nil {
|
||||
zap.L().Error("更新数据分析状态失败", zap.Error(err), 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 {
|
||||
_, 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
|
||||
}
|
||||
|
||||
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() {
|
||||
resp, err := service.CastProvider.ListWorkAnalysis(context.Background(), &cast.ListWorkAnalysisReq{
|
||||
Page: 1,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user