Commit 7d4e8d7c by 赵增煜

增加default

parent 2dbe8e90
<?php
namespace App\Api\Controllers;
use App\Http\Controllers\BaseApiController;
use App\Models\DiagnosiModel;
use Illuminate\Http\Request;
// 诊断控制器
class DiagnosisController extends BaseApiController
{
public function test()
{
return $this->success(['a' => 1, 'b' => 2, 'c' => 3]);
}
// 获取诊断列表
public function diagnosisList(Request $request)
{
$search_input = $request->input('search_input');
$query = DiagnosiModel::query();
if ($search_input) {
$query->where('name', 'like', "%{$search_input}%")
->orWhere('code', 'like', "%{$search_input}%");
}
$data = $query->paginate(10);
return $this->success($data);
}
}
<?php
namespace App\Api\Controllers;
use App\Http\Controllers\BaseApiController;
use App\Models\DrugModel;
use Illuminate\Http\Request;
// 药品控制器
class DrugController extends BaseApiController
{
public function test()
{
return $this->success(['a' => 1, 'b' => 2, 'c' => 3]);
}
// 药品列表
public function drugList(Request $request)
{
// $code = $request->input('code');
$data = DrugModel::query()->paginate(10);
// $total = DrugModel::query()->count();
// $data = [
// 'data'=>$drugList,
// 'total'=>$total
// ];
return $this->success($data);
}
}
<?php
namespace App\Api\Controllers;
use App\Http\Controllers\BaseApiController;
use App\Models\PatientModel;
use Illuminate\Http\Request;
use App\Common\Util;
// 问诊人控制器
class PatientController extends BaseApiController
{
public function test()
{
return $this->success(['a' => 1, 'b' => 2, 'c' => 3]);
}
// 获取问诊人列表
public function patientList(Request $request)
{
$search_input = $request->input('search_input');
$query = PatientModel::query();
if ($search_input) {
$query->where('mobile', 'like', "%{$search_input}%");
# ->orWhere('mobile', 'like', "%{$search_input}%");
}
$data = $query->paginate(10);
return $this->success($data);
}
// 添加问诊人
public function add(Request $request)
{
$data = $request->all();
# TODO 表中缺少关联
# TODO 验证身份证号码是否正确
$idCardInfo = Util::getIdCardInfo($data['id_card']);
$data['gender'] = $idCardInfo['gender'];
$data['age'] = $idCardInfo['age'];
$res = PatientModel::create($data);
if ($res) {
return $this->success($res);
} else {
return $this->error(401, '添加失败');
}
}
// 修改问诊人
public function update(Request $request)
{
$id = $request->input('id');
# TODO 验证身份证号码是否正确
# TODO 提取身份信息
$data = PatientModel::find($id);
if (! $data) {
return $this->error(401, '该问诊人不存在');
}
$data->name = $request->input('name');
$data->id_card = $request->input('id_card');
$data->mobile = $request->input('mobile');
$data->save();
}
// 删除问诊人
public function delete(Request $request)
{
$id = $request->input('id');
$data = PatientModel::find($id);
if (! $data) {
return $this->error(401, '该问诊人不存在');
}
$data->delete();
return $this->success($data);
}
// 设置默认问诊人
public function setDefault(Request $request)
{
// 通过id找到是否存在默认问诊人,如果存在比对id是否相同,如果不同则修改默认问诊人状态
# TODO 验证条件待调整
$id = $request->input('id');
$data = PatientModel::where('is_default', 1)->where('id',$id)->first();
if ($data) {
if ($data['id'] == $id) {
return $this->success(['msg' => '该问诊人已经是默认问诊人']);
} else {
$data->is_default = 0;
$data->save();
}
}
$id = $request->input('id');
$data = PatientModel::find($id);
if (! $data) {
return $this->error(401, '该问诊人不存在');
}
$data->is_default = 1;
$data->save();
return $this->success($data);
}
// 获取默认问诊人
public function getDefault(Request $request) {
$id = $request->input('id');
$data = PatientModel::where('id',$id)->where('is_default', 1)->first();
if ($data) {
return $this->success($data);
} else {
return $this->error(401, '暂无默认问诊人');
}
}
}
<?php
namespace App\Api\Controllers;
use App\Http\Controllers\BaseApiController;
use App\Models\PharmacyModel;
use Illuminate\Http\Request;
// 药店控制器
class PharmacyController extends BaseApiController
{
public function test()
{
return $this->success(['a' => 1, 'b' => 2, 'c' => 3]);
}
public function PharmacyList(Request $request)
{
$search_input = $request->input('search_input');
$query = PharmacyModel::query();
if ($search_input) {
$query->where('name', 'like', "%{$search_input}%");
// ->orWhere('address','like',"%{$search_input}%");
}
# TODO 是否闭店、是否在营业时间段、是否启用
# TODO 该药店下是否有药师在启用状态
// $data = $query->where('is_close',0)
// ->where('is_open',1)
// ->where('start_time','<=',date("H:i"))
// ->where('end_time','>=',date("H:i"));
$data = $query->paginate(10);
return $this->success($data);
}
}
...@@ -152,4 +152,58 @@ public static function noAuth(): Alert ...@@ -152,4 +152,58 @@ public static function noAuth(): Alert
return $alert; return $alert;
} }
/**
* 验证身份证号码
*/
public static function checkIdCard($idcard){
}
# 通过身份证号码获取性别、年龄等信息
public static function getIdCardInfo($idCard) {
// 校验身份证号码长度(15位或18位)
if (strlen($idCard) == 15) {
// 15位身份证号码转换为18位
$idCard = substr($idCard, 0, 6) . '19' . substr($idCard, 6, 9) . self::calcCheckDigit($idCard);
} elseif (strlen($idCard) != 18) {
return ['error' => 'Invalid ID card number'];
}
// 提取出生日期
$birthDate = substr($idCard, 6, 8);
$birthDate = substr($birthDate, 0, 4) . '-' . substr($birthDate, 4, 2) . '-' . substr($birthDate, 6, 2);
$birthDateTime = \DateTime::createFromFormat('Y-m-d', $birthDate);
if (!$birthDateTime || $birthDateTime->format('Y-m-d') !== $birthDate) {
return ['error' => 'Invalid birth date in ID card number'];
}
// 提取性别(第17位奇数为男性,偶数为女性)
$gender = (int)substr($idCard, 16, 1) % 2 === 0 ? 2 : 1;
// 计算年龄
$today = new \DateTime();
$age = $today->diff($birthDateTime)->y;
return [
'birthDate' => $birthDate,
'gender' => $gender,
'age' => $age
];
}
public static function calcCheckDigit($idCard17) {
$weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
$checkDigits = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
$sum = 0;
for ($i = 0; $i < 17; $i++) {
$sum += intval(substr($idCard17, $i, 1)) * $weights[$i];
}
$mod = $sum % 11;
return $checkDigits[$mod];
}
} }
...@@ -18,6 +18,7 @@ public function up(): void ...@@ -18,6 +18,7 @@ public function up(): void
$table->tinyInteger('gender')->default(0)->comment('性别。[1=男性,2=女性,0=未知]'); $table->tinyInteger('gender')->default(0)->comment('性别。[1=男性,2=女性,0=未知]');
$table->string('id_card', 18)->nullable()->index('idx_idcard')->comment('身份证号'); $table->string('id_card', 18)->nullable()->index('idx_idcard')->comment('身份证号');
$table->string('mobile', 11)->nullable()->index('idx_mobile')->comment('手机号'); $table->string('mobile', 11)->nullable()->index('idx_mobile')->comment('手机号');
$table->boolean('is_default')->default(false)->comment('是否默认问诊人');
$table->timestamps(); $table->timestamps();
$table->softDeletes(); $table->softDeletes();
}); });
......
...@@ -21,9 +21,32 @@ ...@@ -21,9 +21,32 @@
// 不需要登录的组 // 不需要登录的组
// 小程序静默登录 // 小程序静默登录
Route::post('login', 'App\Api\Controllers\UserController@login'); Route::post('login', 'App\Api\Controllers\UserController@login');
// Route::get('test', 'App\Api\Controllers\DrugController@test');
# 获取药品列表
Route::get('/drugs', 'App\Api\Controllers\DrugController@drugList');
# 获取药店列表
Route::get('/pharmacys', 'App\Api\Controllers\PharmacyController@PharmacyList');
# 获取诊断列表
Route::get('/diagnosis', 'App\Api\Controllers\DiagnosisController@diagnosisList');
# 获取问诊人列表
Route::get('/patients', 'App\Api\Controllers\PatientController@patientList');
# 问诊人新增
Route::post('/patients-add', 'App\Api\Controllers\PatientController@add');
# 问诊人编辑
Route::post('/patients-update', 'App\Api\Controllers\PatientController@update');
# 问诊人删除
Route::post('/patients-delete', 'App\Api\Controllers\PatientController@delete');
# 设置默认问诊人
Route::post('/patients-setDefault', 'App\Api\Controllers\PatientController@setDefault');
# 获取默认问诊人
Route::post('/patients-getDefault', 'App\Api\Controllers\PatientController@getDefault');
// 需要验证是否登录的路由组 // 需要验证是否登录的路由组
Route::middleware(['jwt.auth'])->group(function () { Route::middleware(['jwt.auth'])->group(function () {
// 获取用户信息 // 获取用户信息
Route::get('/users', 'App\Api\Controllers\UserController@userInfo'); Route::get('/users', 'App\Api\Controllers\UserController@userInfo');
// 获取药品列表
}); });
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment