unknown 3 өдөр өмнө
parent
commit
9df2a06a35

+ 32 - 8
application/api/controller/ProductController.php

@@ -6,6 +6,7 @@
 
 namespace app\api\controller;
 
+use app\api\controller\Common;
 use think\Controller;
 use think\Request;
 use think\facade\Env;
@@ -68,15 +69,16 @@ class ProductController extends Controller
 
         if ($info) {
             $relativePath = 'uploads/' . $year . $month . $day . '/' . $fileName;
-            $fileUrl = $this->request->domain() . '/' . str_replace('\\', '/', $relativePath);
+            // $fileUrl = $this->request->domain() . '/' . str_replace('\\', '/', $relativePath);
 
             return json([
                 'success' => true,
                 'message' => '上传成功',
                 'data' => [
-                    'url' => $fileUrl
+                    // 'url' => $fileUrl
+                    'url' => $relativePath
                 ]
-            ]);
+            ]); 
         } else {
             return json([
                 'success' => false,
@@ -95,27 +97,49 @@ class ProductController extends Controller
      */
     public function productAdd()
     {
-        // 获取请求数据
         $data = $this->request->param();
         
-        // 验证数据(示例)
         if (empty($data['code'])) {
             return json([
                 'success' => false,
                 'message' => '产品编码不能为空'
             ]);
         }
+
+        $productImgPath = '';
+        if (!empty($data['image'])) {
+            $base64Data = $data['image'];
+            if (preg_match('/data:image\/(png|jpg|jpeg);base64,([A-Za-z0-9+\/=]+)/i', $base64Data, $m)) {
+                $imageType = strtolower($m[1]);
+                $imageData = base64_decode($m[2]);
+                if ($imageData !== false && strlen($imageData) >= 100) {
+                    $productCode = $data['code'];
+                    $prefix = strlen($productCode) >= 4 ? substr($productCode, 0, -4) : $productCode;
+                    $safeName = preg_replace('/[\\\\\/:*?"<>|]/u', '_', $data['name']);
+                    $ext = ($imageType === 'jpeg') ? 'jpg' : $imageType;
+                    $fileName = $safeName . '.' . $ext;
+                    $saveDir = str_replace('\\', '/', ROOT_PATH . 'public/uploads/merchant/' . $prefix . '/' . $productCode . '/oldimg/');
+                    if (!is_dir($saveDir)) {
+                        mkdir($saveDir, 0755, true);
+                    }
+                    if (file_put_contents($saveDir . $fileName, $imageData)) {
+                        $productImgPath = 'uploads/merchant/' . $prefix . '/' . $productCode . '/oldimg/' . $fileName;
+                        Common::uploadLocalFileToOss($saveDir . $fileName, $productImgPath);
+                    }
+                }
+            }
+        }
         
         $res = [
             'product_name' => $data['name'],
             'product_code' => $data['code'],
-            'product_img' => $data['image'],
+            'product_img' => $productImgPath,
             'createTime' => date('Y-m-d H:i:s'),
             'create_name' => '系统摄像头',
         ];
         
-        $res = db('product')->insert($res);
-        if (!$res) {
+        $insertResult = db('product')->insert($res);
+        if (!$insertResult) {
             return json([
                 'success' => false,
                 'message' => '添加失败'