Commit 248b4d9d authored by chenchao.deng's avatar chenchao.deng

发送验证码 +注册流程优化

parent 2ab6089f
......@@ -116,6 +116,19 @@ public class AccountController {
return resultDto;
}
@RequestMapping(path = "/resetAuthCode", method = RequestMethod.POST)
public ResultDto resetAuthCode(@RequestBody MobileDto mobile) {
ResultDto resultDto = new ResultDto();
try {
accountService.sendSmsOtpReset(mobile.getMobile());
resultDto.setStatus(0);
} catch (ClientRequestException e) {
logger.error("fail to send sms", e);
dealClientRequestException(resultDto, e);
}
return resultDto;
}
/**
* 用户注册
*/
......
......@@ -112,4 +112,5 @@ public interface AccountService {
boolean setAuthorize(String username, boolean isAgree);
void sendSmsOtpReset(String mobile);
}
......@@ -19,12 +19,29 @@ public class SmsUtils {
private static final int TIME_OUT = 10 * 60; //10minues
public enum SmsTemplateCode {
NEWACCOUNT("SMS_472080002"),
RESETACCOUNT("SMS_471765248");
;
String code;
SmsTemplateCode(String code) {
this.code = code;
}
public String getCode() {
return code;
}
}
/**
* Generate and send the SMS one time password to user's phone with SMS.
*
* @param phone
*/
public static String sendSmsOTP(String phone) {
public static String sendSmsOTP(String phone, SmsTemplateCode smsTemplateCode) {
String randomCode = createRandom(true, 6);
DefaultProfile profile = DefaultProfile.getProfile("default", "LTAI5tEdz1DY4A4oYUawUuNH", "8KWmYgO0QIicZpyulhEwUhZqStrTwe");
IAcsClient client = new DefaultAcsClient(profile);
......@@ -35,9 +52,9 @@ public class SmsUtils {
request.setDomain("dysmsapi.aliyuncs.com");
request.setVersion("2017-05-25");
request.setAction("SendSms");
request.putQueryParameter("SignName", "深圳北鲲云计算有限公司");
request.putQueryParameter("SignName", "无界超级浏览器");
request.putQueryParameter("PhoneNumbers", phone);
request.putQueryParameter("TemplateCode", "SMS_471410139");
request.putQueryParameter("TemplateCode", smsTemplateCode.getCode());
request.putQueryParameter("TemplateParam", "{\"code\":\"" + randomCode + "\"}");
try {
CommonResponse response = client.getCommonResponse(request);
......
......@@ -9,6 +9,7 @@ import com.edgec.browserbackend.account.service.AccountService;
import com.edgec.browserbackend.account.service.EmailService;
import com.edgec.browserbackend.account.service.PaymentService;
import com.edgec.browserbackend.account.service.SmsUtils;
import com.edgec.browserbackend.account.service.SmsUtils.SmsTemplateCode;
import com.edgec.browserbackend.account.utils.AccountServicePool;
import com.edgec.browserbackend.auth.exception.AuthErrorCode;
import com.edgec.browserbackend.auth.service.UserService;
......@@ -427,9 +428,7 @@ public class AccountServiceImpl implements AccountService {
// 1. 校验注册用户是否已存在
Account existing1 = accountRepository.findByName(user.getUsername()).orElse(null);
Account existing2 = accountRepository.findOneByPhoneNumber(user.getUsername());
Account existing3 = accountRepository.findOneByPhoneNumber(user.getPhone());
Account existing4 = accountRepository.findByName(user.getPhone()).orElse(null);
if (existing1 != null || existing2 != null || existing3 != null || existing4 != null) {
if (existing1 != null || existing2 != null) {
throw new ClientRequestException(AccountErrorCode.NAMEEXIST, "account already exists: " + user.getUsername());
}
......@@ -913,7 +912,7 @@ public class AccountServiceImpl implements AccountService {
@Override
public void sendSmsOtp(String phone) {
String code = com.edgec.browserbackend.account.service.SmsUtils.sendSmsOTP(phone);
String code = SmsUtils.sendSmsOTP(phone, SmsTemplateCode.NEWACCOUNT);
Otp otp = new Otp();
otp.setPhone(phone);
otp.setOtp(code);
......@@ -1165,6 +1164,16 @@ public class AccountServiceImpl implements AccountService {
}
}
@Override
public void sendSmsOtpReset(String phone) {
String code = com.edgec.browserbackend.account.service.SmsUtils.sendSmsOTP(phone, SmsTemplateCode.RESETACCOUNT);
Otp otp = new Otp();
otp.setPhone(phone);
otp.setOtp(code);
otp.setCreatedAt(Instant.now().toEpochMilli());
otpRepository.save(otp);
}
private void notifyCustomerRegister(Account contactUs) {
StringBuilder sb = new StringBuilder();
sb.append("Name: " + contactUs.getName() + "<br/>");
......
......@@ -33,7 +33,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring()
.antMatchers("/user/authCode", "/user/signUp",
.antMatchers("/user/authCode", "/user/signUp", "/user/resetAuthCode",
"/user/forgot**", "/0xadministrator/getconfig**");
}
......
......@@ -26,8 +26,8 @@ public class SmsUtils {
CLOUDAM_ARREARS("SMS_174805285"),
AUTHCODE("SMS_185841618"),
IPWILLEXPIRE_EXPIRE("SMS_185821567"),
IPEXPIRED("SMS_185841667"),
IPWILLEXPIRE_EXPIRE("SMS_472140001"),
IPEXPIRED("SMS_472140001"),
NEWACCOUNT("SMS_187750800");
;
......@@ -99,7 +99,7 @@ public class SmsUtils {
request.setVersion("2017-05-25");
request.setAction("SendSms");
request.putQueryParameter("PhoneNumbers", phoneNum);
request.putQueryParameter("SignName", "防关联浏览器");
request.putQueryParameter("SignName", "无界超级浏览器");
request.putQueryParameter("TemplateCode", smsTemplateCode.getCode());
request.putQueryParameter("TemplateParam", param.toJSONString());
try {
......@@ -122,9 +122,9 @@ public class SmsUtils {
request.setVersion("2017-05-25");
request.setAction("SendSms");
request.putQueryParameter("PhoneNumbers", phoneNum);
request.putQueryParameter("SignName", "防关联浏览器");
request.putQueryParameter("SignName", "无界超级浏览器");
request.putQueryParameter("TemplateCode", smsTemplateCode.getCode());
request.putQueryParameter("TemplateParam", param.toJSONString());
//request.putQueryParameter("TemplateParam", param.toJSONString());
try {
CommonResponse response = iAcsClient.getCommonResponse(request);
if (response.getHttpStatus() == 200 && response.getData().contains("OK")) {
......
......@@ -53,6 +53,7 @@ class BrowserBackendApplicationTests {
@Test
void test3() throws Exception {
//SmsUtils.sendSmsOTP("18711016574");
JSONObject param = new JSONObject();
param.put("day", "7");
param.put("amount", "5");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment