row->id; $old_ids = OrderVaccine::where(['order_id'=>$order_id])->pluck('vaccine_id')->toArray(); DB::beginTransaction(); try { foreach ($ids as $id){ $id = intval($id); $vaccine = Vaccine::where(['id'=>$id])->first(); // $org_vaccine = vaccine::where('vaccine_id',$id)->first(); if(empty($vaccine) || ($vaccine->stock <0)){ return $this->response()->error($vaccine->name.'库存不足或无效疫苗'); } if(empty($id)) continue; $vaccine_data = [ 'order_id'=>$order_id, 'vaccine_type'=>$vaccine->type, 'vaccine_price'=>$vaccine->price, 'vaccine_name'=>$vaccine->name, 'vaccine_remark'=>$vaccine->remark, 'vaccine_supplier'=>$vaccine->supplier, 'vaccine_id'=>$id ]; $is_have = OrderVaccine::where(['order_id'=>$order_id,'vaccine_id'=>$id])->first(); if($is_have) continue; $vaccine_data ['created_at'] = Carbon::now(); $vaccine_data ['updated_at'] = Carbon::now(); OrderVaccine::insert($vaccine_data); Vaccine::where('id',$id)->decrement('stock',1); } //删除并添加库存 foreach ($old_ids as $id){ $id = intval($id); if(!in_array($id,$ids)){ OrderVaccine::where(['order_id'=>$order_id,'vaccine_id'=>$id])->delete(); Vaccine::where('id',$id)->increment('stock',1); } } DB::commit(); } catch (\Exception $e){ return $this->response()->error($e->getMessage()); DB::rollBack(); } return $this->response()->success('修改疫苗成功')->refresh(); } public function form() { $admin = Admin::user(); $is_admin = Admin::user()->isAdministrator(); $org_id =$admin->org_id; $order_id = $this->row->id; $ids = OrderVaccine::where(['order_id'=>$order_id])->pluck('vaccine_id')->toArray(); if($is_admin){ $list = Vaccine::where('stock','>',0)->whereNotIn('id',$ids)->pluck('name','id')->toArray(); } else { $list = Vaccine::where('stock','>',0)->whereNotIn('id',$ids)->where('org_id',$org_id)->pluck('name','id')->toArray(); } //找出老疫苗 $vaccine = Vaccine::whereIn('id',$ids)->pluck('name','id')->toArray(); if(!empty($list)){ $list = ($list+$vaccine); } else { $list = $vaccine; } $this->multipleSelect('vaccine_id','选择疫苗')->options($list)->value($ids)->required(); } }