WxMenuController.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. <?php
  2. namespace business\controllers;
  3. use biz\weixin\services\WxMenuService;
  4. use common\components\configDict;
  5. use common\components\util;
  6. use common\components\weixinUtil;
  7. use common\services\xhWxMenuService;
  8. use Yii;
  9. class WxMenuController extends BaseController
  10. {
  11. //更新菜单
  12. public function actionUpdate()
  13. {
  14. $menu = Yii::$app->request->post('menu');
  15. $menu =
  16. [
  17. ['name' => '商城', 'menuOption' => 0, 'menuOrder' => 1, 'replyType' => 0, 'replyUrl' => 'http://www.baidu.com/', 'children' => [['name' => '鲜花类别', 'menuOption' => 0, 'menuOrder' => 1, 'replyUrl' => 'http://www.baidu.com/', 'replyType' => 0]]],
  18. ['name' => '商城', 'menuOption' => 0, 'menuOrder' => 2, 'replyType' => 0, 'replyUrl' => 'http://www.baidu.com/', 'children' => []],
  19. ['name' => '商城', 'menuOption' => 0, 'menuOrder' => 3, 'replyType' => 0, 'replyUrl' => 'http://www.baidu.com/', 'children' => []],
  20. ];
  21. //删除原有菜单
  22. xhWxMenuService::delMenuList($this->merchantId);
  23. $date = date("Y-m-d H:i:s");
  24. foreach ($menu as $key => $val) {//一级菜单数据整理
  25. $parentOrder = $val['menuOrder'];
  26. $parentWxMenuOption = $val['menuOption'];
  27. $parentName = $val['name'];
  28. $addData = [];
  29. $addData['parentId'] = 0;
  30. $addData['merchantId'] = $this->merchantId;
  31. $addData['menuOrder'] = $parentOrder;
  32. $addData['menuOption'] = $parentWxMenuOption;
  33. $addData['hasSonMenu'] = isset($val['children']) && !empty($val['children']) ? 1 : 0;
  34. $addData['name'] = $parentName;
  35. $addData['menuKey'] = $this->merchantId . '_' . $parentOrder;
  36. $addData['createTime'] = $date;
  37. $addData['replyType'] = $val['replyType'];
  38. $addData['replyUrl'] = $val['replyUrl'];
  39. if (!empty($wxMenuContent)) {
  40. $formatData = xhWxMenuService::getFormatData($wxMenuContent, $parentWxMenuOption, $this->merchant);
  41. $addData = array_merge($addData, $formatData);
  42. }
  43. $return = xhWxMenuService::add($addData);
  44. $parentId = $return['id'];
  45. if (isset($val['children']) && !empty($val['children'])) {
  46. foreach ($val['children'] as $childKey => $childValue) {
  47. $childOrder = $childValue['menuOrder'];
  48. $childWxMenuOption = $childValue['menuOption'];
  49. $childName = $childValue['name'];
  50. $addChildData = [];
  51. $addChildData['parentId'] = $parentId;
  52. $addChildData['merchantId'] = $this->merchantId;
  53. $addChildData['menuOrder'] = $childOrder;
  54. $addChildData['menuOption'] = $childWxMenuOption;
  55. $addChildData['name'] = $childName;
  56. $addChildData['menuKey'] = $this->merchantId . '_' . $parentOrder . '_' . $childOrder;
  57. $addChildData['createTime'] = $date;
  58. $addChildData['replyType'] = $childValue['replyType'];
  59. $addChildData['replyUrl'] = $childValue['replyUrl'];
  60. if (!empty($wxMenuContent)) {
  61. $formatData = xhWxMenuService::getFormatData($wxMenuContent, $childWxMenuOption, $this->merchant);
  62. $addChildData = array_merge($addChildData, $formatData);
  63. }
  64. xhWxMenuService::add($addChildData);
  65. }
  66. }
  67. }
  68. $wxMenu = xhWxMenuService::getMenuList($this->merchantId);
  69. if (empty($wxMenu)) {
  70. util::fail('没有找到菜单');
  71. }
  72. $replyType = configDict::getConfig('replyType');
  73. $menuData = [];
  74. foreach ($wxMenu as $wxKey => $wxVal) {
  75. $child = $wxVal['child'];
  76. if (!empty($child)) {
  77. $menuData[$wxKey] = ['type' => 'view', 'name' => $wxVal['name']];
  78. foreach ($child as $chKey => $chVal) {
  79. if ($chVal['replyType'] == $replyType['redirectUrl']) {
  80. $menuData[$wxKey]['sub_button'][$chKey] = ['type' => 'view', 'name' => $chVal['name'], 'url' => $chVal['replyUrl']];
  81. } else {
  82. $menuData[$wxKey]['sub_button'][$chKey] = ['type' => 'click', 'name' => $chVal['name'], 'key' => $chVal['menuKey']];
  83. }
  84. }
  85. } else {
  86. if ($wxVal['replyType'] == $replyType['redirectUrl']) {
  87. $menuData[$wxKey] = ['type' => 'view', 'name' => $wxVal['name'], 'url' => $wxVal['replyUrl']];
  88. } else {
  89. $menuData[$wxKey] = ['type' => 'click', 'name' => $wxVal['name'], 'key' => $wxVal['menuKey']];
  90. }
  91. }
  92. }
  93. $subData['button'] = $menuData;
  94. $wxUtil = new weixinUtil($this->merchant);
  95. $jsonData = $wxUtil->userMenuToWeiXin($subData);
  96. $respond = json_decode($jsonData, true);
  97. if ($respond['errcode'] == 0) {
  98. util::ok('提交成功,5分钟后生效');
  99. }
  100. util::fail('提交失败');
  101. }
  102. //微信菜单 shish 2019.12.19
  103. public function actionTree()
  104. {
  105. $list = WxMenuService::getMenuTree($this->merchantId);
  106. util::success($list);
  107. }
  108. }