diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/SmsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/SmsController.java index 029a24a..7c7b424 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/SmsController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/SmsController.java @@ -4,8 +4,9 @@ import com.ruoyi.common.constant.CacheConstants; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.domain.model.LoginBody; import com.ruoyi.common.core.redis.RedisCache; -import com.ruoyi.common.utils.sign.Base64; +import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.uuid.IdUtils; import com.ruoyi.system.service.ISmsService; import com.ruoyi.system.service.ISysConfigService; @@ -13,10 +14,7 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.RandomStringUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestPart; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.concurrent.TimeUnit; @@ -38,9 +36,13 @@ public class SmsController { @Autowired private ISmsService iSmsService; - @PostMapping("sendSms") + @PostMapping("/sendSms") @ApiOperation("短信发送接口") - public AjaxResult sendSms(@RequestPart String phone) { + public AjaxResult sendSms(@RequestBody LoginBody loginBody) { + String phone = loginBody.getPhone(); + if(StringUtils.isEmpty(phone)){ + return AjaxResult.error("请输入手机号码!"); + } AjaxResult ajax = AjaxResult.success(); boolean captchaEnabled = configService.selectCaptchaEnabled(); ajax.put("captchaEnabled", captchaEnabled); @@ -54,7 +56,16 @@ public class SmsController { String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid; String smsCode = generateCode(); redisCache.setCacheObject(verifyKey, smsCode, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES); - iSmsService.sendSmsOne(phone, smsCode); + + String[] phoneNumber = new String[]{phone}; + String[] params = new String[]{smsCode}; +// String status = iSmsService.sendSms(phoneNumber, params); + if("Ok".equals("Ok")){ + System.out.println(phone + "sms code = "+smsCode); + System.out.println(phone + "sms code = "+smsCode); + System.out.println(phone + "sms code = "+smsCode); + System.out.println(phone + "sms code = "+smsCode); + } ajax.put("uuid", uuid); return ajax; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java index fd639e9..0bc0c76 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java @@ -56,7 +56,7 @@ public class SysLoginController { AjaxResult ajax = AjaxResult.success(); // 生成令牌 - String token = loginService.loginSms(loginBody.getUsername(), loginBody.getCode(), + String token = loginService.loginSms(loginBody.getPhone(), loginBody.getSmsCode(), loginBody.getUuid()); ajax.put(Constants.TOKEN, token); return ajax; diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java index 5a82199..b332ac1 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java @@ -122,6 +122,7 @@ public class SysLoginService AuthenticationContextHolder.setContext(authenticationToken); // 该方法会去调用UserDetailsServiceImpl.loadUserByUsername authentication = authenticationManager.authenticate(authenticationToken); + } catch (Exception e) { diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISmsService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISmsService.java index fef5963..03040ad 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISmsService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISmsService.java @@ -10,7 +10,7 @@ public interface ISmsService { * @param params * @return */ - String sendSms(String[] phoneNumber, String[] params) throws TencentCloudSDKException; + String sendSms(String[] phoneNumber, String[] params); /** * 验证验证码 diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SmsServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SmsServiceImpl.java index 8340742..8d93fb4 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SmsServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SmsServiceImpl.java @@ -25,7 +25,7 @@ public class SmsServiceImpl implements ISmsService { private StringRedisTemplate redisTemplate; @Override - public String sendSms(String[] phoneNumber, String[] params) throws TencentCloudSDKException { + public String sendSms(String[] phoneNumber, String[] params) { SendSmsRequest req = new SendSmsRequest(); req.setSignName(tencentCloudProperties.getSignName()); req.setSmsSdkAppId(tencentCloudProperties.getSmsSdkAppId()); @@ -34,7 +34,12 @@ public class SmsServiceImpl implements ISmsService { * 示例如:+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号,最多不要超过200个手机号 */ req.setPhoneNumberSet(phoneNumber); req.setTemplateParamSet(params); - final SendSmsResponse resp = tencentCloudProperties.smsClient().SendSms(req); + final SendSmsResponse resp; + try { + resp = tencentCloudProperties.smsClient().SendSms(req); + } catch (TencentCloudSDKException e) { + throw new ServiceException(e.getMessage()); + } // 输出json格式的字符串回包 System.out.println(SendSmsResponse.toJsonString(resp)); return resp.getSendStatusSet()[0].getCode(); @@ -52,20 +57,16 @@ public class SmsServiceImpl implements ISmsService { @Override public void sendSmsOne(String phone, String smsCode) { - try { - /*验证手机号是否存在*/ - if(false){ - throw new ServiceException("手机号不存在,请联系管理员注册!"); - } - String[] phoneNumber = new String[]{phone}; - String[] params = new String[]{smsCode}; - String status = sendSms(phoneNumber, params); - System.out.println(status + "sms code = "+smsCode); - if("Ok".equals(status)){ - redisTemplate.opsForValue().set(phone, smsCode); - } - } catch (TencentCloudSDKException e) { - throw new ServiceException(e.getMessage()); + /*验证手机号是否存在*/ + if(false){ + throw new ServiceException("手机号不存在,请联系管理员注册!"); + } + String[] phoneNumber = new String[]{phone}; + String[] params = new String[]{smsCode}; + String status = sendSms(phoneNumber, params); + System.out.println(status + "sms code = "+smsCode); + if("Ok".equals(status)){ + redisTemplate.opsForValue().set(phone, smsCode); } } diff --git a/ruoyi-ui/src/api/login.js b/ruoyi-ui/src/api/login.js index cfc5c6b..2d0ff38 100644 --- a/ruoyi-ui/src/api/login.js +++ b/ruoyi-ui/src/api/login.js @@ -59,7 +59,10 @@ export function getCodeImg() { }) } -export function sendSms(data) { +export function sendSms(phone) { + const data = { + phone + } return request({ url: '/sendSms', headers: { diff --git a/ruoyi-ui/src/store/modules/user.js b/ruoyi-ui/src/store/modules/user.js index cdbab1e..0a7568d 100644 --- a/ruoyi-ui/src/store/modules/user.js +++ b/ruoyi-ui/src/store/modules/user.js @@ -1,4 +1,4 @@ -import { login, logout, getInfo } from '@/api/login' +import { login, loginSms, logout, getInfo } from '@/api/login' import { getToken, setToken, removeToken } from '@/utils/auth' const user = { @@ -49,6 +49,21 @@ const user = { }) }) }, + // 登录 + LoginSms({ commit }, userInfo) { + const phone = userInfo.phone.trim() + const smsCode = userInfo.smsCode + const uuid = userInfo.uuid + return new Promise((resolve, reject) => { + loginSms(phone, smsCode, uuid).then(res => { + setToken(res.token) + commit('SET_TOKEN', res.token) + resolve() + }).catch(error => { + reject(error) + }) + }) + }, // 获取用户信息 GetInfo({ commit, state }) { diff --git a/ruoyi-ui/src/views/login.vue b/ruoyi-ui/src/views/login.vue index a5ec19b..8765747 100644 --- a/ruoyi-ui/src/views/login.vue +++ b/ruoyi-ui/src/views/login.vue @@ -77,7 +77,7 @@ auto-complete="off" placeholder="验证码" style="width: 63%" - @keyup.enter.native="handleLogin" + @keyup.enter.native="submitForm" > @@ -87,7 +87,7 @@