1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- <?php
- namespace App\Handlers\Activities;
- use App\Models\CardRidingUseLog;
- use App\Models\CardRidingUserBags;
- use App\Models\Order;
- use App\Repositories\CardRidingUseLogRepository;
- use App\Repositories\CardRidingUserBagsRepository;
- use App\Repositories\OrderRepository;
- /**
- * 骑行卡优惠
- * Class RidingCardActivityHandler
- * @package App\Handlers\Activities
- */
- class RidingCardActivityHandler
- {
- protected $cardRidingUserBagsRepository = null;
- protected $cardRidingUseLogRepository = null;
- protected $orderRepository = null;
- public function __construct(CardRidingUserBagsRepository $cardRidingUserBagsRepository, CardRidingUseLogRepository $cardRidingUseLogRepository, OrderRepository $orderRepository)
- {
- $this->cardRidingUserBagsRepository = $cardRidingUserBagsRepository;
- $this->cardRidingUseLogRepository = $cardRidingUseLogRepository;
- $this->orderRepository = $orderRepository;
- }
- public function main(&$order)
- {
- if ($order->time_money <= 0) return false;
- //已优惠不能在同时享受
- if ((int)$order->is_riding_card == Order::RIDING_CARD_OK) return false;
- $cardRiding = $this->cardRidingUserBagsRepository->isExist($order->user_id, $order->start_use_bike_time);
- if (empty($cardRiding)) return false;
- $cardLogs = $this->cardRidingUseLogRepository->isUseThisCardByOrderId($order->id);
- if ($cardLogs) return false;
- $discount_time_money = $cardRiding->deduction_money;
- if (bccomp($order->time_money, $cardRiding->deduction_money, 2) < 0) {
- $discount_time_money = $order->time_money;
- }
- //调整订单
- $order->preferential_money = $discount_time_money;
- $order->card_preferential_money = $discount_time_money;
- $order->order_money = bcsub($order->order_money, $order->preferential_money, 2);
- $order->pay_money = $order->order_money;
- $order->is_riding_card = Order::RIDING_CARD_OK;
- //优惠方式
- if($order->preferential_type == 0){
- $order->preferential_type = arr2str([Order::PREFERENTIAL_CARD_RIDING],'-');
- }else{
- $arr = str2arr($order->preferential_type,'-');
- $order->preferential_type = arr2str(array_merge($arr,[Order::PREFERENTIAL_CARD_RIDING]),'-');
- }
- if($order->pay_money == 0){
- $order->pay_type = Order::PAY_TYPE_ACCOUNT;
- }
- if ((int)$cardRiding->is_limit_times === CardRidingUserBags::LIMIT_TIMES_YES) {
- $cardRiding->can_ridding_times -= 1;
- if ($cardRiding->can_ridding_times <= 0) {
- // 如果没次数了 直接使其失效
- $cardRiding->status = CardRidingUserBags::STATUS_NO;
- }
- $cardRiding->save();
- }
- CardRidingUseLog::logs($cardRiding->id, $order->id, $order->preferential_money);
- }
- }
|