Finished.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. namespace App\Community\Actions\Vaccine;
  3. use App\Models\Order;
  4. use App\Models\OrderVaccine;
  5. use App\Models\UserNextVaccine;
  6. use App\Models\Vaccine;
  7. use Encore\Admin\Actions\RowAction;
  8. use Illuminate\Database\Eloquent\Model;
  9. class Finished extends RowAction
  10. {
  11. public $name = '完成订单';
  12. public function handle(Model $model)
  13. {
  14. $req = request()->post();
  15. $id = $this->row->id;
  16. $res = Order::where('id',$id)->update(['order_status'=>Order::FINISHED,'end_time'=>time()]);
  17. if (!$res) {
  18. return $this->response()->error('操作失败!');
  19. }
  20. $order = Order::select(['user_id', 'patient_id'])->where('id', $id)->first();
  21. //更新下次接种的疫苗为已经接种了
  22. $vaccine_id = OrderVaccine::where('order_id', $id)->value('vaccine_id');
  23. UserNextVaccine::where('user_id', $order['user_id'])->where('patient_id', $order['patient_id'])->where('vaccine_id', $vaccine_id)->where('is_vaccinate', 0)->update(['is_vaccinate' => 1, 'vaccinate_time' => time()]);
  24. //添加下次接种疫苗
  25. if (!empty($req['vaccine_id'])) {
  26. $order = Order::select(['user_id', 'patient_id'])->where('id', $id)->first();
  27. UserNextVaccine::create([
  28. 'user_id' => $order['user_id'],
  29. 'patient_id' => $order['patient_id'],
  30. 'vaccine_id' => $req['vaccine_id'],
  31. 'next_vaccinate_time' => strtotime($req['next_vaccinate_date']),
  32. ]);
  33. }
  34. return $this->response()->success('操作成功!')->refresh();
  35. }
  36. public function form()
  37. {
  38. $order_id = $this->row->id;
  39. $order = Order::select(['organization_id'])->where('id', $order_id)->first();
  40. $vaccines = Vaccine::where('org_id', $order['organization_id'])->pluck('name', 'id')->toArray();
  41. $vaccines = ['0' => '选填'] + $vaccines;
  42. $this->select('vaccine_id', __('下次接种疫苗'))->options($vaccines);
  43. $this->date('next_vaccinate_date', '下次接种时间')->placeholder('选填');
  44. }
  45. }