|
|
@@ -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());
|