From a8b2c11808b3a5fe15a26c9a895bd4e5a3846384 Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Tue, 13 Jan 2026 17:24:14 +0800 Subject: [PATCH 1/8] =?UTF-8?q?pc=E7=AB=AF=E5=9B=9E=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/common/controller/AuthController.php | 2 +- app/common/logic/AuthLogic.php | 2 ++ app/common/service/AuthService.php | 4 ++-- app/common/utils/Feishu.php | 5 +++-- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/app/common/controller/AuthController.php b/app/common/controller/AuthController.php index a568b82..f85d520 100644 --- a/app/common/controller/AuthController.php +++ b/app/common/controller/AuthController.php @@ -32,7 +32,7 @@ class AuthController extends BaseController public function feishuScope(Request $request) { try { - $result = (new AuthService())->feishuAuthorize($request->get('app_id'), $request->system_code, $request->is_mob); + $result = (new AuthService())->feishuAuthorize($request->get('app_id'), $request->system_code, $request->get('is_pc','0')); return $this->success($result); } catch (\Throwable $e) { return $this->error($e->getMessage().$e->getLine().$e->getFile()); diff --git a/app/common/logic/AuthLogic.php b/app/common/logic/AuthLogic.php index da75795..4e9c0ac 100644 --- a/app/common/logic/AuthLogic.php +++ b/app/common/logic/AuthLogic.php @@ -314,10 +314,12 @@ class AuthLogic public function feishuAppInfo(string $app_id, string $systemCode='') { $fsAppInfo = CorpFeishuApp::where('app_id', $app_id)->first(); + return [ 'app_id' => $fsAppInfo->app_id, 'app_secret' => $fsAppInfo->app_secret, 'r_url' => $fsAppInfo->r_url, + 'm_url' => $fsAppInfo->m_url, 'scope' => $fsAppInfo->scopes, 'state' => $fsAppInfo->state, ]; diff --git a/app/common/service/AuthService.php b/app/common/service/AuthService.php index a6a352c..4d00200 100644 --- a/app/common/service/AuthService.php +++ b/app/common/service/AuthService.php @@ -13,12 +13,12 @@ class AuthService /** * 飞书授权 */ - public function feishuAuthorize(string $app_id, string $systemCcode, $mobile) + public function feishuAuthorize(string $app_id, string $systemCcode, $is_pc) { $logic = new AuthLogic(); $certificate = $logic->feishuAppInfo($app_id, $systemCcode); $feishu = new Feishu($certificate['app_id'], $certificate['app_secret'], 'xinyouhe'); - return ['auth_url' => $feishu->authorize($certificate, $mobile)]; + return ['auth_url' => $feishu->authorize($certificate, $is_pc)]; } /** diff --git a/app/common/utils/Feishu.php b/app/common/utils/Feishu.php index 39c9121..9673cea 100644 --- a/app/common/utils/Feishu.php +++ b/app/common/utils/Feishu.php @@ -92,11 +92,12 @@ class Feishu /** * 授权 */ - public function authorize($certificate,$mobile, $url = 'authen/v1/authorize') + public function authorize($certificate,$is_pc, $url = 'authen/v1/authorize') { + $redirect_uri = $is_pc==1?$certificate['r_url']:$certificate['m_url']; $arr = [ 'app_id' => $certificate['app_id'], - 'redirect_uri' => $certificate['r_url'], + 'redirect_uri' => $redirect_uri, 'scope' => $certificate['scope'], 'state' => $certificate['state'] ]; From 3d23e0f821c7873e0221d6cac2e7c741d08fe1a6 Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Wed, 14 Jan 2026 13:43:45 +0800 Subject: [PATCH 2/8] 1 --- app/common/controller/UserController.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/common/controller/UserController.php b/app/common/controller/UserController.php index cdaa385..7febc31 100644 --- a/app/common/controller/UserController.php +++ b/app/common/controller/UserController.php @@ -88,9 +88,9 @@ class UserController extends BaseController unset($data['app_id']); $ossservice = new OssService(); - $data['user']['avatar_pull'] = $data['user']['avatar']; - if(!str_contains($data['user']['avatar'], 'http') && !str_contains($data['user']['avatar'], 'www.') && !empty($data['user']['avatar'])){ - $data['user']['avatar_pull'] = $ossservice->generatePrivateUrl($data['user']['avatar']); + $data['avatar_pull'] = $data['avatar']; + if(!str_contains($data['avatar'], 'http') && !str_contains($data['avatar'], 'www.') && !empty($data['user']['avatar'])){ + $data['avatar_pull'] = $ossservice->generatePrivateUrl($data['avatar']); } return $data; } From 4740484d371d43952774b975d11defb3d8d7a1ad Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Wed, 14 Jan 2026 14:03:08 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E6=87=82=E8=BD=A6=E5=B8=9D=E7=B3=BB?= =?UTF-8?q?=E5=88=97id?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/common/model/UsedCar.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/common/model/UsedCar.php b/app/common/model/UsedCar.php index bf6ac24..ef61776 100644 --- a/app/common/model/UsedCar.php +++ b/app/common/model/UsedCar.php @@ -40,7 +40,7 @@ class UsedCar extends Model /** * 允许自动填充模型字段 */ - protected $fillable = ['id','code', 'user_id', 'product_name', 'vin', 'price', 'source_place', 'plate_place', 'plate_time', 'displacement','mileage','power', 'body_color', 'images', 'condition_desc', 'attachment', 'crawl_title', 'crawl_brand', 'crawl_series', 'crawl_year', 'crawl_msrp', 'crawl_car_id', 'status', 'sort', 'created_at', 'updated_at']; + protected $fillable = ['id','code', 'user_id', 'product_name', 'vin', 'price', 'source_place', 'plate_place', 'plate_time', 'displacement','mileage','power', 'body_color', 'images', 'condition_desc', 'attachment', 'crawl_title', 'crawl_brand', 'crawl_brand_id', 'crawl_series', 'crawl_series_id', 'crawl_year', 'crawl_msrp', 'crawl_car_id', 'status', 'sort', 'created_at', 'updated_at']; /** * 不允许自动填充模型字段 From 842d502bf00472ef07b157ec8e79c9c418754917 Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Thu, 15 Jan 2026 10:30:48 +0800 Subject: [PATCH 4/8] 1 --- app/common/controller/UsedCarController.php | 18 ++++++++++++++---- app/common/utils/pdf/service/MpdfDriver.php | 4 ++-- app/common/utils/pdf/template/contactCard.stub | 2 +- app/queue/utils/XunfeiFanyi.php | 1 - 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/app/common/controller/UsedCarController.php b/app/common/controller/UsedCarController.php index 489a906..1d34a63 100644 --- a/app/common/controller/UsedCarController.php +++ b/app/common/controller/UsedCarController.php @@ -174,7 +174,7 @@ class UsedCarController extends BaseController $field['currency'] = $this->currency[$currency]; $data = $this->fanyi($data, $lang);//车辆字段翻译外文 $contactField = $this->contact($lang); //名片相关外文 - $pdf = (new MpdfDriver())->exportUsedCarPdf($field,$data,$user,$contactField,$contact); + $pdf = (new MpdfDriver())->exportUsedCarPdf($field,$data,$user,$contactField,$contact,$lang); UsedCar::where('id', $data['id'])->update(['pdf_src' => $pdf]); array_map('unlink', glob(runtime_path('pdf/images/*.jpg'))); @@ -257,7 +257,7 @@ class UsedCarController extends BaseController 'body_color' => 'Body Color', 'created_at' => 'Created At', 'condition_desc' => 'Vehicle Condition', - 'images' => 'Images', + 'images' => 'Product image', ], 'ru' => [ @@ -283,7 +283,7 @@ class UsedCarController extends BaseController 'body_color' => 'Color de la carrocería', 'created_at' => 'Fecha de creación', 'condition_desc' => 'Estado del vehículo', - 'images' => 'Imágenes', + 'images' => 'Imagen del producto', ], 'ar' => [ @@ -296,7 +296,7 @@ class UsedCarController extends BaseController 'body_color' => 'لون الهيكل', 'created_at' => 'تاريخ الإنشاء', 'condition_desc' => 'حالة السيارة', - 'images' => 'صور المنتج', + 'images' => 'خريطة المنتج', ], ]; return $field[$to]; @@ -322,6 +322,8 @@ class UsedCarController extends BaseController 'phone' => '电话', 'WhatsApp' => 'WhatsApp', 'code' => '二维码', + 'left' => '扫码即可联系本人', + 'right' => '本资料随PDF自动生成', ], 'en' => [ @@ -331,6 +333,8 @@ class UsedCarController extends BaseController 'phone' => 'Phone', 'WhatsApp' => 'WhatsApp', 'code' => 'QR Code', + 'left' => 'Scan the code to contact me', + 'right' => 'This information is automatically generated with the PDF', ], 'ru' => [ @@ -340,6 +344,8 @@ class UsedCarController extends BaseController 'phone' => 'Телефон', 'WhatsApp' => 'WhatsApp', 'code' => 'QR-код', + 'left' => 'Код позволяет связаться с самим собой.', + 'right' => 'Эта информация автоматически генерируется с помощью PDF', ], 'es' => [ @@ -349,6 +355,8 @@ class UsedCarController extends BaseController 'phone' => 'Teléfono', 'WhatsApp' => 'WhatsApp', 'code' => 'Código QR', + 'left' => 'Escanee el Código para contactarme.', + 'right' => 'Esta información se genera automáticamente con pdf', ], 'ar' => [ @@ -358,6 +366,8 @@ class UsedCarController extends BaseController 'phone' => 'الهاتف', 'WhatsApp' => 'واتساب', 'code' => 'رمز QR', + 'left' => 'اكتساح رمز الاتصال بي', + 'right' => 'هذه المعلومات تلقائيا مع قوات الدفاع الشعبي', ], ]; diff --git a/app/common/utils/pdf/service/MpdfDriver.php b/app/common/utils/pdf/service/MpdfDriver.php index 08981d7..c25d0f9 100644 --- a/app/common/utils/pdf/service/MpdfDriver.php +++ b/app/common/utils/pdf/service/MpdfDriver.php @@ -116,7 +116,7 @@ class MpdfDriver return [$css, $html]; } - public function exportUsedCarPdf($field,$car,$user,$contactField,$contact) + public function exportUsedCarPdf($field,$car,$user,$contactField,$contact,$lang) { /*$car = [ 'title' => '奥迪Q3 2013款 35 TFSI 舒适型', @@ -186,7 +186,7 @@ class MpdfDriver $pdf = $mpdf->Output('车辆详情.pdf', 'S'); $dir = runtime_path('pdf'); if (!is_dir($dir)) mkdir($dir, 0777, true); - $pdfName = 'invoice-' . date('YmdHis').'-'.$car['id'] . '.pdf'; + $pdfName = 'invoice-' . date('YmdHis').'-'.$car['id'] . '-' . $lang . '.pdf'; $path = $dir . '/' . $pdfName; file_put_contents($path, $pdf); diff --git a/app/common/utils/pdf/template/contactCard.stub b/app/common/utils/pdf/template/contactCard.stub index 493f73f..3c4f76c 100644 --- a/app/common/utils/pdf/template/contactCard.stub +++ b/app/common/utils/pdf/template/contactCard.stub @@ -77,7 +77,7 @@
- 扫码即可联系本人 | 本资料随 PDF 自动生成 + |
diff --git a/app/queue/utils/XunfeiFanyi.php b/app/queue/utils/XunfeiFanyi.php index 580136f..88783ba 100644 --- a/app/queue/utils/XunfeiFanyi.php +++ b/app/queue/utils/XunfeiFanyi.php @@ -40,7 +40,6 @@ class XunfeiFanyi $header = curl_getinfo($ch); curl_close($ch); $data = array('header' => $header,'body' => $response); - var_dump($data); return $data; } From c5a65921f781fcc7d3cd02702996112d7f31f3ed Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Thu, 15 Jan 2026 10:47:21 +0800 Subject: [PATCH 5/8] =?UTF-8?q?pdf=E6=96=87=E4=BB=B6=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/common/controller/UsedCarController.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/app/common/controller/UsedCarController.php b/app/common/controller/UsedCarController.php index 1d34a63..3e4955d 100644 --- a/app/common/controller/UsedCarController.php +++ b/app/common/controller/UsedCarController.php @@ -395,9 +395,16 @@ class UsedCarController extends BaseController if (!file_exists($publicFile)) { copy($filePath, $publicFile); } + + // 从连接中获取协议(最可靠) + $connection = $request->connection; + $protocol = 'https'; + if ($connection && property_exists($connection, 'transport')) { + $protocol = $connection->transport === 'ssl' ? 'https' : 'http'; + } // 返回访问地址 - $baseUrl = 'http://' . request()->header('host'); + $baseUrl = $protocol.'://' . request()->header('host'); $url = $baseUrl . '/pdf/' . $raw['pdf_src']; return $this->success([ From 3a76102ae33071c53475b868882607bbba83be6f Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Thu, 15 Jan 2026 10:54:21 +0800 Subject: [PATCH 6/8] =?UTF-8?q?pdf=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/common/controller/UsedCarController.php | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/app/common/controller/UsedCarController.php b/app/common/controller/UsedCarController.php index 3e4955d..b8d4603 100644 --- a/app/common/controller/UsedCarController.php +++ b/app/common/controller/UsedCarController.php @@ -395,16 +395,9 @@ class UsedCarController extends BaseController if (!file_exists($publicFile)) { copy($filePath, $publicFile); } - - // 从连接中获取协议(最可靠) - $connection = $request->connection; - $protocol = 'https'; - if ($connection && property_exists($connection, 'transport')) { - $protocol = $connection->transport === 'ssl' ? 'https' : 'http'; - } // 返回访问地址 - $baseUrl = $protocol.'://' . request()->header('host'); + $baseUrl = 'https://' . request()->header('host'); $url = $baseUrl . '/pdf/' . $raw['pdf_src']; return $this->success([ From 56e7575c6f32fd11a57a0bd05241cb2b15726622 Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Thu, 15 Jan 2026 11:42:02 +0800 Subject: [PATCH 7/8] =?UTF-8?q?=E9=A2=84=E8=A7=88pdf?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/common/controller/UsedCarController.php | 37 +++++++++++++++++++++ config/route.php | 1 + 2 files changed, 38 insertions(+) diff --git a/app/common/controller/UsedCarController.php b/app/common/controller/UsedCarController.php index b8d4603..2434f8b 100644 --- a/app/common/controller/UsedCarController.php +++ b/app/common/controller/UsedCarController.php @@ -409,4 +409,41 @@ class UsedCarController extends BaseController } } + /** + * 预览pdf + */ + function previewPdf($request) { + try { + $raw = $this->service->serviceShow($request); + $filePath = runtime_path('pdf') . '/' . $raw['pdf_src']; + + if (empty($raw['pdf_src']) || !file_exists($filePath)) { + throw new BusinessException('文件不存在'); + } + + // 确保 public/pdf 存在 + $publicDir = public_path('pdf'); + if (!is_dir($publicDir)) { + mkdir($publicDir, 0755, true); + } + + // 拷贝到 public 目录 + $publicFile = $publicDir . '/' . $raw['pdf_src']; + if (!file_exists($publicFile)) { + copy($filePath, $publicFile); + } + + $path = public_path('pdf/' . basename($raw['pdf_src'])); + + return response(file_get_contents($path), 200, [ + 'Content-Type' => 'application/pdf', + 'Access-Control-Allow-Origin' => '*', // 或指定前端域名 + 'Access-Control-Allow-Methods' => 'GET, OPTIONS', + 'Access-Control-Allow-Headers' => '*', + ]); + } catch (\Throwable $e) { + return $this->error($e->getMessage()); + } + } + } \ No newline at end of file diff --git a/config/route.php b/config/route.php index f26b74f..9748ad1 100644 --- a/config/route.php +++ b/config/route.php @@ -60,6 +60,7 @@ Route::group('/common', function () { Route::any('/produce/pdf', [app\common\controller\UsedCarController::class, 'producePdf']); Route::any('/download/pdf', [app\common\controller\UsedCarController::class, 'downloadPdf']); Route::any('/pdf', [app\common\controller\UsedCarController::class, 'getPdf']); + Route::any('/preview/pdf', [app\common\controller\UsedCarController::class, 'previewPdf']); Route::any('/show', [app\common\controller\UsedCarController::class, 'show']); Route::any('/store', [app\common\controller\UsedCarController::class, 'store']); Route::any('/update', [app\common\controller\UsedCarController::class, 'update']); From 667fb0a5a4d10d3432f97dc5fc8440325dbb5265 Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Thu, 15 Jan 2026 13:10:44 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=E9=99=84=E4=BB=B6=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/common/controller/UsedCarController.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/common/controller/UsedCarController.php b/app/common/controller/UsedCarController.php index 2434f8b..a766a6e 100644 --- a/app/common/controller/UsedCarController.php +++ b/app/common/controller/UsedCarController.php @@ -99,7 +99,8 @@ class UsedCarController extends BaseController foreach ($attachments as $attachment){ $attachment_pull[] = [ 'name'=>$attachment['name'], - 'src'=>$ossService->generatePrivateUrl($attachment['src']) + 'src'=>$attachment['src'], + 'src_pull'=>$ossService->generatePrivateUrl($attachment['src']), ]; } $data['attachment_pull'] = $attachment_pull;