This commit is contained in:
admin-lmm
2023-08-22 10:37:30 +08:00
26 changed files with 455 additions and 34 deletions

View File

@@ -369,9 +369,7 @@ public class MemberService {
.list(collect) .list(collect)
.pages(pages) .pages(pages)
.total(total) .total(total)
.build(); .build();
vo.setPageResponse(pageResponse); vo.setPageResponse(pageResponse);
log.info("查询用户余额信息 service方法 end"); log.info("查询用户余额信息 service方法 end");
return vo; return vo;

View File

@@ -405,7 +405,9 @@ public class OrderService {
} }
// 支付流水 // 支付流水
List<OrderPayRecord> orderPayRecordList = orderPayRecordService.getOrderPayRecordList(orderCode); List<OrderDetailInfoVO.PayRecord> payRecords = orderPayRecordService.selectOrderPayInfoList(orderCode);
vo.setPayRecordList(payRecords);
/*List<OrderPayRecord> orderPayRecordList = orderPayRecordService.getOrderPayRecordList(orderCode);
if (CollectionUtils.isNotEmpty(orderPayRecordList)) { if (CollectionUtils.isNotEmpty(orderPayRecordList)) {
List<OrderDetailInfoVO.PayRecord> payRecordList = Lists.newArrayList(); List<OrderDetailInfoVO.PayRecord> payRecordList = Lists.newArrayList();
for (OrderPayRecord orderPayRecord : orderPayRecordList) { for (OrderPayRecord orderPayRecord : orderPayRecordList) {
@@ -466,7 +468,7 @@ public class OrderService {
payRecordList.add(payInfo); payRecordList.add(payInfo);
} }
vo.setPayRecordList(payRecordList); vo.setPayRecordList(payRecordList);
} }*/
// 查询退款明细 // 查询退款明细
List<OrderDetailInfoVO.OrderRefundInfo> orderRefundInfoList = Lists.newArrayList(); List<OrderDetailInfoVO.OrderRefundInfo> orderRefundInfoList = Lists.newArrayList();

View File

@@ -1,5 +1,6 @@
package com.jsowell.web.controller.pile; package com.jsowell.web.controller.pile;
import com.jsowell.common.annotation.Anonymous;
import com.jsowell.common.annotation.Log; import com.jsowell.common.annotation.Log;
import com.jsowell.common.core.controller.BaseController; import com.jsowell.common.core.controller.BaseController;
import com.jsowell.common.core.domain.AjaxResult; import com.jsowell.common.core.domain.AjaxResult;
@@ -8,7 +9,9 @@ import com.jsowell.common.enums.BusinessType;
import com.jsowell.common.util.poi.ExcelUtil; import com.jsowell.common.util.poi.ExcelUtil;
import com.jsowell.pile.domain.SettleOrderReport; import com.jsowell.pile.domain.SettleOrderReport;
import com.jsowell.pile.dto.MerchantOrderReportDTO; import com.jsowell.pile.dto.MerchantOrderReportDTO;
import com.jsowell.pile.dto.SettleOrderReportDTO;
import com.jsowell.pile.service.ISettleOrderReportService; import com.jsowell.pile.service.ISettleOrderReportService;
import com.jsowell.pile.vo.web.OrderSettleDetailVO;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -100,4 +103,16 @@ public class SettleOrderReportController extends BaseController {
public AjaxResult getMerchantOrderReport(@RequestBody MerchantOrderReportDTO dto) { public AjaxResult getMerchantOrderReport(@RequestBody MerchantOrderReportDTO dto) {
return AjaxResult.success(settleOrderReportService.getMerchantOrderReport(dto)); return AjaxResult.success(settleOrderReportService.getMerchantOrderReport(dto));
} }
/**
* 查询站点订单日报详情
* http://localhost:8080/order/report/getStationOrderReportDetail
*/
@Anonymous
@PostMapping("/getStationOrderReportDetail")
public TableDataInfo getStationOrderReportDetail(@RequestBody SettleOrderReportDTO dto) {
// startPage();
List<OrderSettleDetailVO> orderSettleDetailVOS = settleOrderReportService.selectSettleOrderReportDetail(dto);
return getDataTable(orderSettleDetailVOS);
}
} }

View File

@@ -13,11 +13,12 @@ import com.google.common.primitives.Bytes;
import com.huifu.adapay.core.exception.BaseAdaPayException; import com.huifu.adapay.core.exception.BaseAdaPayException;
import com.huifu.adapay.model.Refund; import com.huifu.adapay.model.Refund;
import com.jsowell.JsowellApplication; import com.jsowell.JsowellApplication;
import com.jsowell.adapay.common.DivMember;
import com.jsowell.adapay.config.AbstractAdapayConfig; import com.jsowell.adapay.config.AbstractAdapayConfig;
import com.jsowell.adapay.dto.QueryAcctFlowDTO; import com.jsowell.adapay.dto.QueryAcctFlowDTO;
import com.jsowell.adapay.dto.QueryPaymentConfirmDTO;
import com.jsowell.adapay.dto.SettleAccountDTO; import com.jsowell.adapay.dto.SettleAccountDTO;
import com.jsowell.adapay.factory.AdapayConfigFactory; import com.jsowell.adapay.factory.AdapayConfigFactory;
import com.jsowell.adapay.response.QueryPaymentConfirmDetailResponse;
import com.jsowell.adapay.service.AdapayService; import com.jsowell.adapay.service.AdapayService;
import com.jsowell.adapay.vo.DrawCashDetailVO; import com.jsowell.adapay.vo.DrawCashDetailVO;
import com.jsowell.common.constant.CacheConstants; import com.jsowell.common.constant.CacheConstants;
@@ -235,19 +236,11 @@ public class SpringBootTestController {
@Test @Test
public void queryPaymentConfirmListTest() { public void queryPaymentConfirmListTest() {
// QueryPaymentConfirmDTO dto = new QueryPaymentConfirmDTO(); QueryPaymentConfirmDTO dto = new QueryPaymentConfirmDTO();
// dto.setWechatAppId("wxbb3e0d474569481d"); dto.setWechatAppId("wxbb3e0d474569481d");
// dto.setPaymentId("002212023081523574610537553706393288704"); dto.setPaymentId("002212023080223561910532842298673803264");
// adapayService.queryPaymentConfirmList(dto); QueryPaymentConfirmDetailResponse queryPaymentConfirmDetailResponse = adapayService.queryPaymentConfirmList(dto);
System.out.println(queryPaymentConfirmDetailResponse);
Map<String, Object> map = Maps.newHashMap();
DivMember divMember = new DivMember();
divMember.setMember_id("adapayMemberAccount.getAdapayMemberId()");
divMember.setAmount("AdapayUtil.formatAmount(confirmAmt)");
divMember.setFee_flag(Constants.Y);
map.put("div_members", Lists.newArrayList(divMember));
System.out.println(map);
} }
@Test @Test

View File

@@ -9,15 +9,17 @@ public class CacheConstants {
public static final int cache_expire_time_1m = 60; public static final int cache_expire_time_1m = 60;
public static final int cache_expire_time_5m = 60 * 5; public static final int cache_expire_time_5m = cache_expire_time_1m * 5;
public static final int cache_expire_time_10m = 60 * 10; public static final int cache_expire_time_10m = cache_expire_time_1m * 10;
public static final int cache_expire_time_1h = 60 * 60; public static final int cache_expire_time_1h = cache_expire_time_1m * 60;
public static final int cache_expire_time_12h = 60 * 60 * 12; public static final int cache_expire_time_12h = cache_expire_time_1h * 12;
public static final int cache_expire_time_1d = 60 * 60 * 24; public static final int cache_expire_time_1d = cache_expire_time_1h * 24;
public static final int cache_expire_time_10d = cache_expire_time_1d * 10;
public static final String PUSH_STATION_CONNECTOR = "push_station_connector"; public static final String PUSH_STATION_CONNECTOR = "push_station_connector";

View File

@@ -1,8 +1,14 @@
package com.jsowell.adapay.dto; package com.jsowell.adapay.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
@Data @Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class QueryPaymentConfirmDTO { public class QueryPaymentConfirmDTO {
/** /**
* 控制台 主页面应用的app_id * 控制台 主页面应用的app_id

View File

@@ -1,7 +1,11 @@
package com.jsowell.adapay.response; package com.jsowell.adapay.response;
import com.alibaba.fastjson2.annotation.JSONField; import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data; import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
/** /**
* 查询支付确认对象详情反参 * 查询支付确认对象详情反参
@@ -15,7 +19,7 @@ public class QueryPaymentConfirmDetailResponse extends AdapayBaseResponse{
private String prodMode; private String prodMode;
@JSONField(name = "payment_confirms") @JSONField(name = "payment_confirms")
private String paymentConfirms; private List<PaymentConfirmInfo> paymentConfirms;
@JSONField(name = "has_more") @JSONField(name = "has_more")
private Boolean hasMore; private Boolean hasMore;
@@ -26,7 +30,52 @@ public class QueryPaymentConfirmDetailResponse extends AdapayBaseResponse{
@JSONField(name = "object") @JSONField(name = "object")
private String object; private String object;
static class PaymentConfirm { @Getter
@Setter
public static class PaymentConfirmInfo{
/**
* 返参必填由AdaPay生成的支付对象 ID
*/
@JSONField(name = "id")
private String id;
/**
* 返参,必填,支付创建时的时间戳
*/
@JSONField(name = "created_time")
private String createdTime;
/**
* 必填,订单号
*/
@JSONField(name = "order_no")
private String orderNo;
/**
* 商户发起支付的应用id不同的前端应用将无法使用该 Payment 对象完成支付
*/
@JSONField(name = "app_id")
private String appId;
@JSONField(name = "confirm_amt")
private String confirmAmt;
@JSONField(name = "confirmed_amt")
private String confirmedAmt;
@JSONField(name = "fee_mode")
private String feeMode;
private String description;
@JSONField(name = "reserved_amt")
private String reservedAmt;
@JSONField(name = "refunded_amt")
private String refundedAmt;
@JSONField(name = "fee_amt")
private String feeAmt;
} }
} }

View File

@@ -972,7 +972,7 @@ public class AdapayService {
/** /**
* 查询支付确认对象列表 * 查询支付确认对象列表
*/ */
public void queryPaymentConfirmList(QueryPaymentConfirmDTO dto) { public QueryPaymentConfirmDetailResponse queryPaymentConfirmList(QueryPaymentConfirmDTO dto) {
AbstractAdapayConfig config = AdapayConfigFactory.getConfig(dto.getWechatAppId()); AbstractAdapayConfig config = AdapayConfigFactory.getConfig(dto.getWechatAppId());
if (config == null) { if (config == null) {
throw new BusinessException(ReturnCodeEnum.CODE_ADAPAY_CONFIG_IS_NULL_ERROR); throw new BusinessException(ReturnCodeEnum.CODE_ADAPAY_CONFIG_IS_NULL_ERROR);
@@ -981,13 +981,15 @@ public class AdapayService {
param.put("payment_id", dto.getPaymentId()); param.put("payment_id", dto.getPaymentId());
param.put("app_id", config.getAdapayAppId()); param.put("app_id", config.getAdapayAppId());
QueryPaymentConfirmDetailResponse queryPaymentConfirmDetailResponse = null;
try { try {
Map<String, Object> map = PaymentConfirm.queryList(param, config.getWechatAppId()); Map<String, Object> map = PaymentConfirm.queryList(param, config.getWechatAppId());
QueryPaymentConfirmDetailResponse queryPaymentConfirmDetailResponse = JSON.parseObject(JSON.toJSONString(map), QueryPaymentConfirmDetailResponse.class); queryPaymentConfirmDetailResponse = JSON.parseObject(JSON.toJSONString(map), QueryPaymentConfirmDetailResponse.class);
log.info("queryPaymentConfirmDetailResponse:{}", JSON.toJSONString(queryPaymentConfirmDetailResponse)); // log.info("queryPaymentConfirmDetailResponse:{}", JSON.toJSONString(queryPaymentConfirmDetailResponse));
} catch (BaseAdaPayException e) { } catch (BaseAdaPayException e) {
log.error("查询支付确认对象列表error", e); log.error("查询支付确认对象列表error", e);
} }
return queryPaymentConfirmDetailResponse;
} }
/** /**

View File

@@ -0,0 +1,28 @@
package com.jsowell.pile.dto;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class SettleOrderReportDTO {
/**
* 站点id
*/
private String stationId;
/**
* 交易日期
*/
private String tradeDate;
/**
* 当前页码
*/
private Integer pageNum;
/**
* 页面容量
*/
private Integer pageSize;
}

View File

@@ -1,8 +1,11 @@
package com.jsowell.pile.mapper; package com.jsowell.pile.mapper;
import com.jsowell.pile.domain.AdapayCallbackRecord; import com.jsowell.pile.domain.AdapayCallbackRecord;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List;
@Repository @Repository
public interface AdapayCallbackRecordMapper { public interface AdapayCallbackRecordMapper {
int deleteByPrimaryKey(Integer id); int deleteByPrimaryKey(Integer id);
@@ -20,4 +23,6 @@ public interface AdapayCallbackRecordMapper {
int updateByPrimaryKey(AdapayCallbackRecord record); int updateByPrimaryKey(AdapayCallbackRecord record);
AdapayCallbackRecord selectByPaymentId(String paymentId); 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 updateBatch(List<ClearingBillDetail> list);
int batchInsert(@Param("list") 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; package com.jsowell.pile.mapper;
import com.jsowell.pile.domain.ClearingWithdrawInfo; import com.jsowell.pile.domain.ClearingWithdrawInfo;
import com.jsowell.pile.vo.web.ClearingBillVO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
@@ -63,4 +64,6 @@ public interface ClearingWithdrawInfoMapper {
int batchInsert(@Param("list") List<ClearingWithdrawInfo> list); int batchInsert(@Param("list") List<ClearingWithdrawInfo> list);
ClearingWithdrawInfo selectByWithdrawCode(String withdrawCode); 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.dto.MerchantOrderReportDTO;
import com.jsowell.pile.vo.web.SettleOrderReportVO; import com.jsowell.pile.vo.web.SettleOrderReportVO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List; import java.util.List;
@Repository
public interface SettleOrderReportMapper { public interface SettleOrderReportMapper {
/** /**
* delete by primary key * delete by primary key

View File

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

View File

@@ -1,6 +1,7 @@
package com.jsowell.pile.service; package com.jsowell.pile.service;
import com.jsowell.pile.domain.OrderPayRecord; import com.jsowell.pile.domain.OrderPayRecord;
import com.jsowell.pile.vo.web.OrderDetailInfoVO;
import java.util.List; import java.util.List;
@@ -16,4 +17,6 @@ public interface IOrderPayRecordService {
int batchInsert(List<OrderPayRecord> payRecordList); int batchInsert(List<OrderPayRecord> payRecordList);
List<OrderPayRecord> getOrderPayRecordList(String orderCode); 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.domain.SettleOrderReport;
import com.jsowell.pile.dto.MerchantOrderReportDTO; 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.MerchantOrderReportVO;
import com.jsowell.pile.vo.web.OrderSettleDetailVO;
import java.util.List; import java.util.List;
@@ -23,6 +25,8 @@ public interface ISettleOrderReportService {
SettleOrderReport selectByStationIdAndDate(String stationId, String date); SettleOrderReport selectByStationIdAndDate(String stationId, String date);
List<OrderSettleDetailVO> selectSettleOrderReportDetail(SettleOrderReportDTO dto);
List<SettleOrderReport> selectByMerchantIdAndDate(String merchantId, String date); List<SettleOrderReport> selectByMerchantIdAndDate(String merchantId, String date);
/** /**

View File

@@ -1,11 +1,12 @@
package com.jsowell.pile.service.impl; package com.jsowell.pile.service.impl;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import com.jsowell.pile.domain.ClearingBillDetail; import com.jsowell.pile.domain.ClearingBillDetail;
import java.util.List;
import com.jsowell.pile.mapper.ClearingBillDetailMapper; import com.jsowell.pile.mapper.ClearingBillDetailMapper;
import com.jsowell.pile.service.ClearingBillDetailService; import com.jsowell.pile.service.ClearingBillDetailService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service @Service
public class ClearingBillDetailServiceImpl implements ClearingBillDetailService{ 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.domain.ClearingWithdrawInfo;
import com.jsowell.pile.mapper.ClearingWithdrawInfoMapper; import com.jsowell.pile.mapper.ClearingWithdrawInfoMapper;
import com.jsowell.pile.service.ClearingWithdrawInfoService; import com.jsowell.pile.service.ClearingWithdrawInfoService;
import com.jsowell.pile.vo.web.ClearingBillVO;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
@@ -68,4 +69,12 @@ public class ClearingWithdrawInfoServiceImpl implements ClearingWithdrawInfoServ
return clearingWithdrawInfoMapper.selectByWithdrawCode(withdrawCode); 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; 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.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 org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
@Service @Service
@@ -14,6 +27,21 @@ public class OrderPayRecordServiceImpl implements IOrderPayRecordService {
@Resource @Resource
private OrderPayRecordMapper orderPayRecordMapper; private OrderPayRecordMapper orderPayRecordMapper;
@Autowired
private WxpayCallbackRecordService wxpayCallbackRecordService;
@Autowired
private AdapayCallbackRecordService adapayCallbackRecordService;
@Autowired
private IMemberTransactionRecordService memberTransactionRecordService;
@Autowired
private IOrderBasicInfoService orderBasicInfoService;
@Autowired
private RedisCache redisCache;
@Override @Override
public int updateByPrimaryKeySelective(OrderPayRecord record) { public int updateByPrimaryKeySelective(OrderPayRecord record) {
@@ -31,4 +59,91 @@ public class OrderPayRecordServiceImpl implements IOrderPayRecordService {
return orderPayRecordMapper.getOrderPayRecordList(orderCode); 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,28 @@
package com.jsowell.pile.service.impl; package com.jsowell.pile.service.impl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; 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.core.page.PageResponse;
import com.jsowell.common.util.DateUtils; import com.jsowell.common.util.DateUtils;
import com.jsowell.common.util.PageUtils; import com.jsowell.common.util.PageUtils;
import com.jsowell.common.util.StringUtils; import com.jsowell.common.util.StringUtils;
import com.jsowell.pile.domain.AdapayCallbackRecord;
import com.jsowell.pile.domain.SettleOrderReport; import com.jsowell.pile.domain.SettleOrderReport;
import com.jsowell.pile.dto.MerchantOrderReportDTO; 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.mapper.SettleOrderReportMapper;
import com.jsowell.pile.service.ClearingWithdrawInfoService;
import com.jsowell.pile.service.IPileMerchantInfoService;
import com.jsowell.pile.service.ISettleOrderReportService; 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.MerchantOrderReportVO;
import com.jsowell.pile.vo.web.OrderSettleDetailVO;
import com.jsowell.pile.vo.web.SettleOrderReportVO; import com.jsowell.pile.vo.web.SettleOrderReportVO;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -30,6 +43,18 @@ public class SettleOrderReportServiceImpl implements ISettleOrderReportService {
@Autowired @Autowired
private SettleOrderReportMapper settleOrderReportMapper; private SettleOrderReportMapper settleOrderReportMapper;
@Autowired
private AdapayCallbackRecordMapper adapayCallbackRecordMapper;
@Autowired
private AdapayService adapayService;
@Autowired
private IPileMerchantInfoService pileMerchantInfoService;
@Autowired
private ClearingWithdrawInfoService clearingWithdrawInfoService;
/** /**
* 查询结算订单报 * 查询结算订单报
* *
@@ -46,6 +71,62 @@ public class SettleOrderReportServiceImpl implements ISettleOrderReportService {
return settleOrderReportMapper.selectByStationIdAndDate(stationId, date); return settleOrderReportMapper.selectByStationIdAndDate(stationId, date);
} }
/**
* 查询站点订单日报明细
* 分页查询
*
* @param dto
* @return
*/
@Override
public List<OrderSettleDetailVO> selectSettleOrderReportDetail(SettleOrderReportDTO dto) {
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 @Override
public List<SettleOrderReport> selectByMerchantIdAndDate(String merchantId, String date) { public List<SettleOrderReport> selectByMerchantIdAndDate(String merchantId, String date) {
return settleOrderReportMapper.selectByMerchantIdAndDate(merchantId, date); return settleOrderReportMapper.selectByMerchantIdAndDate(merchantId, date);

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

@@ -0,0 +1,45 @@
package com.jsowell.pile.vo.web;
import lombok.*;
/**
* 订单结算详情
*/
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class OrderSettleDetailVO {
/**
* 订单编号
*/
private String orderCode;
/**
* 结算金额
*/
private String settleAmount;
/**
* 清分状态
* 0-未清分1-已清分
*/
private String clearingStatus;
/**
* 清分账单编号
*/
private String clearingBillCode;
/**
* 提现状态
* 0-未提现1-体现中2-提现到账
*/
private String withdrawStatus;
/**
* 提现编号
*/
private String withdrawCode;
}

View File

@@ -294,4 +294,15 @@
del_flag = #{delFlag,jdbcType=VARCHAR} del_flag = #{delFlag,jdbcType=VARCHAR}
where id = #{id,jdbcType=VARCHAR} where id = #{id,jdbcType=VARCHAR}
</update> </update>
<select id="queryRecordList" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from adapay_callback_record
where del_flag = '0'
and order_code in
<foreach collection="orderCodeList" item="orderCode" open="(" separator="," close=")">
#{orderCode,jdbcType=VARCHAR}
</foreach>
</select>
</mapper> </mapper>

View File

@@ -295,4 +295,12 @@
</if> </if>
</trim> </trim>
</insert> </insert>
<select id="selectClearingBillCode" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from clearing_bill_detail
where del_flag = '0'
and order_code = #{orderCode,jdbcType=VARCHAR}
</select>
</mapper> </mapper>

View File

@@ -436,4 +436,16 @@
where del_flag = '0' where del_flag = '0'
and withdraw_code = #{withdrawCode,jdbcType=VARCHAR} and withdraw_code = #{withdrawCode,jdbcType=VARCHAR}
</select> </select>
<select id="selectWithdrawInfoByOrderCode" resultType="com.jsowell.pile.vo.web.ClearingBillVO">
select
t1.clearing_bill_code as clearingBillCode,
t3.withdraw_code as withdrawCode,
t3.withdraw_status as withdrawStatus
from clearing_bill_info t1
left join clearing_bill_detail t2 on t2.clearing_bill_code = t1.clearing_bill_code and t2.del_flag = '0'
left join clearing_withdraw_info t3 on t3.withdraw_code = t1.withdraw_code and t3.del_flag = '0'
where t1.del_flag = '0'
and t2.order_code = #{orderCode,jdbcType=VARCHAR}
</select>
</mapper> </mapper>

View File

@@ -97,6 +97,7 @@
<el-table-column label="交易金额" align="center" prop="tradeAmount" /> <el-table-column label="交易金额" align="center" prop="tradeAmount" />
<el-table-column label="交易手续费" align="center" prop="tradeFee" /> <el-table-column label="交易手续费" align="center" prop="tradeFee" />
</el-table> </el-table>
<el-dialog title="订单流水" :visible.sync="dialogTableVisible"> <el-dialog title="订单流水" :visible.sync="dialogTableVisible">
<el-table :data="orderList"> <el-table :data="orderList">
<el-table-column property="orderCode" label="订单编号" /> <el-table-column property="orderCode" label="订单编号" />