Zory před 5 dny
rodič
revize
6f098b7bec

+ 31 - 11
app/command/ExpressOrder.php

@@ -22,26 +22,46 @@ class ExpressOrder extends Command
             $output->writeln("开始更新快递信息====>" . getDateFull());
             $nextPage = 1;
             while (is_numeric($nextPage)) {
-                $resp = (new SaasOrderExpress)->where(["status" => 0])->with(['orders'])->page($nextPage,10)->select();
+                $resp = (new SaasOrderExpress)->where(["status" => 0])->with(['orders' => function ($query) {
+                    $query->with(['poi']);
+                }])->page($nextPage,10)->select();
                 if ($resp->isEmpty()) {
                     $output->writeln("没有任务啦==".getDateFull());
                     $nextPage = null;
                     return true;
                 }
-//                $orderMode = (new SaasOrder);
                 foreach ($resp as $item) {
-                    [$state,$expressData] = $this->getExpressData($item['express_sn'],$item['mobile']);
-                    if ($state && $item['orders']['is_error'] == 0) {
-                        if (in_array($expressData['logisticsStatusDesc'],['派件中',"已签收"])) { // 核销订单
-                            $output->writeln("订单进入核销=={$item['order_sn']}=={$item['express_sn']}==".getDateFull());
-                            (new SaasOrderExpress)->where("id",$item['id'])->update(['status' => 1,'last_at' => getDateFull(),'last_msg' => $expressData['logisticsStatusDesc'],'content' => json_encode($expressData['logisticsTraceDetailList'])]);
-                            Redis::send("order-done",['order' => $item['order_sn']]);
+                    if (empty($item['orders']['poi'])) {
+                        echo getDateFull()."=={$item['order_sn']}==订单对应商家不存在===\n";
+                        continue;
+                    }
+                    $startTime = $item['orders']['poi']['order_start']??'09:00';
+                    $endTime = $item['orders']['poi']['order_end']??'22:30';
+                    $startTimeStamp = strtotime("Y-m-d {$startTime}:00");
+                    $endTimeStamp = strtotime("Y-m-d {$endTime}:00");
+                    if (time() > $startTimeStamp && time() < $endTimeStamp) {
+                        [$state,$expressData] = $this->getExpressData($item['express_sn'],$item['mobile']);
+                        if ($state && $item['orders']['is_error'] == 0) {
+                            $isDone = false;
+                            foreach ($expressData['logisticsTraceDetailList'] as $sk){
+                                if (in_array($sk['logisticsStatus'],['DELIVERING','AGENT_SIGN','SIGN'])) {
+                                    $isDone = true;
+                                }
+                            }
+//                        if (in_array($expressData['logisticsStatusDesc'],['派件中',"已签收"])) { // 核销订单
+                            if ($isDone) { // 核销订单
+                                $output->writeln("订单进入核销=={$item['order_sn']}=={$item['express_sn']}==".getDateFull());
+                                (new SaasOrderExpress)->where("id",$item['id'])->update(['status' => 1,'last_at' => getDateFull(),'last_msg' => $expressData['logisticsStatusDesc'],'content' => json_encode($expressData['logisticsTraceDetailList'])]);
+                                Redis::send("order-done",['order' => $item['order_sn']]);
+                            } else {
+                                (new SaasOrderExpress)->where("id",$item['id'])->update(['last_msg' => $expressData['logisticsStatusDesc'],'last_at' => getDateFull(),'content' => json_encode($expressData['logisticsTraceDetailList'])]);
+                                $output->writeln("查询物流成功=={$item['order_sn']}=={$expressData['logisticsStatusDesc']}==".getDateFull());
+                            }
                         } else {
-                            (new SaasOrderExpress)->where("id",$item['id'])->update(['last_msg' => $expressData['logisticsStatusDesc'],'last_at' => getDateFull(),'content' => json_encode($expressData['logisticsTraceDetailList'])]);
-                            $output->writeln("查询物流成功=={$item['order_sn']}=={$expressData['logisticsStatusDesc']}==".getDateFull());
+                            $output->writeln("查询快递信息失败=={$item['order_sn']}=={$item['express_sn']}==".getDateFull());
                         }
                     } else {
-                        $output->writeln("查询快递信息失败=={$item['order_sn']}=={$item['express_sn']}==".getDateFull());
+                        echo getDateFull()."==={$item['order_sn']}===不在核销时段==\n";
                     }
                 }
                 $nextPage = $nextPage+1;

+ 15 - 0
app/controller/api/Notify.php

@@ -3,6 +3,7 @@
 namespace app\controller\api;
 
 use app\extra\basic\Base;
+use app\extra\dyLife\data\OrderData;
 use app\model\saas\SaasOrder;
 use app\model\saas\SaasOrderItem;
 use LinFly\Annotation\Attributes\Route\Controller;
@@ -30,6 +31,17 @@ 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']);
+            echo getDateFull()."===订单详情\n";
+            print_r($orderData);
+            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'];
@@ -38,6 +50,9 @@ class Notify extends Base
             $order->save();
             return json(['err_no' => 0,'err_tips' => "success"]);
         } catch (\Throwable $th) {
+            echo $th->getMessage()."\n";
+            echo $th->getFile()."\n";
+            echo $th->getLine()."\n";
             return error($th->getMessage());
         }
     }

+ 4 - 0
app/controller/merchant/Plan.php

@@ -79,6 +79,8 @@ class Plan extends Base
                 ];
             }
             foreach ($starData as $k => $v) {
+//                $isExit = (new SaasLivePlanStar)->where("unique_id",$v['unique_id'])->findOrEmpty();
+//                if (!$isExit->isEmpty()) return error("达人【{$v['unique_id']}】已存在其他计划中,不可重复");
                 $liveDyStar[$k] = $v['unique_id'];
             }
             $resp = (new PlanLive)->config([
@@ -253,6 +255,8 @@ class Plan extends Base
             if (isset($resp['msg'])) return error($resp['msg']);
             $plan->status = 2;
             $state = $plan->save();
+            (new SaasLivePlanGoods)->where("plan_id",$plan['plan_id'])->delete();
+            (new SaasLivePlanStar)->where("plan_id",$plan['plan_id'])->delete();
             if (!$state) return errorTrans("error.data");
             return successTrans("success.data");
         } catch (\Throwable $throwable) {

+ 2 - 0
app/extra/dyLife/BasicLife.php

@@ -30,6 +30,8 @@ class BasicLife
      */
     protected string $prefix = "dy_[appid]_access_token";
 
+    protected string $baseAccountId = "7595228109947947043";
+
     /**
      * 设置配置信息
      * @param array $config

+ 10 - 3
app/extra/dyLife/data/OrderData.php

@@ -29,11 +29,18 @@ class OrderData extends BasicLife
 
     /**
      * 查询订单详情
-     * @return void
+     * @param string $orderId
+     * @return array
      */
-    public function getOrderData()
+    public function getOrderData(string $orderId = ""): array
     {
-
+        $param = [
+            "account_id"    => $this->baseAccountId,
+            "order_id"      => $orderId,
+            "page_num"      => 1,
+            "page_size"     => 10
+        ];
+        return $this->curlPostApi("goodlife/v1/trade/order/query/",$param);
     }
 
     /**

+ 1 - 0
app/service/saas/ChatStoreService.php

@@ -29,6 +29,7 @@ class ChatStoreService extends Service
         !empty($param['openid']) && $filter[] = ["openid", '=', $param['openid']];
         !empty($param['service_id']) && $filter[] = ["service_id", '=', $param['service_id']];
         !empty($param['poi_id']) && $filter[] = ["poi_id", '=', $param['poi_id']];
+        !empty($param['poi']) && $filter[] = ["poi_id", '=', $param['poi']];
         !empty($param['status']) && $filter[] = ["status", '=', $param['status']];
         !empty($param['type']) && $filter[] = ["type", '=', $param['type']];
         !empty($param['name']) && $filter[] = ["poi_name", 'like', "%{$param['name']}%"];

+ 1 - 0
app/service/saas/OrderService.php

@@ -28,6 +28,7 @@ class OrderService extends Service
         $filter = [];
         !empty($param['openid']) && $filter[] = ["openid", '=', $param['openid']];
         !empty($param['poi_id']) && $filter[] = ["poi_id", '=', $param['poi_id']];
+        !empty($param['poi']) && $filter[] = ["poi_id", '=', $param['poi']];
         !empty($param['error']) && $filter[] = ["is_error", '=', $param['error']];
         !empty($param['status']) && $filter[] = ["status", '=', ($param['status']-1)];
         !empty($param['express_status']) && $filter[] = ["express_status", '=', $param['express_status']];