diff --git a/src/main/java/com/example/demo/domain/vo/coin/ConsumeUser.java b/src/main/java/com/example/demo/domain/vo/coin/ConsumeUser.java index 4840303..b4a0b29 100644 --- a/src/main/java/com/example/demo/domain/vo/coin/ConsumeUser.java +++ b/src/main/java/com/example/demo/domain/vo/coin/ConsumeUser.java @@ -47,7 +47,7 @@ public class ConsumeUser implements Serializable { private BigDecimal refundPermanentGold;// 退款永久金币 private BigDecimal refundFreeGold;// 退款免费金币 private BigDecimal refundTaskGold;// 退款任务金币 - private String refundModel;// 退款类型 0全部退款 1部分退款 + private Integer refundModel;// 退款类型 0全部退款 1部分退款 @ExcelIgnore private Integer adminId; //提交人Id private String adminName; //提交人姓名 diff --git a/src/main/java/com/example/demo/mapper/coin/ConsumeMapper.java b/src/main/java/com/example/demo/mapper/coin/ConsumeMapper.java index 6b34369..2514452 100644 --- a/src/main/java/com/example/demo/mapper/coin/ConsumeMapper.java +++ b/src/main/java/com/example/demo/mapper/coin/ConsumeMapper.java @@ -25,6 +25,8 @@ public interface ConsumeMapper { //查找经过筛选后的订单 List selectBy(ConsumeUser consumeUser); + //查询退款的消费订单 + List selectRefund(List refundOrderCodes); //添加消费订单 diff --git a/src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java index 12fcd25..c3ac8f1 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java @@ -27,10 +27,9 @@ import java.math.RoundingMode; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.Date; -import java.util.List; -import java.util.Random; -import java.util.UUID; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; /** * @program: gold-java @@ -90,8 +89,42 @@ public class ConsumeServiceImpl implements ConsumeService { } consumeUser.setMarkets(markets); PageHelper.startPage(pageNum, pageSize); //必须要直接跟mapper - List consumeUsers = consumeMapper.selectBy(consumeUser); - return new PageInfo<>(consumeUsers); + List list = consumeMapper.selectBy(consumeUser); + // 构造退款订单号 + List refundOrderCodes = list.stream() + .map(ConsumeUser::getOrderCode) + .filter(Objects::nonNull) + .map(code -> "TK_" + code) + .collect(Collectors.toList()); + + // 查询退款订单 + List refundList = consumeMapper.selectRefund(refundOrderCodes); + + // 退款订单转 Map(order_code → refund) + Map refundMap = refundList.stream() + .collect(Collectors.toMap( + ConsumeUser::getOrderCode, + Function.identity(), + (a, b) -> a + )); + + // 组装退款信息 + for (ConsumeUser vo : list) { + ConsumeUser refund = refundMap.get("TK_" + vo.getOrderCode()); + if (refund != null) { + vo.setRefundSumGold(refund.getSumGold()); + vo.setRefundPermanentGold(refund.getPermanentGold()); + BigDecimal refundFree = + (refund.getFreeGold() == null ? BigDecimal.ZERO : refund.getFreeGold()); + vo.setRefundFreeGold(refundFree); + + vo.setRefundTaskGold(refund.getTaskGold()); + vo.setRefundModel(refund.getRefundModel()); + } + } + + + return new PageInfo<>(list); } //新增消耗 diff --git a/src/main/resources/mapper/ConsumeMapper.xml b/src/main/resources/mapper/ConsumeMapper.xml index 451cb86..6e97d61 100644 --- a/src/main/resources/mapper/ConsumeMapper.xml +++ b/src/main/resources/mapper/ConsumeMapper.xml @@ -87,21 +87,13 @@ ugr.remark AS remark, a.admin_name AS adminName, ugr.create_time AS createTime, - ugr.is_refund AS isRefund, - -- 关联退款订单信息 - COALESCE(ugr1.sum_gold, 0)/100 AS refundSumGold, - COALESCE(ugr1.permanent_gold, 0)/100 AS refundPermanentGold, - (COALESCE(ugr1.free_june, 0) + COALESCE(ugr1.free_december, 0))/100 AS refundFreeGold, - COALESCE(ugr1.task_gold, 0)/100 AS refundTaskGold, - ugr1.refund_model AS refundModel + ugr.is_refund AS isRefund FROM user_gold_record ugr left JOIN user u ON u.jwcode = ugr.jwcode left JOIN admin a ON ugr.admin_id = a.id left join market m ON u.market = m.id - -- 关联退款订单 - left JOIN user_gold_record ugr1 ON ugr1.order_code = CONCAT('TK_', ugr.order_code ) ugr.type = 1 AND ugr.flag = 1 @@ -170,7 +162,23 @@ + + + INSERT INTO user_gold_record