ywtc_api/application/api/controller/Login.php

123 lines
3.8 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
namespace app\api\controller;
use think\Db;
use \think\Loader;
use think\helper\Hash;
use EasyWeChat\Factory;
use EasyWeChat\MiniProgram;
use think\facade\Config;
use app\member\model\Member as MemberModel;
/**
* 登录注册接口
* @package app\api\controller
*/
class Login extends Api
{
//初始化
public function initialize(){
parent::initialize();
$config = [
'app_id' => 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]);
}
}
}