// +---------------------------------------------------------------------- declare (strict_types=1); namespace app\console\service; use app\console\library\Tools; use app\common\service\BaseService; use app\store\model\Express as ExpressModel; use app\store\model\Order; use app\store\model\OrderAddressSimple; use app\store\model\OrderGoods; use app\store\model\User; 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 OrderAddressSimple(); $orderAddress = $orderAddressModel->batchByOrderIds($orderIds); $orderAddressIndexByOrderId = array_column($orderAddress,'phone','order_id'); $userIds = array_column($orderGoodses, 'user_id'); $users = User::getByUserIds($userIds); $userToOpenId = array_column($users, 'open_id', 'user_id'); // 遍历整理数据 foreach ($orderGoodses as $orderGoods) { $res = WxOrderLogistics::getOrderStatusByTransId($orders[$orderGoods['order_id']]['transaction_id']); //$res = ['errcode' => 0, 'errmsg' => 'ok', 'order' => ['order_state' => 1]]; if ($res['errcode'] == 0 && $res['errmsg'] == 'ok') { if ($res['order']['order_state'] == 1) {//订单状态枚举:(1) 待发货;(2) 已发货;(3) 确认收货;(4) 交易完成;(5) 已退款。 //$orderAddress = $orderAddressModel->findByOrderId($orderGoods['order_id']); $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']]); dd(json_encode($a)); if ($a['code'] == 'ok') { OrderGoods::update(['wx_delivery_status' => 20], ['order_goods_id' => $orderGoods['order_goods_id']]); } } }else{ dd(json_encode($res)); } } // 记录日志 Tools::taskLogs('WxDelivery', 'pullOrderStatus', [ 'storeId' => $storeId, 'data' => $data ]); return true; } }