InviteEmailController.class.php 2.52 KB
<?php
/**
 * 发送管理员邀请邮件
 */

namespace Apicp\Controller\Admin;

use Common\Common\Cache;
use Common\Common\ShortUrl;
use Common\Common\Sms;
use VcySDK\Adminer;
use VcySDK\Service;

class InviteEmailController extends AbstractAnonymousController
{

    public function Index()
    {
        $eaId = I('post.eaId');
        if (empty($eaId)) {
            E(L('_ERR_PLS_SUBMIT_ID', ['name' => 'ID']));

            return false;
        }

        try {
            $enterpriseData = Cache::instance()->get(
                'Common.EnterpriseDetail',
                '',
                ['expire' => cfg('ENTERPRISE_DETAIL_CACHE_EXPIRE')]
            );
            $adminerSdk = new Adminer(Service::instance());
            $adminer = $adminerSdk->fetch(['eaId' => $eaId]);

            $sdk = new Adminer(Service::instance());
            $aiaToken = md5(NOW_TIME . QY_DOMAIN . $eaId . random(8));
            $mobileFrontUrl = oaUrl(
                'Frontend/Index/InviteEmail/Index',
                ['aiaToken' => $aiaToken]) . '?_identifier=common';
            $eaMobile = substr(
                $this->_login->user['eaMobile'], 0, 3) . '****' . substr($this->_login->user['eaMobile'], - 4);
            $inviteEmailData = [
                'eaId' => $eaId,
                'mcTplName' => Adminer::INVITE_EMAIL_TYPE_INVITE,
                'aiaToken' => $aiaToken,
                'mcSubject' => '畅移员圈管理员邀请',
                'mcVars' => [
                    "%adminer_name%" => $adminer['eaRealname'],
                    "%qy_name%" => $enterpriseData['epName'],
                    "%user_name%" => $this->_login->user['eaRealname'],
                    "%adminer_mobile%" => $eaMobile,
                    "%qrcode%" => $enterpriseData['corpWxqrcode'],
                    "%date%" => rgmdate(NOW_TIME, 'Y-m-d'),
                    "%url%" => $mobileFrontUrl,
                ],
                'smsChannel' => Sms::CHANNEL_SENDCLOUD,
                'smsMessage' => json_encode([
                    'username' => $adminer['eaRealname'],
                    'adminname' => $this->_login->user['eaRealname'],
                    'epname' => $enterpriseData['epName'],
                    'url' => ShortUrl::create($mobileFrontUrl)
                ]),
                'smsTemplateId' => Sms::SMS_TMP_ID_ADMINCP_ADMINER_INVITE
            ];

            $sdk->inviteSendInvitation($inviteEmailData);
        } catch (\Exception $e) {
            E($e->getMessage());

            return false;
        }

        return true;
    }
}