Commit d36cfa7f by 程裕兵

feat:left transamount

parent 3cb4aef6
......@@ -107,6 +107,12 @@ public class StudioCashierRecordVO {
@ApiModelProperty("三方交易单号")
private String thirdTransNo;
@ApiModelProperty("剩余可退金额(元)")
private BigDecimal leftTransAmount;
@ApiModelProperty("剩余可退实收金额(元)")
private BigDecimal leftActualAmount;
@ApiModelProperty("错误信息")
private String failMessage;
......
......@@ -185,10 +185,22 @@ public class StudioCashierRecordRpService extends
return this.baseMapper.statisticRefund(query);
}
public List<StudioCashierRecord> listByRelatedTransNo(Long relatedTransNo) {
public List<StudioCashierRecord> listByRelatedTransNo(String relatedTransNo) {
QueryWrapper<StudioCashierRecord> wrapper = new QueryWrapper<>();
wrapper.eq(StudioCashierRecord.RELATED_TRANS_NO, relatedTransNo);
wrapper.orderByDesc(StudioCashierRecord.ID);
return Optional.ofNullable(this.baseMapper.selectList(wrapper)).orElse(new ArrayList<>(1));
}
public List<StudioCashierRecord> listByRelatedTransNos(List<String> relatedTransNos) {
QueryWrapper<StudioCashierRecord> wrapper = new QueryWrapper<>();
wrapper.in(StudioCashierRecord.RELATED_TRANS_NO, relatedTransNos);
wrapper.orderByDesc(StudioCashierRecord.ID);
return Optional.ofNullable(this.baseMapper.selectList(wrapper)).orElse(new ArrayList<>(1));
}
public Map<String, List<StudioCashierRecord>> mapByRelatedTransNos(List<String> payNos) {
return this.listByRelatedTransNos(payNos).stream()
.collect(Collectors.groupingBy(StudioCashierRecord::getRelatedTransNo));
}
}
package com.jiejing.fitness.finance.service.cashier.convert;
import static java.math.BigDecimal.ZERO;
import com.alibaba.fastjson.JSON;
import com.google.common.collect.Lists;
import com.jiejing.common.model.PageVO;
......@@ -11,8 +13,13 @@ import com.jiejing.fitness.finance.api.cashier.vo.StudioCashierRecordVO;
import com.jiejing.fitness.finance.api.cashier.vo.StudioSettleVO;
import com.jiejing.fitness.finance.repository.entity.StudioCashierRecord;
import com.jiejing.fitness.finance.repository.entity.StudioSettleRecord;
import com.jiejing.fitness.finance.service.utils.MoneyUtil;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.function.BinaryOperator;
import java.util.stream.Collectors;
import org.springframework.beans.BeanUtils;
import org.springframework.data.domain.Page;
......@@ -37,6 +44,26 @@ public class CashierConvert {
return list.stream().map(CashierConvert::convertVO).collect(Collectors.toList());
}
public static List<StudioCashierRecordVO> convertList(List<StudioCashierRecord> list,
Map<String, List<StudioCashierRecord>> payNoRefundMap) {
if (CollectionUtil.isEmpty(list)) {
return Lists.newArrayList();
}
return list.stream()
.map(e -> convertVO(e, payNoRefundMap.getOrDefault(e.getTransNo(), new ArrayList<>(1))))
.collect(Collectors.toList());
}
public static StudioCashierRecordVO convertVO(StudioCashierRecord record,
List<StudioCashierRecord> refunds) {
StudioCashierRecordVO result = convertVO(record);
result.setLeftTransAmount(MoneyUtil.subtract(record.getTransAmount(),
refunds.stream().map(StudioCashierRecord::getTransAmount).reduce(BigDecimal::add).orElse(ZERO)));
result.setLeftActualAmount(MoneyUtil.subtract(record.getActualAmount(),
refunds.stream().map(StudioCashierRecord::getActualAmount).reduce(BigDecimal::add).orElse(ZERO)));
return result;
}
public static PageVO<StudioCashierRecordVO> convertPageVO(Page<StudioCashierRecord> page) {
return PageVO.convert(page, convertList(page.getContent()));
}
......
......@@ -2,11 +2,13 @@ package com.jiejing.fitness.finance.service.cashier.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
import com.jiejing.common.exception.BizException;
import com.jiejing.common.model.PageVO;
import com.jiejing.common.utils.collection.CollectionUtil;
import com.jiejing.common.utils.convert.BeanUtil;
import com.jiejing.common.utils.text.StringUtil;
import com.jiejing.fitness.enums.finance.BrandCashierTransTypeEnum;
import com.jiejing.fitness.finance.api.cashier.vo.StudioCashierRecordVO;
import com.jiejing.fitness.finance.api.cashier.vo.StudioCashierStatisticVO;
import com.jiejing.fitness.finance.api.cashier.vo.StudioSettleVO;
......@@ -92,13 +94,24 @@ public class StudioCashierServiceImpl implements StudioCashierService {
if (null == record) {
return null;
}
if (BrandCashierTransTypeEnum.PAY.getCode().equals(record.getTransType())) {
List<StudioCashierRecord> refunds = studioCashierRecordRpService.listByRelatedTransNo(
record.getTransNo());
return CashierConvert.convertVO(record, refunds);
}
return CashierConvert.convertVO(record);
}
@Override
public List<StudioCashierRecordVO> listByOrderNo(String orderNo) {
List<StudioCashierRecord> list = studioCashierRecordRpService.listByOrderNo(orderNo);
return CashierConvert.convertList(list);
List<String> payNos = list.stream()
.filter(e -> BrandCashierTransTypeEnum.PAY.getCode().equals(e.getTransType()))
.map(StudioCashierRecord::getTransNo)
.collect(Collectors.toList());
Map<String, List<StudioCashierRecord>> payNoRefundMap = studioCashierRecordRpService.mapByRelatedTransNos(
payNos);
return CashierConvert.convertList(list, payNoRefundMap);
}
@Override
......@@ -148,7 +161,8 @@ public class StudioCashierServiceImpl implements StudioCashierService {
@Override
public List<StudioCashierRecordVO> listByRelatedTransNo(Long relatedTransNo) {
List<StudioCashierRecord> records = studioCashierRecordRpService.listByRelatedTransNo(relatedTransNo);
List<StudioCashierRecord> records = studioCashierRecordRpService.listByRelatedTransNo(
relatedTransNo.toString());
return records.stream().map(CashierConvert::convertVO).collect(Collectors.toList());
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment