| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280 |
- <?php
- /**
- * Created by PhpStorm.
- * User: dingran
- * Date: 2019/7/9
- * Time: 上午11:03
- */
- namespace app\frontend\modules\member\services;
- use app\common\exceptions\AppException;
- use app\common\facades\Setting;
- use app\common\helpers\Client;
- use app\common\models\AccountWechats;
- use app\common\models\Store;
- use app\common\services\api\WechatApi;
- use app\frontend\models\Member;
- use app\frontend\models\MemberShopInfo;
- use app\frontend\modules\member\models\McMappingFansModel;
- use app\frontend\modules\member\models\MemberModel;
- use app\frontend\modules\member\models\MemberUniqueModel;
- use app\frontend\modules\member\models\SubMemberModel;
- class MemberNativeAppService extends MemberService
- {
- public function login()
- {
- $mobile = \YunShop::request()->mobile;
- $password = \YunShop::request()->password;
- $uniacid = \YunShop::app()->uniacid;
- if (\Request::isMethod('post')
- && MemberService::validate($mobile, $password)) {
- $has_mobile = MemberModel::checkMobile($uniacid, $mobile);
- if (!empty($has_mobile)) {
- $password = md5($password . $has_mobile->salt);
- $member_info = MemberModel::getUserInfo($uniacid, $mobile, $password)->first();
- } else {
- return show_json(7, '用户不存在');
- }
- if (!empty($member_info)) {
- $member_info = $member_info->toArray();
- $yz_member = MemberShopInfo::getMemberShopInfo($member_info['uid']);
- if (!empty($yz_member)) {
- $store_member = Store::uniacid()->where('uid', $yz_member->member_id)->first();
- if (!$store_member) {
- return show_json(-1,"您不是店长");
- }
- $data = [
- 'store_id' => $store_member->id,
- 'audio_open' => $store_member->audio_open,
- 'store_name' => $store_member->store_name,
- 'goods_id' => $store_member->cashier_id,
- 'shop_name' => \Setting::get('shop.shop.name') ?: '未设置商城名称',
- ];
- //生成分销关系链
- Member::createRealtion($member_info['uid']);
- if (!$yz_member->access_token_2) {
- $data['token'] = Client::create_token('yz');
- $yz_member->access_token_2 = $data['token'];
- $yz_member->save();
- }
- $data['token'] = $yz_member->access_token_2;
- } else {
- return show_json(7, '用户不存在');
- }
- return show_json(1, '', $data);
- }
- {
- return show_json(6, '手机号或密码错误');
- }
- } else {
- return show_json(6, '手机号或密码错误');
- }
- }
- /**
- * 验证登录状态
- *
- * @return bool
- */
- public function checkLogged($login = null)
- {
- $token = \Yunshop::request()->yz_token;
- if (empty($token)) {
- return false;
- }
- $member = SubMemberModel::getMemberByNativeToken($token);
- \Log::debug('---------native checkLogged--------', [$token, $member->member_id]);
- if (!is_null($member)) {
- return true;
- } else {
- return false;
- }
- }
- /**
- * @param $token
- * @return int
- * @throws AppException
- */
- public function getMemberId($token)
- {
- if (!$token) {
- return 0;
- }
- $member = SubMemberModel::getMemberByNativeToken($token);
- if (is_null($member)) {
- throw new AppException('token_invalid');
- }
- return $member->member_id;
- }
- public function PostRegister($openid, $mid)
- {
- $account = AccountWechats::getAccountByUniacid(\YunShop::app()->uniacid);
- $userInfo = $this->getUserInfo($account->key, $account->secret, $openid);
- $member_id = $this->memberLogin($userInfo, $mid);
- return $member_id;
- }
- public function getUserInfo($appId, $appSecret, $openid)
- {
- $share = Setting::get('shop.share');
- $user_info = [];
- if (is_null($share) || $share['follow'] == 1 || ($share && is_null($share['follow']))) {
- $global_access_token_url = app(WechatApi::class)->_getAccessToken($appId, $appSecret);
- $global_token = \Curl::to($global_access_token_url)
- ->asJsonResponse(true)
- ->get();
- $global_userinfo_url = app(WechatApi::class)->_getInfo($global_token['access_token'], $openid);
- $user_info = \Curl::to($global_userinfo_url)
- ->asJsonResponse(true)
- ->get();
- }
- return $user_info;
- }
- /**
- * 公众号开放平台授权登陆
- *
- * @param $uniacid
- * @param $userinfo
- * @return array|int|mixed
- */
- public function unionidLogin($uniacid, $userinfo, $upperMemberId = null)
- {
- $member_id = parent::unionidLogin($uniacid, $userinfo, $upperMemberId, 1);
- return $member_id;
- }
- public function updateMemberInfo($member_id, $userinfo)
- {
- parent::updateMemberInfo($member_id, $userinfo);
- \Log::debug('----update_mapping_fans----', $member_id);
- $record = array(
- //'openid' => $userinfo['openid'],
- 'nickname' => stripslashes($userinfo['nickname']),
- 'follow' => $userinfo['subscribe'] ?: 0,
- 'tag' => base64_encode(serialize($userinfo))
- );
- McMappingFansModel::updateData($member_id, $record);
- }
- public function addMemberInfo($uniacid, $userinfo)
- {
- $uid = parent::addMemberInfo($uniacid, $userinfo);
- \Log::debug('----mapping_fans----', $uid);
- //添加mapping_fans表
- $this->addFansMember($uid, $uniacid, $userinfo);
- return $uid;
- }
- public function addFansMember($uid, $uniacid, $userinfo)
- {
- McMappingFansModel::insertData($userinfo, array(
- 'uid' => $uid,
- 'acid' => $uniacid,
- 'uniacid' => $uniacid,
- 'salt' => Client::random(8),
- ));
- }
- /**
- * app扫用户二维码注册为公众号会员
- *
- * @param $openid
- *
- * @return mixed
- */
- public function getFansModel($openid)
- {
- return McMappingFansModel::getFansData($openid);
- }
- /**
- * 会员关联表操作
- *
- * @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' => 1
- ));
- }
- public function updateFansMember($fan, $member_id, $userinfo)
- {
- $record = array(
- 'uid' => $member_id,
- 'nickname' => stripslashes($userinfo['nickname']),
- 'follow' => isset($userinfo['subscribe']) ? $userinfo['subscribe'] : 0,
- 'tag' => base64_encode(serialize($userinfo))
- );
- McMappingFansModel::updateDataById($fan->fanid, $record);
- }
- protected function updateSubMemberInfoV2($uid, $userinfo)
- {
- SubMemberModel::updateOpenid(
- $uid, [
- 'yz_openid' => $userinfo['openid'],
- 'access_token_1' => $userinfo['access_token'],
- 'access_expires_in_1' => time() + $userinfo['expires_in'],
- 'refresh_token_1' => $userinfo['refresh_token'],
- 'refresh_expires_in_1' => time() + (28 * 24 * 3600)
- ]
- );
- }
- /**
- * 添加会员主表信息
- *
- * @param $uniacid
- * @param $userinfo
- * @return mixed
- */
- public function addMcMemberInfo($uniacid, $userinfo)
- {
- $uid = parent::addMemberInfo($uniacid, $userinfo);
- return $uid;
- }
- }
|