WxMenuController.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <?php
  2. namespace shop\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. if(isset($childValue['menuOrder']) == false){
  42. print_r($childValue);
  43. print_r($val);
  44. die;
  45. }
  46. $childOrder = $childValue['menuOrder'];
  47. $childWxMenuOption = $childValue['menuOption'];
  48. $childName = $childValue['name'];
  49. $addChildData = [];
  50. $addChildData['parentId'] = $parentId;
  51. $addChildData['merchantId'] = $this->merchantId;
  52. $addChildData['menuOrder'] = $childOrder;
  53. $addChildData['menuOption'] = $childWxMenuOption;
  54. $addChildData['name'] = $childName;
  55. $addChildData['menuKey'] = $this->merchantId . '_' . $parentOrder . '_' . $childOrder;
  56. $addChildData['createTime'] = $date;
  57. $addChildData['replyType'] = $childValue['replyType'];
  58. $addChildData['replyUrl'] = $childValue['replyUrl'];
  59. if (!empty($wxMenuContent)) {
  60. $formatData = xhWxMenuService::getFormatData($wxMenuContent, $childWxMenuOption, $this->merchant);
  61. $addChildData = array_merge($addChildData, $formatData);
  62. }
  63. xhWxMenuService::add($addChildData);
  64. }
  65. }
  66. }
  67. $wxMenu = xhWxMenuService::getMenuList($this->merchantId);
  68. if (empty($wxMenu)) {
  69. util::fail('没有找到菜单');
  70. }
  71. $replyType = configDict::getConfig('replyType');
  72. $menuData = [];
  73. foreach ($wxMenu as $wxKey => $wxVal) {
  74. $child = $wxVal['child'];
  75. if (!empty($child)) {
  76. $menuData[$wxKey] = ['type' => 'view', 'name' => $wxVal['name']];
  77. foreach ($child as $chKey => $chVal) {
  78. if ($chVal['replyType'] == $replyType['redirectUrl']) {
  79. $menuData[$wxKey]['sub_button'][$chKey] = ['type' => 'view', 'name' => $chVal['name'], 'url' => $chVal['replyUrl']];
  80. } else {
  81. $menuData[$wxKey]['sub_button'][$chKey] = ['type' => 'click', 'name' => $chVal['name'], 'key' => $chVal['menuKey']];
  82. }
  83. }
  84. } else {
  85. if ($wxVal['replyType'] == $replyType['redirectUrl']) {
  86. $menuData[$wxKey] = ['type' => 'view', 'name' => $wxVal['name'], 'url' => $wxVal['replyUrl']];
  87. } else {
  88. $menuData[$wxKey] = ['type' => 'click', 'name' => $wxVal['name'], 'key' => $wxVal['menuKey']];
  89. }
  90. }
  91. }
  92. $subData['button'] = $menuData;
  93. $wxUtil = new wxUtil($this->merchant);
  94. $jsonData = $wxUtil->userMenuToWeiXin($subData);
  95. $respond = json_decode($jsonData, true);
  96. if ($respond['errcode'] == 0) {
  97. util::complete('提交成功,5分钟后生效');
  98. }
  99. util::fail('提交失败');
  100. }
  101. //微信菜单 shish 2019.12.19
  102. public function actionTree()
  103. {
  104. $list = WxMenuService::getMenuTree($this->merchantId);
  105. util::success($list);
  106. }
  107. }