123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- <?php
- /**
- * Created by PhpStorm.
- * User: zilongs
- * Date: 20-10-4
- * Time: 下午8:32
- */
- namespace App\Http\Controllers\Api\V1;
- use App\Models\UserNextVaccine;
- use App\Models\Vaccine;
- use DB;
- class VaccineController extends AuthController
- {
- public function vaccineList()
- {
- $req = request()->post();
- $this->validate(request(), [
- 'organization_id' => 'required|integer',
- 'name' => 'max:50',
- 'type' => 'in:0,1,2',
- 'sort_type' => 'in:0,1,2',
- 'patient_id' => 'integer',
- ]);
- $builder = Vaccine::select(['id', 'type', 'price', 'name', 'remark', 'supplier', 'stock', DB::raw('0 is_recommend')])->where('org_id', $req['organization_id']);
- if (!empty($req['type'])) {
- $builder->where('type', $req['type']);
- }
- if (!empty($req['name'])) {
- $builder->where('name', 'like', '%'.$req['name'].'%');
- }
- //查询患者推荐接种的置顶
- if (!empty($req['patient_id'])) {
- $vaccine_ids = UserNextVaccine::where('patient_id', $req['patient_id'])->where('is_vaccinate', 0)->orderBy('next_vaccinate_time', 'asc')->pluck('vaccine_id')->toArray();
- if (!empty($vaccine_ids)) {
- $vaccine_ids = array_values(array_unique($vaccine_ids));
- $builder->whereNotIn('id', $vaccine_ids);
- $builder2 = Vaccine::select(['id', 'type', 'price', 'name', 'remark', 'supplier', 'stock', DB::raw('1 is_recommend')])->where('org_id', $req['organization_id'])->whereIn('id', $vaccine_ids);
- if (!empty($req['type'])) {
- $builder2->where('type', $req['type']);
- }
- if (!empty($req['name'])) {
- $builder2->where('name', 'like', '%'.$req['name'].'%');
- }
- $topVaccines = $builder2->get()->toArray();
- }
- }
- if (!empty($req['sort_type'])) {
- if ($req['sort_type'] == 1) {
- $builder->orderBy('price', 'asc');
- }
- elseif ($req['sort_type'] == 2) {
- $builder->orderBy('price', 'desc');
- }
- }
- else {
- $builder->orderBy('stock', 'desc');
- }
- $data = $builder->paginate()->toArray();
- //组合置顶
- if ((empty($req['page']) || $req['page'] == 1) && !empty($topVaccines)) {
- $data['data'] = array_merge($topVaccines, $data['data']);
- }
- return out($data);
- }
- }
|