AddVaccine.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <?php
  2. namespace App\Community\Actions\Vaccine;
  3. use App\Models\Docter;
  4. use App\Models\OrderVaccine;
  5. use App\Models\Organization;
  6. use App\Models\OrganizationVaccines;
  7. use App\Models\Payment;
  8. use App\Models\Vaccine;
  9. use Carbon\Carbon;
  10. use Encore\Admin\Actions\RowAction;
  11. use Encore\Admin\Facades\Admin;
  12. use Illuminate\Database\Eloquent\Model;
  13. use Illuminate\Http\Request;
  14. use Illuminate\Support\Facades\DB;
  15. class AddVaccine extends RowAction
  16. {
  17. public $name = '订单修订';
  18. public function handle()
  19. {
  20. $ids = request('vaccine_id');
  21. $order_id = $this->row->id;
  22. $old_ids = OrderVaccine::where(['order_id'=>$order_id])->pluck('vaccine_id')->toArray();
  23. DB::beginTransaction();
  24. try {
  25. foreach ($ids as $id){
  26. $id = intval($id);
  27. $vaccine = Vaccine::where(['id'=>$id])->first();
  28. // $org_vaccine = vaccine::where('vaccine_id',$id)->first();
  29. if(empty($vaccine) || ($vaccine->stock <0)){
  30. return $this->response()->error($vaccine->name.'库存不足或无效疫苗');
  31. }
  32. if(empty($id)) continue;
  33. $vaccine_data = [
  34. 'order_id'=>$order_id,
  35. 'vaccine_type'=>$vaccine->type,
  36. 'vaccine_price'=>$vaccine->price,
  37. 'vaccine_name'=>$vaccine->name,
  38. 'vaccine_remark'=>$vaccine->remark,
  39. 'vaccine_supplier'=>$vaccine->supplier,
  40. 'vaccine_id'=>$id
  41. ];
  42. $is_have = OrderVaccine::where(['order_id'=>$order_id,'vaccine_id'=>$id])->first();
  43. if($is_have) continue;
  44. $vaccine_data ['created_at'] = Carbon::now();
  45. $vaccine_data ['updated_at'] = Carbon::now();
  46. OrderVaccine::insert($vaccine_data);
  47. Vaccine::decrement('stock',1);
  48. }
  49. //删除并添加库存
  50. foreach ($old_ids as $id){
  51. $id = intval($id);
  52. if(!in_array($id,$ids)){
  53. OrderVaccine::where(['order_id'=>$order_id,'vaccine_id'=>$id])->delete();
  54. Vaccine::increment('stock',1);
  55. }
  56. }
  57. DB::commit();
  58. } catch (\Exception $e){
  59. dd($e->getMessage());
  60. DB::rollBack();
  61. }
  62. return $this->response()->success('修改疫苗成功')->refresh();
  63. }
  64. public function form()
  65. {
  66. $admin = Admin::user();
  67. $is_admin = Admin::user()->isAdministrator();
  68. $org_id =$admin->org_id;
  69. $order_id = $this->row->id;
  70. if($is_admin){
  71. $list = Vaccine::pluck('name','id');
  72. } else {
  73. $list = Vaccine::where('org_id',$org_id)->pluck('name','id');
  74. }
  75. $ids = OrderVaccine::where(['order_id'=>$order_id])->pluck('vaccine_id')->toArray();
  76. $this->multipleSelect('vaccine_id','选择疫苗')->options($list)->value($ids)->required();
  77. }
  78. }