From 2134c13b7b2815983281fdc819e3138ffde1bc48 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期二, 05 八月 2025 21:10:42 +0800 Subject: [PATCH] 所有代码 --- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ChargeOrderServiceImpl.java | 95 +++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 90 insertions(+), 5 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 5027c93..0560b15 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 @@ -8,8 +8,12 @@ import com.ruoyi.account.api.feignClient.UserPointClient; import com.ruoyi.account.api.model.AppUser; import com.ruoyi.account.api.model.UserPoint; +import com.ruoyi.chargingPile.api.feignClient.SiteClient; +import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.common.core.constant.ExpressCompanyMap; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.dto.ChargingOrderGroup; +import com.ruoyi.common.core.dto.ChargingPercentProvinceDto; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.web.page.PageInfo; @@ -21,9 +25,15 @@ import com.ruoyi.order.service.ChargeOrderService; import com.ruoyi.order.service.OrderService; import com.ruoyi.order.vo.ConfirmDelivery; +import com.ruoyi.other.api.domain.IntegralRecord; import com.ruoyi.other.api.domain.Region; +import com.ruoyi.other.api.domain.TIntegralRule; +import com.ruoyi.other.api.feignClient.OtherClient; import com.ruoyi.system.api.domain.SysConfig; +import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysConfigClient; +import com.ruoyi.system.api.feignClient.SysUserClient; +import io.swagger.models.auth.In; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; @@ -57,13 +67,19 @@ private OrderService orderService; @Resource private SysConfigClient sysConfigClient; - + @Resource + private OtherClient otherClient; @Resource private AppUserClient appUserClient; @Resource private UserPointClient userPointClient; @Resource private ChargeOrderService chargeOrderService; + @Resource + private SiteClient siteClient; + + @Resource + private SysUserClient sysUserClient; private static final String DEFAULT_AVATAR_URL = "http://qijishenghuiyuan.obs.cn-southwest-2.myhuaweicloud.com/admin/58084a0ce8c34dc79f9d8b4c0bc3774a.png"; @@ -296,12 +312,20 @@ pageInfo.setRecords(list); return pageInfo; } + + @Override + public List<ChargingOrderGroup> chargingOrderGroup(ChargingPercentProvinceDto chargingPercentProvinceDto) { + + return this.baseMapper.chargingOrderGroup(chargingPercentProvinceDto); + } + @Transactional public R importData(ChargeOrder chargeOrder) { - //先计算出积分数 - Integer point = getPoint(chargeOrder.getTotalAmount()); - //获取用户,更改积分数 + Site site = siteClient.getSiteAll().getData().stream().filter(e -> e.getId() + .equals(chargeOrder.getPowerStationId())).findFirst().orElse(null); + Integer point=0; AppUser appuser = appUserClient.getAppUserByPhone1(chargeOrder.getPhone()).getData(); + //获取用户,更改积分数 if (null==appuser){ //创建用户 appuser = new AppUser(); @@ -325,7 +349,28 @@ if (userId==null){ return R.fail("导入订单-保存用户失败"); } - + if (site==null){ + //先计算出积分数 + point = getPoint(chargeOrder.getTotalAmount()); + }else{ + point = getPointSite(chargeOrder.getTotalAmount(),site.getId()); + // 增加站点端积分明细 + IntegralRecord integralRecord = new IntegralRecord(); + integralRecord.setSiteId(chargeOrder.getPowerStationId()); + integralRecord.setAppUserId(appuser.getId()); + integralRecord.setIntegralType(2); + integralRecord.setIntegralCount(point); + integralRecord.setDelFlag(0); + 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) { + sysUser.setIntegral(sysUser.getIntegral()==null?0:sysUser.getIntegral()-point); + sysUserClient.updateSysUser(sysUser); + } + } //添加用户积分流水 //转入用户 UserPoint userPoint = new UserPoint(); @@ -383,5 +428,45 @@ } } + /** + * 获取现金兑换的积分数 + * @param cash + * @return + */ + public Integer getPointSite(BigDecimal cash,Integer siteId){ + if (cash == null || cash.compareTo(BigDecimal.ZERO) < 0) { + throw new IllegalArgumentException("金额不能为null或负数"); + } + // 获取积分兑换比例配置 + TIntegralRule data = otherClient.getSetBySiteId(siteId).getData(); + if (data == null) { + throw new RuntimeException("获取积分兑换比例配置失败"); + + } + if (org.springframework.util.StringUtils.hasLength(data.getChargeCredit())) { + throw new RuntimeException("获取积分兑换比例配置失败"); + } + String chargeCredit = data.getChargeCredit(); + if (StringUtils.isBlank(chargeCredit)) { + throw new RuntimeException("积分兑换比例配置值为空"); + } + try { + com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSONObject.parseObject(chargeCredit); + Integer num1 = jsonObject.getInteger("num1"); + + if (num1 <= 0) { + throw new RuntimeException("积分兑换比例必须大于0"); + } + // 计算积分并向下取整(Floor) + int cashInt = cash.intValue(); + return cashInt*=num1; + + } catch (NumberFormatException e) { + throw new RuntimeException("积分兑换比例配置值格式错误", e); + } catch (ArithmeticException e) { + throw new RuntimeException("积分计算结果溢出", e); + } + + } } -- Gitblit v1.7.1