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 a13af6b..6e97d61 100644 --- a/src/main/resources/mapper/ConsumeMapper.xml +++ b/src/main/resources/mapper/ConsumeMapper.xml @@ -80,28 +80,20 @@ m.name as market, ugr.goods_name AS goodsName, ugr.pay_platform AS payPlatform, - ugr.sum_gold/100 AS sumGold, - ugr.permanent_gold/100 AS permanentGold, + COALESCE(ugr.sum_gold, 0)/100 AS sumGold, + COALESCE(ugr.permanent_gold, 0)/100 AS permanentGold, (COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december, 0))/100 AS freeGold, - ugr.task_gold/100 AS taskGold, + COALESCE(ugr.task_gold, 0)/100 AS taskGold, ugr.remark AS remark, a.admin_name AS adminName, ugr.create_time AS createTime, - ugr.is_refund AS isRefund, - -- 关联退款订单信息 - ugr1.sum_gold/100 AS refundSumGold, - ugr1.permanent_gold/100 AS refundPermanentGold, - (COALESCE(ugr1.free_june, 0) + COALESCE(ugr1.free_december, 0))/100 AS refundFreeGold, - ugr1.task_gold/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