package com.gxwebsoft.hjm.service;

import com.gxwebsoft.hjm.dto.SubscribeMessageRequest;
import com.gxwebsoft.hjm.dto.TemplateMessageRequest;

import java.util.List;

/**
 * 微信通知服务接口
 *
 * @author 科技小王子
 * @since 2025-06-15
 */
public interface WxNotificationService {

    /**
     * 发送微信公众号模板消息
     *
     * @param tenantId 租户ID
     * @param request  模板消息请求
     * @return 发送结果
     */
    boolean sendTemplateMessage(Integer tenantId, TemplateMessageRequest request);

    /**
     * 发送微信小程序订阅消息
     *
     * @param tenantId 租户ID
     * @param request  订阅消息请求
     * @return 发送结果
     */
    boolean sendSubscribeMessage(Integer tenantId, SubscribeMessageRequest request);

    /**
     * 批量发送模板消息
     *
     * @param tenantId 租户ID
     * @param requests 模板消息请求列表
     * @return 发送结果统计
     */
    BatchSendResult batchSendTemplateMessage(Integer tenantId, List<TemplateMessageRequest> requests);

    /**
     * 获取微信公众号模板列表
     *
     * @param tenantId 租户ID
     * @return 模板列表
     */
    String getTemplateList(Integer tenantId);

    /**
     * 批量发送结果
     */
    class BatchSendResult {
        private int successCount;
        private int failCount;
        private int totalCount;

        public BatchSendResult(int successCount, int failCount) {
            this.successCount = successCount;
            this.failCount = failCount;
            this.totalCount = successCount + failCount;
        }

        public int getSuccessCount() {
            return successCount;
        }

        public int getFailCount() {
            return failCount;
        }

        public int getTotalCount() {
            return totalCount;
        }

        @Override
        public String toString() {
            return String.format("总计：%d，成功：%d，失败：%d", totalCount, successCount, failCount);
        }
    }
}
