mirror of
				https://github.com/v2board/v2board.git
				synced 2025-10-31 09:21:46 +08:00 
			
		
		
		
	fix: order surplus issue
This commit is contained in:
		| @@ -9,6 +9,14 @@ use Illuminate\Support\Facades\DB; | |||||||
|  |  | ||||||
| class OrderService | class OrderService | ||||||
| { | { | ||||||
|  |     CONST STRTOTIME = [ | ||||||
|  |         'month_price' => 1, | ||||||
|  |         'quarter_price' => 3, | ||||||
|  |         'half_year_price' => 6, | ||||||
|  |         'year_price' => 12, | ||||||
|  |         'two_year_price' => 24, | ||||||
|  |         'three_year_price' => 36 | ||||||
|  |     ]; | ||||||
|     public $order; |     public $order; | ||||||
|  |  | ||||||
|     public function __construct(Order $order) |     public function __construct(Order $order) | ||||||
| @@ -108,24 +116,31 @@ class OrderService | |||||||
|         $order->surplus_order_ids = json_encode(array_column($orderModel->get()->toArray(), 'id')); |         $order->surplus_order_ids = json_encode(array_column($orderModel->get()->toArray(), 'id')); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     private function orderIsUsed(Order $order):bool | ||||||
|  |     { | ||||||
|  |         $month = self::STRTOTIME[$order->cycle]; | ||||||
|  |         $orderExpireDay = strtotime('+'. $month . ' month', $order->created_at->timestamp); | ||||||
|  |         if ($orderExpireDay < time()) return true; | ||||||
|  |         return false; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     private function getSurplusValueByCycle(User $user, Order $order) |     private function getSurplusValueByCycle(User $user, Order $order) | ||||||
|     { |     { | ||||||
|         $strToMonth = [ |  | ||||||
|             'month_price' => 1, |  | ||||||
|             'quarter_price' => 3, |  | ||||||
|             'half_year_price' => 6, |  | ||||||
|             'year_price' => 12 |  | ||||||
|         ]; |  | ||||||
|         $orderModel = Order::where('user_id', $user->id) |         $orderModel = Order::where('user_id', $user->id) | ||||||
|             ->where('cycle', '!=', 'reset_price') |             ->where('cycle', '!=', 'reset_price') | ||||||
|             ->where('status', 3); |             ->where('status', 3); | ||||||
|  |         $orders = $orderModel->get(); | ||||||
|         $orderSurplusMonth = 0; |         $orderSurplusMonth = 0; | ||||||
|         $orderSurplusAmount = 0; |         $orderSurplusAmount = 0; | ||||||
|         $userSurplusMonth = ($user->expired_at - time()) / 2678400; |         $userSurplusMonth = ($user->expired_at - time()) / 2678400; | ||||||
|         foreach ($orderModel->get() as $item) { |         foreach ($orders as $k => $item) { | ||||||
|             // 兼容历史余留问题 |             // 兼容历史余留问题 | ||||||
|             if ($item->cycle === 'onetime_price') continue; |             if ($item->cycle === 'onetime_price') continue; | ||||||
|             $orderSurplusMonth = $orderSurplusMonth + $strToMonth[$item->cycle]; |             if ($this->orderIsUsed($item)) { | ||||||
|  |                 unset($orders[$k]); | ||||||
|  |                 continue; | ||||||
|  |             } | ||||||
|  |             $orderSurplusMonth = $orderSurplusMonth + self::STRTOTIME[$item->cycle]; | ||||||
|             $orderSurplusAmount = $orderSurplusAmount + ($item['total_amount'] + $item['balance_amount']); |             $orderSurplusAmount = $orderSurplusAmount + ($item['total_amount'] + $item['balance_amount']); | ||||||
|         } |         } | ||||||
|         if (!$orderSurplusMonth || !$orderSurplusAmount) return; |         if (!$orderSurplusMonth || !$orderSurplusAmount) return; | ||||||
| @@ -140,7 +155,7 @@ class OrderService | |||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|         $order->surplus_amount = $orderSurplusAmount > 0 ? $orderSurplusAmount : 0; |         $order->surplus_amount = $orderSurplusAmount > 0 ? $orderSurplusAmount : 0; | ||||||
|         $order->surplus_order_ids = json_encode(array_column($orderModel->get()->toArray(), 'id')); |         $order->surplus_order_ids = json_encode(array_column($orders->toArray(), 'id')); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public function success(string $callbackNo) |     public function success(string $callbackNo) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user