From 053492c159a2cb8f12e8a7f59675ef6516d31440 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期四, 20 三月 2025 13:50:29 +0800 Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile --- ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java | 145 +++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 123 insertions(+), 22 deletions(-) diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java index 5ad844e..67a4855 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java @@ -51,18 +51,30 @@ import com.ruoyi.system.api.model.LoginUserApplet; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.compress.utils.IOUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.client.RestTemplate; +import javax.activation.DataHandler; +import javax.activation.FileDataSource; import javax.annotation.Resource; +import javax.mail.*; +import javax.mail.internet.*; import javax.servlet.http.HttpServletRequest; +import java.io.File; +import java.io.FileOutputStream; +import java.io.InputStream; +import java.io.UnsupportedEncodingException; import java.math.BigDecimal; +import java.net.URL; import java.time.Duration; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.*; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** @@ -120,6 +132,9 @@ private TAppUserCarService carService; @Resource private IntegralRuleClient integralRuleClient; + + @Resource + private RedisTemplate redisTemplate; @Resource @@ -129,7 +144,109 @@ @Resource private GiveVipUtil giveVipUtil; + /** + * 远程调用 发送邮件 + * @return + */ + @PostMapping(value = "/uploadPdf") + public R uploadPdf(@RequestBody UploadPdfDTO dto) { + // 发送邮箱 + // 收件人电子邮箱,TODO 换成自己的收件箱 + String to = dto.getMailBox(); + // 发件人电子邮箱,TODO 换成自己的发件箱 + String from = "13281306557@163.com"; + // 指定发送邮件的主机为 + String host = "smtp.163.com"; + Properties properties = new Properties(); + properties.put("mail.smtp.host", "smtp.163.com"); + properties.put("mail.smtp.socketFactory.port", "465"); + properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); + properties.put("mail.smtp.auth", "true"); + properties.put("mail.smtp.port", "465"); + properties.put("mail.smtp.ssl.enable", "true"); // 明确开启SSL + // 获取默认session对象 + Session session = Session.getDefaultInstance(properties,new Authenticator(){ + @Override + public javax.mail.PasswordAuthentication getPasswordAuthentication() + { + //发件人邮件用户名、授权码,换成自己的发件箱及授权码 + return new PasswordAuthentication("13281306557@163.com", "NUSdxDQqadYvVek2"); + } + }); + try{ + // 创建默认的 MimeMessage 对象 + MimeMessage message = new MimeMessage(session); + // Set From,设置发件人 + InternetAddress fromMail = new InternetAddress(from); + //设置发件人名称,TODO 换成自己的发件箱 + fromMail.setPersonal(MimeUtility.encodeText("明星新能源科技有限公司<13281306557@163.com>")); + message.setFrom(fromMail); + // Set To: 设置收件人 + InternetAddress toMail = new InternetAddress(to); + // TODO 换成自己的收件箱 + InternetAddress toMail2 = new InternetAddress(to); + //发多个邮箱 + Address[] allRecipients = {toMail, toMail2}; + message.setRecipients(Message.RecipientType.TO, allRecipients); + // Set Subject: 邮件主体 + message.setSubject("明星电力"); + // 设置消息体 + message.setSentDate(new Date()); + javax.mail.internet.MimeMultipart msgMultipart = new MimeMultipart("mixed"); + + // 指定为混合关系 + message.setContent(msgMultipart); + // 邮件信息组装 + //组装的顺序非常重要,一定要先组装文本域,再组装文件 + javax.mail.internet.MimeBodyPart htmlPart = new javax.mail.internet.MimeBodyPart(); + // 组装内容 + htmlPart.setContent("开票", "text/html;charset=UTF-8"); + msgMultipart.addBodyPart(htmlPart); + + // 组装附件 + javax.mail.internet.MimeBodyPart filePart = new MimeBodyPart(); + String imageUrl = dto.getInvoiceUrl(); + try { + // 下载数据 + URL url = new URL(imageUrl); + InputStream inputStream = url.openStream(); + byte[] imageBytes = IOUtils.toByteArray(inputStream); + + // 创建临时文件 + // 截取imageUrl后缀名 + String fileExtension = imageUrl.substring(imageUrl.lastIndexOf(".")); + File tempFile = File.createTempFile("tempImage", fileExtension); + try (FileOutputStream fos = new FileOutputStream(tempFile)) { + fos.write(imageBytes); + } + + // 创建 FileDataSource + FileDataSource fileDataSource = new FileDataSource(tempFile); + System.out.println("FileDataSource created: " + fileDataSource.getName()); + // 如果需要,可以使用 DataHandler 进行进一步处理 + DataHandler dh = new DataHandler(fileDataSource); + // 清理:删除临时文件(如果不再需要) + tempFile.deleteOnExit(); // 可根据需要保留或删除 + filePart.setDataHandler(dh); + // 附件区别内嵌内容的一个特点是有文件名,为防止中文乱码要编码 + filePart.setFileName(MimeUtility.encodeText(dh.getName())); + msgMultipart.addBodyPart(filePart); + message.saveChanges(); + //发送 + //Transport.send(message, message.getAllRecipients()); + Transport.send(message); + System.out.println("发送成功"); + } catch (Exception e) { + e.printStackTrace(); + } + }catch (MessagingException | UnsupportedEncodingException mex) { + mex.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } + return R.ok(); + } /** * 远程调用 积分兑换订单 退款回退积分 * @return @@ -715,6 +832,12 @@ @GetMapping(value = "/user/set/avatar") public R avatar(String url) { Long userId = tokenService.getLoginUserApplet().getUserId(); + String fileName = redisTemplate.opsForValue().get("file:" + userId).toString(); + String substring = url.substring(url.lastIndexOf("/") + 1); + if(StringUtils.isEmpty(fileName) || fileName.equals(substring)){ + return R.fail("请重新上传头像"); + } + TAppUser byId = appUserService.getById(userId); byId.setAvatar(url); appUserService.updateById(byId); @@ -850,31 +973,9 @@ } else if (giveVipDto.getType() == 3) { plusDay = 12; } - BigDecimal bigDecimal = new BigDecimal("0"); - TVip info = vipClient.getInfo1(giveVipDto.getVipId()).getData(); - switch (giveVipDto.getType()){ - case 1: - bigDecimal = bigDecimal.add(info.getMonthlyCard()==null?new BigDecimal(0):info.getMonthlyCard()); - break; - case 2: - bigDecimal = bigDecimal.add(info.getSeasonCard()==null?new BigDecimal(0):info.getSeasonCard()); - break; - case 3: - bigDecimal = bigDecimal.add(info.getAnnualCard()==null?new BigDecimal(0):info.getAnnualCard()); - break; - } //增加vipDetail giveVipUtil.sendVip(nowUser, giveVipDto.getVipId(),plusDay,giveVipDto.getType()); appUserService.updateById(nowUser); - // 新增后台赠送记录 - TGrantVip tGrantVip = new TGrantVip(); - tGrantVip.setCode(OrderCodeUtil.getOrderCode("ZS")); - tGrantVip.setAppUserId(nowUser.getId()); - tGrantVip.setVipId(giveVipDto.getVipId()); - tGrantVip.setOrderAmount(bigDecimal); - tGrantVip.setCreateTime(LocalDateTime.now()); - tGrantVip.setAppUserId(nowUser.getId()); - orderClient.managementGiveVip(tGrantVip); } return R.ok(); } -- Gitblit v1.7.1