123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323 |
- <?php
- /**
- * 登陆类
- * Created by PhpStorm.
- * User: phperstar
- * Date: 2019/10/26
- * Time: 2:36 PM
- */
- namespace JinDouYun\Controller\Common;
- use Mall\Framework\Core\ErrorCode;
- use Mall\Framework\Core\StatusCode;
- use Mall\Framework\Factory;
- use JinDouYun\Controller\BaseController;
- use jinDouYun\Cache\SystemCache;
- use Util\WeiXin\Miniprogram;
- use Util\WeiXin\Offiaccount;
- use Util\ByteDance\Microapp;
- class Login extends BaseController
- {
- public function __construct($isCheckAcl = false, $isMustLogin = false, $checkToken = true)
- {
- parent::__construct($isCheckAcl, $isMustLogin, $checkToken);
- }
- /**
- * 微信小程序登陆接口
- */
- public function login()
- {
- $code = $this->request->param('code');
- if( empty($code) ){
- $this->sendOutput('code参数错误',ErrorCode::$paramError);
- }
- /*
- $miniprogramConfigData = Factory::config()->getAppoint('weixin','miniprogram');
- if(empty($miniprogramConfigData)){
- $this->sendOutput('小程序配置项错误',ErrorCode::$configEroor);
- }*/
- // 获取当前登录企业的小程序配置
- $objSystemCache = new SystemCache();
- $miniprogramSetting = $objSystemCache->getAppIdByEnterpriseId($this->onlineEnterpriseId);
-
- if( empty($miniprogramSetting) ){
- parent::sendOutput('后台小程序配置项为空', ErrorCode::$configEroor);
- }
- $miniprogramSetting = json_decode($miniprogramSetting,true);
- $objMiniprogram = new Miniprogram($miniprogramSetting['appid'], $miniprogramSetting['APPscrect']);
- $result = $objMiniprogram->jscode2session($code);
- if ($result->isSuccess()) {
- parent::sendOutput($result->getData());
- } else {
- parent::sendOutput($result->getData(), $result->getErrorCode());
- }
- }
- /**
- * 字节跳动小程序登陆接口
- */
- public function microappLogin()
- {
- $code = $this->request->param('code');
- if( empty($code) ){
- $this->sendOutput('参数错误',ErrorCode::$paramError);
- }
- $miniprogramConfigData = Factory::config()->getAppoint('byteDance','microapp');
- if(empty($miniprogramConfigData)){
- $this->sendOutput('小程序配置项错误',ErrorCode::$configEroor);
- }
- $objMicroapp = new Microapp($miniprogramConfigData['appid'], $miniprogramConfigData['appSecret']);
- $result = $objMicroapp->code2session($code);
- if ($result->isSuccess()) {
- parent::sendOutput($result->getData());
- } else {
- parent::sendOutput($result->getData(), $result->getErrorCode());
- }
- }
- /**
- * 生成字节调动小程序二维码
- */
- public function byteCreateQRCode()
- {
- $paramsData = $this->request->getRawJson();
- $params = [
- 'path' => isset($paramsData['path']) ? $paramsData['path'] : '',
- 'appname' => isset($paramsData['appname']) ? $paramsData['appname'] : '', // toutiao 今日头条 douyin 都应
- ];
- foreach ($params as $key => $value) {
- if (empty($value)) {
- $this->sendOutput($key . '参数错误', ErrorCode::$paramError);
- }
- }
- $miniprogramConfigData = Factory::config()->getAppoint('byteDance','microapp');
- if(empty($miniprogramConfigData)){
- $this->sendOutput('小程序配置项错误',ErrorCode::$configEroor);
- }
- $objMicroapp = new Microapp($miniprogramConfigData['appid'], $miniprogramConfigData['appSecret']);
- $result = $objMicroapp->token();
- if (!$result->isSuccess()) {
- parent::sendOutput($result->getData(), $result->getErrorCode());
- }
- $access_token = $result->getData();
- $result = $objMicroapp->createQRCode($access_token, $params['path']);
- if ($result->isSuccess()) {
- parent::sendOutput($result->getData());
- } else {
- parent::sendOutput($result->getData(), $result->getErrorCode());
- }
- }
- /**
- * 生成微信小程序二维码
- */
- public function createwxaqrcode()
- {
- $paramsData = $this->request->getRawJson();
- $params = [
- 'path' => isset($paramsData['path']) ? $paramsData['path'] : '',
- 'params' => isset($paramsData['params']) ? $paramsData['params'] : 0,
- ];
- foreach ($params as $key => $value) {
- if (empty($value)) {
- $this->sendOutput($key . '参数错误', ErrorCode::$paramError);
- }
- }
- /*
- $miniprogramConfigData = Factory::config()->getAppoint('weixin','miniprogram');
- if(empty($miniprogramConfigData)){
- $this->sendOutput('小程序配置项错误',ErrorCode::$configEroor);
- }
- $objOffiaccount = new Offiaccount($miniprogramConfigData['appid'], $miniprogramConfigData['appSecret']);*/
- // 获取当前登录企业的小程序配置
- $objSystemCache = new SystemCache();
- $miniprogramSetting = $objSystemCache->getAppIdByEnterpriseId($this->onlineEnterpriseId);
- if( empty($miniprogramSetting) ){
- parent::sendOutput('后台小程序配置项为空', ErrorCode::$configEroor);
- }
- $miniprogramSetting = json_decode($miniprogramSetting,true);
- $objOffiaccount = new Offiaccount($miniprogramSetting['appid'], $miniprogramSetting['APPscrect']);
- $result = $objOffiaccount->token();
- if (!$result->isSuccess()) {
- parent::sendOutput($result->getData(), $result->getErrorCode());
- }
- $access_token = $result->getData();
- $objMiniprogram = new Miniprogram($miniprogramSetting['appid'], $miniprogramSetting['APPscrect']);
- $result = $objMiniprogram->getwxacodeunlimit($access_token, $params);
- if ($result->isSuccess()) {
-
- $url = MP_FILE_URL.$result->getData();
- parent::sendOutput($url);
- } else {
- parent::sendOutput($result->getData(), $result->getErrorCode());
- }
- }
- /**
- * 获取基础access_token接口
- */
- public function token()
- {
- $offiaccountConfigData = Factory::config()->getAppoint('weixin','offiaccount');
- if(empty($offiaccountConfigData)){
- $this->sendOutput('公众号配置项错误',ErrorCode::$configEroor);
- }
- $objOffiaccount = new Offiaccount($offiaccountConfigData['appid'], $offiaccountConfigData['appSecret']);
- $result = $objOffiaccount->token();
- if ($result->isSuccess()) {
- parent::sendOutput($result->getData());
- } else {
- parent::sendOutput($result->getData(), $result->getErrorCode());
- }
- }
- /**
- * 获取网页access_token
- */
- public function access_token()
- {
- $code = $this->request->param('code');
- if( empty($code) ){
- $this->sendOutput('参数错误',ErrorCode::$paramError);
- }
- $offiaccountConfigData = Factory::config()->getAppoint('weixin','offiaccount');
- if(empty($offiaccountConfigData)){
- $this->sendOutput('公众号配置项错误',ErrorCode::$configEroor);
- }
- $objOffiaccount = new Offiaccount($offiaccountConfigData['appid'], $offiaccountConfigData['appSecret']);
- $result = $objOffiaccount->access_token($code);
- if ($result->isSuccess()) {
- parent::sendOutput($result->getData());
- } else {
- parent::sendOutput($result->getData(), $result->getErrorCode());
- }
- }
- /**
- * app微信授权获取个人信息
- */
- public function userinfo()
- {
- $params = $this->request->getRawJson();
- $params = [
- 'openid' => $params['openid'],
- 'access_token' => $params['access_token'],
- 'source' => getArrayItem($params, 'source', StatusCode::$source['miniProgram']),
- ];
- foreach($params as $key => $value){
- if(empty($value) && $value !== 0){
- $this->sendOutput($key.'参数错误', ErrorCode::$paramError );
- }
- }
- if($params['source'] == StatusCode::$source['weiXinBrowser']){
- $offiaccountConfigData = Factory::config()->getAppoint('weixin','offiaccount');
- if(empty($offiaccountConfigData)){
- $this->sendOutput('公众号配置项错误',ErrorCode::$configEroor);
- }
- $objOffiaccount = new Offiaccount($offiaccountConfigData['appid'], $offiaccountConfigData['appSecret']);
- $result = $objOffiaccount->userinfo($params['access_token'], $params['openid']);
- }else{
- $objSystemCache = new SystemCache();
- $miniprogramSetting = $objSystemCache->getAppIdByEnterpriseId($this->onlineEnterpriseId);
- if( empty($miniprogramSetting) ){
- parent::sendOutput('后台小程序配置项为空', ErrorCode::$configEroor);
- }
- $miniprogramSetting = json_decode($miniprogramSetting,true);
- $objOffiaccount = new Offiaccount($miniprogramSetting['appid'], $miniprogramSetting['APPscrect']);
- $result = $objOffiaccount->userinfo($params['access_token'], $params['openid']);
- }
- if (!$result->isSuccess()) {
- parent::sendOutput($result->getData(), $result->getErrorCode());
- }
- $userinfo = $result->getData();
- parent::sendOutput($userinfo);
- }
- /**
- * js-sdk授权接口
- */
- public function getJsSdkConfig()
- {
- $offiaccountConfigData = Factory::config()->getAppoint('weixin','offiaccount');
- if(empty($offiaccountConfigData)){
- $this->sendOutput('公众号配置项错误',ErrorCode::$configEroor);
- }
- $objOffiaccount = new Offiaccount($offiaccountConfigData['appid'], $offiaccountConfigData['appSecret']);
- $result = $objOffiaccount->getJsSdkConfig();
- if ($result->isSuccess()) {
- parent::sendOutput($result->getData());
- } else {
- parent::sendOutput($result->getData(), $result->getErrorCode());
- }
- }
- /**
- * 解密数据
- */
- public function decryptData()
- {
- $params = $this->request->getRawJson();
- $params = [
- 'openid' => isset($params['openid']) ? $params['openid'] : '',
- 'iv' => isset($params['iv']) ? $params['iv'] : '',
- 'encryptedData' => isset($params['encryptedData']) ? $params['encryptedData'] : '',
- ];
- foreach($params as $key => $value){
- if(empty($value) && $value !== 0){
- $this->sendOutput($key.'参数错误', ErrorCode::$paramError );
- }
- }
- /*
- $miniprogramConfigData = Factory::config()->getAppoint('weixin','miniprogram');
- if(empty($miniprogramConfigData)){
- $this->sendOutput('小程序配置项错误',ErrorCode::$configEroor);
- }*/
- // 获取当前登录企业的小程序配置
- $objSystemCache = new SystemCache();
- $miniprogramSetting = $objSystemCache->getAppIdByEnterpriseId($this->onlineEnterpriseId);
- if( empty($miniprogramSetting) ){
- parent::sendOutput('后台小程序配置项为空', ErrorCode::$configEroor);
- }
- $miniprogramSetting = json_decode($miniprogramSetting,true);
- $objMiniprogram = new Miniprogram($miniprogramSetting['appid'], $miniprogramSetting['APPscrect']);
- $result = $objMiniprogram->decryptData($params['iv'], $params['encryptedData'], $params['openid']);
- if ($result->isSuccess()) {
- parent::sendOutput($result->getData());
- } else {
- parent::sendOutput($result->getData(), $result->getErrorCode());
- }
- }
- }
|