<?php
// +----------------------------------------------------------------------
// | Niucloud-admin 企业快速开发的saas管理平台
// +----------------------------------------------------------------------
// | 官方网址:https://www.niucloud.com
// +----------------------------------------------------------------------
// | niucloud团队 版权所有 开源版本可自由商用
// +----------------------------------------------------------------------
// | Author: Niucloud Team
// +----------------------------------------------------------------------

namespace core\template;

use app\service\core\wechat\CoreWechatService;
use EasyWeChat\Kernel\Exceptions\InvalidArgumentException;
use EasyWeChat\Kernel\Exceptions\InvalidConfigException;
use EasyWeChat\Kernel\Support\Collection;
use GuzzleHttp\Exception\GuzzleException;
use Psr\Http\Message\ResponseInterface;


class Wechat extends BaseTemplate
{

    /**
     * @param array $config
     * @return void
     */
    protected function initialize(array $config = [])
    {
        parent::initialize($config);

    }

    /**
     * 消息发送
     * @param array $data
     * @return array|Collection|object|ResponseInterface|string
     * @throws GuzzleException
     * @throws InvalidArgumentException
     * @throws InvalidConfigException
     */
    public function send(array $data)
    {
        $openid = $data[ 'openid' ];
        $template_id = $data[ 'template_id' ];
        $template_data = $data[ 'data' ];
        $first = $data[ 'first' ];
        $remark = $data[ 'remark' ];
        $url = $data[ 'url' ];
        $miniprogram = $data[ 'miniprogram' ] ?? [];
        $temp_data = [];
        foreach($template_data as $k => $v){
            $temp_data[$k] = ['value' => $v];
        }

        if (!empty($first)) $data[ 'first' ] = $first;
        if (!empty($remark)) $data[ 'remark' ] = $remark;
        $api = CoreWechatService::appApiClient();
        $param = [
            'touser' => $openid,
            'template_id' => $template_id,
            'url' => $url,
            'miniprogram' => $miniprogram,
            'data' => $temp_data,
        ];
        if(!empty($client_msg_id)){
            $param['client_msg_id'] = $client_msg_id;
        }
        return $api->postJson('cgi-bin/message/template/send', $param);
    }

    /**
     * 添加模板消息
     * @param array $data
     * @return array|Collection|object|ResponseInterface|string
     * @throws GuzzleException
     * @throws InvalidConfigException
     */
    public function addTemplate(array $data)
    {
        $api = CoreWechatService::appApiClient();
        return $api->postJson('cgi-bin/template/api_add_template', [
            'template_id_short' => $data[ 'shortId' ],
            'keyword_name_list' => $data[ 'keyword_name_list' ]
        ]);
    }

    /**
     * 删除
     * @param array $data
     * @return array|Collection|object|ResponseInterface|string
     * @throws GuzzleException
     * @throws InvalidConfigException
     */
    public function delete(array $data)
    {
        $api = CoreWechatService::appApiClient();

        return $api->postJson('cgi-bin/template/del_private_template', [
            'template_id' => $data[ 'templateId' ],
        ]);
    }

    /**
     * 获取
     * @return void
     */
    public function get()
    {

    }
}