From f237a61c412870933f47316a011237cd538de9bc Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期二, 20 八月 2024 09:07:02 +0800 Subject: [PATCH] 新增需求 --- guns-admin/src/main/java/com/stylefeng/guns/modular/api/AppUserController.java | 195 ++++++++++++++++++++++++++++++++++-------------- 1 files changed, 139 insertions(+), 56 deletions(-) diff --git a/guns-admin/src/main/java/com/stylefeng/guns/modular/api/AppUserController.java b/guns-admin/src/main/java/com/stylefeng/guns/modular/api/AppUserController.java index 30c8baa..9596cc9 100644 --- a/guns-admin/src/main/java/com/stylefeng/guns/modular/api/AppUserController.java +++ b/guns-admin/src/main/java/com/stylefeng/guns/modular/api/AppUserController.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.huaweicloud.sdk.core.exception.SdkErrorMessage; +import com.stylefeng.guns.core.shiro.ShiroKit; import com.stylefeng.guns.core.util.JwtTokenUtil; import com.stylefeng.guns.core.util.MD5Util; import com.stylefeng.guns.core.util.ToolUtil; @@ -82,8 +83,12 @@ @ApiImplicitParam(name = "Authorization", value = "Bearer eyJhbGciOiJIUzUxMiJ....", required = true, paramType = "header"), }) public ResultUtil isFirst() { + AppUser appUser = appUserService.getAppUser(); + if (appUser == null){ + return ResultUtil.tokenErr("登录失效"); + } Login userId = loginService.selectOne(new EntityWrapper<Login>() - .eq("userId", appUserService.getAppUser().getId())); + .eq("userId", appUser.getId())); if (userId == null){ // 首次登录 Login login = new Login(); @@ -108,6 +113,9 @@ public ResultUtil<String> updatePassword(String password, String newPassword,String code) { try { AppUser appUser = appUserService.getAppUser(); + if (appUser == null){ + return ResultUtil.tokenErr("登录失效"); + } if (null == appUser) { return ResultUtil.error("请先登录!", ""); } @@ -177,15 +185,25 @@ // 首次注册默认头像 appUser1.setHeadImg("https://jkjianshen.obs.cn-north-4.myhuaweicloud.com/admin/8d9bb8b7fb9a4786a50b88863c7706ab.png"); // appUser1.setConstellation(zodiacSign); - appUser1.setName(addAppUserVo.getPhone()); appUser1.setAccount(addAppUserVo.getPhone()); appUser1.setCode(UUIDUtil.getRandomCode(6).toUpperCase()); + appUser1.setName("用户-"+appUser1.getCode()); + appUser1.setHeight(155); + appUser1.setWeight(130D); + appUser1.setWaistline(100); + appUser1.setGender(1); + // 获取当前时间 + Calendar calendar = Calendar.getInstance(); + // 将当前时间向前推30年 + calendar.add(Calendar.YEAR, -30); + Date date30YearsAgo = calendar.getTime(); + appUser1.setBirthday(date30YearsAgo); // 根据邀请码 查询到用户 if (StringUtils.hasLength(addAppUserVo.getInvitationCode())){ AppUser code = appUserService.selectOne(new EntityWrapper<AppUser>() .eq("code", addAppUserVo.getInvitationCode())); if (code==null){ - return ResultUtil.errorInvite("邀请码无效",null); + return ResultUtil.errorInvite("邀请码无效",""); } appUser1.setInviteUserId(code.getId()); } @@ -205,10 +223,10 @@ // 判断当前手机号 登陆了哪些设备 List<DeviceLogin> deviceLogins = deviceLoginService.selectList(queryWrapper); List<String> collect = deviceLogins.stream().map(DeviceLogin::getDevice).collect(Collectors.toList()); - if (collect.size()>=5 &&!collect.contains(addAppUserVo.getCode2())){ - // 是一个新的设备登录 返回登陆失败的提示 - return ResultUtil.errorDevice("登录失败,同一账号一年内最多登录五部手机",null); - } +// if (collect.size()>=5 &&!collect.contains(addAppUserVo.getCode2())){ +// // 是一个新的设备登录 返回登陆失败的提示 +// return ResultUtil.errorDevice("登录失败,同一账号一年内最多登录五部手机",null); +// } DeviceLogin deviceLogin1 = deviceLoginService.selectOne(new EntityWrapper<DeviceLogin>() .eq("device", addAppUserVo.getCode2()) .eq("userId", appUser1.getId())); @@ -257,15 +275,27 @@ return ResultUtil.errorLogin("登录失败,您的账号已被冻结!",null); } if (StringUtils.hasLength(invitationCode)){ + + if (tAppUser.getCode().equals(invitationCode)){ + return ResultUtil.error("不能绑定自己",""); + } if (tAppUser.getInviteUserId()!=null){ + ResultUtil.error("ss"); // 登陆失败 - return ResultUtil.errorLogin("登录失败,已绑定其他用户",null); + return ResultUtil.error("该手机号已绑定其他邀请码",null); }else{ - // 根据邀请码 去查询用户 AppUser code3 = appUserService.selectOne(new EntityWrapper<AppUser>() .eq("code", invitationCode)); + + if (code3!=null){ + if (code3.getInviteUserId().equals(tAppUser.getId())){ + return ResultUtil.error("邀请失败,当前邀请用户为您的邀请人", null); + } + } + // 根据邀请码 去查询用户 + if (code3 == null){ - return ResultUtil.errorInvite("邀请码无效",null); + return ResultUtil.errorInvite("邀请码无效",""); }else{ tAppUser.setInviteUserId(code3.getId()); appUserService.updateById(tAppUser); @@ -281,11 +311,11 @@ // 判断当前手机号 登陆了哪些设备 List<DeviceLogin> deviceLogins = deviceLoginService.selectList(queryWrapper); List<String> collect = deviceLogins.stream().map(DeviceLogin::getDevice).collect(Collectors.toList()); - - if (collect.size()>=5 &&!collect.contains(code2)){ - // 是一个新的设备登录 返回登陆失败的提示 - return ResultUtil.errorDevice("登录失败,同一账号一年内最多登录五部手机",null); - } +// +// if (collect.size()>=5 &&!collect.contains(code2)){ +// // 是一个新的设备登录 返回登陆失败的提示 +// return ResultUtil.errorDevice("登录失败,同一账号一年内最多登录五部手机",null); +// } DeviceLogin deviceLogin1 = deviceLoginService.selectOne(new EntityWrapper<DeviceLogin>() .eq("device", code2) .eq("userId", tAppUser.getId())); @@ -347,7 +377,10 @@ } } - + public static void main(String[] args) { + String s = ShiroKit.md5("123456", "SA;d5#"); + System.err.println(s); + } @ResponseBody @PostMapping("/base/appUser/loginWeChat") @ApiOperation(value = "微信登录", tags = {"APP-登录注册"}) @@ -364,11 +397,21 @@ tAppUser.setOpenId(loginWeChatVo.getOpenId()); tAppUser.setPhone(loginWeChatVo.getPhone()); tAppUser.setPassword(Md5Util.MD5Encode("111111", null)); - tAppUser.setName(loginWeChatVo.getNickname()); + tAppUser.setName("用户-"+s); tAppUser.setHeadImg(loginWeChatVo.getHeadimgurl()); tAppUser.setGender(loginWeChatVo.getSex()); tAppUser.setState(1); tAppUser.setHeadImg("https://jkjianshen.obs.cn-north-4.myhuaweicloud.com/admin/8d9bb8b7fb9a4786a50b88863c7706ab.png"); + tAppUser.setHeight(155); + tAppUser.setWeight(130D); + tAppUser.setWaistline(100); + tAppUser.setGender(1); + // 获取当前时间 + Calendar calendar = Calendar.getInstance(); + // 将当前时间向前推30年 + calendar.add(Calendar.YEAR, -30); + Date date30YearsAgo = calendar.getTime(); + tAppUser.setBirthday(date30YearsAgo); // 获取当前日期 LocalDate currentDate = LocalDate.now(); int month = currentDate.getMonthValue(); @@ -399,12 +442,12 @@ // 判断当前手机号 登陆了哪些设备 List<DeviceLogin> deviceLogins = deviceLoginService.selectList(queryWrapper); List<String> collect = deviceLogins.stream().map(DeviceLogin::getDevice).collect(Collectors.toList()); - if (collect.size()>5){ - if (!collect.contains(loginWeChatVo.getCode2())){ - // 是一个新的设备登录 返回登陆失败的提示 - return ResultUtil.errorDevice("登录失败,同一账号一年内最多登录五部手机",null); - } - } +// if (collect.size()>5){ +// if (!collect.contains(loginWeChatVo.getCode2())){ +// // 是一个新的设备登录 返回登陆失败的提示 +// return ResultUtil.errorDevice("登录失败,同一账号一年内最多登录五部手机",null); +// } +// } DeviceLogin deviceLogin1 = deviceLoginService.selectOne(new EntityWrapper<DeviceLogin>() .eq("device", loginWeChatVo.getCode2()) .eq("userId", tAppUser.getId())); @@ -443,6 +486,10 @@ }) public ResultUtil<String> setPhone(String phone, String code, String invitationCode) { System.err.println("邀请码"+invitationCode); + AppUser appUser2 = appUserService.getAppUser(); + if (appUser2 == null){ + return ResultUtil.tokenErr("登录失效"); + } if (StringUtils.hasLength(invitationCode)){ // 根据邀请码查询用户id AppUser appUser1 = appUserService.selectOne(new EntityWrapper<AppUser>() @@ -450,11 +497,13 @@ .ne("state", 3)); if (appUser1==null){ return ResultUtil.errorInvite("邀请码无效",null); + }else{ + if (appUser1.getInviteUserId().equals(appUser2.getId())){ + return ResultUtil.error("邀请失败,当前邀请用户为您的邀请人", null); + } } } - AppUser appUser2 = appUserService.getAppUser(); - System.err.println("登录用户id"+appUser2.getId()); - System.err.println("手机号"+phone); + // 先判断当前电话是否已经被绑定了 AppUser appUser = appUserService.selectOne(new EntityWrapper<AppUser>() .eq("phone", phone) @@ -473,14 +522,14 @@ } // 判断手机验证码是否相同 String value = redisUtil.getValue(phone); - if (!code.equals("123456")){ +// if (!code.equals("123456")){ if (null == value){ return ResultUtil.error("验证码无效",null); } if (!code.equals(value)){ return ResultUtil.error("验证码错误",null); } - } +// } // 如果绑定的手机号 已经注册过了 同时没有绑定微信id和苹果id 那么把openId修改过去 AppUser appUser3 = appUserService.selectOne(new EntityWrapper<AppUser>() .eq("phone", phone) @@ -488,74 +537,96 @@ .isNull("appleId") .ne("state", 3)); // 微信绑定 - if (appUser3!=null && StringUtils.hasLength(appUser3.getOpenId())){ + if (appUser3!=null && StringUtils.hasLength(appUser2.getOpenId())){ appUser3.setOpenId(appUser2.getOpenId()); - appUserService.updateById(appUser3); - // 同时删除这条数据 - appUserService.deleteById(appUser2.getId()); if (StringUtils.hasLength(invitationCode)){ if (appUser3.getInviteUserId()!=null){ - return ResultUtil.errorLogin("登录失败,已绑定其他用户",null); + return ResultUtil.error("该手机号已绑定其他邀请码",null); + } + if (appUser3.getCode().equals(invitationCode)){ + return ResultUtil.error("不能绑定自己",""); } // 根据邀请码查询用户id AppUser appUser1 = appUserService.selectOne(new EntityWrapper<AppUser>() .eq("code", invitationCode) .ne("state", 3)); if (appUser1==null){ - return ResultUtil.errorInvite("邀请码无效",null); + return ResultUtil.errorInvite("邀请码无效",""); }else{ + if (appUser1.getInviteUserId().equals(appUser2.getId())){ + return ResultUtil.error("邀请失败,当前邀请用户为您的邀请人", null); + } appUser3.setInviteUserId(appUser1.getId()); } } + appUserService.updateById(appUser3); + // 同时删除这条数据 + appUserService.deleteById(appUser2.getId()); + //生成token String token = JwtTokenUtil.generateToken(appUser3.getPhone()); System.err.println("token1111--->" + token); //存入缓存中 addTokenToRedis(token, appUser3.getId()); return ResultUtil.success(token); - }else if (appUser3!=null && StringUtils.hasLength(appUser3.getAppleId())){ + }else if (appUser3!=null && StringUtils.hasLength(appUser2.getAppleId())){ + if (appUser3.getCode().equals(invitationCode)){ + return ResultUtil.error("不能绑定自己",""); + } // 苹果绑定手机号 appUser3.setAppleId(appUser2.getAppleId()); - if (!StringUtils.hasLength(appUser3.getName())){ - appUser3.setName(phone); + if (StringUtils.hasLength(appUser3.getName())){ + // 如果已经有name了不更新 + }else{ + appUser3.setName("用户-"+appUser3.getCode()); + appUser3.setAccount(phone); } - appUserService.updateById(appUser3); - // 同时删除这条数据 - appUserService.deleteById(appUser2.getId()); if (StringUtils.hasLength(invitationCode)){ if (appUser3.getInviteUserId()!=null){ - return ResultUtil.errorLogin("登录失败,已绑定其他用户",null); + return ResultUtil.error("该手机号已绑定其他邀请码",null); } // 根据邀请码查询用户id AppUser appUser1 = appUserService.selectOne(new EntityWrapper<AppUser>() .eq("code", invitationCode) .ne("state", 3)); if (appUser1==null){ - return ResultUtil.errorInvite("邀请码无效",null); + return ResultUtil.errorInvite("邀请码无效",""); }else{ + if (appUser1.getInviteUserId().equals(appUser2.getId())){ + return ResultUtil.error("邀请失败,当前邀请用户为您的邀请人", null); + } appUser3.setInviteUserId(appUser1.getId()); } } + appUserService.updateById(appUser3); + // 同时删除这条数据 + appUserService.deleteById(appUser2.getId()); + //生成token String token = JwtTokenUtil.generateToken(appUser3.getPhone()); System.err.println("token1111--->" + token); //存入缓存中 addTokenToRedis(token, appUser3.getId()); return ResultUtil.success(token); - // 绑定的手机号没有注册过 } appUser2.setPhone(phone); appUser2.setAccount(phone); + if (appUser2.getCode()!=null){ + appUser2.setName("用户-"+appUser2.getCode()); + } if (StringUtils.hasLength(invitationCode)){ + if (appUser2.getCode().equals(invitationCode)){ + return ResultUtil.error("不能绑定自己",""); + } if (appUser2.getInviteUserId()!=null){ - return ResultUtil.errorLogin("登录失败,已绑定其他用户",null); + return ResultUtil.errorLogin("该手机号已绑定其他邀请码",null); } // 根据邀请码查询用户id AppUser appUser1 = appUserService.selectOne(new EntityWrapper<AppUser>() .eq("code", invitationCode) .ne("state", 3)); if (appUser1==null){ - return ResultUtil.errorInvite("邀请码无效",null); + return ResultUtil.errorInvite("邀请码无效",""); }else{ appUser2.setInviteUserId(appUser1.getId()); } @@ -568,6 +639,7 @@ addTokenToRedis(token, appUser2.getId()); return ResultUtil.success(token); } + @ResponseBody @PostMapping("/base/appUser/loginPassword") @ApiOperation(value = "账号密码登录", tags = {"APP-登录注册"}) @@ -603,10 +675,10 @@ // 判断当前手机号 登陆了哪些设备 List<DeviceLogin> deviceLogins = deviceLoginService.selectList(queryWrapper); List<String> collect = deviceLogins.stream().map(DeviceLogin::getDevice).collect(Collectors.toList()); - if (collect.size()>=5 &&!collect.contains(code2)){ - // 是一个新的设备登录 返回登陆失败的提示 - return ResultUtil.errorDevice("登录失败,同一账号一年内最多登录五部手机",null); - } +// if (collect.size()>=5 &&!collect.contains(code2)){ +// // 是一个新的设备登录 返回登陆失败的提示 +// return ResultUtil.errorDevice("登录失败,同一账号一年内最多登录五部手机",null); +// } DeviceLogin deviceLogin1 = deviceLoginService.selectOne(new EntityWrapper<DeviceLogin>() .eq("device", code2) .eq("userId", tAppUser.getId())); @@ -648,8 +720,8 @@ // 首次登录注册 AppUser appUser1 = new AppUser(); appUser1.setAppleId(appleId); - appUser1.setName(name); - appUser1.setAccount(name); + + appUser1.setAccount("用户"+UUIDUtil.getNumberRandom(5)); appUser1.setPassword(MD5Util.encrypt("111111")); appUser1.setState(1); // 根据当前月份 填入星座名称 @@ -664,11 +736,22 @@ appUser1.setHeadImg("https://jkjianshen.obs.cn-north-4.myhuaweicloud.com/admin/8d9bb8b7fb9a4786a50b88863c7706ab.png"); appUser1.setConstellation(zodiacSign); appUser1.setCode(UUIDUtil.getRandomCode(6).toUpperCase()); + appUser1.setName("用户-"+appUser1.getCode()); + appUser1.setHeight(155); + appUser1.setWeight(130D); + appUser1.setWaistline(100); + appUser1.setGender(1); + // 获取当前时间 + Calendar calendar = Calendar.getInstance(); + // 将当前时间向前推30年 + calendar.add(Calendar.YEAR, -30); + Date date30YearsAgo = calendar.getTime(); + appUser1.setBirthday(date30YearsAgo); // 根据邀请码 查询到用户 if (StringUtils.hasLength(code2)){ AppUser code3 = appUserService.selectOne(new EntityWrapper<AppUser>() .eq("code", code2)); - if (code==null){ + if (code3==null){ return ResultUtil.errorInvite("邀请码无效",null); } appUser1.setInviteUserId(code3.getId()); @@ -689,10 +772,10 @@ // 判断当前手机号 登陆了哪些设备 List<DeviceLogin> deviceLogins = deviceLoginService.selectList(queryWrapper); List<String> collect = deviceLogins.stream().map(DeviceLogin::getDevice).collect(Collectors.toList()); - if (collect.size()>=5 &&!collect.contains(code)){ - // 是一个新的设备登录 返回登陆失败的提示 - return ResultUtil.errorDevice("登录失败,同一账号一年内最多登录五部手机",null); - } +// if (collect.size()>=5 &&!collect.contains(code)){ +// // 是一个新的设备登录 返回登陆失败的提示 +// return ResultUtil.errorDevice("登录失败,同一账号一年内最多登录五部手机",null); +// } DeviceLogin deviceLogin1 = deviceLoginService.selectOne(new EntityWrapper<DeviceLogin>() .eq("device", code) .eq("userId", appUser1.getId())); -- Gitblit v1.7.1