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"
|
"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,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() {
|
func RefreshWorkAnalysisApprovalStatusTask() {
|
||||||
resp, err := service.CastProvider.ListWorkAnalysis(context.Background(), &cast.ListWorkAnalysisReq{
|
resp, err := service.CastProvider.ListWorkAnalysis(context.Background(), &cast.ListWorkAnalysisReq{
|
||||||
Page: 1,
|
Page: 1,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user