From 23c7ecd84807c369adf99c9ee95a575626d42e76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Fri, 28 Nov 2025 15:20:30 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B4=AD=E7=89=A9=E8=BD=A6reload=E6=A0=87?= =?UTF-8?q?=E8=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- extend/workermans/model/Base.php | 28 +++++++++++++++++++++++++--- extend/workermans/model/Cashier.php | 2 +- extend/workermans/model/Manage.php | 2 +- extend/workermans/model/Onboc.php | 2 +- extend/workermans/model/Pad.php | 2 +- extend/workermans/model/Shopping.php | 2 +- plugin/webman/gateway/Events.php | 4 ++++ 7 files changed, 34 insertions(+), 8 deletions(-) diff --git a/extend/workermans/model/Base.php b/extend/workermans/model/Base.php index 27b58c5..683c08e 100644 --- a/extend/workermans/model/Base.php +++ b/extend/workermans/model/Base.php @@ -25,7 +25,7 @@ class Base extends Model // 分组推送(广播) - public static function gateway_query(string $method, array $params) + public static function gateway_query(string $method, array $params, bool $by_shop_id = false) { list($clientIdOrUid, $data) = $params; $data_arr = json_decode($data, true); @@ -46,7 +46,7 @@ class Base extends Model }elseif (strstr($data_arr['operate_type'], 'del')) { $operate_type = 'del'; }elseif (strstr($data_arr['operate_type'], 'cleanup')) { - $operate_type = 'cleanup'; + $operate_type = ' '; }elseif (strstr($data_arr['operate_type'], 'clearOrder')) { $operate_type = 'clearOrder'; }elseif (strstr($data_arr['operate_type'], 'batch')) { @@ -72,7 +72,29 @@ class Base extends Model ]; $new_clientid_group = ''; - if(!empty(self::$shop_id) && !empty($broadcast_arr['data']['table_code'])) { + if ($by_shop_id) { + $shopGroup = self::get_shopping_save_uid(self::$shop_id, 'all'); + // 如果有在线的 再发 + if($onl = Gateway::getClientIdCountByGroup($shopGroup)){ + // 发送广播并将 self::$client_id 排除在外 + // 排除收银机重复的client_id + $table_arr = []; + if(!empty(self::$table_code) && !empty($data_arr['type']) && $data_arr['type'] == 'shopping') { + // 是客户端小程序才排除同桌子的 + $table_arr = Gateway::getClientIdByUid(self::$table_code); + } + // 排除自己 + $new_client_id = array_merge($table_arr, [self::$client_id]); + // 去重 + $new_client_id = array_unique($new_client_id); + $broadcast_arr['no_client_id'] = $new_client_id; + $broadcast_json = json_encode($broadcast_arr); + Gateway::sendToGroup($shopGroup, $broadcast_json, $new_client_id); + + } + } + + if(!$by_shop_id && !empty(self::$shop_id) && !empty($broadcast_arr['data']['table_code'])) { if($operate_type == 'init') { // 如果是转桌操作,发广播初始化购物车 转出桌和转入桌都需要发通知 $new_clientid_group = self::get_shopping_save_uid(self::$shop_id, $broadcast_arr['data']['new_table_code']); diff --git a/extend/workermans/model/Cashier.php b/extend/workermans/model/Cashier.php index 4e5b72e..f9385fd 100644 --- a/extend/workermans/model/Cashier.php +++ b/extend/workermans/model/Cashier.php @@ -415,7 +415,7 @@ class Cashier extends Base 'table_code' => $message['table_code'], ] ]; - self::gateway_query('sendToClient', [$client_id, json_encode($snd_data)]); + self::gateway_query('sendToClient', [$client_id, json_encode($snd_data)], true); break; } } diff --git a/extend/workermans/model/Manage.php b/extend/workermans/model/Manage.php index 78074f5..1d73abd 100644 --- a/extend/workermans/model/Manage.php +++ b/extend/workermans/model/Manage.php @@ -371,7 +371,7 @@ class Manage extends Base 'table_code' => $message['table_code'], ] ]; - self::gateway_query('sendToClient', [$client_id, json_encode($snd_data)]); + self::gateway_query('sendToClient', [$client_id, json_encode($snd_data)], true); break; } } diff --git a/extend/workermans/model/Onboc.php b/extend/workermans/model/Onboc.php index ed02e3c..d76bc7a 100644 --- a/extend/workermans/model/Onboc.php +++ b/extend/workermans/model/Onboc.php @@ -373,7 +373,7 @@ class Onboc extends Base 'table_code' => $message['table_code'], ] ]; - self::gateway_query('sendToClient', [$client_id, json_encode($snd_data)]); + self::gateway_query('sendToClient', [$client_id, json_encode($snd_data)], true); break; } } diff --git a/extend/workermans/model/Pad.php b/extend/workermans/model/Pad.php index 397f6e4..09dc45d 100644 --- a/extend/workermans/model/Pad.php +++ b/extend/workermans/model/Pad.php @@ -387,7 +387,7 @@ class Pad extends Base 'table_code' => $message['table_code'], ] ]; - self::gateway_query('sendToClient', [$client_id, json_encode($snd_data)]); + self::gateway_query('sendToClient', [$client_id, json_encode($snd_data)], true); break; } } diff --git a/extend/workermans/model/Shopping.php b/extend/workermans/model/Shopping.php index 6020218..ca15b7c 100644 --- a/extend/workermans/model/Shopping.php +++ b/extend/workermans/model/Shopping.php @@ -352,7 +352,7 @@ class Shopping extends Base 'table_code' => $message['table_code'], ] ]; - self::gateway_query('sendToClient', [$client_id, json_encode($snd_data)]); + self::gateway_query('sendToClient', [$client_id, json_encode($snd_data)], true); break; } } diff --git a/plugin/webman/gateway/Events.php b/plugin/webman/gateway/Events.php index f41c624..9a4dc73 100644 --- a/plugin/webman/gateway/Events.php +++ b/plugin/webman/gateway/Events.php @@ -189,6 +189,7 @@ class Events if(!empty($message['table_code'])) { // 绑定shopid和table_code 便于推送多端购物车同步 和 锁单 $group = Base::get_shopping_save_uid($message['shop_id'], $message['table_code']); + if(!empty($_SESSION[$client_id])) { // 绑定之前,必须先删除此client_id下的其他分组 Gateway::leaveGroup($client_id, $_SESSION[$client_id]); @@ -196,6 +197,9 @@ class Events Gateway::joinGroup($client_id, $group); $_SESSION[$client_id] = $group; } + // 店铺组 + $shopGroup = Base::get_shopping_save_uid($message['shop_id'], 'all'); + Gateway::joinGroup($client_id, $shopGroup); // 绑定shopid推送商品更新信息 Gateway::joinGroup($client_id, 'product_update' . $message['shop_id']); }