From de0ae0568bce76fdc60cac44445de643b5008df3 Mon Sep 17 00:00:00 2001 From: szdot Date: Fri, 12 Jul 2024 04:55:40 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E7=B1=BB=09=E5=9E=8B=E3=80=91?= =?UTF-8?q?=EF=BC=9Afix=20=E3=80=90=E4=B8=BB=09=E9=A2=98=E3=80=91=EF=BC=9A?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E7=9A=84runing=20=E5=AF=B9=E6=AF=94=E5=85=B6?= =?UTF-8?q?=E4=BB=96=E7=AB=99=E7=82=B9=E8=AE=B0=E5=BD=95=20=E7=9A=84runing?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=20=E6=8E=92=E9=99=A4=20=E7=A9=BA=E5=AD=97?= =?UTF-8?q?=E7=AC=A6=E7=9A=84=E5=AF=B9=E6=AF=94=20=E3=80=90=E6=8F=8F=09?= =?UTF-8?q?=E8=BF=B0=E3=80=91=EF=BC=9A=20=09[=E5=8E=9F=E5=9B=A0]=EF=BC=9A?= =?UTF-8?q?=20=09[=E8=BF=87=E7=A8=8B]=EF=BC=9A=20=09[=E5=BD=B1=E5=93=8D]?= =?UTF-8?q?=EF=BC=9A=20=E3=80=90=E7=BB=93=09=E6=9D=9F=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # 类型 包含: # feat:新功能(feature) # fix:修补bug # docs:文档(documentation) # style: 格式(不影响代码运行的变动) # refactor:重构(即不是新增功能,也不是修改bug的代码变动) # test:增加测试 # chore:构建过程或辅助工具的变动 --- .../Controller/PlaneController.class.php | 38 +++++++++++-------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/FlyCube/MpApi/Controller/PlaneController.class.php b/FlyCube/MpApi/Controller/PlaneController.class.php index f17c3cd..4976c18 100644 --- a/FlyCube/MpApi/Controller/PlaneController.class.php +++ b/FlyCube/MpApi/Controller/PlaneController.class.php @@ -157,34 +157,42 @@ class PlaneController extends PublicController } } /** - * @description: 飞机在站点上注册航线 或 注销航线 + * @description: 飞机在站点上注册航线或注销航线 */ public function lockSite() { - //总管理员 可接收任何shop_id 非总管理员 只可以调用自身shop_id 否则会中断 + //总管理员可接收任何shop_id,非总管理员只可以调用自身shop_id,否则会中断 $this->isPower(); if ($_REQUEST['id'] && $_REQUEST['shop_id']) { $rsDb = D('receive_site'); $where['id'] = $_REQUEST['id']; $where['shop_id'] = $_REQUEST['shop_id']; - /*端检测后*/ - //检查站点是否绑定了航线 + + // 检查站点是否绑定了航线 $rsCheck = $rsDb->where($where)->find(); - if ($rsCheck['bind_route'] == null || $rsCheck['bind_route'] == '') { + if (!$rsCheck || $rsCheck['bind_route'] === null || $rsCheck['bind_route'] === '') { exit(json_encode(array('status' => 0, 'msg' => '此站点未绑定航线!'))); } - //遍历检查提交的runing 和其它列表是否有重复值 ps:防止 正在执行其它站点的任务 又在此站点注销 或者注册 - $whereAll['shop_id'] = $_REQUEST['shop_id']; //排除此站点 + + // 获取传入的 runing 字段,并按逗号分割成数组,过滤掉空字符串和 null + $submittedRuning = $_REQUEST['runing'] ?? ''; + $submittedRuningArray = array_filter(explode(',', $submittedRuning), function ($value) { + return trim($value) !== ''; + }); + + // 构建查询条件,排除当前站点并且 id 不等于当前 id 的记录 + $whereAll['shop_id'] = $_REQUEST['shop_id']; $whereAll['id'] = array('neq', $_REQUEST['id']); - $submittedRuning = $_REQUEST['runing'] ?? ''; // 获取传入的 runing 字段,并按逗号分割成数组 - $submittedRuningArray = explode(',', $submittedRuning); - - $otherRecords = $rsDb->where($whereAll)->select(); // 查询数据库中符合条件的所有记录 + // 查询数据库中符合条件的所有记录 + $otherRecords = $rsDb->where($whereAll)->select(); foreach ($otherRecords as $record) { $existingRuning = $record['runing'] ?? ''; - $existingRuningArray = explode(',', $existingRuning); + $existingRuningArray = array_filter(explode(',', $existingRuning), function ($value) { + return trim($value) !== ''; + }); + // 检查两个数组是否有重复元素 $intersection = array_intersect($submittedRuningArray, $existingRuningArray); if (!empty($intersection)) { @@ -192,10 +200,8 @@ class PlaneController extends PublicController } } - /*提交 注册 或 注销信息*/ - // 如果 $_REQUEST['runing'] 为空字符串 或者null,将其设置为 null - $data['runing'] = trim($_REQUEST['runing']) === '' ? null : trim($_REQUEST['runing']); - + // 如果没有重复的航线,则更新数据库 + $data['runing'] = empty($submittedRuningArray) ? null : implode(',', $submittedRuningArray); if ($rsDb->where($where)->save($data)) { exit(json_encode(array('status' => 1, 'msg' => '站点航线执行操作成功!'))); } else {