查询站点订单日报详情

This commit is contained in:
2023-08-22 09:42:30 +08:00
parent 0bbde0245d
commit 36fe313a82
22 changed files with 321 additions and 21 deletions

View File

@@ -32,7 +32,7 @@ public class QueryPaymentConfirmDetailResponse extends AdapayBaseResponse{
@Getter
@Setter
static class PaymentConfirmInfo{
public static class PaymentConfirmInfo{
/**
* 返参必填由AdaPay生成的支付对象 ID
*/

View File

@@ -6,13 +6,23 @@ import lombok.Setter;
@Getter
@Setter
public class SettleOrderReportDTO {
private String merchantId;
/**
* 站点id
*/
private String stationId;
/**
* 交易日期
*/
private String tradeDate;
/**
* 当前页码
*/
private Integer pageNum;
/**
* 页面容量
*/
private Integer pageSize;
}

View File

@@ -1,8 +1,11 @@
package com.jsowell.pile.mapper;
import com.jsowell.pile.domain.AdapayCallbackRecord;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface AdapayCallbackRecordMapper {
int deleteByPrimaryKey(Integer id);
@@ -20,4 +23,6 @@ public interface AdapayCallbackRecordMapper {
int updateByPrimaryKey(AdapayCallbackRecord record);
AdapayCallbackRecord selectByPaymentId(String paymentId);
List<AdapayCallbackRecord> queryRecordList(@Param("orderCodeList") List<String> orderCodeList);
}

View File

@@ -55,4 +55,6 @@ public interface ClearingBillDetailMapper {
int updateBatch(List<ClearingBillDetail> list);
int batchInsert(@Param("list") List<ClearingBillDetail> list);
ClearingBillDetail selectClearingBillCode(String orderCode);
}

View File

@@ -1,6 +1,7 @@
package com.jsowell.pile.mapper;
import com.jsowell.pile.domain.ClearingWithdrawInfo;
import com.jsowell.pile.vo.web.ClearingBillVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -63,4 +64,6 @@ public interface ClearingWithdrawInfoMapper {
int batchInsert(@Param("list") List<ClearingWithdrawInfo> list);
ClearingWithdrawInfo selectByWithdrawCode(String withdrawCode);
ClearingBillVO selectWithdrawInfoByOrderCode(@Param("orderCode") String orderCode);
}

View File

@@ -4,9 +4,11 @@ import com.jsowell.pile.domain.SettleOrderReport;
import com.jsowell.pile.dto.MerchantOrderReportDTO;
import com.jsowell.pile.vo.web.SettleOrderReportVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface SettleOrderReportMapper {
/**
* delete by primary key

View File

@@ -1,6 +1,7 @@
package com.jsowell.pile.service;
import com.jsowell.pile.domain.ClearingWithdrawInfo;
import com.jsowell.pile.vo.web.ClearingBillVO;
import java.util.List;
public interface ClearingWithdrawInfoService{
@@ -27,4 +28,6 @@ public interface ClearingWithdrawInfoService{
int batchInsert(List<ClearingWithdrawInfo> list);
ClearingWithdrawInfo selectByWithdrawCode(String withdrawCode);
ClearingBillVO selectWithdrawInfoByOrderCode(String orderCode);
}

View File

@@ -1,6 +1,7 @@
package com.jsowell.pile.service;
import com.jsowell.pile.domain.OrderPayRecord;
import com.jsowell.pile.vo.web.OrderDetailInfoVO;
import java.util.List;
@@ -16,4 +17,6 @@ public interface IOrderPayRecordService {
int batchInsert(List<OrderPayRecord> payRecordList);
List<OrderPayRecord> getOrderPayRecordList(String orderCode);
List<OrderDetailInfoVO.PayRecord> selectOrderPayInfoList(String orderCode);
}

View File

@@ -2,7 +2,9 @@ package com.jsowell.pile.service;
import com.jsowell.pile.domain.SettleOrderReport;
import com.jsowell.pile.dto.MerchantOrderReportDTO;
import com.jsowell.pile.dto.SettleOrderReportDTO;
import com.jsowell.pile.vo.web.MerchantOrderReportVO;
import com.jsowell.pile.vo.web.OrderSettleDetailVO;
import java.util.List;
@@ -23,6 +25,8 @@ public interface ISettleOrderReportService {
SettleOrderReport selectByStationIdAndDate(String stationId, String date);
List<OrderSettleDetailVO> selectSettleOrderReportDetail(SettleOrderReportDTO dto);
List<SettleOrderReport> selectByMerchantIdAndDate(String merchantId, String date);
/**

View File

@@ -1,11 +1,12 @@
package com.jsowell.pile.service.impl;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import com.jsowell.pile.domain.ClearingBillDetail;
import java.util.List;
import com.jsowell.pile.mapper.ClearingBillDetailMapper;
import com.jsowell.pile.service.ClearingBillDetailService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class ClearingBillDetailServiceImpl implements ClearingBillDetailService{

View File

@@ -3,6 +3,7 @@ package com.jsowell.pile.service.impl;
import com.jsowell.pile.domain.ClearingWithdrawInfo;
import com.jsowell.pile.mapper.ClearingWithdrawInfoMapper;
import com.jsowell.pile.service.ClearingWithdrawInfoService;
import com.jsowell.pile.vo.web.ClearingBillVO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -68,4 +69,12 @@ public class ClearingWithdrawInfoServiceImpl implements ClearingWithdrawInfoServ
return clearingWithdrawInfoMapper.selectByWithdrawCode(withdrawCode);
}
/**
* 根据订单号查询
*/
@Override
public ClearingBillVO selectWithdrawInfoByOrderCode(String orderCode) {
return clearingWithdrawInfoMapper.selectWithdrawInfoByOrderCode(orderCode);
}
}

View File

@@ -1,11 +1,24 @@
package com.jsowell.pile.service.impl;
import com.jsowell.pile.domain.OrderPayRecord;
import com.google.common.collect.Lists;
import com.jsowell.common.constant.CacheConstants;
import com.jsowell.common.core.redis.RedisCache;
import com.jsowell.common.enums.ykc.ActionTypeEnum;
import com.jsowell.common.enums.ykc.OrderPayModeEnum;
import com.jsowell.common.enums.ykc.OrderPayRecordEnum;
import com.jsowell.common.enums.ykc.PaymentInstitutionsEnum;
import com.jsowell.common.util.DateUtils;
import com.jsowell.common.util.StringUtils;
import com.jsowell.pile.domain.*;
import com.jsowell.pile.mapper.OrderPayRecordMapper;
import com.jsowell.pile.service.IOrderPayRecordService;
import com.jsowell.pile.service.*;
import com.jsowell.pile.vo.web.OrderDetailInfoVO;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.List;
@Service
@@ -14,6 +27,21 @@ public class OrderPayRecordServiceImpl implements IOrderPayRecordService {
@Resource
private OrderPayRecordMapper orderPayRecordMapper;
@Autowired
private WxpayCallbackRecordService wxpayCallbackRecordService;
@Autowired
private AdapayCallbackRecordService adapayCallbackRecordService;
@Autowired
private IMemberTransactionRecordService memberTransactionRecordService;
@Autowired
private IOrderBasicInfoService orderBasicInfoService;
@Autowired
private RedisCache redisCache;
@Override
public int updateByPrimaryKeySelective(OrderPayRecord record) {
@@ -31,4 +59,91 @@ public class OrderPayRecordServiceImpl implements IOrderPayRecordService {
return orderPayRecordMapper.getOrderPayRecordList(orderCode);
}
/**
* 查询订单支付信息
* 加缓存
* @param orderCode
* @return
*/
@Override
public List<OrderDetailInfoVO.PayRecord> selectOrderPayInfoList(String orderCode) {
// 缓存
String redisKey = "select_order_pay_info_list:" + orderCode;
List<OrderDetailInfoVO.PayRecord> resultList = redisCache.getCacheList(redisKey);
if (CollectionUtils.isNotEmpty(resultList)) {
return resultList;
}
// 订单信息
OrderBasicInfo orderBasicInfo = orderBasicInfoService.getOrderInfoByOrderCode(orderCode);
if (orderBasicInfo == null) {
return Lists.newArrayList();
}
// 支付流水
List<OrderPayRecord> orderPayRecordList = getOrderPayRecordList(orderCode);
if (CollectionUtils.isEmpty(orderPayRecordList)) {
return Lists.newArrayList();
}
List<OrderDetailInfoVO.PayRecord> payRecordList = Lists.newArrayList();
for (OrderPayRecord orderPayRecord : orderPayRecordList) {
OrderDetailInfoVO.PayRecord payInfo = new OrderDetailInfoVO.PayRecord();
// 余额支付如果是由本金和赠送一起支付的,合并为一个
BigDecimal bigDecimal = orderPayRecordList.stream()
.map(OrderPayRecord::getPayAmount)
.reduce(BigDecimal.ZERO, BigDecimal::add);
payInfo.setPayAmount(bigDecimal.toString());
payInfo.setPayStatus(orderBasicInfo.getPayStatus());
payInfo.setPayTime(DateUtils.formatDateTime(orderBasicInfo.getPayTime()));
if (orderPayRecord.getRefundAmount() != null) {
payInfo.setRefundAmount(orderPayRecord.getRefundAmount().toString());
}
String payMode = orderPayRecord.getPayMode();
if (StringUtils.equals(payMode, OrderPayRecordEnum.PRINCIPAL_BALANCE_PAYMENT.getValue())
|| StringUtils.equals(payMode, OrderPayRecordEnum.GIFT_BALANCE_PAYMENT.getValue())) {
// 使用余额支付
payInfo.setPayMode(OrderPayModeEnum.PAYMENT_OF_BALANCE.getValue());
payInfo.setPayModeDesc(OrderPayModeEnum.PAYMENT_OF_BALANCE.getLabel());
} else if (StringUtils.equals(payMode, OrderPayRecordEnum.WECHATPAY_PAYMENT.getValue())){
// 使用微信支付
payInfo.setPayMode(OrderPayModeEnum.PAYMENT_OF_WECHATPAY.getValue());
payInfo.setPayModeDesc(OrderPayModeEnum.PAYMENT_OF_WECHATPAY.getLabel());
// 判断是微信支付还是汇付支付
MemberTransactionRecord record = memberTransactionRecordService.selectByOrderCode(orderCode, ActionTypeEnum.FORWARD.getValue());
if (record != null) {
String paymentInstitutions = record.getPaymentInstitutions();
if (StringUtils.equals(paymentInstitutions, PaymentInstitutionsEnum.WECHAT_PAY.getValue())) {
// 查微信支付回调记录
WxpayCallbackRecord wxpayCallbackRecord = wxpayCallbackRecordService.selectByOrderCode(orderCode);
if (wxpayCallbackRecord != null) {
payInfo.setOutTradeNo(wxpayCallbackRecord.getOutTradeNo());
payInfo.setTransactionId(wxpayCallbackRecord.getTransactionId());
}
} else if (StringUtils.equals(paymentInstitutions, PaymentInstitutionsEnum.ADAPAY.getValue())) {
// 查询汇付支付回调
AdapayCallbackRecord adapayCallbackRecord = adapayCallbackRecordService.selectByOrderCode(orderCode);
if (adapayCallbackRecord != null) {
payInfo.setOutTradeNo(adapayCallbackRecord.getPaymentId());
payInfo.setTransactionId(adapayCallbackRecord.getOutTransId());
}
}
}
// 查微信支付回调记录
WxpayCallbackRecord wxpayCallbackRecord = wxpayCallbackRecordService.selectByOrderCode(orderCode);
if (wxpayCallbackRecord != null) {
payInfo.setOutTradeNo(wxpayCallbackRecord.getOutTradeNo());
payInfo.setTransactionId(wxpayCallbackRecord.getTransactionId());
}
} else if (StringUtils.equals(payMode, OrderPayRecordEnum.WHITELIST_PAYMENT.getValue())){
// 使用白名单支付
payInfo.setPayMode(OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue());
payInfo.setPayModeDesc(OrderPayModeEnum.PAYMENT_OF_WHITELIST.getLabel());
}
payRecordList.add(payInfo);
}
redisCache.setCacheList(redisKey, payRecordList);
redisCache.expire(redisKey, CacheConstants.cache_expire_time_10d);
return payRecordList;
}
}

View File

@@ -1,15 +1,26 @@
package com.jsowell.pile.service.impl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.google.common.collect.Lists;
import com.jsowell.adapay.dto.QueryPaymentConfirmDTO;
import com.jsowell.adapay.response.QueryPaymentConfirmDetailResponse;
import com.jsowell.adapay.service.AdapayService;
import com.jsowell.common.constant.Constants;
import com.jsowell.common.core.page.PageResponse;
import com.jsowell.common.util.DateUtils;
import com.jsowell.common.util.PageUtils;
import com.jsowell.common.util.StringUtils;
import com.jsowell.pile.domain.AdapayCallbackRecord;
import com.jsowell.pile.domain.SettleOrderReport;
import com.jsowell.pile.dto.MerchantOrderReportDTO;
import com.jsowell.pile.dto.SettleOrderReportDTO;
import com.jsowell.pile.mapper.AdapayCallbackRecordMapper;
import com.jsowell.pile.mapper.SettleOrderReportMapper;
import com.jsowell.pile.service.ClearingWithdrawInfoService;
import com.jsowell.pile.service.IPileMerchantInfoService;
import com.jsowell.pile.service.ISettleOrderReportService;
import com.jsowell.pile.vo.web.ClearingBillVO;
import com.jsowell.pile.vo.web.MerchantOrderReportVO;
import com.jsowell.pile.vo.web.OrderSettleDetailVO;
import com.jsowell.pile.vo.web.SettleOrderReportVO;
@@ -32,6 +43,18 @@ public class SettleOrderReportServiceImpl implements ISettleOrderReportService {
@Autowired
private SettleOrderReportMapper settleOrderReportMapper;
@Autowired
private AdapayCallbackRecordMapper adapayCallbackRecordMapper;
@Autowired
private AdapayService adapayService;
@Autowired
private IPileMerchantInfoService pileMerchantInfoService;
@Autowired
private ClearingWithdrawInfoService clearingWithdrawInfoService;
/**
* 查询结算订单报
*
@@ -48,11 +71,60 @@ public class SettleOrderReportServiceImpl implements ISettleOrderReportService {
return settleOrderReportMapper.selectByStationIdAndDate(stationId, date);
}
/**
* 查询站点订单日报明细
* 分页查询
*
* @param dto
* @return
*/
@Override
public List<OrderSettleDetailVO> selectSettleOrderReportDetail(SettleOrderReportDTO dto) {
Integer pageNum = dto.getPageNum() == null ? 1 : dto.getPageNum();
Integer pageSize = dto.getPageSize() == null ? 20 : dto.getPageSize();
PageUtils.startPage(pageNum, pageSize);
return null;
SettleOrderReport orderReport = selectByStationIdAndDate(dto.getStationId(), dto.getTradeDate());
if (orderReport == null) {
return Lists.newArrayList();
}
String orderCodes = orderReport.getOrderCodes();
if (StringUtils.isBlank(orderCodes)) {
return Lists.newArrayList();
}
String wechatAppId = pileMerchantInfoService.queryAppIdByMerchantId(orderReport.getMerchantId());
List<String> orderCodeList = Lists.newArrayList(StringUtils.split(orderCodes, ","));
// 查询订单支付信息 分页
int pageNum = dto.getPageNum() != null ? dto.getPageNum() : 1;
int pageSize = dto.getPageSize() != null ? dto.getPageSize() : 10;
PageHelper.startPage(pageNum, pageSize);
List<AdapayCallbackRecord> adapayCallbackRecords = adapayCallbackRecordMapper.queryRecordList(orderCodeList);
PageInfo<AdapayCallbackRecord> pageInfo = new PageInfo<>(adapayCallbackRecords);
// 封装结果集
List<OrderSettleDetailVO> resultList = Lists.newArrayList();
OrderSettleDetailVO vo = null;
for (AdapayCallbackRecord adapayCallbackRecord : pageInfo.getList()) {
vo = new OrderSettleDetailVO();
String orderCode = adapayCallbackRecord.getOrderCode();
vo.setOrderCode(orderCode);
String paymentId = adapayCallbackRecord.getPaymentId();
QueryPaymentConfirmDTO build = QueryPaymentConfirmDTO.builder()
.wechatAppId(wechatAppId)
.paymentId(paymentId)
.build();
QueryPaymentConfirmDetailResponse response = adapayService.queryPaymentConfirmList(build);
List<QueryPaymentConfirmDetailResponse.PaymentConfirmInfo> paymentConfirms = response.getPaymentConfirms();
// 如果没有分账信息,说明没有清分
vo.setClearingStatus(CollectionUtils.isEmpty(paymentConfirms) ? Constants.ZERO : Constants.ONE);
if (Constants.ONE.equals(vo.getClearingStatus())) {
ClearingBillVO clearingBillVO = clearingWithdrawInfoService.selectWithdrawInfoByOrderCode(orderCode);
vo.setClearingBillCode(clearingBillVO.getClearingBillCode());
vo.setWithdrawCode(clearingBillVO.getWithdrawCode());
vo.setWithdrawStatus(clearingBillVO.getWithdrawStatus());
}
resultList.add(vo);
}
PageInfo<OrderSettleDetailVO> result = new PageInfo<>(resultList);
return result.getList();
}
@Override

View File

@@ -0,0 +1,21 @@
package com.jsowell.pile.vo.web;
import lombok.Data;
@Data
public class ClearingBillVO {
/**
* 清分单号
*/
private String clearingBillCode;
/**
* 提现单号
*/
private String withdrawCode;
/**
* 提现状态
*/
private String withdrawStatus;
}

View File

@@ -23,6 +23,7 @@ public class OrderSettleDetailVO {
/**
* 清分状态
* 0-未清分1-已清分
*/
private String clearingStatus;
@@ -33,6 +34,7 @@ public class OrderSettleDetailVO {
/**
* 提现状态
* 0-未提现1-体现中2-提现到账
*/
private String withdrawStatus;