ctms/ctms-api/controllers/SmsController.php
2025-04-10 23:19:13 +08:00

271 lines
9.6 KiB
PHP
Executable File

<?php
# @Author: 嗨噜客(三亚) <fm453>
# @Date: 2022-05-22T07:38:52+08:00
# @Email: fm453@lukegzs.com
# @Last modified by: fm453
# @Last modified time: 2022-05-22T07:38:52+08:00
# @Copyright: www.hiluker.cn
namespace backend\controllers;
use Yii;
use yii\helpers\Url;
use vendor\aliyun\dysms\Sms;
use common\models\CSms;
use common\models\CVcode;
use addons\models\AcPlat;
class SmsController extends Common
{
public function actionIndex()
{
global $_HI;
global $_FM;
$_HI['action'] = 'index';
/*自定义常量*/
/*默认配置*/
$_HI['accessKeyId'] = 'LTAIQrJFtHfqsyOt'; // AccessKeyId
$_HI['accessKeySecret'] = 'tvGieI3vNI7Si3imauCB4rJ3OX4AR8'; // AccessKeySecret
$_HI['sign'] = '嗨路客';
$_HI['tmpl'] = 'SMS_116695055';
$_HI['reportQueueName'] = 'Alicom-Queue-31737903-SmsReport'; //状态报告接收
$_HI['UpQueueName'] = 'Alicom-Queue-31737903-SmsUp'; //上行消息接收
return $this->render('index');
}
public function actionGsend()
{
global $_HI;
global $_FM;
$session = Yii::$app->session;
$session->set('sms::success', 0);
$session->set('sms::msg', '');
$session->set('sms::guests', []);
/*自定义常量*/
/*默认配置*/
$_HI['accessKeyId'] = Yii::$app->params['aliDySms']['accessKeyId']; // AccessKeyId
$_HI['accessKeySecret'] = Yii::$app->params['aliDySms']['accessKeySecret']; // AccessKeySecret
$_HI['sign'] = Yii::$app->params['aliDySms']['sign'];
$_HI['tmpl'] = Yii::$app->params['aliDySms']['tmpl']['acGongxue'];
$_HI['reportQueueName'] = Yii::$app->params['aliDySms']['reportQueueName']; //状态报告接收
$_HI['UpQueueName'] = Yii::$app->params['aliDySms']['UpQueueName']; //上行消息接收
return $this->render('gsend');
}
public function actionSend()
{
global $_HI;
global $_FM;
global $START_TIME;
$session = Yii::$app->session;
//数据取出方法
$dataPost = Yii::$app->request->post(); //YII应用内的真实或模拟POST数据
$dataGet = Yii::$app->request->get(); //YII应用内的真实或模拟GET数据
$params = Yii::$app->params;
$config = array();
$config['accessKeyId'] = isset($dataPost['accessKeyId']) ? $dataPost['accessKeyId'] : $params['aliDySms']['accessKeyId'];
$config['accessKeySecret'] = isset($dataPost['accessKeySecret']) ? $dataPost['accessKeySecret'] : $params['aliDySms']['accessKeySecret'];
$config['sign'] = isset($dataPost['sign']) ? $dataPost['sign'] : $params['aliDySms']['sign'];
if ($config) {
$session->set('sms::config', $config);
} else {
$config = $session->get('sms::config');
}
$option = array();
$sms = new Sms($option, $config);
$address = isset($dataPost['address']) ? $dataPost['address'] : '';
if ($address) {
$session->set('sms::address', $address);
} else {
$address = $session->get('sms::address');
}
$tmpl = isset($dataPost['tmpl']) ? $dataPost['tmpl'] : '';
if ($tmpl) {
$session->set('sms::tmpl', $tmpl);
} else {
$tmpl = $session->get('sms::tmpl');
}
$_guests = isset($dataPost['guests']) ? $dataPost['guests'] : '';
if (!$_guests) {
$guests = $session->get('sms::guests');
} else {
$_guests = explode("\r\n", $_guests);
$guests = array();
foreach ($_guests as $c) {
$_c = explode(',', $c);
if (count($_c)>1) {
$k = trim($_c[1]);
$v = trim($_c[0]);
$guests[$k] = $v;
}
}
unset($_c);
unset($k);
unset($v);
$guests = array_unique($guests);
}
if (!$guests) {
$i = (int)$session->get('sms::success');
$session->set('sms::success', 0);
$msg = $session->get('sms::msg');
$session->set('sms::msg', '');
\Yii::$app->getSession()->setFlash('info', '群发完成,共成功发送'.$i.'条;详情:'.$msg);
return $this->render('gsend');
}
$results = array();
$msg = "";
$content = [];
$content['address'] = $address;
$i = 0;
$j = 50;
foreach ($guests as $p=>$username) {
$j--;
$content['name'] = !empty($username) ? $username.'安诚托车' : '安诚捷顺运车';
$result = $sms->send($p, $tmpl, $content);
$results[$p] = $result;
if (!$result) {
$msg .= "".$p."】发送失败,接口提示:".$sms->errors."\r\n";
} elseif ($result->Code !='OK') {
$msg .= "".$p."】发送失败,接口提示:".$result->Message."\r\n";
} else {
$i++;
$msg .= "".$p."】发送成功"."\r\n";
}
unset($guests[$p]);
if ($j==0) {
break;
}
}
$session->set('sms::guests', $guests);
$i += (int)$session->get('sms::success');
$session->set('sms::success', $i);
$msg .= $session->get('sms::msg');
$session->set('sms::msg', $msg);
\Yii::$app->getSession()->setFlash('info', '群发完成,共成功发送'.$i.'条;详情:'.$msg);
return $this->render('ajax');
}
//发送验证码
public function actionVcode()
{
global $_HI,$_FM;
$pid = Yii::$app->session->get('pid');
$plat = AcPlat::findOne($pid);
$platExt = json_decode($plat->remark, true);
//数据取出方法
$dataPost = Yii::$app->request->post(); //YII应用内的真实或模拟POST数据
$dataGet = Yii::$app->request->get(); //YII应用内的真实或模拟GET数据
$params = Yii::$app->params;
$config = array();
$config['accessKeyId'] = isset($dataPost['accessKeyId']) ? $dataPost['accessKeyId'] : $params['aliDySms']['accessKeyId'];
$config['accessKeySecret'] = isset($dataPost['accessKeySecret']) ? $dataPost['accessKeySecret'] : $params['aliDySms']['accessKeySecret'];
$config['sign'] = isset($dataPost['sign']) ? $dataPost['sign'] : $params['aliDySms']['sign'];
$option = array();
$sms = new Sms($option, $config);
$op = Yii::$app->request->get('op');
$content=[];
switch ($op) {
case 'caiwu':
$phone = $platExt['cw_phone'];
$codetype = 'caiwu';
if (!$phone) {
$return = [];
$return['errorcode'] = 1;
$return['msg'] = '还没有配置财务手机号,请联系站长管理员进行设置';
exit(json_encode($return));
}
$vcodeModel = new CVcode();
//查询上次发送记录
$_time = time();
$where=[];
$where['mobile'] = $phone;
$where['deleted'] = 0;
$where['type'] = $codetype;
$res = $vcodeModel->find()->where($where)->one();
if ($res) {
if (($_time-$res->create_at)<7200) {
$code = $res->code;
$return = [];
$return['errorcode'] = 2;
$return['msg'] = '上次发送的验证码仍然可用;请注意查看财务手机';
exit(json_encode($return));
} else {
$res->deleted = 1;
$res->save();
}
}
$code = mt_rand(1000, 9999);
$content['code'] = $code;
$tmpl = Yii::$app->params['aliDySms']['tmpl']['cwVcode'];
//验证码入库
$vcode = [];
$vcode['code'] = $code;
$vcode['type'] = $codetype;
$vcode['mobile'] = $phone;
$vcode['create_at'] = time();
foreach ($vcode as $key=>$val) {
$vcodeModel->$key = $val;
}
break;
default:
$mobile = Yii::$app->request->post('mobile');
break;
}
$result = $sms->send($phone, $tmpl, $content);
//保存发送记录
$smsModel = new CSms();
$smsdata = [];
$sid = Yii::$app->params['siteId'];
$smsdata['sid'] = (int)$sid;
$smsdata['pid'] = $pid;
$smsdata['uid'] = Yii::$app->user->identity->id;
$smsdata['mobile'] = $phone;
$smsdata['content'] = json_encode($content, JSON_UNESCAPED_UNICODE);
$smsdata['create_at'] = time();
foreach ($smsdata as $key=>$val) {
$smsModel->$key = $val;
}
$smsModel->save();
$return = [];
$msg = '';
if (!$result) {
$msg .= "发送失败,接口提示:".$sms->errors."\r\n";
$return['errorcode'] = 3;
} elseif (is_array($result) && $result['Code'] !='OK') {
$msg .= "发送失败,接口提示:".$result['Message']."\r\n";
$return['errorcode'] = 4;
} else {
$vcodeModel->save();
$msg .= "发送成功"."\r\n";
$return['errorcode'] = 0;
}
$return['msg'] = $msg;
exit(json_encode($return));
}
}