ソースを参照

加入微信登录方法功能

wuxw 6 年 前
コミット
f3a501470f

+ 88 - 10
AppFrontService/src/main/java/com/java110/app/controller/WxLogin.java

@@ -1,13 +1,15 @@
 package com.java110.app.controller;
 
 import com.java110.core.base.controller.BaseController;
-import com.java110.core.context.IPageData;
-import com.java110.utils.constant.CommonConstant;
+import com.java110.dto.wxLogin.UserInfo;
+import com.java110.dto.wxLogin.WxLoginInfo;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.ui.Model;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletRequest;
@@ -16,17 +18,93 @@ import javax.servlet.http.HttpServletRequest;
  * 微信小程序登录处理类
  */
 @RestController
-public class WxLogin  extends BaseController {
+public class WxLogin extends BaseController {
     private final static Logger logger = LoggerFactory.getLogger(WxLogin.class);
 
 
-    @RequestMapping(path = "/login")
-    public String login(Model model, HttpServletRequest request) {
-        String template = "index";
+    /**
+     * 微信登录接口
+     *
+     * @param wxLoginInfo
+     * @param request
+     */
+    @RequestMapping(path = "/loginWx", method = RequestMethod.POST)
+    public ResponseEntity<String> loginWx(@RequestBody WxLoginInfo wxLoginInfo, HttpServletRequest request) {
+        ResponseEntity<String> responseEntity = null;
+        String code = wxLoginInfo.getCode();
+        UserInfo userInfo = wxLoginInfo.getUserInfo();
+        if (code == null || userInfo == null) {
+            logger.error("code is null");
+            responseEntity = new ResponseEntity<>("code is null", HttpStatus.BAD_REQUEST);
+            return responseEntity;
+        }
+        String sessionKey = null;
+        String openId = null;
+        try {
+            /*WxMaJscode2SessionResult result = this.wxMaService.getUserService().getSessionInfo(code);
+            sessionKey = result.getSessionKey();
+            openId = result.getOpenid();*/
+        } catch (Exception e) {
+            logger.error("login fail by wx", e);
+            e.printStackTrace();
+        }
+        if (sessionKey == null || openId == null) {
+            responseEntity = new ResponseEntity<>("code is null", HttpStatus.BAD_REQUEST);
+        }
+        //login first
+        /*User user = userService.queryByOpenid(openId);
+        if (user == null) {
+            user = new User();
+            user.setUsername(openId);
+            //Md5Hash md5Hash = new Md5Hash(openId, openId,1024);
+            user.setPassword(openId); //密码保存加密的openid
+            user.setWeixinOpenid(openId);
+            user.setAvatar(userInfo.getAvatarUrl());
+            user.setNickname(userInfo.getNickName());
+            user.setGender(userInfo.getGender());
+            user.setUserLevel((byte) 0); //普通用户
+            user.setStatus((byte) 0); //0可用 1禁用 2注销
+            user.setLastLoginTime(LocalDateTime.now());
+            user.setLastLoginIp(IpUtil.getIpAddr(request));
+            user.setSessionKey(sessionKey);
+            //user.setRoleid("2"); //默认普通用户
+            userService.add(user);
+        } else {
+            user.setLastLoginTime(LocalDateTime.now());
+            user.setLastLoginIp(IpUtil.getIpAddr(request));
+            user.setSessionKey(sessionKey);
+            //LogUtil.info("登录 " + user.toString());
+            if (userService.updateById(user) == 0) {
+                //LogUtil.error("update login user error");
+                return ResponseUtil.updatedDataFailed();
+            }
+        }
+        String token = UserTokenManager.generateToken(user.getId());
+        JSONObject jsonObject = new JSONObject();
+        //生成token
+        jsonObject.put("errno", "0");
+        jsonObject.put("token", token);
+        jsonObject.put("userInfo", userInfo);
+        LOGGER.info(jsonObject);
+        //LogUtil.info("login success");
+        //LogUtil.info(jsonObject);
+        return ResponseUtil.ok(jsonObject);*/
+
+        return new ResponseEntity<>("",HttpStatus.OK);
 
-        IPageData pd = (IPageData) request.getAttribute(CommonConstant.CONTEXT_PAGE_DATA);
 
-        return template;
     }
 
+    /**
+     * 微信登出
+     *
+     * @return
+     */
+   /* @RequestMapping("/logout")
+    public JSONObject logoutWx() {
+        Subject subject = SecurityUtils.getSubject();
+        subject.logout();
+        return ResponseUtil.ok();
+    }*/
+
 }

+ 82 - 0
java110-bean/src/main/java/com/java110/dto/wxLogin/UserInfo.java

@@ -0,0 +1,82 @@
+package com.java110.dto.wxLogin;
+
+import java.io.Serializable;
+
+public class UserInfo implements Serializable {
+    private String nickName;
+    private String avatarUrl;
+    private String country;
+    private String province;
+    private String city;
+    private String language;
+    private Byte gender;
+
+    public String getCountry() {
+        return country;
+    }
+
+    public void setCountry(String country) {
+        this.country = country;
+    }
+
+    public String getProvince() {
+        return province;
+    }
+
+    public void setProvince(String province) {
+        this.province = province;
+    }
+
+    public String getCity() {
+        return city;
+    }
+
+    public void setCity(String city) {
+        this.city = city;
+    }
+
+    public String getLanguage() {
+        return language;
+    }
+
+    public void setLanguage(String language) {
+        this.language = language;
+    }
+
+    public Byte getGender() {
+        return gender;
+    }
+
+    public void setGender(Byte gender) {
+        this.gender = gender;
+    }
+
+    public String getNickName() {
+        return nickName;
+    }
+
+    public void setNickName(String nickName) {
+        this.nickName = nickName;
+    }
+
+    public String getAvatarUrl() {
+        return avatarUrl;
+    }
+
+    public void setAvatarUrl(String avatarUrl) {
+        this.avatarUrl = avatarUrl;
+    }
+
+    @Override
+    public String toString() {
+        return "UserInfo{" +
+                "nickName='" + nickName + '\'' +
+                ", avatarUrl='" + avatarUrl + '\'' +
+                ", country='" + country + '\'' +
+                ", province='" + province + '\'' +
+                ", city='" + city + '\'' +
+                ", language='" + language + '\'' +
+                ", gender=" + gender +
+                '}';
+    }
+}

+ 22 - 0
java110-bean/src/main/java/com/java110/dto/wxLogin/WxLoginInfo.java

@@ -0,0 +1,22 @@
+package com.java110.dto.wxLogin;
+
+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;
+    }
+}