123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500 |
- <?php
- /**
- * @author huwhois<huwhois@163.com>
- */
- namespace app\admin\controller;
- use daswork\Controller;
- use app\admin\model\SignBak;
- use app\admin\model\Attenders;
- class Index extends Base
- {
- public function __construct()
- {
- parent::__construct();
- $this->model = new Attenders();
- }
- public function index()
- {
- $key = isset($_GET['key']) ? escapeString($_GET['key']) : '';
- $where = '';
- if ($key) {
- $where = "WHERE truename LIKE '$key%' OR phone LIKE '$key%' or organization LIKE '$key%'";
- $this->assign('key', $key);
- }
-
- $page = isset($_GET['page']) ? escapeString($_GET['page']) : 1;
- $data = $this->model->pageList($where, $page, 15);
- $this->assign('data', $data);
- $this->fetch();
- }
- public function info()
- {
- $id = $_GET['id'];
- if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
- if (!$id) {
- echo json_encode(['code' => 1, 'msg'=>'id不能为空']);
- }
- $data = $this->model->getOneById($id);
- echo json_encode(['code'=>0, 'data'=>$data]);
- } else {
- if (!$id) {
- echo "<script>alert('id 不能为空');history.back();</script>";
- }
- $data = $this->model->getOneById($id);
- $this->assign('data', $this->replaceDate($data));
- $this->fetch();
- }
- }
-
- // 替换报名表数据输出字符
- public function replaceDate($arr = []) {
- // 替换性别
- if (isset($arr['sex'])) {
- $arr['sex'] = ($arr['sex'] == 2) ? "女" : "男";
- }
- // 替换开票信息
- if (isset($arr['tax_type'])) {
- $arr['tax_type'] = ($arr['tax_type'] == 2) ? "专票" : "普票";
- }
- // 替换会议注册类型(注册费)
- if (isset($arr['fee_type'])) {
- $arr['fee_type'] = ($arr['fee_type'] == 2) ? "学生(1200/人)" : "普通(2000/人)";
- }
- //是否做报告
- if (isset($arr['is_report'])) {
- $arr['is_report'] = ($arr['is_report'] == 1) ? "是" : "否";
- }
- // 酒店
- if (isset($arr['room_type'])) {
- $arr['room_type'] = ($arr['room_type'] == 1) ? "标准间" : "商务房";
- }
- if (isset($arr['is_share'])) {
- $arr['is_share'] = ($arr['is_share'] == 1) ? "是" : "否";
- }
- // 支付形式
- if (isset($arr['pay_type'])) {
- $arr['pay_type'] = ($arr['pay_type'] == 1) ? "汇款" : "现场缴费";
- }
- // 报名时间
- if (isset($arr['create_time'])) {
- date_default_timezone_set("PRC");
- $arr['create_time'] = date("Y-m-d H:i:s", $arr['create_time']);
- }
- return $arr;
- }
- public function test()
- {
- $res = $this->model->getByTruenameAndPhone('测试', '13366667777');
- var_dump($res);
- exit;
- }
- public function save()
- {
- $params = escapeString($_POST);
- // echo json_encode($params);
- // exit;
- if (empty($params['truename']) || empty($params['phone'])) {
- die(json_encode(['code'=>1, 'msg'=>'姓名 or 电话不能为空']));
- }
- $res = $this->model->getByTruenameAndPhone($params['truename'], $params['phone']);
- if ($res) {
- die(json_encode(['code'=>1, 'msg'=>'已经报名成功,请勿重复提交']));
- }
- // var_dump($res);
- // exit;
- $data = [
- "meeting_id" => 3,
- 'truename' => $params['truename'],
- 'organization' => $params['organization'],
- 'position' => $params['position'],
- 'sex' => $params['sex'],
- 'phone' => $params['phone'],
- 'email' => $params['email'],
- 'fee_type' => intval($params['feeType']),
- 'is_report' => intval($params['isReport']),
- 'report_title' => $params['reportTitle'],
- 'hotel_type' => 1,
- 'room_type' => intval($params['roomType']),
- 'is_share' => intval($params['isShare']),
- 'pay_type' => intval($params['payType']),
- 'is_pay' => intval($params['isPay']),
- 'money' =>floatval($params['money']),
- 'tax_type' => intval($params['taxType']),
- 'tax_title' => $params['taxTitle'],
- 'tax_number' => $params['taxNumber'],
- 'bank_account' => $params['bankAccount'],
- 'company_address' => $params['companyAddress'],
- 'company_phone' => $params['companyPhone'],
- 'mailing_address' => $params['mailingAddress'],
- 'postcode' => $params['postcode'],
- 'remark' => $params['remark'],
- 'member_type'=> 10,
- 'status' => 0,
- 'token' => md5($params['truename'] . $params['phone']),
- 'create_time' => time()
- ];
- $id = $params['id'];
- if ($id) {
- $data['id'] = $id;
- $res = $this->model->updateById($data);
- } else {
- $res = $this->model->save($data);
- }
- if (!$res) {
- echo json_encode(['code' => 2, 'msg'=>$this->model->lastErrorMsg()]);
- } else {
- echo json_encode(['code' => 0]);
- }
- }
- public function delete()
- {
- $id = escapeString($_POST['id']);
- if (!$id) {
- echo json_encode(['code' => 1, 'msg'=>'id不能为空']);
- }
- $res = $this->model->deleteById($id);
- if (!$res) {
- echo json_encode(['code' => 2, 'msg'=>$this->model->lastErrorMsg()]);
- } else {
- echo json_encode(['code' => 0]);
- }
- }
- public function export()
- {
- require_once (VENDOR . DS .'phpoffice/PHPExcel.php');
- // Create new PHPExcel object
- $objPHPExcel = new \PHPExcel();
- // Set document properties
- $objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
- ->setLastModifiedBy("Maarten Balliauw")
- ->setTitle("Office 2007 XLSX Test Document")
- ->setSubject("Office 2007 XLSX Test Document")
- ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
- ->setKeywords("office 2007 openxml php")
- ->setCategory("Test result file");
- // 设置D,E,F,G,I列宽
- $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(12);
- $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(13);
- $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(20);
- $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(13);
- $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(18);
- // 设置E,G,J,L,M,O,R列为文本格式
- $objPHPExcel->getActiveSheet()->getStyle('E')->getNumberFormat()
- ->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_TEXT);
- $objPHPExcel->getActiveSheet()->getStyle('G')->getNumberFormat()
- ->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_TEXT);
- $objPHPExcel->getActiveSheet()->getStyle('J')->getNumberFormat()
- ->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_TEXT);
- $objPHPExcel->getActiveSheet()->getStyle('L')->getNumberFormat()
- ->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_TEXT);
- $objPHPExcel->getActiveSheet()->getStyle('M')->getNumberFormat()
- ->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_TEXT);
- $objPHPExcel->getActiveSheet()->getStyle('O')->getNumberFormat()
- ->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_TEXT);
- $objPHPExcel->getActiveSheet()->getStyle('R')->getNumberFormat()
- ->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_TEXT);
- // 添加表头
- $objPHPExcel->setActiveSheetIndex(0)
- ->setCellValue('A1', 'ID')
- ->setCellValue('B1', '姓名')
- ->setCellValue('C1', '所属机构')
- ->setCellValue('D1', '职位')
- ->setCellValue('E1', '性别')
- ->setCellValue('F1', '电话')
- ->setCellValue('G1', '邮箱')
- ->setCellValue('H1', '注册费(类型)')
- ->setCellValue('I1', '是否做报告')
- ->setCellValue('J1', '报告题目')
- ->setCellValue('K1', '酒店')
- ->setCellValue('L1', '房型')
- ->setCellValue('M1', '是否接受合住')
- ->setCellValue('N1', '付款方式')
- ->setCellValue('O1', '是否付款')
- ->setCellValue('P1', '金额')
- ->setCellValue('Q1', '开票类型')
- ->setCellValue('R1', '发票抬头')
- ->setCellValue('S1', '纳税人识别号')
- ->setCellValue('T1', '开户行及账号')
- ->setCellValue('U1', '单位电话')
- ->setCellValue('V1', '单位地址')
- ->setCellValue('W1', '邮寄地址')
- ->setCellValue('X1', '邮编')
- ->setCellValue('Y1', '备注')
- ->setCellValue('Z1', '报名时间');
-
- $data = $this->model->dataList();
- if ($data) {
- $count = 1;
- foreach ($data as $value) {
- $count += 1;
- //替换性别等字符
- $value = $this->replaceDate($value);
- // 字符型数字前加空格" ", 以字符型插入excel
- $objPHPExcel->setActiveSheetIndex(0)
- ->setCellValue('A'.$count, $value['id'])
- ->setCellValue('B'.$count, $value['truename'])
- ->setCellValue('C'.$count, $value['organization'])
- ->setCellValue('D'.$count, $value['position'])
- ->setCellValue('E'.$count, $value['sex'])
- ->setCellValue('F'.$count, $value['phone'])
- ->setCellValue('G'.$count, $value['email'])
- ->setCellValue('H'.$count, $value['fee_type'])
- ->setCellValue('I'.$count, $value['is_report'])
- ->setCellValue('J'.$count, $value['report_title'])
- ->setCellValue('K'.$count, $value['hotel_type'])
- ->setCellValue('L'.$count, $value['room_type'])
- ->setCellValue('M'.$count, $value['is_share'])
- ->setCellValue('N'.$count, $value['pay_type'])
- ->setCellValue('O'.$count, $value['is_pay'])
- ->setCellValue('P'.$count, $value['money'])
- ->setCellValue('Q'.$count, $value['tax_type'])
- ->setCellValue('R'.$count, $value['tax_title'])
- ->setCellValue('S'.$count, $value['tax_number'])
- ->setCellValue('T'.$count, $value['bank_account'])
- ->setCellValue('U'.$count, $value['company_address'])
- ->setCellValue('V'.$count, $value['company_phone'])
- ->setCellValue('W'.$count, $value['mailing_address'])
- ->setCellValue('X'.$count, $value['postcode'])
- ->setCellValue('Y'.$count, $value['remark'])
- ->setCellValue('Z'.$count, $value['create_time']);
- }
- }
- // 命名标签页
- $objPHPExcel->getActiveSheet()->setTitle('2020耐蚀钢会网络报名表');
- // Set active sheet index to the first sheet, so Excel opens this as the first sheet
- $objPHPExcel->setActiveSheetIndex(0);
- // Redirect output to a client’s web browser (Excel2007)
- $filename = date('YmdHis') . ".xlsx";
- header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
- header('Content-Disposition: attachment;filename=' . $filename);
- header('Cache-Control: max-age=0');
- // If you're serving to IE 9, then the following may be needed
- header('Cache-Control: max-age=1');
- // If you're serving to IE over SSL, then the following may be needed
- header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
- header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified
- header('Cache-Control: cache, must-revalidate'); // HTTP/1.1
- header('Pragma: public'); // HTTP/1.0
- $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
- $objWriter->save('php://output');
- exit;
- }
- public function doPrint()
- {
- $id = $_POST['id'];
- if (!$id) {
- echo json_encode(['code' => 1, 'msg'=>'id不能为空']);
- }
- $time = time();
- $sql = "UPDATE `sign_bak` SET badge=1, status=1, printNum=printNum+1, printTime=$time WHERE member_id=$id";
- $res = $this->model->query($sql);
- if ($res===false) {
- echo json_encode(['code' => 2, 'msg'=>$this->model->lastErrorMsg()]);
- }
- $data = $this->model->getOneById($id);
- $data['img'] = $this->getQrcode($data['token']);
- header("Content-type: text/html; charset=utf-8");
- // var_dump($data);
- echo json_encode(['code'=>0, 'data'=>$data]);
- }
- public function getQrcode($token)
- {
- include_once(VENDOR . 'phpqrcode' . DS . 'phpqrcode.php');
- $codeUrl = 'http://meeting.ecorr.org/qrcode/webmeeting.html?token=' . $token;
- ob_start();//开启缓冲区
- \QRcode::png($codeUrl, false, 'L', 6, 1);//生成二维码
- $img = ob_get_contents();//获取缓冲区内容
- ob_end_clean();//清除缓冲区内容
- $imgInfo = 'data:image/png;base64,' . chunk_split(base64_encode($img));//转base64
- ob_flush();
- return $imgInfo;
- }
- public function printReceipt()
- {
- $ids = escapeString($_GET['ids']);
- $idarr = explode(',', $ids);
- $id = '(';
- foreach ($idarr as $value) {
- $id .= intval($value) . ',';
- }
- $id = rtrim($id, ',');
- $id .=")";
- $res = $this->model->dataList("where id IN $id");
- // var_dump($res);
- // exit;
- $name = [];
- $money = 0;
- $organization = '';
- foreach ($res as $val) {
- $name[] = $val['truename'];
- if ($val['fee_type']==1) {
- $money += 2000;
- } else {
- $money += 1200;
- }
- $organization = $val['organization'];
- }
- $pname = implode(',', $name);
- $this->assign('time', date('Y-m-d'));
- $this->assign('pname', $pname);
- $this->assign('money', $money);
- $this->assign('organization', $organization);
- $this->assign('dxmoney', $this->convertAmountToCn($money));
- $this->fetch();
- }
-
- /**
- * 将数值金额转换为中文大写金额
- * @param $amount float 金额(支持到分)
- * @param $type int 补整类型,0:到角补整;1:到元补整
- * @return mixed 中文大写金额
- */
- public function convertAmountToCn($amount, $type = 1) {
- // 判断输出的金额是否为数字或数字字符串
- if(!is_numeric($amount)){
- return "要转换的金额只能为数字!";
- }
-
- // 金额为0,则直接输出"零元整"
- if($amount == 0) {
- return "人民币零元整";
- }
-
- // 金额不能为负数
- if($amount < 0) {
- return "要转换的金额不能为负数!";
- }
-
- // 金额不能超过万亿,即12位
- if(strlen($amount) > 12) {
- return "要转换的金额不能为万亿及更高金额!";
- }
-
- // 预定义中文转换的数组
- $digital = array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖');
- // 预定义单位转换的数组
- $position = array('仟', '佰', '拾', '亿', '仟', '佰', '拾', '万', '仟', '佰', '拾', '元');
-
- // 将金额的数值字符串拆分成数组
- $amountArr = explode('.', $amount);
-
- // 将整数位的数值字符串拆分成数组
- $integerArr = str_split($amountArr[0], 1);
-
- // 将整数部分替换成大写汉字
- // $result = '人民币';
- $result = '';
- $integerArrLength = count($integerArr); // 整数位数组的长度
- $positionLength = count($position); // 单位数组的长度
- $zeroCount = 0; // 连续为0数量
- for($i = 0; $i < $integerArrLength; $i++) {
- // 如果数值不为0,则正常转换
- if($integerArr[$i] != 0){
- // 如果前面数字为0需要增加一个零
- if($zeroCount >= 1){
- $result .= $digital[0];
- }
- $result .= $digital[$integerArr[$i]] . $position[$positionLength - $integerArrLength + $i];
- $zeroCount = 0;
- }else{
- $zeroCount += 1;
- // 如果数值为0, 且单位是亿,万,元这三个的时候,则直接显示单位
- if(($positionLength - $integerArrLength + $i + 1)%4 == 0){
- $result = $result . $position[$positionLength - $integerArrLength + $i];
- }
- }
- }
-
- // 如果小数位也要转换
- if($type == 0) {
- // 将小数位的数值字符串拆分成数组
- $decimalArr = str_split($amountArr[1], 1);
- // 将角替换成大写汉字. 如果为0,则不替换
- if($decimalArr[0] != 0){
- $result = $result . $digital[$decimalArr[0]] . '角';
- }
- // 将分替换成大写汉字. 如果为0,则不替换
- if($decimalArr[1] != 0){
- $result = $result . $digital[$decimalArr[1]] . '分';
- }
- }else{
- $result = $result . '整';
- }
- return $result;
- }
- public function receipt()
- {
- $params = $_GET;
- // var_dump($params);
- $this->assign('data', $params);
- $this->fetch();
- }
- public function getab($y = 1000)
- {
- $res = [];
- $sum = 0;
- $s = 0;
- // echo mt_rand(1, 10);
- // var_dump($y);
- while(1){
- $ab = [];
- $ab['a'] = mt_rand(10, 20);
- $ab['b'] = mt_rand(10, 20);
- $sum += $ab['a'] * $ab['b'];
- if ($sum > $y) {
- break;
- }
- $s = $sum;
- $res[] = $ab;
- }
- $sy = $y - $s;
- var_dump($s);
- var_dump($sy);
- while(1){
- $ab = [];
- $ab['a'] = mt_rand(1, 200);
- $ab['b'] = mt_rand(1, 200);
- if ($ab['a'] * $ab['b'] == $sy) {
- $res[] = $ab;
- break;
- }
- }
- return $res;
- }
- }
|