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

174 lines
5.0 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
/*
* description
* authorwh
* email
* createTime{2024/3/26} {20:55}
*/
namespace app\api\controller;
use app\api\logic\TychatLogic;
use app\api\logic\UserOfflinePrizeLogic;
use app\common\model\TabConf;
use GatewayWorker\Lib\Gateway;
use think\Db;
use think\Exception;
use wanghua\general_utility_tools_php\gpt\chat\ChatGPT;
use wanghua\general_utility_tools_php\Mmodel;
use wanghua\general_utility_tools_php\SundryConfig;
use wanghua\general_utility_tools_php\tool\Tools;
use wanghua\general_utility_tools_php\wechat\UserAuth;
/**
* 听译-用户
* Class Users
* @package app\api\controller
*/
class Usersty extends BaseHttpApi
{
/**
* desc听译-授权,登录
*
* /api/Usersty/login
*
* 参数:clientid 客户端标识
* username 用户名
* password 密码
*
* authorwh
*/
function login()
{
return Mmodel::catchJson(function (){
$clientid = input('clientid');
if(empty($clientid)){
return Tools::set_fail('clientid error');
}
$username = input('username');
if(empty($username)){
return Tools::set_fail('参数错误:1');
}
$password = input('password');
if(empty($password)){
return Tools::set_fail('参数错误:2');
}
$user = Db::table('fa_hdrdoctorusers')
->where('username',$username)
->find();
if(empty($user)){
return Tools::set_fail('用户不存在');
}
if($password != $user['password']){
return Tools::set_fail('密码错误');
}
//session('api_user_info',$user);
unset($user['password']);
//未登录
$expires = 7*86400+time();
$ticketstr = md5($user['username']);
//修改有效期
Db::table('fa_hdrdoctorusers')
->data([
'qa_chat_ticket'=>$ticketstr,
'ticket'=>$ticketstr,
'expires'=>$expires,//7天
])
->where('username',$username)
->update();
unset($user['qa_chat_ticket']);
return Tools::set_ok('登录成功',['ticket'=>$ticketstr,'user'=>$user]);
});
}
/**
* desc 绑定设备(选择角色时调用)
*
* api/Usersty/bindDevice
*
* 参数username
* clientid
* type 用户类型:user=用户,doc=医生
*/
//function bindDevice(){
// return Mmodel::catchJson(function (){
// //绑定设备
// $devidata = [
// 'username'=>input('username'),
// 'clientid'=>input('clientid'),
// 'type'=>input('type'),
// 'login_time'=>Tools::get_now_date(),
// ];
// Mmodel::existsUpdateInsert('fa_device',[
// 'username'=>input('username'),
// 'clientid'=>input('clientid'),
// ],$devidata);
// return Tools::set_ok('绑定成功');
// });
//}
/**
* 医生问诊提示
*
* 请求类型post
* 请求地址:/api/Usersty/getTips
* 参数:
* hdruserbaseinfo_id 基本信息id
*/
function getTips(){
return Mmodel::catchJson(function (){
$config = config('ai_doctor_tips_config');
//$hdruserbaseinfo_id = input('hdruserbaseinfo_id');
//if(empty($hdruserbaseinfo_id)){
// return Tools::set_fail('hdruserbaseinfo_id参数错误');
//}
$reportid = input('reportid');
if(empty($reportid)){
return Tools::set_fail('reportid参数错误');
}
//$content = [
// ["role" => "user", "content" => '']
//];
$chatobj = new ChatGPT();
$chatobj->url = $config['base_url'];
$chatobj->model = '';
$chatobj->apiKey = $config['APIKey'];
$answer_json_arr = [];
//查询病历报告
$report = Db::table(TabConf::$fa_tt_medical_report)
//->where('hdruserbaseinfo_id',$hdruserbaseinfo_id)
//->order('id desc')
->where('id',$reportid)
->find();
if(empty($report)){
return Tools::set_fail('暂无病历报告');
}
$config = [
'stream'=>false,
];
$question = $report['report_content'];//input('question','');
$chatobj->returnAnswer($question,$config,$answer_json_arr);
Tools::log_to_write_txt(['医生问诊提示gpt请求参数'=>$chatobj->post_msg_body]);
Tools::log_to_write_txt(['医生问诊提示gpt回复'=>$answer_json_arr]);
return Tools::set_ok('ok',['tips'=>$answer_json_arr]);
});
}
}