Files
fast_response/digital_doctor/application/api/controller/Hdrdoctorusers.php
2025-03-17 10:56:09 +08:00

291 lines
10 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace app\api\controller;
use think\Db;
use app\common\model\TabConf;
use wanghua\general_utility_tools_php\file\upload\FileUpload;
use wanghua\general_utility_tools_php\tool\Tools;
use think\Controller;
class Hdrdoctorusers extends BaseHttpApi
{
protected $controller_comments = '医生账户信息';
/**
* 新增医生账户信息
*
* 参数:
* doctor 医生昵称(杨教授) 医生昵称(杨教授) 必须
* username 用户名(手机号) 用户名(手机号) 必须
* hdrdepartment_id 科室 科室 必须
* name 姓名(杨玉环) 姓名(杨玉环) 必须
* password 密码a123456 密码a123456 必须
* api/Hdrdoctorusers/addHdrdoctorusers
*/
function addHdrdoctorusers(){
Tools::log_to_write_txt(['新增医生账户信息'=>input()]);
$api_desc = '新增医生账户信息';
Db::startTrans();
try {
$doctor = input('doctor');
if(empty($doctor)){
return json(Tools::set_fail('参数错误.0'));
}
$username = input('username');
if(empty($username)){
return json(Tools::set_fail('参数错误.1'));
}
$hdrdepartment_id = input('hdrdepartment_id');
if(empty($hdrdepartment_id)){
return json(Tools::set_fail('参数错误.2'));
}
$name = input('name');
if(empty($name)){
return json(Tools::set_fail('参数错误.3'));
}
$password = input('password');
if(empty($password)){
return json(Tools::set_fail('参数错误.4'));
}
$data = [
'doctor'=>$doctor?:'',
'username'=>$username?:'',
'hdrdepartment_id'=>$hdrdepartment_id?:'',
'name'=>$name?:'',
'password'=>$password?:'',
];
$dataid = Db::table(TabConf::$fa_hdrdoctorusers)->insertGetId($data);
//$this->operateLog('新增医生账户信息',api_user_info('id'));
Db::commit();
return json(Tools::set_ok('ok',$dataid));
}catch (\Exception $e){
Db::rollback();
Tools::log_to_write_txt([
'error'=>'新增医生账户信息.异常.'.$e->getMessage(),
'input'=>input(),
'error_info'=>$e->getTraceAsString()
]);
return json(Tools::set_fail());
}
}
/**
* 修改医生账户信息
* 参数:
* id ID ID 必须
* doctor 医生昵称(杨教授)
* username 用户名(手机号)
* hdrdepartment_id 科室
* name 姓名(杨玉环)
* password 密码a123456
* sex 性别
* age 年龄
* address 住址
* api/Hdrdoctorusers/updateHdrdoctorusers
*/
function updateHdrdoctorusers(){
Tools::log_to_write_txt(['修改医生账户信息'=>input()]);
$api_desc = '修改医生账户信息';
Db::startTrans();
try {
$doctor = input('doctor');
$username = input('username');
$hdrdepartment_id = input('hdrdepartment_id');
$name = input('name');
$password = input('password');
$sex = input('sex');
$age = input('age');
$address = input('address');
if(empty(input('id'))){
return json(Tools::set_fail('参数错误。0'));
}
$data = [
'doctor'=>$doctor?:'',
'username'=>$username?:'',
'hdrdepartment_id'=>$hdrdepartment_id?:'',
'name'=>$name?:'',
'password'=>$password?:'',
'sex'=>$sex?:'',
'age'=>$age?:'',
'address'=>$address?:'',
];
$dataid = Db::table(TabConf::$fa_hdrdoctorusers)
->data($data)
->where('id',input('id'))
->update();
//$this->operateLog('修改医生账户信息',api_user_info('id'));
Db::commit();
return json(Tools::set_ok('ok',$dataid));
}catch (\Exception $e){
Db::rollback();
Tools::log_to_write_txt([
'error'=>'修改医生账户信息.异常.'.$e->getMessage(),
'input'=>input(),
'error_info'=>$e->getTraceAsString()
]);
return json(Tools::set_fail());
}
}
/**
* desc获取医生账户信息
*
* api/Hdrdoctorusers/getHdrdoctorusersList
*
* 参数:
* 带分页
* current_page 当前页码
* list_rows 每页显示条数 默认15
* doctor 医生昵称(杨教授)
* name 姓名(杨玉环)
* doctor 医生昵称(杨教授)
* username 用户名(手机号)
* hdrdepartment_id 科室
* name 姓名(杨玉环)
*
* 所有字段说明<span style="color: gray">(可能有部分额外字段未在此体现)</span>
* id ID
* doctor 医生昵称(杨教授)
* username 用户名(手机号)
* hdrdepartment_id 科室
* name 姓名(杨玉环)
* password 密码a123456
* sex 性别
* age 年龄
* type 用户类型:user=用户,doc=医生
* address 住址
* clientid 客户端ID
* expires 有效期
* ticket 票据
* create_time 创建时间
* authorwh
*/
function getHdrdoctorusersList(){
Tools::log_to_write_txt(['获取医生账户信息 入参:'=>input()]);
$api_desc = '获取医生账户信息';
try {
$doctor = input('doctor');
$username = input('username');
$hdrdepartment_id = input('hdrdepartment_id');
$name = input('name');
$model_obj = Db::table(TabConf::$fa_hdrdoctorusers);
if(input('doctor')){
$model_obj->whereLike('doctor','%'.input('doctor').'%');
}
if(input('name')){
$model_obj->whereLike('name','%'.input('name').'%');
}
if(input('doctor')){
$model_obj->where('doctor',input('doctor'));
}
if(input('username')){
$model_obj->where('username',input('username'));
}
if(input('hdrdepartment_id')){
$model_obj->where('hdrdepartment_id',input('hdrdepartment_id'));
}
$data = $model_obj->paginate(['page'=>input('current_page',1),'list_rows'=>input('list_rows',15)])
->each(function($item, $key){
$ret_field_name_arr = Tools::delete_str_empty_ele(',,,hdrdepartment_id--name,,,,,,,,,,');
//处理为外键字段+外键对应数据的字段名 egusers_id=>nickname
$ret_field_name2 = [];
foreach ($ret_field_name_arr as $ret_typ_field) {
$exp_arr = explode('--',$ret_typ_field);
//$exp_arr[0] 主表字段,$exp_arr[1] 副表字段
$ret_field_name2[$exp_arr[0]] = [$exp_arr[0],$exp_arr[1]];
}
//返回数据类型处理
$return_type_exp_arr = Tools::delete_str_empty_ele(',,,hdrdepartment_id==field_val,,,,,,,,,,');
//处理为类型+字段
$return_type_exp_arr2 = [];
foreach ($return_type_exp_arr as $ret_type_field) {
$exp_arr = explode('==',$ret_type_field);
$return_type_exp_arr2[$exp_arr[0]] = $exp_arr[1];
}
//返回数组 eg: [id-fa_goods_deal==goods_id,id-fa_goods_deal==goods_id]
$rel_table_arr = Tools::delete_str_empty_ele(',,,hdrdepartment_id-fa_hdrdepartment==id,,,,,,,,,,');
//关联的字段和表
$rel_field_table_arr2 = [];
//关系
foreach ($rel_table_arr as $rel_str) {
$exp_arr = explode('-',$rel_str);
$rel_field_table_arr2[$exp_arr[0]] = [explode('==',$exp_arr[1])[0],explode('==',$exp_arr[1])[1]];
}
foreach($item as $it_key=>$it_val){
if(empty($rel_field_table_arr2[$it_key])){
continue;
}
foreach($return_type_exp_arr as $key=>$val){
$val_arr = explode('==',$val);
if($it_key == $val_arr[0]){
switch($val_arr[1]){
case 'two_arr':
$item[$it_key.'_data'] = Db::table($rel_field_table_arr2[$it_key][0])->where("{$rel_field_table_arr2[$it_key][1]}",$it_val)->select();
break;
case 'one_arr':
$item[$it_key.'_data'] = Db::table($rel_field_table_arr2[$it_key][0])->where("{$rel_field_table_arr2[$it_key][1]}",$it_val)->find();
break;
case 'field_val':
$item[$it_key.'_data'] = Db::table($rel_field_table_arr2[$it_key][0])->where("{$rel_field_table_arr2[$it_key][1]}",$it_val)->value("{$ret_field_name2[$it_key][1]}");
break;
}
}
}
}
return $item;
});
// ['total'] => int(30)
// ['per_page'] => int(15)
// ['current_page'] => int(1)
// ['last_page''] => int(2)
$data = $data->toArray();//包含 data列表
return json(Tools::set_ok('ok',$data));
}catch(\Exception $e){
Tools::log_to_write_txt([
'error'=>'获取医生账户信息.异常.'.$e->getMessage(),
'参数'=>input(),
'error_info'=>$e->getTraceAsString()
]);
return json(Tools::set_res(500,'操作异常',[]));
}
}
}