# @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)); } }