|
@@ -3,6 +3,9 @@
|
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
|
use Illuminate\Database\Eloquent\Model;
|
|
|
use App\Models\Traits\Orders\Status as OrdersStatus;
|
|
|
+use App\Models\Product;
|
|
|
+use App\Models\Product\Skus as ProductSkus;
|
|
|
+use Illuminate\Support\Facades\DB;
|
|
|
/**
|
|
|
* 需求模型
|
|
|
*
|
|
@@ -77,21 +80,23 @@ class Orders extends Model
|
|
|
*/
|
|
|
public function setOrderStatus($id,$status,$OrdersProduct){
|
|
|
// 查询数据
|
|
|
- $result = $this->edit($id,['status'=>$status]);
|
|
|
+ $result = $this->edit($id,['status'=>$status]);
|
|
|
// 提示新增失败
|
|
|
- if( !$result ) {
|
|
|
+ if( !$result ) {
|
|
|
// 提示信息
|
|
|
- return ['error'=>'订单修改失败'];
|
|
|
+ return ['error'=>'订单修改失败'];
|
|
|
}
|
|
|
// 查询数据
|
|
|
- $result = $OrdersProduct->query()->where([['order_id','=',$id]])->update(['status'=>$status,'update_time'=>time()]);
|
|
|
+ $result = $OrdersProduct->query()->where([['order_id','=',$id]])->update(['status'=>$status,'update_time'=>time()]);
|
|
|
// 提示新增失败
|
|
|
- if( !$result ) {
|
|
|
+ if( !$result ) {
|
|
|
// 提示信息
|
|
|
- return ['error'=>'子订单修改失败'];json_send(['code'=>'error','msg'=>'取消失败','data'=>['error'=>'']]);
|
|
|
+ return ['error'=>'子订单修改失败'];json_send(['code'=>'error','msg'=>'取消失败','data'=>['error'=>'']]);
|
|
|
}
|
|
|
+ // 如果是取消订单,恢复库存
|
|
|
+ if( $status == 4 ) $this->restoreProductStock($id,$OrdersProduct);
|
|
|
// 进行操作
|
|
|
- return ['success'=>'成功'];
|
|
|
+ return ['success'=>'成功'];
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -165,5 +170,30 @@ class Orders extends Model
|
|
|
return ['success'=>'操作成功'];
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 根据订单ID恢复产品库存
|
|
|
+ * @param int $orderId 订单OD
|
|
|
+ * @param OrdersProduct $OrdersProduct 子订单模型
|
|
|
+ *
|
|
|
+ */
|
|
|
+ private function restoreProductStock($orderId,$OrdersProduct){
|
|
|
+ // 产品SKU
|
|
|
+ $ProductSkus = new ProductSkus();
|
|
|
+ // 产品SKU
|
|
|
+ $Product = new Product();
|
|
|
+ // 通过订单ID获取对应的产品
|
|
|
+ $orderProducts = $OrdersProduct->query()->where([['order_id','=',$orderId]])->select(['product_id','sku_attr_names','buy_num'])->get()->toArray();
|
|
|
+ // 循环产品
|
|
|
+ foreach ($orderProducts as $value) {
|
|
|
+ // 没有产品就不执行
|
|
|
+ if( !$value['product_id'] ) continue;
|
|
|
+ // 恢复库存
|
|
|
+ $ProductSkus->query([['product_id','=',$value['product_id']],['sku_attr_names','=',$value['sku_attr_names']]])->update(['stock'=>DB::raw('stock+'.$value['buy_num'])]);
|
|
|
+ // 恢复库存
|
|
|
+ $Product->edit($value['product_id'],['stock'=>DB::raw('stock+'.$value['buy_num'])]);
|
|
|
+ }
|
|
|
+ // 恢复库存
|
|
|
+ return true;
|
|
|
+ }
|
|
|
|
|
|
}
|