<?php
namespace App\Service;
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
use Illuminate\Support\Facades\Log;
class MessageService
{
    
    public function sendRegisterCode($mobile, $code){
        return $this->sendSms($mobile, 'SMS_115755298', ['code' => $code]);
    }
    public function sendLoginCode($mobile,$code){
        return $this->sendSms($mobile, 'SMS_166377544', ['code' => $code]);
    }
    
    public function sendAgentRegisterNotify($mobile){
        return $this->sendSms($mobile,'SMS_166377541', []);
    }
    
    public function sendRegisterNotify($mobile){
        return $this->sendSms($mobile, 'SMS_166372530', []);
    }
    
    public  function sendSms($mobile,$templateCode, $params){
               AlibabaCloud::accessKeyClient('LTAIbmHhHZqsw3Da', '5Hw70EqvR2h0SuuAkGlqEJEpDgnL9C')
            ->regionId('cn-hangzhou')
            ->asDefaultClient();
        try {
            $query = [
                               'PhoneNumbers' => $mobile,
                'TemplateCode' => $templateCode,
                'SignName' => '及法法律',
            ];
            if (!empty($params)) {
                $query['TemplateParam'] = json_encode($params);
            }
            $result = AlibabaCloud::rpc()
                ->product('Dysmsapi')
                               ->version('2017-05-25')
                ->action('SendSms')
                ->method('POST')
                ->options([
                    'query' => $query
                ])
                ->request();
            $res = $result->toArray();
            if ($res['Code'] != 'OK') {
                return ['code' => 500, 'msg' =>$res['Code'].':'. $res['Message']];
            }
            return ['code' => 200];
        } catch (ClientException $e) {
            Log::error($e->getErrorMessage() . PHP_EOL);
            return ['code' => 500, 'msg'=>$e->getErrorMessage()];
        } catch (ServerException $e) {
            Log::error($e->getErrorMessage() . PHP_EOL);
            return ['code' => 500, 'msg'=>$e->getErrorMessage()];
        }
    }
}