package taskbench import ( "context" "fmt" "fonchain-fiee/api/accountFiee" "fonchain-fiee/api/bundle" "fonchain-fiee/api/cast" "fonchain-fiee/cmd/config" modelCast "fonchain-fiee/pkg/model/cast" "fonchain-fiee/pkg/model/login" "fonchain-fiee/pkg/service" castService "fonchain-fiee/pkg/service/cast" "strconv" "github.com/gin-gonic/gin" "go.uber.org/zap" ) // GetPendingTaskList 查询待指派任务记录 func GetPendingTaskList(c *gin.Context) { var req bundle.TaskQueryRequest if err := c.ShouldBindJSON(&req); err != nil { service.Error(c, err) return } res, err := service.BundleProvider.GetPendingTaskList(context.Background(), &req) if err != nil { service.Error(c, err) return } service.Success(c, res) } // AssignTask 指派某位员工完成某个艺人的任务 func AssignTask(c *gin.Context) { var req bundle.TaskAssignRequest userInfo := login.GetUserInfoFromC(c) req.OperatorNum = userInfo.TelNum req.Operator = userInfo.Name if err := c.ShouldBindJSON(&req); err != nil { service.Error(c, err) return } res, err := service.BundleProvider.AssignTask(context.Background(), &req) if err != nil { service.Error(c, err) return } service.Success(c, res) } // UpdatePendingCount 修改待发数量 func UpdatePendingCount(c *gin.Context) { var req bundle.UpdatePendingCountRequest if err := c.ShouldBindJSON(&req); err != nil { service.Error(c, err) return } res, err := service.BundleProvider.UpdatePendingCount(context.Background(), &req) if err != nil { service.Error(c, err) return } service.Success(c, res) } // GetRecentAssignRecords 查询最近被指派记录 func GetRecentAssignRecords(c *gin.Context) { var req bundle.RecentAssignRecordsRequest if err := c.ShouldBindJSON(&req); err != nil { service.Error(c, err) return } res, err := service.BundleProvider.GetRecentAssignRecords(context.Background(), &req) if err != nil { service.Error(c, err) return } service.Success(c, res) } // GetEmployeeAssignedTasks 根据登录人信息查询被指派给该员工的任务 func GetEmployeeAssignedTasks(c *gin.Context) { var req bundle.EmployeeTaskQueryRequest userInfo := login.GetUserInfoFromC(c) req.TaskAssigneeNum = userInfo.TelNum if err := c.ShouldBindJSON(&req); err != nil { service.Error(c, err) return } res, err := service.BundleProvider.GetEmployeeAssignedTasks(context.Background(), &req) if err != nil { service.Error(c, err) return } service.Success(c, res) } // CompleteTaskManually 员工手动点击完成任务 func CompleteTaskManually(c *gin.Context) { var req bundle.CompleteTaskManuallyRequest userInfo := login.GetUserInfoFromC(c) req.TaskAssigneeNum = userInfo.TelNum if err := c.ShouldBindJSON(&req); err != nil { service.Error(c, err) return } res, err := service.BundleProvider.CompleteTaskManually(context.Background(), &req) if err != nil { service.Error(c, err) return } service.Success(c, res) } // UpdateTaskProgress 员工实际完成任务状态更新 func UpdateTaskProgress(c *gin.Context) { var req bundle.UpdateTaskProgressRequest if err := c.ShouldBindJSON(&req); err != nil { service.Error(c, err) return } res, err := service.BundleProvider.UpdateTaskProgress(context.Background(), &req) if err != nil { service.Error(c, err) return } service.Success(c, res) } // GetTaskAssignRecordsList 多条件查询操作记录表 func GetTaskAssignRecordsList(c *gin.Context) { var req bundle.TaskAssignRecordsQueryRequest if err := c.ShouldBindJSON(&req); err != nil { service.Error(c, err) return } // 添加空指针检查 if service.BundleProvider == nil { service.Error(c, fmt.Errorf("BundleProvider is not initialized")) return } res, err := service.BundleProvider.GetTaskAssignRecordsList(context.Background(), &req) if err != nil { service.Error(c, err) return } service.Success(c, res) } type UpdateWorkVideoWithUUIDReq struct { *cast.UpdateWorkVideoReq AssignRecordsUUID string `json:"assignRecordsUUID"` } type UpdateWorkImageWithTaskUUIDReq struct { *cast.UpdateWorkImageReq AssignRecordsUUID string `json:"assignRecordsUUID"` } func UpdateWorkImageWithTaskUUID(ctx *gin.Context) { var req UpdateWorkImageWithTaskUUIDReq var infoResp *accountFiee.UserInfoResponse var err error if err = ctx.ShouldBind(&req); err != nil { service.Error(ctx, err) return } if config.AppConfig.System.AppMode != "dev" { artistId, _ := strconv.ParseUint(req.ArtistUuid, 10, 64) infoResp, err = service.AccountFieeProvider.Info(context.Background(), &accountFiee.InfoRequest{ ID: artistId, Domain: "app", }) if err != nil { service.Error(ctx, err) return } } else { infoResp = &accountFiee.UserInfoResponse{ Name: "小波", TelNum: "18288888888", TelAreaCode: "86", } } req.ArtistName = infoResp.Name req.ArtistPhone = infoResp.TelNum req.ArtistPhoneAreaCode = infoResp.TelAreaCode artistID, _ := strconv.ParseUint(req.ArtistUuid, 10, 64) if err = castService.CheckUserBundleBalance(int32(artistID), modelCast.BalanceTypeImageValue); err != nil { service.Error(ctx, err) return } newCtx := castService.NewCtxWithUserInfo(ctx) req.Source = 1 resp, err := service.CastProvider.UpdateWorkImage(newCtx, req.UpdateWorkImageReq) if err != nil { service.Error(ctx, err) return } // 调用员工实际任务状态更新 resp1, err := service.BundleProvider.UpdateTaskProgress(context.Background(), &bundle.UpdateTaskProgressRequest{ AssignRecordsUUID: req.AssignRecordsUUID, EmployeeName: infoResp.Name, EmployeeNum: infoResp.TelNum, // 需要根据实际业务逻辑填充员工工号 TaskType: "post", CompleteCount: 1, }) if err != nil { service.Error(ctx, err) return } zap.L().Info("UpdateTaskProgress", zap.Any("resp", resp1)) service.Success(ctx, resp) return } func UpdateWorkVideoWithUUID(ctx *gin.Context) { var req UpdateWorkVideoWithUUIDReq var infoResp *accountFiee.UserInfoResponse var err error if err = ctx.ShouldBind(&req); err != nil { service.Error(ctx, err) return } if config.AppConfig.System.AppMode != "dev" { artistId, _ := strconv.ParseUint(req.ArtistUuid, 10, 64) infoResp, err = service.AccountFieeProvider.Info(context.Background(), &accountFiee.InfoRequest{ ID: artistId, Domain: "app", }) if err != nil { service.Error(ctx, err) return } } else { infoResp = &accountFiee.UserInfoResponse{ Name: "小波", TelNum: "18288888888", TelAreaCode: "86", } } artistID, _ := strconv.ParseUint(req.ArtistUuid, 10, 64) if err = castService.CheckUserBundleBalance(int32(artistID), modelCast.BalanceTypeVideoValue); err != nil { service.Error(ctx, err) return } req.ArtistName = infoResp.Name req.ArtistPhone = infoResp.TelNum req.ArtistPhoneAreaCode = infoResp.TelAreaCode newCtx := castService.NewCtxWithUserInfo(ctx) req.Source = 1 resp, err := service.CastProvider.UpdateWorkVideo(newCtx, req.UpdateWorkVideoReq) if err != nil { service.Error(ctx, err) return } // 调用员工实际任务状态更新 resp1, err := service.BundleProvider.UpdateTaskProgress(context.Background(), &bundle.UpdateTaskProgressRequest{ AssignRecordsUUID: req.AssignRecordsUUID, EmployeeName: infoResp.Name, EmployeeNum: infoResp.TelNum, // 需要根据实际业务逻辑填充员工工号 TaskType: "video", CompleteCount: 1, }) if err != nil { service.Error(ctx, err) return } zap.L().Info("UpdateTaskProgress", zap.Any("resp", resp1)) service.Success(ctx, resp) return } // GetArtistBundleBalance 查询艺人套餐剩余数量 func GetArtistBundleBalance(c *gin.Context) { var req bundle.ArtistBundleBalanceRequest if err := c.ShouldBindJSON(&req); err != nil { service.Error(c, err) return } res, err := service.BundleProvider.GetArtistBundleBalance(context.Background(), &req) if err != nil { service.Error(c, err) return } service.Success(c, res) }