diff --git a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java index 64f40859d..f52f5d434 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java @@ -23,6 +23,8 @@ import com.jsowell.common.enums.AcquirerEnum; import com.jsowell.common.enums.InvoiceRecordEnum; import com.jsowell.common.enums.MemberWalletEnum; 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.exception.BusinessException; import com.jsowell.common.util.DateUtils; @@ -1038,6 +1040,15 @@ public class OrderService { dto.setSubType(MemberWalletEnum.SUBTYPE_TOP_UP.getValue()); dto.setUpdatePrincipalBalance(amount); 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 diff --git a/jsowell-common/src/main/java/com/jsowell/common/enums/ykc/ScenarioEnum.java b/jsowell-common/src/main/java/com/jsowell/common/enums/ykc/ScenarioEnum.java index 9d7dfe828..b48688512 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/enums/ykc/ScenarioEnum.java +++ b/jsowell-common/src/main/java/com/jsowell/common/enums/ykc/ScenarioEnum.java @@ -7,6 +7,8 @@ public enum ScenarioEnum { ORDER("order", "支付订单"), BALANCE("balance", "支付余额"), + + OCCUPY("occupy", "占桩订单"), ; private String value; diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/service/AdapayService.java b/jsowell-pile/src/main/java/com/jsowell/adapay/service/AdapayService.java index 397d831e5..58c430126 100644 --- a/jsowell-pile/src/main/java/com/jsowell/adapay/service/AdapayService.java +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/service/AdapayService.java @@ -113,7 +113,7 @@ public class AdapayService { createAdaPaymentParam.setGoods_title(dto.getGoodsTitle()); createAdaPaymentParam.setGoods_desc(dto.getGoodsDesc()); // 这个字段是微信支付凭证的商品名 Map map = Maps.newHashMap(); - map.put("type", ScenarioEnum.ORDER.getValue()); + map.put("type", dto.getType()); map.put("orderCode", dto.getOrderCode()); map.put("payMode", payMode); map.put("memberId", dto.getMemberId()); diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/dto/PayOrderDTO.java b/jsowell-pile/src/main/java/com/jsowell/pile/dto/PayOrderDTO.java index ed132d61b..0f8974048 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/dto/PayOrderDTO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/dto/PayOrderDTO.java @@ -1,5 +1,6 @@ package com.jsowell.pile.dto; +import com.jsowell.common.enums.ykc.ScenarioEnum; import lombok.Data; import java.math.BigDecimal; @@ -30,6 +31,12 @@ public class PayOrderDTO { */ private BigDecimal payAmount; + /** + * @see ScenarioEnum + * 支付场景 + */ + private String type; + /** * 微信支付需要用的code */ diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/dto/SettleOrderReportDTO.java b/jsowell-pile/src/main/java/com/jsowell/pile/dto/SettleOrderReportDTO.java index 8d1f579e1..65cc572fd 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/dto/SettleOrderReportDTO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/dto/SettleOrderReportDTO.java @@ -11,6 +11,11 @@ public class SettleOrderReportDTO { */ private String stationId; + /** + * 运营商id + */ + private String merchantId; + /** * 交易日期 */ diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java index a0c9dc756..d66f5f874 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java @@ -2753,6 +2753,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { // 2023-07-11 全部改为汇付支付 dto.setGoodsTitle("充电费用"); dto.setGoodsDesc("充电桩预付款金额"); + dto.setType(ScenarioEnum.ORDER.getValue()); Map weixinMap = adapayService.createPayment(dto); // 返回微信支付参数 diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderPileOccupyServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderPileOccupyServiceImpl.java index 144f2c315..93bbe799c 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderPileOccupyServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderPileOccupyServiceImpl.java @@ -11,6 +11,7 @@ import com.jsowell.common.enums.uniapp.OccupyOrderPayStatusEnum; import com.jsowell.common.enums.uniapp.OccupyOrderStatusEnum; import com.jsowell.common.enums.ykc.OrderPayModeEnum; import com.jsowell.common.enums.ykc.ReturnCodeEnum; +import com.jsowell.common.enums.ykc.ScenarioEnum; import com.jsowell.common.exception.BusinessException; import com.jsowell.common.util.DateUtils; import com.jsowell.common.util.PageUtils; @@ -443,6 +444,7 @@ public class OrderPileOccupyServiceImpl implements OrderPileOccupyService { // 返回支付参数 dto.setGoodsTitle("占桩费用"); dto.setGoodsDesc("占桩订单金额"); + dto.setType(ScenarioEnum.OCCUPY.getValue()); Map weixinMap = adapayService.createPayment(dto); resultMap.put("weixinMap", weixinMap); } else if (StringUtils.equals(dto.getPayMode(), OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue())) { // 白名单支付 diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/SettleOrderReportServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/SettleOrderReportServiceImpl.java index 2f203fcd6..9e8594ad6 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/SettleOrderReportServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/SettleOrderReportServiceImpl.java @@ -13,26 +13,23 @@ import com.jsowell.common.util.DateUtils; import com.jsowell.common.util.PageUtils; import com.jsowell.common.util.StringUtils; 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.dto.GetClearingBillDTO; 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.ClearingBillInfoService; -import com.jsowell.pile.service.ClearingWithdrawInfoService; -import com.jsowell.pile.service.IPileMerchantInfoService; -import com.jsowell.pile.service.ISettleOrderReportService; +import com.jsowell.pile.service.*; import com.jsowell.pile.vo.web.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.stream.Collectors; /** * 结算订单报Service业务层处理 @@ -60,6 +57,9 @@ public class SettleOrderReportServiceImpl implements ISettleOrderReportService { @Autowired private ClearingBillInfoService clearingBillInfoService; + @Autowired + private IPileStationInfoService pileStationInfoService; + /** * 查询结算订单报 * @@ -124,30 +124,23 @@ public class SettleOrderReportServiceImpl implements ISettleOrderReportService { */ @Override public PageResponse selectSettleOrderReportDetail(SettleOrderReportDTO dto) { - SettleOrderReport orderReport = selectByStationIdAndDate(dto.getStationId(), dto.getTradeDate()); - if (orderReport == null) { - return new PageResponse(); - } - String orderCodes = orderReport.getOrderCodes(); - if (StringUtils.isBlank(orderCodes)) { - return new PageResponse(); - } + List orderCodes = getOrderCodes(dto); - List 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 clearingBillVOList = clearingWithdrawInfoService.selectWithdrawInfoByOrderCodeList(orderCodeList); + List clearingBillVOList = clearingWithdrawInfoService.selectWithdrawInfoByOrderCodeList(orderCodes); PageInfo pageInfo = new PageInfo<>(clearingBillVOList); // 封装结果集 List resultList = Lists.newArrayList(); OrderSettleDetailVO vo = null; - String wechatAppId = pileMerchantInfoService.queryAppIdByMerchantId(orderReport.getMerchantId()); + String wechatAppId = pileMerchantInfoService.queryAppIdByMerchantId(dto.getMerchantId()); for (ClearingBillVO clearingBillVO : pageInfo.getList()) { vo = new OrderSettleDetailVO(); vo.setOrderCode(clearingBillVO.getOrderCode()); + vo.setSettleAmount(clearingBillVO.getSettleAmount()); String paymentId = clearingBillVO.getPaymentId(); QueryPaymentConfirmDTO build = QueryPaymentConfirmDTO.builder() .wechatAppId(wechatAppId) @@ -185,6 +178,51 @@ public class SettleOrderReportServiceImpl implements ISettleOrderReportService { return pageResponse; } + /** + * 根据 merchantId 或 stationId 以及交易日期获取订单号 + * @param dto + * @return + */ + private List getOrderCodes(SettleOrderReportDTO dto) { + List orderCodeList = new ArrayList<>(); + if (StringUtils.isNotBlank(dto.getMerchantId())) { + List stationIdInfos = pileStationInfoService.selectStationListByMerchantId(Long.parseLong(dto.getMerchantId())); + // 收集出站点id + List stationIds = stationIdInfos.stream() + .map(PileStationInfo::getId) + .collect(Collectors.toList()) + .stream() + .map(String::valueOf) + .collect(Collectors.toList()); + List list = queryOrderReport(stationIds, dto.getTradeDate(), dto.getTradeDate()); + if (CollectionUtils.isEmpty(list)) { + return new ArrayList<>(); + } + List 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 public List selectByMerchantIdAndDate(String merchantId, String date) { return settleOrderReportMapper.selectByMerchantIdAndDate(merchantId, date); @@ -376,7 +414,7 @@ public class SettleOrderReportServiceImpl implements ISettleOrderReportService { PageUtils.startPage(pageNum, pageSize); resultList = clearingBillInfoService.getMerchantClearingBillList(dto); if (CollectionUtils.isEmpty(resultList)) { - throw new BusinessException("", "获取运营商清分账单列表为空"); + return null; } PageInfo pageInfo = new PageInfo<>(resultList); PageResponse response = PageResponse.builder() diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/ClearingBillVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/ClearingBillVO.java index 51bb68311..874cb4f24 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/ClearingBillVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/ClearingBillVO.java @@ -3,6 +3,8 @@ package com.jsowell.pile.vo.web; import com.jsowell.adapay.response.QueryPaymentConfirmDetailResponse; import lombok.Data; +import java.math.BigDecimal; + @Data public class ClearingBillVO { /** @@ -10,6 +12,11 @@ public class ClearingBillVO { */ private String orderCode; + /** + * 结算金额 + */ + private BigDecimal settleAmount; + /** * 支付id */ diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/OrderSettleDetailVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/OrderSettleDetailVO.java index 06dfd68aa..d8155128f 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/OrderSettleDetailVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/OrderSettleDetailVO.java @@ -2,6 +2,8 @@ package com.jsowell.pile.vo.web; 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; diff --git a/jsowell-pile/src/main/resources/mapper/pile/ClearingWithdrawInfoMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/ClearingWithdrawInfoMapper.xml index 9703ee2f7..4073807da 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/ClearingWithdrawInfoMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/ClearingWithdrawInfoMapper.xml @@ -453,6 +453,7 @@ select t1.clearing_bill_code as clearingBillCode, t2.order_code as orderCode, + t5.settle_amount as settleAmount, t3.withdraw_code as withdrawCode, t3.withdraw_status as withdrawStatus, 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_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 order_basic_info t5 on t5.order_code = t2.order_code and t5.del_flag = '0' where t1.del_flag = '0' and t2.order_code in