From fd7b8fb7c89832c28a838b0449bbb8a392433ee2 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期二, 22 四月 2025 14:33:02 +0800 Subject: [PATCH] 将华为云短信替换成阿里云短信 --- ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java | 83 +++++++++++++++++++++++++---------------- 1 files changed, 51 insertions(+), 32 deletions(-) diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java index aabf830..1f418bd 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java @@ -10,6 +10,7 @@ import com.ruoyi.account.api.model.*; import com.ruoyi.account.mapper.AppUserMapper; import com.ruoyi.account.service.*; +import com.ruoyi.account.util.ALiSendSms; import com.ruoyi.account.util.GeodesyUtil; import com.ruoyi.account.util.SMSUtil; import com.ruoyi.account.util.payment.PaymentUtil; @@ -30,6 +31,7 @@ import com.ruoyi.system.api.feignClient.SysUserClient; import com.ruoyi.system.api.model.LoginUser; import lombok.extern.slf4j.Slf4j; +import org.redisson.RedissonLock; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; @@ -64,6 +66,9 @@ @Resource private RedisService redisService; + + @Resource + private ALiSendSms aLiSendSms; @Resource private ShopClient shopClient; @@ -131,39 +136,52 @@ } String openid = map.get("openid").toString(); String sessionKey = map.get("sessionKey").toString(); - //查询用户是否注册,没有注册则跳转到注册页面 - AppUser appUser = this.getOne(new LambdaQueryWrapper<AppUser>().eq(AppUser::getWxOpenid, openid).ne(AppUser::getStatus, 3).eq(AppUser::getDelFlag, 0)); - if(null == appUser){ - String decrypt = WXCore.decrypt(appletLogin.getEncryptedData_phone(), sessionKey, appletLogin.getIv_phone()); - if (StringUtils.isEmpty(decrypt)) { - return R.fail("获取手机信息失败"); - } - JSONObject phone = JSON.parseObject(decrypt); - String purePhoneNumber = phone.getString("purePhoneNumber"); - LoginVo loginVo = new LoginVo(); - loginVo.setSkipPage(2); - loginVo.setPhone(purePhoneNumber); - return R.ok(loginVo); - } - //账户被冻结,给出提示 - if(2 == appUser.getStatus()){ - return R.fail("账户已被冻结,请联系管理员!"); - } LoginVo loginVo = new LoginVo(); - loginVo.setSkipPage(1); - loginVo.setFirstTime(false); - loginVo.setPhone(appUser.getPhone()); - //构建token - LoginUser loginUser = new LoginUser(); - loginUser.setUserid(appUser.getId()); - loginUser.setUsername(appUser.getName()); - Map<String, Object> tokenApplet = tokenService.createTokenApplet(loginUser); - loginVo.setToken(tokenApplet.get("access_token").toString()); - loginVo.setFailureTime(Long.valueOf(tokenApplet.get("expires_in").toString())); - appUser.setLastLoginTime(LocalDateTime.now()); - this.updateById(appUser); - return R.ok(loginVo); + String key = "login:" + openid; + Boolean hasKey = redisService.lock(key); + if(hasKey){ + try { + //查询用户是否注册,没有注册则跳转到注册页面 + AppUser appUser = this.getOne(new LambdaQueryWrapper<AppUser>().eq(AppUser::getWxOpenid, openid).ne(AppUser::getStatus, 3).eq(AppUser::getDelFlag, 0)); + if(null == appUser){ + String decrypt = WXCore.decrypt(appletLogin.getEncryptedData_phone(), sessionKey, appletLogin.getIv_phone()); + if (StringUtils.isEmpty(decrypt)) { + return R.fail("获取手机信息失败"); + } + JSONObject phone = JSON.parseObject(decrypt); + String purePhoneNumber = phone.getString("purePhoneNumber"); + loginVo.setSkipPage(2); + loginVo.setPhone(purePhoneNumber); + return R.ok(loginVo); + } + //账户被冻结,给出提示 + if(2 == appUser.getStatus()){ + return R.fail("账户已被冻结,请联系管理员!"); + } + loginVo.setSkipPage(1); + loginVo.setFirstTime(false); + loginVo.setPhone(appUser.getPhone()); + //构建token + LoginUser loginUser = new LoginUser(); + loginUser.setUserid(appUser.getId()); + loginUser.setUsername(appUser.getName()); + Map<String, Object> tokenApplet = tokenService.createTokenApplet(loginUser); + loginVo.setToken(tokenApplet.get("access_token").toString()); + loginVo.setFailureTime(Long.valueOf(tokenApplet.get("expires_in").toString())); + + appUser.setLastLoginTime(LocalDateTime.now()); + this.updateById(appUser); + return R.ok(loginVo); + }catch (Exception e){ + e.printStackTrace(); + }finally { + redisService.unlock(key); + } + }else{ + return R.fail("请稍后重试"); + } + return R.fail("登录失败"); } @@ -246,7 +264,8 @@ for (int i = 0; i < 6; i++) { code += Double.valueOf(Math.random() * 10).intValue(); } - SMSUtil.sendSms("[\"" + code + "\"]", smsCode.getPhone(), "8824121211029", "39533d100b2b4aee8ed198aa49fe99dd"); +// SMSUtil.sendSms("[\"" + code + "\"]", smsCode.getPhone(), "8824121211029", "39533d100b2b4aee8ed198aa49fe99dd"); + aLiSendSms.sendSms(smsCode.getPhone(), "SMS_484035336", "{\"code\":\"" + code + "\"}"); redisService.setCacheObject(smsCode.getPhone(), code, 300L, TimeUnit.SECONDS); return R.ok(); } -- Gitblit v1.7.1