MenusController.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. <?php
  2. namespace App\Http\Controllers\Wechat\Menu;
  3. use App\Http\Requests;
  4. use Illuminate\Http\Request;
  5. use Illuminate\Http\Response;
  6. use EasyWeChat\Foundation\Application;
  7. use Cookie;
  8. /**
  9. * 菜单管理
  10. * TODO:自动添加公众号默认菜单
  11. * @author zhoulingjie
  12. *
  13. */
  14. class MenusController
  15. {
  16. public function __construct($_param)
  17. {
  18. $this->param = $_param;
  19. $this->app = $_param['app'];
  20. $this->WechatApi = $_param['WechatApi'];
  21. }
  22. /**
  23. * menu/set_menu
  24. * @param Request $request
  25. */
  26. public function set_menu()
  27. {
  28. $add_menus = $this->WechatApi->get_official_account_menus($this->param['gzh_app_id']);
  29. v('set_menu_start');
  30. if(empty($add_menus)){
  31. v('set_menu_invalid_param');
  32. return false;
  33. }
  34. $menu = $this->app->menu;
  35. v('set_menu:');
  36. v($add_menus);
  37. try{
  38. // 先删再加,解决菜单缓存问题
  39. $del_menu = $menu->destroy();
  40. v('del_menu');v($del_menu);
  41. $add_menu = $menu->add($add_menus);
  42. v('add_menu');v($add_menu);
  43. //存在pay链接 才过滤iOS 充值入口
  44. $ios_menus = [];
  45. $is_exist_pay = false;
  46. foreach ($add_menus as $k=>$_menu)
  47. {
  48. if(isset($_menu['sub_button']))
  49. {
  50. $name = $_menu['name'];
  51. $sub_button = [];
  52. foreach($_menu['sub_button'] as $j=>$_sub_menu)
  53. {
  54. if(isset($_sub_menu['url']) && strstr($_sub_menu['url'],'/pay'))
  55. {
  56. $is_exist_pay = true;
  57. }else{
  58. $sub_button[] = $_sub_menu;
  59. }
  60. }
  61. if($sub_button) $ios_menus[] = compact('name','sub_button');
  62. }else{
  63. if(isset($_sub_menu['url']) && strstr($_menu['url'],'/pay'))
  64. {
  65. $is_exist_pay = true;
  66. }else{
  67. $ios_menus[] = $_menu;
  68. }
  69. }
  70. }
  71. $res = $is_exist_pay ? $menu->add($ios_menus,['client_platform_type'=>"1"]) : '';
  72. v('add_menu');v($res);
  73. }catch(\Exception $e){
  74. v('set_menu_ept:'.$e->getMessage());
  75. }
  76. v('set_menu_end');
  77. }
  78. /**
  79. * menu/set_menu
  80. * @param Request $request
  81. */
  82. public function set_menu2()
  83. {
  84. v('set_menu_start');
  85. $menu = $this->app->menu;
  86. $base_url = 'http://site'.$this->param['distribution_channel_id'].'.'.$this->param['distribution_menu_host'];
  87. $buttons =
  88. [
  89. [
  90. "type" => "view",
  91. "name" => "继续阅读",
  92. "url" => $base_url.'continue',
  93. ],
  94. [
  95. "type" => "view",
  96. "name" => "书城首页",
  97. "url" => $base_url,
  98. ],
  99. [
  100. "name" => "用户中心",
  101. "sub_button" =>
  102. [
  103. [
  104. "type" => "view",
  105. "name" => "个人中心",
  106. "url" => $base_url.'user',
  107. ],
  108. [
  109. "type" => "view",
  110. "name" => "阅读记录",
  111. "url" => $base_url.'bookshelf',
  112. ],
  113. [
  114. "type" => "view",
  115. "name" => "我要充值",
  116. "url" => $base_url.'paycenter',
  117. ],
  118. [
  119. "type" => "click",
  120. "name" => "联系客服",
  121. "key" => 'contact_customer',
  122. ],
  123. ],
  124. ],
  125. ];
  126. v('set_menu:');
  127. v($buttons);
  128. v($menu->add($buttons));
  129. v('set_menu_end');
  130. }
  131. }