Bladeren bron

菜单添加编辑更新

zqwang 1 jaar geleden
bovenliggende
commit
fbbf20f70d

+ 48 - 39
modules/WechatPlatform/Http/Controllers/WechatMenuController.php

@@ -40,8 +40,9 @@ class WechatMenuController extends CatchController
 
     public function add(WechatMenuRequest $request)
     {
-
-        $param  = $this->handleParam($request->validated());
+        $param = $request->validated();
+        $param['msg_content'] = $request->input('msg_content');
+        $param  = $this->handleParam($param);
         $userContext = $this->getUserContext(null);
         $param['user_id'] = $userContext['loginUser']->id;
         $param['puser_id'] = $userContext['loginUser']->pid;
@@ -51,7 +52,9 @@ class WechatMenuController extends CatchController
 
     public function edit($id,WechatMenuRequest $request)
     {
-        $param  = $this->handleParam($request->validated());
+        $param = $request->validated();
+        $param['msg_content'] = $request->input('msg_content');
+        $param  = $this->handleParam($param);
         return WechatMenuService::updateMenu($id,$param);
     }
 
@@ -114,16 +117,18 @@ class WechatMenuController extends CatchController
         if (count($param['content']) >3){
             WechatMenuService::throwErrMsg("底部菜单不能超过3个");
         }
-        $clicks = [];
-        foreach ($param['content'] as  $val){
+        // $clicks = [];
+        $msgContent = [];
+        foreach ($param['content'] as  &$val){
             if (!empty(getProp($val,'sub_button'))){
-                foreach ($val['sub_button'] as $sub){
+                foreach ($val['sub_button'] as &$sub){
                     if (getProp($sub,'type') == 'miniprogram'){
                         $sub['appid'] = $param['miniprogram_appid'];
                         $sub['pagepath'] = $sub['url'];
                     }
                     if (getProp($sub,'type') == 'click'){
-                        $clicks[] = $sub['key'];
+                        // $clicks[] = $sub['key'];
+                        $msgContent[] =[$sub['key'] =>  $sub['content']];
                     }
                 }
             }else{
@@ -132,41 +137,45 @@ class WechatMenuController extends CatchController
                     $val['pagepath'] = $val['url'];
                 }
                 if (getProp($val,'type') == 'click'){
-                    $clicks[] = $val['key'];
-                }
-            }
-        }
-        unset($val,$sub,$info);
-        $param['msg_content']= [];
-        // 有点击事件
-        if (!empty($clicks)){
-            $msgContent = [];
-            $msg = getProp($param,'msg_content');
-            if (empty($msg) || !is_array($msg)){
-                WechatMenuService::throwErrMsg("发送的文本信息不能为空");
-            }
-            foreach ($clicks as $val){
-                $temp = getProp($msg,$val);
-                if (empty($temp) || !is_array($temp)){
-                    WechatMenuService::throwErrMsg("发送的文本信息格式不正确");
-                }
-                $contents = "";
-                foreach ($temp as  & $item){
-                    if (getProp($item,'url')){
-                        $item['content'] = "<a href=\"\" data-miniprogram-appid=\"{$param['miniprogram_appid']}\" data-miniprogram-path=\"{$val['url']}\">{$val['title']}</a>";
-                    }else{
-                        $item['content'] = $item['tittle'];
-                    }
-                    $contents .=  $item['content']."\n";
+                    // $clicks[] = $val['key'];
+                    $msgContent[] =[$val['key'] =>  $val['content']];
                 }
-                rtrim($contents, "\n");
-                $temp['content'] = $contents;
-                $msgContent = [$val => $temp];
             }
-            $param['msg_content'] = $msgContent;
-            unset($msgContent);
-            unset($temp,$val,$item);
         }
+        $param['msg_content']= $msgContent;
+        // unset($val,$sub,$info);
+        // // 有点击事件
+        // if (!empty($clicks)){
+        //     $msgContent = [];
+        //     $msg = getProp($param,'msg_content');
+        //     if (empty($msg) || !is_array($msg)){
+        //         WechatMenuService::throwErrMsg("发送的文本信息不能为空");
+        //     }
+        //     foreach ($clicks as $val){
+        //         $temp = getProp($msg,$val);
+        //         if (empty($temp) || !is_array($temp)){
+        //             WechatMenuService::throwErrMsg("发送的文本信息格式不正确");
+        //         }
+        //         $contents = "";
+        //         foreach ($temp as  & $item){
+        //             if (getProp($item,'url')){
+        //                 $item['content'] = "<a href=\"\" data-miniprogram-appid=\"{$param['miniprogram_appid']}\" data-miniprogram-path=\"{$item['url']}\">{$item['title']}</a>";
+        //             }else{
+        //                 $item['content'] = $item['title'];
+        //             }
+        //             $contents =  $contents.$item['content']."\n";
+        //         }
+        //
+        //         rtrim($contents, "\n");
+        //         $temp['content'] = $contents;
+        //         $msgContent = [$val => $temp];
+        //     }
+        //     $param['msg_content'] = $msgContent;
+        //     unset($msgContent);
+        //     unset($temp,$val,$item);
+        // }else{
+        //     $param['msg_content']= [];
+        // }
         return $param;
     }
 

+ 1 - 1
modules/WechatPlatform/Models/WechatAccountMenuDetail.php

@@ -10,7 +10,7 @@ class WechatAccountMenuDetail extends BaseModel
     protected $table = 'wechat_account_menu_detail';
 
     protected $fillable = [
-        'id', 'user_id', 'puser_id','type', 'menu_id','msg_content', 'appid', 'wechat_authorization_info_id', 'miniprogram_id', 'nick_name', 'content', 'status', 'updated_at', 'created_at',
+        'id', 'user_id', 'puser_id','wx_menuid','type', 'menu_id','msg_content', 'appid', 'wechat_authorization_info_id', 'miniprogram_id', 'nick_name', 'content', 'status', 'updated_at', 'created_at',
     ];
     protected $casts = ['content' => 'array','msg_content' => 'array'];
 }

+ 15 - 11
modules/WechatPlatform/Services/WechatMenuService.php

@@ -48,14 +48,14 @@ class WechatMenuService extends BaseService
         if (is_empty($info)) {
             self::throwErrMsg('该菜单不存在或已删除');
         }
-        $appIds = WechatAccountMenuDetail::where(['status' => 1, 'meun_id' => $info->id])->pluck('id')->toArray();
-        WechatMenu::query()->where('id', $id)->update($param);
+        $appIds = WechatAccountMenuDetail::where(['status' => 1, 'menu_id' => $info->id])->pluck('id')->toArray();
+        WechatMenu::where('id', $id)->update($param);
         $data = [
             'type' => $param['type'],
             'content' => $param['content'],
             'msg_content' => $param['msg_content']
         ];
-        WechatAccountMenuDetail::where('meun_id', $id)->update($data);
+        WechatAccountMenuDetail::where('menu_id', $id)->update($data);
         // 更新公众号菜单
         self::createWechatMenus($appIds);
         return ['msg' => '操作成功'];
@@ -165,7 +165,7 @@ class WechatMenuService extends BaseService
             self::throwErrMsg('该菜单不存在或已删除');
         }
         // 已分配的
-        $appIds = WechatAccountMenuDetail::where(['status' => 1, 'meun_id' => $info->id])->pluck('id')->toArray();
+        $appIds = WechatAccountMenuDetail::where(['status' => 1, 'menu_id' => $info->id])->pluck('id')->toArray();
         $list = [];
         $delAppId = [];
         $createAddIp  = [];
@@ -193,11 +193,13 @@ class WechatMenuService extends BaseService
                     $delAppId[] = $val;
                 }
             }
-            $allSet = WechatAccountMenuDetail::query()->where('user_id', $info->user_id)->get();
+            // $allSet = WechatAccountMenuDetail::query()->where('user_id', $info->user_id)->get();
+
             foreach ($wechatAccountInfos as $val) {
-                if (in_array($val->id,$appIds)){
+                if (!in_array($val->id,$appIds)){
                     $createAddIp[] = $val->id;
                 }
+
                 $data['wechat_accounts'][] = [
                     'id' => $val->id,
                     'appid' => $val->authorizer_appid,
@@ -206,7 +208,7 @@ class WechatMenuService extends BaseService
                 ];
                 $appIds[] = $val->authorizer_appid;
                 $list[] = [
-                    'meun_id' => $info->id,
+                    'menu_id' => $info->id,
                     'user_id' => $info->user_id,
                     'puser_id' => $info->puser_id,
                     'miniprogram_id' => $info->miniprogram_id,
@@ -222,18 +224,20 @@ class WechatMenuService extends BaseService
         }
         DB::beginTransaction();
         try {
-            if (!empty($delAppId)){
-                WechatAccountMenuDetail::whereIn('id',$delAppId)->update(['status' => 0]);
+            if (!empty($list)){
                 foreach ($list as $val){
                     WechatAccountMenuDetail::updateOrCreate(
                         [
-                            'meun_id' => $val['meun_id'],
+                            'menu_id' => $val['menu_id'],
                             'miniprogram_id' => $val['miniprogram_id'],
                             'wechat_authorization_info_id' => $val['wechat_authorization_info_id']
                         ],$val);
                 }
             }else{
-                WechatAccountMenuDetail::where('meun_id',$id)->update(['status' => 0]);
+                WechatAccountMenuDetail::where('menu_id',$id)->update(['status' => 0]);
+            }
+            if(!empty($delAppId)){
+                WechatAccountMenuDetail::whereIn('id',$delAppId)->update(['status' => 0]);
             }
             WechatMenu::query()->where('id',$id)->update($data);
             DB::commit();

+ 2 - 0
modules/WechatPlatform/routes/route.php

@@ -92,6 +92,8 @@ Route::prefix('wechatPlatform')->group(function(){
         Route::post('allocation/{id}',[WechatMenuController::class,'allocation']);
         // 公众号配置选择项
         Route::any("auth_list/{id}",[WechatMenuController::class,'authList']);
+        // 测试
+        Route::any("test",[WechatMenuController::class,'test']);
     });
 
 });