Files
useds/app/common/controller/UsedCarDetailController.php
T
2026-03-09 17:46:17 +08:00

305 lines
8.5 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
namespace app\common\controller;
use app\common\controller\BaseController;
use app\common\traits\crud\CrudControllerTrait;
use app\common\service\UsedCarDetailService;
use app\common\service\OssService;
use support\Request;
use support\exception\BusinessException;
class UsedCarDetailController extends BaseController
{
use CrudControllerTrait;
protected $service;
public function __construct()
{
$this->service = new UsedCarDetailService();
}
/**
* 列表页数据格式化
*
* @param array $data
* @return array
*/
protected function indexFormat($data)
{
if (isset($data['created_at'])) {
$data['created_at'] = date('Y-m-d H:i:s', $data['created_at']);
}
if (isset($data['updated_at'])) {
$data['updated_at'] = date('Y-m-d H:i:s', $data['updated_at']);
}
// 处理图片
if (!empty($data['images'])) {
$images = is_array($data['images']) ? $data['images'] : json_decode($data['images'], true);
if ($images) {
$ossService = new OssService();
$images_pull = [];
foreach ($images as $image) {
$images_pull[] = $ossService->generatePrivateUrl($image);
}
$data['images_pull'] = $images_pull;
} else {
$data['images_pull'] = [];
}
}
return $data;
}
/**
* 详情页数据格式化
*
* @param array $data
* @return array
*/
protected function showFormat($data)
{
if (isset($data['created_at'])) {
$data['created_at'] = date('Y-m-d H:i:s', $data['created_at']);
}
if (isset($data['updated_at'])) {
$data['updated_at'] = date('Y-m-d H:i:s', $data['updated_at']);
}
// 处理主图
if (!empty($data['images'])) {
$images = is_array($data['images']) ? $data['images'] : json_decode($data['images'], true);
if ($images) {
$ossService = new OssService();
$images_pull = [];
$process = 'image/resize,w_800/quality,Q_40/format,webp';
foreach ($images as $image) {
$images_pull[] = $ossService->generatePrivateUrlResize($image, 3600, $process);
}
$data['images_pull'] = $images_pull;
} else {
$data['images_pull'] = [];
}
} else {
$data['images_pull'] = [];
}
// 处理介绍图片
if (!empty($data['intro_images'])) {
$introImages = is_array($data['intro_images']) ? $data['intro_images'] : json_decode($data['intro_images'], true);
if ($introImages) {
$ossService = new OssService();
$intro_images_pull = [];
foreach ($introImages as $image) {
$intro_images_pull[] = $ossService->generatePrivateUrl($image);
}
$data['intro_images_pull'] = $intro_images_pull;
} else {
$data['intro_images_pull'] = [];
}
} else {
$data['intro_images_pull'] = [];
}
// 处理附件
if (!empty($data['attachment'])) {
$attachments = is_array($data['attachment']) ? $data['attachment'] : json_decode($data['attachment'], true);
if ($attachments) {
$ossService = new OssService();
$attachment_pull = [];
foreach ($attachments as $attachment) {
$attachment_pull[] = [
'name' => $attachment['name'] ?? '',
'src' => $attachment['src'] ?? '',
'src_pull' => $ossService->generatePrivateUrl($attachment['src'] ?? ''),
];
}
$data['attachment_pull'] = $attachment_pull;
} else {
$data['attachment_pull'] = [];
}
} else {
$data['attachment_pull'] = [];
}
return $data;
}
/**
* 更新状态
*
* @param Request $request
* @return \support\Response
*/
public function status(Request $request)
{
try {
$data = $request->post();
$res = $this->service->serviceUpdateStatus($request, $data);
return $this->success([], '更新成功');
} catch (\Throwable $e) {
return $this->error($e->getMessage());
}
}
/**
* 保存FAQ
*
* @param Request $request
* @return \support\Response
*/
public function saveFaqs(Request $request)
{
try {
$carId = $request->post('id');
$faqs = $request->post('faqs', []);
if (empty($carId)) {
throw new BusinessException('车辆ID不能为空');
}
$this->service->saveFaqs($carId, $faqs);
return $this->success([], '保存成功');
} catch (\Throwable $e) {
return $this->error($e->getMessage());
}
}
/**
* 创建车辆(含FAQ)
*
* @param Request $request
* @return \support\Response
*/
public function storeWithFaqs(Request $request)
{
try {
$data = $request->post();
$faqs = $data['faqs'] ?? [];
// 先创建车辆
$result = $this->service->serviceStore($request);
// 再保存FAQ
if (!empty($faqs) && isset($result['id'])) {
$this->service->saveFaqs($result['id'], $faqs);
}
return $this->success($result, '创建成功');
} catch (\Throwable $e) {
return $this->error($e->getMessage());
}
}
/**
* 更新车辆(含FAQ)
*
* @param Request $request
* @return \support\Response
*/
public function updateWithFaqs(Request $request)
{
try {
$data = $request->post();
$faqs = $data['faqs'] ?? [];
$carId = $data['id'] ?? null;
// 先更新车辆
$result = $this->service->serviceUpdate($request);
// 再更新FAQ
if (!empty($faqs) && $carId) {
$this->service->saveFaqs($carId, $faqs);
}
return $this->success($result, '更新成功');
} catch (\Throwable $e) {
return $this->error($e->getMessage());
}
}
/**
* 提交审核
*
* @param Request $request
* @return \support\Response
*/
public function submitAudit(Request $request)
{
try {
$carId = $request->post('id');
if (empty($carId)) {
throw new BusinessException('车辆ID不能为空');
}
$this->service->submitAudit($request, $carId);
return $this->success([], '提交审核成功');
} catch (\Throwable $e) {
return $this->error($e->getMessage());
}
}
/**
* 审核车辆
*
* @param Request $request
* @return \support\Response
*/
public function audit(Request $request)
{
try {
$data = $request->post();
$this->service->audit($request, $data);
$statusText = $data['audit_status'] == 1 ? '通过' : '拒绝';
return $this->success([], "审核{$statusText}成功");
} catch (\Throwable $e) {
return $this->error($e->getMessage());
}
}
/**
* 获取审核记录
*
* @param Request $request
* @return \support\Response
*/
public function auditRecords(Request $request)
{
try {
$carId = $request->get('id');
if (empty($carId)) {
throw new BusinessException('车辆ID不能为空');
}
$records = $this->service->getAuditRecords($carId);
return $this->success($records);
} catch (\Throwable $e) {
return $this->error($e->getMessage());
}
}
/**
* 获取审核统计
*
* @param Request $request
* @return \support\Response
*/
public function auditStats(Request $request)
{
try {
$stats = $this->service->getAuditStats($request);
return $this->success($stats);
} catch (\Throwable $e) {
return $this->error($e->getMessage());
}
}
}