zqwang 1 år sedan
förälder
incheckning
866b6af0e6
1 ändrade filer med 30 tillägg och 9 borttagningar
  1. 30 9
      modules/WechatPlatform/Services/WechatMenuService.php

+ 30 - 9
modules/WechatPlatform/Services/WechatMenuService.php

@@ -58,23 +58,26 @@ class WechatMenuService extends BaseService
         ];
         WechatAccountMenuDetail::where('menu_id', $id)->update($data);
         // 更新公众号菜单
-        self::createWechatMenus($appIds);
+        self::createWechatMenus($appIds,$id);
         return ['msg' => '操作成功'];
     }
 
     /**
-     *  创建微信菜单
+     * 创建微信菜单
      * name: createWechatMenus
      * @param array $appIds
+     * @param $menuId
      * @return bool
-     * date 2023/07/12 07:16
+     * @throws \EasyWeChat\Kernel\Exceptions\InvalidConfigException
+     * @throws \GuzzleHttp\Exception\GuzzleException
+     * date 2023/07/12 14:29
      */
-    private static function createWechatMenus(array $appIds)
+    private static function createWechatMenus(array $appIds,$menuId)
     {
         if (empty($appIds)) {
             return true;
         }
-        $info = WechatAccountMenuDetail::query()->whereIn('id', $appIds)->get();
+        $info = WechatAccountMenuDetail::query()->whereIn('wechat_authorization_info_id', $appIds)->where('menu_id',$menuId)->get();
         foreach ($info as $val) {
             $app = self::getofficialAccount($info->wechat_authorization_info_id);
             if ($val->wx_menuid) {
@@ -177,7 +180,7 @@ class WechatMenuService extends BaseService
                 $app->menu->delete($info->wx_menuid);
             }
 
-            WechatAccountMenuDetail::query()->where('id', $val->id)->update(['wx_menuid' => ""]);
+            WechatAccountMenuDetail::query()->where('wechat_authorization_info_id', $val->id)->update(['wx_menuid' => ""]);
         }
         return "操作成功";
     }
@@ -196,7 +199,7 @@ class WechatMenuService extends BaseService
             self::throwErrMsg('该菜单不存在或已删除');
         }
         // 已分配的
-        $appIds = WechatAccountMenuDetail::where(['status' => 1, 'menu_id' => $info->id])->pluck('id')->toArray();
+        $appIds = WechatAccountMenuDetail::where(['status' => 1, 'menu_id' => $info->id])->pluck('wechat_authorization_info_id')->toArray();
         $list = [];
         $delAppId = [];
         $createAddIp = [];
@@ -263,6 +266,7 @@ class WechatMenuService extends BaseService
                             'miniprogram_id' => $val['miniprogram_id'],
                             'wechat_authorization_info_id' => $val['wechat_authorization_info_id']
                         ], $val);
+
                 }
             } else {
                 WechatAccountMenuDetail::where('menu_id', $id)->update(['status' => 0]);
@@ -277,10 +281,10 @@ class WechatMenuService extends BaseService
         }
         myLog('wx-meun')->info(['c' => $createAddIp,'del' => $delAppId]);
         if (!empty($createAddIp)) {
-            self::createWechatMenus($createAddIp);
+            self::createWechatMenus($createAddIp,$id);
         }
         if (!empty($delAppId)) {
-            self::delWechatAccountMenu($delAppId);
+            self::delWechatAccountMenuByMeunId($delAppId,$id);
         }
         return ['msg' => "操作成功"];
     }
@@ -324,4 +328,21 @@ class WechatMenuService extends BaseService
         return $sql;
     }
 
+    private static function delWechatAccountMenuByMeunId(array $delAppId, $menuId)
+    {
+        $info = WechatAccountMenuDetail::query()->whereIn('wechat_authorization_info_id', $delAppId)->where('menu_id',$menuId)->get();
+
+        foreach ($info as $val) {
+
+            if ($val->wx_menuid) {
+                // 有菜单则删除菜单
+                $app = self::getofficialAccount($info->wechat_authorization_info_id);
+                $app->menu->delete($info->wx_menuid);
+            }
+
+            WechatAccountMenuDetail::query()->where('wechat_authorization_info_id', $val->id)->update(['wx_menuid' => ""]);
+        }
+        return "操作成功";
+    }
+
 }