浏览代码

Merge remote-tracking branch 'origin/master'

guojing 5 年之前
父节点
当前提交
a7d3db9287

+ 4 - 4
whepi-web/src/main/java/com/bofeng/controller/WxUserOpenController.java

@@ -33,14 +33,14 @@ public class WxUserOpenController {
     private WxUserOpenService wxUserOpenService;
 
     @GetMapping("/userOpen/loginTest")
-    public Model<UserOpen> loginTest() {
+    public Model<UserOpen> loginTest() throws Exception {
         val parser = HttpParameterParser.newInstance(HttpUtils.currentRequest());
         String openId = parser.getString("openId");
         String code = parser.getString("code");
         if (StringUtils.isNullOrEmpty(code)) {
             return Model.newFail("code为空");
         }
-        UserOpen userOpen = homeService.getUserOpenByCode(code);
+        UserOpen userOpen = homeService.getUserOpenByCodeForWx(code);
         if (userOpen == null) {
             return Model.newFail("微信登录失败");
         }
@@ -54,7 +54,7 @@ public class WxUserOpenController {
 
     @ApiOperation("用户注册页面点登录")
     @PostMapping("/userOpen/login")
-    public Model<UserOpen> login(JsonWapper jsonWapper) {
+    public Model<UserOpen> login(JsonWapper jsonWapper) throws Exception {
         val parser = HttpParameterParser.newInstance(HttpUtils.currentRequest());
         String openId = parser.getString("openId");
         String code = parser.getString("code");
@@ -69,7 +69,7 @@ public class WxUserOpenController {
                 return Model.newFail("code为空");
             }
         }
-        UserOpen userOpen = homeService.getUserOpenByCode(code);
+        UserOpen userOpen = homeService.getUserOpenByCodeForWx(code);
         if (userOpen == null) {
             return Model.newFail("微信登录失败");
         }

+ 41 - 0
whepi-web/src/main/java/com/bofeng/service/HomeService.java

@@ -90,4 +90,45 @@ public class HomeService {
         }
         return user;
     }
+
+    @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
+    public UserOpen getUserOpenByCodeForWx(String code) throws Exception {
+        ParseCurrentOpenId wxToken = userService.currentWxUserByCode(code);
+        if (wxToken == null || wxToken.getWxMpUser() == null) {
+            throw new Exception("token获取失败!");
+        }
+        WxMpUser wxMpUser = wxToken.getWxMpUser();
+        if (wxMpUser == null) {
+            throw new Exception("微信用户信息获取失败!");
+        }
+        UserOpen user = userOpenMapper.selectByOpenId(wxMpUser.getOpenId());
+        if (user == null) {
+            // 账户没有注册,需要注册
+            UserOpen userOpen = new UserOpen();
+            userOpen.setUserId(IdWorker.getId());
+            userOpen.setOpenId(wxMpUser.getOpenId());
+            userOpen.setNickName(wxMpUser.getNickname());
+            userOpen.setSexDesc(wxMpUser.getSexDesc());
+            userOpen.setSex(wxMpUser.getSex());
+            userOpen.setCity(wxMpUser.getCity());
+            userOpen.setProvince(wxMpUser.getProvince());
+            userOpen.setCountry(wxMpUser.getCountry());
+            userOpen.setHeadImgUrl(wxMpUser.getHeadImgUrl());
+            userOpen.setBeActive("Y");
+            userOpenMapper.insert(userOpen);
+            return userOpen;
+        }
+        if (!user.getNickName().equals(wxMpUser.getNickname())) {
+            user.setOpenId(wxMpUser.getOpenId());
+            user.setNickName(wxMpUser.getNickname());
+            user.setSexDesc(wxMpUser.getSexDesc());
+            user.setSex(wxMpUser.getSex());
+            user.setCity(wxMpUser.getCity());
+            user.setProvince(wxMpUser.getProvince());
+            user.setCountry(wxMpUser.getCountry());
+            user.setHeadImgUrl(wxMpUser.getHeadImgUrl());
+            userOpenMapper.updateById(user);
+        }
+        return user;
+    }
 }