You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
421 lines
17 KiB
421 lines
17 KiB
<?php
|
|
defined('IN_IA') or exit('Access Denied');
|
|
|
|
class Wechat_WeliamController {
|
|
|
|
public function info(){
|
|
global $_W;
|
|
$info = Util::object_array($_W['account']);
|
|
$info['serviceUrl'] = $_W['siteroot'] . 'api.php?id=' . $info['acid'];
|
|
include wl_template('wxplatform/info');
|
|
}
|
|
|
|
public function diymenu(){
|
|
global $_W,$_GPC;
|
|
load()->model('menu');
|
|
$do = 'post';
|
|
$type = intval($_GPC['type']);
|
|
$id = intval($_GPC['id']);
|
|
$copy = intval($_GPC['copy']);
|
|
if (empty($type)) {
|
|
if (!$_W['isajax']) {
|
|
$update_self_menu = menu_update_currentself();
|
|
if (is_error($update_self_menu)) {
|
|
wl_message($update_self_menu['message']);
|
|
}
|
|
}
|
|
$type = MENU_CURRENTSELF;
|
|
$default_menu = menu_default();
|
|
$id = intval($default_menu['id']);
|
|
}
|
|
$params = array();
|
|
if ($id > 0) {
|
|
$menu = menu_get($id);
|
|
if (empty($menu)) {
|
|
wl_message('菜单不存在或已经删除');
|
|
}
|
|
if (!empty($menu['data'])) {
|
|
$menu['data'] = iunserializer(base64_decode($menu['data']));
|
|
if (!empty($menu['data']['button'])) {
|
|
foreach ($menu['data']['button'] as &$button) {
|
|
if (!empty($button['url'])) {
|
|
$button['url'] = preg_replace('/(.*)redirect_uri=(.*)&response_type(.*)wechat_redirect/', '$2', $button['url']);
|
|
}
|
|
if (empty($button['sub_button'])) {
|
|
if ('media_id' == $button['type']) {
|
|
$button['type'] = 'click';
|
|
}
|
|
$button['sub_button'] = array();
|
|
} else {
|
|
$button['sub_button'] = !empty($button['sub_button']['list']) ? $button['sub_button']['list'] : $button['sub_button'];
|
|
foreach ($button['sub_button'] as &$subbutton) {
|
|
if (!empty($subbutton['url'])) {
|
|
$subbutton['url'] = preg_replace('/(.*)redirect_uri=(.*)&response_type(.*)wechat_redirect/', '$2', $subbutton['url']);
|
|
}
|
|
if ('media_id' == $subbutton['type']) {
|
|
$subbutton['type'] = 'click';
|
|
}
|
|
}
|
|
unset($subbutton);
|
|
}
|
|
}
|
|
unset($button);
|
|
}
|
|
if (!empty($menu['data']['matchrule']['province'])) {
|
|
$menu['data']['matchrule']['province'] .= '省';
|
|
}
|
|
if (!empty($menu['data']['matchrule']['city'])) {
|
|
$menu['data']['matchrule']['city'] .= '市';
|
|
}
|
|
if (empty($menu['data']['matchrule']['sex'])) {
|
|
$menu['data']['matchrule']['sex'] = 0;
|
|
}
|
|
if (empty($menu['data']['matchrule']['group_id'])) {
|
|
$menu['data']['matchrule']['group_id'] = -1;
|
|
}
|
|
if (empty($menu['data']['matchrule']['client_platform_type'])) {
|
|
$menu['data']['matchrule']['client_platform_type'] = 0;
|
|
}
|
|
if (empty($menu['data']['matchrule']['language'])) {
|
|
$menu['data']['matchrule']['language'] = '';
|
|
}
|
|
$params = $menu['data'];
|
|
$params['title'] = $menu['title'];
|
|
$params['type'] = $menu['type'];
|
|
$params['id'] = $menu['id'];
|
|
$params['status'] = $menu['status'];
|
|
}
|
|
$type = $menu['type'];
|
|
}
|
|
$status = $params['status'];
|
|
//$groups = mc_fans_groups();
|
|
$languages = menu_languages();
|
|
if ($_W['isajax'] && $_W['ispost']) {
|
|
set_time_limit(0);
|
|
$_GPC['group']['title'] = trim($_GPC['group']['title']);
|
|
$_GPC['group']['type'] = 0 == intval($_GPC['group']['type']) ? 1 : intval($_GPC['group']['type']);
|
|
$post = $_GPC['group'];
|
|
if (empty($post['title'])) {
|
|
iajax(-1, '请填写菜单组名称!', '');
|
|
}
|
|
$check_title_exist_condition = array(
|
|
'title' => $post['title'],
|
|
'type' => $type,
|
|
'uniacid' => $_W['uniacid']
|
|
);
|
|
if (!empty($id)) {
|
|
$check_title_exist_condition['id <>'] = $id;
|
|
}
|
|
$check_title_exist = pdo_getcolumn('uni_account_menus', $check_title_exist_condition, 'id');
|
|
if (!empty($check_title_exist)) {
|
|
iajax(-1, '菜单组名称已存在,请重新命名!', '');
|
|
}
|
|
if (MENU_CONDITIONAL == $post['type'] && empty($post['matchrule'])) {
|
|
iajax(-1, '请选择菜单显示对象', '');
|
|
}
|
|
if (!empty($post['button'])) {
|
|
foreach ($post['button'] as $key => &$button) {
|
|
$keyword_exist = strexists($button['key'], 'keyword:');
|
|
if ($keyword_exist) {
|
|
$button['key'] = substr($button['key'], 8);
|
|
}
|
|
if (!empty($button['sub_button'])) {
|
|
foreach ($button['sub_button'] as &$subbutton) {
|
|
$sub_keyword_exist = strexists($subbutton['key'], 'keyword:');
|
|
if ($sub_keyword_exist) {
|
|
$subbutton['key'] = substr($subbutton['key'], 8);
|
|
}
|
|
}
|
|
unset($subbutton);
|
|
}
|
|
}
|
|
unset($button);
|
|
}
|
|
|
|
$is_conditional = MENU_CONDITIONAL == $post['type'] ? true : false;
|
|
$account_api = WeAccount::createByUniacid();
|
|
$menu = $account_api->menuBuild($post, $is_conditional);
|
|
if ('publish' == $_GPC['submit_type'] || $is_conditional) {
|
|
$result = $account_api->menuCreate($menu);
|
|
} else {
|
|
$result = true;
|
|
}
|
|
if (is_error($result)) {
|
|
iajax($result['errno'], $result['message']);
|
|
} else {
|
|
if ($post['matchrule']['group_id'] != -1) {
|
|
$menu['matchrule']['groupid'] = $menu['matchrule']['tag_id'];
|
|
unset($menu['matchrule']['tag_id']);
|
|
}
|
|
$menu = json_decode(urldecode(json_encode($menu)), true);
|
|
|
|
$insert = array(
|
|
'uniacid' => $_W['uniacid'],
|
|
'menuid' => $result,
|
|
'title' => $post['title'],
|
|
'type' => $post['type'],
|
|
'sex' => intval($menu['matchrule']['sex']),
|
|
'group_id' => isset($menu['matchrule']['group_id']) ? $menu['matchrule']['group_id'] : -1,
|
|
'client_platform_type' => intval($menu['matchrule']['client_platform_type']),
|
|
'area' => trim($menus['matchrule']['country']) . trim($menu['matchrule']['province']) . trim($menu['matchrule']['city']),
|
|
'data' => base64_encode(iserializer($menu)),
|
|
'status' => STATUS_ON,
|
|
'createtime' => TIMESTAMP,
|
|
);
|
|
|
|
if (MENU_CURRENTSELF == $post['type']) {
|
|
if (!empty($id)) {
|
|
pdo_update('uni_account_menus', $insert, array('uniacid' => $_W['uniacid'], 'type' => MENU_CURRENTSELF, 'id' => $id));
|
|
} else {
|
|
pdo_insert('uni_account_menus', $insert);
|
|
}
|
|
iajax(0, '创建菜单成功', web_url('wxplatform/wechat/diymenulist'));
|
|
} elseif (MENU_CONDITIONAL == $post['type']) {
|
|
if (STATUS_OFF == $post['status'] && $post['id'] > 0) {
|
|
pdo_update('uni_account_menus', $insert, array('uniacid' => $_W['uniacid'], 'type' => MENU_CONDITIONAL, 'id' => $post['id']));
|
|
} else {
|
|
pdo_insert('uni_account_menus', $insert);
|
|
}
|
|
iajax(0, '创建菜单成功', web_url('wxplatform/wechat/diymenulist', array('type' => MENU_CONDITIONAL)));
|
|
}
|
|
}
|
|
}
|
|
include wl_template('wxplatform/menu');
|
|
}
|
|
|
|
public function diymenulist(){
|
|
global $_W,$_GPC;
|
|
load()->model('menu');
|
|
$do = 'display';
|
|
set_time_limit(0);
|
|
$type = !empty($_GPC['type']) ? intval($_GPC['type']) : MENU_CURRENTSELF;
|
|
if (MENU_CONDITIONAL == $type) {
|
|
$update_conditional_menu = menu_update_conditional();
|
|
if (is_error($update_conditional_menu)) {
|
|
wl_message($update_conditional_menu['message']);
|
|
}
|
|
}
|
|
$pindex = max(1, intval($_GPC['page']));
|
|
$psize = 15;
|
|
$condition = ' WHERE uniacid = :uniacid';
|
|
$params[':uniacid'] = $_W['uniacid'];
|
|
if (isset($_GPC['keyword'])) {
|
|
$condition .= ' AND title LIKE :keyword';
|
|
$params[':keyword'] = "%{$_GPC['keyword']}%";
|
|
}
|
|
if (!empty($type)) {
|
|
$condition .= ' AND type = :type';
|
|
$params[':type'] = $type;
|
|
}
|
|
$total = pdo_fetchcolumn('SELECT COUNT(*) FROM ' . tablename('uni_account_menus') . $condition, $params);
|
|
$data = pdo_fetchall('SELECT * FROM ' . tablename('uni_account_menus') . $condition . ' ORDER BY type ASC, status DESC,id DESC LIMIT ' . ($pindex - 1) * $psize . ',' . $psize, $params);
|
|
$pager = wl_pagination($total, $pindex, $psize);
|
|
// if (MENU_CONDITIONAL == $type) {
|
|
// $names = array(
|
|
// 'sex' => array('不限', '男', '女'),
|
|
// 'client_platform_type' => array('不限', '苹果', '安卓', '其他'),
|
|
// );
|
|
// $groups = mc_fans_groups(true);
|
|
// }
|
|
|
|
|
|
include wl_template('wxplatform/menu');
|
|
}
|
|
|
|
public function autoreply(){
|
|
global $_W,$_GPC;
|
|
$pindex = max(1, intval($_GPC['page']));
|
|
$psize = 10;
|
|
$where['uniacid'] = $_W['uniacid'];
|
|
//筛选
|
|
$search = trim($_GPC['search']);
|
|
$keywordtype = $_GPC['keywordtype'];
|
|
if(!empty($search) && !empty($keywordtype)){
|
|
if($keywordtype == 1){//规则名
|
|
$where['@name@'] = $search;
|
|
}else if($keywordtype == 2){
|
|
//关键字
|
|
$params[':content'] = "%{$search}%";
|
|
$kwlists = pdo_fetchall("SELECT rid FROM " . tablename('rule_keyword') . "WHERE uniacid = {$_W['uniacid']} AND content LIKE :content", $params);
|
|
if ($kwlists) {
|
|
$rids = "(";
|
|
foreach ($kwlists as $key => $v) {
|
|
if ($key == 0) {
|
|
$rids .= $v['rid'];
|
|
} else {
|
|
$rids .= "," . $v['rid'];
|
|
}
|
|
}
|
|
$rids .= ")";
|
|
$where['id#'] = $rids;
|
|
}else{
|
|
$where['id#'] = "(0)";
|
|
}
|
|
}
|
|
}
|
|
$rList = Util::getNumData('*','rule', $where, 'displayorder DESC,id DESC', $pindex, $psize, 1);
|
|
$list = $rList[0];
|
|
$pager = $rList[1];
|
|
foreach ($list as $key => &$li) {
|
|
//关键字
|
|
$kw = pdo_getall('rule_keyword',array('rid' => $li['id']),array('content','type'),'','displayorder DESC');
|
|
$li['keyword'] = $kw;
|
|
//回复内容
|
|
if(empty($li['containtype'])){
|
|
$li['content'] = '系统设置';
|
|
}else{
|
|
$allnum = 0;
|
|
$li['containtype'] = explode(',',$li['containtype']);
|
|
foreach($li['containtype'] as $containtype){
|
|
if($containtype == 'basic'){
|
|
$basicnum = pdo_fetchcolumn('SELECT count(id) FROM '.tablename('basic_reply')." WHERE rid = {$li['id']}");
|
|
$allnum += $basicnum;
|
|
}else if($containtype == 'images'){
|
|
$imagenum = pdo_fetchcolumn('SELECT count(id) FROM '.tablename('images_reply')." WHERE rid = {$li['id']}");
|
|
$allnum += $imagenum;
|
|
}
|
|
}
|
|
$li['content'] = '共'.$allnum.'条(';
|
|
if($basicnum > 0){
|
|
$li['content'] .= $basicnum.'条文字 ';
|
|
}
|
|
if($imagenum > 0){
|
|
$li['content'] .= $imagenum.'条图片 ';
|
|
}
|
|
$li['content'] .= ')';
|
|
}
|
|
}
|
|
include wl_template('wxplatform/replylist');
|
|
}
|
|
|
|
public function changeReplyStatus(){
|
|
global $_W,$_GPC;
|
|
$id = $_GPC['id'] OR Commons::sRenderError('缺少参数,请刷新重试');
|
|
$status = $_GPC['status'] ?: 0;
|
|
$res = pdo_update('rule',array('status' => $status),array('id' => $id));
|
|
if ($res) Commons::sRenderSuccess('修改成功');
|
|
else Commons::sRenderError('修改失败,请刷新重试!');
|
|
}
|
|
|
|
public function deteleReply(){
|
|
global $_W,$_GPC;
|
|
$id = $_GPC['id'];
|
|
$ids = $_GPC['ids'];
|
|
if(!empty($id)){
|
|
Wxplatform::deteleOneReply($id,1);
|
|
}
|
|
if(!empty($ids)){
|
|
foreach ($ids as $k => $v){
|
|
Wxplatform::deteleOneReply($v,1);
|
|
}
|
|
}
|
|
show_json(1, '操作成功');
|
|
}
|
|
|
|
public function creatReply(){
|
|
global $_W,$_GPC;
|
|
$id = $_GPC['id'];
|
|
$reply = pdo_get('rule',array('id' => $id));
|
|
$reply['kwlist'] = pdo_getall('rule_keyword',array('rid' => $id),array('content','type'));
|
|
$reply['baselist'] = pdo_getall('basic_reply',array('rid' => $id),array('content'));
|
|
$reply['imglist'] = pdo_getall('images_reply',array('rid' => $id),array('imgurl'));
|
|
|
|
if ($_W['ispost']) {
|
|
$reply = $_GPC['reply'];
|
|
$reply['module'] = 'reply';
|
|
$reply['uniacid'] = $_W['uniacid'];
|
|
$keyword = $_GPC['keyword'];
|
|
$kwtype = $_GPC['kwtype'];
|
|
$contenttext = $_GPC['contenttext'];
|
|
$contentimg = $_GPC['contentimg'];
|
|
if(empty($keyword)){
|
|
Commons::sRenderError('请设置关键字!');
|
|
}
|
|
if(empty($contenttext) && empty($contentimg)){
|
|
Commons::sRenderError('请设置回复内容!');
|
|
}
|
|
$reply['containtype'] = '';
|
|
if(!empty($contenttext)){
|
|
$reply['containtype'] .= 'basic,';
|
|
}
|
|
if(!empty($contentimg)){
|
|
$reply['containtype'] .= 'images';
|
|
}
|
|
if($id > 0){
|
|
pdo_update('rule',$reply,array('id' => $id));
|
|
Wxplatform::deteleOneReply($id);
|
|
$rid = $id;
|
|
}else{
|
|
pdo_insert('rule',$reply);
|
|
$rid = pdo_insertid();
|
|
}
|
|
foreach($keyword as $k => $kwd){
|
|
$kwinfo = [
|
|
'rid' => $rid,
|
|
'uniacid' => $_W['uniacid'],
|
|
'module' => 'reply',
|
|
'content' => $kwd,
|
|
'type' => $kwtype[$k],
|
|
'status' => 1
|
|
];
|
|
pdo_insert('rule_keyword',$kwinfo);
|
|
}
|
|
if(!empty($contenttext)){
|
|
foreach($contenttext as $text){
|
|
$textinfo = [
|
|
'rid' => $rid,
|
|
'content' => $text,
|
|
];
|
|
pdo_insert('basic_reply',$textinfo);
|
|
}
|
|
}
|
|
if(!empty($contentimg)){
|
|
foreach($contentimg as $img){
|
|
$imginfo = [
|
|
'rid' => $rid,
|
|
'mediaid' => Wxplatform::uploadTemporaryMaterial($img),
|
|
'imgurl' => $img,
|
|
'createtime' => time()
|
|
];
|
|
pdo_insert('images_reply',$imginfo);
|
|
}
|
|
}
|
|
wl_message('保存成功!' ,web_url('wxplatform/wechat/autoreply'), 'success');
|
|
}
|
|
|
|
include wl_template('wxplatform/creatreply');
|
|
}
|
|
|
|
public function imgdiv(){
|
|
global $_W,$_GPC;
|
|
$kw = $_GPC['kw'];
|
|
include wl_template('wxplatform/imgdiv');
|
|
}
|
|
|
|
public function push(){
|
|
global $_W,$_GPC;
|
|
load()->model('menu');
|
|
$id = intval($_GPC['id']);
|
|
$result = menu_push($id);
|
|
|
|
if (is_error($result)) {
|
|
show_json(0, $result['message']);
|
|
} else {
|
|
show_json(1, '操作成功');
|
|
}
|
|
}
|
|
|
|
public function delete(){
|
|
global $_W,$_GPC;
|
|
load()->model('menu');
|
|
$id = intval($_GPC['id']);
|
|
$result = menu_delete($id);
|
|
if (is_error($result)) {
|
|
wl_message('删除失败'.$result['message'] ,referer(), 'error');
|
|
}
|
|
wl_message('删除成功!' ,referer(), 'success');
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|