初始化项目:添加后端代码、ThinkPHP框架、前端资源
This commit is contained in:
@@ -0,0 +1,140 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\controller\app\pc;
|
||||
|
||||
use app\common\controller\Api;
|
||||
use app\common\library\Wechat;
|
||||
/**
|
||||
* 登录
|
||||
*/
|
||||
class Login extends Api
|
||||
{
|
||||
|
||||
protected $noNeedLogin = ['*'];
|
||||
// 无需鉴权的接口,*表示全部
|
||||
protected $noNeedRight = ['*'];
|
||||
|
||||
public function _initialize()
|
||||
{
|
||||
parent::_initialize();
|
||||
|
||||
$this->model = new \app\api\model\app\pc\Login();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取登录地址
|
||||
* @return void
|
||||
*/
|
||||
public function pcLoginPath(){
|
||||
|
||||
global $_W;
|
||||
if(\app\common\library\Platform::getSystemType() == 'single'){
|
||||
$apiUrl = $_W['siteroot'].'/index.php?i='.$_W['uniacid'].'&route=api/';
|
||||
}else{
|
||||
$apiUrl = $_W['siteroot'].'/app/index.php?i='.$_W['uniacid'].'&c=entry&m=tuzi_v1&do=index&route=api/';
|
||||
}
|
||||
|
||||
$ticket = $this->model->buildTicket();
|
||||
|
||||
$wxOfficialAccountConfig = \app\common\model\config\System::getConfig('wxOfficialAccount');
|
||||
|
||||
$path = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' .$wxOfficialAccountConfig['app_id']. '&redirect_uri='.urlencode($apiUrl).'app/pc/login/pcLoginCallback/ticket/'.$ticket.'&response_type=code&scope=snsapi_userinfo&state='.$apiUrl;
|
||||
|
||||
$this->success('获取成功', [
|
||||
'path'=>$path,
|
||||
'ticket'=>$ticket
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取登录状态
|
||||
* @return void
|
||||
*/
|
||||
public function pcLoginState(){
|
||||
$ticket = input('ticket','');
|
||||
|
||||
if(!$ticket){
|
||||
$this->error("ticket 错误");
|
||||
}
|
||||
|
||||
$ticketData = $this->model->getTicketState($ticket);
|
||||
|
||||
if(!$ticketData){
|
||||
$this->error("未查询到登录信息");
|
||||
}
|
||||
|
||||
$userinfo = $this->auth->getUserinfo($ticketData['user_id']);
|
||||
$userinfo['token'] = $ticketData['token'];
|
||||
|
||||
$this->success(__('登录成功'), $userinfo);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 登录回调
|
||||
* @return void
|
||||
*/
|
||||
public function pcLoginCallback(){
|
||||
$ticket = input('ticket','');
|
||||
|
||||
if(!$ticket){
|
||||
$this->error("ticket 错误");
|
||||
}
|
||||
|
||||
if(\app\common\library\Platform::getSystemType() == 'single'){
|
||||
$iconPath = MODULE_URL.'/';
|
||||
}else{
|
||||
$iconPath = MODULE_URL.'/public/';
|
||||
}
|
||||
|
||||
if(!$this->model->checkTicketCanUse($ticket)){
|
||||
return view('pc_login_callback',['type'=>'error','title'=>'登录失败','subtitle'=>'当前登录二维码已过期,请刷新登录二维码后重试']);
|
||||
}
|
||||
|
||||
$wechat = new Wechat('wxOfficialAccount');
|
||||
//解析来源页面
|
||||
try{
|
||||
$oauth = $wechat->oauth();
|
||||
$decryptData = $oauth->user()->getOriginal();
|
||||
$ret = (new \app\api\controller\user\Info())->oauthLoginOrRegister($decryptData, 'wxOfficialAccount', 'Wechat');
|
||||
}catch (\Exception $e){
|
||||
$this->model->destroyTicket($ticket);
|
||||
return view('pc_login_callback',['icon_path'=>$iconPath,'type'=>'error','title'=>'登录失败','subtitle'=>'获取验证信息错误,请刷新登录二维码后重试']);
|
||||
}
|
||||
|
||||
if (isset($ret) && $ret) {
|
||||
//登录页接参Token
|
||||
$this->model->successTicket($ticket,$ret->id,$ret->getToken());
|
||||
return view('pc_login_callback',['icon_path'=>$iconPath,'type'=>'success','title'=>'登录成功','subtitle'=>'请返回PC端继续操作']);
|
||||
}else{
|
||||
$this->model->destroyTicket($ticket);
|
||||
return view('pc_login_callback',['icon_path'=>$iconPath,'type'=>'error','title'=>'登录失败','subtitle'=>'获取用户信息失败,请刷新登录二维码后重试']);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取登录信息
|
||||
* @return void
|
||||
*/
|
||||
public function loginInfo(){
|
||||
//系统名称
|
||||
$systemConfig = \app\common\model\config\System::getConfig('system');
|
||||
|
||||
//是否可微信登录
|
||||
$wxOfficialAccountConfig = \app\common\model\config\System::getConfig('wxOfficialAccount');
|
||||
|
||||
$data = [
|
||||
'name'=>$systemConfig['name'],
|
||||
'can_wechat_login'=> $wxOfficialAccountConfig['app_id'] && $wxOfficialAccountConfig['wx_login'] == 'open' && $wxOfficialAccountConfig['secret'],
|
||||
'is_login'=>$this->auth->isLogin(),
|
||||
'mobile_login'=>'open'
|
||||
];
|
||||
|
||||
if(isset($systemConfig['mobile_login'])){
|
||||
$data['mobile_login'] = $systemConfig['mobile_login'];
|
||||
}
|
||||
|
||||
$this->success(__('获取成功'), $data);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,114 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\controller\app\pc;
|
||||
|
||||
use app\common\controller\Api;
|
||||
|
||||
/**
|
||||
* 推荐商品
|
||||
*/
|
||||
class Navigation extends Api
|
||||
{
|
||||
|
||||
protected $noNeedLogin = ['*'];
|
||||
// 无需鉴权的接口,*表示全部
|
||||
protected $noNeedRight = ['*'];
|
||||
|
||||
/**
|
||||
* 获取悬浮窗数据
|
||||
* @return void
|
||||
*/
|
||||
public function float(){
|
||||
$config = \app\common\model\app\Config::getConfig('pc_float');
|
||||
|
||||
$this->success('获取成功',$config);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取悬浮窗数据
|
||||
* @return void
|
||||
*/
|
||||
public function navigation(){
|
||||
$config = \app\common\model\app\Config::getConfig('pc_navigation');
|
||||
|
||||
$this->success('获取成功',$config);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取悬浮窗数据
|
||||
* @return void
|
||||
*/
|
||||
public function footer(){
|
||||
$data = \app\common\model\config\System::getConfig('system');
|
||||
|
||||
$config = \app\common\model\app\Config::getConfig('pc_footer');
|
||||
|
||||
$config['name'] = $data['name'];
|
||||
|
||||
$this->success('获取成功',$config);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取移动端页面
|
||||
* @return void
|
||||
*/
|
||||
public function mobilePath(){
|
||||
//判断当前开放的终端
|
||||
$type = input('type','index');
|
||||
$id = input('id',0);
|
||||
|
||||
$data = [
|
||||
'h5'=>false,
|
||||
'mini'=>false,
|
||||
'dy'=>false
|
||||
];
|
||||
|
||||
$path = [
|
||||
'course'=> 'pages/course/detail/detail',
|
||||
'page'=> 'pages/public/diy/diy',
|
||||
'group'=> 'pages/course/group/group',
|
||||
'activity_signin'=> 'pages/app/activity/sign/sign',
|
||||
'activity'=> 'pages/app/activity/detail/detail',
|
||||
'exercises'=> 'pages/app/exam/detail/detail',
|
||||
'physical'=> 'pages/app/physical/detail/detail',
|
||||
'evaluation'=> 'pages/app/exam/detail/detail',
|
||||
'vipcard'=> 'pages/app/vip/center/center',
|
||||
'index'=> 'pages/public/diy/diy'
|
||||
];
|
||||
|
||||
$wxOfficialAccountConfig = \app\common\model\config\System::getConfig('wxOfficialAccount');
|
||||
$H5Config = \app\common\model\config\System::getConfig('H5');
|
||||
$wxMiniProgramConfig = \app\common\model\config\System::getConfig('wxMiniProgram');
|
||||
$dyMiniProgramConfig = \app\common\model\config\System::getConfig('dyMiniProgram');
|
||||
|
||||
if(isset($path[$type])){
|
||||
global $_W;
|
||||
|
||||
if($wxOfficialAccountConfig['status'] == 'open' || $H5Config['status'] == 'open'){
|
||||
|
||||
$mobilePath = $_W['siteroot'].'?i='.$_W['uniacid'].'&route=index#';
|
||||
|
||||
$data['h5'] = $mobilePath."/".$path[$type]."?id=".$id;
|
||||
}
|
||||
|
||||
|
||||
if($wxMiniProgramConfig['status'] == 'open'){
|
||||
$wechatQrCode = \app\common\library\share\Qrsharecode::getMpCode($type,$id,'wechat');
|
||||
if($wechatQrCode){
|
||||
$data['mini'] = "data:image/png;base64,".$wechatQrCode;
|
||||
}
|
||||
}
|
||||
|
||||
// if($dyMiniProgramConfig['status'] == 'open'){
|
||||
// $dyQrCode = \app\common\library\share\Qrsharecode::getMpCode($type,$id,'douyin');
|
||||
// if($dyQrCode){
|
||||
// $data['dy'] = "data:image/png;base64,".$dyQrCode;
|
||||
// }
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
$this->success("获取成功",$data);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\controller\app\pc;
|
||||
|
||||
use app\common\controller\Api;
|
||||
/**
|
||||
* 页面
|
||||
*/
|
||||
class Page extends Api
|
||||
{
|
||||
|
||||
protected $noNeedLogin = ['*'];
|
||||
// 无需鉴权的接口,*表示全部
|
||||
protected $noNeedRight = ['*'];
|
||||
|
||||
public function _initialize()
|
||||
{
|
||||
parent::_initialize();
|
||||
|
||||
$this->model = new \app\api\model\app\pc\Page();
|
||||
}
|
||||
|
||||
public function index()
|
||||
{
|
||||
$id = input('page_id');
|
||||
|
||||
$data = $this->model->getPageData($id);
|
||||
if(!$data){
|
||||
$this->error("未获取到页面信息");
|
||||
}
|
||||
|
||||
$this->success("获取成功",$data);
|
||||
}
|
||||
|
||||
public function meta(){
|
||||
$id = input('id');
|
||||
$type = input('type');
|
||||
$data = (new \app\api\model\app\pc\Seo())->getMeta($type,$id);
|
||||
$this->success("获取成功",$data);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user