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'] = '已过期'; } else { $qrcode['endtime'] = date('Y-m-d H:i:s',$qrcode['endtime']); } if ($qrcode['model'] == 2) { $qrcode['modellabel']="永久"; $qrcode['expire']="永不"; $qrcode['endtime'] = '永不'; } 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('执行成功
删除二维码:'.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("公众平台返回接口错误.
错误代码为: {$result['errorcode']}
错误信息为: {$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')); }