Updata:解决冲突
This commit is contained in:
commit
e9d6bf458a
@ -524,7 +524,7 @@ func MetricsBusiness(req *bundle.MetricsBusinessReq) (result *bundle.MetricsBusi
|
|||||||
Where("cwa.submit_time <= ?", req.End+" 23:59:59").
|
Where("cwa.submit_time <= ?", req.End+" 23:59:59").
|
||||||
Where("cwa.deleted_at = 0")
|
Where("cwa.deleted_at = 0")
|
||||||
if req.BundleUuid != "" {
|
if req.BundleUuid != "" {
|
||||||
query = query.Where("ccl.bundle_uuid = ?", req.BundleUuid)
|
query = query.Where("ccal.bundle_uuid = ?", req.BundleUuid)
|
||||||
}
|
}
|
||||||
err = query.Scan(&dataAnalysisCountInfo).Error
|
err = query.Scan(&dataAnalysisCountInfo).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -577,6 +577,78 @@ func MetricsBusiness(req *bundle.MetricsBusinessReq) (result *bundle.MetricsBusi
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//==================竞品数====================
|
||||||
|
var newConpetitiveUsed int64
|
||||||
|
type ConpetitiveResult struct {
|
||||||
|
ConpetitiveUsed int64 `gorm:"column:conpetitive_used"`
|
||||||
|
UnUsedConpetitive int64 `gorm:"column:un_used_conpetitive"`
|
||||||
|
}
|
||||||
|
var conpetitiveCountInfo ConpetitiveResult
|
||||||
|
query = app.ModuleClients.BundleDB.Table("cast_competitive_report as ccr").
|
||||||
|
Select(`
|
||||||
|
SUM(CASE WHEN cccrl.uuid IS NOT NULL AND cccrl.deleted_at = 0 THEN 1 ELSE 0 END) AS conpetitive_used,
|
||||||
|
SUM(CASE WHEN cccrl.uuid IS NULL THEN 1 ELSE 0 END) AS un_used_conpetitive
|
||||||
|
`).
|
||||||
|
Joins("left join cast_cost_competitive_report_log cccrl on cccrl.report_uuid = ccr.uuid").
|
||||||
|
Where("ccr.submit_time >= ?", req.Start+" 00:00:00").
|
||||||
|
Where("ccr.submit_time <= ?", req.End+" 23:59:59").
|
||||||
|
Where("ccr.deleted_at = 0")
|
||||||
|
if req.BundleUuid != "" {
|
||||||
|
query = query.Where("cccrl.bundle_uuid = ?", req.BundleUuid)
|
||||||
|
}
|
||||||
|
err = query.Scan(&conpetitiveCountInfo).Error
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if req.BundleUuid == "" {
|
||||||
|
newConpetitiveUsed = conpetitiveCountInfo.ConpetitiveUsed + conpetitiveCountInfo.UnUsedConpetitive
|
||||||
|
} else {
|
||||||
|
query = app.ModuleClients.BundleDB.Table("cast_competitive_report as ccr").
|
||||||
|
Joins("left join bundle_balance bb ON CAST(bb.user_id AS CHAR) COLLATE utf8mb4_general_ci = ccr.artist_id COLLATE utf8mb4_general_ci AND ccr.submit_time >= bb.start_at AND ccr.submit_time <= bb.expired_at and bb.month = DATE_FORMAT(ccr.submit_time, '%Y-%m')").
|
||||||
|
Joins("left join bundle_order_records bor ON bor.uuid = bb.order_uuid").
|
||||||
|
Where("ccr.submit_time >= ?", req.Start+" 00:00:00").
|
||||||
|
Where("ccr.submit_time <= ?", req.End+" 23:59:59").
|
||||||
|
Where("ccr.deleted_at = 0 and bor.deleted_at IS NULL and bb.deleted_at IS NULL").
|
||||||
|
Where("bor.bundle_uuid = ?", req.BundleUuid)
|
||||||
|
err = query.Count(&newConpetitiveUsed).Error
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//竞品数套餐总已上传数
|
||||||
|
var totalUploadedBundleConpetitiveCount int64
|
||||||
|
queryBundleConpetitive := app.ModuleClients.BundleDB.Table("cast_competitive_report as ccr").
|
||||||
|
Joins("left join cast_cost_competitive_report_log cccrl on cccrl.report_uuid = ccr.uuid AND cccrl.deleted_at = 0").
|
||||||
|
Joins("left join cast_competitive_report_extra ccrpe on ccrpe.report_uuid = ccr.uuid AND ccrpe.deleted_at = 0").
|
||||||
|
Where("ccr.submit_time <= ?", req.End+" 23:59:59").
|
||||||
|
Where("ccrpe.cost_type = 1"). // 套餐类型
|
||||||
|
Where("ccr.deleted_at = 0")
|
||||||
|
if req.BundleUuid != "" {
|
||||||
|
queryBundleConpetitive = queryBundleConpetitive.Where("cccrl.bundle_uuid = ?", req.BundleUuid)
|
||||||
|
}
|
||||||
|
err = queryBundleConpetitive.Count(&totalUploadedBundleConpetitiveCount).Error
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
//竞品数增值总已上传数
|
||||||
|
var totalUploadedIncreaseConpetitiveCount int64
|
||||||
|
queryIncreaseConpetitive := app.ModuleClients.BundleDB.Table("cast_competitive_report as ccr").
|
||||||
|
Joins("left join cast_cost_competitive_report_log cccrl on cccrl.report_uuid = ccr.uuid AND cccrl.deleted_at = 0").
|
||||||
|
Joins("left join cast_competitive_report_extra ccrpe on ccrpe.report_uuid = ccr.uuid AND ccrpe.deleted_at = 0").
|
||||||
|
Where("ccr.submit_time <= ?", req.End+" 23:59:59").
|
||||||
|
Where("ccrpe.cost_type in ?", []int{2, 3}). // 增值类型
|
||||||
|
Where("ccr.deleted_at = 0")
|
||||||
|
if req.BundleUuid != "" {
|
||||||
|
queryIncreaseConpetitive = queryIncreaseConpetitive.Where("cccrl.bundle_uuid = ?", req.BundleUuid)
|
||||||
|
}
|
||||||
|
err = queryIncreaseConpetitive.Count(&totalUploadedIncreaseConpetitiveCount).Error
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
//获取手动增加套餐额度
|
//获取手动增加套餐额度
|
||||||
manualIncreaseBalance, err := manualIncreaseBundleBalance(req.Start+" 00:00:00", req.End+" 23:59:59", req.BundleUuid)
|
manualIncreaseBalance, err := manualIncreaseBundleBalance(req.Start+" 00:00:00", req.End+" 23:59:59", req.BundleUuid)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -595,6 +667,8 @@ func MetricsBusiness(req *bundle.MetricsBusinessReq) (result *bundle.MetricsBusi
|
|||||||
result.NewUploadedImageCount = newImageUsed
|
result.NewUploadedImageCount = newImageUsed
|
||||||
//----------数据分析---------
|
//----------数据分析---------
|
||||||
result.NewUploadedDataAnalysisCount = newDataAnalysisUsed
|
result.NewUploadedDataAnalysisCount = newDataAnalysisUsed
|
||||||
|
//----------竞品数---------
|
||||||
|
result.NewUploadedCompetitiveCount = newConpetitiveUsed
|
||||||
|
|
||||||
// ==============数据分析暂时没数据============
|
// ==============数据分析暂时没数据============
|
||||||
|
|
||||||
@ -625,7 +699,9 @@ func MetricsBusiness(req *bundle.MetricsBusinessReq) (result *bundle.MetricsBusi
|
|||||||
//数据分析
|
//数据分析
|
||||||
result.NewPendingUploadDataAnalysisCount = int64(BundleRelease.DataAnalysis) + int64(BundleAutoRelease.DataAnalysis) + int64(IncreaseRelease.DataAnalysis) + int64(IncreaseAutoRelease.DataAnalysis) + int64(manualIncreaseBalance.TotalDataAnalysisAdditional)
|
result.NewPendingUploadDataAnalysisCount = int64(BundleRelease.DataAnalysis) + int64(BundleAutoRelease.DataAnalysis) + int64(IncreaseRelease.DataAnalysis) + int64(IncreaseAutoRelease.DataAnalysis) + int64(manualIncreaseBalance.TotalDataAnalysisAdditional)
|
||||||
result.TotalPendingUploadDataAnalysisCount = int64(endBundleRelease.DataAnalysis) + int64(endIncreaseRelease.DataAnalysis) - int64(totalUploadedBundleDataAnalysisCount) - int64(totalUploadedIncreaseDataAnalysisCount) + int64(totalManualIncreaseBalance.TotalDataAnalysisAdditional)
|
result.TotalPendingUploadDataAnalysisCount = int64(endBundleRelease.DataAnalysis) + int64(endIncreaseRelease.DataAnalysis) - int64(totalUploadedBundleDataAnalysisCount) - int64(totalUploadedIncreaseDataAnalysisCount) + int64(totalManualIncreaseBalance.TotalDataAnalysisAdditional)
|
||||||
|
//竞品数
|
||||||
|
result.NewPendingUploadCompetitiveCount = int64(BundleRelease.Competitive) + int64(BundleAutoRelease.Competitive) + int64(IncreaseRelease.Competitive) + int64(IncreaseAutoRelease.Competitive) + int64(manualIncreaseBalance.TotalCompetitiveAdditional)
|
||||||
|
result.TotalPendingUploadCompetitiveCount = int64(endBundleRelease.Competitive) + int64(endIncreaseRelease.Competitive) - int64(totalUploadedBundleConpetitiveCount) - int64(totalUploadedIncreaseConpetitiveCount) + int64(totalManualIncreaseBalance.TotalCompetitiveAdditional)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -642,6 +718,7 @@ type BalanceInfo struct {
|
|||||||
Video int
|
Video int
|
||||||
Image int
|
Image int
|
||||||
DataAnalysis int
|
DataAnalysis int
|
||||||
|
Competitive int
|
||||||
}
|
}
|
||||||
|
|
||||||
func MetricsOperatingCreate(req *bundle.MetricsOperatingCreateReq) (result *bundle.MetricsOperatingCreateResp, err error) {
|
func MetricsOperatingCreate(req *bundle.MetricsOperatingCreateReq) (result *bundle.MetricsOperatingCreateResp, err error) {
|
||||||
@ -803,6 +880,38 @@ func MetricsOperatingCreate(req *bundle.MetricsOperatingCreateReq) (result *bund
|
|||||||
Where("cwa.deleted_at = 0 and cwe.deleted_at = 0").
|
Where("cwa.deleted_at = 0 and cwe.deleted_at = 0").
|
||||||
Count(&totalUploadedIncreaseDataAnalysisCount)
|
Count(&totalUploadedIncreaseDataAnalysisCount)
|
||||||
|
|
||||||
|
//====================竞品数=======================
|
||||||
|
var newUploadedBundleCompetitiveCount int64
|
||||||
|
app.ModuleClients.BundleDB.Table("cast_competitive_report as ccr").
|
||||||
|
Where("ccr.submit_time >= ?", req.Start+" 00:00:00").
|
||||||
|
Where("ccr.submit_time <= ?", req.End+" 23:59:59").
|
||||||
|
Where("ccr.deleted_at = 0").
|
||||||
|
Count(&newUploadedBundleCompetitiveCount)
|
||||||
|
result.NewUploadedBundleCompetitiveCount = newUploadedBundleCompetitiveCount
|
||||||
|
|
||||||
|
var totalUploadedCompetitiveCount int64
|
||||||
|
app.ModuleClients.BundleDB.Table("cast_competitive_report as ccr").
|
||||||
|
Where("ccr.submit_time <= ?", req.End+" 23:59:59").
|
||||||
|
Where("ccr.deleted_at = 0").
|
||||||
|
Count(&totalUploadedCompetitiveCount)
|
||||||
|
result.TotalUploadedBundleCompetitiveCount = totalUploadedCompetitiveCount
|
||||||
|
|
||||||
|
var totalUploadedBundleCompetitiveCount int64
|
||||||
|
app.ModuleClients.BundleDB.Table("cast_competitive_report as ccr").
|
||||||
|
Joins("left join cast_competitive_report_extra ccre on ccre.report_uuid = ccr.uuid AND ccre.deleted_at = 0").
|
||||||
|
Where("ccr.submit_time <= ?", req.End+" 23:59:59").
|
||||||
|
Where("ccre.cost_type = 1"). // 套餐类型
|
||||||
|
Where("ccr.deleted_at = 0 and ccre.deleted_at = 0").
|
||||||
|
Count(&totalUploadedBundleCompetitiveCount)
|
||||||
|
|
||||||
|
var totalUploadedIncreaseCompetitiveCount int64
|
||||||
|
app.ModuleClients.BundleDB.Table("cast_competitive_report as ccr").
|
||||||
|
Joins("left join cast_competitive_report_extra ccre on ccre.report_uuid = ccr.uuid AND ccre.deleted_at = 0").
|
||||||
|
Where("ccr.submit_time <= ?", req.End+" 23:59:59").
|
||||||
|
Where("ccre.cost_type in ?", []int{2, 3}). // 增值类型
|
||||||
|
Where("ccr.deleted_at = 0 and ccre.deleted_at = 0").
|
||||||
|
Count(&totalUploadedIncreaseCompetitiveCount)
|
||||||
|
|
||||||
endMonth := timeParse(req.End + " 23:59:59").Format("2006-01")
|
endMonth := timeParse(req.End + " 23:59:59").Format("2006-01")
|
||||||
startMonth := timeParse(req.Start + " 00:00:00").Format("2006-01")
|
startMonth := timeParse(req.Start + " 00:00:00").Format("2006-01")
|
||||||
|
|
||||||
@ -842,7 +951,11 @@ func MetricsOperatingCreate(req *bundle.MetricsOperatingCreateReq) (result *bund
|
|||||||
result.NewPendingUploadIncreaseDataAnalysisCount = int64(IncreaseRelease.DataAnalysis) + int64(IncreaseAutoRelease.DataAnalysis) + int64(manualIncreaseBalance.TotalDataAnalysisAdditional)
|
result.NewPendingUploadIncreaseDataAnalysisCount = int64(IncreaseRelease.DataAnalysis) + int64(IncreaseAutoRelease.DataAnalysis) + int64(manualIncreaseBalance.TotalDataAnalysisAdditional)
|
||||||
result.TotalPendingUploadBundleDataAnalysisCount = int64(endBundleRelease.DataAnalysis) - int64(totalUploadedBundleDataAnalysisCount)
|
result.TotalPendingUploadBundleDataAnalysisCount = int64(endBundleRelease.DataAnalysis) - int64(totalUploadedBundleDataAnalysisCount)
|
||||||
result.TotalPendingUploadIncreaseDataAnalysisCount = int64(endIncreaseRelease.DataAnalysis) - int64(totalUploadedIncreaseDataAnalysisCount) + int64(totalManualIncreaseBalance.TotalDataAnalysisAdditional)
|
result.TotalPendingUploadIncreaseDataAnalysisCount = int64(endIncreaseRelease.DataAnalysis) - int64(totalUploadedIncreaseDataAnalysisCount) + int64(totalManualIncreaseBalance.TotalDataAnalysisAdditional)
|
||||||
|
//竞品数
|
||||||
|
result.NewPendingUploadBundleCompetitiveCount = int64(BundleRelease.Competitive) + int64(BundleAutoRelease.Competitive)
|
||||||
|
result.NewPendingUploadIncreaseCompetitiveCount = int64(IncreaseRelease.Competitive) + int64(IncreaseAutoRelease.Competitive) + int64(manualIncreaseBalance.TotalCompetitiveAdditional)
|
||||||
|
result.TotalPendingUploadBundleCompetitiveCount = int64(endBundleRelease.Competitive) - int64(totalUploadedBundleCompetitiveCount)
|
||||||
|
result.TotalPendingUploadIncreaseCompetitiveCount = int64(endIncreaseRelease.Competitive) - int64(totalUploadedIncreaseCompetitiveCount) + int64(totalManualIncreaseBalance.TotalCompetitiveAdditional)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -893,6 +1006,11 @@ func balanceInfoWithShop(startMonth string, endMonth string, startTime string, e
|
|||||||
bb.monthly_bundle_limit_data_analysis_number +
|
bb.monthly_bundle_limit_data_analysis_number +
|
||||||
bb.monthly_bundle_limit_expired_data_analysis_number
|
bb.monthly_bundle_limit_expired_data_analysis_number
|
||||||
) AS data_analysis
|
) AS data_analysis
|
||||||
|
(
|
||||||
|
bb.bundle_competitive_number +
|
||||||
|
bb.monthly_bundle_limit_competitive_number +
|
||||||
|
bb.monthly_bundle_limit_expired_competitive_number
|
||||||
|
) AS competitive
|
||||||
`). // 不限制类型的总数 + 限制不过期类型的当月可用 + 限制过期类型的当月可用 = 新增待上传数量
|
`). // 不限制类型的总数 + 限制不过期类型的当月可用 + 限制过期类型的当月可用 = 新增待上传数量
|
||||||
Joins("LEFT JOIN bundle_order_records bor ON bor.uuid = bb.order_uuid").
|
Joins("LEFT JOIN bundle_order_records bor ON bor.uuid = bb.order_uuid").
|
||||||
Joins(`INNER JOIN (
|
Joins(`INNER JOIN (
|
||||||
@ -921,7 +1039,8 @@ func balanceInfoWithShop(startMonth string, endMonth string, startTime string, e
|
|||||||
SUM(statistic.account) AS account,
|
SUM(statistic.account) AS account,
|
||||||
SUM(statistic.video) AS video,
|
SUM(statistic.video) AS video,
|
||||||
SUM(statistic.image) AS image,
|
SUM(statistic.image) AS image,
|
||||||
SUM(statistic.data_analysis) AS data_analysis
|
SUM(statistic.data_analysis) AS data_analysis,
|
||||||
|
SUM(statistic.competitive) AS competitive
|
||||||
`).
|
`).
|
||||||
Scan(&data)
|
Scan(&data)
|
||||||
return
|
return
|
||||||
@ -947,7 +1066,12 @@ func IncreasealanceInfoWithShop(startMonth string, endMonth string, startTime st
|
|||||||
bb.increase_data_analysis_number +
|
bb.increase_data_analysis_number +
|
||||||
bb.monthly_increase_limit_data_analysis_number +
|
bb.monthly_increase_limit_data_analysis_number +
|
||||||
bb.monthly_increase_limit_expired_data_analysis_number
|
bb.monthly_increase_limit_expired_data_analysis_number
|
||||||
) AS data_analysis
|
) AS data_analysis,
|
||||||
|
(
|
||||||
|
bb.increase_competitive_number +
|
||||||
|
bb.monthly_increase_limit_competitive_number +
|
||||||
|
bb.monthly_increase_limit_expired_competitive_number
|
||||||
|
) AS competitive
|
||||||
`). // 不限制类型的总数 + 限制不过期类型的当月可用 + 限制过期类型的当月可用 = 新增待上传数量
|
`). // 不限制类型的总数 + 限制不过期类型的当月可用 + 限制过期类型的当月可用 = 新增待上传数量
|
||||||
Joins("LEFT JOIN bundle_order_records bor ON bor.uuid = bb.order_uuid").
|
Joins("LEFT JOIN bundle_order_records bor ON bor.uuid = bb.order_uuid").
|
||||||
Joins(`INNER JOIN (
|
Joins(`INNER JOIN (
|
||||||
@ -975,7 +1099,8 @@ func IncreasealanceInfoWithShop(startMonth string, endMonth string, startTime st
|
|||||||
SUM(statistic.account) AS account,
|
SUM(statistic.account) AS account,
|
||||||
SUM(statistic.video) AS video,
|
SUM(statistic.video) AS video,
|
||||||
SUM(statistic.image) AS image,
|
SUM(statistic.image) AS image,
|
||||||
SUM(statistic.data_analysis) AS data_analysis
|
SUM(statistic.data_analysis) AS data_analysis,
|
||||||
|
SUM(statistic.competitive) AS competitive
|
||||||
`).
|
`).
|
||||||
Scan(&data)
|
Scan(&data)
|
||||||
return
|
return
|
||||||
@ -1026,7 +1151,17 @@ func getBundleBalanceInfo(month string, bundleUUID string, endTime string) (data
|
|||||||
bb.bundle_limit_data_analysis_expired_consumption_number -
|
bb.bundle_limit_data_analysis_expired_consumption_number -
|
||||||
bb.monthly_bundle_limit_expired_data_analysis_consumption_number -
|
bb.monthly_bundle_limit_expired_data_analysis_consumption_number -
|
||||||
bb.monthly_bundle_limit_data_analysis_consumption_number
|
bb.monthly_bundle_limit_data_analysis_consumption_number
|
||||||
) AS data_analysis
|
) AS data_analysis,
|
||||||
|
(
|
||||||
|
bb.bundle_competitive_number +
|
||||||
|
bb.monthly_bundle_limit_competitive_number +
|
||||||
|
bb.monthly_bundle_limit_expired_competitive_number +
|
||||||
|
bb.invalid_bundle_competitive_number +
|
||||||
|
bb.bundle_limit_competitive_consumption_number +
|
||||||
|
bb.bundle_limit_competitive_expired_consumption_number -
|
||||||
|
bb.monthly_bundle_limit_expired_competitive_consumption_number -
|
||||||
|
bb.monthly_bundle_limit_competitive_consumption_number
|
||||||
|
) AS competitive
|
||||||
`). // 不限制类型的总数 + 限制不过期类型的当月可用 + 限制过期类型的当月可用 + 限制不过期类型的总共已用 + 限制过期类型的总共已用 + 已过期的数量 = 总发放数
|
`). // 不限制类型的总数 + 限制不过期类型的当月可用 + 限制过期类型的当月可用 + 限制不过期类型的总共已用 + 限制过期类型的总共已用 + 已过期的数量 = 总发放数
|
||||||
Joins("LEFT JOIN bundle_order_records bor ON bor.uuid = bb.order_uuid").
|
Joins("LEFT JOIN bundle_order_records bor ON bor.uuid = bb.order_uuid").
|
||||||
Where("bor.deleted_at is null and bor.status=2").
|
Where("bor.deleted_at is null and bor.status=2").
|
||||||
@ -1062,6 +1197,7 @@ func getBundleBalanceInfo(month string, bundleUUID string, endTime string) (data
|
|||||||
SUM(statistic.video) AS video,
|
SUM(statistic.video) AS video,
|
||||||
SUM(statistic.image) AS image,
|
SUM(statistic.image) AS image,
|
||||||
SUM(statistic.data_analysis) AS data_analysis
|
SUM(statistic.data_analysis) AS data_analysis
|
||||||
|
SUM(statistic.competitive) AS competitive
|
||||||
`).
|
`).
|
||||||
Scan(&data)
|
Scan(&data)
|
||||||
return
|
return
|
||||||
@ -1101,7 +1237,17 @@ func getIncreaseBalanceInfo(month string, bundleUUID string, endTime string) (da
|
|||||||
bb.increase_limit_data_analysis_expired_consumption_number -
|
bb.increase_limit_data_analysis_expired_consumption_number -
|
||||||
bb.monthly_increase_limit_expired_data_analysis_consumption_number -
|
bb.monthly_increase_limit_expired_data_analysis_consumption_number -
|
||||||
bb.monthly_increase_limit_data_analysis_consumption_number
|
bb.monthly_increase_limit_data_analysis_consumption_number
|
||||||
) AS data_analysis
|
) AS data_analysis,
|
||||||
|
(
|
||||||
|
bb.increase_competitive_number +
|
||||||
|
bb.monthly_increase_limit_competitive_number +
|
||||||
|
bb.monthly_increase_limit_expired_competitive_number +
|
||||||
|
bb.invalid_increase_competitive_number +
|
||||||
|
bb.increase_limit_competitive_consumption_number +
|
||||||
|
bb.increase_limit_competitive_expired_consumption_number -
|
||||||
|
bb.monthly_increase_limit_expired_competitive_consumption_number -
|
||||||
|
bb.monthly_increase_limit_competitive_consumption_number
|
||||||
|
) AS competitive
|
||||||
`). // 不限制类型的总数 + 限制不过期类型的当月可用 + 限制过期类型的当月可用 + 限制不过期类型的总共已用 + 限制过期类型的总共已用 + 已过期的数量 = 总发放数
|
`). // 不限制类型的总数 + 限制不过期类型的当月可用 + 限制过期类型的当月可用 + 限制不过期类型的总共已用 + 限制过期类型的总共已用 + 已过期的数量 = 总发放数
|
||||||
Joins("LEFT JOIN bundle_order_records bor ON bor.uuid = bb.order_uuid").
|
Joins("LEFT JOIN bundle_order_records bor ON bor.uuid = bb.order_uuid").
|
||||||
Joins(`INNER JOIN (
|
Joins(`INNER JOIN (
|
||||||
@ -1136,7 +1282,8 @@ func getIncreaseBalanceInfo(month string, bundleUUID string, endTime string) (da
|
|||||||
SUM(statistic.account) AS account,
|
SUM(statistic.account) AS account,
|
||||||
SUM(statistic.video) AS video,
|
SUM(statistic.video) AS video,
|
||||||
SUM(statistic.image) AS image,
|
SUM(statistic.image) AS image,
|
||||||
SUM(statistic.data_analysis) AS data_analysis
|
SUM(statistic.data_analysis) AS data_analysis,
|
||||||
|
SUM(statistic.competitive) AS competitive
|
||||||
`).
|
`).
|
||||||
Scan(&data)
|
Scan(&data)
|
||||||
return
|
return
|
||||||
@ -1223,7 +1370,31 @@ func MetricsOperatingStatus(req *bundle.MetricsOperatingStatusReq) (data *bundle
|
|||||||
Where("ccal.operator_name = '系统自动确定'").
|
Where("ccal.operator_name = '系统自动确定'").
|
||||||
Where("cast_work_analysis.submit_time <= ?", req.Date+" 23:59:59").
|
Where("cast_work_analysis.submit_time <= ?", req.Date+" 23:59:59").
|
||||||
Count(&data.AutoConfirmDataAnalysisCount)
|
Count(&data.AutoConfirmDataAnalysisCount)
|
||||||
|
//================竞品数==================
|
||||||
|
var competitiveStatistic = func(status int8) (i int64) {
|
||||||
|
app.ModuleClients.BundleDB.Table("cast_competitive_report as ccr").Where("ccr.work_analysis_status = ?", status).Where("deleted_at = 0 and submit_time <= ?", req.Date+" 23:59:59").Count(&i)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
data.ReviewingCompetitiveCount = competitiveStatistic(2)
|
||||||
|
data.RejectCompetitiveCount = competitiveStatistic(3)
|
||||||
|
data.WaitConfirmCompetitiveCount = competitiveStatistic(4)
|
||||||
|
data.PendingUploadCompetitiveCount = competitiveStatistic(6)
|
||||||
|
data.UploadSuccessCompetitiveCount = competitiveStatistic(7)
|
||||||
|
|
||||||
|
app.ModuleClients.BundleDB.Table("cast_competitive_report as ccr").
|
||||||
|
Joins("left join cast_cost_competitive_report_log cccrl on cccrl.report_uuid = ccr.uuid AND cccrl.deleted_at = 0").
|
||||||
|
Where("ccr.work_report_status in ?", []int{6, 7}).
|
||||||
|
Where("ccr.submit_time <= ?", req.Date+" 23:59:59").
|
||||||
|
Where("cccl.operator_name != '系统自动确定'").
|
||||||
|
Where("ccr.deleted_at = 0").
|
||||||
|
Count(&data.ArtistConfirmCompetitiveCount)
|
||||||
|
app.ModuleClients.BundleDB.Table("cast_competitive_report as ccr").
|
||||||
|
Joins("left join cast_cost_competitive_report_log cccrl on cccrl.report_uuid = ccr.uuid AND cccrl.deleted_at = 0").
|
||||||
|
Where("ccr.work_report_status in ?", []int{6, 7}).
|
||||||
|
Where("ccr.submit_time <= ?", req.Date+" 23:59:59").
|
||||||
|
Where("cccl.operator_name = '系统自动确定'").
|
||||||
|
Where("ccr.deleted_at = 0").
|
||||||
|
Count(&data.AutoConfirmCompetitiveCount)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1322,7 +1493,7 @@ func MetricsArtistAccountExport(req *bundle.MetricsArtistAccountExportReq) (*bun
|
|||||||
subQuery := app.ModuleClients.BundleDB.Table("cast_media_account").
|
subQuery := app.ModuleClients.BundleDB.Table("cast_media_account").
|
||||||
Select("artist_uuid,any_value(artist_name) as artist_name,any_value(created_at) as created_at").
|
Select("artist_uuid,any_value(artist_name) as artist_name,any_value(created_at) as created_at").
|
||||||
Group("artist_uuid").
|
Group("artist_uuid").
|
||||||
Where("deleted_at = 0 and expired = 1")
|
Where("deleted_at = 0 and expired != 2")
|
||||||
//如果选择了月份
|
//如果选择了月份
|
||||||
if len(req.Month) > 0 {
|
if len(req.Month) > 0 {
|
||||||
// 构建多个月份的时间范围条件(使用 OR 连接)
|
// 构建多个月份的时间范围条件(使用 OR 连接)
|
||||||
@ -1369,15 +1540,15 @@ func MetricsArtistAccountExport(req *bundle.MetricsArtistAccountExportReq) (*bun
|
|||||||
cma.artist_name,
|
cma.artist_name,
|
||||||
bor.customer_num as user_num
|
bor.customer_num as user_num
|
||||||
`).
|
`).
|
||||||
Joins(`left join (SELECT * FROM cast_media_account where platform_id = 1 and deleted_at = 0 and expired = 1) tiktok on tiktok.artist_uuid = cma.artist_uuid`).
|
Joins(`left join (SELECT * FROM cast_media_account where platform_id = 1 and deleted_at = 0 and expired != 2) tiktok on tiktok.artist_uuid = cma.artist_uuid`).
|
||||||
Joins(`left join (Select * from cast_media_auth where platform_id = 1 and deleted_at = 0 ) tiktok_auth on tiktok_auth.user_id = tiktok.user_id`).
|
Joins(`left join (Select * from cast_media_auth where platform_id = 1 and deleted_at = 0 ) tiktok_auth on tiktok_auth.user_id = tiktok.user_id`).
|
||||||
Joins(`left join (SELECT * FROM cast_media_account where platform_id = 4 and deleted_at = 0 and expired = 1) dm on dm.artist_uuid = cma.artist_uuid`).
|
Joins(`left join (SELECT * FROM cast_media_account where platform_id = 4 and deleted_at = 0 and expired != 2) dm on dm.artist_uuid = cma.artist_uuid`).
|
||||||
Joins(`left join (Select * from cast_media_auth where platform_id = 4 and deleted_at = 0) dm_auth on dm_auth.user_id = dm.user_id`).
|
Joins(`left join (Select * from cast_media_auth where platform_id = 4 and deleted_at = 0) dm_auth on dm_auth.user_id = dm.user_id`).
|
||||||
Joins(`left join (SELECT * FROM cast_media_account where platform_id = 3 and deleted_at = 0 and expired = 1) ins on ins.artist_uuid = cma.artist_uuid`).
|
Joins(`left join (SELECT * FROM cast_media_account where platform_id = 3 and deleted_at = 0 and expired != 2) ins on ins.artist_uuid = cma.artist_uuid`).
|
||||||
Joins(`left join (Select * from cast_media_auth where platform_id = 3 and deleted_at = 0) ins_auth on ins_auth.user_id = ins.user_id`).
|
Joins(`left join (Select * from cast_media_auth where platform_id = 3 and deleted_at = 0) ins_auth on ins_auth.user_id = ins.user_id`).
|
||||||
Joins(`left join (Select * from cast_media_account where platform_id = 2 and deleted_at = 0 and expired = 1) youtube on youtube.artist_uuid = cma.artist_uuid`).
|
Joins(`left join (Select * from cast_media_account where platform_id = 2 and deleted_at = 0 and expired != 2) youtube on youtube.artist_uuid = cma.artist_uuid`).
|
||||||
Joins(`left join (Select * from cast_media_auth where platform_id = 2 and deleted_at = 0) youtube_auth on youtube_auth.user_id = youtube.user_id`).
|
Joins(`left join (Select * from cast_media_auth where platform_id = 2 and deleted_at = 0) youtube_auth on youtube_auth.user_id = youtube.user_id`).
|
||||||
Joins(`left join (Select * from cast_media_account where platform_id = 5 and deleted_at = 0 and expired = 1) bluesky on bluesky.artist_uuid = cma.artist_uuid`).
|
Joins(`left join (Select * from cast_media_account where platform_id = 5 and deleted_at = 0 and expired != 2) bluesky on bluesky.artist_uuid = cma.artist_uuid`).
|
||||||
Joins(`left join (Select * from cast_media_auth where platform_id = 5 and deleted_at = 0) bluesky_auth on bluesky_auth.user_id = bluesky.user_id`).
|
Joins(`left join (Select * from cast_media_auth where platform_id = 5 and deleted_at = 0) bluesky_auth on bluesky_auth.user_id = bluesky.user_id`).
|
||||||
Joins(`left join bundle_order_records bor on bor.customer_id COLLATE utf8mb4_general_ci= cma.artist_uuid COLLATE utf8mb4_general_ci`).
|
Joins(`left join bundle_order_records bor on bor.customer_id COLLATE utf8mb4_general_ci= cma.artist_uuid COLLATE utf8mb4_general_ci`).
|
||||||
Where("bor.deleted_at is null")
|
Where("bor.deleted_at is null")
|
||||||
@ -1394,11 +1565,11 @@ func MetricsVideoSubmitExport(req *bundle.MetricsVideoSubmitExportReq) (result *
|
|||||||
if len(req.Month) == 0 {
|
if len(req.Month) == 0 {
|
||||||
query = app.ModuleClients.BundleDB.Table("cast_work AS cw").
|
query = app.ModuleClients.BundleDB.Table("cast_work AS cw").
|
||||||
Select(`cw.artist_name ,
|
Select(`cw.artist_name ,
|
||||||
cw.title as video_title,
|
cw.title as video_title,
|
||||||
tiktok.created_at as tiktok_upload_time,
|
tiktok.created_at as tiktok_upload_time,
|
||||||
dm.created_at as dm_upload_time,
|
dm.created_at as dm_upload_time,
|
||||||
ins.created_at as instagram_upload_time,
|
ins.created_at as instagram_upload_time,
|
||||||
bor.customer_num as user_num`).
|
bor.customer_num as user_num`).
|
||||||
Joins("left join (select created_at,work_uuid from cast_work_platform_info cwi where cwi.platform_id = 1) tiktok on tiktok.work_uuid = cw.uuid").
|
Joins("left join (select created_at,work_uuid from cast_work_platform_info cwi where cwi.platform_id = 1) tiktok on tiktok.work_uuid = cw.uuid").
|
||||||
Joins("left join (select created_at,work_uuid from cast_work_platform_info cwi where cwi.platform_id = 4) dm on dm.work_uuid = cw.uuid").
|
Joins("left join (select created_at,work_uuid from cast_work_platform_info cwi where cwi.platform_id = 4) dm on dm.work_uuid = cw.uuid").
|
||||||
Joins("left join (select created_at,work_uuid from cast_work_platform_info cwi where cwi.platform_id = 3) ins on ins.work_uuid = cw.uuid").
|
Joins("left join (select created_at,work_uuid from cast_work_platform_info cwi where cwi.platform_id = 3) ins on ins.work_uuid = cw.uuid").
|
||||||
@ -1473,10 +1644,12 @@ func getRangeMonthlyRelease(startTime time.Time, endTime time.Time, bundleUuid s
|
|||||||
bundleBalanceInfo.Video += b.Video
|
bundleBalanceInfo.Video += b.Video
|
||||||
bundleBalanceInfo.Image += b.Image
|
bundleBalanceInfo.Image += b.Image
|
||||||
bundleBalanceInfo.DataAnalysis += b.DataAnalysis
|
bundleBalanceInfo.DataAnalysis += b.DataAnalysis
|
||||||
|
bundleBalanceInfo.Competitive += b.Competitive
|
||||||
// increaseBalanceInfo.Account += i.Account
|
// increaseBalanceInfo.Account += i.Account
|
||||||
increaseBalanceInfo.Video += i.Video
|
increaseBalanceInfo.Video += i.Video
|
||||||
increaseBalanceInfo.Image += i.Image
|
increaseBalanceInfo.Image += i.Image
|
||||||
increaseBalanceInfo.DataAnalysis += i.DataAnalysis
|
increaseBalanceInfo.DataAnalysis += i.DataAnalysis
|
||||||
|
increaseBalanceInfo.Competitive += i.Competitive
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -1520,6 +1693,8 @@ func getMonthlyRelease(month string, bundleUuid string) (bundleBalanceInfo Balan
|
|||||||
increaseBalanceInfo.Image += (cal(item, item.IncreaseLimitImageNumber, item.MonthlyLimitImageQuotaNumber, t) + cal(item, item.IncreaseLimitImageExpiredNumber, item.MonthlyLimitImageQuotaNumber, t))
|
increaseBalanceInfo.Image += (cal(item, item.IncreaseLimitImageNumber, item.MonthlyLimitImageQuotaNumber, t) + cal(item, item.IncreaseLimitImageExpiredNumber, item.MonthlyLimitImageQuotaNumber, t))
|
||||||
bundleBalanceInfo.DataAnalysis += (cal(item, item.BundleLimitDataAnalysisNumber, item.MonthlyLimitDataAnalysisQuotaNumber, t) + cal(item, item.BundleLimitDataAnalysisExpiredNumber, item.MonthlyLimitDataAnalysisQuotaNumber, t))
|
bundleBalanceInfo.DataAnalysis += (cal(item, item.BundleLimitDataAnalysisNumber, item.MonthlyLimitDataAnalysisQuotaNumber, t) + cal(item, item.BundleLimitDataAnalysisExpiredNumber, item.MonthlyLimitDataAnalysisQuotaNumber, t))
|
||||||
increaseBalanceInfo.DataAnalysis += (cal(item, item.IncreaseLimitDataAnalysisNumber, item.MonthlyLimitDataAnalysisQuotaNumber, t) + cal(item, item.IncreaseLimitDataAnalysisExpiredNumber, item.MonthlyLimitDataAnalysisQuotaNumber, t))
|
increaseBalanceInfo.DataAnalysis += (cal(item, item.IncreaseLimitDataAnalysisNumber, item.MonthlyLimitDataAnalysisQuotaNumber, t) + cal(item, item.IncreaseLimitDataAnalysisExpiredNumber, item.MonthlyLimitDataAnalysisQuotaNumber, t))
|
||||||
|
bundleBalanceInfo.Competitive += (qua(item, item.BundleLimitCompetitiveNumber, item.MonthlyLimitCompetitiveQuotaNumber, t) + qua(item, item.BundleLimitCompetitiveExpiredNumber, item.MonthlyLimitCompetitiveQuotaNumber, t))
|
||||||
|
increaseBalanceInfo.Competitive += (qua(item, item.IncreaseLimitCompetitiveNumber, item.MonthlyLimitCompetitiveQuotaNumber, t) + qua(item, item.IncreaseLimitCompetitiveExpiredNumber, item.MonthlyLimitCompetitiveQuotaNumber, t))
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -1546,3 +1721,28 @@ func cal(data model.BundleBalance, total, limit int, date time.Time) int {
|
|||||||
}
|
}
|
||||||
return min(limit, remaining)
|
return min(limit, remaining)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 计算每个季度发放的数目
|
||||||
|
func qua(data model.BundleBalance, total, limit int, date time.Time) int {
|
||||||
|
var released int // 已释放的次数
|
||||||
|
if data.StartAt.Month() == date.Month() && data.StartAt.Year() == date.Year() {
|
||||||
|
} else if data.StartAt.Day() >= 16 { //第一个月释放的
|
||||||
|
released += (limit + 1) / 2
|
||||||
|
} else {
|
||||||
|
released += limit
|
||||||
|
}
|
||||||
|
interval := max((date.Year()*12+int(date.Month())-(data.StartAt.Year()*12+int(data.StartAt.Month())))/3, 1) // 释放了多少个季度
|
||||||
|
released += max(interval-1, 0) * limit // 已经释放的数量
|
||||||
|
remaining := max(total-released, 0) // 还剩余多少次没有发放
|
||||||
|
if data.StartAt.Month() == date.Month() && data.StartAt.Year() == date.Year() && data.StartAt.Day() >= 16 { // 本月为第一个月并且16号后购买只给一半(向上取整)
|
||||||
|
return min((limit+1)/2, remaining)
|
||||||
|
}
|
||||||
|
if data.ExpiredAt.Month() == date.Month() && data.ExpiredAt.Year() == date.Year() && data.ExpiredAt.Day() < 16 { // 本月为最后一个季度第一个月并且16号前到期只给一半(向下取整)
|
||||||
|
return min(limit/2, remaining)
|
||||||
|
}
|
||||||
|
monthDiff := date.Year()*12 + int(date.Month()) - (data.StartAt.Year()*12 + int(data.StartAt.Month()))
|
||||||
|
if monthDiff%3 == 0 && data.ExpiredAt.Month() != date.Month() {
|
||||||
|
return min(limit, remaining)
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|||||||
@ -414,6 +414,7 @@ type ManualIncreaseBundleBalance struct {
|
|||||||
TotalVideoAdditional int `gorm:"column:total_video_additional"`
|
TotalVideoAdditional int `gorm:"column:total_video_additional"`
|
||||||
TotalImageAdditional int `gorm:"column:total_image_additional"`
|
TotalImageAdditional int `gorm:"column:total_image_additional"`
|
||||||
TotalDataAnalysisAdditional int `gorm:"column:total_data_analysis_additional"`
|
TotalDataAnalysisAdditional int `gorm:"column:total_data_analysis_additional"`
|
||||||
|
TotalCompetitiveAdditional int `gorm:"column:total_competitive_additional"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// 套餐购买导出
|
// 套餐购买导出
|
||||||
|
|||||||
@ -1708,6 +1708,11 @@ message MetricsBusinessResp {
|
|||||||
int64 newUploadedDataAnalysisCount = 30; // 新增已上传的数据分析数
|
int64 newUploadedDataAnalysisCount = 30; // 新增已上传的数据分析数
|
||||||
int64 newPendingUploadDataAnalysisCount = 31; // 新增待上传的数据分析数
|
int64 newPendingUploadDataAnalysisCount = 31; // 新增待上传的数据分析数
|
||||||
int64 totalPendingUploadDataAnalysisCount = 32; // 总待上传的数据分析数
|
int64 totalPendingUploadDataAnalysisCount = 32; // 总待上传的数据分析数
|
||||||
|
|
||||||
|
// ====== 竞品数统计 ======
|
||||||
|
int64 newUploadedCompetitiveCount = 33; // 新增已上传的竞品数
|
||||||
|
int64 newPendingUploadCompetitiveCount = 34; // 新增待上传的竞品数
|
||||||
|
int64 totalPendingUploadCompetitiveCount = 35; // 总待上传的竞品数
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1752,6 +1757,16 @@ message MetricsOperatingCreateResp {
|
|||||||
int64 newUploadedIncreaseDataAnalysisCount = 26; // 新增已做增值数据数
|
int64 newUploadedIncreaseDataAnalysisCount = 26; // 新增已做增值数据数
|
||||||
int64 totalUploadedBundleDataAnalysisCount = 27; // 总已做套餐数据数截止
|
int64 totalUploadedBundleDataAnalysisCount = 27; // 总已做套餐数据数截止
|
||||||
int64 totalUploadedIncreaseDataAnalysisCount = 28; // 总已做增值数据数截止
|
int64 totalUploadedIncreaseDataAnalysisCount = 28; // 总已做增值数据数截止
|
||||||
|
|
||||||
|
// ======================== 套餐/增值竞品数 ========================
|
||||||
|
int64 newPendingUploadBundleCompetitiveCount = 29; // 新增待上传套餐竞品数
|
||||||
|
int64 newPendingUploadIncreaseCompetitiveCount = 30; // 新增待上传增值竞品数
|
||||||
|
int64 totalPendingUploadBundleCompetitiveCount = 31; // 总待上传套餐竞品数截止
|
||||||
|
int64 totalPendingUploadIncreaseCompetitiveCount = 32; // 总待上传增值竞品数截止
|
||||||
|
int64 newUploadedBundleCompetitiveCount = 33; // 新增已上传套餐竞品数
|
||||||
|
int64 newUploadedIncreaseCompetitiveCount = 34; // 新增已上传增值竞品数
|
||||||
|
int64 totalUploadedBundleCompetitiveCount = 35; // 总已上传套餐竞品数截止
|
||||||
|
int64 totalUploadedIncreaseCompetitiveCount = 36; // 总已上传增值竞品数截止
|
||||||
}
|
}
|
||||||
|
|
||||||
message MetricsOperatingStatusReq{
|
message MetricsOperatingStatusReq{
|
||||||
@ -1790,8 +1805,18 @@ message MetricsOperatingStatusResp {
|
|||||||
int64 pendingUploadDataAnalysisCount = 24;// 待发布数据数
|
int64 pendingUploadDataAnalysisCount = 24;// 待发布数据数
|
||||||
int64 uploadSuccessDataAnalysisCount = 25;// 发布成功数据数
|
int64 uploadSuccessDataAnalysisCount = 25;// 发布成功数据数
|
||||||
int64 uploadFailedDataAnalysisCount = 26;// 发布异常数据数
|
int64 uploadFailedDataAnalysisCount = 26;// 发布异常数据数
|
||||||
|
|
||||||
|
// ===== 竞品数 =====
|
||||||
|
int64 reviewingCompetitiveCount = 27; // 审核中竞品数
|
||||||
|
int64 rejectCompetitiveCount = 28; // 已驳回竞品数
|
||||||
|
int64 waitConfirmCompetitiveCount = 29; // 待艺人确认竞品数
|
||||||
|
int64 artistConfirmCompetitiveCount = 30; // 艺人已验收确认竞品数
|
||||||
|
int64 autoConfirmCompetitiveCount = 31; // 系统已自动确认竞品数
|
||||||
|
int64 pendingUploadCompetitiveCount = 32; // 待发布竞品数
|
||||||
|
int64 uploadSuccessCompetitiveCount = 33; // 发布成功竞品数
|
||||||
|
int64 uploadFailedCompetitiveCount = 34; // 发布异常竞品数
|
||||||
|
|
||||||
int64 abnormalAccountAcount = 27; // 触发预警的账号数
|
int64 abnormalAccountAcount = 35; // 触发预警的账号数
|
||||||
}
|
}
|
||||||
|
|
||||||
message MetricsBundlePurchaseExportReq{
|
message MetricsBundlePurchaseExportReq{
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user