浏览代码

APP苹果登录

wjj 4 天之前
父节点
当前提交
777678f7d8

+ 3 - 0
fs-service/src/main/java/com/fs/his/domain/FsUser.java

@@ -174,6 +174,9 @@ public class FsUser extends BaseEntity
 
     /** 用户来源;2:超拼网,null或者空为系统客户*/
     private Integer userSource;
+
+    private String appleKey; // 苹果key登陆验证
+
     public void setNickName(String nickname)
     {
         if(StringUtils.isNotEmpty(nickname)){

+ 3 - 0
fs-service/src/main/java/com/fs/his/mapper/FsUserMapper.java

@@ -427,4 +427,7 @@ public interface FsUserMapper
      * @param userIds
      * **/
     List<FsUser> selectUserListByUserIds(@Param("userIds") List<Long> userIds);
+
+    @Select("select * from fs_user where apple_key = #{appleKey}")
+    FsUser findUserByAppleKey(String appleKey);
 }

+ 94 - 0
fs-user-app/src/main/java/com/fs/app/controller/AppLoginController.java

@@ -311,6 +311,100 @@ public class AppLoginController extends AppBaseController{
 
     }
 
+    @ApiOperation("苹果登录")
+    @PostMapping("/loginByApple")
+    @Transactional
+    public R loginByApple(@Validated @RequestBody FsUserLoginByAppleParam param) {
+        try {
+            if (StringUtils.isEmpty(param.getAppleKey())) {
+                return R.error("获取苹果key失败");
+            }
+            // 根据苹果key查询用户
+            FsUser user = userMapper.findUserByAppleKey(param.getAppleKey());
+            Map<String, Object> map = new HashMap<>();
+            if (user == null) {
+                map.put("isNew", true);
+                return R.ok(map);
+            } else {
+                if (user.getStatus()==0&&StringUtils.isNotEmpty(param.getSource())&&!param.getSource().equals("iOS")){
+                    return R.error("登录失败,账户被禁用");
+                }
+                if (StringUtils.isNotEmpty(param.getJpushId())) {
+                    updateExistingUserJpushId(user, param.getJpushId());
+                }
+                if (StringUtils.isEmpty(user.getPhone())) {
+                    map.put("isNew", true);
+                    return R.ok(map);
+                }
+            }
+            /*if (user.getStatus()==0){
+                return R.error("登录失败,账户被禁用");
+            }*/
+            int isFirstLogin = userNewTaskService.performTaskOne(user.getUserId());
+            String token = jwtUtils.generateToken(user.getUserId());
+            redisCache.setCacheObject("userToken:" + user.getUserId(), token, 604800, TimeUnit.SECONDS);
+            map.put("token", token);
+            map.put("user", user);
+            map.put("isFirst",isFirstLogin);
+            return R.ok(map);
+        }catch (Exception e){
+            logger.error("zyp 苹果登录失败:{}", e.getMessage());
+            return R.error("登录失败");
+        }
+    }
+
+    private FsUser createNewAppleUser(FsUserEditPhoneParam param, String phoneNumber) {
+        FsUser newUser = new FsUser();
+        newUser.setLoginDevice(param.getLoginDevice()!=null ? param.getLoginDevice() : null);
+        newUser.setSource(param.getSource()!=null ? param.getSource() : null);
+        newUser.setHistoryApp("app");
+        newUser.setAppleKey(param.getAppleKey());
+        newUser.setPhone(param.getPhone());
+        newUser.setPassword(Md5Utils.hash(param.getPassword()));
+        newUser.setNickName("苹果用户" + param.getPhone().substring(param.getPhone().length() - 4));
+        newUser.setCreateTime(new Date());
+        newUser.setStatus(1);
+        newUser.setAvatar("https://cos.his.cdwjyyh.com/fs/20240926/420728ee06e54575ba82665dedb4756b.png");
+        if (StringUtils.isNotEmpty(param.getJpushId())) {
+            newUser.setJpushId(param.getJpushId());
+        }
+        userService.insertFsUser(newUser);
+        return newUser;
+
+    }
+
+    @ApiOperation("绑定手机号")
+    @PostMapping("/setIPhoneNumber")
+    public R setIPhoneNumber(@Validated @RequestBody FsUserEditPhoneParam param) {
+        FsUser userMap = findUserByPhone(param.getPhone());
+        if (userMap==null) {
+            //加密手机号查询
+            userMap = findUserByPhone(encryptPhone(param.getPhone()));
+        }
+        if (userMap != null) {
+            if (StringUtils.isNotEmpty(userMap.getAppleKey()) && !param.getAppleKey().equals(userMap.getAppleKey())) {
+                return R.error("该手机号已绑定其他账号");
+            }
+            if (param.getSimExist() == 0 && !Md5Utils.hash(param.getPassword()).equals(userMap.getPassword())) {
+                return R.error("密码不正确");
+            }
+        } else {
+            userMap = createNewAppleUser(param, param.getPhone());
+        }
+
+        userMap.setLoginDevice(param.getLoginDevice());
+        userMap.setHistoryApp("app");
+        userMap.setSource(param.getSource());
+        if (userMap.getNickName().equals("匿名用户**")) {
+            userMap.setNickName("苹果用户" + param.getPhone().substring(param.getPhone().length() - 4));
+        }
+        userMap.setAppleKey(param.getAppleKey());
+        if (userService.updateFsUser(userMap)>0){
+            return generateTokenAndReturn(userMap);
+        }
+        return R.error("绑定手机号失败");
+    }
+
     @PostMapping("/loginByPhone")
     public R loginByPhone(@RequestBody Map<String,String> map){
         logger.info("短信登录参数:{}",map.toString());

+ 12 - 0
fs-user-app/src/main/java/com/fs/app/param/FsUserEditPhoneParam.java

@@ -21,4 +21,16 @@ public class FsUserEditPhoneParam implements Serializable {
     private String jpushId;
 
     private String source;
+
+    private String appleKey;
+
+    private String password;
+    /**
+     * 是否有SIM卡 0不存在 1存在
+     */
+    private Integer simExist;
+
+    private Integer bindType;
+    //验证码
+    private String code;
 }

+ 17 - 0
fs-user-app/src/main/java/com/fs/app/param/FsUserLoginByAppleParam.java

@@ -0,0 +1,17 @@
+package com.fs.app.param;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class FsUserLoginByAppleParam implements Serializable {
+    private String jpushId;
+
+    private String loginDevice;//当前登陆设备
+
+    private String source; //app来源
+
+    private String appleKey;
+
+}