|
|
@@ -3,9 +3,16 @@
|
|
|
namespace bizGhs\order\services;
|
|
|
|
|
|
use biz\ghs\classes\GhsClass;
|
|
|
+use biz\shop\classes\ShopAdminClass;
|
|
|
use biz\shop\models\Shop;
|
|
|
use bizGhs\base\services\BaseService;
|
|
|
+use bizGhs\custom\classes\CustomClass;
|
|
|
+use bizGhs\custom\models\Custom;
|
|
|
use bizGhs\order\classes\OrderClass;
|
|
|
+use bizGhs\order\classes\OrderSendClass;
|
|
|
+use bizGhs\stat\classes\StatYjClass;
|
|
|
+use bizHd\stat\classes\StatIncomeClass;
|
|
|
+use bizHd\stat\classes\StatOrderClass;
|
|
|
use common\components\dict;
|
|
|
use common\components\util;
|
|
|
use bizHd\purchase\classes\PurchaseClass;
|
|
|
@@ -64,17 +71,58 @@ class OrderService extends BaseService
|
|
|
|
|
|
$return->purchaseId = $purchaseId;
|
|
|
$return->save();
|
|
|
- OrderClass::payAfter($return);
|
|
|
+ OrderService::payAfter($return);
|
|
|
PurchaseClass::payAfter($purchase);
|
|
|
|
|
|
//自取订单直接完成
|
|
|
if (isset($data['sendType']) && $data['sendType'] == OrderClass::SEND_TYPE_NO) {
|
|
|
- OrderClass::withoutSend($return);
|
|
|
+ self::withoutSend($return);
|
|
|
}
|
|
|
|
|
|
return $return->attributes;
|
|
|
}
|
|
|
|
|
|
+ //自取免发货流程处理 ssh 2021.1.24
|
|
|
+ public static function withoutSend($order)
|
|
|
+ {
|
|
|
+ $id = $order->id ?? 0;
|
|
|
+ if (isset($order->status) == false) {
|
|
|
+ util::fail('没有订单状态');
|
|
|
+ }
|
|
|
+ if ($order->status == self::ORDER_STATUS_COMPLETE) {
|
|
|
+ util::fail('订单已完成');
|
|
|
+ }
|
|
|
+
|
|
|
+ //自取订单,订单直接完成。【现在有三个地方有订单完成操作】
|
|
|
+ $currentOrder = self::getById($id, true);
|
|
|
+ $shopId = $order->shopId ?? 0;
|
|
|
+ $shop = Shop::findBySql('select * from ' . Shop::tableName() . ' where id = :id for update', ['id' => $shopId])->one();
|
|
|
+ if (empty($shop)) {
|
|
|
+ util::fail('没有找到门店');
|
|
|
+ }
|
|
|
+ $shop->unSendOrder -= 1;
|
|
|
+ $shop->sendingOrder += 1;
|
|
|
+ $shop->save();
|
|
|
+
|
|
|
+ OrderClass::complete($currentOrder, $shop, self::TOTAL_FLOW, OrderClass::TOTAL_FLOW, self::SEND_TYPE_NO);
|
|
|
+
|
|
|
+ OrderSendClass::withoutSend($order);
|
|
|
+
|
|
|
+ return OrderClass::TOTAL_FLOW;
|
|
|
+ }
|
|
|
+
|
|
|
+ //确认送达 ssh 2021.3.4
|
|
|
+ public static function reach($order)
|
|
|
+ {
|
|
|
+ if ($order['status'] != OrderClass::ORDER_STATUS_SENDING) {
|
|
|
+ util::fail('订单没有在配送状态');
|
|
|
+ }
|
|
|
+ $id = $order['id'];
|
|
|
+ //送达订单完成。【现在有三个地方有订单完成操作】
|
|
|
+ OrderClass::updateById($id, ['status' => OrderClass::ORDER_STATUS_COMPLETE, 'totalFlow' => OrderClass::TOTAL_FLOW, 'currentFlow' => OrderClass::TOTAL_FLOW]);
|
|
|
+ OrderSendClass::reach($order);
|
|
|
+ }
|
|
|
+
|
|
|
//获取订单信息 ssh 2019.11.28
|
|
|
public static function getOrderList($where)
|
|
|
{
|
|
|
@@ -298,4 +346,83 @@ class OrderService extends BaseService
|
|
|
PurchaseClass::cancel($purchaseId);
|
|
|
}
|
|
|
|
|
|
+ //支付成功后的流程 shish 2021.5.14
|
|
|
+ public static function payAfter($order, $payWay)
|
|
|
+ {
|
|
|
+ if (isset($order->status) == false) {
|
|
|
+ util::fail('没有订单状态');
|
|
|
+ }
|
|
|
+ if ($order->status != OrderClass::ORDER_STATUS_UN_PAY) {
|
|
|
+ util::fail('重复操作');
|
|
|
+ }
|
|
|
+ if (isset($order->debt) == false) {
|
|
|
+ util::fail('订单有问题,没有欠款项');
|
|
|
+ }
|
|
|
+ /**门店资产变化**/
|
|
|
+ $amount = $order->actPrice ?? 0.00;
|
|
|
+ $currentShopId = $order->shopId ?? 0;
|
|
|
+ $shop = Shop::findBySql('select * from ' . Shop::tableName() . ' where id = :id for update', ['id' => $currentShopId])->one();
|
|
|
+ if (empty($shop)) {
|
|
|
+ util::fail('没有找到门店');
|
|
|
+ }
|
|
|
+ $shop->unPayOrder -= 1;
|
|
|
+ $shop->unSendOrder += 1;
|
|
|
+ $shop->totalOrderNum += 1;
|
|
|
+ $shop->totalIncome = bcadd($shop->totalIncome, $amount, 2);
|
|
|
+ $shop->save();
|
|
|
+
|
|
|
+ //更新订单基础状态和支付状态
|
|
|
+ $orderId = $order->id;
|
|
|
+ $orderSn = $order->orderSn;
|
|
|
+ $order->payWay = $payWay;
|
|
|
+ $order->status = OrderClass::ORDER_STATUS_UN_SEND;
|
|
|
+ if ($payWay == dict::getDict('payWay', 'debtPay')) {
|
|
|
+ $order->debt = self::DEBT_YES;
|
|
|
+ }
|
|
|
+ $order->save();
|
|
|
+
|
|
|
+ //员工业绩、总业绩增加
|
|
|
+ $shopAdminId = $order->shopAdminId ?? 0;
|
|
|
+ if (!empty($shopAdminId)) {
|
|
|
+ $shopAdmin = ShopAdminClass::getById($shopAdminId, true);
|
|
|
+ $shopAdmin->kdAmount = bcadd($shopAdmin->kdAmount, $amount, 2);
|
|
|
+ $shopAdmin->save();
|
|
|
+ }
|
|
|
+ StatYjClass::addYj($order);
|
|
|
+
|
|
|
+ /**客户资产变化**/
|
|
|
+ $customId = $order->customId;
|
|
|
+ $custom = Custom::findBySql('select * from ' . Custom::tableName() . ' where id = :id for update', ['id' => $customId])->one();
|
|
|
+ if (empty($custom)) {
|
|
|
+ util::fail('没有找到客户信息');
|
|
|
+ }
|
|
|
+ if ($payWay == dict::getDict('payWay', 'debtPay')) {
|
|
|
+ //欠款支付
|
|
|
+ $custom->isDebt = CustomClass::IS_DEBT_YES;
|
|
|
+ $custom->debtAmount = bcadd($custom->debtAmount, $amount, 2);
|
|
|
+ $custom->debtNum += 1;
|
|
|
+ }
|
|
|
+ $custom->buyNum += 1;
|
|
|
+ $custom->buyAmount = bcadd($custom->buyAmount, $amount, 2);
|
|
|
+ $custom->save();
|
|
|
+
|
|
|
+ //每天和每月收入
|
|
|
+ StatIncomeClass::updateOrInsert($shop, $order->actPrice);
|
|
|
+ //今日订单+1
|
|
|
+ StatOrderClass::updateOrInsert($shop);
|
|
|
+
|
|
|
+ //显示已下单流程
|
|
|
+ $time = date("Y-m-d H:i:s");
|
|
|
+ $placeData = ['payTime' => $time, 'orderSn' => $orderSn, 'orderId' => $orderId];
|
|
|
+ OrderSendClass::placeOrder($placeData);
|
|
|
+
|
|
|
+ if (isset($order->sendType) == false) {
|
|
|
+ util::fail('没有找到配送方式');
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($order->sendType == OrderClass::SEND_TYPE_NO) {
|
|
|
+ self::withoutSend($order);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|