From e739a69ee991bac72c50bd8c7a00468bcd8039a0 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期三, 27 八月 2025 16:12:05 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ChargeOrderServiceImpl.java |   54 +++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 35 insertions(+), 19 deletions(-)

diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ChargeOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ChargeOrderServiceImpl.java
index d4c673c..54c5ba2 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ChargeOrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ChargeOrderServiceImpl.java
@@ -36,6 +36,7 @@
 import com.ruoyi.system.api.feignClient.SysUserClient;
 import io.swagger.models.auth.In;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -101,9 +102,17 @@
         }*/
         List<String> orderNumberList=new ArrayList<>();
         JSONObject result = new JSONObject();
-        try (InputStream inputStream = file.getInputStream();
-             Workbook workbook = new XSSFWorkbook(inputStream)) {
-//            Workbook workbook = new XSSFWorkbook(fileInputStream);
+        try (InputStream inputStream = file.getInputStream()) {
+            Workbook workbook;
+
+            // 判断文件类型并创建相应的Workbook对象
+            if (file.getOriginalFilename() != null && file.getOriginalFilename().toLowerCase().endsWith(".xlsx")) {
+                workbook = new XSSFWorkbook(inputStream); // 处理 .xlsx 文件
+            } else if (file.getOriginalFilename() != null && file.getOriginalFilename().toLowerCase().endsWith(".xls")) {
+                workbook = new HSSFWorkbook(inputStream); // 处理 .xls 文件
+            } else {
+                throw new ServiceException("不支持的文件格式,请上传 .xls 或 .xlsx 格式的文件", 500);
+            }
             Sheet sheet = workbook.getSheetAt(0); // 获取第一个Sheet
             int lastRowNum = sheet.getLastRowNum();
             for (int i = 1; i <= lastRowNum; i++) {//第二行开始
@@ -337,6 +346,9 @@
     public R importData(ChargeOrder chargeOrder) {
         Site site = siteClient.getSiteAll().getData().stream().filter(e -> e.getId()
                 .equals(chargeOrder.getPowerStationId())).findFirst().orElse(null);
+        // 扣除站点系统用户的积分数
+        List<SysUser> data = sysUserClient.getSysUserAll().getData();
+        SysUser sysUser = data.stream().filter(e -> site.getId().equals(e.getSiteId())).findFirst().orElse(null);
         Integer point=0;
         AppUser appuser = appUserClient.getAppUserByPhone1(chargeOrder.getPhone()).getData();
         //获取用户,更改积分数
@@ -352,6 +364,20 @@
             appuser.setDelFlag(false);
             appuser.setName(appuser.getPhone().substring(0, 3) + "****" + appuser.getPhone().substring(7));
         }
+        if (site==null){
+            //先计算出积分数
+            point = getPoint(chargeOrder.getTotalAmount());
+        }else{
+            point = getPointSite(chargeOrder.getTotalAmount(),site.getId());
+        }
+        if (sysUser != null) {
+            if (sysUser.getIntegral()< point){
+                return R.fail("站点积分不足");
+            }
+        }else {
+            return R.fail("站点用户不存在");
+        }
+
         Integer chargePoint=appuser.getRechargePoint()==null?0:appuser.getRechargePoint();//充值积分
         Integer availablePoint=appuser.getAvailablePoint()==null?0:appuser.getAvailablePoint();//可用积分
         Integer totalPoint=appuser.getTotalPoint()==null?0:appuser.getTotalPoint();//总积分
@@ -363,10 +389,7 @@
         if (userId==null){
             return R.fail("导入订单-保存用户失败");
         }
-        if (site==null){
-            //先计算出积分数
-            point = getPoint(chargeOrder.getTotalAmount());
-        }else{
+        if (site!=null){
             point = getPointSite(chargeOrder.getTotalAmount(),site.getId());
             // 增加站点端积分明细
             IntegralRecord integralRecord = new IntegralRecord();
@@ -378,18 +401,11 @@
             integralRecord.setCreateTime(LocalDateTime.now());
             otherClient.saveIntegralRecord(integralRecord);
             // 扣除站点系统用户的积分数
-            List<SysUser> data = sysUserClient.getSysUserAll().getData();
-            SysUser sysUser = data.stream().filter(e -> e.getSiteId().equals(site.getId())).findFirst().orElse(null);
-            if (sysUser != null) {
-                if (sysUser.getIntegral()==null){
-                    sysUser.setIntegral(0);
-                }
-                if (sysUser.getIntegral()< point){
-                    return R.fail("站点积分不足");
-                }
-                sysUser.setIntegral(sysUser.getIntegral()==null?0:sysUser.getIntegral()-point);
-                sysUserClient.updateSysUser(sysUser);
+            if (sysUser.getIntegral()==null){
+                sysUser.setIntegral(0);
             }
+            sysUser.setIntegral(sysUser.getIntegral()==null?0:sysUser.getIntegral()-point);
+            sysUserClient.updateSysUser(sysUser);
         }
         //保存到数据库
         chargeOrder.setPoint(point);
@@ -464,7 +480,7 @@
             throw new RuntimeException("获取积分兑换比例配置失败");
 
         }
-        if (org.springframework.util.StringUtils.hasLength(data.getChargeCredit())) {
+        if (!org.springframework.util.StringUtils.hasLength(data.getChargeCredit())) {
             throw new RuntimeException("获取积分兑换比例配置失败");
         }
         String chargeCredit = data.getChargeCredit();

--
Gitblit v1.7.1