|
|
@@ -335,26 +335,66 @@ public class AppLoginController extends AppBaseController{
|
|
|
if (StringUtils.isEmpty(param.getPhone())) {
|
|
|
return R.error("获取手机号失败");
|
|
|
}
|
|
|
- // 根据手机号查询用户
|
|
|
- FsUser user = findUserByPhone(param.getPhone());
|
|
|
+ String phone = param.getPhone();
|
|
|
+ String encryptedPhone = encryptPhone(phone);
|
|
|
+
|
|
|
+ // 根据手机号查用户
|
|
|
+ FsUser user = findUserByPhone(phone);
|
|
|
+ logger.info("zyp app绑定微信,param: {}", param);
|
|
|
+ Map tokenResult = WxUtil.getAccessToken(param.getCode(), openProperties.getAppId(), openProperties.getSecret());
|
|
|
+ logger.info("APP的ID信息: {}", openProperties.getAppId());
|
|
|
+ logger.info("APP的密钥信息: {}", openProperties.getSecret());
|
|
|
+ String accessToken = tokenResult.get("access_token").toString();
|
|
|
+ String unionid = String.valueOf(tokenResult.get("unionid"));
|
|
|
+ logger.info("APP获取的唯一ID信息: {}",unionid);
|
|
|
+ String openid = String.valueOf(tokenResult.get("openid"));
|
|
|
+ // 获取微信用户信息
|
|
|
+ Map userInfo = WxUtil.getUserInfo(accessToken, openid);
|
|
|
+ if (userInfo == null) {
|
|
|
+ return R.error("获取微信用户信息失败");
|
|
|
+ }
|
|
|
+ String nickname = String.valueOf(userInfo.get("nickname"));
|
|
|
+ Integer sex = (Integer) userInfo.get("sex");
|
|
|
+ String avatar = String.valueOf(userInfo.get("headimgurl"));
|
|
|
+ if (tokenResult == null || tokenResult.get("access_token") == null) {
|
|
|
+ return R.error("微信授权失败");
|
|
|
+ }
|
|
|
+ // 手机号不存在,根据unionid查询
|
|
|
if (user == null) {
|
|
|
- createNewUser(param);
|
|
|
- return R.ok().put("isNew",true).put("phone",encryptPhone(param.getPhone()));
|
|
|
- } else {
|
|
|
- if (user.getUnionId()==null){
|
|
|
- if (user.getPhone().length()<=11){
|
|
|
- FsUser fsUser = new FsUser();
|
|
|
- fsUser.setUserId(user.getUserId());
|
|
|
- fsUser.setPhone(encryptPhone(param.getPhone()));
|
|
|
- userMapper.updateFsUser(fsUser);
|
|
|
- logger.info("zyp \n【手机加密】:{}",encryptPhone(param.getPhone()));
|
|
|
+ // 根据unionid查询不到,创建新用户
|
|
|
+ FsUser userByUnionId = userMapper.selectFsUserByUnionid(unionid);
|
|
|
+ if (userByUnionId == null) {
|
|
|
+ FsUser newUser = createNewUser(param);
|
|
|
+ return generateTokenAndReturn(newUser);
|
|
|
+ }else {
|
|
|
+ //根据手机号查不到但是根据unionid查到了,将手机号和这个用户关联起来
|
|
|
+ if (userByUnionId.getPhone() != null){
|
|
|
+ return R.error("该微信已绑定其他用户,请勿重复绑定!");
|
|
|
}
|
|
|
- return R.ok().put("isNew",true).put("phone",encryptPhone(param.getPhone()));
|
|
|
+ userByUnionId.setPhone(encryptPhone(param.getPhone()));
|
|
|
+ userByUnionId.setNickName(nickname);
|
|
|
+ userByUnionId.setAvatar(avatar);
|
|
|
+ userByUnionId.setSex(sex);
|
|
|
+ userByUnionId.setJpushId(param.getJpushId());
|
|
|
+ userMapper.updateFsUser(userByUnionId);
|
|
|
+ return generateTokenAndReturn(userByUnionId);
|
|
|
}
|
|
|
- if (StringUtils.isNotEmpty(param.getJpushId())) {
|
|
|
- updateExistingUserJpushId(user, param.getJpushId());
|
|
|
+ }else {
|
|
|
+ // 手机号存在,但unionId为空,绑定微信
|
|
|
+ if (user.getUnionId() == null) {
|
|
|
+ user.setUnionId(unionid);
|
|
|
+ user.setNickName(nickname);
|
|
|
+ user.setAvatar(avatar);
|
|
|
+ user.setSex(sex);
|
|
|
+ user.setJpushId(param.getJpushId());
|
|
|
+ userMapper.updateFsUser(user);
|
|
|
+ return generateTokenAndReturn(user);
|
|
|
}
|
|
|
}
|
|
|
+ //用户已存在且 unionid 存在更新 JPush ID
|
|
|
+ if (StringUtils.isNotEmpty(param.getJpushId())) {
|
|
|
+ updateExistingUserJpushId(user, param.getJpushId());
|
|
|
+ }
|
|
|
return generateTokenAndReturn(user);
|
|
|
}
|
|
|
|