|
|
@@ -306,73 +306,111 @@ public class AppLoginController extends AppBaseController{
|
|
|
Integer sex = (Integer) userInfo.get("sex");
|
|
|
String avatar = userInfo.get("headimgurl").toString();
|
|
|
FsUser user = userService.selectFsUserByUnionid(unionid);
|
|
|
+ // 苹果用户需要特殊处理
|
|
|
+ FsUser appleUser=null;
|
|
|
+ if(StringUtils.isNotBlank(param.getAppleKey())){
|
|
|
+ appleUser= userService.selectFsUserByAppleKey(param.getAppleKey());
|
|
|
+ }
|
|
|
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
- if (user == null) {
|
|
|
- user = new FsUser();
|
|
|
- user.setLoginDevice(param.getLoginDevice()!=null ? param.getLoginDevice() : null);
|
|
|
- user.setSource(param.getSource()!=null ? param.getSource() : null);
|
|
|
- user.setNickName(nickname);
|
|
|
- user.setAvatar(avatar);
|
|
|
- user.setAppOpenId(openid);
|
|
|
- if (sex!=0){
|
|
|
- user.setSex(sex);
|
|
|
- }
|
|
|
- user.setUnionId(unionid);
|
|
|
- // 新用户 - 添加 appId
|
|
|
- user.setAppId(appId);
|
|
|
- user.setCreateTime(new Date());
|
|
|
- user.setAppCreateTime(new Date());
|
|
|
- user.setStatus(1);
|
|
|
- user.setAppleKey(param.getAppleKey());
|
|
|
- if (StringUtils.isNotEmpty(param.getJpushId())) {
|
|
|
- user.setJpushId(param.getJpushId());
|
|
|
- }
|
|
|
- userService.insertFsUser(user);
|
|
|
- String token = jwtUtils.generateToken(user.getUserId());
|
|
|
- redisCache.setCacheObject("userToken:" + user.getUserId(), token, 604800, TimeUnit.SECONDS);
|
|
|
- map.put("token", token);
|
|
|
- map.put("isNew", true);
|
|
|
- map.put("user", user);
|
|
|
- map.put("unionid",unionid);
|
|
|
- openIMService. accountCheck("U"+user.getUserId(),"1");
|
|
|
-
|
|
|
- return R.ok(map);
|
|
|
- } else {
|
|
|
- // 老用户 - 检查并添加appId(不重复添加)
|
|
|
- String updatedAppId = addAppIdIfNotExists(user.getAppId(), appId);
|
|
|
-
|
|
|
- FsUser userMap = new FsUser();
|
|
|
- userMap.setUserId(user.getUserId());
|
|
|
- if (!updatedAppId.equals(user.getAppId())) {
|
|
|
- userMap.setAppId(updatedAppId);
|
|
|
- }
|
|
|
- if (StringUtils.isNotEmpty(param.getJpushId())) {
|
|
|
- userMap.setJpushId(param.getJpushId());
|
|
|
- }
|
|
|
- if (StringUtils.isNotEmpty(openid)) {
|
|
|
+ if (user == null) { // 微信用户不存在
|
|
|
+ if(appleUser != null){ // 存在苹果用户,将微信信息绑定到苹果用户
|
|
|
+ FsUser userMap = new FsUser();
|
|
|
+ userMap.setUserId(appleUser.getUserId());
|
|
|
+ userMap.setNickName(nickname);
|
|
|
+ userMap.setAvatar(avatar);
|
|
|
userMap.setAppOpenId(openid);
|
|
|
+ if (sex!=0){
|
|
|
+ userMap.setSex(sex);
|
|
|
+ }
|
|
|
+ userMap.setUnionId(unionid);
|
|
|
+ if(appleUser.getAppCreateTime()== null){
|
|
|
+ userMap.setAppCreateTime(new Date());
|
|
|
+ }
|
|
|
+ if(StringUtils.isBlank(appleUser.getAppleKey())){
|
|
|
+ userMap.setAppleKey(param.getAppleKey());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotEmpty(param.getJpushId())) {
|
|
|
+ userMap.setJpushId(param.getJpushId());
|
|
|
+ }
|
|
|
+ userMap.setLoginDevice(param.getLoginDevice()!=null ? param.getLoginDevice() : null);
|
|
|
+ userService.updateFsUser(userMap);
|
|
|
+ user=appleUser;
|
|
|
+ }else { // 完全新用户,创建新账户
|
|
|
+ user = new FsUser();
|
|
|
+ user.setLoginDevice(param.getLoginDevice()!=null ? param.getLoginDevice() : null);
|
|
|
+ user.setSource(param.getSource()!=null ? param.getSource() : null);
|
|
|
+ user.setNickName(nickname);
|
|
|
+ user.setAvatar(avatar);
|
|
|
+ user.setAppOpenId(openid);
|
|
|
+ if (sex!=0){
|
|
|
+ user.setSex(sex);
|
|
|
+ }
|
|
|
+ user.setUnionId(unionid);
|
|
|
+ // 新用户 - 添加 appId
|
|
|
+ user.setAppId(appId);
|
|
|
+ user.setCreateTime(new Date());
|
|
|
+ user.setAppCreateTime(new Date());
|
|
|
+ user.setStatus(1);
|
|
|
+ user.setAppleKey(param.getAppleKey());
|
|
|
+ if (StringUtils.isNotEmpty(param.getJpushId())) {
|
|
|
+ user.setJpushId(param.getJpushId());
|
|
|
+ }
|
|
|
+ userService.insertFsUser(user);
|
|
|
}
|
|
|
- if(user.getAppCreateTime()== null){
|
|
|
- userMap.setAppCreateTime(new Date());
|
|
|
- }
|
|
|
- if(StringUtils.isBlank(user.getAppleKey())){
|
|
|
- userMap.setAppleKey(param.getAppleKey());
|
|
|
- }
|
|
|
- userMap.setLoginDevice(param.getLoginDevice()!=null ? param.getLoginDevice() : null);
|
|
|
- userService.updateFsUser(userMap);
|
|
|
+ } else {// 微信用户已存在
|
|
|
+ if(appleUser != null){// 苹果账户也存在
|
|
|
+ // 需要合并账号,保留微信账号 删除苹果账号
|
|
|
+ FsUser userMap = new FsUser();
|
|
|
+ userMap.setUserId(user.getUserId());
|
|
|
+ userMap.setIntegral(appleUser.getIntegral()+user.getIntegral());
|
|
|
+ if (StringUtils.isNotEmpty(param.getJpushId())) {
|
|
|
+ userMap.setJpushId(param.getJpushId());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotEmpty(openid)) {
|
|
|
+ userMap.setAppOpenId(openid);
|
|
|
+ }
|
|
|
+ if(user.getAppCreateTime()== null){
|
|
|
+ userMap.setAppCreateTime(new Date());
|
|
|
+ }
|
|
|
+ if(StringUtils.isBlank(user.getAppleKey())){
|
|
|
+ userMap.setAppleKey(param.getAppleKey());
|
|
|
+ }
|
|
|
+ userMap.setLoginDevice(param.getLoginDevice()!=null ? param.getLoginDevice() : null);
|
|
|
|
|
|
- if (StringUtils.isEmpty(user.getPhone())) {
|
|
|
- String token = jwtUtils.generateToken(user.getUserId());
|
|
|
- redisCache.setCacheObject("userToken:" + user.getUserId(), token, 604800, TimeUnit.SECONDS);
|
|
|
- map.put("token", token);
|
|
|
- map.put("isNew", true);
|
|
|
- map.put("user", user);
|
|
|
- map.put("unionid",user.getUnionId());
|
|
|
- return R.ok(map);
|
|
|
+ if(userService.updateFsUser(userMap)>0){
|
|
|
+ userService.deleteFsUserByUserId(appleUser.getUserId());
|
|
|
+ }else {
|
|
|
+ return R.error("账号合并,登录异常");
|
|
|
+ }
|
|
|
+
|
|
|
+ }else { // 老用户正常登录,更新信息
|
|
|
+ // 老用户 - 检查并添加appId(不重复添加)
|
|
|
+ String updatedAppId = addAppIdIfNotExists(user.getAppId(), appId);
|
|
|
+
|
|
|
+ FsUser userMap = new FsUser();
|
|
|
+ userMap.setUserId(user.getUserId());
|
|
|
+ if (!updatedAppId.equals(user.getAppId())) {
|
|
|
+ userMap.setAppId(updatedAppId);
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotEmpty(param.getJpushId())) {
|
|
|
+ userMap.setJpushId(param.getJpushId());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotEmpty(openid)) {
|
|
|
+ userMap.setAppOpenId(openid);
|
|
|
+ }
|
|
|
+ if(user.getAppCreateTime()== null){
|
|
|
+ userMap.setAppCreateTime(new Date());
|
|
|
+ }
|
|
|
+ if(StringUtils.isBlank(user.getAppleKey())){
|
|
|
+ userMap.setAppleKey(param.getAppleKey());
|
|
|
+ }
|
|
|
+ userMap.setLoginDevice(param.getLoginDevice()!=null ? param.getLoginDevice() : null);
|
|
|
+ userService.updateFsUser(userMap);
|
|
|
}
|
|
|
- openIMService. accountCheck("U"+user.getUserId(),"1");
|
|
|
}
|
|
|
+ // 检测im是否创建用户
|
|
|
+ openIMService. accountCheck("U"+user.getUserId(),"1");
|
|
|
int isFirstLogin = userNewTaskService.performTaskOne(user.getUserId());
|
|
|
String token = jwtUtils.generateToken(user.getUserId());
|
|
|
redisCache.setCacheObject("userToken:" + user.getUserId(), token, 604800, TimeUnit.SECONDS);
|
|
|
@@ -400,9 +438,32 @@ public class AppLoginController extends AppBaseController{
|
|
|
// 根据苹果key查询用户
|
|
|
FsUser user = userMapper.findUserByAppleKey(param.getAppleKey());
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
+ // 因苹果审核问题, 如果开关打开 则创建新用户 ,若开关关闭需要校验 unionId
|
|
|
+ String key="appleCheckFlag";
|
|
|
+ Boolean flag =redisCache.getCacheObject(key);
|
|
|
+ if(flag==null){
|
|
|
+ flag =false; // 默认关闭
|
|
|
+ }
|
|
|
+
|
|
|
if (user == null) {
|
|
|
- map.put("isNew", true); // 新账户,使用微信登录绑定appleKey
|
|
|
- return R.ok(map);
|
|
|
+ if( flag){
|
|
|
+ user = new FsUser();
|
|
|
+ user.setLoginDevice(param.getLoginDevice()!=null ? param.getLoginDevice() : null);
|
|
|
+ user.setSource(param.getSource()!=null ? param.getSource() : null);
|
|
|
+ user.setAppleKey(param.getAppleKey());
|
|
|
+ user.setNickName("苹果用户");
|
|
|
+ user.setCreateTime(new Date());
|
|
|
+ user.setAppCreateTime(new Date());
|
|
|
+ user.setStatus(1);
|
|
|
+ user.setAvatar("https://cos.his.cdwjyyh.com/fs/20240926/420728ee06e54575ba82665dedb4756b.png");
|
|
|
+ if (StringUtils.isNotEmpty(param.getJpushId())) {
|
|
|
+ user.setJpushId(param.getJpushId());
|
|
|
+ }
|
|
|
+ userService.insertFsUser(user);
|
|
|
+ }else {
|
|
|
+ map.put("isNew", true); // 新账户,使用微信登录绑定appleKey
|
|
|
+ return R.ok(map);
|
|
|
+ }
|
|
|
} else {
|
|
|
if (StringUtils.isNotEmpty(param.getJpushId())) {
|
|
|
updateExistingUserJpushId(user, param.getJpushId());
|
|
|
@@ -413,7 +474,8 @@ public class AppLoginController extends AppBaseController{
|
|
|
logger.error("发送注册优惠券失败:{}",e.getMessage());
|
|
|
}
|
|
|
}
|
|
|
- if (StringUtils.isEmpty(user.getUnionId())) {
|
|
|
+ // 审核通过后才校验
|
|
|
+ if (!flag && StringUtils.isEmpty(user.getUnionId())) {
|
|
|
map.put("isNew", true);
|
|
|
return R.ok(map);
|
|
|
}
|