--- a/app/terminal/model/meal/Meal.php +++ b/app/terminal/model/meal/Meal.php @@ -26,8 +26,32 @@ use app\terminal\service\recommend\Recommend; use app\store\model\meal\MealConfig; use app\store\service\store\User as StoreUserService; +use app\common\database\Dm; +use app\common\service\FixedScaleDecimalResponse; +use think\facade\Db; class Meal extends MealModel { + private static function formatInfosDecimals(array $row): array + { + if (!(Db::connect() instanceof Dm)) { + return $row; + } + $fields = [ + 'dishes_weight', 'energy', 'carbohydrate', 'protein', 'fat', + 'sfa', 'mufa', 'pufa', 'cholesterol', 'va', 'renieratene', 'retinol', + 'vb1', 'vb2', 'vpp', 'vc', 've', 'folic_acid', 'biotin', + 'pantothenic_acid', 'choline', 'potassium', 'sodium', 'calcium', + 'magnesium', 'iron', 'zinc', 'selenium', 'iodine', 'phosphorus', + 'cuprum', 'manganese', 'purine', 'dietary_fiber', 'moisture', 'ash', 'gi', 'gl', + ]; + $numeric = []; + foreach ($fields as $field) { + if (isset($row[$field]) && (is_int($row[$field]) || is_float($row[$field]))) { + $numeric[] = $field; + } + } + return FixedScaleDecimalResponse::fields($row, $numeric); + } private $mealId = 0; /** * 新增记录 @@ -587,7 +611,7 @@ $field = $nutrient['field']; $info[$field] = $mealInfo[$field]; } - $infos[] = $info; + $infos[] = self::formatInfosDecimals($info); } return $infos; } --- a/app/terminal/service/meal/Meal.php +++ b/app/terminal/service/meal/Meal.php @@ -15,9 +15,22 @@ use app\common\enum\dishes\MealTimes as MealTimesEnum; use app\common\service\BaseService; use cores\exception\BaseException; +use app\common\database\Dm; +use think\facade\Db; class Meal extends BaseService { + private static function mealTimeResponse($value) + { + if (!is_string($value) || !(Db::connect() instanceof Dm) + || substr($value, 0, 4) === '0000' + || !preg_match('/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.0{1,6}$/D', $value)) { + return $value; + } + $seconds = substr($value, 0, 19); + $date = \DateTimeImmutable::createFromFormat('!Y-m-d H:i:s', $seconds); + return $date && $date->format('Y-m-d H:i:s') === $seconds ? $seconds : $value; + } /** * 列表 * @param int $staff_id @@ -35,7 +48,7 @@ $data['list'] = $model->getInfos((int)$lastMeal['id']); $data['meal_date'] = $lastMeal['meal_date']; $data['meal_times'] = $lastMeal['meal_times']; - $data['meal_time'] = $lastMeal['meal_time']; + $data['meal_time'] = self::mealTimeResponse($lastMeal['meal_time']); $data['meal_times_name'] = MealTimesEnum::getName($lastMeal['meal_times']); $data['is_loading'] = $lastMeal['is_loading']; return $data;