|
|
@@ -1,5 +1,10 @@
|
|
|
<?php
|
|
|
|
|
|
+/**
|
|
|
+ * 商城订单服务
|
|
|
+ * 用途:mallApp 下单与订单列表组装;列表为拼团单批量附带 groupBuyStatus
|
|
|
+ */
|
|
|
+
|
|
|
namespace bizMall\order\services;
|
|
|
|
|
|
use bizMall\base\services\BaseService;
|
|
|
@@ -7,6 +12,7 @@ use bizMall\goods\classes\GoodsClass;
|
|
|
use bizMall\hd\classes\HdClass;
|
|
|
use bizMall\item\classes\ItemClass;
|
|
|
use bizMall\merchant\services\MerchantCapitalService;
|
|
|
+use bizHd\groupBuy\classes\GroupBuyClass;
|
|
|
use bizMall\order\classes\OrderClass;
|
|
|
use bizMall\order\classes\OrderGoodsClass;
|
|
|
use bizMall\order\classes\OrderItemClass;
|
|
|
@@ -224,11 +230,17 @@ class OrderService extends BaseService
|
|
|
return OrderClass::addOrder($data);
|
|
|
}
|
|
|
|
|
|
- //获取订单信息 TODO 重新实现,要限制查询字段与返回字段,性能第一???? -- 商品项(商品规格)、商品数量
|
|
|
+ /**
|
|
|
+ * 商城顾客订单列表
|
|
|
+ * 拼团单批量附带 groupBuyStatus(1拼团中 2成功 3失败 4已取消),并按成团结果覆盖 statusDesc
|
|
|
+ * @param array $where
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
public static function getOrderList($where)
|
|
|
{
|
|
|
// customId:订单列表「联系客服」进 chatPage 所需
|
|
|
- $fields = 'id, shopId, hdId, customId, orderSn, groupBuyId, orderType, actPrice,orderPrice, goodsNum, reachDate, reachPeriod, status, addTime';
|
|
|
+ // payStatus + groupBuyId:拼团单不能只看 status,需结合支付与成团结果控制履约
|
|
|
+ $fields = 'id, shopId, hdId, customId, orderSn, groupBuyId, orderType, actPrice,orderPrice, goodsNum, reachDate, reachPeriod, status, payStatus, addTime';
|
|
|
$data = self::getList($fields, $where, 'addTime DESC');
|
|
|
if (empty($data['list'])) {
|
|
|
return $data;
|
|
|
@@ -243,6 +255,14 @@ class OrderService extends BaseService
|
|
|
// 花束明细在 xhOrderGoods,花材明细在 xhOrderItem;列表按实际明细合并,避免 orderType=0/错标导致空列表
|
|
|
$goodsListMap = OrderGoodsService::getGoodsListByOrderSns($orderSns);
|
|
|
$itemListMap = OrderItemService::getItemListByOrderSns($orderSns);
|
|
|
+ $groupBuyIds = [];
|
|
|
+ foreach ($list as $val) {
|
|
|
+ $gid = intval($val['groupBuyId'] ?? 0);
|
|
|
+ if ($gid > 0) {
|
|
|
+ $groupBuyIds[] = $gid;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $groupBuyStatusMap = GroupBuyClass::getStatusMapByIds($groupBuyIds);
|
|
|
$periodData = [0 => '上午', 1 => '下午', 2 => '晚上'];
|
|
|
foreach ($data['list'] as $key => $val) {
|
|
|
$orderSn = $val['orderSn'] ?? '';
|
|
|
@@ -268,6 +288,24 @@ class OrderService extends BaseService
|
|
|
}
|
|
|
$data['list'][$key]['requireReachTime'] = $requireTime;
|
|
|
$data['list'][$key]['smallHdAvatar'] = imgUtil::groupImg('') . "?x-oss-process=image/resize,m_fill,h_80,w_80";
|
|
|
+
|
|
|
+ // 拼团单附带团状态:1拼团中 2成功 3失败 4已取消,供列表控制履约按钮与状态文案
|
|
|
+ $groupBuyId = intval($val['groupBuyId'] ?? 0);
|
|
|
+ $groupBuyStatus = $groupBuyId > 0 ? intval($groupBuyStatusMap[$groupBuyId] ?? 0) : 0;
|
|
|
+ $data['list'][$key]['groupBuyId'] = $groupBuyId;
|
|
|
+ $data['list'][$key]['groupBuyStatus'] = $groupBuyStatus;
|
|
|
+ // 已付款但未成团时覆盖 statusDesc,避免把拼团中误显示成待配送
|
|
|
+ if ($groupBuyId > 0) {
|
|
|
+ if ($groupBuyStatus === GroupBuyClass::STATUS_ONGOING
|
|
|
+ && $orderStatus !== OrderClass::ORDER_STATUS_UN_PAY
|
|
|
+ && $orderStatus !== OrderClass::ORDER_STATUS_CANCEL) {
|
|
|
+ $data['list'][$key]['statusDesc'] = '拼团中';
|
|
|
+ } elseif ($groupBuyStatus === GroupBuyClass::STATUS_FAIL) {
|
|
|
+ $data['list'][$key]['statusDesc'] = '拼团失败';
|
|
|
+ } elseif ($groupBuyStatus === GroupBuyClass::STATUS_CANCEL) {
|
|
|
+ $data['list'][$key]['statusDesc'] = '拼团已取消';
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
return $data;
|
|
|
}
|