diff --git a/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/dao/FullUserInfo.java b/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/dao/FullUserInfo.java deleted file mode 100644 index 9475aa9d..00000000 --- a/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/dao/FullUserInfo.java +++ /dev/null @@ -1,58 +0,0 @@ -package org.linlinjava.litemall.wx.dao; - -public class FullUserInfo { - private String encryptedData; - private String errMsg; - private String iv; - private String rawData; - private String signature; - private UserInfo userInfo; - - public void setEncryptedData(String encryptedData) { - this.encryptedData = encryptedData; - } - - public void setErrMsg(String errMsg) { - this.errMsg = errMsg; - } - - public void setIv(String iv) { - this.iv = iv; - } - - public void setRawData(String rawData) { - this.rawData = rawData; - } - - public void setSignature(String signature) { - this.signature = signature; - } - - public void setUserInfo(UserInfo userInfo) { - this.userInfo = userInfo; - } - - public String getEncryptedData() { - return encryptedData; - } - - public String getErrMsg() { - return errMsg; - } - - public String getIv() { - return iv; - } - - public String getRawData() { - return rawData; - } - - public String getSignature() { - return signature; - } - - public UserInfo getUserInfo() { - return userInfo; - } -} diff --git a/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/dao/WxLoginInfo.java b/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/dao/WxLoginInfo.java new file mode 100644 index 00000000..89f072ed --- /dev/null +++ b/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/dao/WxLoginInfo.java @@ -0,0 +1,22 @@ +package org.linlinjava.litemall.wx.dao; + +public class WxLoginInfo { + private String code; + private UserInfo userInfo; + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public UserInfo getUserInfo() { + return userInfo; + } + + public void setUserInfo(UserInfo userInfo) { + this.userInfo = userInfo; + } +} diff --git a/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxAuthController.java b/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxAuthController.java index 04744ff5..e5849963 100644 --- a/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxAuthController.java +++ b/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxAuthController.java @@ -9,7 +9,7 @@ import org.linlinjava.litemall.db.domain.LitemallUser; import org.linlinjava.litemall.db.service.LitemallUserService; import org.linlinjava.litemall.core.util.JacksonUtil; import org.linlinjava.litemall.core.util.ResponseUtil; -import org.linlinjava.litemall.wx.dao.FullUserInfo; +import org.linlinjava.litemall.wx.dao.WxLoginInfo; import org.linlinjava.litemall.wx.dao.UserInfo; import org.linlinjava.litemall.wx.dao.UserToken; import org.linlinjava.litemall.wx.service.UserTokenManager; @@ -100,7 +100,7 @@ public class WxAuthController { /** * 微信登录 * - * @param body 请求内容,{ code: xxx, userInfo: xxx } + * @param wxLoginInfo 请求内容,{ code: xxx, userInfo: xxx } * @param request 请求对象 * @return 登录结果 * 成功则 @@ -117,15 +117,13 @@ public class WxAuthController { * 失败则 { errno: XXX, errmsg: XXX } */ @RequestMapping("login_by_weixin") - public Object loginByWeixin(@RequestBody String body, HttpServletRequest request) { - String code = JacksonUtil.parseString(body, "code"); - FullUserInfo fullUserInfo = JacksonUtil.parseObject(body, "userInfo", FullUserInfo.class); - if(code == null || fullUserInfo == null){ + public Object loginByWeixin(@RequestBody WxLoginInfo wxLoginInfo, HttpServletRequest request) { + String code = wxLoginInfo.getCode(); + UserInfo userInfo = wxLoginInfo.getUserInfo(); + if(code == null || userInfo == null){ return ResponseUtil.badArgument(); } - UserInfo userInfo = fullUserInfo.getUserInfo(); - String sessionKey = null; String openId = null; try { @@ -140,14 +138,6 @@ public class WxAuthController { return ResponseUtil.fail(); } - //验证用户信息完整性 - if (!this.wxService.getUserService().checkUserInfo(sessionKey, fullUserInfo.getRawData(), fullUserInfo.getSignature())) { - return ResponseUtil.fail(); - } - - // 解密用户信息 -// WxMaUserInfo wxMaUserInfo = this.wxService.getUserService().getUserInfo(sessionKey, fullUserInfo.getEncryptedData(), fullUserInfo.getIv()); - LitemallUser user = userService.queryByOid(openId); if(user == null){ user = new LitemallUser(); diff --git a/litemall-wx/pages/auth/login/login.js b/litemall-wx/pages/auth/login/login.js index a18b3479..f4207eb0 100644 --- a/litemall-wx/pages/auth/login/login.js +++ b/litemall-wx/pages/auth/login/login.js @@ -29,10 +29,16 @@ Page({ // 页面关闭 }, - wxLogin: function () { + wxLogin: function (e) { + if (e.detail.userInfo == undefined){ + app.globalData.hasLogin = false; + util.showErrorToast('微信登录失败'); + return; + } + user.checkLogin().catch(() => { - user.loginByWeixin().then(res => { + user.loginByWeixin(e.detail.userInfo).then(res => { app.globalData.hasLogin = true; wx.navigateBack({ diff --git a/litemall-wx/pages/auth/login/login.wxml b/litemall-wx/pages/auth/login/login.wxml index f3f12e93..ba1ab1fa 100644 --- a/litemall-wx/pages/auth/login/login.wxml +++ b/litemall-wx/pages/auth/login/login.wxml @@ -26,7 +26,7 @@ 忘记密码 - + \ No newline at end of file diff --git a/litemall-wx/services/user.js b/litemall-wx/services/user.js index 48f4f2fa..afd7ca40 100644 --- a/litemall-wx/services/user.js +++ b/litemall-wx/services/user.js @@ -41,60 +41,15 @@ function login() { }); } -/** - * Promise封装wx.getUserInfo - */ -function getUserInfo() { - return new Promise(function (resolve, reject) { - wx.getUserInfo({ - withCredentials: true, - success: function (res) { - resolve(res); - }, - fail: function (err) { - - wx.showModal({ - title: '用户未授权', - content: '请给予您的用户信息授权。', - success: function (res) { - if (res.confirm) { - wx.openSetting({ - success: (res) => { - if (res.authSetting["scope.userInfo"] === true) { - wx.getUserInfo({ - withCredentials: true, - success: function (res) { - resolve(res); - }, - }) - } - } - }) - } else if (res.cancel) { - wx.navigateBack({ - delta: 1 - }) - } - } - }) - } - }) - }); -} - /** * 调用微信登录 */ -function loginByWeixin() { +function loginByWeixin(userInfo) { - let code = null; return new Promise(function (resolve, reject) { return login().then((res) => { - code = res.code; - return getUserInfo(); - }).then((userInfo) => { //登录远程服务器 - util.request(api.AuthLoginByWeixin, { code: code, userInfo: userInfo }, 'POST').then(res => { + util.request(api.AuthLoginByWeixin, { code: res.code, userInfo: userInfo }, 'POST').then(res => { if (res.errno === 0) { //存储用户信息 wx.setStorageSync('userInfo', res.data.userInfo);