@ -349,6 +349,10 @@ type ArtistUploadStatsItem struct {
TaskAssigneeNum string ` json:"taskAssigneeNum" gorm:"column:task_assignee_num" `
ProgressTaskCount int ` json:"progressTaskCount" gorm:"column:progress_task_count" `
CompleteTaskCount int ` json:"completeTaskCount" gorm:"column:complete_task_count" `
// 脚本
UploadedVideoScriptCount int ` json:"uploadedVideoScriptCount" gorm:"column:uploaded_video_script_count" `
PendingVideoScriptCount int ` json:"pendingVideoScriptCount" gorm:"column:pending_video_script_count" `
}
// buildReleasedExpr 构建“截至当前时间的限制型累计释放量”SQL表达式( 返回字符串供 SELECT 使用)
@ -422,30 +426,32 @@ func GetArtistUploadStatsList(req *TaskQueryRequest) ([]*ArtistUploadStatsItem,
rn . name as user_name ,
u . tel_num as user_phone_number ,
bor . customer_num ,
( SELECT COUNT ( 1 ) FROM cast_work cw WHERE cw . artist_phone = u . tel_num AND cw . deleted_at = 0 AND cw . work_category = 2 ) AS uploaded_video_count ,
( SELECT COUNT ( 1 ) FROM cast_work cw WHERE cw . artist_phone = u . tel_num AND cw . deleted_at = 0 AND cw . work_category = 1 ) AS uploaded_post_count ,
( SELECT COUNT ( 1 ) FROM cast_work_analysis cwa WHERE cwa . artist_phone = u . tel_num AND cwa . deleted_at = 0 ) AS uploaded_data_count ,
( SELECT COUNT ( 1 ) FROM cast_work cw WHERE cw . artist_phone = u . tel_num AND cw . deleted_at = 0 AND cw . work_category = 2 AND cw . submit_time >= bb . start_at AND cw . submit_time <= bb . expired_at ) AS uploaded_video_count ,
( SELECT COUNT ( 1 ) FROM cast_video_script cvs WHERE CAST ( bb . user_id AS CHAR ) COLLATE utf8mb4_general_ci = cvs . artist_uuid COLLATE utf8mb4_general_ci AND cvs . deleted_at = 0 AND FROM_UNIXTIME ( cvs . created_at ) >= bb . start_at AND FROM_UNIXTIME ( cvs . created_at ) <= bb . expired_at ) AS uploaded_video_script_count ,
( SELECT COUNT ( 1 ) FROM cast_work cw WHERE cw . artist_phone = u . tel_num AND cw . deleted_at = 0 AND cw . work_category = 1 AND cw . submit_time >= bb . start_at AND cw . submit_time <= bb . expired_at ) AS uploaded_post_count ,
( SELECT COUNT ( 1 ) FROM cast_work_analysis cwa WHERE cwa . artist_phone = u . tel_num AND cwa . deleted_at = 0 AND cwa . submit_time >= bb . start_at AND cwa . submit_time <= bb . expired_at ) AS uploaded_data_count ,
( bb . bundle_video_number + bb . bundle_limit_video_number + bb . bundle_limit_video_expired_number ) AS bundle_video_total ,
% s AS increase_video_total ,
% s AS released_video_total ,
GREATEST ( % s - ( SELECT COUNT ( 1 ) FROM cast_work cw WHERE cw . artist_phone = u . tel_num AND cw . deleted_at = 0 AND cw . work_category = 2 ) , 0 ) AS pending_video_count ,
GREATEST ( % s - ( SELECT COUNT ( 1 ) FROM cast_work cw WHERE cw . artist_phone = u . tel_num AND cw . deleted_at = 0 AND cw . work_category = 2 AND cw . submit_time >= bb . start_at AND cw . submit_time <= bb . expired_at ) , 0 ) AS pending_video_count ,
GREATEST ( % s - ( SELECT COUNT ( 1 ) FROM cast_video_script cvs WHERE CAST ( bb . user_id AS CHAR ) COLLATE utf8mb4_general_ci = cvs . artist_uuid COLLATE utf8mb4_general_ci AND cvs . deleted_at = 0 AND cvs . created_at >= bb . start_at AND cvs . created_at <= bb . expired_at ) , 0 ) AS pending_video_script_count ,
( bb . bundle_image_number + bb . bundle_limit_image_number + bb . bundle_limit_image_expired_number ) AS bundle_post_total ,
% s AS increase_post_total ,
% s AS released_post_total ,
GREATEST ( % s - ( SELECT COUNT ( 1 ) FROM cast_work cw WHERE cw . artist_phone = u . tel_num AND cw . deleted_at = 0 AND cw . work_category = 1 ) , 0 ) AS pending_post_count ,
GREATEST ( % s - ( SELECT COUNT ( 1 ) FROM cast_work cw WHERE cw . artist_phone = u . tel_num AND cw . deleted_at = 0 AND cw . work_category = 1 AND cw . submit_time >= bb . start_at AND cw . submit_time <= bb . expired_at ) , 0 ) AS pending_post_count ,
( bb . bundle_data_analysis_number + bb . bundle_limit_data_analysis_number + bb . bundle_limit_data_analysis_expired_number ) AS bundle_data_total ,
% s AS increase_data_total ,
% s AS released_data_total ,
GREATEST ( % s - ( SELECT COUNT ( 1 ) FROM cast_work_analysis cwa WHERE cwa . artist_phone = u . tel_num AND cwa . deleted_at = 0 ) , 0 ) AS pending_data_count ,
GREATEST ( % s - ( SELECT COUNT ( 1 ) FROM cast_work_analysis cwa WHERE cwa . artist_phone = u . tel_num AND cwa . deleted_at = 0 AND FROM_UNIXTIME ( cwa . submit_time ) >= bb . start_at AND FROM_UNIXTIME ( cwa . submit_time ) <= bb . expired_at ) , 0 ) AS pending_data_count ,
tm . last_task_assignee ,
tm . task_assignee_num ,
tm . progress_count AS progress_task_count ,
tm . complete_count AS complete_task_count
` , increaseVideoTotal , releasedVideoTotal , releasedVideoTotal , increaseImageTotal, releasedImageTotal , releasedImageTotal , increaseDataTotal , releasedDataTotal , releasedDataTotal )
` , increaseVideoTotal , releasedVideoTotal , releasedVideoTotal , releasedVideoTotal, increaseImageTotal, releasedImageTotal , releasedImageTotal , increaseDataTotal , releasedDataTotal , releasedDataTotal )
// 构建基础查询(用于列表与总数)
base := app . ModuleClients . BundleDB . Table ( "`micro-account`.`user` AS u" ) . Unscoped ( ) .
@ -491,28 +497,30 @@ func GetArtistUploadStatsList(req *TaskQueryRequest) ([]*ArtistUploadStatsItem,
sortType = "DESC"
}
allowed := map [ string ] bool {
"user_name" : true ,
"user_phone_number" : true ,
"customer_num" : true ,
"uploaded_video_count" : true ,
"uploaded_post_count" : true ,
"uploaded_data_count" : true ,
"bundle_video_total" : true ,
"increase_video_total" : true ,
"released_video_total" : true ,
"pending_video_count" : true ,
"bundle_post_total" : true ,
"increase_post_total" : true ,
"released_post_total" : true ,
"pending_post_count" : true ,
"bundle_data_total" : true ,
"increase_data_total" : true ,
"released_data_total" : true ,
"pending_data_count" : true ,
"last_task_assignee" : true ,
"task_assignee_num" : true ,
"progress_task_count" : true ,
"complete_task_count" : true ,
"user_name" : true ,
"user_phone_number" : true ,
"customer_num" : true ,
"uploaded_video_count" : true ,
"uploaded_video_script_count" : true ,
"uploaded_post_count" : true ,
"uploaded_data_count" : true ,
"bundle_video_total" : true ,
"increase_video_total" : true ,
"released_video_total" : true ,
"pending_video_count" : true ,
"pending_video_script_count" : true ,
"bundle_post_total" : true ,
"increase_post_total" : true ,
"released_post_total" : true ,
"pending_post_count" : true ,
"bundle_data_total" : true ,
"increase_data_total" : true ,
"released_data_total" : true ,
"pending_data_count" : true ,
"last_task_assignee" : true ,
"task_assignee_num" : true ,
"progress_task_count" : true ,
"complete_task_count" : true ,
}
if allowed [ req . SortBy ] {
orderClause = fmt . Sprintf ( "%s %s" , req . SortBy , sortType )