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; } }