config('smallprogram_appid'), 'secret' => config('smallprogram_appsecret'), ]; $this->app = Factory::miniProgram($config); } /** * 登录凭证校验 * @param string $js_code 登录时获取的 code */ public function loginCodeCheck() { //传参数据 $data_list = $this->params; if (!isset($data_list['js_code']) || empty($data_list['js_code'])) { apiReturn(500,'js_code不能为空'); } $config = [ 'app_id' => config('smallprogram_appid'), 'secret' => config('smallprogram_appsecret'), // 下面为可选项 // 指定 API 调用返回结果的类型:array(default)/collection/object/raw/自定义类名 'response_type' => 'array', 'log' => [ 'level' => 'debug', 'file' => __DIR__ . '/wechat.log', ], ]; $app = Factory::miniProgram($config); $wx_user_info = $app->auth->session($data_list['js_code']); $member_info = MemberModel::where(['openid' => $wx_user_info['openid']])->find(); //新用户 if (empty($member_info)) { //生成会员编号 $numRes = true; do{ $finallymember = MemberModel::order('create_time desc')->find(); if(!empty($finallymember)){ $member_number = $finallymember['member_number']+1; }else{ $member_number = 100001; } $count = MemberModel::where(['member_number'=>$member_number])->count(); if(empty($count)) { $numRes=false; } }while($numRes); //添加数据并返回主键 $res = MemberModel::create([ 'member_number'=>$member_number, 'openid' => $wx_user_info['openid'], 'lastlogin_time' => time(), 'lastlogin_ip' => get_client_ip(0), 'login_num' => 1, ]); //生成token $user_token = $this->getToken($res['id']); $res2 = MemberModel::update(['userToken' => $user_token], ['id' => $res['id']]); if ($res && $res2) { apiReturn(200,'绑定成功',['user_token' => $user_token]); } else { apiReturn(500,'绑定失败'); } } else { if ($member_info['is_delete'] != 0) { apiReturn(500,'此账号被禁用或删除'); } //登录是否超时(一周登录时间) $time_compa= abs(time() - $member_info['lastlogin_time']); if ($time_compa > 604800) { //生成token $user_token = $this->getToken($member_info['id']); // 更新登录信息及token信息 $member_info->userToken = $user_token; $member_info->lastlogin_time = time(); $member_info->lastlogin_ip = get_client_ip(1); $member_info->login_num = $member_info->login_num + 1; $member_info->save(); }else{ $user_token = $member_info['userToken']; } apiReturn(200,'登录成功',['user_token' => $user_token]); } } }