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