ソースを参照

update[litemall-wx,litemall-wx-api,litemall-db]:实现账户登录,但多次失败验证码还不支持。"

Junling Bu 7 年 前
コミット
8bd3e8d0c4

+ 6 - 0
litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallUserService.java

@@ -63,4 +63,10 @@ public class LitemallUserService {
         LitemallUserExample example = new LitemallUserExample();
         return (int)userMapper.countByExample(example);
     }
+
+    public List<LitemallUser> queryByUsername(String username) {
+        LitemallUserExample example = new LitemallUserExample();
+        example.or().andUsernameEqualTo(username);
+        return userMapper.selectByExample(example);
+    }
 }

+ 47 - 1
litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxAuthController.java

@@ -22,6 +22,7 @@ import org.springframework.web.bind.annotation.RestController;
 import javax.servlet.http.HttpServletRequest;
 import java.time.LocalDate;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 @RestController
@@ -38,11 +39,56 @@ public class WxAuthController {
     /**
      * 微信登录
      */
+    @RequestMapping("login")
+    public Object login(@RequestBody String body, HttpServletRequest request) {
+        String username = JacksonUtil.parseString(body, "username");
+        String password = JacksonUtil.parseString(body, "password");
+        if(username == null || password == null){
+            return ResponseUtil.badArgument();
+        }
+
+        List<LitemallUser> userList =userService.queryByUsername(username);
+        LitemallUser user = null;
+        if(userList.size() > 1){
+            return ResponseUtil.fail502();
+        }
+        else if(userList.size() == 0){
+            return ResponseUtil.badArgumentValue();
+        }
+        else {
+            user = userList.get(0);
+        }
+
+        if(!user.getPassword().equals(password)){
+            return ResponseUtil.badArgumentValue();
+        }
+
+        // userInfo
+        UserInfo userInfo = new UserInfo();
+        userInfo.setNickName(username);
+        userInfo.setAvatarUrl(user.getAvatar());
+
+        // token
+        UserToken userToken = UserTokenManager.generateToken(user.getId());
+
+        Map<Object, Object> result = new HashMap<Object, Object>();
+        result.put("token", userToken.getToken());
+        result.put("tokenExpire", userToken.getExpireTime().toString());
+        result.put("userInfo", userInfo);
+        return ResponseUtil.ok(result);
+    }
+
+    /**
+     * 微信登录
+     */
     @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){
+            return ResponseUtil.badArgument();
+        }
+
         UserInfo userInfo = fullUserInfo.getUserInfo();
 
         String sessionKey = null;

+ 1 - 0
litemall-wx/config/api.js

@@ -21,6 +21,7 @@ module.exports = {
     CatalogCurrent: WxApiRoot + 'catalog/current',  //分类目录当前分类数据接口
 
     AuthLoginByWeixin: WxApiRoot + 'auth/login_by_weixin', //微信登录
+    AuthLoginByAccount: WxApiRoot + 'auth/login', //账号登录
 
     GoodsCount: WxApiRoot + 'goods/count',  //统计商品总数
     GoodsList: WxApiRoot + 'goods/list',  //获得商品列表

+ 8 - 4
litemall-wx/pages/auth/login/login.js

@@ -48,7 +48,7 @@ Page({
   accountLogin: function () {
     var that = this;
 
-    if (that.data.password.length < 1 || that.data.username.length < 1) {
+    if (this.data.password.length < 1 || this.data.username.length < 1) {
       wx.showModal({
         title: '错误信息',
         content: '请输入用户名和密码',
@@ -58,7 +58,7 @@ Page({
     }
 
     wx.request({
-      url: api.ApiRootUrl + 'auth/login',
+      url: api.AuthLoginByAccount,
       data: {
         username: that.data.username,
         password: that.data.password
@@ -68,11 +68,12 @@ Page({
         'content-type': 'application/json'
       },
       success: function (res) {
-        if(res.data.code == 200){
+        if (res.data.errno == 0){
           that.setData({
-            'loginErrorCount': 0
+            loginErrorCount: 0
           });
           app.globalData.hasLogin = true;
+          wx.setStorageSync('userInfo', res.data.data.userInfo);
           wx.setStorage({
             key:"token",
             data: res.data.data.token,
@@ -84,6 +85,9 @@ Page({
           });
         }
         else{
+          that.setData({
+            loginErrorCount: that.data.loginErrorCount + 1
+          });
           app.globalData.hasLogin = false;
           util.showErrorToast('账户登录失败');
         }

+ 7 - 7
litemall-wx/pages/auth/login/login.wxml

@@ -2,7 +2,7 @@
     <view class="form-box">
 
     	<view class="form-item">
-    		<input class="username" value="{{username}}" bindinput="bindUsernameInput" placeholder="账号" auto-focus/>
+    		<input class="username" value="{{username}}" bindinput="bindUsernameInput" placeholder="账号"/>
     		<image wx:if="{{ username.length > 0 }}" id="clear-username" class="clear" src="/static/images/clear_input.png" catchtap="clearInput"></image>
     	</view>
 
@@ -11,22 +11,22 @@
     		<image class="clear" id="clear-password" wx:if="{{ password.length > 0 }}" src="/static/images/clear_input.png" catchtap="clearInput"></image>
     	</view>
 
-		<view class="form-item-code" wx-if="{{loginErrorCount >= 3}}">
+		 <!-- <view class="form-item-code" wx-if="{{loginErrorCount >= 3}}">
 			<view class="form-item code-item">
 				<input class="code" value="{{code}}" bindinput="bindCodeInput" placeholder="验证码"/>
 				<image class="clear" id="clear-code" wx:if="{{ code.length > 0 }}" src="/static/images/clear_input.png" catchtap="clearInput"></image>
 			</view>
 			<image class="code-img" src="https://dl.reg.163.com/cp?pd=yanxuan_web&pkid=SkeBZeG&random=1489903563234"></image>
-		</view>
+		</view>  -->
 
     <button type="default" class="login-btn" bindtap="accountLogin">账号登录</button>
 
-    	<view class="form-item-text">
-    		<navigator url="/pages/auth/register/register" class="register">注册账号</navigator>
+     <view class="form-item-text">
+      <navigator url="/pages/auth/register/register" class="register">注册账号</navigator>
 			<navigator url="/pages/auth/reset/reset" class="reset">忘记密码</navigator>
-    	</view>
+    </view> 
 
-      <button type="primary" class="login-btn" bindtap="wxLogin">微信直接登录</button>
+    <button type="primary" class="login-btn" bindtap="wxLogin">微信直接登录</button>
 
     </view>
 </view>