From 3244b550596e0330031b3f4547356927df83b0ad Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期一, 19 五月 2025 11:48:35 +0800
Subject: [PATCH] 修改bug

---
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java |  212 +++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 164 insertions(+), 48 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..754743b 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", host);
+        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(from, "NUSdxDQqadYvVek2");
+            }
+        });
 
+        try{
+            // 创建默认的 MimeMessage 对象
+            MimeMessage message = new MimeMessage(session);
+            // Set From,设置发件人
+            InternetAddress fromMail = new InternetAddress(from);
+            //设置发件人名称,TODO 换成自己的发件箱
+            fromMail.setPersonal(MimeUtility.encodeText("明星新能源科技有限公司<" + from + ">"));
+            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
@@ -144,7 +261,8 @@
         appUserService.updateById(byId);
         return R.ok();
     }
-
+    
+    
     @ApiOperation(value = "查询当前用户是否为会员 0否1是", tags = {"小程序--查询当前用户是否为会员"})
     @PostMapping(value = "/getUserInfo")
     public AjaxResult<Integer> getUserInfo() {
@@ -555,7 +673,6 @@
     }
     
     
-    
     @ApiOperation(value = "用户详情积分明细", tags = {"小程序-个人中心"})
     @PostMapping(value = "/user/points/page1")
     public R<Page<TAppUserIntegralChange>> pointsDetail1(@RequestBody PointsQueryDto pointsQueryDto) {
@@ -606,7 +723,6 @@
         
     }
     
-
     @ApiOperation(value = "积分详情", tags = {"小程序-个人中心"})
     @GetMapping(value = "/user/points/detail")
     public R<TAppUserIntegralChange> pointsDetail(String id) {
@@ -668,7 +784,8 @@
     }
     @Resource
     private TAppUserVipDetailService appUserVipDetailService;
-
+    
+    
     @ApiOperation(value = "个人中心信息", tags = {"小程序-个人中心"})
     @GetMapping(value = "/user/info")
     public R<AppUserInfoDto> info() {
@@ -709,18 +826,25 @@
         appUserInfoDto.setPoints(byId.getPoints()==null?0:byId.getPoints());
         return R.ok(appUserInfoDto);
     }
-
-
+    
+    
+    @Log(title = "【我的】设置头像", businessType = BusinessType.UPDATE,operatorType = OperatorType.MOBILE)
     @ApiOperation(value = "设置头像", tags = {"小程序-个人中心"})
     @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);
         return R.ok();
     }
-
+    
     @ApiOperation(value = "优惠卷列表不分页(1可使用2不可用)", tags = {"小程序-个人中心"})
     @GetMapping(value = "/user/coupon")
     public R<ListInfoCouponDto> userCoupon(@RequestParam("type") Integer type) {
@@ -774,8 +898,8 @@
         return R.ok(listInfoCouponDto);
 
     }
-
-
+    
+    
     @ApiOperation(value = "优惠卷详情(1可使用2不可用)", tags = {"小程序-个人中心"})
     @PostMapping(value = "/user/coupon/getById")
     public R<TAppCoupon> couponGetById(@RequestParam("id")Long id) {
@@ -850,36 +974,14 @@
             } 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();
     }
     
-
+    
     @ApiOperation(value = "已赠送列表", tags = {"小程序-个人中心-邀请好友"})
     @PostMapping(value = "/user/invite/page")
     public R<Page<TInviteUser>> invitePage(@RequestBody BasePage basePage) {
@@ -892,7 +994,7 @@
         }
         return R.ok(page);
     }
-
+    
     @ApiOperation(value = "已赠送列表", tags = {"小程序-个人中心-邀请好友"})
     @GetMapping(value = "/user/invite/info")
     public R<InviteInfoDto> inviteInfo() {
@@ -909,9 +1011,9 @@
 
         return R.ok(inviteInfoDto);
     }
-
-
-
+    
+    
+    @Log(title = "【我的】更换手机号", businessType = BusinessType.UPDATE,operatorType = OperatorType.MOBILE)
     @ApiOperation(value = "更换手机号", tags = {"小程序-用户管理-更换手机号"})
     @PostMapping(value = "/user/updatePhone")
     public AjaxResult<String> updatePhone(@Validated @RequestBody UpdatePhoneDTO dto) {
@@ -933,7 +1035,9 @@
         appUserService.updateById(appUser1);
         return AjaxResult.success();
     }
-
+    
+    
+    @Log(title = "【我的】注销接口", businessType = BusinessType.DELETE,operatorType = OperatorType.MOBILE)
     @ApiOperation(value = "注销接口", tags = {"小程序-用户管理-注销账号"})
     @DeleteMapping("/logoff")
     public AjaxResult<?> logoff(HttpServletRequest request) {
@@ -1009,7 +1113,8 @@
         return R.ok(appUserService.list(Wrappers.lambdaQuery(TAppUser.class)
                 .eq(TAppUser::getPhone,phone)));
     }
-
+    
+    @Log(title = "【我的】签到", businessType = BusinessType.INSERT,operatorType = OperatorType.MOBILE)
     @ApiOperation(value = "签到", tags = {"小程序-个人中心-签到"})
     @GetMapping(value = "/user/sign")
     public R sign() {
@@ -1075,7 +1180,6 @@
     }
     
     
-    //已签到日期
     @ApiOperation(value = "本月已签到日期", tags = {"小程序-个人中心-签到"})
     @GetMapping(value = "/user/has/sign")
     public R<List<TAppUserSign>> hasSign() {
@@ -1095,11 +1199,9 @@
         return R.ok(signRecords);
 
     }
-
-
-
-    //已连续签到多少天
-
+    
+    
+    
     @ApiOperation(value = "本月已连续签到天数", tags = {"小程序-个人中心-签到"})
     @GetMapping(value = "/user/continue/sign")
     public R continueSign() {
@@ -1128,7 +1230,9 @@
         appUserService.updateById(byId);
         return R.ok();
     }
-
+    
+    
+    @Log(title = "【我的】添加编辑车辆", businessType = BusinessType.INSERT,operatorType = OperatorType.MOBILE)
     @ApiOperation(value = "添加编辑车辆", tags = {"小程序-个人中心-车辆"})
     @PostMapping(value = "/user/car/addOrUpdate")
     public R carAdd(@RequestBody TAppUserCar appUserCar) {
@@ -1211,6 +1315,8 @@
 
         return R.ok();
     }
+    
+    @Log(title = "【我的】添加编辑车辆", businessType = BusinessType.INSERT,operatorType = OperatorType.MOBILE)
     @ApiOperation(value = "添加编辑车辆", tags = {"小程序-个人中心-车辆"})
     @GetMapping(value = "/user/car/delete")
     public R carDelete(String id) {
@@ -1222,6 +1328,8 @@
         boolean b = appUserCarService.removeById(id);
         return R.ok();
     }
+    
+    
     @ApiOperation(value = "车辆详情", tags = {"小程序-个人中心-车辆"})
     @GetMapping(value = "/user/car/detail")
     public R<TAppUserCar> carDetail(String id) {
@@ -1232,7 +1340,7 @@
         }
         return R.ok(byId);
     }
-
+    
     @ApiOperation(value = "获取车辆品牌", tags = {"小程序-个人中心-车辆"})
     @GetMapping(value = "/user/car/getBrands")
     public R getBrands(String name) throws Exception {
@@ -1253,7 +1361,8 @@
         return R.ok(data);
 
     }
-
+    
+    
     @ApiOperation(value = "根据品牌获取车系", tags = {"小程序-个人中心-车辆"})
     @GetMapping(value = "/user/car/getModel")
     public R getModel(String id) throws Exception {
@@ -1272,6 +1381,8 @@
         }
         return R.ok(backList);
     }
+    
+    
     @ApiOperation(value = "根据车系获取车型", tags = {"小程序-个人中心-车辆"})
     @GetMapping(value = "/user/car/getSeries")
     public R getSeries(String id) throws Exception {
@@ -1289,7 +1400,8 @@
         return R.ok(data);
 
     }
-
+    
+    
     @ApiOperation(value = "根据车型获取详情", tags = {"小程序-个人中心-车辆"})
     @GetMapping(value = "/user/car/getDetail")
     public R getDetail(String id) throws Exception {
@@ -1302,6 +1414,7 @@
     
     
     
+    @Log(title = "【我的】修改个人信息", businessType = BusinessType.UPDATE,operatorType = OperatorType.MOBILE)
     @PostMapping(value = "/user/editAppUserInfo")
     @ApiOperation(value = "修改个人信息", tags = {"小程序-个人中心"})
     public AjaxResult editAppUserInfo(@RequestBody TAppUser appUser){
@@ -1338,6 +1451,9 @@
         String result3 = HttpUtils.post(MsgConstants.SEND_URL, reqStr3);
         System.err.println(result3);
     }
+    
+    
+    @Log(title = "【我的】退出登录", businessType = BusinessType.STOP,operatorType = OperatorType.MOBILE)
     @PostMapping(value = "/user/logOut")
     @ApiOperation(value = "退出登录", tags = {"小程序-个人中心"})
     public AjaxResult logOut(){

--
Gitblit v1.7.1