public function menu(){
$wechat = M('wx_user')->find();
if(empty($wechat)){
$this->error('请先在公众号配置添加公众号,才能进行微信菜单管理', U('Admin/Wechat/index'));
}
if(IS_POST){
$post_menu = input('post.menu/a');
//查询数据库是否存在
$menu_list = M('wx_menu')->where(array('token'=>$wechat['token']))->getField('id',true);
foreach($post_menu as $k=>$v){
$v['token'] = $wechat['token'];
if(in_array($k,$menu_list)){
//更新
M('wx_menu')->where(array('id'=>$k))->save($v);
}else{
//插入
M('wx_menu')->where(array('id'=>$k))->add($v);
}
}
//echo '<pre>';var_dump($menu_list);exit();
$this->success('操作成功,进入发布步骤',U('Admin/Wechat/pub_menu'));
exit;
}
//获取最大ID
//$max_id = M('wx_menu')->where(array('token'=>$wechat['token']))->field('max(id) as id')->find();
$max_id = DB::query("SHOW TABLE STATUS WHERE NAME = '__PREFIX__wx_menu'");
$max_id = $max_id[0]['auto_increment'] ? $max_id[0]['auto_increment'] : $max_id[0]['Auto_increment'];
//获取父级菜单
$p_menus = M('wx_menu')->where(array('token'=>$wechat['token'],'pid'=>0))->order('id ASC')->select();
$p_menus = convert_arr_key($p_menus,'id');
//获取二级菜单
$c_menus = M('wx_menu')->where(array('token'=>$wechat['token'],'pid'=>array('gt',0)))->order('id ASC')->select();
$c_menus = convert_arr_key($c_menus,'id');
$this->assign('p_lists',$p_menus);
$this->assign('c_lists',$c_menus);
$this->assign('max_id',$max_id ? $max_id-1 : 0);
return $this->fetch();
} /*
* 生成微信菜单
*/
public function pub_menu(){
$menu = array();
$menu['button'][] = array(
'name'=>'测试',
'type'=>'view',
'url'=>'http://wwwtp-shhop.cn'
);
$menu['button'][] = array(
'name'=>'测试',
'sub_button'=>array(
array(
"type"=> "scancode_waitmsg",
"name"=> "系统拍照发图",
"key"=> "rselfmenu_1_0",
"sub_button"=> array()
)
)
);
//获取菜单
$wechat = M('wx_user')->find();
//获取父级菜单
$p_menus = M('wx_menu')->where(array('token'=>$wechat['token'],'pid'=>0))->order('id ASC')->select();
$p_menus = convert_arr_key($p_menus,'id');
$post_str = $this->convert_menu($p_menus,$wechat['token']);
// http post请求
if(!count($p_menus) > 0){
$this->error('没有菜单可发布',U('Wechat/menu'));
exit;
}
$access_token = $this->get_access_token($wechat['appid'],$wechat['appsecret']);
//echo $access_token; exit();
if(!$access_token){
$this->error('获取access_token失败',U('Wechat/menu')); // http://www.nutshop.com/index.php/Admin/Wechat/menu
exit;
}
$url ="https://api.weixin.qq.com/cgi-bin/menu/create?access_token={$access_token}";
$return = httpRequest($url,'POST',$post_str);
$return = json_decode($return,1);
if($return['errcode'] == '0'){
$this->success('菜单已成功生成',U('Wechat/menu'));
}else{
echo "错误代码;".$return['errcode'];
//$this->error('错误代码',U('Wechat/menu'));
exit;
}
} ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。