OrderGood.php 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. declare (strict_types=1);
  3. namespace app\console\service;
  4. use app\console\model\Order as OrderModel;
  5. use app\console\model\OrderGoods as OrderGoodsModel;
  6. use app\common\service\BaseService;
  7. use app\common\library\helper;
  8. use app\console\library\Tools;
  9. /**
  10. * 服务类:订单商品模块
  11. * Class OrderGood
  12. * @package app\console\service
  13. */
  14. class OrderGood extends BaseService
  15. {
  16. /**
  17. * 已发货订单商品自动确认收货
  18. * @param int $storeId
  19. * @param int $receiveDays 自动收货天数
  20. * @throws \think\db\exception\DataNotFoundException
  21. * @throws \think\db\exception\DbException
  22. * @throws \think\db\exception\ModelNotFoundException
  23. */
  24. public function receiveEvent(int $storeId, int $receiveDays)
  25. {
  26. // 截止时间
  27. $deadlineTime = time() - ((int)$receiveDays * 86400);
  28. // 查询截止时间未确认收货的订单ID集
  29. $model = new OrderGoodsModel();
  30. $list = $model->getOrderGoodsListByReceive($storeId, $deadlineTime);
  31. $orderGoodsIds = helper::getArrayColumn($list,'order_goods_id');
  32. $orderIds = helper::getArrayColumn($list,'order_id');
  33. // 更新订单商品收货状态
  34. if (!empty($orderGoodsIds)) {
  35. // 批量更新订单商品状态为已收货
  36. $model->onUpdateReceived($orderGoodsIds);
  37. // 批量更新订单状态为已收货
  38. (new OrderModel())->onUpdateReceived(array_unique($orderIds));
  39. }
  40. // 记录日志
  41. Tools::taskLogs('OrderGoods', 'receiveEvent', [
  42. 'storeId' => $storeId,
  43. 'receiveDays' => $receiveDays,
  44. 'deadlineTime' => $deadlineTime,
  45. 'orderGoodsIds' => helper::jsonEncode($orderGoodsIds)
  46. ]);
  47. }
  48. }