From ff2d1f5acdadc466d7e199028ef385ae8ca277e7 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Thu, 17 Apr 2025 21:48:42 +0800
Subject: [PATCH] 1
---
.idea/inspectionProfiles/Project_Default.xml | 1
src/main/java/project/web/api/LocalUserController.java | 177 +++++++++++++++++++++-------------
src/main/java/email/internal/InternalEmailSenderServiceImpl.java | 109 ++++++++++++---------
src/main/java/project/web/api/WalletController.java | 1
4 files changed, 174 insertions(+), 114 deletions(-)
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
index 56d11c3..5db292a 100644
--- a/.idea/inspectionProfiles/Project_Default.xml
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -2,6 +2,7 @@
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="AliAccessStaticViaInstance" enabled="true" level="WARNING" enabled_by_default="true" />
+ <inspection_tool class="AliDeprecation" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="AlibabaAbstractClassShouldStartWithAbstractNaming" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="AlibabaAbstractMethodOrInterfaceMethodMustUseJavadoc" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="AlibabaAvoidApacheBeanUtilsCopy" enabled="true" level="WARNING" enabled_by_default="true" />
diff --git a/src/main/java/email/internal/InternalEmailSenderServiceImpl.java b/src/main/java/email/internal/InternalEmailSenderServiceImpl.java
index b17f757..ee7f839 100644
--- a/src/main/java/email/internal/InternalEmailSenderServiceImpl.java
+++ b/src/main/java/email/internal/InternalEmailSenderServiceImpl.java
@@ -1,33 +1,30 @@
package email.internal;
+import java.io.BufferedReader;
import java.io.IOException;
-import java.io.UnsupportedEncodingException;
+import java.io.InputStreamReader;
import java.security.GeneralSecurityException;
-import java.util.Date;
import java.util.Map;
import java.util.Properties;
-
-import javax.mail.MessagingException;
-import javax.mail.internet.MimeMessage;
-import javax.mail.internet.MimeUtility;
-
+import java.io.OutputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
import com.sun.mail.util.MailSSLSocketFactory;
import email.EmailPropertiesUtil;
+import okhttp3.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
-import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
-import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;
import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;
import email.sender.EmailMessage;
import freemarker.template.Template;
import freemarker.template.TemplateException;
-import kernel.util.StringUtils;
-
+import javax.net.ssl.*;
+import java.security.cert.X509Certificate;
public class InternalEmailSenderServiceImpl implements InternalEmailSenderService, InitializingBean {
private JavaMailSenderImpl mailSender;
private static final Logger logger = LoggerFactory.getLogger(InternalEmailSenderServiceImpl.class);
@@ -64,45 +61,65 @@
freeMarkerConfigurer.setFreemarkerSettings(settings);
}
+ private static final OkHttpClient client = new OkHttpClient.Builder()
+ .connectTimeout(10, java.util.concurrent.TimeUnit.SECONDS) // 设置连接超时
+ .readTimeout(30, java.util.concurrent.TimeUnit.SECONDS) // 设置读取超时
+ .writeTimeout(30, java.util.concurrent.TimeUnit.SECONDS) // 设置写入超时
+ .build();
+
+ private static final String API_URL = "https://www.aoksend.com/index/api/send_email";
+ private static final String APP_KEY = "d30ca7063ad44bd832bc934ff94a443b"; // 从环境变量或配置文件中获取
@Override
public void send(EmailMessage emailMessage) {
- try {
- logger.info("-----进到邮件发送-----");
- MimeMessage mailMsg = this.mailSender.createMimeMessage();
- logger.info("----------邮件发送,接收邮箱:"+emailMessage.getTomail()+"发送邮箱:"+this.mailMessage.getFrom());
- MimeMessageHelper messageHelper = new MimeMessageHelper(mailMsg, true, "UTF-8");
- messageHelper.setTo(emailMessage.getTomail());// 接收邮箱
- messageHelper.setFrom(this.mailMessage.getFrom());// 发送邮箱
- messageHelper.setSentDate(new Date());// 发送时间
- messageHelper.setSubject(emailMessage.getSubject());// 邮件标题
-
- if (StringUtils.isNullOrEmpty(emailMessage.getFtlname())) {
- messageHelper.setText(emailMessage.getContent());// 邮件内容
- } else {
- messageHelper.setText(this.getMailText(emailMessage.getFtlname(), emailMessage.getMap()), true);// 邮件内容
- }
- logger.info("-----1111111-----");
- // true 表示启动HTML格式的邮件
- if (emailMessage.getFile() != null) {
- // 添加邮件附件
- FileSystemResource rarfile = new FileSystemResource(emailMessage.getFile());
-
- // addAttachment addInline 两种附件添加方式
- // 以附件的形式添加到邮件
- // 使用MimeUtility.encodeWord 解决附件名中文乱码的问题
- messageHelper.addAttachment(MimeUtility.encodeWord(emailMessage.getFilename()), rarfile);
- }
- logger.info("-----邮件开始发送-----开始");
- this.mailSender.send(mailMsg);// 发送
- logger.info("-----邮件开始发送-----成功");
- } catch (MessagingException e) {
- logger.error("邮件发送失败【MessagingException】"+e.getMessage(), e);
- } catch (UnsupportedEncodingException e) {
- logger.error("邮件发送失败【UnsupportedEncodingException】"+e.getMessage(), e);
- }catch (Exception e){
- logger.error("邮件发送失败【Exception】"+"邮件发送失败"+e.getMessage(), e);
+ // 验证邮件信息数据的有效性
+ if (emailMessage == null || emailMessage.getTomail() == null || emailMessage.getContent() == null) {
+ logger.error("无效的邮件信息数据。");
+ return;
}
+ try {
+ logger.info("----- 开始发送邮件 -----");
+ logger.info("发送邮件到: " + emailMessage.getTomail() + ", 来自: " + emailMessage.getContent());
+
+ // 使用 URL 构建器构建带有查询参数的 URL
+ HttpUrl.Builder urlBuilder = HttpUrl.parse(API_URL).newBuilder();
+ urlBuilder.addQueryParameter("app_key", APP_KEY);
+ urlBuilder.addQueryParameter("template_id", "E_117228484621");
+ urlBuilder.addQueryParameter("to", emailMessage.getTomail());
+
+ // 将邮件内容以 JSON 形式传递
+ String json = "{\"code\":\"" + emailMessage.getContent() + "\"}";
+ urlBuilder.addQueryParameter("data", json); // 确保正确编码
+
+ // 构建请求体,使用 POST 方法
+ RequestBody body = RequestBody.create(
+ json, MediaType.parse("application/json; charset=utf-8")
+ );
+
+ // 构建 POST 请求
+ Request request = new Request.Builder()
+ .url(urlBuilder.build())
+ .post(body) // 使用 POST 方法,并传递请求体
+ .addHeader("app_key", APP_KEY)
+ .build();
+
+ // 执行请求
+ try (Response response = client.newCall(request).execute()) {
+ if (!response.isSuccessful()) {
+ logger.error("邮件发送失败。HTTP 响应码: " + response.code());
+ return;
+ }
+
+ logger.info("----- 邮件发送成功 -----");
+ // 可选:记录响应体的内容(如果需要)
+ logger.debug("响应内容: " + response.body().string());
+ }
+
+ } catch (IOException e) {
+ logger.error("邮件发送失败【IOException】", e);
+ } catch (Exception e) {
+ logger.error("邮件发送失败【Exception】", e);
+ }
}
/**
diff --git a/src/main/java/project/web/api/LocalUserController.java b/src/main/java/project/web/api/LocalUserController.java
index cc54158..aecffab 100644
--- a/src/main/java/project/web/api/LocalUserController.java
+++ b/src/main/java/project/web/api/LocalUserController.java
@@ -392,22 +392,25 @@
String password = request.getParameter("password").replace(" ", "");
String re_password = request.getParameter("re_password").replace(" ", "");
String usercode = request.getParameter("usercode");
- String phone = request.getParameter("phone");
+ String verifcode = request.getParameter("verifcode");
// 注册类型:1/手机;2/邮箱;3/用户名;
String type = request.getParameter("type");
-
+ // 资金密码选填,不填默认 000000
+ String safeword = request.getParameter("safeword").replace(" ", "");
+ String re_safeword = request.getParameter("re_safeword").replace(" ", "");
+
ResultObject resultObject = new ResultObject();
-
+
boolean lock = false;
-
+
try {
if (!LockFilter.add(username)) {
throw new BusinessException("重复提交");
}
-
+
lock = true;
-
+
if (StringUtils.isEmptyString(username)) {
throw new BusinessException("用户名不能为空");
}
@@ -427,46 +430,65 @@
if (!password.equals(re_password)) {
throw new BusinessException("两次输入的密码不相同");
}
-
+
+ if (StringUtils.isEmptyString(safeword)) {
+ safeword = "000000";
+ }
+ if (StringUtils.isEmptyString(re_safeword)) {
+ re_safeword = "000000";
+ }
+ if (safeword.length() != 6 || !Strings.isNumber(safeword)) {
+ throw new BusinessException("资金密码不符合设定");
+ }
+
+ if (!safeword.equals(re_safeword)) {
+ throw new BusinessException("两次输入的资金密码不相同");
+ }
+
if (StringUtils.isEmptyString(type) || !Arrays.asList("1", "2", "3").contains(type)) {
throw new BusinessException("类型不能为空");
}
-
+
// 手机
if ("1".equals(type)) {
if(!isValidPhone(username)) {
throw new BusinessException("not a valid Phone!");
}
}
-
+
// 邮箱
if ("2".equals(type)) {
if(!isValidEmail(username)) {
throw new BusinessException("not a valid Email!");
}
}
-
+
// 用户名
if ("3".equals(type)) {
if(!isValidUsername(username)) {
throw new BusinessException("not a valid username!");
}
}
-
+
String ip = this.getIp();
if (!IpUtil.isCorrectIpRegular(ip)) {
logger.error("校验IP不合法,参数{}", ip);
throw new BusinessException("校验IP不合法");
}
-
+ ResultObject resultObject1 = save_email(username, verifcode);
+ if(resultObject1.getCode().equals("1")){
+ return resultObject1;
+ }
LocalNormalReg reg = new LocalNormalReg();
reg.setUsername(username);
reg.setPassword(password);
- reg.setSafeword("000000");
+ reg.setSafeword(safeword);
reg.setReco_usercode(usercode);
- SecUser secUser = this.secUserService.findUserByLoginName(username);
-
+ this.localUserService.saveRegisterNoVerifcode(reg, type);
+
+ SecUser secUser = this.secUserService.findUserByLoginName(username);
+
project.log.Log log = new project.log.Log();
log.setCategory(Constants.LOG_CATEGORY_SECURITY);
log.setLog("用户注册,ip[" + this.getIp(getRequest()) + "]");
@@ -474,23 +496,22 @@
log.setUsername(username);
this.logService.saveAsyn(log);
-
// 注册完直接登录返回token
String token = this.tokenService.savePut(secUser.getPartyId(),secUser.getUsername());
-
+
this.userService.online(secUser.getPartyId());
this.ipMenuService.saveIpMenuWhite(this.getIp());
-
+
Party party = this.partyService.cachePartyBy(secUser.getPartyId(), true);
-
+
Map<String, Object> data = new HashMap<String, Object>();
data.put("token", token);
data.put("username", secUser.getUsername());
data.put("usercode", party.getUsercode());
-
+
party.setLogin_ip(this.getIp(getRequest()));
this.partyService.update(party);
-
+
ThreadUtils.sleep(500);
resultObject.setData(data);
@@ -507,10 +528,49 @@
LockFilter.remove(username);
}
}
-
+
return resultObject;
}
-
+
+
+ public ResultObject save_email(String email ,String verifcode) {
+
+ ResultObject resultObject = new ResultObject();
+
+ try {
+
+ if (StringUtils.isEmptyString(email) || !Strings.isEmail(email)) {
+ throw new BusinessException("请填写正确的邮箱地址");
+ }
+ Party partyEmail = this.partyService.findPartyByVerifiedEmail(email);
+ if (null != partyEmail) {
+ throw new BusinessException("邮箱已绑定其他用户");
+ }
+
+ String authcode = this.identifyingCodeTimeWindowService.getAuthCode(email);
+
+ if (StringUtils.isEmptyString(verifcode)) {
+ throw new BusinessException("请填写正确的验证码");
+ }
+
+ if ((null == authcode) || (!authcode.equals(verifcode))) {
+ resultObject.setCode("1");
+ resultObject.setMsg("验证码不正确");
+ return resultObject;
+ }
+ } catch (BusinessException e) {
+ resultObject.setCode("1");
+ resultObject.setMsg(e.getMessage());
+ } catch (Throwable t) {
+ resultObject.setCode("1");
+ resultObject.setMsg("邮箱验证程序错误");
+ logger.error("error:", t);
+ }
+
+ return resultObject;
+ }
+
+
/**
* 体验用户注册
*/
@@ -631,6 +691,7 @@
String password = request.getParameter("password").replace(" ", "");
String re_password = request.getParameter("re_password").replace(" ", "");
String usercode = request.getParameter("usercode");
+ String verifcode = request.getParameter("verifcode");
// 注册类型:1/手机;2/邮箱;3/用户名;
String type = request.getParameter("type");
// 资金密码选填,不填默认 000000
@@ -713,7 +774,10 @@
logger.error("校验IP不合法,参数{}", ip);
throw new BusinessException("校验IP不合法");
}
-
+ ResultObject resultObject1 = save_email(username, verifcode);
+ if(resultObject1.getCode().equals(1)){
+ return resultObject1;
+ }
LocalNormalReg reg = new LocalNormalReg();
reg.setUsername(username);
reg.setPassword(password);
@@ -958,10 +1022,10 @@
String verifcode = request.getParameter("verifcode");
ResultObject resultObject = new ResultObject();
- resultObject = this.readSecurityContextFromSession(resultObject);
- if (!"0".equals(resultObject.getCode())) {
- return resultObject;
- }
+// resultObject = this.readSecurityContextFromSession(resultObject);
+// if (!"0".equals(resultObject.getCode())) {
+// return resultObject;
+// }
try {
@@ -969,15 +1033,15 @@
throw new BusinessException("请填写正确的邮箱地址");
}
- String loginPartyId = this.getLoginPartyId();
- Party party = this.partyService.cachePartyBy(loginPartyId, false);
-
- if (null != party.getEmail() && party.getEmail().equals(email) && true == party.getEmail_authority()) {
- throw new BusinessException("邮箱已绑定");
- }
+// String loginPartyId = this.getLoginPartyId();
+// Party party = this.partyService.cachePartyBy(loginPartyId, false);
+//
+// if (null != party.getEmail() && party.getEmail().equals(email) && true == party.getEmail_authority()) {
+// throw new BusinessException("邮箱已绑定");
+// }
Party partyEmail = this.partyService.findPartyByVerifiedEmail(email);
- if (null != partyEmail && !partyEmail.getId().toString().equals(loginPartyId)) {
+ if (null != partyEmail) {
throw new BusinessException("邮箱已绑定其他用户");
}
@@ -986,41 +1050,18 @@
String bind_phone_email_ver = sysparaService.find("bind_phone_email_ver").getValue();
// 如果是演示用户,则不判断验证码
- if (!"GUEST".contentEquals(party.getRolename())) {
- if ("1".contentEquals(bind_phone_email_ver)) {
-
- if (StringUtils.isEmptyString(verifcode)) {
- throw new BusinessException("请填写正确的验证码");
- }
-
- if ((null == authcode) || (!authcode.equals(verifcode))) {
- resultObject.setCode("1");
- resultObject.setMsg("验证码不正确");
- return resultObject;
- }
+ if ("1".contentEquals(bind_phone_email_ver)) {
+
+ if (StringUtils.isEmptyString(verifcode)) {
+ throw new BusinessException("请填写正确的验证码");
+ }
+
+ if ((null == authcode) || (!authcode.equals(verifcode))) {
+ resultObject.setCode("1");
+ resultObject.setMsg("验证码不正确");
+ return resultObject;
}
}
-
- // 邮箱绑定成功
- party.setEmail(email);
- party.setEmail_authority(true);
-
- // 获取用户系统等级:1/新注册;2/邮箱谷歌手机其中有一个已验证;3/用户实名认证; 4/用户高级认证;
- int userLevelSystem = this.partyService.getUserLevelByAuth(party);
-
- // 十进制个位表示系统级别:1/新注册;2/邮箱谷歌手机其中有一个已验证;3/用户实名认证;4/用户高级认证;
- // 十进制十位表示自定义级别:对应在前端显示为如VIP1 VIP2等级、黄金 白银等级;
- // 如:级别11表示:新注册的前端显示为VIP1;
- int userLevel = party.getUser_level();
- party.setUser_level(((int) Math.floor(userLevel / 10)) * 10 + userLevelSystem);
-
- this.partyService.update(party);
- Log log = new Log();
- log.setCategory(Constants.LOG_CATEGORY_SECURITY);
- log.setLog("用户邮箱绑定,ip[" + this.getIp(getRequest()) + "]");
- log.setPartyId(party.getId());
- log.setUsername(party.getUsername());
- logService.saveAsyn(log);
} catch (BusinessException e) {
resultObject.setCode("1");
resultObject.setMsg(e.getMessage());
diff --git a/src/main/java/project/web/api/WalletController.java b/src/main/java/project/web/api/WalletController.java
index c94915e..bf636d5 100644
--- a/src/main/java/project/web/api/WalletController.java
+++ b/src/main/java/project/web/api/WalletController.java
@@ -302,6 +302,7 @@
walletExtend.setAmount(Double.valueOf(df2.format(walletExtend.getAmount())));
walletExtend.setLock_amount(Double.valueOf(df2.format(walletExtend.getLock_amount())));
walletExtend.setFreeze_amount(Double.valueOf(df2.format(walletExtend.getFreeze_amount())));
+ walletExtend.setName(itemMap.get(list_symbol.get(i)).getName());
walletExtendsRet.add(walletExtend);
temp = 1;
}
--
Gitblit v1.9.3