zhangdehua 1 vuosi sitten
vanhempi
commit
08248b8e96

+ 1 - 1
app/common/model/Express.php

@@ -183,6 +183,6 @@ class Express extends BaseModel
     public static function getAllList()
     {
         // 查询列表数据
-        return self::field('express_id,express_name')->order(['sort', 'express_id'])->select()->toArray();
+        return self::field('express_id,express_name,wx_delivery_id')->order(['sort', 'express_id'])->select()->toArray();
     }
 }

+ 13 - 0
app/common/model/OrderAddress.php

@@ -62,4 +62,17 @@ class OrderAddress extends BaseModel
         return $this['region']['province'] . $this['region']['city'] . $this['region']['region'] . $this['detail'];
     }
 
+    public function findByOrderId($orderId)
+    {
+        if (empty($orderId))return null;
+        return $this->where('order_id', $orderId)->find();
+    }
+
+    public function batchByOrderIds($orderIds)
+    {
+        if (empty($orderIds))return null;
+        return $this->whereIn('order_id', $orderIds)->select()->toArray();
+    }
+
+
 }

+ 4 - 0
app/common/model/User.php

@@ -525,4 +525,8 @@ class User extends BaseModel
         return $lists->column('user_id');
     }
 
+    public static function getByUserIds($userIds = []){
+        return self::whereIn('user_id',$userIds)->field('user_id,open_id')->select()->toArray();
+    }
+
 }

+ 84 - 0
app/console/service/WxDelivery.php

@@ -0,0 +1,84 @@
+<?php
+// +----------------------------------------------------------------------
+// | 萤火商城系统 [ 致力于通过产品和服务,帮助商家高效化开拓市场 ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2017~2021 https://www.yiovo.com All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
+// +----------------------------------------------------------------------
+// | Author: 萤火科技 <admin@yiovo.com>
+// +----------------------------------------------------------------------
+declare (strict_types = 1);
+
+namespace app\console\service;
+
+use app\console\library\Tools;
+use app\common\service\BaseService;
+use app\console\model\User;
+use app\console\model\User as UserModel;
+use app\console\model\user\BonusHistory;
+use app\console\model\user\CommissionsDetail;
+use app\store\model\Express as ExpressModel;
+use app\store\model\Order;
+use app\store\model\OrderAddress;
+use app\store\model\OrderGoods;
+use app\store\service\wxApi\WxOrderLogistics;
+
+
+/**
+ * 服务类:每日计算店内职员的当月的业绩
+ * Class UserGrade
+ * @package app\console\service
+ */
+class WxDelivery extends BaseService
+{
+    /**
+     * 每日计算店内职员的当月的业绩v.1.3.6
+     * @param int $storeId
+     * @return array|bool
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\DbException
+     * @throws \think\db\exception\ModelNotFoundException
+     */
+    public function pullOrderStatus(int $storeId)
+    {
+        // 获取店内员工的预计佣金
+        $data = [];
+        $orderGoodsModel = new OrderGoods();
+        $orderGoodses = $orderGoodsModel->getNeedToWxDelivery();
+        $orderIds = array_column($orderGoodses,'order_id');
+        $orderModel = new Order();
+        $orders = $orderModel->getListByIds($orderIds);
+
+        $express = ExpressModel::getAllList();
+        $expressIndexById = array_column($express,null,'express_id');
+
+        $orderAddressModel = new OrderAddress();
+        $orderAddress = $orderAddressModel->batchByOrderIds($orderIds);
+        $orderAddressIndexByOrderId = array_column($orderAddress,'phone','order_id');
+
+        $userIds = array_column($orderGoodses,'user_id');
+        $users = \app\store\model\User::getByUserIds($userIds);
+        $userToOpenId = array_column($users,'open_id','user_id');
+
+        // 遍历整理数据
+        foreach ($orderGoodses as $orderGoods) {
+            $res = WxOrderLogistics::getOrderStatusByTransId($orders[$orderGoods['order_id']]['transaction_id']);
+            if ($res['code'] == 10060020){
+                $a = WxOrderLogistics::orderDeliveryByTransId($orders[$orderGoods['order_id']]['transaction_id'],
+                    $expressIndexById[$orderGoods['express_id']]['wx_delivery_id'],$orderGoods['express_no'],$orderGoods['goods_name'],$userToOpenId[$orderGoods['user_id']],'',$orderAddressIndexByOrderId[$orderGoods['order_id']]);
+                if ($a['code'] == 'ok'){
+                    OrderGoods::update(['wx_delivery_status'=>20],['order_goods_id'=>$orderGoods['order_goods_id']]);
+                }
+                dd($a);
+            }
+        }
+        // 记录日志
+        Tools::taskLogs('WxDelivery', 'pullOrderStatus', [
+            'storeId' => $storeId,
+            'data' => $data
+        ]);
+        return true;
+    }
+
+}

+ 54 - 0
app/console/task/WxDelivery.php

@@ -0,0 +1,54 @@
+<?php
+// +----------------------------------------------------------------------
+// | 萤火商城系统 [ 致力于通过产品和服务,帮助商家高效化开拓市场 ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2017~2021 https://www.yiovo.com All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
+// +----------------------------------------------------------------------
+// | Author: 萤火科技 <admin@yiovo.com>
+// +----------------------------------------------------------------------
+declare (strict_types = 1);
+
+namespace app\console\task;
+
+/**
+ * 定时获取微信订单状态
+ * Class WxDelivery
+ * @package app\console\task
+ */
+class WxDelivery extends Task
+{
+    // 当前任务唯一标识
+    private $taskKey = 'WxMpDelivery';
+
+    // 任务执行间隔时长 (单位:秒)
+    protected $taskExpire = 3600;
+
+    // 当前商城ID
+    private $storeId;
+
+    /**
+     * 任务处理
+     * @param array $param
+     */
+    public function handle(array $param)
+    {
+        ['storeId' => $this->storeId] = $param;
+        $this->setInterval($this->storeId, $this->taskKey, $this->taskExpire, function () {
+             echo $this->taskKey . PHP_EOL;
+            // 获取微信订单状态
+            $this->fetchWxOrderStatus();
+        });
+    }
+
+    /**
+     * 设置优惠券过期状态
+     */
+    private function fetchWxOrderStatus()
+    {
+        $service = new \app\console\service\WxDelivery();
+        $flag = $service->pullOrderStatus($this->storeId);
+
+    }
+}

+ 7 - 0
app/store/model/OrderGoods.php

@@ -19,6 +19,7 @@ use app\common\enum\order\OrderStatus as OrderStatusEnum;
 use app\common\enum\order\PayStatus as PayStatusEnum;
 use app\common\enum\order\ReceiptStatus as ReceiptStatusEnum;
 use app\common\library\helper;
+use app\common\library\wechat\WxPay;
 use app\common\model\OrderGoods as OrderGoodsModel;
 use app\store\model\Order as OrderModel;
 use app\store\model\OrderGoodsPackage as OrderGoodsPackageModel;
@@ -316,6 +317,12 @@ class OrderGoods extends OrderGoodsModel
         return $filter;
     }
 
+    //获取需要微信发货的订单商品,wx_delivery_status=10未微信发货,20已微信发货
+    public function getNeedToWxDelivery()
+    {
+        return $this->where(['delivery_status' => DeliveryStatusEnum::DELIVERED, 'receipt_status' => ReceiptStatusEnum::NOT_RECEIVED,'wx_delivery_status' => 10])->limit(50)->select()->toArray();
+    }
+
     /**
      * 获取待发货数量
      */

+ 2 - 2
app/store/service/wxApi/WxOrderLogistics.php

@@ -164,8 +164,8 @@ class WxOrderLogistics extends BaseService
         $url = "https://api.weixin.qq.com/wxa/sec/order/get_order?access_token=".$accessToken;
 
         $params['access_token'] = $accessToken;
-        $mchId = WxappModel::getWxappCache($storeId);
-        $params['merchant_id'] = $mchId;
+        $wxConfig = WxappModel::getWxappCache($storeId);
+        $params['merchant_id'] = $wxConfig['mchid'];
         $params['merchant_trade_no'] = $outTradeNo;
 
         $ret = curl_post($url, json_encode($params));