123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- import UserApi from "../apis/user"
- import { saveToken, saveUserInfo } from './storage'
- import EventEmitter from './eventEmitter'
- const app = getApp()
- function wxLogin() {
- return new Promise((resovle, reject) => {
- wx.login({
- success(res) {
- resovle(res.code)
- },
- fail(err) {
- wx.showModal({
- title: "登录失败",
- content: "网络异常,请重试",
- })
- reject(err)
- },
- })
- })
- }
- function checkSession() {
- return new Promise((resolve, reject) => {
- wx.checkSession({
- success: (res) => {
- resolve(res)
- },
- fail(err) {
- reject(err)
- },
- })
- })
- }
- function loginByPhone(data, isAgency) {
- const LoginApi = UserApi.loginByPhoneCode
- return LoginApi(data).then(res => {
- const data = res.data
- data.user = data.guide
- data.user.user_id = data.user.viewerId
- saveToken(data.token)
- saveUserInfo(data.user)
- app.globalData.token = data.token
- app.globalData.userinfo = data.user
- EventEmitter.emit('login')
- return res
- })
- }
- function tips (res) {
- if (res.data.code == 3032) {
- wx.showToast({
- title: '经纪人未注册,请联系管理员',
- icon: 'none',
- duration: 2000,
- })
- return
- }
- if (res.data.code != 3008) {
- wx.showToast({
- title: res.data.msg,
- icon: 'none',
- duration: 2000,
- })
- return
- }
- }
- export function loginFn(phone_data, code, isAgency) {
- const { encryptedData, iv, rawData, signature } = phone_data.detail
- if (!encryptedData || !iv) {
- return new Promise((_, reject) => reject())
- }
- return new Promise((resolve, reject) => {
- checkSession()
- .then(() => {
- return loginByPhone({ phone_num: encryptedData, iv, wx_code: code, rawData, signature }, isAgency).then(res => {
- resolve(res)
- })
- })
- .catch((err) => {
- // 登录失败可能是code失效,故重新wx.login重新获取code
- tips(err)
- wxLogin().then((code) => {
- loginByPhone({ phone_num: encryptedData, iv, wx_code: code }, isAgency).then(res => {
- resolve(res)
- }).catch(err => {
- tips(err)
- })
- })
- })
- })
- }
- export function loginByUserInfo (data, code) {
- data.wx_code = code
- data.phone_num = ''
- return UserApi.loginByUserInfo(data).then(res => {
- data = res.data
- data.viewer.user_id = data.viewer.viewerId
- saveToken(data.token)
- saveUserInfo(data.viewer)
- app.globalData.token = data.token
- app.globalData.userinfo = data.viewer
- EventEmitter.emit('login')
- return res
- }).catch(err => {
- tips(err)
- })
-
- }
|