| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -13,6 +13,7 @@ use App\Models\Order; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use EasyWeChat\Factory; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use Illuminate\Http\Request; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use Illuminate\Support\Facades\DB; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use App\Service\OrderStatus as Status; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/** | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					 * 订单 | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -49,14 +50,14 @@ class OrderController extends Controller | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							$timeout_ids = []; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							//10分钟内未付款订单提示付款
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							foreach ($order_list['data'] as &$v) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								if ($v['status'] == 0) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								if ($v['status'] == Status::UNPAID) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									$minute = $time - $v['created_at']; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									//订单创建后10分钟内未付款则提示,否则取消订单
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									if ($minute < 600) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										$v['status_text'] = '请在' . ceil($minute / 60) . '分钟内付款'; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									} else { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										$timeout_ids[] = $v['id']; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										$v['status'] = -1; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										$v['status'] = Status::CANCEL; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										$v['status_text'] = '已取消'; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										//TODO 加回库存,未考虑到几天/几个月后再打开订单列表页的情况
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										Product::query()->find($v['product_id'])->update(['stock' => $v['num']]); | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -65,7 +66,7 @@ class OrderController extends Controller | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							//超时订单设置为已取消 TODO 测试阶段暂时注释
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//		Order::query()->whereIn('id', $timeout_ids)->update(['status' => -1]);
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//		Order::query()->whereIn('id', $timeout_ids)->update(['status' => Status::CANCEL]);
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							return $this->success($order_list); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -120,10 +121,10 @@ class OrderController extends Controller | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								$price = $this->calc($ap, $formData['num']); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								$title = $ap->product->title; //产品标题
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								//代理商产品表增加销量
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								$ap->increment('sale', $formData['num']); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								// $ap->increment('sale', $formData['num']); TODO 支付成功之后再增加销量
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								//供应商产品表加销量、减库存
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								$ap->product->sale += $formData['num']; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								// $ap->product->sale += $formData['num']; TODO 支付成功之后再增加销量
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								$ap->product->stock -= $formData['num']; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								$ap->product->save(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -139,7 +140,7 @@ class OrderController extends Controller | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									'picture' => $ap->product->picture, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									'agent_product_id' => $ap->id, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									'product_id' => $ap->product_id, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									'status' => 0, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									'status' => Status::UNPAID, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									'pay_type' => $formData['pay_type'], | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									'coupon_id' => join(',', $coupon_ids), | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								]); | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -185,10 +186,10 @@ class OrderController extends Controller | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							//TODO 需要后台处理
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							$order = Order::find($formData['id']); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if (!in_array($order->status, [1, 2, 3])) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if (!in_array($order->status, [Status::PAY_EARNEST, Status::PAID, Status::PAY_RETAINAGE])) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								return $this->error('当前订单状态不允许退款'); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							$order->status = 6; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							$order->status = Status::REFUNDING; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							$order->refund_info = [ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								'desc' => strip_tags($formData['desc']), | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								'pictures' => $formData['pictures'] ?? [], | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -244,7 +245,7 @@ class OrderController extends Controller | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								'body' => $order->title, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								'out_trade_no' => $order->order_no, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								'total_fee' => $order->price, //TODO 需要区分定金和全款
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//			'notify_url' => 'https://pay.weixin.qq.com/wxpay/pay.action', // 支付结果通知网址,如果不设置则会使用配置里的默认地址
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								'notify_url' => route('wxpay_notify'), // 支付结果通知网址,如果不设置则会使用配置里的默认地址
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								'trade_type' => 'JSAPI', | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								'openid' => $openid, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							]); | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |