123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256 |
- <?php
- /**
- * OauthController.php UTF-8
- * 第三方用户登录
- *
- * @date : 2018/8/9 14:02
- *
- * @license 这不是一个自由软件,未经授权不许任何使用和传播。
- * @author : wuyonghong <wyh@huosdk.com>
- * @version : Huosdk 8.0
- */
- namespace box\api\controller;
- use ban\Ban;
- use box\common\controller\V2ApiBaseController;
- use huo\controller\agent\AgentCache;
- use huo\controller\common\HuoCookie;
- use huo\controller\game\GameCache;
- use huo\controller\integral\MemIa;
- use huo\controller\member\Member;
- use huo\model\finance\SettleModel;
- use huo\model\integral\MemItgLogModel;
- use huo\model\member\MemoauthModel;
- use huo\model\user\UserModel;
- use huolib\constant\AgentConst;
- use huolib\constant\CommonConst;
- use huolib\constant\IaConst;
- use huolib\constant\MpConfConst;
- use huolib\constant\OauthConst;
- use huolib\status\CommonStatus;
- use huolib\status\MemberStatus;
- use huomp\controller\member\MemberOut;
- use huomp\controller\member\OauthOut;
- use huomp\logic\member\HomepageLogic;
- use huomp\model\game\GameMiniModel;
- use think\Log;
- use wxapp\aes\ErrorCode;
- use wxapp\aes\WXBizDataCrypt;
- class OauthController extends V2ApiBaseController {
- function _initialize() {
- parent::_initialize();
- Log::write(
- $this->request->scheme().'://'.$this->request->server('HTTP_HOST').$this->request->server('REQUEST_URI').'?'
- .$this->request->getContent(),
- Log::LOG
- );
- }
- /**
- * http://doc.1tsdk.com/159?page_id=4389
- * 小程序登陆
- * 【域名】/mp/wx/login
- *
- * @return mixed
- */
- public function callbackWeixin() {
- $_code = get_val($this->rq_data, 'code');
- $_state = get_val($this->rq_data, 'state');
- $_game_rq = $this->setGameData();
- $_channel_rq = $this->setChannelData();
- $_device_rq = $this->setDeviceData();
- $_mem_rq = $this->setMemData();
- $_rs = (new OauthOut())->oauthLogin(
- $_code, $_state, $_game_rq, $_channel_rq, $_device_rq, $_mem_rq
- );
- if (MemberStatus::NO_ERROR != $_rs['code']) {
- $this->error($_rs['msg'], [], $_rs['code']);
- }
- $_mem_data = $_rs['data'];
- $_mem_id = $_mem_data['mem_id'];
- if (empty($_mem_id)) {
- $_error_code = CommonStatus::INNER_ERROR;
- $this->error(CommonStatus::getMsg($_error_code), [], $_error_code);
- }
- $_is_ban = (new Ban())->checkMemEnv($_mem_id, $_device_rq->getIp());
- if ($_is_ban != CommonStatus::NO_ERROR) {
- $_error_code = MemberStatus::MEM_ACCOUNT_ANOMALY;
- $this->error($_is_ban, [], $_error_code);
- }
- //返回数据
- $_token = HuoCookie::getMemToken();
- $_data = [
- 'user_token' => $_token,
- 'get_novice_award' => CommonConst::CONST_TRUE,
- 'get_favorite_award' => CommonConst::CONST_TRUE
- ];
- $_isReg = isset($_mem_data['is_reg']) ? $_mem_data['is_reg'] : 0;
- if (!empty($_isReg)) {
- /* 是否领取了新手奖励 1否 2是 */
- $_mil_model = new MemItgLogModel();
- $_cnt = $_mil_model->getSubCnt($this->mem_id, IaConst::IA_OPEN_GAME);
- if ($_cnt == CommonConst::CONST_ZERO) {
- $_data['get_novice_award'] = CommonConst::CONST_FALSE;
- }
- /* 是否领取了收藏奖励 1否 2是 */
- $_cnt = $_mil_model->getSubCnt($this->mem_id, IaConst::IA_FAVORITE, $_game_rq->getHAppId());
- if ($_cnt == CommonConst::CONST_ZERO) {
- $_data['get_favorite_award'] = CommonConst::CONST_FALSE;
- }
- }
- $_homepage_logic = new HomepageLogic();
- $_data['auth'] = $_homepage_logic->getAuthSet($_game_rq->getAppVer());
- //生成玩家主页
- $_homepage_logic->getHomepage($_mem_id);
- $_rdata = (new MemberOut())->getBoxMemInfo($_mem_id, $_game_rq->getHAppId(), $_data);
- return $this->returnData($_rdata);
- }
- /**
- * http://doc.1tsdk.com/159?page_id=4390
- * 小程序上传用户信息
- * 【域名】/mp/wx/updateinfo
- */
- public function upMemInfo() {
- $this->checkLogin();
- $_game_rq = $this->setGameData();
- $_mem_id = $this->mem_id;
- $_type = OauthConst::OAUTH_MP;
- /* 加解密数据 */
- $_encrypted_data = $this->request->param('encrypted_data/s', '');
- $_iv = $this->request->param('iv/s', '');
- $_wx_id = (new GameMiniModel())->getMpIdByAppId($_game_rq->getHAppId());
- $_oauth_data = (new MemoauthModel())->getInfoByAppMemId($_game_rq->getHAppId(), $this->mem_id);
- if (empty($_oauth_data) || empty($_oauth_data['access_token'])) {
- Log::write(
- "func=".__FUNCTION__."&class=".__CLASS__."&mem_id=".$this->mem_id."&wx_id=".$_wx_id."&oauth_data="
- .json_encode($_oauth_data)
- ."¶m="
- .$this->request->getContent(),
- LOG::ERROR
- );
- $_error_code = CommonStatus::INVALID_PARAMS;
- $this->error(CommonStatus::getMsg($_error_code), [], $_error_code);
- }
- $_session_key = $_oauth_data['access_token'];
- $_pc = new WXBizDataCrypt($_wx_id, $_session_key);
- $_err_code = $_pc->decryptData($_encrypted_data, $_iv, $_wx_data);
- if (ErrorCode::$OK != $_err_code) {
- Log::write(
- "func=".__FUNCTION__."&class=".__CLASS__."&err_code=".$_err_code,
- LOG::ERROR
- );
- $_error_code = CommonStatus::INVALID_PARAMS;
- $this->error(CommonStatus::getMsg($_error_code), [], $_error_code);
- }
- $_wx_data = json_decode($_wx_data, true);
- $_rdata = (new MemberOut())->upMemInfo($_mem_id, $_oauth_data['openid'], $_wx_data, $_type, $this->device_type);
- if (MemberStatus::NO_ERROR != $_rdata['code']) {
- $this->returnData($_rdata);
- }
- $_mem_data = $_rdata['data'];
- $this->mem_id = $_mem_data['mem_id'];
- $_data['user_token'] = (new Member())->updateToken($this->mem_id, $this->device_type);
- //发放收益
- $_ext = [
- 'app_id' => $_game_rq->getHAppId(),
- 'game_id' => $_game_rq->getHAppId()
- ];
- $_mil_model = new MemItgLogModel();
- $_data['is_old_member'] = CommonConst::CONST_TRUE;
- $_cnt = $_mil_model->getSubCnt($this->mem_id, IaConst::IA_OPEN_GAME);
- if ($_cnt == CommonConst::CONST_ZERO) {
- $_data['is_old_member'] = CommonConst::CONST_FALSE;
- }
- (new MemIa($this->mem_id))->doItgAct(IaConst::IA_OPEN_GAME, $_ext);
- $_data['get_novice_award'] = CommonConst::CONST_TRUE;
- $_data['get_favorite_award'] = CommonConst::CONST_TRUE;
- /* 是否领取了新手奖励 1否 2是 */
- $_game_rq = $this->setGameData();
- $_cnt = $_mil_model->getSubCnt($this->mem_id, IaConst::IA_OPEN_GAME);
- if ($_cnt == CommonConst::CONST_ZERO) {
- $_data['get_novice_award'] = CommonConst::CONST_FALSE;
- }
- /* 是否领取了收藏奖励 1否 2是 */
- $_cnt = $_mil_model->getSubCnt($this->mem_id, IaConst::IA_FAVORITE, $_game_rq->getHAppId());
- if ($_cnt == CommonConst::CONST_ZERO) {
- $_data['get_favorite_award'] = CommonConst::CONST_FALSE;
- }
- $_homepage_logic = new HomepageLogic();
- $_data['auth'] = $_homepage_logic->getAuthSet($_game_rq->getAppVer());
- $_rdata = (new MemberOut())->getBoxMemInfo($_mem_id, $_game_rq->getHAppId(), $_data);
- $this->returnData($_rdata);
- }
- /**
- * http://doc.1tsdk.com/159?page_id=4391
- * 小程序获取用户信息
- * 【域名】/mp/wx/getuserinfo
- */
- public function getMemInfo() {
- $this->checkLogin();
- $_mem_id = $this->mem_id;
- $_device_rq = $this->setDeviceData();
- $_is_ban = (new Ban())->checkMemEnv($this->mem_id, $_device_rq->getIp());
- if ($_is_ban != CommonStatus::NO_ERROR) {
- $_rdata['code'] = MemberStatus::MEM_ACCOUNT_ANOMALY;
- $_rdata['msg'] = $_is_ban;
- $_rdata['data'] = [];
- $this->returnData($_rdata);
- exit;
- }
- $_agent_id = (new UserModel())->getIdByMemId($_mem_id);
- $_agent_info = (new AgentCache())->getInfoByAgentId($_agent_id);
- if (empty($_agent_info) && $_agent_info['role_id'] != AgentConst::AGENT_ROLE_MP_MEMBER) {
- $_error_code = CommonStatus::INVALID_PARAMS;
- $this->error(CommonStatus::getMsg($_error_code), [], $_error_code);
- }
- $_data['get_novice_award'] = CommonConst::CONST_TRUE;
- $_data['get_favorite_award'] = CommonConst::CONST_TRUE;
- /* 是否领取了新手奖励 1否 2是 */
- $_game_rq = $this->setGameData();
- $_mil_model = new MemItgLogModel();
- $_cnt = $_mil_model->getSubCnt($this->mem_id, IaConst::IA_OPEN_GAME);
- if ($_cnt == CommonConst::CONST_ZERO) {
- $_data['get_novice_award'] = CommonConst::CONST_FALSE;
- }
- /* 是否领取了收藏奖励 1否 2是 */
- $_cnt = $_mil_model->getSubCnt($this->mem_id, IaConst::IA_FAVORITE, $_game_rq->getHAppId());
- if ($_cnt == CommonConst::CONST_ZERO) {
- $_data['get_favorite_award'] = CommonConst::CONST_FALSE;
- }
- /* 是否提现过 */
- $_data['red_msg'] = MpConfConst::MP_RED_MSG_ITG;
- $_settle_cnt = (new SettleModel())->getCnt($_agent_id);
- if (CommonConst::CONST_ZERO >= $_settle_cnt) {
- $_data['red_msg'] = MpConfConst::MP_RED_MSG_RP;
- }
- $_mem_out_model = new MemberOut();
- /* 显示红包显示为文字 或数字 */
- $_data['rp_type'] = $_mem_out_model->getHomeRp();
- $_homepage_logic = new HomepageLogic();
- $_data['auth'] = $_homepage_logic->getAuthSet($_game_rq->getAppVer());
- $_data['open_game_set'] = $_mem_out_model->getOpenGameSet();
- $_rdata = $_mem_out_model->getBoxMemInfo($_mem_id, $_game_rq->getHAppId(), $_data);
- $this->returnData($_rdata);
- }
- /**
- * http://doc.1tsdk.com/159?page_id=4653
- * 红包上展示的小程序信息915
- * 【域名】/mp/red/info
- */
- public function getRedInfo() {
- $_game_rq = $this->setGameData();
- $_game_data = GameCache::ins()->getInfoByAppId($_game_rq->getHAppId());
- $_rdata = [
- 'icon' => cmf_get_image_url($_game_data['icon']),
- 'name' => $_game_data['name'],
- ];
- $_code = CommonStatus::NO_ERROR;
- $this->success(CommonStatus::getMsg($_code), $_rdata, $_code);
- }
- }
|