diff --git a/app/Http/Controllers/MessageApiController.php b/app/Http/Controllers/MessageApiController.php index 9e80792..55c57f8 100755 --- a/app/Http/Controllers/MessageApiController.php +++ b/app/Http/Controllers/MessageApiController.php @@ -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()); } } diff --git a/resources/views/message/sendmanualmessage.blade.php b/resources/views/message/sendmanualmessage.blade.php index 5019d0b..34d652c 100755 --- a/resources/views/message/sendmanualmessage.blade.php +++ b/resources/views/message/sendmanualmessage.blade.php @@ -226,6 +226,7 @@ return false; } $("#postForm").submit(); + var index = layer.load(0, {shade: false}); }); }); })