where('parentid',0)->order('id asc')->limit(4)->select(); foreach ($data as $k=>$v){ $data[$k]['son']=db('activity')->where('parentid',$v['id'])->order('id asc')->select(); } $this->assign('one',$data[0]); $this->assign('two',$data[1]); $this->assign('three',$data[2]); return $this->fetch(); } //军训页面 public function training(){ $data=db('activity')->where('id',19)->find(); $data['son']=db('activity')->where('parentid',$data['id'])->order('id asc')->select(); $this->assign('data',$data); return $this->fetch(); } //获取班级页面 public function getClass(){ $aid=(int) input('aid'); $data=db('class')->where('aid',$aid)->select(); return json($data); } public function paysuccess(){ $id=(int)input('oid'); //获得订单信息 $data=db('order')->where('id',$id)->find(); // 获取活动主题 $son=db('activity')->where('id',$data['aid'])->find(); $fu=db('activity')->where('id',$son['parentid'])->find(); $data['title']=$fu['title']; $data['start_time']=$son['start_time']; $data['sex']=$data['sex']==1?'男':'女'; $this->assign('data',$data); return $this->fetch(); } public function insertOrder(){ $data['aid']=(int)input('id'); $data['grade']=input('grade'); $data['name']=input('name'); $data['school']=input('school'); $data['sex']=(int)input('sex'); $data['phone']=(int)input('phone'); $data['sfz']=input('sfz'); if(!$data['aid']){ $res['code']='FAIL'; $res['msg']='没有选择活动'; return json($res); } if(!$data['name']){ $res['code']='FAIL'; $res['msg']='没有填写姓名'; return json($res); } if(!$data['sex']){ $res['code']='FAIL'; $res['msg']='没有选择性别'; return json($res); } if(!$data['school']){ $res['code']='FAIL'; $res['msg']='没有填写学校'; return json($res); } if(!$data['grade']){ $res['code']='FAIL'; $res['msg']='没有填写年级'; return json($res); } if(!$data['phone']){ $res['code']='FAIL'; $res['msg']='没有填写手机号'; return json($res); } //验证手机号规则 if(!preg_match('/^1([0-9]{9})/',$data['phone'])){ $res['code']='FAIL'; $res['msg']='手机号格式有误'; return json($res); } //判断活动是否存在 Db::startTrans(); $activity_data=db('activity')->lock(true)->where(['id'=>$data['aid'],'parentid'=>['neq',0]])->find(); if(!$activity_data){ $res['code']='FAIL'; $res['msg']='活动不存在'; return json($res); } //判断人数有没有满 $fuActivity_data=db('activity')->where(['id'=>$activity_data['parentid']])->find(); if($fuActivity_data['max_num']<=$activity_data['buy_num']){ $res['code']='FAIL'; $res['msg']='活动人数已满,请报名其它活动'; return json($res); } if($fuActivity_data['id']!=19){ //如果不是军训的话 就要身份证 if(!$data['sfz']){ $res['code']='FAIL'; $res['msg']='没有填写身份证'; return json($res); } } //插入未支付的订单 $data['c_time']=date("Y-m-d H:i:s"); $data['status']=1; $data['money']=$activity_data['price']; $newId=db('order')->insertGetId($data); Db::commit(); $res['code']='SUCCESS'; $res['msg']='支付参数获取成功'; $res['id']=$newId; return json($res); } public function dopay(){ //得到订单id $id=(int)input('id'); //获得订单信息 $data=db('order')->where('id='.$id)->find(); $weixinpay=$data['money']; define('SYSAPPID','wx1364ecc533a2e290'); define('SYSMCHID','1529570041'); define('SYSKEY','290339EDC572D5E665EC2BC48AABC37A'); define('SYSAPPSECRET','f98a5d97cec9d4e4698007e523cbccbe'); Loader::import('wechatpay.lib.WxPay#Api'); Loader::import('wechatpay.example.WxPay#JsApiPay'); Loader::import('wechatpay.example.log'); //初始化日志 //$logHandler= new \CLogFileHandler(dirname(dirname(__FILE__))."/logs/".date('Y-m-d').'.log'); //$log = \Log::Init($logHandler, 15); //①、获取用户openid $tools = new \JsApiPay(); $openId = $tools->GetOpenid(); if(!$openId){echo 'openid not'; return;} //将openid插入数据,并返回uid $temp=db('user')->where('openid',$openId)->find(); if($temp){ $uid=$temp['id']; }else{ $uid=db('user')->insertGetId(['openid'=>$openId]); } //将uid插入数据库 db('order')->where('id='.$id)->setField('uid',$uid); //②、统一下单 $input=NULL; $input = new \WxPayUnifiedOrder(); $input->SetBody("绿色学校"); $input->SetAttach("绿色学校活动报名"); $input->SetOut_trade_no($data['id']); $totalSum=$weixinpay*100; $input->SetTotal_fee($totalSum); $input->SetTime_start(date("YmdHis")); $input->SetTime_expire(date("YmdHis", time() + 600)); $input->SetGoods_tag('绿色学校'); $input->SetNotify_url(HTTP.SITE_URL."/index.php/index/index/notify"); $input->SetTrade_type("JSAPI"); $input->SetOpenid($openId); $order = \WxPayApi::unifiedOrder($input); $jsApiParameters = $tools->GetJsApiParameters($order); $this->assign('jsApiParameters',$jsApiParameters); $this->assign('oid',$id); return $this->fetch(); } //返回处理数据 public function notify(){ define('SYSAPPID','wx1364ecc533a2e290'); define('SYSMCHID','1529570041'); define('SYSKEY','290339EDC572D5E665EC2BC48AABC37A'); define('SYSAPPSECRET','f98a5d97cec9d4e4698007e523cbccbe'); Loader::import('wechatpay.example.notify'); $notify = new \PayNotifyCallBack(); $res=$notify->Handle(false); if($res){ db('order')->where('id', $res['out_trade_no'])->setField(['status'=>2,'p_time'=>date('Y-m-d H:i:s')]); $temp= db('order')->where('id', $res['out_trade_no'])->find(); db('activity')->where('id', $temp['aid'])->setInc('buy_num',1); echo " "; exit; } } //再写一个现实订单页面 public function myorder(){ $pass=input('pass'); if($pass!='dyrgg'){ exit; } return $this->fetch(); } public function orderList(){ //获取活动数据 $data=db('activity')->where('parentid',0)->order('id asc')->select(); foreach ($data as $k=>$v){ $data[$k]['son']=db('activity')->where('parentid',$v['id'])->order('id asc')->select(); //获取每一期的数据 foreach ($data[$k]['son'] as $k1=>$v1){ $data[$k]['son'][$k1]['order']=db('order')->where(['aid'=>$v1['id'],'status'=>2])->select(); } } return json($data); } public function meorder(){ define('SYSAPPID','wx1364ecc533a2e290'); define('SYSMCHID','1529570041'); define('SYSKEY','290339EDC572D5E665EC2BC48AABC37A'); define('SYSAPPSECRET','f98a5d97cec9d4e4698007e523cbccbe'); Loader::import('wechatpay.lib.WxPay#Api'); Loader::import('wechatpay.example.WxPay#JsApiPay'); Loader::import('wechatpay.example.log'); //①、获取用户openid $tools = new \JsApiPay(); $openId = $tools->GetOpenid(); $this->assign('openid',$openId); return $this->fetch(); } public function meorderList(){ $openid=input('openid'); $temp=db('user')->where('openid',$openid)->find(); if($temp){ $uid=$temp['id']; }else{ $uid=db('user')->insertGetId(['openid'=>$openid]); } //获取活动数据 $data=db('order')->where(['uid'=>$uid,'status'=>2])->order('id asc')->select(); foreach ($data as $k=>$v){ //先获取子活动的信息 $data[$k]['sonAc']=db('activity')->where('id',$v['aid'])->order('id asc')->find(); //获取父活动的信息 $data[$k]['fuAc']=db('activity')->where('id',$data[$k]['sonAc']['parentid'])->order('id asc')->find(); } return json($data); } //下面的导出暂时先不用 //导出表格 public function exportExcel(){ //处理数据 $map['year']=input('year'); $map['month']=input('month');; $monthData= db('calendar')->where($map)->order('day asc')->select(); //获取所有的人 $manager_data=db('manager')->order('wl_active asc')->select(); $tableheader[]='日期/姓名'; foreach ($monthData as $k=>$v){ if($v['month']<10){ $v['month']='0'.$v['month']; } if($v['day']<10){ $v['day']='0'.$v['day']; } $tableheader[]=$v['month'].'-'.$v['day']; foreach ($manager_data as $k1=>$v1){ $mapson['manager_id']=$v1['id']; $mapson['time']=['like',$map['year'].'-'.$v['month'].'-'.$v['day'].'%']; $temp=db('signin')->where($mapson)->find(); if($temp){ $in=substr($temp['time'] , 10 , 9); $out=substr($temp['offtime'] , 10 , 9); $zao=strtotime($temp['time'])<=strtotime($v['year'].'-'.$v['month'].'-'.$v['day'].' 08:30:00'); $wan=strtotime($temp['offtime'])>=strtotime($v['year'].'-'.$v['month'].'-'.$v['day'].' 18:00:00'); if($zao and $wan) { $remark = '正常'; }else{ $remark = '异常'; } $manager_data[$k1]['signin'][]="上:".$in ."\r\n下:".$out."\r\n".$remark; }else{ $manager_data[$k1]['signin'][]="无记录"; } } } //dump($tableheader); //exit; $this->excelSigninExport($tableheader,$manager_data); } private function excelSigninExport($tableheader,$data = [],$title='') { $title='考勤表'; //文件名 $fileName = $title.".xls"; //加载第三方类库 Loader::import('PHPExcel.Classes.PHPExcel'); Loader::import('PHPExcel.Classes.PHPExcel.IOFactory.PHPExcel_IOFactory'); //实例化excel类 $excelObj = new \PHPExcel(); //构建列数--根据实际需要构建即可 $string="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,AA,AB,AC,AD,AE,AF"; $letter = explode(',',$string); //表头数组--需和列数一致 $tableheader = $tableheader; //填充表头信息 for ($i = 0; $i < count($tableheader); $i++) { $excelObj->getActiveSheet()->setCellValue("$letter[$i]1", "$tableheader[$i]"); $excelObj->getActiveSheet()->getColumnDimension($letter[$i])->setWidth(12); } //循环填充数据 foreach ($data as $k => $v) { $num = $k + 1 + 1; //设置每一列的内容 $excelObj->setActiveSheetIndex(0)->setCellValue('A' . $num, $v['realname']); for ($i = 1; $i < count($tableheader); $i++) { $excelObj->setActiveSheetIndex(0)->setCellValue($letter[$i] . $num, $v['signin'][$i-1]); } //设置行高 //$excelObj->getActiveSheet()->getRowDimension($k+4)->setRowHeight(30); } //以下是设置宽度 // $excelObj->getActiveSheet()->getColumnDimension('A')->setWidth(46); // $excelObj->getActiveSheet()->getColumnDimension('B')->setWidth(20); // $excelObj->getActiveSheet()->getColumnDimension('C')->setWidth(10); // $excelObj->getActiveSheet()->getColumnDimension('D')->setWidth(20); //设置表头行高 // $excelObj->getActiveSheet()->getRowDimension(1)->setRowHeight(28); // $excelObj->getActiveSheet()->getRowDimension(2)->setRowHeight(28); // $excelObj->getActiveSheet()->getRowDimension(3)->setRowHeight(28); //设置居中 //$excelObj->getActiveSheet()->getStyle('A1:AE1'.($k+2))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); //所有垂直居中 //$excelObj->getActiveSheet()->getStyle('A1:AE1'.($k+2))->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); //设置字体样式 // $excelObj->getActiveSheet()->getStyle('A1:D1')->getFont()->setName('黑体'); // $excelObj->getActiveSheet()->getStyle('A1:D1')->getFont()->setSize(20); // $excelObj->getActiveSheet()->getStyle('A1:D1')->getFont()->setBold(true); // $excelObj->getActiveSheet()->getStyle('A1:D1')->getFont()->setBold(true); // $excelObj->getActiveSheet()->getStyle('A1:D1')->getFont()->setName('宋体'); // $excelObj->getActiveSheet()->getStyle('A1:D1')->getFont()->setSize(16); // $excelObj->getActiveSheet()->getStyle('A1:D1'.($k+2))->getFont()->setSize(10); //设置自动换行 $excelObj->getActiveSheet()->getStyle('A1:AF1'.($k+2))->getAlignment()->setWrapText(true); // 重命名表 $fileName = iconv("utf-8", "gb2312", $fileName); // 设置下载打开为第一个表 $excelObj->setActiveSheetIndex(0); //设置header头信息 header('Content-Type: application/vnd.ms-excel;charset=UTF-8'); header("Content-Disposition: attachment;filename={$fileName}"); header('Cache-Control: max-age=0'); $writer = \PHPExcel_IOFactory::createWriter($excelObj, 'Excel5'); $writer->save('php://output'); exit(); } }