xuhy
2025-09-04 05f53069a91f979ec3d18e0a7abc8ce67c2656b2
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ChargeOrderServiceImpl.java
@@ -59,10 +59,7 @@
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import java.util.*;
@Slf4j
@Service
@@ -361,6 +358,26 @@
            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());
        }
        // 扣除站点系统用户的积分数
        SysUser sysUser=null;
        if(Objects.nonNull(site)){
            List<SysUser> data = sysUserClient.getSysUserAll().getData();
            sysUser = data.stream().filter(e -> site.getId().equals(e.getSiteId())).findFirst().orElse(null);
            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();//总积分
@@ -372,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();
@@ -387,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);
@@ -432,7 +439,7 @@
            throw new IllegalArgumentException("金额不能为null或负数");
        }
        // 获取积分兑换比例配置
        R<SysConfig> info = sysConfigClient.getInfo(8L);
        R<SysConfig> info = sysConfigClient.getInfo(10L);
        if (info == null || info.getData() == null) {
            throw new RuntimeException("获取积分兑换比例配置失败");
        }
@@ -473,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();