| .idea/inspectionProfiles/Project_Default.xml | ●●●●● patch | view | raw | blame | history | |
| src/main/java/email/internal/InternalEmailSenderServiceImpl.java | ●●●●● patch | view | raw | blame | history | |
| src/main/java/project/web/api/LocalUserController.java | ●●●●● patch | view | raw | blame | history | |
| src/main/java/project/web/api/WalletController.java | ●●●●● patch | view | raw | blame | history |
.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" /> 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) { // 验证邮件信息数据的有效性 if (emailMessage == null || emailMessage.getTomail() == null || emailMessage.getContent() == null) { logger.error("无效的邮件信息数据。"); return; } 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());// 邮件标题 logger.info("----- 开始发送邮件 -----"); logger.info("发送邮件到: " + emailMessage.getTomail() + ", 来自: " + emailMessage.getContent()); 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()); // 使用 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()); // addAttachment addInline 两种附件添加方式 // 以附件的形式添加到邮件 // 使用MimeUtility.encodeWord 解决附件名中文乱码的问题 messageHelper.addAttachment(MimeUtility.encodeWord(emailMessage.getFilename()), rarfile); // 将邮件内容以 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("-----邮件开始发送-----开始"); this.mailSender.send(mailMsg);// 发送 logger.info("-----邮件开始发送-----成功"); } catch (MessagingException e) { logger.error("邮件发送失败【MessagingException】"+e.getMessage(), e); } catch (UnsupportedEncodingException e) { logger.error("邮件发送失败【UnsupportedEncodingException】"+e.getMessage(), e); logger.info("----- 邮件发送成功 -----"); // 可选:记录响应体的内容(如果需要) logger.debug("响应内容: " + response.body().string()); } } catch (IOException e) { logger.error("邮件发送失败【IOException】", e); }catch (Exception e){ logger.error("邮件发送失败【Exception】"+"邮件发送失败"+e.getMessage(), e); logger.error("邮件发送失败【Exception】", e); } } /** src/main/java/project/web/api/LocalUserController.java
@@ -392,9 +392,12 @@ 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(); @@ -428,6 +431,20 @@ 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("类型不能为空"); } @@ -458,12 +475,17 @@ 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); this.localUserService.saveRegisterNoVerifcode(reg, type); SecUser secUser = this.secUserService.findUserByLoginName(username); @@ -473,7 +495,6 @@ log.setPartyId(secUser.getPartyId()); log.setUsername(username); this.logService.saveAsyn(log); // 注册完直接登录返回token String token = this.tokenService.savePut(secUser.getPartyId(),secUser.getUsername()); @@ -510,6 +531,45 @@ 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,7 +1050,6 @@ 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)) { @@ -999,28 +1062,6 @@ 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()); 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; }