|
|
@@ -321,103 +321,175 @@ public class AppLoginController extends AppBaseController{
|
|
|
return R.error("账号或密码不能为空");
|
|
|
}
|
|
|
|
|
|
-// Map result = WxUtil.getAccessToken(param.getCode(), openProperties.getAppId(), openProperties.getSecret());
|
|
|
-// String unionid = result.get("unionid").toString();
|
|
|
- FsUser user = findUserByPhone(param.getPhone());
|
|
|
-
|
|
|
- // 校验用户是否存在及账号状态
|
|
|
- if (user == null) {
|
|
|
- return R.error("账号不存在,请先注册账号");
|
|
|
- } else if (user.getStatus() == 0) {
|
|
|
- return R.error("账号已停用");
|
|
|
- } else if (StringUtils.isEmpty(user.getPassword())) {
|
|
|
+ FsUser user = null;
|
|
|
+ List<FsUser> usersByPhone = findUsersByPhone(param.getPhone());
|
|
|
+ if (CollectionUtil.isEmpty(usersByPhone)){
|
|
|
return R.error("账号不存在,请先注册账号");
|
|
|
}
|
|
|
+ //当前手机号只绑定了单个微信,直接登录
|
|
|
+ if (usersByPhone.size()==1){
|
|
|
+ user = usersByPhone.get(0);
|
|
|
+ // 校验用户是否存在及账号状态
|
|
|
+ if (user == null) {
|
|
|
+ return R.error("账号不存在,请先注册账号");
|
|
|
+ } else if (user.getStatus() == 0&&StringUtils.isNotEmpty(param.getSource())&&!param.getSource().equals("iOS")) {
|
|
|
+ return R.error("账号已停用");
|
|
|
+ } else if (StringUtils.isEmpty(user.getPassword())) {
|
|
|
+ return R.error("账号不存在,请先注册账号");
|
|
|
+ }
|
|
|
|
|
|
- if (StringUtils.isNotEmpty(param.getJpushId())) {
|
|
|
- updateExistingUserJpushId(user, param.getJpushId());
|
|
|
- }
|
|
|
+ if (StringUtils.isNotEmpty(param.getJpushId())) {
|
|
|
+ updateExistingUserJpushId(user, param.getJpushId());
|
|
|
+// try {
|
|
|
+// //发送注册优惠券
|
|
|
+// fsUserCouponService.sendRegisterCoupon(user);
|
|
|
+// } catch (Exception e) {
|
|
|
+// logger.error("发送注册优惠券失败:{}",e.getMessage());
|
|
|
+// }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!Md5Utils.hash(param.getPassword()).equals(user.getPassword())) {
|
|
|
+ return R.error("密码不正确");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 更新登录设备信息
|
|
|
+ updateLoginDevice(user.getUserId(), param.getLoginDevice(), param.getSource());
|
|
|
|
|
|
- if (!Md5Utils.hash(param.getPassword()).equals(user.getPassword())) {
|
|
|
- return R.error("密码不正确");
|
|
|
+ //登录成功以后写入达人表
|
|
|
+ //fsUserTalentService.addFsUserTalent(fsUser.getUserId());
|
|
|
+ return generateTokenAndReturn(user);
|
|
|
+ }else {
|
|
|
+ return R.ok().put("users",usersByPhone);
|
|
|
}
|
|
|
|
|
|
- return generateTokenAndReturn(user);
|
|
|
|
|
|
}
|
|
|
|
|
|
+// private R handleLoginType3(FsUserLoginParam param) {
|
|
|
+// if (StringUtils.isEmpty(param.getPhone())) {
|
|
|
+// return R.error("获取手机号失败");
|
|
|
+// }
|
|
|
+// String phone = param.getPhone();
|
|
|
+// String encryptedPhone = encryptPhone(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"));
|
|
|
+//
|
|
|
+// // 根据手机号查用户
|
|
|
+// FsUser user = findUserByPhone(phone);
|
|
|
+//
|
|
|
+// // 获取微信用户信息
|
|
|
+// 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("微信授权失败");
|
|
|
+// }
|
|
|
+// param.setUnionid(unionid);
|
|
|
+// param.setOpenId(openid);
|
|
|
+// param.setNickName(nickname);
|
|
|
+// param.setAvatar(avatar);
|
|
|
+// // 手机号不存在,根据unionid查询
|
|
|
+// if (user == null) {
|
|
|
+// // 根据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("该微信已绑定其他用户,请勿重复绑定!");
|
|
|
+// }
|
|
|
+// userByUnionId.setPhone(encryptPhone(param.getPhone()));
|
|
|
+// userByUnionId.setNickName(nickname);
|
|
|
+// userByUnionId.setAvatar(avatar);
|
|
|
+// userByUnionId.setSex(sex);
|
|
|
+// userByUnionId.setJpushId(param.getJpushId());
|
|
|
+// userMapper.updateFsUser(userByUnionId);
|
|
|
+// return generateTokenAndReturn(userByUnionId);
|
|
|
+// }
|
|
|
+// }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);
|
|
|
+// }
|
|
|
+
|
|
|
private R handleLoginType3(FsUserLoginParam param) {
|
|
|
if (StringUtils.isEmpty(param.getPhone())) {
|
|
|
return R.error("获取手机号失败");
|
|
|
}
|
|
|
- String phone = param.getPhone();
|
|
|
- String encryptedPhone = encryptPhone(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"));
|
|
|
-
|
|
|
- // 根据手机号查用户
|
|
|
- FsUser user = findUserByPhone(phone);
|
|
|
-
|
|
|
- // 获取微信用户信息
|
|
|
- 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("微信授权失败");
|
|
|
- }
|
|
|
- param.setUnionid(unionid);
|
|
|
- param.setOpenId(openid);
|
|
|
- param.setNickName(nickname);
|
|
|
- param.setAvatar(avatar);
|
|
|
- // 手机号不存在,根据unionid查询
|
|
|
- if (user == null) {
|
|
|
- // 根据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("该微信已绑定其他用户,请勿重复绑定!");
|
|
|
+ // 根据手机号查询用户
|
|
|
+ FsUser user = null;
|
|
|
+ List<FsUser> usersByPhone = findUsersByPhone(param.getPhone());
|
|
|
+ if (CollectionUtil.isEmpty(usersByPhone)){
|
|
|
+ FsUser newUser = createNewUser(param);
|
|
|
+ if (StringUtils.isNotEmpty(newUser.getJpushId())) {
|
|
|
+// try {
|
|
|
+// //发送注册优惠券
|
|
|
+// fsUserCouponService.sendRegisterCoupon(newUser);
|
|
|
+// } catch (Exception e) {
|
|
|
+// logger.error("发送注册优惠券失败:{}",e.getMessage());
|
|
|
+// }
|
|
|
+ }
|
|
|
+ return R.ok().put("isNew",true).put("phone",encryptPhone(param.getPhone()));
|
|
|
+ }
|
|
|
+ if (usersByPhone.size()==1){
|
|
|
+ user = usersByPhone.get(0);
|
|
|
+ if (user.getUnionId()==null){
|
|
|
+ if (user.getPhone().length()<=11){
|
|
|
+ FsUser fsUser = new FsUser();
|
|
|
+ fsUser.setUserId(user.getUserId());
|
|
|
+ fsUser.setPhone(encryptPhone(param.getPhone()));
|
|
|
+ String ipAddr = IpUtils.getIpAddr(ServletUtils.getRequest());
|
|
|
+ fsUser.setLastIp(ipAddr);
|
|
|
+ userMapper.updateFsUser(fsUser);
|
|
|
+ logger.info("zyp \n【手机加密】:{}",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);
|
|
|
+ return R.ok().put("isNew",true).put("phone",encryptPhone(param.getPhone()));
|
|
|
}
|
|
|
- }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);
|
|
|
+ if (StringUtils.isNotEmpty(param.getJpushId())) {
|
|
|
+ updateExistingUserJpushId(user, param.getJpushId());
|
|
|
+// try {
|
|
|
+// //发送注册优惠券
|
|
|
+// fsUserCouponService.sendRegisterCoupon(user);
|
|
|
+// } catch (Exception e) {
|
|
|
+// logger.error("发送注册优惠券失败:{}",e.getMessage());
|
|
|
+// }
|
|
|
}
|
|
|
+ }else {
|
|
|
+ return R.ok().put("users",usersByPhone);
|
|
|
}
|
|
|
- //用户已存在且 unionid 存在更新 JPush ID
|
|
|
- if (StringUtils.isNotEmpty(param.getJpushId())) {
|
|
|
- updateExistingUserJpushId(user, param.getJpushId());
|
|
|
- }
|
|
|
+
|
|
|
+ // 更新登录设备信息
|
|
|
+ updateLoginDevice(user.getUserId(), param.getLoginDevice(), param.getSource());
|
|
|
+
|
|
|
return generateTokenAndReturn(user);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
private FsUser createNewUser(FsUserLoginParam param) {
|
|
|
FsUser newUser = new FsUser();
|
|
|
newUser.setLoginDevice(param.getLoginDevice() != null ? param.getLoginDevice() : null);
|
|
|
@@ -750,4 +822,19 @@ public class AppLoginController extends AppBaseController{
|
|
|
userService.updateFsUser(updateUser);
|
|
|
}
|
|
|
|
|
|
+ private List<FsUser> findUsersByPhone(String phone) {
|
|
|
+ // 先根据加密手机号查询用户
|
|
|
+ String jiami = (encryptPhone(phone));
|
|
|
+ List<FsUser> fsUsers = userMapper.selectFsUsersByPhoneLimitOne(jiami);
|
|
|
+ if (CollectionUtil.isEmpty(fsUsers)) {
|
|
|
+ fsUsers = userMapper.selectFsUsersByPhoneLimitOne(encryptPhoneOldKey(phone));
|
|
|
+ }
|
|
|
+ // 如果没有找到用户,再根据手机号查询
|
|
|
+ if (CollectionUtil.isEmpty(fsUsers)) {
|
|
|
+ fsUsers = userMapper.selectFsUsersByPhoneLimitOne(phone);
|
|
|
+
|
|
|
+ }
|
|
|
+ return fsUsers;
|
|
|
+ }
|
|
|
+
|
|
|
}
|