From caa2b51bb4133f5a2e59eac242e744fb57f864a0 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期二, 10 九月 2024 13:01:44 +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/service/impl/TAppCouponServiceImpl.java | 90 ++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 80 insertions(+), 10 deletions(-) diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppCouponServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppCouponServiceImpl.java index d7c6dcc..42c336b 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppCouponServiceImpl.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppCouponServiceImpl.java @@ -7,13 +7,14 @@ import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.account.api.model.TAppUserVipDetail; import com.ruoyi.account.api.query.ExchangeRecordGoodsQuery; -import com.ruoyi.account.api.vo.CouponListVOVO; +import com.ruoyi.other.api.vo.CouponListVOVO; import com.ruoyi.account.api.vo.ExchangeRecordVO; import com.ruoyi.account.mapper.TAppCouponMapper; import com.ruoyi.account.mapper.TAppUserMapper; import com.ruoyi.account.service.TAppCouponService; import com.ruoyi.account.service.TAppUserVipDetailService; import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.core.web.page.BasePage; import com.ruoyi.common.core.web.page.PageInfo; @@ -31,8 +32,11 @@ import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; +import java.math.BigDecimal; +import java.math.BigInteger; import java.text.SimpleDateFormat; import java.time.LocalDateTime; +import java.util.Comparator; import java.util.Date; import java.util.List; @@ -59,6 +63,10 @@ private ChargingOrderClient chargingOrderClient; @Autowired private TAppUserVipDetailService tAppUserVipDetailService; + @Autowired + private TAppUserMapper tAppUserMapper; + @Autowired + private TokenService tokenService; @Override public PageInfo<ExchangeRecordVO> pagelist(ExchangeRecordGoodsQuery dto) { @@ -128,20 +136,23 @@ } - @Autowired - private TAppUserMapper tAppUserMapper; + @Override public PageInfo<CouponListVOVO> couponList(CouponListDto dto) { // todo token获取用户id - Long userId = 11L; - dto.setUserId(userId); + dto.setUserId(tokenService.getLoginUserApplet().getUserId()); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); PageInfo<CouponListVOVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize()); List<CouponListVOVO> list = this.baseMapper.couponList(pageInfo,dto.getUserId()); TAppUser tAppUser = tAppUserMapper.selectById(dto.getUserId()); - Integer isVip = 0;// 是否能享受会员折扣 + Integer isVip = 0;// 是否能享受会员折扣 0否 1是普通会员 2内部会员 + // 会员折扣 + Double discount = 0.0; + // 普通会员最高折扣金额 + Double discountMoney = 0.0; if (tAppUser.getVipEndTime() == null){ // 不是会员 + isVip = 0; }else { // 判断会员有没有过期 if (tAppUser.getVipEndTime().isAfter(java.time.LocalDateTime.now())){ @@ -161,20 +172,79 @@ TVip data1 = vipClient.getInfo1(vipId).getData(); Integer discountTimes = data1.getDiscountTimes(); if (data>=discountTimes){ - // 不能再享受会员折扣 + // 折扣次数用光了 不能再享受会员折扣 + isVip = 0; }else{ - isVip = 1; + if (data1.getType() == 2){ + // 如果内部会员 使用该折扣 + discount = data1.getDiscount().doubleValue(); + isVip = 2; + }else{ + // 普通会员 最高折扣金额 + discountMoney = data1.getMaximumDeduction().doubleValue(); + isVip = 1; + } + } + }else{ + // 会员过期 不能享受 + isVip = 0; } } for (CouponListVOVO couponListVOVO : list) { couponListVOVO.setValidityTime("有效期:"+format.format(couponListVOVO.getCreateTime())+" - "+format.format(couponListVOVO.getEndTime())); } List<CouponListVOVO> data = otherClient.getCouponInfoByCouponIds(list).getData(); + // 桩编号 + 是否是会员 + 内部会员折扣 + 普通会员最高折扣金额 + 预付金额 + String temp = dto.getNumber()+"-"+isVip+"-"+discount+"-"+discountMoney+"-"+dto.getPayMoney(); + // 根据当前时间段和预付金额计算服务费 + BigDecimal serviceMoney = chargingPileClient.getServiceMoney(temp).getData(); for (CouponListVOVO datum : data) { - // 根据当前时间段和预付金额计算服务费 - + // 判断优惠券类型 + switch (datum.getPreferentialMode()){ + case 1: + datum.setIsUse(1); + // 满减券 判断服务费是否满足满减条件 + if (datum.getMeetTheConditions().compareTo(new BigDecimal(BigInteger.ZERO)) == 0){ + // 无门槛优惠券 + datum.setMoney(serviceMoney.subtract(datum.getDiscountAmount())); + }else if (serviceMoney.compareTo(datum.getMeetTheConditions())>=0){ + // 满足条件 + datum.setMoney(serviceMoney.subtract(datum.getDiscountAmount())); + }else{ + // 不满足条件 + datum.setMoney(serviceMoney); + datum.setIsUse(0); + } + break; + case 2: + datum.setIsUse(1); + // 折扣券 判断 + if (datum.getMeetTheConditions().compareTo(new BigDecimal(BigInteger.ZERO)) == 0){ + // 无门槛优惠券 + datum.setMoney(serviceMoney.subtract(datum.getDiscountAmount())); + }else if (serviceMoney.compareTo(datum.getMeetTheConditions())>=0){ + // 折扣后的服务费 + BigDecimal divide = serviceMoney.multiply(datum.getDiscount()).divide(new BigDecimal(10), 2, BigDecimal.ROUND_HALF_UP); + // 计算折扣了多少钱 判断是否超过最高折扣金额 + BigDecimal subtract = serviceMoney.subtract(divide); + if (subtract.compareTo(datum.getMaximumDiscountAmount())>0){ + // 超过最高折扣金额 减去最高折扣金额 + datum.setMoney(serviceMoney.subtract(datum.getMaximumDiscountAmount())); + }else{ + // 没超过最高折扣金额 + datum.setMoney(divide); + } + }else{ + // 不满足条件 + datum.setMoney(serviceMoney); + datum.setIsUse(0); + } + break; + } } + // 通过集合的money、isUse字段 将money、isUse从大到小排序 将不可用的排在最后 + data.sort(Comparator.comparing(CouponListVOVO::getMoney).reversed().thenComparing(CouponListVOVO::getIsUse)); pageInfo.setRecords(data); return pageInfo; } -- Gitblit v1.7.1