@Override public JsonData saveWxUserPhone(String token, String encryptedData, String iv) { String msg = "success"; Integer code = 200; log.info("进入保存用户号码接口,token=" + token); try { Map<String,String> map = getOpenidAndSessionkey(URLDecoder.decode(token)); String openid = map.get("openid"); String sessionKey = map.get("sessionKey"); WxMaPhoneNumberInfo phoneInfo = userMiniService.getUserService().getPhoneNoInfo(sessionKey, encryptedData, iv); String phoneNumber = phoneInfo.getPhoneNumber(); log.info("小程序接口,用户手机号码:"+phoneNumber); if(userInfoService.selectCountById(openid)) { User user = User.builder().userId(openid).phoneNumber(phoneNumber).build(); userInfoService.updateUserInfo(user); log.info("小程序接口,保存用户详细信息:"+JSONObject.toJSONString(user)); } } catch (Exception e) { code = 303; msg = e.getMessage(); log.info("小程序接口,保存用户号码报错:"+e.getMessage()); } return new JsonData(code,msg); }简化代码
时间: 2024-03-21 21:39:13 浏览: 67
OkHttp踩坑随笔为何 response.body().string() 只能调用一次
下面是简化后的代码:
```
@Override
public JsonData saveWxUserPhone(String token, String encryptedData, String iv) {
try {
Map<String,String> map = getOpenidAndSessionkey(URLDecoder.decode(token));
String openid = map.get("openid");
String sessionKey = map.get("sessionKey");
WxMaPhoneNumberInfo phoneInfo = userMiniService.getUserService().getPhoneNoInfo(sessionKey, encryptedData, iv);
String phoneNumber = phoneInfo.getPhoneNumber();
if(userInfoService.selectCountById(openid)) {
User user = User.builder().userId(openid).phoneNumber(phoneNumber).build();
userInfoService.updateUserInfo(user);
}
return new JsonData(200, "success");
} catch (Exception e) {
return new JsonData(303, e.getMessage());
}
}
```
该方法的作用是保存用户的手机号码。其中,通过传入的 token 获取用户的 openid 和 sessionKey,然后通过 sessionKey、encryptedData 和 iv 解密用户的手机号码,最后将用户的手机号码和 openid 封装成 User 对象进行更新。如果更新成功,返回状态码 200 和 "success",否则返回状态码 303 和错误信息。
阅读全文