Commit 7ff8ded8 authored by chenchao.deng's avatar chenchao.deng

自测联调

parent babfff41
package com.edgec.browserbackend.account.domain;
import com.edgec.browserbackend.account.service.SmsUtils;
import com.edgec.browserbackend.common.commons.utils.SmsUtils;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
......
package com.edgec.browserbackend.account.domain;
import com.edgec.browserbackend.account.service.SmsUtils;
import com.edgec.browserbackend.common.commons.utils.SmsUtils;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
......
package com.edgec.browserbackend.account.domain;
import com.edgec.browserbackend.account.service.SmsUtils;
import com.edgec.browserbackend.common.commons.utils.SmsUtils;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
......
......@@ -15,103 +15,5 @@ import org.slf4j.LoggerFactory;
public class SmsUtils {
private static final Logger log = LoggerFactory.getLogger(SmsUtils.class);
private static final int TIME_OUT = 10 * 60; //10minues
public enum SmsTemplateCode {
LOGINACCOUNT(0, "SMS_472020179"),
NEWACCOUNT(1,"SMS_472080002"),
RESETACCOUNT(2,"SMS_471765248"),
;
Integer type;
String code;
SmsTemplateCode(Integer type, String code) {
this.type =type;
this.code = code;
}
public Integer getType() {
return type;
}
public String getCode() {
return code;
}
public static SmsTemplateCode getByType(Integer type) {
for (SmsTemplateCode smsTemplateCode : SmsTemplateCode.values()) {
if (smsTemplateCode.type.intValue() == type.intValue()) {
return smsTemplateCode;
}
}
return null;
}
}
/**
* Generate and send the SMS one time password to user's phone with SMS.
*
* @param 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);
CommonRequest request = new CommonRequest();
//request.setProtocol(ProtocolType.HTTPS);
request.setMethod(MethodType.POST);
request.setDomain("dysmsapi.aliyuncs.com");
request.setVersion("2017-05-25");
request.setAction("SendSms");
request.putQueryParameter("SignName", "无界超级浏览器");
request.putQueryParameter("PhoneNumbers", phone);
request.putQueryParameter("TemplateCode", smsTemplateCode.getCode());
request.putQueryParameter("TemplateParam", "{\"code\":\"" + randomCode + "\"}");
try {
CommonResponse response = client.getCommonResponse(request);
if (response.getHttpStatus() == 200 && response.getData().contains("OK")) {
return randomCode;
} else {
log.error("fail to send sms {} for user {}", response.getData(), phone);
throw new ClientRequestException(AccountErrorCode.OTPSENDFAILS, AccountErrorCode.OTPSENDFAILS.getReason());
}
} catch (ServerException e) {
log.error("Sms sends failure", e);
throw new ClientRequestException(AccountErrorCode.OTPSENDFAILS, AccountErrorCode.OTPSENDFAILS.getReason());
} catch (ClientException e) {
log.error("Sms sends failure", e);
throw new ClientRequestException(AccountErrorCode.OTPSENDFAILS, AccountErrorCode.OTPSENDFAILS.getReason());
}
}
public static String createRandom(boolean numberFlag, int length) {
String retStr = "";
String strTable = numberFlag ? "1234567890" : "1234567890abcdefghijkmnpqrstuvwxyz";
int len = strTable.length();
boolean bDone = true;
do {
retStr = "";
int count = 0;
for (int i = 0; i < length; i++) {
double dblR = Math.random() * len;
int intR = (int) Math.floor(dblR);
char c = strTable.charAt(intR);
if (('0' <= c) && (c <= '9')) {
count++;
}
retStr += strTable.charAt(intR);
}
if (count >= 2) {
bDone = false;
}
} while (bDone);
return retStr;
}
}
......@@ -8,8 +8,7 @@ import com.edgec.browserbackend.account.repository.*;
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.common.commons.utils.SmsUtils;
import com.edgec.browserbackend.account.utils.AccountServicePool;
import com.edgec.browserbackend.auth.exception.AuthErrorCode;
import com.edgec.browserbackend.auth.repository.UserRepository;
......@@ -22,6 +21,7 @@ import com.edgec.browserbackend.browser.repository.GlobalFieldRepository;
import com.edgec.browserbackend.browser.service.IpResourceService;
import com.edgec.browserbackend.browser.service.ShopService;
import com.edgec.browserbackend.common.commons.error.ClientRequestException;
import com.edgec.browserbackend.common.commons.utils.SmsUtils.SmsTemplateCode;
import com.edgec.browserbackend.common.utils.Aes;
import com.edgec.browserbackend.common.utils.FileUtil;
import javax.annotation.Resource;
......@@ -939,15 +939,48 @@ public class AccountServiceImpl implements AccountService {
throw new ClientRequestException(AccountErrorCode.OTHERS,
"authCode type error" + phone);
}
String code = SmsUtils.sendSmsOTP(phone, smsTemplateCode);
String randomCode = createRandom(true, 6);
JSONObject param = new JSONObject();
param.put("code", randomCode);
String s = "{\"code\":\"" + randomCode + "\"}";
SmsUtils.sendSms(phone, smsTemplateCode, param);
Otp otp = new Otp();
otp.setPhone(phone);
otp.setOtp(code);
otp.setOtp(randomCode);
otp.setType(mobileDto.getType());
otp.setCreatedAt(Instant.now().toEpochMilli());
otpRepository.save(otp);
}
/**
* @author Chen
* @description 生成随机数
* @date 2024/9/13 20:09
*/
private String createRandom(boolean numberFlag, int length) {
String retStr = "";
String strTable = numberFlag ? "1234567890" : "1234567890abcdefghijkmnpqrstuvwxyz";
int len = strTable.length();
boolean bDone = true;
do {
retStr = "";
int count = 0;
for (int i = 0; i < length; i++) {
double dblR = Math.random() * len;
int intR = (int) Math.floor(dblR);
char c = strTable.charAt(intR);
if (('0' <= c) && (c <= '9')) {
count++;
}
retStr += strTable.charAt(intR);
}
if (count >= 2) {
bDone = false;
}
} while (bDone);
return retStr;
}
@Override
public AccountDto getAccountByCellphone(String cellphone) {
Account account = accountRepository.findOneByPhoneNumber(cellphone);
......
......@@ -15,7 +15,6 @@ import com.edgec.browserbackend.account.exception.AccountErrorCode;
import com.edgec.browserbackend.account.repository.*;
import com.edgec.browserbackend.account.service.AccountService;
import com.edgec.browserbackend.account.service.PaymentService;
import com.edgec.browserbackend.account.service.SmsUtils;
import com.edgec.browserbackend.alipay.AlipayConfig;
import com.edgec.browserbackend.alipay.CloudamAlipayConfig;
import com.edgec.browserbackend.alipay.VpsAlipayConfig;
......@@ -23,6 +22,7 @@ import com.edgec.browserbackend.browser.ErrorCode.BrowserErrorCode;
import com.edgec.browserbackend.browser.domain.PayBack;
import com.edgec.browserbackend.browser.repository.PayBackRepository;
import com.edgec.browserbackend.common.commons.error.ClientRequestException;
import com.edgec.browserbackend.common.commons.utils.SmsUtils;
import com.edgec.browserbackend.wxpay.*;
import com.google.gson.Gson;
import org.apache.commons.lang3.StringUtils;
......
......@@ -52,7 +52,7 @@ public class UserLackMoneyServiceImpl implements UserLackMoneyService {
JSONObject param = new JSONObject();
param.put("billsamount", billsAmount);
param.put("totalunpaid", totalUnpaid);
SmsUtils.sendIpSms(telephone, SmsUtils.SmsTemplateCode.CLOUDAM_ARREARS, param);
SmsUtils.sendSms(telephone, SmsUtils.SmsTemplateCode.CLOUDAM_ARREARS, param);
}
}
......
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form name="punchout_form" method="post" action="https://openapi.alipay.com/gateway.do?charset=utf-8&method=alipay.trade.page.pay&sign=QSc3QsyyBSvtRWHrvD0eoUxRxMb080CUde5BowfoPaUZyVmwXtAGFiKN8DCspxOB7D1I1cbhWZkUcP%2FRAJ8xmnxg7Cqnp84tyO3%2FbmigYWoqD2frlPzdIDOt6%2Fg5NU%2FltVa%2F2LOoTnMVdhVeBgzlJ9vfFTQXvjaNofufN0Y3b%2F7Lxu7AqOk%2BhJtV%2BzWtSLO5C1zf5%2BhIyV%2Fmx86gBBFFdZ4Lv1iTSdxuRNOC6U15GoOq0BZGYlr9kIaE%2BbztC9y%2F72c%2FUP98hXGWRYG0p5iiNpNe2Dq3StuDgzFrlkpYPG4uu7l5%2B%2Fth3%2Bem0ivPDgWj4iu2DO92tnAFXhMVufQtzA%3D%3D&return_url=https%3A%2F%2Fwww.fangguanlian.cn%2Fweb%2FpaySuccess.html%3Falipayreturn%3D202409112024253737&notify_url=https%3A%2F%2Fwww.cloudam.cn%2Faccounts%2F0xalipaycallback%2F202409112024253737&version=1.0&app_id=2021004169642053&sign_type=RSA2&timestamp=2024-09-11+20%3A24%3A28&alipay_sdk=alipay-sdk-java-3.7.110.ALL&format=json">
<input type="hidden" name="biz_content" value="{&quot;out_trade_no&quot;:&quot;202409112024253737&quot;,&quot;product_code&quot;:&quot;FAST_INSTANT_TRADE_PAY&quot;,&quot;total_amount&quot;:&quot;100.00&quot;,&quot;subject&quot;:&quot;订单202409112024253737&quot;,&quot;body&quot;:&quot;&quot;}">
<input type="submit" value="立即支付" style="display:none" >
</form>
<script>document.forms[0].submit();</script>
</body>
</html>
\ No newline at end of file
......@@ -590,42 +590,29 @@ public class IpResourceServiceImpl implements IpResourceService {
ipResource.getOwner(), ipResource.getId());
if (CollectionUtils.isNotEmpty(list)) {
CloudPlatformOrder cloudPlatformOrder = list.get(0);
Boolean isDelet = false;
if ("aliyun".equals(cloudPlatformOrder.getPlatformType())) {
DeleteInstanceResponse response = AliEcsClient.deleteInstance(
ipResource.getOwner(),
cloudPlatformOrder.getPlatformOrderId(),
cloudPlatformOrder.getRegionId());
if (null != response && response.getStatusCode()
.equals(200)) {
isDelet = true;
}
} else if ("tenCent".equals(
cloudPlatformOrder.getPlatformType())) {
CloudPlatformConfig config = cloudPlatformConfigRepository.findByPlatformAndRegionId(
"tenCent",
cloudPlatformOrder.getRegionId());
TerminateInstancesResponse response = null;
if (StringUtils.isNotEmpty(config.getTemplateId())) {
response = TenCentEcsClient.deleteInstance(
TenCentEcsClient.deleteInstance(
ipResource.getOwner(),
cloudPlatformOrder.getPlatformOrderId(),
cloudPlatformOrder.getRegionId());
}
if (null != response) {
isDelet = true;
}
}
if (!isDelet) {
ipResource.setShopIds(null);
ipResource.setDeleted(true);
ipResourceRepository.save(ipResource);
} else {
logger.error("ip " + ipResource.getAddr() + " 删除失败");
logger.error("Scheduled {}, {} delete failed",
ipResource.getAddr());
}
}
ipResource.setShopIds(null);
ipResource.setDeleted(true);
ipResourceRepository.save(ipResource);
}
ipOperationResultDto.getSuccessList().add(ipAddr);
} catch (Exception e) {
......
......@@ -81,10 +81,11 @@ public class ExpireSoonWarn {
JSONObject param = new JSONObject();
param.put("day", day);
param.put("amount", amount);
//TODO 目前不传参
if (day == 0)
SmsUtils.sendIpSms(account.getPhoneNumber(), SmsUtils.SmsTemplateCode.IPEXPIRED, param);
SmsUtils.sendSms(account.getPhoneNumber(), SmsUtils.SmsTemplateCode.IPEXPIRED, null);
else
SmsUtils.sendIpSms(account.getPhoneNumber(), SmsUtils.SmsTemplateCode.IPWILLEXPIRE_EXPIRE, param);
SmsUtils.sendSms(account.getPhoneNumber(), SmsUtils.SmsTemplateCode.IPWILLEXPIRE_EXPIRE, null);
}
}
......@@ -5,9 +5,10 @@ import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.edgec.browserbackend.account.exception.AccountErrorCode;
import com.edgec.browserbackend.common.commons.error.ClientRequestException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -24,97 +25,49 @@ public class SmsUtils {
public enum SmsTemplateCode {
CLOUDAM_ARREARS("SMS_174805285"),
AUTHCODE("SMS_185841618"),
IPWILLEXPIRE_EXPIRE("SMS_472140001"),
IPEXPIRED("SMS_472140001"),
NEWACCOUNT("SMS_187750800");
//CLOUDAM_ARREARS("SMS_174805285"),
//AUTHCODE("SMS_185841618"),
LOGINACCOUNT(0, "SMS_473465082"),
NEWACCOUNT(1,"SMS_473435070"),
RESETACCOUNT(2,"SMS_473480085"),
IPWILLEXPIRE_EXPIRE(3,"SMS_473405076"),
IPEXPIRED(4, "SMS_473405076"),
CLOUDAM_ARREARS(5,"SMS_174805285"),
//NEWACCOUNT("SMS_187750800")
;
Integer type;
String code;
SmsTemplateCode(String code) {
SmsTemplateCode(Integer type, String code) {
this.type =type;
this.code = code;
}
public String getCode() {
return code;
public Integer getType() {
return type;
}
}
public static void notifyNewUserRegistered(String username, String phone, String vps) {
CommonRequest request = new CommonRequest();
request.setMethod(MethodType.POST);
request.setDomain("dysmsapi.aliyuncs.com");
request.setVersion("2017-05-25");
request.setAction("SendSms");
request.putQueryParameter("PhoneNumbers", "13851961528");
request.putQueryParameter("SignName", "微艾");
request.putQueryParameter("TemplateCode", "SMS_170842632");
request.putQueryParameter("TemplateParam", "{"+"\"name\":\""+username+"\"," +
"\"number\":\""+phone+"\"," +
"\"vps\":\""+vps+"\""+
"}");
try {
CommonResponse response = iAcsClient.getCommonResponse(request);
System.out.println(response);
} catch (ClientException e) {
log.error("Sms sends failure",e);
public String getCode() {
return code;
}
}
// public static void sendSmsOpMsg(String username, String groupName, String error) {
// String randomCode = "";
// CommonRequest request = new CommonRequest();
// //request.setProtocol(ProtocolType.HTTPS);
// request.setMethod(MethodType.POST);
// request.setDomain("dysmsapi.aliyuncs.com");
// request.setVersion("2017-05-25");
// request.setAction("SendSms");
// request.putQueryParameter("PhoneNumbers", "13851961528");
// request.putQueryParameter("SignName", "微艾");
// request.putQueryParameter("TemplateCode", "SMS_166665358");
// request.putQueryParameter("TemplateParam", "{"+"\"name\":\""+username+"\"," +
// "\"group\":\""+groupName+"\"," +
// "\"error\":\""+error+"\""+
// "}");
// try {
// CommonResponse response = iAcsClient.getCommonResponse(request);
// System.out.println(response);
// } catch (ClientException e) {
// log.error("Sms sends failure",e);
// }
// }
public static void sendNewAccountSms(String phoneNum, SmsTemplateCode smsTemplateCode, JSONObject param) {
CommonRequest request = new CommonRequest();
//request.setProtocol(ProtocolType.HTTPS);
request.setMethod(MethodType.POST);
request.setDomain("dysmsapi.aliyuncs.com");
request.setVersion("2017-05-25");
request.setAction("SendSms");
request.putQueryParameter("PhoneNumbers", phoneNum);
request.putQueryParameter("SignName", "无界超级浏览器");
request.putQueryParameter("TemplateCode", smsTemplateCode.getCode());
request.putQueryParameter("TemplateParam", param.toJSONString());
try {
CommonResponse response = iAcsClient.getCommonResponse(request);
if (response.getHttpStatus() == 200 && response.getData().contains("OK")) {
return;
} else {
log.error("Send SMS Error,{}, {}, {}, {}", phoneNum, smsTemplateCode, param, response.getData());
public static SmsTemplateCode getByType(Integer type) {
for (SmsUtils.SmsTemplateCode smsTemplateCode : SmsUtils.SmsTemplateCode.values()) {
if (smsTemplateCode.type.intValue() == type.intValue()) {
return smsTemplateCode;
}
}
} catch (Exception e) {
log.error("Send SMS Error,{}, {}, {}", phoneNum, smsTemplateCode, param);
return null;
}
}
public static void sendIpSms(String phoneNum, SmsTemplateCode smsTemplateCode, JSONObject param) {
public static void sendSms(String phoneNum, SmsTemplateCode smsTemplateCode, JSONObject param) {
CommonRequest request = new CommonRequest();
//request.setProtocol(ProtocolType.HTTPS);
request.setMethod(MethodType.POST);
......@@ -124,41 +77,45 @@ public class SmsUtils {
request.putQueryParameter("PhoneNumbers", phoneNum);
request.putQueryParameter("SignName", "无界超级浏览器");
request.putQueryParameter("TemplateCode", smsTemplateCode.getCode());
//request.putQueryParameter("TemplateParam", param.toJSONString());
if(null != param) {
request.putQueryParameter("TemplateParam", param.toJSONString());
}
try {
CommonResponse response = iAcsClient.getCommonResponse(request);
if (response.getHttpStatus() == 200 && response.getData().contains("OK")) {
return;
} else {
log.error("Send SMS Error,{}, {}, {}, {}", phoneNum, smsTemplateCode, param, response.getData());
throw new ClientRequestException(AccountErrorCode.OTHERS, "send sms error, please contact customer" );
}
} catch (Exception e) {
log.error("Send SMS Error,{}, {}, {}", phoneNum, smsTemplateCode, param);
}
}
public static void sendWillExipreSms(String phoneNum, SmsTemplateCode smsTemplateCode, JSONObject param) {
CommonRequest request = new CommonRequest();
//request.setProtocol(ProtocolType.HTTPS);
request.setMethod(MethodType.POST);
request.setDomain("dysmsapi.aliyuncs.com");
request.setVersion("2017-05-25");
request.setAction("SendSms");
request.putQueryParameter("PhoneNumbers", phoneNum);
request.putQueryParameter("SignName", "深圳云端CLOUDAM");
request.putQueryParameter("TemplateCode", smsTemplateCode.getCode());
request.putQueryParameter("TemplateParam", param.toJSONString());
try {
CommonResponse response = iAcsClient.getCommonResponse(request);
if (response.getHttpStatus() == 200 && response.getData().contains("OK")) {
return;
} else {
log.error("Send SMS Error,{}, {}, {}, {}", phoneNum, smsTemplateCode, param, response.getData());
public static String createRandom(boolean numberFlag, int length) {
String retStr = "";
String strTable = numberFlag ? "1234567890" : "1234567890abcdefghijkmnpqrstuvwxyz";
int len = strTable.length();
boolean bDone = true;
do {
retStr = "";
int count = 0;
for (int i = 0; i < length; i++) {
double dblR = Math.random() * len;
int intR = (int) Math.floor(dblR);
char c = strTable.charAt(intR);
if (('0' <= c) && (c <= '9')) {
count++;
}
retStr += strTable.charAt(intR);
}
} catch (Exception e) {
log.error("Send SMS Error,{}, {}, {}", phoneNum, smsTemplateCode, param);
}
if (count >= 2) {
bDone = false;
}
} while (bDone);
return retStr;
}
}
......@@ -40,6 +40,14 @@ public enum RegionMappingEnum {
INDIA("india","孟买","",""),//待确认
MEAST("meast","迪拜","me-east-1",""),
ULANNQAB("ulanqab","乌兰察布","cn-wulanchabu",""),
SILICON("silicon","美国(硅谷)","us-west-1",""),
NANJING("nanjing","南京","","ap-nanjing"),
BANGKOK("bangkok","泰国(曼谷)","ap-southeast-7",""),
MANILA("manila","菲律宾-马尼拉","ap-southeast-6",""),
SEOUL("seoul","韩国-首尔","ap-northeast-2",""),
;
......
......@@ -76,6 +76,7 @@ class BrowserBackendApplicationTests {
@Test
void test3() throws Exception {
//SmsUtils.sendSms("18711016574", SmsUtils.SmsTemplateCode.IPEXPIRED, null );
//SmsUtils.sendSmsOTP("18711016574");
JSONObject param = new JSONObject();
param.put("day", "7");
......
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