From e4971bd88825e16aa59047dd7f9ea5cd9874c487 Mon Sep 17 00:00:00 2001 From: wanghongjun <1445693971@qq,com> Date: Mon, 7 Aug 2023 16:30:34 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=8E=B7=E5=8F=96=E5=9B=BE?= =?UTF-8?q?=E4=B9=A6=E9=A6=86=EF=BC=8C=E6=96=87=E5=8C=96=E9=A6=86=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/controller/library/Pass.php | 113 ++++++++---------- 1 file changed, 50 insertions(+), 63 deletions(-) diff --git a/source/application/api/controller/library/Pass.php b/source/application/api/controller/library/Pass.php index c5f4eff..5b8babf 100644 --- a/source/application/api/controller/library/Pass.php +++ b/source/application/api/controller/library/Pass.php @@ -51,31 +51,30 @@ class Pass extends Controller $data_json = $this->request->param('data'); $data = json_decode(html_entity_decode($data_json),true); - $hour = date("H:00"); - $last_hour = date("H:00",strtotime('-1 hour')); $dm = new Dm(); foreach ($data as $val) { - $val['day30_incount'] = $val['day30_incount'] ?: 0; - $val['day30_outcount'] = $val['day30_outcount'] ?: 0; - $val['today_incount'] = $val['today_incount'] ?: 0; - $val['today_outcount'] = $val['today_outcount'] ?: 0; - $val['month_incount'] = $val['month_incount'] ?: 0; - $val['month_outcount'] = $val['month_outcount'] ?: 0; - $val['year_incount'] = $val['year_incount'] ?: 0; - $val['year_outcount'] = $val['year_outcount'] ?: 0; + + $val['day30_incount'] = $val['day30_incount'] ?: 0; + $val['day30_outcount'] = $val['day30_outcount'] ?: 0; + $val['today_incount'] = $val['today_incount'] ?: 0; + $val['today_outcount'] = $val['today_outcount'] ?: 0; + $val['month_incount'] = $val['month_incount'] ?: 0; + $val['month_outcount'] = $val['month_outcount'] ?: 0; + $val['year_incount'] = $val['year_incount'] ?: 0; + $val['year_outcount'] = $val['year_outcount'] ?: 0; // --------------------- 当天实时数据 --------------------- // $query = $dm->find('bt_library',['group_id' => $val['group_id']]); $opData = [ - 'day30_incount' => $val['day30_incount'], - 'day30_outcount' => $val['day30_outcount'], - 'today_incount' => $val['today_incount'], - 'today_outcount' => $val['today_outcount'], - 'month_incount' => $val['month_incount'], - 'month_outcount' => $val['month_outcount'], - 'year_incount' => $val['year_incount'], - 'year_outcount' => $val['year_outcount'], + 'day30_incount' => $val['day30_incount'], + 'day30_outcount' => $val['day30_outcount'], + 'today_incount' => $val['today_incount'], + 'today_outcount' => $val['today_outcount'], + 'month_incount' => $val['month_incount'], + 'month_outcount' => $val['month_outcount'], + 'year_incount' => $val['year_incount'], + 'year_outcount' => $val['year_outcount'], ]; if ($query) { $opData['update_time'] = date("Y-m-d H:i:s",time()); @@ -88,53 +87,41 @@ class Pass extends Controller } // --------------------- END --------------------- // // --------------------- 小时数据 --------------------- // - $hoursQueryWhere = ['hour_time' => $hour, 'group_id' => $val['group_id'], 'create_time' => ['>=',date('Y-m-d 00:00:00')]]; - $hoursQuery = $dm->find("bt_library_hours",$hoursQueryWhere); - - # 默认单天数据 - $incount = 0; - $outcount = 0; - if ($hoursQuery) { - - # 存在的数量 + (这次天数数量 - 上次天数数量) = 当前小时数量 - $incount = $hoursQuery['incount'] + ($val['today_incount'] - $hoursQuery['target_today_incount']); - $outcount = $hoursQuery['outcount'] + ($val['today_outcount'] - $hoursQuery['target_today_outcount']); - - $update = [ - 'incount' => $incount, - 'outcount' => $outcount, - 'target_today_incount' => $val['today_incount'], - 'target_today_outcount' => $val['today_outcount'], - 'update_time' => date("Y-m-d H:i:s",time()) - ]; - - $dm->update('bt_library_hours',$update,['id' => $hoursQuery['id']]); - - } else { - # 查看该组是否存在上一条数据 - $lastHoursWhere = ['hour_time' => $last_hour, 'group_id' => $val['group_id']]; - $lastHours = $dm->find('bt_library_hours',$lastHoursWhere,'*','id DESC'); - if ($lastHours && $hour != '00:00') { - $incount = (int)($val['today_incount'] - $lastHours['target_today_incount']); - $outcount = (int)($val['today_outcount'] - $lastHours['target_today_outcount']); - $incount = $incount > 0 ? $incount : 0; - $outcount = $outcount > 0 ? $outcount : 0; + if (isset($val['hour']) && is_array($val['hour'])) { + + foreach ($val['hour'] as $hour => $hourVal) { + + $hour = strlen($hour) > 1 ? $hour : '0' . $hour; + $hour .= ':00'; + # 查看数据是否已经生成 + $hoursQueryWhere = ['hour_time' => $hour, 'group_id' => $val['group_id'], 'create_time' => ['>=', date('Y-m-d 00:00:00')]]; + $hoursQuery = $dm->find("bt_library_hours", $hoursQueryWhere); + + if ($hoursQuery) { + # 数据发生变化再修改 + if ($hourVal['incount'] == $hoursQuery['incount'] && $hourVal['outcount'] == $hoursQuery['outcount']) { + continue; + } + $update = [ + 'incount' => $hourVal['incount'], + 'outcount' => $hourVal['outcount'], + 'update_time' => date("Y-m-d H:i:s", time()) + ]; + $dm->update('bt_library_hours', $update, ['id' => $hoursQuery['id']]); + } else { + # 创建数据 + $insert = [ + 'group_id' => $val['group_id'], + 'group_name' => base64_decode($val['group_name']), + 'incount' => $hourVal['incount'], + 'outcount' => $hourVal['outcount'], + 'hour_time' => $hour, + 'create_time' => date("Y-m-d H:i:s", time()) + ]; + $dm->insert("bt_library_hours", $insert); + } } - # 创建数据 - $insert = [ - 'group_id' => $val['group_id'], - 'group_name' => base64_decode($val['group_name']), - 'incount' => $incount, - 'outcount' => $outcount, - 'target_today_incount' => $val['today_incount'], - 'target_today_outcount' => $val['today_outcount'], - 'hour_time' => $hour, - 'create_time' => date("Y-m-d H:i:s",time()) - ]; - - $dm->insert("bt_library_hours",$insert); } - // --------------------- end --------------------- // $this->saveLibraryData($dm,$val); }