Files
jianfeng-server/app/index/controller/Login.php
2025-10-02 10:33:06 +08:00

421 lines
8.7 KiB
PHP
Executable File

<?php
namespace app\index\controller;
use app\baidu\model\AdminSetting;
use app\farm\model\User;
use app\massage\model\CouponAtv;
use app\redbag\model\Invitation;
use app\restaurant\model\ClassDate;
use Exception;
use longbingcore\tools\LongbingDefault;
use think\App;
use think\facade\Db;
use think\Response;
use app\baidu\model\AdminActive;
class Login
{
// 小程序登陆每个用户产生的唯一表示
protected $code = '';
protected $uniacid;
protected $request;
protected $_param;
protected $_input;
function __construct(App $app)
{
global $_GPC, $_W;
$this->request = $app->request;
//获取param
$this->_param = $this->request->param();
$this->_input = json_decode($this->request->getInput(), true);
//获取uniacid
if (!isset($this->_param['i']) || !$this->_param['i']) {
return $this->error('need uniacid',400);
}
$this->uniacid = $this->_param['i'];
}
/**
* @author chenniang
* @DataTime: 2021-03-17 10:06
* @功能说明:小程序用户登陆接口
*/
function index()
{
$input = $this->_param;
if (!isset($this->_param['code']) || !$this->_param['code']) {
return $this->error(['code' => 400, 'error' => 'need code']);
}
$cap_id = !empty($input['cap_id'])?$input['cap_id']:0;
$code = $this->_param['code'];
// 是否是微擎
$config = longbingGetAppConfig($this->uniacid);
$appid = $config['appid'];
$appsecret = $config['appsecret'];
// 从微信获取openid等
$url = "https://api.weixin.qq.com/sns/jscode2session?appid={$appid}&secret={$appsecret}&js_code={$code}&grant_type=authorization_code";
$arrContextOptions = array(
"ssl"=>array(
"verify_peer" => false,
"verify_peer_name"=> false,
),
);
$info = file_get_contents($url ,false, stream_context_create($arrContextOptions));
$info = @json_decode($info, true);
// 微信端返回错误
if (isset($info['errcode'])) {
return $this->error($info['errcode'] . ', errmsg: ' . $info['errmsg']);
}
if (!isset($info['session_key'])) {
return $this->error('session_key not exists','402');
}
if(empty($info['openid'])){
return $this->error('openid not exists');
}
$user_model = new User();
$dis = [
'openid' => $info['openid'],
'uniacid' => $this->uniacid
];
$user_info = $user_model->dataInfo($dis);
if(empty($user_info)){
try {
$insert = [
'uniacid' => $this->uniacid,
'openid' => $info['openid'],
'cap_id' => $cap_id,
'session_key' => $info['session_key'],
];
if(!empty($input['pid'])){
$insert['pid'] = $input['pid'];
}
$user_model->dataAdd($insert);
}catch(Exception $e)
{}
// $user_id = $user_model->getLastInsID();
$user_info = $user_model->dataInfo($insert);
}else{
$user_model->dataUpdate(['id'=>$user_info['id']],['session_key'=>$info['session_key']]);
}
$key = 'longbing_user_autograph_' . $user_info['id'];
$key = md5($key);
setCache($key, $user_info, 7200, $this->uniacid);
$arr = [
'data' => $user_info,
'autograph' => $key
];
return $this->success($arr);
}
//返回成功
public function success($data, $code = 200)
{
$result['data'] = $data;
$result['code'] = $code;
$result['sign'] = null;
return $this->response($result, 'json', $code);
}
//返回错误数据
public function error($msg, $code = 400)
{
$result['error'] = $msg;
$result['code'] = $code;
return $this->response($result, 'json', $code);
}
//response
protected function response($data, $type = 'json', $code = 200)
{
return Response::create($data, $type)->code($code);
}
/**
* @author chenniang
* @DataTime: 2021-03-17 10:06
* @功能说明:微信登陆
*/
function appLogin()
{
$input = $this->_input;
$uniacid = $this->uniacid;
$input = $input['data'];
$cap_id = !empty($input['cap_id'])?$input['cap_id']:0;
$user_model = new User();
$dis = [
'unionid' => $input['unionId'],
];
$user_info = $user_model->dataInfo($dis);
$insert = [
'uniacid' => $uniacid,
'nickName' => $input['nickName'],
'avatarUrl'=> $input['avatarUrl'],
'unionid' => $input['unionId'],
'gender' => $input['gender'],
'city' => $input['city'],
'province' => $input['province'],
'country' => $input['country'],
'openid' => $input['openId'],
'app_openid' => $input['openId'],
'push_id' => !empty($input['push_id'])?$input['push_id']:'',
'cap_id' => $cap_id,
'last_login_type' => 1,
];
if(empty($user_info)){
if(!empty($input['pid'])){
$insert['pid'] = $input['pid'];
}
$user_model->dataAdd($insert);
$user_id = $user_model->getLastInsID();
}else{
$user_id = $user_info['id'];
$user_model->dataUpdate(['id'=>$user_id],$insert);
}
$user_info = $user_model->dataInfo(['id'=>$user_id]);
$key = 'longbing_user_autograph_' . $user_info['id'];
$key = md5($key);
setCache($key, $user_info, 7200, $this->uniacid);
$arr = [
'data' => $user_info,
'autograph' => $key
];
return $this->success($arr);
}
/**
* @author chenniang
* @DataTime: 2021-03-17 10:06
* @功能说明:ios登陆
*/
function iosLogin()
{
$input = $this->_input;
$uniacid = $this->uniacid;
$input = $input['data'];
$cap_id = !empty($input['cap_id'])?$input['cap_id']:0;
$user_model = new User();
$dis = [
'openid' => $input['openId'],
];
$user_info = $user_model->dataInfo($dis);
$familyName = !empty($input['fullName']['familyName'])?$input['fullName']['familyName']:'';
$giveName = !empty($input['fullName']['giveName'])?$input['fullName']['giveName']:'';
$name = !empty($familyName.$giveName)?$familyName.$giveName:'默认用户';
$insert = [
'uniacid' => $uniacid,
'nickName' => $name,
'avatarUrl'=> 'https://lbqny.migugu.com/admin/farm/default-user.png',
// 'unionid' => $input['unionId'],
//
// 'gender' => $input['gender'],
//
// 'city' => $input['city'],
//
// 'province' => $input['province'],
//
// 'country' => $input['country'],
'openid' => $input['openId'],
//'app_openid' => $input['openId'],
'push_id' => !empty($input['push_id'])?$input['push_id']:'',
'cap_id' => $cap_id,
'last_login_type' => 1,
];
if(empty($user_info)){
if(!empty($input['pid'])){
$insert['pid'] = $input['pid'];
}
$user_model->dataAdd($insert);
$user_id = $user_model->getLastInsID();
}else{
$user_id = $user_info['id'];
$user_model->dataUpdate(['id'=>$user_id],$insert);
}
$user_info = $user_model->dataInfo(['id'=>$user_id]);
$key = 'longbing_user_autograph_' . $user_info['id'];
$key = md5($key);
setCache($key, $user_info, 7200, $this->uniacid);
$arr = [
'data' => $user_info,
'autograph' => $key
];
return $this->success($arr);
}
/**
* @author chenniang
* @DataTime: 2022-08-10 18:30
* @功能说明:
*/
public function getConfig(){
$config = longbingGetAppConfig($this->uniacid);
$data['login_protocol'] = $config['login_protocol'];
$data['app_text'] = $config['app_text'];
$data['app_logo'] = $config['app_logo'];
$data['ios_login'] = $config['ios_login'];
$data['information_protection'] = $config['information_protection'];
$data['app_banner'] = $config['app_banner'];
return $this->success($data);
}
}