'fail','code'=>'1001','msg'=>'您已登陆,请勿重复登录')); }*/ } /** * 医生登录 * * @ApiTitle (医生登录) * @ApiSummary (医生登录) * @ApiSector (医生接口) * @ApiMethod (POST) * @ApiRoute (/inter/login/index) * @ApiHeaders (name="sign", type="string", required=true, description="请求头-校验key") * @ApiHeaders (name="nonce", type="string", required=true, description="请求头-随机数") * @ApiHeaders (name="timestamp", type=string, required=true, description="请求头-时间戳s") * @ApiParams (name="param", type="string", required=true, description="参数json字符串") * @ApiParams (name="param[userName]", type="string", sample="", description="用户账号<必填>") * @ApiParams (name="param[pwd]", type="string", sample="", description="用户密码<必填>") * @ApiParams (name="param[capture]", type="string", sample="", description="验证码<选填>") * @ApiReturnParams (name="status", type="integer", required=true, sample="0", description="返回码 fail 失败 ok成功")) * @ApiReturnParams (name="code", type="integer", required=true, sample="0", description="返回状态码") * @ApiReturnParams (name="info", type="string", required=true, sample="返回成功", description="返回信息") * @ApiReturnParams (name="sessionid", type="object", sample="{}", description="缓存的数据key") * @ApiReturn (data=" { 'status': ok, 'code': '0000', 'sessionid': 'a17z7a7a8f9g9rh9d89jio', 'info' : '' } *") **/ //登录功能 public function index(){ try{ $param = $_REQUEST['param']; Verify::loginCheck($param); $sessionid = UUIDs::uuid16(); log::record($sessionid); log::record($_REQUEST); if(!empty($param["captcha"])){ //1. 获取到用户提交的验证码 $captcha = $param["captcha"]; //2. 将session中的验证码和用户提交的验证码进行核对,当成功时提示验证码正确,并销毁之前的session值,不成功则重新提交 if(strtolower($_SESSION["captcha"]) == strtolower($captcha)){ $_SESSION["captcha"] = ""; }else{ return json_encode(['status'=>'fail','code'=>'1002','msg'=>'验证码输入错误']); } } if(empty($param['userName'])){ return json_encode(['status'=>'fail','code'=>'1100','msg'=>'用户名不能为空']); } if(empty($param['pwd'])){ return json_encode(['status'=>'fail','code'=>'1101','msg'=>'密码不能为空']); } //医生信息 $info = DB::table('doctors')->where('username',$param['userName'])->field('message_push,id,exam_class,attachment,username,password,login_time,login_failure,realname,email,phone,doctor_title,institution_id,department_id,doctor_role,is_report')->find(); log::record($info); if(!$info){ return json_encode(['status'=>'fail','code'=>'1004','msg'=>'用户名'.$param['userName'].'或密码错误']); } //医生类 $class_info = DB::table('doctor_class')->where('doctor_id',$info['id'])->cache(300)->find(); $institution = DB::table('institution')->where('id',$info['institution_id'])->cache(300)->field('name')->find(); $info['institution_name'] = $institution['name']; $info['doctor_class_info'] = $class_info; //医生权限菜单 $sql = "SELECT m.id,m.name,m.url,m.parent_id,m.icon_name from menu as m,dr_cla_permission as d where d.type=1 and d.doctor_id='".$info['id']."' and d.pass=m.id order by m.ordernum "; $permission = DB::query($sql); $info['permission'] = $permission; if(md5($param['pwd']) == $info['password']){ //登录成功则失败次数清0 DB::table('doctors')->where('username',$param['userName'])->update(['login_failure'=>0,'login_time'=>date('Y-m-d H:i:s')]); Cache::set($sessionid,$info,43200); log::record('----登录信息----'); log::record(Cache::get($sessionid)); log::record('----登录信息----'); unset($info['password']); return json_encode(['status'=>'ok','code'=>'0000','info'=>$info,'sessionid'=>$sessionid]); }else{ //登录失败则将 登录失败次数+1 $time = date('Y-m-d', time()); $datetime = strtotime($time); //上次登录时间-今日0点时间 $t = $info['login_time'] - $datetime; if( $t < 0){ //时间小于0 代表今日未进行登录 登录失败次数归0 DB::table('doctors')->where('username',$param['userName'])->update(['login_failure'=>0]); } DB::table('doctors')->where('username',$param['userName'])->setInc('login_failure'); return json_encode(['status'=>'fail','code'=>'1004','msg'=>'用户名'.$param['userName'].'或者密码错误','info'=>$info['login_failure']]); } }catch(\Exception $e){ return json_encode(['status'=>'fail','code'=>'2000','msg'=>$e->getMessage()]); } } //注册功能 public function register(){ $param = $_REQUEST['param']; $info = DB::table('doctors')->where('username',$param['userName'])->find(); if($info){ return json_encode(['status'=>'fail','code'=>'1006']); } $dat = array(); $dat['password'] = md5($param['pwd']); $dat['username'] = $param['userName']; $id = DB::table('doctors')->insertGetId($dat); $doctor_class = array(); $doctor_class['doctor_class'] = $param['doctor_class']; $doctor_class['doctor_id'] = $id; $doctor_class['department_id'] = $param['second_department_id']; //医生类别表 DB::table('doctor_class')->insert($doctor_class); if($id){ return json_encode(['status'=>'ok','code'=>'0000']); }else{ return json_encode(['status'=>'fail','code'=>'1005','msg'=>'注册失败']); } } //退出登录 清空session值 public function signOut(){ // Cache::rm('doctor'); Cache::clear(); return json_encode(['status'=>'ok','code'=>'0000']); } public function change(){ $id = $_REQUEST['id']; $a = DB::table('exams')->where('id',$id)->update(['exam_status'=>'3']); if($a){ echo '已更改'; }else{ echo '更改失败'; } } public function send_message(){ // $response = AliyunSms::sendSms('18246195584', '中世康恺','SMS_153325044',array("name" => "", "time" => "12:00")); // var_dump($response); /* * 向上级医师发送[远程诊断申请]短信 * 亲爱的${name}医生您好!收到新的${type},请您及时于${time}前登录系统处理 * @param {string} phone 手机号码 * @param {string} time 时间 * @param {string} name 姓名(姓) */ // AliyunSms::sendSms2Apply($phone, $time=, $name=); liyunSms::sendSms2Apply("13763459789", '12:00', '刘'); /* * 向下级医师发送[远程诊断申请被驳回]短信 * 很抱歉,您发起的远程诊断申请被驳回,请您及时处理后重新发起申请。驳回原因:${description} * @param {string} description 驳回理由 */ // AliyunSms::sendSms2RejectApply($phone, $description); liyunSms::sendSms2RejectApply("13763459789", '申请单描述信息不全'); /* * 向下级医院发送[远程诊断报告已经被写完]短信 * 您发起的远程诊断申请已由${doctor}医师完成,请您登录系统查看 * @param {string} doctor 医生 */ // AliyunSms::sendSms2CompleteReport($phone, $doctor); AliyunSms::sendSms2CompleteReport("13763459789", "301医师集团刘桂岩"); /* * 发送[内部通知]短信 * 通知: 类型:${type} 内容:${content} * @param {string} type 通知类型 * @param {string} content 通知内容 */ // AliyunSms::sendSms2Self($phone, $type, $content); AliyunSms::sendSms2Self("13763459789", "发起申请", "魏庙xx医院xx医师向301医师集团刘xx医师发起了远程诊断申请,申请单idxxx"); } }