WxMenuController.php 3.8 KB

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