123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238 |
- <?php
- /**
- * [WeEngine System] Copyright (c) 2014 WE7.CC
- * WeEngine is NOT a free software, it under the license terms, visited http://www.we7.cc/ for more details.
- */
-
- defined('IN_IA') or exit('Access Denied');
- load()->model('module');
- load()->model('account');
- load()->func('communication');
- load()->model('setting');
-
- $dos = array('display', 'post', 'list', 'del', 'extend', 'SubDisplay', 'check_scene_str', 'down_qr', 'change_status');
- $do = in_array($do, $dos) ? $do : 'list';
-
- if ($do == 'check_scene_str') {
- $scene_str = trim($_GPC['scene_str']);
- $is_exist = pdo_fetchcolumn('SELECT id FROM ' . tablename('qrcode') . ' WHERE uniacid = :uniacid AND acid = :acid AND scene_str = :scene_str AND model = 2', array(':uniacid' => $_W['uniacid'], ':acid' => $_W['acid'], ':scene_str' => $scene_str));
- if (!empty($is_exist)) {
- iajax(1, 'repeat', '');
- }
- iajax(0, 'success', '');
- }
-
- if ($do == 'list') {
- $_W['page']['title'] = '二维码管理 - 高级功能';
- permission_check_account_user('platform_qr_qr');
- $wheresql = " WHERE uniacid = :uniacid AND acid = :acid AND type = 'scene'";
- $param = array(':uniacid' => $_W['uniacid'], ':acid' => $_W['acid']);
- $keyword = trim($_GPC['keyword']);
- if(!empty($keyword)) {
- $wheresql .= " AND name LIKE '%{$keyword}%'";
- }
- $pindex = max(1, intval($_GPC['page']));
- $psize = 20;
- $list = pdo_fetchall("SELECT * FROM ".tablename('qrcode'). $wheresql . ' ORDER BY `id` DESC LIMIT '.($pindex - 1) * $psize.','. $psize, $param);
- if (!empty($list)) {
- foreach ($list as $index => &$qrcode) {
- $qrcode['showurl'] = 'https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=' . urlencode($qrcode['ticket']);
- $qrcode['endtime'] = $qrcode['createtime'] + $qrcode['expire'];
- if (TIMESTAMP > $qrcode['endtime']) {
- $qrcode['endtime'] = '<font color="red">已过期</font>';
- } else {
- $qrcode['endtime'] = date('Y-m-d H:i:s',$qrcode['endtime']);
- }
- if ($qrcode['model'] == 2) {
- $qrcode['modellabel']="永久";
- $qrcode['expire']="永不";
- $qrcode['endtime'] = '<font color="green">永不</font>';
- } else {
- $qrcode['modellabel']="临时";
- }
- }
- unset($qrcode);
- }
- $total = pdo_fetchcolumn('SELECT COUNT(*) FROM ' . tablename('qrcode') . $wheresql, $param);
- $pager = pagination($total, $pindex, $psize);
-
- pdo_query("UPDATE ".tablename('qrcode')." SET status = '0' WHERE uniacid = '{$_W['uniacid']}' AND model = '1' AND createtime < '{$_W['timestamp']}' - expire");
- template('platform/qr-list');
- }
-
- if ($do == 'del') {
- if ($_GPC['scgq']) {
- $list = pdo_fetchall("SELECT id FROM ".tablename('qrcode')." WHERE uniacid = :uniacid AND acid = :acid AND status = '0' AND type='scene'", array(':uniacid' => $_W['uniacid'], ':acid' => $_W['acid']), 'id');
- if (!empty($list)) {
- pdo_delete('qrcode', array('id' => array_keys($list)));
- pdo_delete('qrcode_stat', array('id' => array_keys($list)));
- }
- itoast('执行成功<br />删除二维码:'.count($list), url('platform/qr/list'),'success');
- } else {
- $id = intval($_GPC['id']);
- pdo_delete('qrcode', array('id' =>$id, 'uniacid' => $_W['uniacid']));
- pdo_delete('qrcode_stat',array('qid' => $id, 'uniacid' => $_W['uniacid']));
- itoast('删除成功',url('platform/qr/list'),'success');
- }
- }
-
- if ($do == 'post') {
- $_W['page']['title'] = '生成二维码 - 二维码管理 - 高级功能';
-
- if (checksubmit('submit')){
- $barcode = array(
- 'expire_seconds' => '',
- 'action_name' => '',
- 'action_info' => array(
- 'scene' => array(),
- ),
- );
- $qrctype = intval($_GPC['qrc-model']);
- $acid = intval($_W['acid']);
- $uniacccount = WeAccount::createByUniacid();
- $id = intval($_GPC['id']);
- $keyword_id = intval(trim(htmlspecialchars_decode($_GPC['reply']['reply_keyword']), "\""));;
- $keyword = pdo_get('rule_keyword', array('id' => $keyword_id), array('content'));
- if (!empty($id)) {
- $update = array(
- 'keyword' => $keyword['content'],
- 'name' => trim($_GPC['scene-name'])
- );
- pdo_update('qrcode', $update, array('uniacid' => $_W['uniacid'], 'id' => $id));
- itoast('恭喜,更新带参数二维码成功!', url('platform/qr/list'), 'success');
- }
-
- if ($qrctype == 1) {
- $qrcid = pdo_fetchcolumn("SELECT qrcid FROM ".tablename('qrcode')." WHERE acid = :acid AND model = '1' AND type = 'scene' ORDER BY qrcid DESC LIMIT 1", array(':acid' => $acid));
- $barcode['action_info']['scene']['scene_id'] = !empty($qrcid) ? ($qrcid + 1) : 100001;
- $barcode['expire_seconds'] = intval($_GPC['expire-seconds']);
- $barcode['action_name'] = 'QR_SCENE';
- $result = $uniacccount->barCodeCreateDisposable($barcode);
- } else if ($qrctype == 2) {
- $scene_str = trim($_GPC['scene_str']) ? trim($_GPC['scene_str']) : itoast('场景值不能为空', '', '');
- $is_exist = pdo_fetchcolumn('SELECT id FROM ' . tablename('qrcode') . ' WHERE uniacid = :uniacid AND acid = :acid AND scene_str = :scene_str AND model = 2', array(':uniacid' => $_W['uniacid'], ':acid' => $_W['acid'], ':scene_str' => $scene_str));
- if (!empty($is_exist)) {
- itoast("场景值:{$scene_str}已经存在,请更换场景值", '', 'error');
- }
- $barcode['action_info']['scene']['scene_str'] = $scene_str;
- $barcode['action_name'] = 'QR_LIMIT_STR_SCENE';
- $result = $uniacccount->barCodeCreateFixed($barcode);
- } else {
- itoast('抱歉,此公众号暂不支持您请求的二维码类型!', '', '');
- }
-
- if (!is_error($result)) {
- $insert = array(
- 'uniacid' => $_W['uniacid'],
- 'acid' => $acid,
- 'qrcid' => $barcode['action_info']['scene']['scene_id'],
- 'scene_str' => $barcode['action_info']['scene']['scene_str'],
- 'keyword' => $keyword['content'],
- 'name' => $_GPC['scene-name'],
- 'model' => $_GPC['qrc-model'],
- 'ticket' => $result['ticket'],
- 'url' => $result['url'],
- 'expire' => $result['expire_seconds'],
- 'createtime' => TIMESTAMP,
- 'status' => '1',
- 'type' => 'scene',
- );
- pdo_insert('qrcode', $insert);
- itoast('恭喜,生成带参数二维码成功!', url('platform/qr/list', array('name' => 'qrcode')), 'success');
- } else {
- itoast("公众平台返回接口错误. <br />错误代码为: {$result['errorcode']} <br />错误信息为: {$result['message']}", '', '');
- }
- }
-
- if (!empty($_GPC['id'])) {
- $id = intval($_GPC['id']);
- $row = pdo_fetch("SELECT * FROM ".tablename('qrcode')." WHERE uniacid = {$_W['uniacid']} AND id = '{$id}'");
- $rid = pdo_get('rule_keyword', array('uniacid' => $_W['uniacid'], 'content' => $row['keyword']), array('rid'));
- $rid = $rid['rid'];
- $setting_keyword = $row['keyword'];
- }
- template('platform/qr-post');
- }
-
- if ($do == 'extend') {
- $id = intval($_GPC['id']);
- if (!empty($id)) {
- $qrcrow = pdo_fetch("SELECT * FROM ".tablename('qrcode')." WHERE uniacid = :uniacid AND id = :id LIMIT 1", array(':uniacid' => $_W['uniacid'], ':id' => $id));
- $update = array();
- if ($qrcrow['model'] == 1) {
- $uniacccount = WeAccount::createByUniacid();
- $barcode['action_info']['scene']['scene_id'] = $qrcrow['qrcid'];
- $barcode['expire_seconds'] = 2592000;
- $barcode['action_name'] = 'QR_SCENE';
- $result = $uniacccount->barCodeCreateDisposable($barcode);
- if (is_error($result)) {
- itoast($result['message'], '', 'error');
- }
- $update['ticket'] = $result['ticket'];
- $update['url'] = $result['url'];
- $update['expire'] = $result['expire_seconds'];
- $update['createtime'] = TIMESTAMP;
- pdo_update('qrcode', $update, array('id' => $id, 'uniacid' => $_W['uniacid']));
- }
- itoast('恭喜,延长临时二维码时间成功!', referer(), 'success');
- }
- }
-
- if ($do == 'display' || $do == 'change_status') {
- $status_setting = setting_load('qr_status');
- $status = $status_setting['qr_status']['status'];
- }
-
- if ($do == 'display') {
- $_W['page']['title'] = '扫描统计 - 二维码管理 - 高级功能';
- permission_check_account_user('platform_qr_statistics');
- $pindex = max(1, intval($_GPC['page']));
- $psize = 30;
- $qrcode_table = table('qrcode');
- $starttime = empty($_GPC['time']['start']) ? TIMESTAMP - 86399 * 30 : strtotime($_GPC['time']['start']);
- $endtime = empty($_GPC['time']['end']) ? TIMESTAMP + 6*86400 : strtotime($_GPC['time']['end']) + 86399;
-
- $qrcode_table->searchTime($starttime, $endtime);
- $keyword = trim($_GPC['keyword']);
- if (!empty($keyword)) {
- $qrcode_table->searchKeyword($keyword);
- }
- $qrcode_table->searchWithPage($pindex, $psize);
- $list = $qrcode_table->qrcodeStaticList($status);
- $total = $count = $qrcode_table->getLastQueryTotal();
-
- if (!empty($list)) {
- $openid = array();
- foreach ($list as $qrcode) {
- if (!in_array($qrcode['openid'], $openid)) {
- $openid[] = $qrcode['openid'];
- }
- }
- unset($qrcode);
- $fans_table = table('fans');
- $nickname = $fans_table->fansAll($openid);
- }
- $pager = pagination($total, $pindex, $psize);
- template('platform/qr-display');
- }
-
- if ($do == 'down_qr') {
- $id = intval($_GPC['id']);
- $down = pdo_get('qrcode', array('id' => $id));
- $pic = 'https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=' . urlencode($down['ticket']);
- header("Cache-control:private");
- header('content-type:image/jpeg');
- header('content-disposition: attachment;filename="'.$down['name'].'.jpg"');
- readfile($pic);
- exit();
- }
-
- if ($do == 'change_status') {
- $up_status['status'] = empty($status) ? 1 : 0;
- $update = setting_save($up_status, 'qr_status');
- if ($update) {
- iajax(0, '');
- }
- iajax(-1, '更新失败', url('platform/qr/display'));
- }
|