|
@@ -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;
|
|
|
+ }
|
|
|
}
|