Commit 17da21a7 by 孙龙

批量发送邮件短信

parent 075fab9f
......@@ -546,7 +546,7 @@ class MessageApiController extends Controller
$info = DB::connection("message")->table("lie_msg_tpl")->where("tpl_id",intval($tp_id))->select("tpl_id","channels","description")->first();
if(!$info) return back()->with("error_batch_msg","没找到对应消息模板");
if(count(explode(",",$info->channels)) > 1) return back()->with("error_batch_msg","暂只支持一种渠道消息,请完善模板消息后再来");
if($info->channels != 3 ) return back()->with("error_batch_msg","暂只支持邮件");
if(!in_array($info->channels,[2,3])) return back()->with("error_batch_msg","暂支持单独发送邮件或短信");
if($file){
try{
$excel_file_path = $file->getRealPath();
......@@ -555,9 +555,13 @@ class MessageApiController extends Controller
Excel::load($excel_file_path, function($reader) use( &$res,&$title ) {
$reader = $reader->getSheet(0);
$res = $reader->toArray();
$title = $res[0];
unset($res[0]);
},'GBK');
$title = $res[0];
unset($res[0]);
$title = array_filter($title,function($val){
if($val) return true;
});
$exchange = Config("website.msg_exchange"); // 交换器,在我理解,如果两个队列使用一个交换器就代表着两个队列是同步的,这个队列里存在的消息,在另一个队列里也会存在
$queue = Config("website.msg_queue"); // 队列名称
$connection = new AMQPStreamConnection(Config("website.rabbitmq.host"),
......@@ -568,19 +572,29 @@ class MessageApiController extends Controller
$channel->queue_bind($queue, $exchange); // 队列和交换器绑定
$channel->tx_select();//开启事务
foreach($res as $key=>$val){
//$val[0] 为接收者
if(!$val[0]) continue;
$params = [];
$touser = $val[0];
unset($val[0]);
foreach($val as $kk=>$vv){
$params[array_get($title,$kk)] = $vv;
//循环参数
$_params = array_filter($val,function($_v){
if($_v) return true;
});
if(count($_params) != count($title)-1) throw new \Exception(sprintf("第%s行参数不一致",$key+1));
foreach($_params as $kk=>$vv){
if(!$vv) break;
$params[array_get($title,$kk)] = strval($vv);
}
if(!$touser) throw new \Exception('接收者不能为空');
if(count($params) <= 0) throw new \Exception('没找到对应参数');
$msg_arr = [];
$msg_arr['job'] = 'msg.batch.send';
$_data['is_oversea'] = false;
$_data['template_id'] = $info->tpl_id;
$_data['keyword'] = $info->description;
$_data['channel_type'] = $info->channels;
$_data['touser'] = $touser;
$_data['touser'] = strval($touser);
$_data['data'] = $params;
$_data['url'] = '';
$_data['wechat_data'] = null;
......@@ -593,7 +607,6 @@ class MessageApiController extends Controller
$_data['rbmq'] = [
'expire_time'=>time()+3600*2
];
// dump($_data);
$msg_arr['data'] = json_encode($_data);
$msg = new AMQPMessage(json_encode($msg_arr));
$channel->basic_publish($msg, $exchange);
......@@ -601,11 +614,12 @@ class MessageApiController extends Controller
$channel->tx_commit();//提交事务
$channel->close();
$connection->close();
// exit;
return back()->with("success_batch_msg","上传成功");
}catch(\Exception $e){
dump($e->getMessage());
// dump($e->getMessage());
$channel->tx_rollback();
return back()->with("error_batch_msg","请选择对应消息模板");
return back()->with("error_batch_msg",$e->getMessage());
}
}
......
......@@ -226,6 +226,7 @@
return false;
}
$("#postForm").submit();
var index = layer.load(0, {shade: false});
});
});
})
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment