diff --git a/app/Admin/Controllers/TotalPatientController.php b/app/Admin/Controllers/TotalPatientController.php index 966f90b..1f129ee 100644 --- a/app/Admin/Controllers/TotalPatientController.php +++ b/app/Admin/Controllers/TotalPatientController.php @@ -29,7 +29,7 @@ class TotalPatientController extends AdminController $this->exportAction(), ]) ->filter($this->baseFilter()->actions()->body([ - amisMake()->SelectControl()->options($this->getPatientOptions())->searchable()->name('id')->label(__('total-record.name'))->size('md')->clearable(), + amisMake()->SelectControl()->options($this->getPatientOptions())->searchable()->name('id')->label(__('total-record.name'))->size('md')->multiple()->clearable(), amisMake()->SelectControl()->options($this->getTypeOptions())->name('type_id')->label(__('patient-record.type_id'))->size('md')->clearable(), amisMake()->DateRangeControl()->name('treat_range')->label(__('total-record.treat_at'))->clearable()->size('md'), // amisMake()->Button()->label(__('admin.reset'))->actionType('clear-and-submit'), diff --git a/app/Admin/Controllers/TotalProfitController.php b/app/Admin/Controllers/TotalProfitController.php index 2dfec34..3b9861f 100644 --- a/app/Admin/Controllers/TotalProfitController.php +++ b/app/Admin/Controllers/TotalProfitController.php @@ -29,7 +29,7 @@ class TotalProfitController extends AdminController $this->exportAction(), ]) ->filter($this->baseFilter()->actions()->body([ - amisMake()->SelectControl()->options($this->getAdminUserOptions())->searchable()->name('id')->label(__('total-profit.id'))->clearable()->size('md'), + amisMake()->SelectControl()->options($this->getAdminUserOptions())->searchable()->name('id')->label(__('total-profit.id'))->multiple()->clearable()->size('md'), amisMake()->SelectControl()->options($this->getTypeOptions())->name('type_id')->label(__('total-profit.type_id'))->size('md')->clearable(), amisMake()->DateRangeControl()->name('treat_range')->label(__('total-record.treat_at'))->clearable()->size('md'), // amisMake()->Button()->label(__('admin.reset'))->actionType('clear-and-submit'), diff --git a/app/Admin/Services/PatientService.php b/app/Admin/Services/PatientService.php index 118d13e..01cee43 100644 --- a/app/Admin/Services/PatientService.php +++ b/app/Admin/Services/PatientService.php @@ -2,6 +2,7 @@ namespace App\Admin\Services; +use App\Enums\Gender; use App\ModelFilters\PatientFilter; use Illuminate\Validation\Rule; use App\Models\{Patient, PatientRecord}; @@ -42,6 +43,11 @@ class PatientService extends BaseService if ($images = data_get($data, 'images')) { $data['images'] = is_array($images) ? $images : explode(',', $images); } + if (!$model) { + if (!data_get($data, 'sex')) { + $data['sex'] = Gender::None; + } + } return $data; } @@ -58,15 +64,15 @@ class PatientService extends BaseService $createRule = [ 'type_id' => 'required', 'name' => 'required', - 'user_id' => $userRule->where('type_id', data_get($data, 'type_id')) + 'user_id' => ['nullable', $userRule->where('type_id', data_get($data, 'type_id'))], ]; $updateRule = [ - 'user_id' => $userRule->where('type_id', data_get($data, 'type_id', $model?->type_id)) + 'user_id' => ['nullable', $userRule->where('type_id', data_get($data, 'type_id', $model?->type_id))] ]; $validator = Validator::make($data, $model ? $updateRule : $createRule, [ 'type_id.required' => __('patient.type_id') . '必填', 'name.required' => __('patient.name') . '必填', - 'user_id.unique' => __('patient.user_id') . '已经存在', + 'user_id.unique' => __('patient.user_id') . '已经绑定过', ]); if ($validator->fails()) { return $validator->errors()->first(); diff --git a/app/Admin/Services/TotalProfitService.php b/app/Admin/Services/TotalProfitService.php index a2f3fc9..4ec33a5 100644 --- a/app/Admin/Services/TotalProfitService.php +++ b/app/Admin/Services/TotalProfitService.php @@ -26,7 +26,8 @@ class TotalProfitService extends BaseService } $request = request(); if ($request->filled('id')) { - $query->where('id', $request->input('id')); + $id = $request->input('id'); + $query->whereIn('id', is_array($id) ? $id : explode(',', $id)); } $subQuery = fn ($q) => $q->filter(request()->except(['id'])); $query->select(['id', 'name'])->with([ diff --git a/app/Admin/Services/UserService.php b/app/Admin/Services/UserService.php index 532223a..980df44 100644 --- a/app/Admin/Services/UserService.php +++ b/app/Admin/Services/UserService.php @@ -27,6 +27,7 @@ class UserService extends BaseService } if ($filter) { + logger('request', request()->input()); $query->filter(request()->input(), $filter); } @@ -44,7 +45,7 @@ class UserService extends BaseService ], [ 'phone.required' => __('user.phone') . '必填', 'phone.phone' => __('user.phone') . ' 不是合法手机号', - 'phone.unique' => __('user.phone') . '已经存在', + 'phone.unique' => __('user.phone') . '已经注册', ]); if ($validator->fails()) { return $validator->errors()->first(); diff --git a/app/Http/Controllers/Client/AuthController.php b/app/Http/Controllers/Client/AuthController.php index 28f2c86..be20108 100644 --- a/app/Http/Controllers/Client/AuthController.php +++ b/app/Http/Controllers/Client/AuthController.php @@ -9,6 +9,7 @@ use App\Http\Controllers\Controller; use App\Models\User; use App\Models\UserSocialite; use Illuminate\Http\Request; +use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Hash; class AuthController extends Controller @@ -41,20 +42,27 @@ class AuthController extends Controller public function register(Request $request) { - $service = UserService::make(); - if (!$service->store($request->all())) { - throw new BaseException($service->getError()); + try { + DB::beginTransaction(); + $service = UserService::make(); + if (!$service->store($request->all())) { + throw new BaseException($service->getError()); + } + $user = User::where('phone', $request->input('phone'))->first(); + // 更新第三方账户 + $openid = $request->input('openid'); + $open_type = $request->input('open_type'); + if ($openid && $open_type) { + UserSocialite::where(['openid' => $openid, 'type' => SocialiteType::from($open_type), 'user_type' => $user->getMorphClass()])->update([ + 'user_id' => $user->id, + ]); + } + DB::commit(); + $token = $user->createToken('client')->plainTextToken; + return $this->response()->success(['token' => $token, 'user' => $user]); + } catch (\Exception $e) { + DB::rollBack(); + return $this->response()->fail($e->getMessage()); } - $user = User::where('phone', $request->input('phone'))->first(); - // 更新第三方账户 - $openid = $request->input('openid'); - $open_type = $request->input('open_type'); - if ($openid && $open_type) { - UserSocialite::where(['openid' => $openid, 'type' => SocialiteType::from($open_type), 'user_type' => $user->getMorphClass()])->update([ - 'user_id' => $user->id, - ]); - } - $token = $user->createToken('client')->plainTextToken; - return $this->response()->success(['token' => $token, 'user' => $user]); } } diff --git a/app/ModelFilters/UserFilter.php b/app/ModelFilters/UserFilter.php index 8150a35..79e1cc8 100644 --- a/app/ModelFilters/UserFilter.php +++ b/app/ModelFilters/UserFilter.php @@ -30,8 +30,8 @@ class UserFilter extends ModelFilter $this->where(fn ($q) => $q->where('phone', 'like', $str)->orWhere('name', 'like', $str)); } - public function ignoreType($key) + public function treatType($key) { - $this->whereDoesntHave('patients', fn ($q) => $q->where('type_id', $key)); + $this->whereHas('patients', fn ($q) => $q->where('type_id', '!=', $key)); } } diff --git a/public/client/index.html b/public/client/index.html index 5a1f608..8900696 100644 --- a/public/client/index.html +++ b/public/client/index.html @@ -1,2 +1,2 @@