Browse Source

[用户授权][新增]:用户授权昵称

tags/2.2.4
Stormeye.Wu 6 years ago
parent
commit
afae4987c6
11 changed files with 83 additions and 510 deletions
  1. +28
    -57
      app.js
  2. +2
    -0
      app.json
  3. +0
    -265
      common/common.js
  4. +16
    -20
      config/config.js
  5. +1
    -131
      pages/coupons/details/index.js
  6. +1
    -1
      pages/coupons/details/index.wxml
  7. +16
    -16
      pages/getphoneInfo/index.js
  8. +14
    -15
      pages/getuserinfo/index.js
  9. +2
    -1
      pages/index/rushToBuy/index.js
  10. +3
    -3
      utils/HttpBasics.js
  11. +0
    -1
      utils/es6-promise.min.js

+ 28
- 57
app.js View File

@@ -1,83 +1,54 @@
let config = require('./config/config.js')
const Http = require("./utils/HttpBasics");
App({
data: {
},
onLaunch: function (options) {
// var that = this;
data: {},
onLaunch: function(options) {
var that = this;
this.globalData.sceneAddress = options.scene;
this.getLocation()
this.getUserInfo()
// 登录
wx.login({
success: function(res) {
var code = res.code;
console.log(code);
wx.request({
success: ({
code
}) => {
Http.post({
url: config.api.login,
data: {
appId: config.weapp.AppId,
code: code,
screneAddress: options.scene
},
method: "POST",
success: function (res) {
console.log(res);
that.globalData.token = res.data.token;
console.log(that.globalData.token)
that.globalData.openId = res.data.openId;
//由于这里是网络请求,可能会在 Page.onLoad 之后才返回
// 所以此处加入 callback 以防止这种情况
if (that.openIdCallback) {
console.log(res.data.openId);
that.openIdCallback(res.data.openId);
}
wx.request({
url: config.api.checkUserStatus,
header: {
"token": that.globalData.token
},
success: function (res) {
console.log(res);
//如果是新用户未获取unionId
if (res.data.code == config.ErrorCode.NICK_NOT_AUTH) {
wx.redirectTo({
url: '../getuserinfo/index',
})
}
//如果是跳转到首页
else if (res.data.code == 200) {
// 老用户跳转首页
} else {
wx.showToast({
title: res.data.message,
})
}
},
fail: function(res) {
wx.showToast({
title: res.data.message,
sceneAddress: this.globalData.sceneAddress,
}
}).then(res => {
// console.log("req",res);
this.globalData.token = res.data.token;
Http.setToken(res.data.token)
Http.post({
url: config.api.checkUserStatus,
data: {} //
}).then(
function(res) {
},
function(error) {
console.log(error)
if (error.code == 11004) {
// 用户昵称未授权
wx.redirectTo({
url: '../getuserinfo/index',
})
}
})
}
})
}
})

// setTimeout(() => {
// this.globalData.market={
// name:"陕西大悦城"
// }
// }, 1000);
},
/**
* 获取地址位置信息
*/
getLocation: function () {
getLocation: function() {
wx.getLocation({
type: 'wgs84',
success: function (res) {
success: function(res) {
console.log("getLocation", res);
},
fail: error => {
@@ -88,7 +59,7 @@ App({
/**
* 获取用户信息
*/
getUserInfo: function () {
getUserInfo: function() {
// 获取用户信息
wx.getSetting({
success: res => {


+ 2
- 0
app.json View File

@@ -1,6 +1,8 @@
{
"pages":[
"pages/index/index",
"pages/getuserinfo/index",
"pages/getphoneInfo/index",
"pages/market/index",
"pages/user/index",
"pages/coupons/details/index",


+ 0
- 265
common/common.js View File

@@ -1,265 +0,0 @@
const Promise = require('../utils/es6-promise.min').Promise
let config = require("../config/config.js");
var app = getApp();
const func = {
wxLogin: function (scene) {
return new Promise((resolve, reject) => {
wx.login({
success: function (res) {
resolve(res)
},
fail: function (err) {
reject(err)
},
complete: function (res) {
//console.log("wxLogin complete:" + res)
}
})
})
},
/**
* 授权后获取用户的昵称,unionId等信息
*/
getUserInfo: function (encryptedData, iv) {
console.log(app.globalData.openId)
return new Promise((resolve, reject) => {
wx.request({
url: config.api.getUserInfo,
header: {
"content-type": "application/json;charset=UTF-8",
"token": app.globalData.token
},
data: {
encryptedData: encryptedData,
iv: iv,
},
method: "POST",
success: function (res) {
resolve(res)
},
fail: function (err) {
reject(err)
},
complete: function (res) {
//console.log("getUserInfo complete:" + res)
}
})
})
},
/**
* 授权后获取用户的手机号
*/
getUserPhone: function (encryptedData, iv) {
return new Promise((resolve, reject) => {
wx.request({
url: config.api.getUserPhone,
data: {
encryptedData: encryptedData,
iv: iv,
},
header: {
"content-type": "application/json;charset=UTF-8",
"token": app.globalData.token
},
method: "POST",
success: function (res) {
resolve(res)
},
fail: function (err) {
reject(err)
},
complete: function (res) {
//console.log("getUserInfo complete:" + res)
}
})
})
},
/**
* 优惠券查询
*/
getCouponList: function (pageNum, pageSize) {
return new Promise((resolve, reject) => {
wx.request({
url: config.api.couponList,
header: {
"content-type": "application/json;charset=UTF-8",
"token": app.globalData.token
},
method: "Get",
data: {
pageNum: pageNum,
pageSize: pageSize
},
success: function (res) {
resolve(res)
},
fail: function (err) {
reject(err)
},
complete: function (res) {
console.log(res)
}
})
})
},
/**
* 优惠券详情
*/
getCouponDetail: function (couponId) {
return new Promise((resolve, reject) => {
wx.request({
url: config.api.couponDetail,
header: {
"content-type": "application/json;charset=UTF-8",
"token": app.globalData.token
},
method: "Get",
data: {
id: couponId
},
success: function (res) {
resolve(res)
},
fail: function (err) {
reject(err)
},
complete: function (res) {
console.log(res)
}
})
})
},
/**
* 订单下单
*/
orderSave: function (couponId) {
return new Promise((resolve, reject) => {
wx.request({
url: config.api.orderSave,
header: {
'token': app.globalData.token
},
data: {
couponId: couponId,
token: app.globalData.token
},
method: "POST",
success: function (res) {
resolve(res)
},
fail: function (err) {
reject(err)
},
complete: function (res) {
console.log(res)
}
})
})
},
/**
* 支付订单
*/
payOrderCreate: function (orderId) {
return new Promise((resolve, reject) => {
wx.request({
url: config.api.payOrderCreate,
header: {
"token": app.globalData.token
},
data: {
orderId: orderId,
token: app.globalData.token
},
method: "POST",
success: function (res) {
resolve(res)
},
fail: function (err) {
reject(err)
},
complete: function (res) {
console.log(res)
}
})
})
},
/**
* 支付订单更新
*/
payOrderUpdate: function (orderId, payOrderId, status, reason) {
return new Promise((resolve, reject) => {
wx.request({
url: config.api.payOrderUpdate,
header: {
"token": app.globalData.token
},
data: {
payOrderId: payOrderId,
orderId: orderId,
status: status,
reason: reason
},
method: "POST",
success: function (res) {
resolve(res)
},
fail: function (err) {
reject(err)
},
complete: function (res) {
console.log(res)
}
})
})
},
refundCouponOrder: function (couponOrderId) {
return new Promise((resolve, reject) => {
wx.request({
url: config.api.refundCouponOrder,
header: {
"token": app.globalData.token
},
data: {
couponOrderId: couponOrderId,
token: app.globalData.token
},
method: "POST",
success: function (res) {
resolve(res)
},
fail: function (err) {
reject(err)
},
complete: function (res) {
console.log(res)
}
})
})
},
refundOrderCreate: function (orderId, payOrderId) {
return new Promise((resolve, reject) => {
wx.request({
url: config.api.refundOrdercCreate,
header: {
"token": app.globalData.token
},
data: {
payOrderId: payOrderId,
orderId: orderId,
token: app.globalData.token
},
method: "POST",
success: function (res) {
resolve(res)
},
fail: function (err) {
reject(err)
},
complete: function (res) {
console.log(res)
}
})
})
},
}
module.exports = func;

+ 16
- 20
config/config.js View File

@@ -1,26 +1,24 @@
var url = 'https://ciformall.youlane.cn'
//var url = 'http://7479f9de.ngrok.io'
var apiPrefix = url + '/C';
var config = {
name: "富茂",
url: "https://ciformall.youlane.cn/C",
url: "https://ciformall.youlane.cn/C/api",
//url: "http://dac6735a.ngrok.io/C/api",
api: {
/**
* 接口用途:login
*/
login: '/api/user/login',
login: '/user/login',
/**
* 授权后获取用户的昵称,unionId等信息
*/
getUserInfo: '/api/user/getUserInfo',
getUserInfo: '/user/getUserInfo',
/**
* 接口用途:授权后获取用户的手机号
*/
getUserPhone: '/api/user/getUserPhone',
getUserPhone: '/user/getUserPhone',
/**
* 检查用户授权状态
*/
checkUserStatus: '/api/user/checkUserStatus',
checkUserStatus: '/user/checkUserStatus',
/**
* 优惠券查询
*/
@@ -29,30 +27,26 @@ var config = {
* 优惠券详情
*/
couponDetail: '/wxCoupon/findById',
/**
* 业态查询
*/
couponChannelList: '/wxCouponChannel/list',
/**
* 下订单
*/
orderSave: '/api/order/save',
orderSave: '/order/save',
/**
* 支付订单
*/
payOrderCreate: '/api/pay/create',
payOrderCreate: '/pay/create',
/**
* 订单状态更新
*/
payOrderUpdate: '/api/pay/updatePayOrder',
payOrderUpdate: '/pay/updatePayOrder',
/**
* 订单列表
*/
orderList: '/api/order/list',
/**
* 退券
*/
refundCouponOrder: '/api/couponOrder/refund',
/**
* 退款申请
*/
refundOrdercCreate: '/api/refund/create',
orderList: '/order/list',
},

weapp: {
@@ -64,7 +58,9 @@ var config = {
PHONE_IS_ENCRYPTED: 11006,
},
};
/*
for (var key in config.api) {
config.api[key] = apiPrefix + config.api[key];
}
*/
module.exports = config;

+ 1
- 131
pages/coupons/details/index.js View File

@@ -1,4 +1,4 @@
let Common = require('../../../common/common.js')
var config = require('../../../config/config.js');
var app = getApp()
const Http = require("../../../utils/HttpBasics")
Page({
@@ -128,134 +128,4 @@ Page({
})
},
orderfunc() {
var that = this
/*
var couponOrderId = '189631451703017472';
var orderId = '189631451640102912';
var payOrderId = '189631462532710400';
var status = 1;
var reason = '';
Common.refundCouponOrder(couponOrderId)
.then(res => {
console.log(res);
if (res.data.code == 200) {
Common.refundOrderCreate(orderId, payOrderId)
.then(res => {
console.log(res);
})
} else {
wx.showToast({
title: res.data.message,
duration: 3000
})
}
})
*/
/*
Common.payOrderUpdate(orderId, payOrderId, status, reason)
.then(res =>{
console.log(res);
})
*/
wx.showLoading({
title: '加载中...',
})
var couponId = '' + this.data.couponId;
console.log("order coupon: " + couponId)
Common.orderSave(couponId)
.then(res => {
console.log(res)
if (res.data.code == 200) {
var orderId = '' + res.data.data.id;
this.setData({
orderId: '' + res.data.data.id
})
if (res.data.data.payment > 0) {
return Common.payOrderCreate(orderId)
} else {
Common.payOrderUpdate(orderId, "0", 1) // 支付成功
.then(res => {
wx.showToast({
title: res.data.message,
duration: 3000
})
})
}
} else {
wx.hideLoading();
wx.showToast({
title: res.data.message,
duration: 3000
})
}
})
.then(res => {
console.log(res)
var payOrderId = '' + res.data.data.payOrderId;
if (res.data.code == 200) {
wx.requestPayment({
timeStamp: res.data.data.timeStamp,
nonceStr: res.data.data.nonceStr,
package: res.data.data.package,
signType: 'MD5',
paySign: res.data.data.paySign,
'success': function (res) {
Common.payOrderUpdate(that.data.orderId, payOrderId, 1); // 支付成功
console.log(res);
console.log('支付成功');
wx.showToast({
title: '购买成功',
duration: 2500
})
wx.navigateBack({
delta: 2
})
},
'fail': function (res) {
Common.payOrderUpdate(orderId, payOrderId, 2); // 支付失败
console.log(res)
console.log('支付失败');
return;
},
'complete': function (res) {
console.log(res);
console.log('支付完成');
var url = that.data.url;
console.log('get url', url)
if (res.errMsg == 'requestPayment:ok') {
wx.showModal({
title: '提示',
content: '支付成功'
});
if (url) {
setTimeout(function () {
wx.redirectTo({
url: '/pages' + url
});
}, 2000)
} else {
setTimeout(() => {
wx.navigateBack()
}, 2000)
}
} else {
wx.showModal({
title: '错误提示',
content: res.errMsg
});
}
return;
}
})
} else {
wx.showModal({
title: '错误提示',
content: res.data.message
});
}
})
wx.hideLoading();
}
})

+ 1
- 1
pages/coupons/details/index.wxml View File

@@ -45,6 +45,6 @@
</view>
</view>
<view class="buy-view app-border-top">
<button bindtap='newOrderfunc' class='buy'>立即购买</button>
<button bindtap='orderfunc' class='buy'>立即购买</button>
</view>
</view>

+ 16
- 16
pages/getphoneInfo/index.js View File

@@ -1,42 +1,42 @@
var config = require('../../config/config.js');
var Common = require('../../common/common.js');
const Http = require("../../utils/HttpBasics");
var app = getApp();
Page({
data: {
canIUse: wx.canIUse('button.open-type.getPhoneNumber')
},
onLoad: function (options) {
onLoad: function(options) {
var that = this;
},
getPhoneNumber: function (e) {
getPhoneNumber: function(e) {
var that = this;
var iv = e.detail.iv;
var encryptedData = e.detail.encryptedData;
Common.getUserPhone(encryptedData, iv)
.then(function (res) {
console.log(res);
/**
* code:0 授权手机号成功
* code:1 授权手机号失败
*/
if (res.data.code == 0) {
Http.post({
url: config.api.getUserPhone,
data: {
encryptedData: encryptedData,
iv: iv,
}
})
.then(function(res) {
console.log(res);
app.globalData.phone = res.data.phone;
wx.showToast({
title: res.data.msg,
icon: "success",
success: function (res) {
success: function(res) {
wx.redirectTo({
url: '../login/login',
})
}
})
}
else if (res.data.code == 1) {
},
function(error) {
wx.showToast({
title: '请重新授权手机号',
icon: "none",
})
}
})
})
}
})

+ 14
- 15
pages/getuserinfo/index.js View File

@@ -1,6 +1,6 @@
var config = require('../../config/config.js');
var Common = require('../../common/common.js');
var app = getApp();
const Http = require("../../utils/HttpBasics");
Page({
data: {
canIUse: wx.canIUse('button.open-type.getUserInfo')
@@ -15,26 +15,25 @@ Page({
var encryptedData = e.detail.encryptedData;
console.log(iv)
console.log(encryptedData)
Common.getUserInfo(encryptedData, iv)
.then(res => {
console.log(res);
/**
* 1:用户拒绝授权
* 0:用户同意授权
*/
if(res.data.code == 0){
Http.post({
url: config.api.getUserInfo,
data: {
encryptedData: encryptedData,
iv: iv,
}
})
.then(function(res) {
console.log(res);
//返回主页
wx.redirectTo({
url: '../index/index',
})
}
else if(res.data.code == 1){
}, function(error) {
wx.showToast({
title: '请授权个人信息',
icon:"none"
icon: "none"
})
}
})
}
)
},
})

+ 2
- 1
pages/index/rushToBuy/index.js View File

@@ -1,4 +1,5 @@
// pages/index/sw/index.js
let config = require('../../../config/config.js')
let Http = require('../../../utils/HttpBasics')
Component({
/**
@@ -52,7 +53,7 @@ Component({
},
ready() {
Http.get({
url: "/wxCouponChannel/list", data: {
url: config.api.couponChannelList, data: {
pageNum: 1,
pageSize: 10
}


+ 3
- 3
utils/HttpBasics.js View File

@@ -96,17 +96,17 @@ class HttpBasics {
if (res.statusCode == 200) {
// 服务器code 200 成功
if (res.data.code == 200) {
resolve(res.data.data);
resolve(res.data);
} else {
wx.hideLoading();
wx.showToast({
title: res.data.message
})
reject(res.data.message);
reject(res.data);
}
} else {
console.error("请求出错:", res);
reject(res.errMsg);
reject(res.data);
}
}
/** 日志 */


+ 0
- 1
utils/es6-promise.min.js
File diff suppressed because it is too large
View File


Loading…
Cancel
Save