Zory 5 days ago
parent
commit
02638673f4

+ 32 - 0
app/controller/api/Cart.php

@@ -0,0 +1,32 @@
+<?php
+
+namespace app\controller\api;
+
+use app\extra\basic\Base;
+use app\middleware\WxMiddleware;
+use LinFly\Annotation\Route\Controller;
+use LinFly\Annotation\Route\Route;
+use support\Response;
+use Webman\Annotation\Middleware;
+
+
+#[Controller(prefix: "/wx_api/cart"),Middleware(WxMiddleware::class)]
+class Cart extends Base
+{
+
+
+    /**
+     * 图片打印
+     * @return Response
+     */
+    #[Route(path: "image",methods: "post")]
+    public function uploadMultiImage()
+    {
+        try {
+
+        } catch (\Throwable $th) {
+            return error($th->getMessage());
+        }
+    }
+
+}

+ 47 - 0
app/controller/api/Uploads.php

@@ -0,0 +1,47 @@
+<?php
+
+namespace app\controller\api;
+
+use app\extra\basic\Base;
+use app\extra\tools\UploadExtend;
+use app\middleware\WxMiddleware;
+use app\model\saas\SaasUpload;
+use LinFly\Annotation\Route\Controller;
+use LinFly\Annotation\Route\Route;
+use support\Request;
+use support\Response;
+use Webman\Annotation\Middleware;
+
+
+#[Controller(prefix: "/wx_api/upload"),Middleware(WxMiddleware::class)]
+class Uploads extends Base
+{
+
+    /**
+     * 上传文件
+     * @param Request $request
+     * @return Response
+     */
+    #[Route(path: "data",methods: "post")]
+    public function uploadData(Request $request): Response
+    {
+        try {
+            $param = $request->post();
+            $resp = UploadExtend::disk(UploadExtend::MODE_LOCAL)->uploadFile();
+            events("clear-upload",['key' => $param['key']]);
+            (new SaasUpload())->insertGetId([
+                "key"       => $param['key'],
+                "path"      => $resp[0]['url'],
+                "agent_id"  => $param['shop']
+            ]);
+            if (!isset($resp[0]['url'])) return errorTrans(40010);
+            return successTrans("success.data",[
+                "fileName"  => $resp[0]['origin_name'],
+                "src"       => $resp[0]['url'],
+            ],200);
+        } catch (\Throwable $th) {
+            return error($th->getMessage());
+        }
+    }
+
+}

+ 37 - 0
app/event/ClearUpload.php

@@ -0,0 +1,37 @@
+<?php
+
+namespace app\event;
+
+use app\model\saas\SaasUpload;
+
+class ClearUpload
+{
+
+    /**
+     * 清理上传文件
+     * @param array $param
+     * @return bool
+     */
+    public function clearData(array $param = []): bool
+    {
+        try {
+            if (empty($param['key'])) return true;
+            $uploadData = (new SaasUpload)->where("key",$param["key"])->select();
+            if ($uploadData->isEmpty()) return true;
+            foreach ($uploadData as $file) {
+                if (file_exists(public_path().$file['path'])) {
+                    unlink(public_path().$file['path']);
+                }
+            }
+            $uploadData->delete(); // 清理数据库
+            return true;
+        } catch (\Throwable $th) {
+            echo "清理上传文件报错\n";
+            echo $th->getLine()."\n";
+            echo $th->getFile()."\n";
+            echo $th->getMessage()."\n";
+            return false;
+        }
+    }
+
+}

+ 25 - 0
app/middleware/WxMiddleware.php

@@ -0,0 +1,25 @@
+<?php
+
+namespace app\middleware;
+
+use Webman\Http\Request;
+use Webman\Http\Response;
+use Webman\MiddlewareInterface;
+
+class WxMiddleware implements MiddlewareInterface
+{
+    public function process(Request $request, callable $handler): Response
+    {
+        try {
+            $controller = new \ReflectionClass($request->controller);
+            $noNeedLogin = $controller->getDefaultProperties()['noNeedLogin']??[];
+            if (empty($noNeedLogin) || !in_array($request->action, $noNeedLogin)) {
+
+            }
+        } catch (\ReflectionException $exception) {
+            return json(['code'=> 500,'msg'=> $exception->getMessage()]);
+        }
+        return $request->method() == 'OPTIONS' ? response('',204) : $handler($request);
+    }
+
+}

+ 42 - 0
app/model/saas/SaasPrintClient.php

@@ -0,0 +1,42 @@
+<?php
+
+namespace app\model\saas;
+
+use app\extra\basic\Model;
+
+
+/**
+ * @property integer $id (主键)
+ */
+class SaasPrintClient extends Model
+{
+    /**
+     * The connection name for the model.
+     *
+     * @var string|null
+     */
+    protected $connection = 'mysql';
+    
+    /**
+     * The table associated with the model.
+     *
+     * @var string
+     */
+    protected string $table = "saas_print_client";
+    
+    /**
+     * The primary key associated with the table.
+     *
+     * @var string
+     */
+    protected string $primaryKey = "id";
+    
+    /**
+     * Indicates if the model should be timestamped.
+     *
+     * @var bool
+     */
+    public bool $timestamps = false;
+
+
+}

+ 45 - 0
app/model/saas/SaasUpload.php

@@ -0,0 +1,45 @@
+<?php
+
+namespace app\model\saas;
+
+use app\extra\basic\Model;
+
+
+/**
+ * @property integer $id (主键)
+ * @property integer $agent_id 
+ * @property string $path 
+ * @property mixed $create_at
+ */
+class SaasUpload extends Model
+{
+    /**
+     * The connection name for the model.
+     *
+     * @var string|null
+     */
+    protected $connection = 'mysql';
+    
+    /**
+     * The table associated with the model.
+     *
+     * @var string
+     */
+    protected string $table = "saas_upload";
+    
+    /**
+     * The primary key associated with the table.
+     *
+     * @var string
+     */
+    protected string $primaryKey = "id";
+    
+    /**
+     * Indicates if the model should be timestamped.
+     *
+     * @var bool
+     */
+    public bool $timestamps = false;
+
+
+}

+ 3 - 1
config/event.php

@@ -1,5 +1,7 @@
 <?php
 
 return [
-    
+    "clear-upload" => [
+        [\app\event\ClearUpload::class,"clearData"]
+    ]
 ];

+ 0 - 25
public/uploads/storage/20251210/64762e3876273e5f65d3cd11797de2779603bd85.pem

@@ -1,25 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIEJDCCAwygAwIBAgIUZWfxTKFU1r9pyNGyCf1lbtnL0mowDQYJKoZIhvcNAQEL
-BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT
-FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg
-Q0EwHhcNMjUxMDEwMDgzMDA2WhcNMzAxMDA5MDgzMDA2WjB+MRMwEQYDVQQDDAox
-NzI5NDg5NDcwMRswGQYDVQQKDBLlvq7kv6HllYbmiLfns7vnu58xKjAoBgNVBAsM
-Ieays+WNl+aZuuaDoOWNsOenkeaKgOaciemZkOWFrOWPuDELMAkGA1UEBhMCQ04x
-ETAPBgNVBAcMCFNoZW5aaGVuMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
-AQEArQY2xAi7bot3xSX509jysm/19KHvtR9e9uyeDL8CoK0fMcjxwa4yVWe6+Jm4
-lqyvNWHf5Y3QiwXcdv42rTl/FT7vHd+kKYqSyZSG1AL6Z+OG1v0DMxNzKQRjblQo
-9vbCtEGaJ06iHXlM9KP/NppL3jjqAG+tEZ7mQt4F6JYZJEzOoWKpZnp26fEg23GC
-R+Cbs7JIjsUNKv1ShIWRX4DCSwGhnBr9a8Cc7LSTiRcr7K5ps7RSuqCeTmJ/XbEM
-AjSxnpl9hEqazZg/0vSJp6ZyIU10lZfUMXvMSek6Pq71npN3cH1JF+RbtBsTwYA1
-Wma6p91ZLccHtn3F2+yDTuaUmwIDAQABo4G5MIG2MAkGA1UdEwQCMAAwCwYDVR0P
-BAQDAgP4MIGbBgNVHR8EgZMwgZAwgY2ggYqggYeGgYRodHRwOi8vZXZjYS5pdHJ1
-cy5jb20uY24vcHVibGljL2l0cnVzY3JsP0NBPTFCRDQyMjBFNTBEQkMwNEIwNkFE
-Mzk3NTQ5ODQ2QzAxQzNFOEVCRDImc2c9SEFDQzQ3MUI2NTQyMkUxMkIyN0E5RDMz
-QTg3QUQxQ0RGNTkyNkUxNDAzNzEwDQYJKoZIhvcNAQELBQADggEBABiypr2vO/YW
-XJACZzcWhDQwCLUD+7hO5ksj28nGyuYU0CIdexlzY4iM9OEiEoZj2qkJHQQF6jLt
-xOcdc9PfjbLiLw+i8F05Xt8ZJTOpxt7BnkzqZfLdaxM+Y70iokAClbTN6pSQnpu7
-7EMCDXrrDzgVMJ7dHn1IiPaJajb2GxLYh9ANXWXSCBXT2dSxt3YI5azq2DYwgV+Y
-KIqvfEFx4VDQKa62HrHyvBKPa1ZcznCUpPMFxk5X/OlhXhyR/ysu5oiDxP1gZRV3
-9rjCTciWkLATD2ekwIdx7WT5Dy+jMt1b5Dg1FDrNzPR4sqW3brjAlV8hq6ksnFhc
-lICPcAwhVFM=
------END CERTIFICATE-----

+ 0 - 28
public/uploads/storage/20251210/bd1a4e35f31b7d8deb0f03ac4aa6f99d29db9314.pem

@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCtBjbECLtui3fF
-JfnT2PKyb/X0oe+1H1727J4MvwKgrR8xyPHBrjJVZ7r4mbiWrK81Yd/ljdCLBdx2
-/jatOX8VPu8d36QpipLJlIbUAvpn44bW/QMzE3MpBGNuVCj29sK0QZonTqIdeUz0
-o/82mkveOOoAb60RnuZC3gXolhkkTM6hYqlmenbp8SDbcYJH4JuzskiOxQ0q/VKE
-hZFfgMJLAaGcGv1rwJzstJOJFyvsrmmztFK6oJ5OYn9dsQwCNLGemX2ESprNmD/S
-9ImnpnIhTXSVl9Qxe8xJ6To+rvWek3dwfUkX5Fu0GxPBgDVaZrqn3Vktxwe2fcXb
-7INO5pSbAgMBAAECggEAOzb+NTb71ohatBkcGBmObe0NUuy82dLjsEQojxor7wtw
-upwXyP4x8bKvdXc+iiqNSAq4EprnPT0DR6IW2k/sIzxHn4SzbRgkxmJThmmCg12F
-/zvWBXvplKcQ1GhvIJ4w4nn1JPCvYMDrymn55RkHUAVQaFfP9lDYYxgTE5eTAS3M
-FlzbnehFBkF+Jc5Dfc+Dr1eDWAnTzYPcLHPSdy9L3vdTvtkaI9zdzcpnVnYbNWkJ
-Z+rjL2KXRUeqdK7Ai9Kp7Ip77LcMBXBpPHjZkvo2A0MuWqw8Ko12zAZxPqpAVp/a
-tc5cCLsMu/hp39+orAk/FuVWfh4B/wSiA/NgX4ozgQKBgQDT7k5+v5ivjBQ5G1ym
-R85gHe798/8HnEWHNEf4xheFFFy+VsMm9U3gtL2C4jZNAMHrZTBI4MqBnVh7jcrb
-3qda6nKpUrVNYC5VzOFlwQErgYJqm0eK/USL+tzf2kbdavEGe8k9rtb0mYqMVyZU
-nUwnwFBhy/Y2dD6ZZoGkXcILWwKBgQDRAMvB+ojyLH4KZjFykflD34FP1lQo1WhM
-+Hf0rJyflgELybAT8v7U+qLrzFsyOZeFEG7L1i+/n/zVwOM9nKxC9Jy0inxPKwyK
-psHW2TDyU/I9ArIvFIkMxRkwxrsVjhwHUExXNVXi7oo1HmLdoE7Hc7UJJe7nI4N/
-Cs7i4XQfwQKBgQDJ7cpE4nGs8h9iujtxBAITevH4br+UlMV6qcnZs4U9e8VSZoDT
-Ye+uJwha6QcsH4ilrWhwSB8rmKxyLQwYqvFyouhVhUTSUM5VWj15Iojm1yNYSFPG
-jsL9TS2e7O+QkRDOSKvaZfjSXmmwhmkzPh0N0yPDyv7xq5jpuM3Vuq/k+QKBgAZf
-/tcQ3EJ+xu1sRo/XEgJW++vCftisAb1vSsFkznYzrh587Wj+XXWDm5qTpih3Bz8g
-zDBdfSFcMOsYMhY8BCkaqvj6zGXhy0UjZwA1qb+KffYMcgDroG6KSIVrWmOC7Snv
-8hQq5U7Bted+4Mcfz6dXySrZRFs6gxVJ8BuNguxBAoGBAKAVT5d00K+nVATgEnqM
-71KIsgQtcCtyj9qVSyys0SS5w9M8TjuPOLMgIh6rSr3wDDP25IGI/0jSBMoUQz+T
-/pPttOss/am1LJHyIP17denlPxFJGXAHFK+X9qHdop56HMrDbs2tkZPegYcCgjD+
-CGgu2iJPyQJak6+UOAasuw9r
------END PRIVATE KEY-----