|
@@ -8,7 +8,9 @@
|
|
|
|
|
|
namespace App\Http\Controllers\Api\V1;
|
|
namespace App\Http\Controllers\Api\V1;
|
|
|
|
|
|
|
|
+use App\Models\UserNextVaccine;
|
|
use App\Models\Vaccine;
|
|
use App\Models\Vaccine;
|
|
|
|
+use DB;
|
|
|
|
|
|
class VaccineController extends AuthController
|
|
class VaccineController extends AuthController
|
|
{
|
|
{
|
|
@@ -20,15 +22,33 @@ class VaccineController extends AuthController
|
|
'name' => 'max:50',
|
|
'name' => 'max:50',
|
|
'type' => 'in:0,1,2',
|
|
'type' => 'in:0,1,2',
|
|
'sort_type' => 'in:0,1,2',
|
|
'sort_type' => 'in:0,1,2',
|
|
|
|
+ 'patient_id' => 'integer',
|
|
]);
|
|
]);
|
|
|
|
|
|
- $builder = Vaccine::select(['id', 'type', 'price', 'name', 'remark', 'supplier', 'stock'])->where('org_id', $req['organization_id']);
|
|
|
|
|
|
+ $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'])) {
|
|
if (!empty($req['type'])) {
|
|
$builder->where('type', $req['type']);
|
|
$builder->where('type', $req['type']);
|
|
}
|
|
}
|
|
if (!empty($req['name'])) {
|
|
if (!empty($req['name'])) {
|
|
$builder->where('name', 'like', '%'.$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 (!empty($req['sort_type'])) {
|
|
if ($req['sort_type'] == 1) {
|
|
if ($req['sort_type'] == 1) {
|
|
$builder->orderBy('price', 'asc');
|
|
$builder->orderBy('price', 'asc');
|
|
@@ -41,7 +61,11 @@ class VaccineController extends AuthController
|
|
$builder->orderBy('stock', 'desc');
|
|
$builder->orderBy('stock', 'desc');
|
|
}
|
|
}
|
|
|
|
|
|
- $data = $builder->paginate();
|
|
|
|
|
|
+ $data = $builder->paginate()->toArray();
|
|
|
|
+ //组合置顶
|
|
|
|
+ if ((empty($req['page']) || $req['page'] == 1) && !empty($topVaccines)) {
|
|
|
|
+ $data['data'] = array_merge($topVaccines, $data['data']);
|
|
|
|
+ }
|
|
|
|
|
|
return out($data);
|
|
return out($data);
|
|
}
|
|
}
|