oying-system/src/main/java/com/oying/modules/security/rest/AuthController.java
@@ -240,7 +240,7 @@ authUser.setUsername(userDto.getUsername()); break; case NEW: jsonObject = weiXinService.getPhoneNumber(authUser.getCode()); jsonObject = weiXinService.getRiderPhoneNumber(authUser.getCode()); String phone = jsonObject.getJSONObject("phone_info").getString("purePhoneNumber"); User user1 = userService.findByName(phone); if (user1 == null) { @@ -248,22 +248,23 @@ User user = new User(); user.setUsername(phone); user.setNickName("OYING-" + phone); user.setUserType(ConstantsKey.RIDER); user.setUserType(ConstantsKey.BUYER); user.setPhone(phone); user.setGender("男"); user.setEnabled(true); getRole(user); user.setPassword(passwordEncoder.encode(phone.substring(phone.length() - 6))); user.setOpenid(authUser.getUsername()); user.setRiderOpenId(authUser.getUsername()); userService.create(user); } else { if (user1.getUserType().equals(ConstantsKey.RIDER)) { if (user1.getUserType().equals(ConstantsKey.BUYER)) { if (user1.getRoles() == null) { getRole(user1); } } user1.setOpenid(authUser.getUsername()); userService.update(user1); user1.setRiderOpenId(authUser.getUsername()); // userService.update(user1); userService.updateRiderOpenId(user1); } authUser.setUsername(phone); break; oying-system/src/main/java/com/oying/modules/security/service/WeiXinService.java
@@ -59,6 +59,32 @@ } /** * POST 获取稳定版接口调用凭据 获取小程序全局唯一后台接口调用凭据,token有效期为7200s,开发者需要进行妥善保存。 * * @return accessToken */ public String getStableAccessTokenRider() { String TokenKey = weiXinProperties.getTokenKey() + "_rider"; String accessToken; if (redisUtils.isExpire(TokenKey)) { // 获取接口调用凭据 String url = weiXinProperties.getGetStableAccessToken(); Map<String, Object> map = new LinkedHashMap<>(); map.put("grant_type", "client_credential"); map.put("appid", weiXinProperties.getRiderAppId()); map.put("secret", weiXinProperties.getRiderAppSecret()); map.put("force_refresh", false); JSONObject jsonObject = HttpRequest.exchangeJsonObject(HttpMethod.POST, url, map); accessToken = jsonObject.getString("access_token"); redisUtils.set(TokenKey, accessToken, weiXinProperties.getTokenTime()); } else { // 查询接口调用凭据 accessToken = (String) redisUtils.get(TokenKey); } return accessToken; } /** * GET 小程序登录 登录凭证校验。通过 wx.login 接口获得临时登录凭证 code 后传到开发者服务器调用此接口完成登录流程 * * @param js_code 登录时获取的 code,可通过wx.login获取 @@ -95,6 +121,20 @@ } /** * POST 获取手机号 该接口用于将code换取用户手机号。 说明,每个code只能使用一次,code的有效期为5min。 * * @param code 手机号获取凭证 * @return JSONObject */ public JSONObject getRiderPhoneNumber(String code) { String url = weiXinProperties.getGetPhoneNumber(); url = url.replace("{accessToken}", getStableAccessTokenRider()); Map<String, Object> map = new LinkedHashMap<>(); map.put("code", code); return HttpRequest.exchangeJsonObject(HttpMethod.POST, url, map); } /** * POST 该接口用于发送订阅消息。 * * @param data 请求参数 oying-system/src/main/java/com/oying/modules/system/service/UserService.java
@@ -123,4 +123,5 @@ */ void resetPwd(Set<Long> ids, String pwd); void updateRiderOpenId(User user1); } oying-system/src/main/java/com/oying/modules/system/service/impl/UserServiceImpl.java
@@ -206,6 +206,14 @@ } @Override public void updateRiderOpenId(User user1) { User user = new User(); user.setId(user1.getId()); user.setRiderOpenId(user1.getRiderOpenId()); userMapper.updateById(user); } @Override @Transactional(rollbackFor = Exception.class) public Map<String, String> updateAvatar(MultipartFile multipartFile) { // 文件大小验证