package com.chinaweal.aiccs.door.controller;

import com.chinaweal.aiccs.door.dto.JgmhDebugPushResult;
import com.chinaweal.aiccs.door.service.IJgmhPortalTodoService;
import com.chinaweal.youfool.framework.springboot.rest.RestResult;
import com.chinaweal.youfool.framework.springboot.rest.ResultCode;
import com.github.xiaoymin.knife4j.annotations.ApiSort;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

/**
 * 统一监管门户待办对接 调试控制器
 *
 * 仅用于开发联调与线上排障，传入 tasklistid 即可单独触发一笔待办推送。
 *
 * 调用地址：
 *   GET /aiccs-api/door/jgmh-todo/debug/push?tasklistid={tasklistid}
 *
 * 注意事项：
 *   1. 需要登录态（Shiro JWT 鉴权）
 *   2. 受配置开关 jgmhDoor.debugEnabled 控制，生产默认关闭
 *   3. 不写入推送记录表，仅同步调用门户接口
 *   4. 绕过三重过滤（不校验 origin/busstatus/bustype）
 *
 * @author chinaweal
 */
@Api(tags = "统一监管门户对接-调试接口")
@ApiSort(99)
@RestController
@RequestMapping("/door/jgmh-todo")
@Slf4j
public class JgmhPortalTodoDebugController {

    @Value("${jgmhDoor.debugEnabled:false}")
    private boolean debugEnabled;

    @Resource
    private IJgmhPortalTodoService jgmhPortalTodoService;

    /**
     * 单笔调试推送
     *
     * 完整调用地址：
     *   GET http://{host}:8086/aiccs-api/door/jgmh-todo/debug/push?tasklistid=xxx
     */
    @ApiOperation("【调试】根据 tasklistid 单独推送一笔待办到统一监管门户")
    @GetMapping("/debug/push")
    public RestResult<JgmhDebugPushResult> debugPushSingle(
            @ApiParam(value = "tstasklist 主键", required = true)
            @RequestParam("tasklistid") String tasklistid) {
        log.info("【调试推送】收到请求，tasklistid={}", tasklistid);

        if (!debugEnabled) {
            log.warn("【调试推送】调试接口未开启，请检查配置 jgmhDoor.debugEnabled");
            return RestResult.error(ResultCode.INTERFACE_FORBID_VISIT,
                    "调试接口未开启，请联系管理员开启 jgmhDoor.debugEnabled");
        }

        JgmhDebugPushResult result = jgmhPortalTodoService.debugPushSingle(tasklistid);
        log.info("【调试推送】完成，tasklistid={}, success={}, durationMs={}",
                tasklistid, result.getSuccess(), result.getDurationMs());
        return RestResult.ok(result);
    }
}
