--- a/application/p/logic/DateMenu.php +++ b/application/p/logic/DateMenu.php @@ -166,7 +166,7 @@ ->select(); $date_menu_data = []; foreach ($date_menu as $v){ - $date_menu_data[$v['menu_date']][$v['staff_uuid']][$v['meal_times']] = $v['create_time']; + $date_menu_data[$v['menu_date']][$v['staff_uuid']][$v['meal_times']] = $this->normalizeStaffDiningTime($v['create_time']); } if (!empty($dining_flag)){ $dining_flag_array = explode(',',$dining_flag); @@ -268,6 +268,19 @@ $data['total'] = count($res); return array('code' => 0 , 'message' => '数据查询成功', 'data' => $data); } + /** Keep the selected GROUP BY row unchanged; normalize only TIMESTAMP(0) text. */ + private function normalizeStaffDiningTime($value) + { + if (ltrim((string)\think\Config::get('database.type'), '\\') === \app\cores\database\Dm::class + && is_string($value) + && preg_match('/^((\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2}))\.0{1,6}$/D', $value, $match) + && (int)$match[2] >= 1000 && checkdate((int)$match[3], (int)$match[4], (int)$match[2]) + && (int)$match[5] <= 23 && (int)$match[6] <= 59 && (int)$match[7] <= 59) { + return $match[1]; + } + return $value; + } + //就餐导出 public function staffDiningExport($where, $orderBy,$user,$start_time,$end_time,$dining_flag,$lack_meals, $permissionStaffUuids = null){ if (!empty($where['department_uuid'])) {