WxDelivery.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | 萤火商城系统 [ 致力于通过产品和服务,帮助商家高效化开拓市场 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2017~2021 https://www.yiovo.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
  8. // +----------------------------------------------------------------------
  9. // | Author: 萤火科技 <admin@yiovo.com>
  10. // +----------------------------------------------------------------------
  11. declare (strict_types=1);
  12. namespace app\console\service;
  13. use app\console\library\Tools;
  14. use app\common\service\BaseService;
  15. use app\store\model\Express as ExpressModel;
  16. use app\store\model\Order;
  17. use app\store\model\OrderAddressSimple;
  18. use app\store\model\OrderGoods;
  19. use app\store\model\User;
  20. use app\store\service\wxApi\WxOrderLogistics;
  21. /**
  22. * 服务类:每小时轮训已发货的订单录入到微信小程序发货后台
  23. * Class WxDelivery
  24. * @package app\console\service
  25. */
  26. class WxDelivery extends BaseService
  27. {
  28. /**
  29. * 本系统内已人工发货的订单到微信那边发货
  30. * @param int $storeId
  31. * @return array|bool
  32. * @throws \think\db\exception\DataNotFoundException
  33. * @throws \think\db\exception\DbException
  34. * @throws \think\db\exception\ModelNotFoundException
  35. */
  36. public function pullOrderStatus(int $storeId)
  37. {
  38. // 获取店内员工的预计佣金
  39. $data = [];
  40. $orderGoodsModel = new OrderGoods();
  41. $orderGoodses = $orderGoodsModel->getNeedToWxDelivery();
  42. $orderIds = array_column($orderGoodses, 'order_id');
  43. $orderModel = new Order();
  44. $orders = $orderModel->getListByIds($orderIds);
  45. $express = ExpressModel::getAllList();
  46. $expressIndexById = array_column($express, null, 'express_id');
  47. $orderAddressModel = new OrderAddressSimple();
  48. $orderAddress = $orderAddressModel->batchByOrderIds($orderIds);
  49. $orderAddressIndexByOrderId = array_column($orderAddress,'phone','order_id');
  50. $userIds = array_column($orderGoodses, 'user_id');
  51. $users = User::getByUserIds($userIds);
  52. $userToOpenId = array_column($users, 'open_id', 'user_id');
  53. // 遍历整理数据
  54. foreach ($orderGoodses as $orderGoods) {
  55. $res = WxOrderLogistics::getOrderStatusByTransId($orders[$orderGoods['order_id']]['transaction_id']);
  56. //$res = ['errcode' => 0, 'errmsg' => 'ok', 'order' => ['order_state' => 1]];
  57. if ($res['errcode'] == 0 && $res['errmsg'] == 'ok') {
  58. if ($res['order']['order_state'] == 1) {//订单状态枚举:(1) 待发货;(2) 已发货;(3) 确认收货;(4) 交易完成;(5) 已退款。
  59. //$orderAddress = $orderAddressModel->findByOrderId($orderGoods['order_id']);
  60. $a = WxOrderLogistics::orderDeliveryByTransId($orders[$orderGoods['order_id']]['transaction_id'],
  61. $expressIndexById[$orderGoods['express_id']]['wx_delivery_id'], $orderGoods['express_no'], $orderGoods['goods_name'], $userToOpenId[$orderGoods['user_id']], '', $orderAddressIndexByOrderId[$orderGoods['order_id']]);
  62. //$a = ['errcode' => 0, 'errmsg' => 'ok'];
  63. if ($a['errcode'] == 0 && $a['errmsg'] == 'ok') {
  64. OrderGoods::update(['wx_delivery_status' => 20], ['order_goods_id' => $orderGoods['order_goods_id']]);
  65. }
  66. }
  67. }else{
  68. dd(json_encode($res));
  69. }
  70. }
  71. // 记录日志
  72. Tools::taskLogs('WxDelivery', 'pullOrderStatus', [
  73. 'storeId' => $storeId,
  74. 'data' => $data
  75. ]);
  76. return true;
  77. }
  78. //对于微信已发货的订单,如果订单状态是已签收,提醒确认收货,不提醒的话,默认十天订单结束
  79. }