| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215 |
- <?php
- /**
- * Created by PhpStorm.
- * Author: 芸众商城 www.yunzshop.com
- * Date: 19/11/4
- * Time: 上午11:20
- */
- namespace app\frontend\modules\member\services;
- use app\common\exceptions\AppException;
- use app\common\helpers\Client;
- use app\common\models\MemberGroup;
- use app\common\services\Session;
- use app\frontend\modules\member\models\MemberDouyinModel;
- use app\frontend\modules\member\models\MemberMiniAppModel;
- use app\frontend\modules\member\models\MemberUniqueModel;
- use app\frontend\modules\member\models\McMappingFansModel;
- use app\frontend\modules\member\models\SubMemberModel;
- class MemberDouyinService extends MemberService
- {
- const LOGIN_TYPE = 11; //小程序
- public function __construct()
- {
- }
- public function login()
- {
- $uniacid = \YunShop::app()->uniacid;
- $min_set = \Setting::get('plugin.toutiao-mini');
- if (is_null($min_set) || 0 == $min_set['switch']) {
- return show_json(0,'未开启头条小程序');
- }
- $para = request()->all();
- $data = array(
- 'appid' => $min_set['key'],
- 'secret' => $min_set['secret'],
- 'code' => $para['code'],
- );
- $url = 'https://developer.toutiao.com/api/apps/jscode2session';
- $user_info = \Curl::to($url)
- ->withData($data)
- ->asJsonResponse(true)
- ->get();
-
- //$data = ''; //json
- if (!empty($para['info'])) {
- $json_user = json_decode($para['info'], true);
- $json_user = $json_user['userInfo'];
- }
- $json_user['openid'] = $user_info['openid'];
- $json_user['nickname'] = $json_user['nickName'];
- $json_user['headimgurl'] = $json_user['avatarUrl'];
- $json_user['sex'] = $json_user['gender'];
- //Login
- $member_id = $this->memberLogin($json_user);
- Session::set('member_id', $member_id);
- $random = $this->douyin_session($user_info);
- $result = array('session' => $random, 'dy_token' =>session_id(), 'uid' => $member_id);
- return show_json(1, $result, $result);
- }
- /**
- * 小程序登录态
- *
- * @param $user_info
- * @return string
- */
- function douyin_session($user_info)
- {
- if (empty($user_info['session_key']) || empty($user_info['openid'])) {
- return show_json(0,'用户信息有误');
- }
- $random = md5(uniqid(mt_rand()));
- $_SESSION['douyin'] = array($random => iserializer(array('session_key'=>$user_info['session_key'], 'openid'=>$user_info['openid'])));
- return $random;
- }
- public function createDouyinMember($json_user, $arg)
- {
- $user_info = MemberDouyinModel::getUserInfo($json_user['openid']);
- if (!empty($user_info)) {
- MemberDouyinModel::updateUserInfo($json_user['openid'],array(
- 'nickname' => $json_user['nickname'],
- 'avatar' => $json_user['headimgurl'],
- 'gender' => $json_user['sex'],
- ));
- } else {
- MemberDouyinModel::insertData(array(
- 'uniacid' => $arg['uniacid'],
- 'member_id' => $arg['member_id'],
- 'openid' => $json_user['openid'],
- 'nickname' => $json_user['nickname'],
- 'avatar' => $json_user['headimgurl'],
- 'gender' => $json_user['sex'],
- ));
- }
- }
- /**
- * 公众号开放平台授权登陆
- *
- * @param $uniacid
- * @param $userinfo
- * @return array|int|mixed
- */
- public function unionidLogin($uniacid, $userinfo, $upperMemberId = NULL)
- {
- $member_id = parent::unionidLogin($uniacid, $userinfo, $upperMemberId = NULL, self::LOGIN_TYPE);
- return $member_id;
- }
- public function updateMemberInfo($member_id, $userinfo)
- {
- parent::updateMemberInfo($member_id, $userinfo);
- $record = array(
- 'openid' => $userinfo['openid'],
- 'nickname' => stripslashes($userinfo['nickname'])
- );
- MemberDouyinModel::updateData($member_id, $record);
- }
- public function addMemberInfo($uniacid, $userinfo)
- {
- $uid = parent::addMemberInfo($uniacid, $userinfo);
- //$this->addMcMemberFans($uid, $uniacid, $userinfo);
- $this->addFansMember($uid, $uniacid, $userinfo);
- return $uid;
- }
- public function addMcMemberFans($uid, $uniacid, $userinfo)
- {
- McMappingFansModel::insertData($userinfo, array(
- 'uid' => $uid,
- 'acid' => $uniacid,
- 'uniacid' => $uniacid,
- 'salt' => Client::random(8),
- ));
- }
- public function addFansMember($uid, $uniacid, $userinfo)
- {
- MemberDouyinModel::insertData(array(
- 'uniacid' => $uniacid,
- 'member_id' => $uid,
- 'openid' => $userinfo['openid'],
- 'nickname' => $userinfo['nickname'],
- 'avatar' => $userinfo['headimgurl'],
- 'gender' => $userinfo['sex'],
- ));
- }
- public function getFansModel($openid)
- {
- $model = MemberDouyinModel::getUId($openid);
- if (!is_null($model)) {
- $model->uid = $model->member_id;
- }
- return $model;
- }
- /**
- * 会员关联表操作
- *
- * @param $uniacid
- * @param $member_id
- * @param $unionid
- */
- public function addMemberUnionid($uniacid, $member_id, $unionid)
- {
- MemberUniqueModel::insertData(array(
- 'uniacid' => $uniacid,
- 'unionid' => $unionid,
- 'member_id' => $member_id,
- 'type' => self::LOGIN_TYPE
- ));
- }
- /**
- * 验证登录状态
- *
- * @return bool
- */
- public function checkLogged($login = null)
- {
- return MemberService::isLogged();
- }
- }
|