瀏覽代碼

0803-0049-h01

Zory 2 天之前
父節點
當前提交
41f67d149c

+ 1 - 1
app/controller/admin/Order.php

@@ -44,7 +44,7 @@ class Order extends Base
             },'poi' => function($query){
                 $query->field("poi_id,poi_name,poi_address,nick_name");
             },"star" => function($query){
-                $query->field("uid,nick_name,avatar_url");
+                $query->field("uid,nick_name,avatar_url,unique_id");
             }],true,['end_time','refund_num'],["end_time" => function ($resp,$next) {
                 return timeDiff(strtotime("+30 minutes",strtotime($next['create_at'])),time());
             },'refund_num' => function($resp,$next){

+ 4 - 0
app/controller/api/Auth.php

@@ -42,6 +42,8 @@ class Auth extends Base
                 "iv.default"        => '',
             ],$request->method());
             if (!is_array($param)) return error($param);
+            echo getDateFull()."登录手机号信息\n";
+            echo json_encode($param)."\n";
             $sessionKey = (new Crypt)->config($this->getDyConfig())->getSessionKey($param['login']);
             if (empty($sessionKey)) return error("授权登录失败-m");
             if (!empty($param['code'])) {
@@ -72,6 +74,8 @@ class Auth extends Base
                 "mobile.require"        => trans("empty.require"),
             ],$request->method());
             if (!is_array($param)) return error($param);
+            echo getDateFull()."登录昵称信息\n";
+            echo json_encode($param)."\n";
             $mobileData = json_decode($param['mobile'],true);
             $mobile = [];
             if (!empty($param['mobile'])) {

+ 12 - 9
app/controller/api/Notify.php

@@ -4,12 +4,14 @@ namespace app\controller\api;
 
 use app\extra\basic\Base;
 use app\extra\dyLife\data\OrderData;
+use app\extra\tools\LifeWeb;
 use app\model\saas\SaasOrder;
 use app\model\saas\SaasOrderItem;
 use LinFly\Annotation\Attributes\Route\Controller;
 use LinFly\Annotation\Attributes\Route\PostMapping;
 use support\Request;
 use support\Response;
+use Webman\RedisQueue\Redis;
 
 
 #[Controller("/notify")]
@@ -31,15 +33,16 @@ class Notify extends Base
             if ($order->isEmpty()) return json(['err_no' => 0,'err_tips' => "success"]);
             if ($order['status'] <> 0) return json(['err_no' => 0,'err_tips' => "success"]);
             (new SaasOrderItem)->where("order_sn",$order['order_sn'])->update(['status' => 1]);
-            // 查询订单详情
-            $orderData = (new OrderData)->config([
-                "appid"     => sConf("wechat.appid"),
-                "secret"    => sConf("wechat.secret"),
-                "account"   => sConf("wechat.shop_id"),
-            ])->token()->getOrderData($order['order_sn']);
-            if (isset($orderData['orders'][0]['anchor_id'])) {
-                $order->douyin_uid = $orderData['orders'][0]['anchor_id'];
-            }
+            // 查询订单详情 - 延迟30秒读取
+            Redis::send("sync-order-info",['order' => $order['order_sn']],30);
+//            $orderData = (new OrderData)->config([
+//                "appid"     => sConf("wechat.appid"),
+//                "secret"    => sConf("wechat.secret"),
+//                "account"   => sConf("wechat.shop_id"),
+//            ])->token()->getOrderData($order['order_sn']);
+//            if (isset($orderData['orders'][0]['anchor_id'])) {
+//                $order->douyin_uid = $orderData['orders'][0]['anchor_id'];
+//            }
             $order->status = 1;
             $order->pay_at = getDateFull();
             $order->pay_type = $data['pay_channel'];

+ 1 - 1
app/controller/api/Service.php

@@ -89,7 +89,7 @@ class Service extends Base
                 "page"      => 1
             ]);
             // 获取在线客服
-            $service = (new SystemUser)->where("store_id",$param['poi'])->where("type",3)->where("is_line",1)->findOrEmpty();
+            $service = (new SystemUser)->where(['store_id' => $param['poi'],"type" => 3,"is_line" => 1])->order("last_msg_at","asc")->findOrEmpty();
             if ($service->isEmpty()) return $this->encode("ok",['store' => $store,'code' => 3,'sendId' => $request->user['openid'],'msg' => pageFormatMsg($msg),"serviceId" => 0]); // 无客服在线
             if ($chatStore->isEmpty()) {
                 $chatStore->insertGetId([

+ 77 - 22
app/controller/api/Solution.php

@@ -7,17 +7,24 @@ use app\extra\dyLife\data\OrderData;
 use app\extra\dyLife\Token;
 use app\extra\dyMini\Relation;
 use app\extra\tools\CodeExtend;
+use app\extra\tools\LifeWeb;
 use app\middleware\AuthMiddleware;
 use app\model\saas\SaasGoods;
 use app\model\saas\SaasGoodsSku;
+use app\model\saas\SaasLivePlanGoods;
+use app\model\saas\SaasLivePlanStar;
 use app\model\saas\SaasOrder;
 use app\model\saas\SaasOrderItem;
 use app\model\saas\SaasOrderVerify;
+use app\model\saas\SaasStar;
 use LinFly\Annotation\Attributes\Route\Controller;
 use LinFly\Annotation\Attributes\Route\GetMapping;
 use LinFly\Annotation\Attributes\Route\RequestMapping;
 use support\Request;
 use support\Response;
+use Webman\RedisQueue\Redis;
+use Workerman\Timer;
+use yzh52521\EasyHttp\Http;
 
 
 /**
@@ -163,35 +170,83 @@ class Solution extends Base
     }
 
     #[GetMapping("test")]
-    public function setTest()
+    public function setTest(Request $request): Response
     {
         try {
+            $param = $this->_valid([
+                "order.require" => trans("empty.require")
+            ],$request->method());
+            if (!is_array($param)) return error($param);
+            Redis::send("sync-order-info",['order' => $param['order']],30);
+            return success("ok");
+//            $order = (new SaasOrder)->where("order_sn",$param['order'])->findOrEmpty();
+//            if ($order->isEmpty()) return error("数据不存在");
+//            [$state,$resp] = (new LifeWeb)->token()->getOrderData($param['order']);
+//            if (!$state) return error($resp);
+//            $order->douyin_uid = $resp['douyin_uid'];
+//            $order->life_fee = $resp['life_fee'];
+//            $order->star_fee = $resp['star_fee'];
+//            $order->save();
+//            return successTrans("success.data",$resp);
 //            $data = (new Relation)->config($this->getDyConfig())->token()->createOrderFirst(['1865253598118939']);
-            $data = (new SaasOrder)->where('status',2)->whereNull("douyin_uid")->select();
 //            $data = (new SaasOrderVerify)->where("status",0)->with(['orders'])->select();
-            if ($data->isEmpty()) return error("err");
-            $upData = [];
-            foreach ($data as $key=>$item) {
-                // 查询订单详情
-                $orderData = (new OrderData)->config([
-                    "appid"     => sConf("wechat.appid"),
-                    "secret"    => sConf("wechat.secret"),
-                    "account"   => sConf("wechat.shop_id"),
-                ])->token()->getOrderData($item['order_sn']);
-                if (isset($orderData['orders'][0]['anchor_id'])) {
-                    $upData[$key] = [
-                        "douyin_uid"    => $orderData['orders'][0]['anchor_id'],
-                        "id"            => $item['id']
-                    ];
-                }
-            }
-            if (!empty($upData)) {
-                (new SaasOrder)->saveAll(array_values($upData));
-            }
-            return success("ok",array_values($upData));
+//            $data = (new SaasOrder)->where('status',2)->whereNull("douyin_uid")->select();
+//            $data = (new SaasOrder)->where('status','in',[1,2,3,6])->select();
+//            if ($data->isEmpty()) return error("err");
+//            $upData = [];
+//            foreach ($data as $key=>$item) {
+//                // 查询订单详情
+//                [$state,$resp] = (new LifeWeb)->token()->getOrderData($item['order_sn']);
+//                if (!$state) {
+//                    echo getDateFull()."==={$item['order_sn']}===订单获取失败\n";
+//                } else {
+//                    echo getDateFull()."==={$item['order_sn']}===执行更新\n";
+//                    print_r($resp);
+//                    $upData[$key] = [
+//                        "douyin_uid"    => $resp['douyin_uid'],
+//                        "star_fee"      => $resp['star_fee'],
+//                        "life_fee"      => $resp['life_fee'],
+//                        "id"            => $item['id']
+//                    ];
+//                }
+//                Timer::sleep(1.5);
+//            }
+//            if (!empty($upData)) {
+//                (new SaasOrder)->saveAll(array_values($upData));
+//            }
+//            return success("ok",$upData);
+//            $param = $this->_valid([
+//                "order.require" => trans("empty.require")
+//            ],$request->method());
+//            if (!is_array($param)) return error($param);
+//            $order = (new SaasOrder)->where("order_sn",$param['order'])->findOrEmpty();
+//            if ($order->isEmpty()) return errorTrans("empty.data");
+//            $douyin = (new SaasStar)->where("uid",$order['douyin_uid'])->value("unique_id");
+//            $productRate = $this->getDyUidProduct($douyin,$order['life_goods_id']);
+//            return success("ok",$productRate);
         } catch (\Throwable $throwable) {
+            echo $throwable->getMessage()."\n";
+            echo $throwable->getFile()."\n";
+            echo $throwable->getLine()."\n";
             return error($throwable->getMessage());
         }
     }
 
+    protected function getDyUidProduct(string $dyUid = "",string $goodsId = ""): array
+    {
+        $starPlan = (new SaasLivePlanStar)->where("unique_id",$dyUid)->column("plan_id");
+        if (empty($starPlan)) return [];
+        print_r($starPlan);
+        $productIds = (new SaasLivePlanGoods)->where("plan_id","in",$starPlan)->column("goods_id,commission_rate,plan_id");
+        if (empty($productIds)) return [];
+        $goodsReturn = [];
+        foreach ($productIds as $key=>$productId) {
+            if ($productId['goods_id'] == $goodsId) {
+                $goodsReturn[$key]  = $productId;
+                break;
+            }
+        }
+        return $goodsReturn;
+    }
+
 }

+ 45 - 0
app/controller/merchant/BankAccount.php

@@ -0,0 +1,45 @@
+<?php
+
+namespace app\controller\merchant;
+
+use app\extra\basic\Base;
+use app\middleware\AuthMiddleware;
+use app\model\saas\SaasStoreAccount;
+use app\service\saas\BankService;
+use DI\Attribute\Inject;
+use LinFly\Annotation\Attributes\Route\Controller;
+use LinFly\Annotation\Attributes\Route\GetMapping;
+use LinFly\Annotation\Attributes\Route\Middleware;
+use support\Request;
+use support\Response;
+
+/**
+ * 收款帐号
+ */
+#[Controller("/api/merchant/bank"),Middleware(AuthMiddleware::class)]
+class BankAccount extends Base
+{
+
+    #[Inject]
+    protected BankService $service;
+
+    #[Inject]
+    protected SaasStoreAccount $model;
+
+
+    #[GetMapping('list')]
+    public function getDataList(Request $request): Response
+    {
+        try {
+            $param = $request->all();
+            $param['poi_id'] = $request->user['store_id'];
+            $data = $this->service->setModel()->getList($param,['store' => function($query){
+                $query->field("poi_id,poi_name,poi_address,poi_city");
+            }]);
+            return successTrans("success.data",pageFormat($data),200);
+        } catch (\Throwable $throwable) {
+            return error($throwable->getMessage());
+        }
+    }
+
+}

+ 1 - 0
app/controller/merchant/Order.php

@@ -107,6 +107,7 @@ class Order extends Base
             }
             if ($param['field'] == 'is_error' && $param['val'] == 1) {
                 $update['express_status'] = 0;
+                $update['error_at'] = getDateFull();
             }
             $update[$param['field']] = $param['val'];
             $state = $order->save($update);

+ 128 - 0
app/controller/merchant/Unusual.php

@@ -0,0 +1,128 @@
+<?php
+
+namespace app\controller\merchant;
+
+use app\extra\basic\Base;
+use app\extra\dyLife\data\OrderData;
+use app\middleware\AuthMiddleware;
+use app\model\saas\SaasOrder;
+use app\model\saas\SaasOrderAddress;
+use DI\Attribute\Inject;
+use LinFly\Annotation\Attributes\Route\Controller;
+use LinFly\Annotation\Attributes\Route\Middleware;
+use LinFly\Annotation\Attributes\Route\PostMapping;
+use support\Request;
+use support\Response;
+use Webman\RedisQueue\Redis;
+
+
+#[Controller("/api/merchant/unusual"),Middleware(AuthMiddleware::class)]
+class Unusual extends Base
+{
+
+
+    #[Inject]
+    protected SaasOrder $model;
+
+
+    /**
+     * 退款
+     * @param Request $request
+     * @return Response
+     */
+    #[PostMapping('refund')]
+    public function orderRefund(Request $request): Response
+    {
+        try {
+            $param = $this->_valid([
+                "order.require" => trans("empty.require")
+            ],$request->method());
+            if (!is_array($param)) return error($param);
+            $data = $this->model->where("order_sn",$param['order'])->findOrEmpty();
+            if ($data->isEmpty()) return errorTrans("empty.data");
+            if ($request->user['store_id'] <> $data['poi_id'] && $request->user['is_super'] == 0) return errorTrans("empty.data");
+            if (strtotime("+24 hour",strtotime($data['error_at'])) < time()) return error("异常订单需24小时后方可操作");
+            $data->status = 1;
+            $data->is_error = 0;
+            $state = $data->save();
+            (new SaasOrderAddress)->where(['order_sn' => $data['out_order_no'],"openid" => $data['openid']])->delete();
+            if (!$state) return errorTrans("error.data");
+            return successTrans("success.data");
+        } catch (\Throwable $throwable) {
+            return error($throwable->getMessage());
+        }
+    }
+
+    /**
+     * 备用退款
+     * @param Request $request
+     * @return Response
+     */
+    #[PostMapping('refund2')]
+    public function orderRefund2(Request $request): Response
+    {
+        try {
+            $param = $this->_valid([
+                "order.require" => trans("empty.require")
+            ],$request->method());
+            if (!is_array($param)) return error($param);
+            $data = $this->model->where("order_sn",$param['order'])->findOrEmpty();
+            if ($data->isEmpty()) return errorTrans("empty.data");
+            if ($request->user['store_id'] <> $data['poi_id'] && $request->user['is_super'] == 0) return errorTrans("empty.data");
+            if (strtotime("+24 hour",strtotime($data['error_at'])) < time()) return error("异常订单需24小时后方可操作");
+            $orderCode = (new OrderData)->config([
+                "appid"     => sConf("wechat.appid"),
+                "secret"    => sConf("wechat.secret"),
+                "account"   => sConf("wechat.shop_id"),
+            ])->token()->getCertificate($data['order_sn']);
+            echo getDateFull()."===手动退款\n";
+            print_r($orderCode);
+            if (empty($orderCode['certificates'])) return error("获取订单数据失败");
+            $encrypted_code = array_map(function ($v) {
+                return $v['certificate_id'];
+            }, $orderCode['certificates']);
+            print_r($encrypted_code);
+            $orderDone = (new OrderData)->config([
+                "appid"     => sConf("wechat.appid"),
+                "secret"    => sConf("wechat.secret"),
+                "account"   => sConf("wechat.shop_id"),
+            ])->token()->cancelOrder($data['order_sn'],$encrypted_code);
+            echo getDateFull()."===手动退款\n";
+            print_r($orderDone);
+            if ($orderDone['error_code'] <> 0) return error("退款失败");
+            $data->status = 3;
+            $data->done_at = getDateFull();
+            $state = $data->save();
+            if (!$state) return errorTrans("error.data");
+            return successTrans("success.data");
+        } catch (\Throwable $throwable) {
+            return error($throwable->getMessage());
+        }
+    }
+
+
+    /**
+     * 核销
+     * @param Request $request
+     * @return Response
+     */
+    #[PostMapping('done')]
+    public function orderDone(Request $request): Response
+    {
+        try {
+            $param = $this->_valid([
+                "order.require" => trans("empty.require")
+            ],$request->method());
+            if (!is_array($param)) return error($param);
+            $data = $this->model->where("order_sn",$param['order'])->findOrEmpty();
+            if ($data->isEmpty()) return errorTrans("empty.data");
+            if ($request->user['store_id'] <> $data['poi_id'] && $request->user['is_super'] == 0) return errorTrans("empty.data");
+            if (strtotime("+24 hour",strtotime($data['error_at'])) < time()) return error("异常订单需24小时后方可操作");
+            Redis::send("order-done",['order' => $data['order_sn']]);
+            return success("已发起核销,请等待1-2分钟后刷新列表查看状态");
+        } catch (\Throwable $throwable) {
+            return error($throwable->getMessage());
+        }
+    }
+
+}

+ 6 - 6
app/controller/notify/Life.php

@@ -47,8 +47,8 @@ class Life extends Base
     {
         try {
             $param = $request->all();
-            echo getDateFull()."===自研应用回调===\n";
-            print_r($param);
+//            echo getDateFull()."===自研应用回调===\n";
+//            print_r($param);
             return error("ddd");
         } catch (\Throwable $throwable) {
             return error($throwable->getMessage());
@@ -62,8 +62,8 @@ class Life extends Base
     {
         try {
             $data = $request->all();
-            echo getDateFull()."===自研应用回调WebHook===\n";
-            print_r($data);
+//            echo getDateFull()."===自研应用回调WebHook===\n";
+//            print_r($data);
             if (isset($data['event']) && $data['event'] == "verify_webhook") {
                 return json(['challenge' => $data['content']['challenge']]);
             }
@@ -91,8 +91,8 @@ class Life extends Base
     {
         try {
             $data = $request->all();
-            echo getDateFull()."===小程序WebHook===\n";
-            print_r($data);
+//            echo getDateFull()."===小程序WebHook===\n";
+//            print_r($data);
             if (isset($data['event']) && $data['event'] == "verify_webhook") {
                 return json(['challenge' => $data['content']['challenge']]);
             }

+ 2 - 0
app/controller/service/Service.php

@@ -8,6 +8,7 @@ use app\middleware\AuthMiddleware;
 use app\model\saas\SaasChatMsg;
 use app\model\saas\SaasChatStore;
 use app\model\saas\SaasOrderPrice;
+use app\model\system\SystemUser;
 use app\service\saas\ChatStoreService;
 use app\service\saas\GoodsService;
 use DI\Attribute\Inject;
@@ -138,6 +139,7 @@ class Service extends Base
                 "service_id" => $request->user['id'],
             ]);
             (new SaasChatMsg)->where(['openid' => $param['openid'],'service_id' => $request->user['id']])->save(['is_read' => 1]);
+            (new SystemUser)->where("id",$request->user['id'])->update(['last_msg_at' => getDateFull()]);
             $api = new Api('http://127.0.0.1:3232', config('plugin.webman.push.app.app_key'),config('plugin.webman.push.app.app_secret'));
             $api->trigger("user-{$param['openid']}","message",[
                 "type"  =>  $param['type'],

+ 21 - 0
app/extra/dyLife/data/OrderData.php

@@ -81,4 +81,25 @@ class OrderData extends BasicLife
         return $this->curlPostApi("goodlife/v1/fulfilment/certificate/verify/",$param);
     }
 
+
+    /**
+     * 订单退款
+     * https://developer.open-douyin.com/docs/resource/zh-CN/local-life/develop/OpenAPI/general-capabilities/groupon-refund/order-refund-apply
+     * @param string $orderId
+     * @param array $codeList
+     * @return array
+     */
+    public function cancelOrder(string $orderId = "",array $codeList = []): array
+    {
+        $param = [
+            "refund_reason_code" => [305],
+            "order_id"          => $orderId,
+            "certificate_id_list"   => $codeList,
+            "account_id"        => $this->baseAccountId
+        ];
+        echo "手动退款参数\n";
+        print_r($param);
+        return $this->curlPostApi("goodlife/v1/groupon/order/refund/apply/",$param);
+    }
+
 }

+ 73 - 0
app/extra/tools/LifeWeb.php

@@ -0,0 +1,73 @@
+<?php
+
+namespace app\extra\tools;
+
+use app\model\system\SystemConfig;
+use yzh52521\EasyHttp\Http;
+
+class LifeWeb
+{
+
+    protected string $getaway = "https://life.douyin.com";
+
+    /**
+     * 默认header
+     * @var string[]
+     */
+    protected array $header = [];
+
+    /**
+     * 释放授权
+     * @return $this
+     */
+    public function token(): static
+    {
+        $this->header = [
+            "cookie" => $this->getCookies()
+        ];
+        return $this;
+    }
+
+    public function getOrderData(string $orderId = ""): array
+    {
+        $param = [
+            "order_id"          => $orderId,
+            "current_time_ms"   => round(microtime(true) * 1000),
+            "show_reason"       => "catering_comprehensive_coupon",
+            "search_type"       => 1,
+            "source"            => 1,
+            "dito_biz_common_param" => [
+                "page_id"       => "502",
+                "scene_version" => "management",
+                "source"        => "dlk_pc"
+            ],
+            "industry"  => "industry_common"
+        ];
+        $resp = Http::asJson()->withHeaders($this->header)->post($this->getaway."/life/trade_view/v1/management/coupon/sale/get_detail?industry=industry_common&root_life_account_id=7595228109947947043&life_biz_view_id=22&life_account_biz_ids=",$param)->array();
+        if (!isset($resp['data']['dito_data']['meta_data'])) return [0,'获取失败'];
+        $metaData = $resp['data']['dito_data']['meta_data'];
+        $dataRe = json_decode(json_decode($metaData, true), true);
+        $orderFee = $dataRe['order_fee']['bill_commissions'];
+        $starFee = $lifeFee = 0;
+        foreach ($orderFee as $value) {
+            if ($value['title'] == "软件服务费") {
+                $lifeFee = substr($value['amount'],1);
+            }
+            if ($value['title'] == "达人服务费") {
+                $starFee = substr($value['amount'],1);
+            }
+        }
+        return [1,[
+            "douyin_uid"    => $dataRe['order_source']['sale_user_unique_id']??'',
+            "star_fee"      => $starFee,
+            "life_fee"      => $lifeFee,
+        ]];
+    }
+
+
+    protected function getCookies()
+    {
+        return (new SystemConfig)->where(['type' => "life","name" => "cookies"])->value("value");
+    }
+
+}

+ 49 - 0
app/model/saas/SaasBillsDay.php

@@ -0,0 +1,49 @@
+<?php
+
+namespace app\model\saas;
+
+use app\extra\basic\Model;
+
+
+/**
+ * @property integer $id (主键)
+ * @property mixed $poi_id 
+ * @property string $title 
+ * @property mixed $day 
+ * @property integer $status 0待结算1已结算
+ * @property mixed $end_day 结算时间
+ * @property integer $order_money 核销金额
+ * @property integer $store_money 结算金额
+ */
+class SaasBillsDay 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_bills_day";
+    
+    /**
+     * 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;
+
+
+}

+ 49 - 0
app/model/saas/SaasBillsMon.php

@@ -0,0 +1,49 @@
+<?php
+
+namespace app\model\saas;
+
+use app\extra\basic\Model;
+
+
+/**
+ * @property integer $id (主键)
+ * @property mixed $poi_id 
+ * @property string $title 
+ * @property mixed $mon 月份
+ * @property integer $status 0待结算1已结算
+ * @property mixed $end_day 结算时间
+ * @property integer $order_money 核销金额
+ * @property integer $store_money 结算金额
+ */
+class SaasBillsMon 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_bills_mon";
+    
+    /**
+     * 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;
+
+
+}

+ 1 - 1
app/model/saas/SaasOrder.php

@@ -84,7 +84,7 @@ class SaasOrder extends Model
 
     public function star(): HasOne
     {
-        return $this->hasOne(SaasStar::class,"uid","douyin_uid");
+        return $this->hasOne(SaasStar::class,"unique_id","douyin_uid");
     }
 
 }

+ 13 - 8
app/model/saas/SaasStoreAccount.php

@@ -3,17 +3,18 @@
 namespace app\model\saas;
 
 use app\extra\basic\Model;
+use think\model\relation\HasOne;
 
 
 /**
- * @property integer $id (主键)
- * @property mixed $poi_id 
- * @property integer $type 1个人2企业
- * @property string $truename 名字
- * @property string $idcard 身份证或营业执照
- * @property mixed $content 其他数据
- * @property integer $status 
- * @property mixed $member_id 三方ID
+ * @property integer $id (主键)
+ * @property mixed $poi_id 
+ * @property integer $type 1个人2企业
+ * @property string $truename 名字
+ * @property string $idcard 身份证或营业执照
+ * @property mixed $content 其他数据
+ * @property integer $status 
+ * @property mixed $member_id 三方ID
  * @property mixed $create_at
  */
 class SaasStoreAccount extends Model
@@ -46,5 +47,9 @@ class SaasStoreAccount extends Model
      */
     public bool $timestamps = false;
 
+    public function store(): HasOne
+    {
+        return $this->hasOne(SaasStore::class,"poi_id","poi_id");
+    }
 
 }

+ 52 - 0
app/queue/redis/slow/SyncOrder.php

@@ -0,0 +1,52 @@
+<?php
+
+namespace app\queue\redis\slow;
+
+use app\extra\tools\LifeWeb;
+use app\model\saas\SaasOrder;
+use Webman\RedisQueue\Consumer;
+
+class SyncOrder implements Consumer
+{
+
+
+    /**
+     * 延迟30秒获取达人信息
+     * 消费队列名
+     * @var string
+     */
+    public string $queue = "sync-order-info";
+
+    /**
+     * 连接配置
+     * @var string
+     */
+    public string $connection = "default";
+
+    public function consume($data): bool
+    {
+        try {
+            if(empty($data['order'])) return true;
+            echo getDateFull()."==开始获取订单达人信息\n";
+            $order = (new SaasOrder)->where("order_sn",$data['order'])->findOrEmpty();
+            if ($order->isEmpty()) return true;
+            [$state,$resp] = (new LifeWeb)->token()->getOrderData($order['order_sn']);
+            if (!$state) {
+                echo getDateFull()."=={$order['order_sn']}==获取数据失败了==\n";
+                return true;
+            }
+            echo getDateFull()."=={$order['order_sn']}==更新订单数据成功\n";
+            $order->douyin_uid = $resp['douyin_uid'];
+            $order->life_fee = $resp['life_fee'];
+            $order->star_fee = $resp['star_fee'];
+            $order->save();
+        } catch (\Throwable $throwable) {
+            echo getDateFull()."====获取达人信息失败\n";
+            echo $throwable->getMessage()."\n";
+            echo $throwable->getLine()."\n";
+            echo $throwable->getFile()."\n";
+        }
+        return true;
+    }
+
+}

+ 37 - 0
app/service/saas/BankService.php

@@ -0,0 +1,37 @@
+<?php
+
+namespace app\service\saas;
+
+use app\extra\basic\Service;
+use app\model\saas\SaasStoreAccount;
+
+class BankService extends Service
+{
+
+
+
+    /**
+     *
+     * @return $this
+     */
+    public function setModel()
+    {
+        $this->mode = (new SaasStoreAccount);
+        return $this;
+    }
+
+
+    /**
+     *
+     * @param array $param
+     * @return array
+     */
+    public function searchFilter(array $param = []): array
+    {
+        $filter = [];
+        !empty($param['status']) && $filter[] = ["status", '=', $param['status']];
+        !empty($param['name']) && $filter[] = ["name", 'like', "%{$param['name']}%"];
+        return $filter;
+    }
+
+}