Skip to content

Commit 089bc24

Browse files
committed
增加QQ小程序登陆
1 parent 04b2666 commit 089bc24

File tree

16 files changed

+330
-35
lines changed

16 files changed

+330
-35
lines changed

App.vue

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
<script>
22
const WXAUTH = require('@/common/wxauth.js')
33
const TTAUTH = require('@/common/ttauth.js')
4+
const QQAUTH = require('@/common/qqauth.js')
45
export default {
56
globalData: {
67
h5Domain: 'https://flpt.jxsupplier.com',
78
goLogin: false,
8-
subDomain: 'tz', // jdjf0115
9-
merchantId: '951', // 42151
10-
version: '1.0.1',
9+
subDomain: 'qqtg', // jdjf0115
10+
merchantId: '11', // 42151
11+
version: '1.1.0',
1112
sysconfigkeys: 'mallName,shopMod,share_profile,recharge_amount_min,open_growth,shopping_cart_vop_open',
1213
wxpayOpenAppId: 'wx9b04553fd8c7b9c3', // 微信开放平台的移动端应用appID
1314
openAlipayProvider: true, // 是否开通支付宝支付
@@ -103,6 +104,16 @@
103104
uni.$emit('loginOK', {})
104105
}, 500)
105106
// #endif
107+
// #ifdef MP-QQ
108+
const isLogined = await QQAUTH.checkHasLogined()
109+
if (!isLogined) {
110+
await QQAUTH.authorize()
111+
await QQAUTH.bindSeller()
112+
}
113+
setTimeout(() => {
114+
uni.$emit('loginOK', {})
115+
}, 500)
116+
// #endif
106117
// #ifdef MP-TOUTIAO
107118
const isLogined = await TTAUTH.checkHasLogined()
108119
if (!isLogined) {

common/qqauth.js

Lines changed: 268 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,268 @@
1+
const WXAPI = require('apifm-uniapp')
2+
import store from '@/store';
3+
4+
async function checkSession() {
5+
return new Promise((resolve, reject) => {
6+
qq.checkSession({
7+
success() {
8+
return resolve(true)
9+
},
10+
fail() {
11+
return resolve(false)
12+
}
13+
})
14+
})
15+
}
16+
17+
async function bindSeller() {
18+
const token = store.state.token
19+
const referrer = store.state.referrer
20+
if (!token) {
21+
return
22+
}
23+
if (!referrer) {
24+
return
25+
}
26+
const res = await WXAPI.bindSeller({
27+
token,
28+
uid: referrer
29+
})
30+
}
31+
32+
// 检测登录状态,返回 true / false
33+
async function checkHasLogined() {
34+
const token = store.state.token
35+
if (!token) {
36+
return false
37+
}
38+
const loggined = await checkSession()
39+
if (!loggined) {
40+
store.commit('$uStore', {
41+
name: 'token',
42+
value: ''
43+
})
44+
return false
45+
}
46+
const checkTokenRes = await WXAPI.checkToken(token)
47+
if (checkTokenRes.code != 0) {
48+
store.commit('$uStore', {
49+
name: 'token',
50+
value: ''
51+
})
52+
return false
53+
}
54+
return true
55+
}
56+
57+
async function wxaCode() {
58+
return new Promise((resolve, reject) => {
59+
qq.login({
60+
success(res) {
61+
return resolve(res.code)
62+
},
63+
fail() {
64+
qq.showToast({
65+
title: '获取code失败',
66+
icon: 'none'
67+
})
68+
return resolve('获取code失败')
69+
}
70+
})
71+
})
72+
}
73+
74+
async function login(page) {
75+
const _this = this
76+
qq.login({
77+
success: function(res) {
78+
const extConfigSync = qq.getExtConfigSync()
79+
if (extConfigSync.subDomain) {
80+
WXAPI.wxappServiceLogin({
81+
code: res.code
82+
}).then(function(res) {
83+
if (res.code == 10000) {
84+
// 去注册
85+
return;
86+
}
87+
if (res.code != 0) {
88+
// 登录错误
89+
qq.showModal({
90+
title: '无法登录',
91+
content: res.msg,
92+
showCancel: false
93+
})
94+
return;
95+
}
96+
store.commit('$uStore', {
97+
name: 'token',
98+
value: res.data.token
99+
})
100+
store.commit('$uStore', {
101+
name: 'uid',
102+
value: res.data.uid
103+
})
104+
_this.bindSeller()
105+
if (page) {
106+
page.onShow()
107+
}
108+
})
109+
} else {
110+
WXAPI.login_wx(res.code).then(function(res) {
111+
if (res.code == 10000) {
112+
// 去注册
113+
return;
114+
}
115+
if (res.code != 0) {
116+
// 登录错误
117+
qq.showModal({
118+
title: '无法登录',
119+
content: res.msg,
120+
showCancel: false
121+
})
122+
return;
123+
}
124+
store.commit('$uStore', {
125+
name: 'token',
126+
value: res.data.token
127+
})
128+
store.commit('$uStore', {
129+
name: 'uid',
130+
value: res.data.uid
131+
})
132+
_this.bindSeller()
133+
if (page) {
134+
page.onShow()
135+
}
136+
})
137+
}
138+
}
139+
})
140+
}
141+
142+
async function authorize() {
143+
return new Promise((resolve, reject) => {
144+
qq.login({
145+
success: function(res) {
146+
const code = res.code
147+
let referrer = '' // 推荐人
148+
let referrer_storge = store.state.referrer
149+
if (referrer_storge) {
150+
referrer = referrer_storge;
151+
}
152+
// 下面开始调用注册接口
153+
const extConfigSync = qq.getExtConfigSync()
154+
if (extConfigSync.subDomain) {
155+
WXAPI.wxappServiceAuthorize({
156+
code: code,
157+
referrer: referrer
158+
}).then(function(res) {
159+
if (res.code == 0) {
160+
store.commit('$uStore', {
161+
name: 'token',
162+
value: res.data.token
163+
})
164+
store.commit('$uStore', {
165+
name: 'uid',
166+
value: res.data.uid
167+
})
168+
resolve(res)
169+
} else {
170+
qq.showToast({
171+
title: res.msg,
172+
icon: 'none'
173+
})
174+
reject(res.msg)
175+
}
176+
})
177+
} else {
178+
WXAPI.qqAuthorize({
179+
code: code,
180+
referrer: referrer
181+
}).then(function(res) {
182+
if (res.code == 0) {
183+
store.commit('$uStore', {
184+
name: 'token',
185+
value: res.data.token
186+
})
187+
store.commit('$uStore', {
188+
name: 'uid',
189+
value: res.data.uid
190+
})
191+
resolve(res)
192+
} else {
193+
qq.showToast({
194+
title: res.msg,
195+
icon: 'none'
196+
})
197+
reject(res.msg)
198+
}
199+
})
200+
}
201+
},
202+
fail: err => {
203+
reject(err)
204+
}
205+
})
206+
})
207+
}
208+
209+
function loginOut() {
210+
store.commit('$uStore', {
211+
name: 'token',
212+
value: ''
213+
})
214+
store.commit('$uStore', {
215+
name: 'uid',
216+
value: ''
217+
})
218+
}
219+
220+
async function checkAndAuthorize(scope) {
221+
return new Promise((resolve, reject) => {
222+
uni.getSetting({
223+
success(res) {
224+
if (!res.authSetting[scope]) {
225+
uni.authorize({
226+
scope: scope,
227+
success() {
228+
resolve() // 无返回参数
229+
},
230+
fail(e) {
231+
console.error(e)
232+
uni.showModal({
233+
title: '无权操作',
234+
content: '需要获得您的授权',
235+
showCancel: false,
236+
confirmText: '立即授权',
237+
confirmColor: '#e64340',
238+
success(res) {
239+
uni.openSetting();
240+
},
241+
fail(e) {
242+
console.error(e)
243+
reject(e)
244+
},
245+
})
246+
}
247+
})
248+
} else {
249+
resolve() // 无返回参数
250+
}
251+
},
252+
fail(e) {
253+
console.error(e)
254+
reject(e)
255+
}
256+
})
257+
})
258+
}
259+
260+
module.exports = {
261+
checkHasLogined: checkHasLogined,
262+
wxaCode: wxaCode,
263+
login: login,
264+
loginOut: loginOut,
265+
checkAndAuthorize: checkAndAuthorize,
266+
authorize: authorize,
267+
bindSeller: bindSeller
268+
}

components/goods-pop/goods-pop.vue

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
<view v-if="goodsDetail.basicInfo.numberSells" class="t2">已售:{{ goodsDetail.basicInfo.numberSells }}
99
</view>
1010
<view class="price">
11-
<view v-if="price"><font>¥</font>{{ price }}</view>
11+
<view v-if="price"><text>¥</text>{{ price }}</view>
1212
<view v-if="score">
13-
<font>¢</font>{{ score }}
13+
<text>¢</text>{{ score }}
1414
</view>
1515
</view>
1616
</view>
@@ -19,22 +19,25 @@
1919
<view v-for="(item,index) in goodsDetail.properties" :key="item.id" v-if="!item.hidden" class="skuList">
2020
<view class="t">{{ item.name }}</view>
2121
<view class="items">
22-
<u-tag v-for="(item2,index2) in item.childsCurGoods" :key="item2.id" class="item" :show="!item2.hidden"
23-
:type="item2.selected ? 'error' : 'info'" :plain="item2.selected ? false : true" :text="item2.name"
24-
@click="skuSelect(index, index2)"></u-tag>
22+
<view v-for="(item2,index2) in item.childsCurGoods" :key="item2.id" class="item">
23+
<u-tag :show="!item2.hidden"
24+
:type="item2.selected ? 'error' : 'info'" :plain="item2.selected ? false : true" :text="item2.name"
25+
@click="skuSelect(index, index2)"></u-tag>
26+
</view>
2527
</view>
2628
</view>
2729
<view v-for="(item,index) in goodsAddition" :key="item.id" class="skuList">
2830
<view class="t">{{ item.name }}</view>
2931
<view class="items">
30-
<u-tag v-for="(item2,index2) in item.items" :key="item2.id" class="item"
31-
:type="item2.selected ? 'error' : 'info'" :plain="item2.selected ? false : true" :text="item2.name"
32-
@click="additionSelect(index, index2)"></u-tag>
32+
<view v-for="(item2,index2) in item.items" :key="item2.id" class="item">
33+
<u-tag :type="item2.selected ? 'error' : 'info'" :plain="item2.selected ? false : true" :text="item2.name"
34+
@click="additionSelect(index, index2)"></u-tag>
35+
</view>
3336
</view>
3437
</view>
3538
<u-line v-if="goodsAddition || goodsDetail.properties" class="sku-space"></u-line>
3639
<view class="buy-number">
37-
<font>购买数量</font>
40+
<text>购买数量</text>
3841
<u-number-box v-model="buyNumber" :min="min" :max="max" integer></u-number-box>
3942
</view>
4043
<u-line></u-line>
@@ -490,7 +493,9 @@
490493
this.goodsDetail.properties.forEach(ele => {
491494
sku.push({
492495
optionId: ele.id,
493-
optionValueId: ele.selectedChild.id
496+
optionValueId: ele.selectedChild.id,
497+
optionName: ele.name,
498+
optionValueName: ele.selectedChild.name,
494499
})
495500
})
496501
}
@@ -501,7 +506,9 @@
501506
if (item.selected) {
502507
goodsAddition.push({
503508
id: item.id,
504-
pid: item.pid
509+
pid: item.pid,
510+
name: ele.name,
511+
pname: item.name,
505512
})
506513
}
507514
})

manifest.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
"name" : "天使童装",
33
"appid" : "__UNI__F2EA85C",
44
"description" : "天使童装",
5-
"versionName" : "1.0.1",
6-
"versionCode" : 101,
5+
"versionName" : "1.1.0",
6+
"versionCode" : 110,
77
"transformPx" : false,
88
"app-plus" : {
99
"optimization" : {
@@ -151,7 +151,7 @@
151151
"optimization" : {
152152
"subPackages" : true
153153
},
154-
"appid" : "15646153"
154+
"appid" : "1110971857"
155155
},
156156
"mp-baidu" : {
157157
"usingComponents" : true,

node_modules/apifm-uniapp/index.js

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)