diff --git a/zhctproject/store/application/api/controller/MarketingStrategy.php b/private/tmp/cdx-ms-candidate-20261010/application/api/controller/MarketingStrategy.php index eef738b..76dd334 100644 --- a/application/api/controller/MarketingStrategy.php +++ b/application/api/controller/MarketingStrategy.php @@ -196,7 +196,7 @@ class MarketingStrategy extends AdminController return json([ 'code' => 0, 'message' => $message, - 'data' => $data ?? [], + 'data' => self::normalizeMarketingResponse($data ?? [], ltrim((string)config('database.type'), '\\') === \app\cores\database\Dm::class), ]); } @@ -209,6 +209,35 @@ class MarketingStrategy extends AdminController ]); } + /** Only verified main-row DECIMAL(10,2) and DATETIME(0) JSON fields on DM. */ + private static function normalizeMarketingResponse($value, bool $dm) + { + if (!$dm || !is_array($value)) { + return $value; + } + $isMainRow = array_key_exists('strategy_name', $value); + foreach ($value as $field => $item) { + if (is_array($item)) { + $value[$field] = self::normalizeMarketingResponse($item, true); + } elseif ($isMainRow && $field === 'strategy_value' && (is_int($item) || is_float($item)) + && is_finite((float)$item) && abs($item) < 100000000 + ) { + $value[$field] = number_format($item, 2, '.', ''); + } elseif ($isMainRow && in_array($field, ['create_time', 'update_time'], true) && is_string($item) + && preg_match('/^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})\.\d{1,6}$/D', $item, $parts) + ) { + $date = \DateTime::createFromFormat('!Y-m-d H:i:s', $parts[1]); + $errors = \DateTime::getLastErrors(); + if ($date && ($errors === false || ($errors['warning_count'] === 0 && $errors['error_count'] === 0)) + && $date->format('Y-m-d H:i:s') === $parts[1] + ) { + $value[$field] = $parts[1]; + } + } + } + return $value; + } + /** * 消费策略筛选列表 * @return Json