package vip.mate.channel.controller;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import vip.mate.channel.ChannelAdapter;
import vip.mate.channel.ChannelManager;
import vip.mate.channel.dingtalk.DingTalkAppRegistrationService;
import vip.mate.channel.dingtalk.DingTalkChannelAdapter;
import vip.mate.channel.discord.DiscordChannelAdapter;
import vip.mate.channel.feishu.FeishuAppRegistrationService;
import vip.mate.channel.feishu.FeishuChannelAdapter;
import vip.mate.channel.telegram.TelegramChannelAdapter;
import vip.mate.channel.weixin.ILinkClient;
import vip.mate.channel.weixin.WeixinChannelAdapter;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import java.io.ByteArrayOutputStream;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Optional;
/**
* 渠道 Webhook 回调接口
*
* 接收来自各 IM 平台的消息推送回调。
* 各平台(钉钉、飞书、Telegram 等)将此 URL 配置为消息回调地址。
*
* URL 格式:/api/v1/channels/webhook/{channelType}
* 此接口不需要 JWT 认证(由各平台的签名/Token 机制保障安全)。
*
* @author MateClaw Team
*/
@Tag(name = "渠道Webhook")
@Slf4j
@RestController
@RequestMapping("/api/v1/channels/webhook")
@RequiredArgsConstructor
public class ChannelWebhookController {
private final ChannelManager channelManager;
private final FeishuAppRegistrationService feishuAppRegistrationService;
private final DingTalkAppRegistrationService dingTalkAppRegistrationService;
@Operation(summary = "钉钉消息回调")
@PostMapping("/dingtalk")
public ResponseEntity