'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('id,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 '更改失败'; } } }