package com.liquidnet.service.goblin.controller.Inner;

import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.goblin.service.IGoblinSqbService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

/**
 * 收钱吧定时任务入口（供 executor 服务通过 Feign 调用）
 *
 * xxl-job 配置说明（Task 11.4 运维配置）：
 *   - 在 xxl-job 平台新增定时任务
 *   - JobHandler：sev-goblin:sqbAutoRefund（接口走 rsc/** 免登录，与 NFT job 一致）
 *   - CRON：按演出结束时间触发（如演出结束后 5 分钟：0 5 * * * ?，具体由运维根据演出时间动态配置）
 *   - 执行器：liquidnet-service-executor
 *   - 任务参数：演出ID 或 performancesId=xxx；留空则处理全库候选（演出结束已支付 / 退款中超8小时，慎用）
 *   - 路由策略：第一个
 */
@Slf4j
@Api(tags = "收钱吧定时任务")
@RestController
@RequestMapping("/rsc/job/sqb")
public class GoblinSqbJobController {

    @Autowired
    private IGoblinSqbService goblinSqbService;

    @PostMapping("/autoRefund")
    @ApiOperation("收钱吧自动退款（演出结束已支付 / 退款中超8小时卡单重试）")
    public ResponseDto<String> autoRefund(@RequestParam(value = "performancesId", required = false) String performancesId) {
        log.info("[收钱吧自动退款] 收到任务，performancesId={}", performancesId);
        return goblinSqbService.autoRefundByPerformance(performancesId);
    }
}
