Authored by LUOXC

refactor

1 package com.yohoufo.order.model; 1 package com.yohoufo.order.model;
2 2
3 import lombok.Data; 3 import lombok.Data;
  4 +import lombok.experimental.Accessors;
4 import lombok.experimental.Builder; 5 import lombok.experimental.Builder;
5 6
6 import java.util.List; 7 import java.util.List;
@@ -20,9 +21,12 @@ public class InviteSettlementItemListVO { @@ -20,9 +21,12 @@ public class InviteSettlementItemListVO {
20 int totalElements; 21 int totalElements;
21 String totalOrderAmount; 22 String totalOrderAmount;
22 String totalSettleAmount; 23 String totalSettleAmount;
  24 + String paidAmount;
  25 + String waitPayAmount;
23 List<InviteSettlementItemVO> list; 26 List<InviteSettlementItemVO> list;
24 27
25 @Data 28 @Data
  29 + @Accessors(chain = true)
26 public static class InviteSettlementItemVO { 30 public static class InviteSettlementItemVO {
27 String buyerOrderCode; 31 String buyerOrderCode;
28 String sellerName; 32 String sellerName;
@@ -2,7 +2,6 @@ package com.yohoufo.order.service.impl; @@ -2,7 +2,6 @@ package com.yohoufo.order.service.impl;
2 2
3 import com.google.common.annotations.VisibleForTesting; 3 import com.google.common.annotations.VisibleForTesting;
4 import com.google.common.collect.Lists; 4 import com.google.common.collect.Lists;
5 -import com.yohoufo.common.utils.DateUtil;  
6 import com.yohoufo.dal.order.InviteSettlementItemMapper; 5 import com.yohoufo.dal.order.InviteSettlementItemMapper;
7 import com.yohoufo.dal.order.InviteSettlementMapper; 6 import com.yohoufo.dal.order.InviteSettlementMapper;
8 import com.yohoufo.dal.order.InviterMapper; 7 import com.yohoufo.dal.order.InviterMapper;
@@ -30,8 +29,12 @@ import java.util.Collections; @@ -30,8 +29,12 @@ import java.util.Collections;
30 import java.util.List; 29 import java.util.List;
31 import java.util.Map; 30 import java.util.Map;
32 import java.util.Objects; 31 import java.util.Objects;
  32 +import java.util.function.Predicate;
33 import java.util.stream.Collectors; 33 import java.util.stream.Collectors;
34 34
  35 +import static com.yohoufo.common.utils.DateUtil.formatYYMMddHHmmssPoint;
  36 +import static com.yohoufo.dal.order.model.InviteSettlement.STATUS_WAIT_SETTLE;
  37 +import static com.yohoufo.order.utils.InviteSettlementUtils.formatAmount;
35 import static com.yohoufo.order.utils.ServiceExceptions.throwServiceException; 38 import static com.yohoufo.order.utils.ServiceExceptions.throwServiceException;
36 39
37 /** 40 /**
@@ -72,9 +75,9 @@ public class InviteSettlementServiceImpl implements IInviteSettlementService { @@ -72,9 +75,9 @@ public class InviteSettlementServiceImpl implements IInviteSettlementService {
72 .map(inviteSettlement -> { 75 .map(inviteSettlement -> {
73 InviteSettlementListVO.InviteSettlementVO item = new InviteSettlementListVO.InviteSettlementVO(); 76 InviteSettlementListVO.InviteSettlementVO item = new InviteSettlementListVO.InviteSettlementVO();
74 item.setSettleCode(String.format("%010d", inviteSettlement.getSettleCode())); 77 item.setSettleCode(String.format("%010d", inviteSettlement.getSettleCode()));
75 - item.setSettleAmount(InviteSettlementUtils.format("+%s", inviteSettlement.getSettleAmount()));  
76 - item.setSettleTime(DateUtil.formatYYMMddHHmmssPoint(inviteSettlement.getSettleTime()));  
77 - item.setPaidTime(DateUtil.formatYYMMddHHmmssPoint(inviteSettlement.getPaidTime())); 78 + item.setSettleAmount(formatAmount("+%s", inviteSettlement.getSettleAmount()));
  79 + item.setSettleTime(formatYYMMddHHmmssPoint(inviteSettlement.getSettleTime()));
  80 + item.setPaidTime(formatYYMMddHHmmssPoint(inviteSettlement.getPaidTime()));
78 return item; 81 return item;
79 }) 82 })
80 .collect(Collectors.toList()); 83 .collect(Collectors.toList());
@@ -97,10 +100,14 @@ public class InviteSettlementServiceImpl implements IInviteSettlementService { @@ -97,10 +100,14 @@ public class InviteSettlementServiceImpl implements IInviteSettlementService {
97 .pageSize(limit) 100 .pageSize(limit)
98 .pageTotal((totalElements % limit == 0) ? (totalElements / limit) : (totalElements / limit + 1)) 101 .pageTotal((totalElements % limit == 0) ? (totalElements / limit) : (totalElements / limit + 1))
99 .totalElements(totalElements) 102 .totalElements(totalElements)
100 - .totalOrderAmount(InviteSettlementUtils.format(totalOrderAmount))  
101 - .totalSettleAmount(InviteSettlementUtils.format(totalSettleAmount)); 103 + .totalOrderAmount(formatAmount(totalOrderAmount))
  104 + .totalSettleAmount(formatAmount(totalSettleAmount));
102 if (totalElements == 0) { 105 if (totalElements == 0) {
103 - return builder.list(Lists.newArrayList()).build(); 106 + return builder
  107 + .paidAmount(formatAmount(BigDecimal.ZERO))
  108 + .waitPayAmount(formatAmount(BigDecimal.ZERO))
  109 + .list(Lists.newArrayList())
  110 + .build();
104 } 111 }
105 int start = (page - 1) * limit; 112 int start = (page - 1) * limit;
106 List<InviteSettlementItem> list = inviteSettlementItemMapper.select(uid, settlementType, time.getLeft(), time.getRight(), start, limit); 113 List<InviteSettlementItem> list = inviteSettlementItemMapper.select(uid, settlementType, time.getLeft(), time.getRight(), start, limit);
@@ -110,18 +117,30 @@ public class InviteSettlementServiceImpl implements IInviteSettlementService { @@ -110,18 +117,30 @@ public class InviteSettlementServiceImpl implements IInviteSettlementService {
110 .filter(Objects::nonNull) 117 .filter(Objects::nonNull)
111 .distinct() 118 .distinct()
112 .collect(Collectors.toList())); 119 .collect(Collectors.toList()));
  120 +
  121 + Predicate<InviteSettlementItem> itemHasPaid = item -> {
  122 + int status = settlementStatusMap.getOrDefault(item.getInviteSettlementId(), STATUS_WAIT_SETTLE).intValue();
  123 + return InviteSettlement.STATUS_PAID == status;
  124 + };
  125 +
113 return builder 126 return builder
114 - .list(list.stream().map(item -> {  
115 - Integer settlementStatus = settlementStatusMap.getOrDefault(item.getInviteSettlementId(), InviteSettlement.STATUS_WAIT_SETTLE);  
116 - InviteSettlementItemListVO.InviteSettlementItemVO vo = new InviteSettlementItemListVO.InviteSettlementItemVO();  
117 - vo.setBuyerOrderCode(item.getBuyerOrderCode().toString());  
118 - vo.setSellerName(sellerUidNickNameMap.get(item.getSellerUid()));  
119 - vo.setOrderAmount(InviteSettlementUtils.format(item.getOrderAmount()));  
120 - vo.setOrderCreateTime(DateUtil.formatYYMMddHHmmssPoint(item.getOrderCreateTime()));  
121 - vo.setSettleAmount(InviteSettlementUtils.format(item.getSettleAmount()));  
122 - vo.setStatusDesc(settlementStatus.equals(InviteSettlement.STATUS_PAID) ? "已付款" : "待付款");  
123 - return vo;  
124 - }).collect(Collectors.toList())) 127 + .paidAmount(formatAmount(list.stream()
  128 + .filter(itemHasPaid)
  129 + .map(InviteSettlementItem::getSettleAmount)
  130 + .reduce(BigDecimal.ZERO, BigDecimal::add)))
  131 + .waitPayAmount(formatAmount(list.stream()
  132 + .filter(itemHasPaid.negate())
  133 + .map(InviteSettlementItem::getSettleAmount)
  134 + .reduce(BigDecimal.ZERO, BigDecimal::add)))
  135 + .list(list.stream()
  136 + .map(item -> new InviteSettlementItemListVO.InviteSettlementItemVO()
  137 + .setBuyerOrderCode(item.getBuyerOrderCode().toString())
  138 + .setSellerName(sellerUidNickNameMap.get(item.getSellerUid()))
  139 + .setOrderAmount(formatAmount(item.getOrderAmount()))
  140 + .setOrderCreateTime(formatYYMMddHHmmssPoint(item.getOrderCreateTime()))
  141 + .setSettleAmount(formatAmount(item.getSettleAmount()))
  142 + .setStatusDesc(itemHasPaid.test(item) ? "已付款" : "待付款"))
  143 + .collect(Collectors.toList()))
125 .build(); 144 .build();
126 } 145 }
127 146
@@ -16,11 +16,11 @@ import java.util.function.BiPredicate; @@ -16,11 +16,11 @@ import java.util.function.BiPredicate;
16 */ 16 */
17 public class InviteSettlementUtils { 17 public class InviteSettlementUtils {
18 18
19 - public static String format(BigDecimal src) {  
20 - return format("%s", src); 19 + public static String formatAmount(BigDecimal src) {
  20 + return formatAmount("%s", src);
21 } 21 }
22 22
23 - public static String format(String format, BigDecimal src) { 23 + public static String formatAmount(String format, BigDecimal src) {
24 if (Objects.isNull(src)) { 24 if (Objects.isNull(src)) {
25 return null; 25 return null;
26 } else { 26 } else {