guoshuai 1 week ago
parent
commit
f94788178a

+ 6 - 0
src/main/java/com/qmrb/system/pojo/form/BarnRecordForm.java

@@ -104,4 +104,10 @@ public class BarnRecordForm {
      */
     @Schema(description = "抵用",type="BigDecimal")
     private BigDecimal discountAmount;
+    
+    /**
+     * 抵用时长
+     */
+    @Schema(description = "抵用时长",type="BigDecimal")
+    private BigDecimal discountMinute;
 }

+ 17 - 0
src/main/java/com/qmrb/system/service/impl/BarnRecordServiceImpl.java

@@ -12,9 +12,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmrb.system.converter.BarnRecordConverter;
 import com.qmrb.system.mapper.BarnRecordMapper;
+import com.qmrb.system.mapper.CouponMapper;
 import com.qmrb.system.mq.PickCarProducer;
 import com.qmrb.system.pojo.entity.BarnRecord;
 import com.qmrb.system.pojo.entity.CarPark;
+import com.qmrb.system.pojo.entity.Coupon;
 import com.qmrb.system.pojo.entity.MyCarPlateNumber;
 import com.qmrb.system.pojo.form.BarnRecordForm;
 import com.qmrb.system.pojo.query.BarnRecordQuery;
@@ -73,6 +75,9 @@ public class BarnRecordServiceImpl extends ServiceImpl<BarnRecordMapper, BarnRec
     @Value("${pickCarProducer.tags}")
     private String tags;
 
+    @Autowired
+    private CouponMapper couponMapper;
+
 
     /**
      * 分页查询
@@ -247,6 +252,18 @@ public class BarnRecordServiceImpl extends ServiceImpl<BarnRecordMapper, BarnRec
         }else{
             form.setBillingAmount(form.getReceivedAmount());//计费金额
         }
+
+        // 查询优惠券
+        List<Coupon> coupons = couponMapper.selectList(new LambdaQueryWrapper<Coupon>().eq(Coupon::getGoodsId, form.getId()));
+        if(CollectionUtil.isNotEmpty(coupons)){
+            Coupon coupon = coupons.get(0);
+            // 1 扫码抵用金额 2扫码抵用时长
+            if("1".equals(coupon.getCouponType())){
+                form.setDiscountAmount(coupon.getDenomination());
+            }else if("2".equals(coupon.getCouponType())){
+                form.setDiscountMinute(coupon.getDenomination());
+            }
+        }
         return form;
     }
 

+ 21 - 7
src/main/java/com/qmrb/system/service/impl/CarParkChargingRulesServiceImpl.java

@@ -142,13 +142,6 @@ public class CarParkChargingRulesServiceImpl extends ServiceImpl<CarParkCharging
 		List<Order> orderList = orderMapper.selectList(new LambdaQueryWrapper<Order>().eq(Order::getGoodId, recordId).eq(Order::getPayStatus,1)); //查询已支付订单
 
 		
-		// 根据停车记录获取拥有的优惠券
-		if(deductionSwitch){
-			List<Coupon> coupons = couponMapper.selectList(new LambdaQueryWrapper<Coupon>().eq(Coupon::getGoodsId, recordId));
-			if(CollectionUtil.isNotEmpty(coupons)){
-				
-			}
-		}
 		// 示例计费规则
 		ParkingFeeCalculator.FeeRule feeRule = new ParkingFeeCalculator.FeeRule();
 		feeRule.freeDurationMinutes = carParkChargingRules.getFreeTime();//免费时长
@@ -180,7 +173,28 @@ public class CarParkChargingRulesServiceImpl extends ServiceImpl<CarParkCharging
 		}
 		
 		parkingRecord.paidAmount = barnRecord.getReceivedAmount()!= null ? barnRecord.getReceivedAmount().doubleValue() : 0;;//已支付金额
+
 		
+		// 根据停车记录获取拥有的优惠券
+		if(deductionSwitch){
+			List<Coupon> coupons = couponMapper.selectList(new LambdaQueryWrapper<Coupon>().eq(Coupon::getGoodsId, recordId));
+			if(CollectionUtil.isNotEmpty(coupons)){
+				Coupon coupon = coupons.get(0);
+				ParkingFeeCalculator.CouponRecord couponRecord = new ParkingFeeCalculator.CouponRecord();
+				couponRecord.denomination = coupon.getDenomination() != null ? coupon.getDenomination().doubleValue() : 0;
+				couponRecord.couponType = coupon.getCouponType() != null ? coupon.getCouponType().toString() : "";
+				// 使用默认时区(通常是系统时区)
+				ZoneId zoneId = ZoneId.systemDefault();
+
+				// 将时间戳转换为 LocalDateTime
+				LocalDateTime expireTime = Instant.ofEpochMilli(coupon.getExpireTime())
+						.atZone(zoneId)
+						.toLocalDateTime();
+				couponRecord.expireTime = expireTime;
+
+				parkingRecord.couponRecord = couponRecord;
+			}
+		}
 		if(CollectionUtil.isNotEmpty(orderList)){
 			ArrayList<ParkingFeeCalculator.PaymentRecord> paymentRecords = new ArrayList<>();
 			for (Order order : orderList) {