群发短信记录
导入excel文件
导入样式HTML js代码
<script>
$(document).ready(function(){
$("#sendsms").click(function(){
var res = confirm("确定发送短信");
if(res == true)
{
sendsms();
}
});
// 导入excel文件
$("#exampleInputFile").change(function(){ // 当 id 为 file 的对象发生变化时
var fileSize = this.files[0].size;
var size = fileSize / 1024 / 1024;
if (size > 5) {
alert("附件不能大于5M,请将文件压缩后重新上传!");
this.value="";
return false;
}else{
$("#showPath").val($("#exampleInputFile").val()); //将 #file 的值赋给 #file_name
}
})
$('#sendtime').datetimepicker({
format:"Y-m-d H:i:s",
});
$.datetimepicker.setLocale('ch');
});
//插入Excel列方法
(function($){
$.fn.extend({
insertAtCaret: function(myValue){
var $t=$(this)[0];
if (document.selection) {
this.focus();
sel = document.selection.createRange();
sel.text = myValue;
this.focus();
}
else
if ($t.selectionStart || $t.selectionStart == '0') {
var startPos = $t.selectionStart;
var endPos = $t.selectionEnd;
var scrollTop = $t.scrollTop;
$t.value = $t.value.substring(0, startPos) + myValue + $t.value.substring(endPos, $t.value.length);
this.focus();
$t.selectionStart = startPos + myValue.length;
$t.selectionEnd = startPos + myValue.length;
$t.scrollTop = scrollTop;
}
else {
this.value += myValue;
this.focus();
}
}
})
})(jQuery)
$('#cha').click(function(){
var str = '{'+$('#spec').val()+'}';
$('#charu').insertAtCaret(str);
});
//发送定制短信
function sendsms(){
// alert('adf');
var phonestr = $('.phone').val();
var content = $('.content').val();
var sendtime = $('#sendtime').val();
$.ajax({
url: "http://"+document.domain+"/index.php/Admin/Lianxi/dinzhi_post", //请求的url地址
dataType: "json", //返回格式为json
data: {
phonestr:phonestr,
content:content,
sendtime:sendtime,
},
type: "post", //请求方式
success: function (req) {
console.log(req);
// console.log(req[0].message);
var strf = '';
var num = 0;
//请求成功时处理
if(req.length !=0){
for(var i=1;i<=req.length;i++){
strf += '第'+i+'条:'+req[num].message+';';
num++;
}
$('#fanhui').val(strf);
}
},
error: function () {
alert('网络错误');
}
});
}
//查询余额
$("#balance").click(function (){
$.ajax({
url:"http://"+document.domain+"/index.php/Admin/Lianxi/balance_post",
dataType:"json",
success:function (req){
// console.log(req.message);
if(JSON.stringify(req.message) == "{}"){
var str = "查询成功 "+"支付方式:"+req.payinfo+" 余额:"+req.overage+"条 总充值点数:"+req.sendTotal+'条';
$("#fanhui").val(str);
}else{
$("#fanhui").val(req.message);
}
}
});
});
</script>
PHP代码
//短信接口
public function group_sms($post_data,$url){
$o='';
foreach ($post_data as $k=>$v)
{
$o.="$k=".$v.'&';
}
$post_data=substr($o,0,-1);
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //如果需要将结果直接返回到变量里,那加上这句。
$postObj = simplexml_load_string(curl_exec($ch), 'SimpleXMLElement', LIBXML_NOCDATA);
$jsonStr = json_encode($postObj);
return $jsonStr;
}
// 导入定制短信信息
public function dinzhisms(){
$phones = I('phones');
$content = I('content');
if($content != ''){
$strSubject = $content;
$strPattern = "/(?<={)[^}]+/";
$arrMatches = [];
preg_match_all($strPattern, $strSubject, $arrMatches);
$arr = $arrMatches[0];
}
import("Org.Util.PHPExcel");
import("Org.Util.PHPExcel.Writer.Excel5");
import("Org.Util.PHPExcel.IOFactory.php");
ini_set('memory_limit','1024M');
$id=1;
if (!empty($_FILES)) {
$config = array(
'exts' => array('xlsx','xls'),
'maxSize' => 3145728000,
'rootPath' =>"./Public/",
'savePath' => 'Uploads/',
'subName' => array('date','Ymd'),
);
$upload = new \Think\Upload($config);
if (!$info = $upload->upload()) {
$this->error($upload->getError());
}
$file_name=$upload->rootPath.$info['photo']['savepath'].$info['photo']['savename'];
$extension = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));//判断导入表格后缀格式
if ($extension == 'xlsx') {
$objReader =\PHPExcel_IOFactory::createReader('Excel2007');
$objPHPExcel =$objReader->load($file_name, $encode = 'utf-8');
} else if ($extension == 'xls'){
$objReader =\PHPExcel_IOFactory::createReader('Excel5');
$objPHPExcel =$objReader->load($file_name, $encode = 'utf-8');
}
$sheet =$objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow();//取得总行数
$highestColumn =$sheet->getHighestColumn(); //取得总列数
$list=array();
for ($i = 3; $i <= $highestRow; $i++) {
//读取的$phones.$i表坐标
$phone_temp[$i] = trim($objPHPExcel->getActiveSheet()->getCell($phones.$i)->getValue());
if($phone_temp[$i] != ''){
foreach($arr as $k => $v){
$address=$v.$i;
$cell = $objPHPExcel->getActiveSheet()->getCell($address);
$cvalue = $cell->getValue();
if($cell->getDataType()==\PHPExcel_Cell_DataType::TYPE_NUMERIC){
$cellstyleformat = $cell->getStyle($cell->getCoordinate())->getNumberFormat();
$formatcode = $cellstyleformat->getFormatCode();
//判断时间类型
if (preg_match('/^(\[\$[A-Z]*-[0-9A-F]*\])*[hmsdy]/i', $formatcode)) {
$data[$v] = gmdate("Y-m-d H:i:s", \PHPExcel_Shared_Date::ExcelToPHP($cvalue));
}else{
$data[$v] = $cvalue;
}
}else{
$data[$v] = $objPHPExcel->getActiveSheet()->getCell($v.$i)->getValue();
}
$list[$i] = $data;
}
}
}
$phonelist = array_filter($phone_temp);
$phonestr = implode(',',$phonelist);
$this->assign('phonestr',$phonestr);
foreach($arr as $k => $v){
$specs[$k] = '{'.$v.'}';
}
foreach($phonelist as $k => $v){
$contentlist[$k] = '【金宝缘】'.trim(str_replace($specs,$list[$k], $content));
$strlen += ceil(mb_strlen($contentlist[$k])/67);
}
$contentstr = implode(',',$contentlist);
$this->assign('contentstr',$contentstr);
$lena = count($list);
$zongphone = '共计号码'.count($phonelist).'个;计费条数'.$strlen.'条';
$this->assign('zongphone',$zongphone);
$this->assign('lena',$lena);
$this->assign('list',$contentlist);
}
$arr = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
$this->assign('arr',$arr);
$len = count($arr);
$this->assign('len',$len);
$this->display();
}
//发送定制短信
public function dinzhi_post(){
if(!empty(I('phonestr'))){
$phonestr = I('phonestr');
}
$phones = explode(',',$phonestr);
if(!empty(I('content'))){
$content = I('content');
}
$contents = explode(',',$content);
if(!empty(I('sendtime'))){
$sendtime = I('sendtime');
}
$post_data = array();
$post_data['userid'] = 1425;
$post_data['timestamp'] = date('YmdHis');
$post_data['sign'] = MD5('jrcs123456'.date('YmdHis'));
$post_data['sendTime'] = $sendtime; //不定时发送,值为0,定时发送,输入格式YYYYMMDDHHmmss的日期值
$post_data['extno'] = '';
$url='http://60.205.151.174:8888/v2sms.aspx?action=send';
foreach($phones as $k => $v){
$post_data['mobile'] = trim($v);
$post_data['content'] = trim($contents[$k]);
$res[$k] = json_decode($this->group_sms($post_data,$url));
}
echo json_encode($res);
}