mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-07-07 07:28:03 +08:00
update 支付回调新增占桩逻辑处理、 后管运营商订单报表新增字段
This commit is contained in:
@@ -23,6 +23,8 @@ import com.jsowell.common.enums.AcquirerEnum;
|
|||||||
import com.jsowell.common.enums.InvoiceRecordEnum;
|
import com.jsowell.common.enums.InvoiceRecordEnum;
|
||||||
import com.jsowell.common.enums.MemberWalletEnum;
|
import com.jsowell.common.enums.MemberWalletEnum;
|
||||||
import com.jsowell.common.enums.adapay.AdapayEventEnum;
|
import com.jsowell.common.enums.adapay.AdapayEventEnum;
|
||||||
|
import com.jsowell.common.enums.uniapp.OccupyOrderPayStatusEnum;
|
||||||
|
import com.jsowell.common.enums.uniapp.OccupyOrderStatusEnum;
|
||||||
import com.jsowell.common.enums.ykc.*;
|
import com.jsowell.common.enums.ykc.*;
|
||||||
import com.jsowell.common.exception.BusinessException;
|
import com.jsowell.common.exception.BusinessException;
|
||||||
import com.jsowell.common.util.DateUtils;
|
import com.jsowell.common.util.DateUtils;
|
||||||
@@ -1038,6 +1040,15 @@ public class OrderService {
|
|||||||
dto.setSubType(MemberWalletEnum.SUBTYPE_TOP_UP.getValue());
|
dto.setSubType(MemberWalletEnum.SUBTYPE_TOP_UP.getValue());
|
||||||
dto.setUpdatePrincipalBalance(amount);
|
dto.setUpdatePrincipalBalance(amount);
|
||||||
memberBasicInfoService.updateMemberBalance(dto);
|
memberBasicInfoService.updateMemberBalance(dto);
|
||||||
|
} else if (StringUtils.equals(type, ScenarioEnum.OCCUPY.getValue())) { // 占桩订单
|
||||||
|
// 通过订单号查询出占桩订单信息
|
||||||
|
OrderPileOccupy orderPileOccupy = orderPileOccupyService.queryByOccupyCode(orderCode);
|
||||||
|
// 订单状态改为 1-订单完成
|
||||||
|
orderPileOccupy.setStatus(OccupyOrderStatusEnum.ORDER_COMPLETE.getCode());
|
||||||
|
// 支付状态改为 1-支付完成
|
||||||
|
orderPileOccupy.setPayStatus(OccupyOrderPayStatusEnum.PAYMENT_COMPLETION.getCode());
|
||||||
|
|
||||||
|
orderPileOccupyService.updateByPrimaryKey(orderPileOccupy);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 保存MemberAdapayRecord
|
// 保存MemberAdapayRecord
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ public enum ScenarioEnum {
|
|||||||
ORDER("order", "支付订单"),
|
ORDER("order", "支付订单"),
|
||||||
|
|
||||||
BALANCE("balance", "支付余额"),
|
BALANCE("balance", "支付余额"),
|
||||||
|
|
||||||
|
OCCUPY("occupy", "占桩订单"),
|
||||||
;
|
;
|
||||||
|
|
||||||
private String value;
|
private String value;
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ public class AdapayService {
|
|||||||
createAdaPaymentParam.setGoods_title(dto.getGoodsTitle());
|
createAdaPaymentParam.setGoods_title(dto.getGoodsTitle());
|
||||||
createAdaPaymentParam.setGoods_desc(dto.getGoodsDesc()); // 这个字段是微信支付凭证的商品名
|
createAdaPaymentParam.setGoods_desc(dto.getGoodsDesc()); // 这个字段是微信支付凭证的商品名
|
||||||
Map<String, String> map = Maps.newHashMap();
|
Map<String, String> map = Maps.newHashMap();
|
||||||
map.put("type", ScenarioEnum.ORDER.getValue());
|
map.put("type", dto.getType());
|
||||||
map.put("orderCode", dto.getOrderCode());
|
map.put("orderCode", dto.getOrderCode());
|
||||||
map.put("payMode", payMode);
|
map.put("payMode", payMode);
|
||||||
map.put("memberId", dto.getMemberId());
|
map.put("memberId", dto.getMemberId());
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.jsowell.pile.dto;
|
package com.jsowell.pile.dto;
|
||||||
|
|
||||||
|
import com.jsowell.common.enums.ykc.ScenarioEnum;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
@@ -30,6 +31,12 @@ public class PayOrderDTO {
|
|||||||
*/
|
*/
|
||||||
private BigDecimal payAmount;
|
private BigDecimal payAmount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see ScenarioEnum
|
||||||
|
* 支付场景
|
||||||
|
*/
|
||||||
|
private String type;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 微信支付需要用的code
|
* 微信支付需要用的code
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -11,6 +11,11 @@ public class SettleOrderReportDTO {
|
|||||||
*/
|
*/
|
||||||
private String stationId;
|
private String stationId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 运营商id
|
||||||
|
*/
|
||||||
|
private String merchantId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 交易日期
|
* 交易日期
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -2753,6 +2753,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
|
|||||||
// 2023-07-11 全部改为汇付支付
|
// 2023-07-11 全部改为汇付支付
|
||||||
dto.setGoodsTitle("充电费用");
|
dto.setGoodsTitle("充电费用");
|
||||||
dto.setGoodsDesc("充电桩预付款金额");
|
dto.setGoodsDesc("充电桩预付款金额");
|
||||||
|
dto.setType(ScenarioEnum.ORDER.getValue());
|
||||||
Map<String, Object> weixinMap = adapayService.createPayment(dto);
|
Map<String, Object> weixinMap = adapayService.createPayment(dto);
|
||||||
|
|
||||||
// 返回微信支付参数
|
// 返回微信支付参数
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import com.jsowell.common.enums.uniapp.OccupyOrderPayStatusEnum;
|
|||||||
import com.jsowell.common.enums.uniapp.OccupyOrderStatusEnum;
|
import com.jsowell.common.enums.uniapp.OccupyOrderStatusEnum;
|
||||||
import com.jsowell.common.enums.ykc.OrderPayModeEnum;
|
import com.jsowell.common.enums.ykc.OrderPayModeEnum;
|
||||||
import com.jsowell.common.enums.ykc.ReturnCodeEnum;
|
import com.jsowell.common.enums.ykc.ReturnCodeEnum;
|
||||||
|
import com.jsowell.common.enums.ykc.ScenarioEnum;
|
||||||
import com.jsowell.common.exception.BusinessException;
|
import com.jsowell.common.exception.BusinessException;
|
||||||
import com.jsowell.common.util.DateUtils;
|
import com.jsowell.common.util.DateUtils;
|
||||||
import com.jsowell.common.util.PageUtils;
|
import com.jsowell.common.util.PageUtils;
|
||||||
@@ -443,6 +444,7 @@ public class OrderPileOccupyServiceImpl implements OrderPileOccupyService {
|
|||||||
// 返回支付参数
|
// 返回支付参数
|
||||||
dto.setGoodsTitle("占桩费用");
|
dto.setGoodsTitle("占桩费用");
|
||||||
dto.setGoodsDesc("占桩订单金额");
|
dto.setGoodsDesc("占桩订单金额");
|
||||||
|
dto.setType(ScenarioEnum.OCCUPY.getValue());
|
||||||
Map<String, Object> weixinMap = adapayService.createPayment(dto);
|
Map<String, Object> weixinMap = adapayService.createPayment(dto);
|
||||||
resultMap.put("weixinMap", weixinMap);
|
resultMap.put("weixinMap", weixinMap);
|
||||||
} else if (StringUtils.equals(dto.getPayMode(), OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue())) { // 白名单支付
|
} else if (StringUtils.equals(dto.getPayMode(), OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue())) { // 白名单支付
|
||||||
|
|||||||
@@ -13,26 +13,23 @@ 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.ClearingBillInfo;
|
import com.jsowell.pile.domain.ClearingBillInfo;
|
||||||
|
import com.jsowell.pile.domain.PileBasicInfo;
|
||||||
|
import com.jsowell.pile.domain.PileStationInfo;
|
||||||
import com.jsowell.pile.domain.SettleOrderReport;
|
import com.jsowell.pile.domain.SettleOrderReport;
|
||||||
import com.jsowell.pile.dto.GetClearingBillDTO;
|
import com.jsowell.pile.dto.GetClearingBillDTO;
|
||||||
import com.jsowell.pile.dto.MerchantOrderReportDTO;
|
import com.jsowell.pile.dto.MerchantOrderReportDTO;
|
||||||
import com.jsowell.pile.dto.SettleOrderReportDTO;
|
import com.jsowell.pile.dto.SettleOrderReportDTO;
|
||||||
import com.jsowell.pile.mapper.AdapayCallbackRecordMapper;
|
import com.jsowell.pile.mapper.AdapayCallbackRecordMapper;
|
||||||
import com.jsowell.pile.mapper.SettleOrderReportMapper;
|
import com.jsowell.pile.mapper.SettleOrderReportMapper;
|
||||||
import com.jsowell.pile.service.ClearingBillInfoService;
|
import com.jsowell.pile.service.*;
|
||||||
import com.jsowell.pile.service.ClearingWithdrawInfoService;
|
|
||||||
import com.jsowell.pile.service.IPileMerchantInfoService;
|
|
||||||
import com.jsowell.pile.service.ISettleOrderReportService;
|
|
||||||
import com.jsowell.pile.vo.web.*;
|
import com.jsowell.pile.vo.web.*;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Date;
|
import java.util.stream.Collectors;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 结算订单报Service业务层处理
|
* 结算订单报Service业务层处理
|
||||||
@@ -60,6 +57,9 @@ public class SettleOrderReportServiceImpl implements ISettleOrderReportService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private ClearingBillInfoService clearingBillInfoService;
|
private ClearingBillInfoService clearingBillInfoService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IPileStationInfoService pileStationInfoService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询结算订单报
|
* 查询结算订单报
|
||||||
*
|
*
|
||||||
@@ -124,30 +124,23 @@ public class SettleOrderReportServiceImpl implements ISettleOrderReportService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public PageResponse selectSettleOrderReportDetail(SettleOrderReportDTO dto) {
|
public PageResponse selectSettleOrderReportDetail(SettleOrderReportDTO dto) {
|
||||||
SettleOrderReport orderReport = selectByStationIdAndDate(dto.getStationId(), dto.getTradeDate());
|
List<String> orderCodes = getOrderCodes(dto);
|
||||||
if (orderReport == null) {
|
|
||||||
return new PageResponse();
|
|
||||||
}
|
|
||||||
String orderCodes = orderReport.getOrderCodes();
|
|
||||||
if (StringUtils.isBlank(orderCodes)) {
|
|
||||||
return new PageResponse();
|
|
||||||
}
|
|
||||||
|
|
||||||
List<String> orderCodeList = Lists.newArrayList(StringUtils.split(orderCodes, ","));
|
|
||||||
// 查询订单支付信息 分页
|
// 查询订单支付信息 分页
|
||||||
int pageNum = dto.getPageNum() != null ? dto.getPageNum() : 1;
|
int pageNum = dto.getPageNum() != null ? dto.getPageNum() : 1;
|
||||||
int pageSize = dto.getPageSize() != null ? dto.getPageSize() : 10;
|
int pageSize = dto.getPageSize() != null ? dto.getPageSize() : 10;
|
||||||
PageHelper.startPage(pageNum, pageSize);
|
PageHelper.startPage(pageNum, pageSize);
|
||||||
List<ClearingBillVO> clearingBillVOList = clearingWithdrawInfoService.selectWithdrawInfoByOrderCodeList(orderCodeList);
|
List<ClearingBillVO> clearingBillVOList = clearingWithdrawInfoService.selectWithdrawInfoByOrderCodeList(orderCodes);
|
||||||
PageInfo<ClearingBillVO> pageInfo = new PageInfo<>(clearingBillVOList);
|
PageInfo<ClearingBillVO> pageInfo = new PageInfo<>(clearingBillVOList);
|
||||||
|
|
||||||
// 封装结果集
|
// 封装结果集
|
||||||
List<OrderSettleDetailVO> resultList = Lists.newArrayList();
|
List<OrderSettleDetailVO> resultList = Lists.newArrayList();
|
||||||
OrderSettleDetailVO vo = null;
|
OrderSettleDetailVO vo = null;
|
||||||
String wechatAppId = pileMerchantInfoService.queryAppIdByMerchantId(orderReport.getMerchantId());
|
String wechatAppId = pileMerchantInfoService.queryAppIdByMerchantId(dto.getMerchantId());
|
||||||
for (ClearingBillVO clearingBillVO : pageInfo.getList()) {
|
for (ClearingBillVO clearingBillVO : pageInfo.getList()) {
|
||||||
vo = new OrderSettleDetailVO();
|
vo = new OrderSettleDetailVO();
|
||||||
vo.setOrderCode(clearingBillVO.getOrderCode());
|
vo.setOrderCode(clearingBillVO.getOrderCode());
|
||||||
|
vo.setSettleAmount(clearingBillVO.getSettleAmount());
|
||||||
String paymentId = clearingBillVO.getPaymentId();
|
String paymentId = clearingBillVO.getPaymentId();
|
||||||
QueryPaymentConfirmDTO build = QueryPaymentConfirmDTO.builder()
|
QueryPaymentConfirmDTO build = QueryPaymentConfirmDTO.builder()
|
||||||
.wechatAppId(wechatAppId)
|
.wechatAppId(wechatAppId)
|
||||||
@@ -185,6 +178,51 @@ public class SettleOrderReportServiceImpl implements ISettleOrderReportService {
|
|||||||
return pageResponse;
|
return pageResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据 merchantId 或 stationId 以及交易日期获取订单号
|
||||||
|
* @param dto
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private List<String> getOrderCodes(SettleOrderReportDTO dto) {
|
||||||
|
List<String> orderCodeList = new ArrayList<>();
|
||||||
|
if (StringUtils.isNotBlank(dto.getMerchantId())) {
|
||||||
|
List<PileStationInfo> stationIdInfos = pileStationInfoService.selectStationListByMerchantId(Long.parseLong(dto.getMerchantId()));
|
||||||
|
// 收集出站点id
|
||||||
|
List<String> stationIds = stationIdInfos.stream()
|
||||||
|
.map(PileStationInfo::getId)
|
||||||
|
.collect(Collectors.toList())
|
||||||
|
.stream()
|
||||||
|
.map(String::valueOf)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
List<SettleOrderReport> list = queryOrderReport(stationIds, dto.getTradeDate(), dto.getTradeDate());
|
||||||
|
if (CollectionUtils.isEmpty(list)) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
List<String> orderCodes = list.stream().map(SettleOrderReport::getOrderCodes)
|
||||||
|
.filter(StringUtils::isNotBlank)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
if (CollectionUtils.isEmpty(orderCodes)) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
for (String orderCode : orderCodes) {
|
||||||
|
orderCodeList = Lists.newArrayList(StringUtils.split(orderCode, ","));
|
||||||
|
}
|
||||||
|
} else if (StringUtils.isNotBlank(dto.getStationId())){
|
||||||
|
SettleOrderReport orderReport = selectByStationIdAndDate(dto.getStationId(), dto.getTradeDate());
|
||||||
|
|
||||||
|
if (orderReport == null) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
String orderCodes = orderReport.getOrderCodes();
|
||||||
|
if (StringUtils.isBlank(orderCodes)) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
orderCodeList = Lists.newArrayList(StringUtils.split(orderCodes, ","));
|
||||||
|
dto.setMerchantId(orderReport.getMerchantId());
|
||||||
|
}
|
||||||
|
return orderCodeList;
|
||||||
|
}
|
||||||
|
|
||||||
@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);
|
||||||
@@ -376,7 +414,7 @@ public class SettleOrderReportServiceImpl implements ISettleOrderReportService {
|
|||||||
PageUtils.startPage(pageNum, pageSize);
|
PageUtils.startPage(pageNum, pageSize);
|
||||||
resultList = clearingBillInfoService.getMerchantClearingBillList(dto);
|
resultList = clearingBillInfoService.getMerchantClearingBillList(dto);
|
||||||
if (CollectionUtils.isEmpty(resultList)) {
|
if (CollectionUtils.isEmpty(resultList)) {
|
||||||
throw new BusinessException("", "获取运营商清分账单列表为空");
|
return null;
|
||||||
}
|
}
|
||||||
PageInfo<MerchantClearingBillVO> pageInfo = new PageInfo<>(resultList);
|
PageInfo<MerchantClearingBillVO> pageInfo = new PageInfo<>(resultList);
|
||||||
PageResponse response = PageResponse.builder()
|
PageResponse response = PageResponse.builder()
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ package com.jsowell.pile.vo.web;
|
|||||||
import com.jsowell.adapay.response.QueryPaymentConfirmDetailResponse;
|
import com.jsowell.adapay.response.QueryPaymentConfirmDetailResponse;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class ClearingBillVO {
|
public class ClearingBillVO {
|
||||||
/**
|
/**
|
||||||
@@ -10,6 +12,11 @@ public class ClearingBillVO {
|
|||||||
*/
|
*/
|
||||||
private String orderCode;
|
private String orderCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 结算金额
|
||||||
|
*/
|
||||||
|
private BigDecimal settleAmount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 支付id
|
* 支付id
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ package com.jsowell.pile.vo.web;
|
|||||||
|
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订单结算详情
|
* 订单结算详情
|
||||||
*/
|
*/
|
||||||
@@ -19,7 +21,7 @@ public class OrderSettleDetailVO {
|
|||||||
/**
|
/**
|
||||||
* 结算金额
|
* 结算金额
|
||||||
*/
|
*/
|
||||||
private String settleAmount;
|
private BigDecimal settleAmount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 清分状态
|
* 清分状态
|
||||||
@@ -34,7 +36,7 @@ public class OrderSettleDetailVO {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 提现状态
|
* 提现状态
|
||||||
* 0-未提现;1-体现中;2-提现到账
|
* 0-未提现;1-提现中;2-提现到账
|
||||||
*/
|
*/
|
||||||
private String withdrawStatus;
|
private String withdrawStatus;
|
||||||
|
|
||||||
|
|||||||
@@ -453,6 +453,7 @@
|
|||||||
select
|
select
|
||||||
t1.clearing_bill_code as clearingBillCode,
|
t1.clearing_bill_code as clearingBillCode,
|
||||||
t2.order_code as orderCode,
|
t2.order_code as orderCode,
|
||||||
|
t5.settle_amount as settleAmount,
|
||||||
t3.withdraw_code as withdrawCode,
|
t3.withdraw_code as withdrawCode,
|
||||||
t3.withdraw_status as withdrawStatus,
|
t3.withdraw_status as withdrawStatus,
|
||||||
t4.payment_id as paymentId
|
t4.payment_id as paymentId
|
||||||
@@ -460,6 +461,7 @@
|
|||||||
left join clearing_bill_detail t2 on t2.clearing_bill_code = t1.clearing_bill_code and t2.del_flag = '0'
|
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'
|
left join clearing_withdraw_info t3 on t3.withdraw_code = t1.withdraw_code and t3.del_flag = '0'
|
||||||
left join adapay_callback_record t4 on t4.order_code = t2.order_code and t4.del_flag = '0'
|
left join adapay_callback_record t4 on t4.order_code = t2.order_code and t4.del_flag = '0'
|
||||||
|
left join order_basic_info t5 on t5.order_code = t2.order_code and t5.del_flag = '0'
|
||||||
where t1.del_flag = '0'
|
where t1.del_flag = '0'
|
||||||
and t2.order_code in
|
and t2.order_code in
|
||||||
<foreach collection="orderCodeList" item="orderCode" open="(" separator="," close=")">
|
<foreach collection="orderCodeList" item="orderCode" open="(" separator="," close=")">
|
||||||
|
|||||||
Reference in New Issue
Block a user