<?php

// +----------------------------------------------------------------------
// | ThinkLibrary 6.0 for ThinkPhP 6.0
// +----------------------------------------------------------------------
// | 版权所有 2017~2020 [ https://www.dtapp.net ]
// +----------------------------------------------------------------------
// | 官方网站: https://gitee.com/liguangchun/ThinkLibrary
// +----------------------------------------------------------------------
// | 开源协议 ( https://mit-license.org )
// +----------------------------------------------------------------------
// | gitee 仓库地址 ：https://gitee.com/liguangchun/ThinkLibrary
// | github 仓库地址 ：https://github.com/GC0202/ThinkLibrary
// | Packagist 地址 ：https://packagist.org/packages/liguangchun/think-library
// +----------------------------------------------------------------------

namespace DtApp\ThinkLibrary\service\wechat;

use DtApp\ThinkLibrary\exception\DtaException;
use DtApp\ThinkLibrary\Service;
use DtApp\ThinkLibrary\service\curl\HttpService;

/**
 * 企业微信
 * Class QyService
 * @package DtApp\ThinkLibrary\service\wechat
 */
class QyService extends Service
{
    /**
     * 消息类型
     * @var string
     */
    private $msgType = 'text';

    /**
     * @var
     */
    private $key;

    /**
     * 配置Key
     * @param string $str
     * @return $this
     */
    public function key(string $str): self
    {
        $this->key = $str;
        return $this;
    }

    /**
     * 发送文本消息
     * @param string $content 消息内容
     * @return bool
     * @throws DtaException
     */
    public function text(string $content = ''): bool
    {
        $this->msgType = 'text';
        return $this->sendMsg([
            'text' => [
                'content' => $content,
            ],
        ]);
    }

    /**
     * 发送markdown消息
     * @param string $content 消息内容
     * @return bool
     * @throws DtaException
     */
    public function markdown(string $content = '')
    {
        $this->msgType = 'markdown';
        return $this->sendMsg([
            'markdown' => [
                'content' => $content,
            ],
        ]);
    }

    /**
     * 组装发送消息
     * @param array $data 消息内容数组
     * @return bool
     * @throws DtaException
     */
    private function sendMsg(array $data): bool
    {
        if (empty($this->key)) {
            throw new DtaException("请检查KEY");
        }
        if (empty($data['msgtype'])) {
            $data['msgtype'] = $this->msgType;
        }
        $result = HttpService::instance()
            ->url("https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=" . $this->key)
            ->data($data)
            ->toArray();
        return $result['errcode'] === 0;
    }
}
