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 55d685d14..b286baaf0 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java @@ -590,11 +590,6 @@ public class OrderService { // push远程停机指令 pileRemoteService.remoteStopCharging(dto.getPileSn(), dto.getConnectorCode()); - // 桩计算的消费金额 - - // 对比一下,是否需要退款 - - } /** 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 4cd207628..e24a07b8c 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 @@ -14,15 +14,7 @@ import com.jsowell.common.core.domain.ykc.RealTimeMonitorData; import com.jsowell.common.core.domain.ykc.TransactionRecordsData; import com.jsowell.common.core.redis.RedisCache; import com.jsowell.common.enums.MemberWalletEnum; -import com.jsowell.common.enums.ykc.BillingTimeEnum; -import com.jsowell.common.enums.ykc.OrderPayModeEnum; -import com.jsowell.common.enums.ykc.OrderPayStatusEnum; -import com.jsowell.common.enums.ykc.OrderStatusEnum; -import com.jsowell.common.enums.ykc.PayModeEnum; -import com.jsowell.common.enums.ykc.PileConnectorDataBaseStatusEnum; -import com.jsowell.common.enums.ykc.ReturnCodeEnum; -import com.jsowell.common.enums.ykc.StartModeEnum; -import com.jsowell.common.enums.ykc.StartTypeEnum; +import com.jsowell.common.enums.ykc.*; import com.jsowell.common.exception.BusinessException; import com.jsowell.common.util.DateUtils; import com.jsowell.common.util.SecurityUtils; @@ -30,37 +22,10 @@ import com.jsowell.common.util.StringUtils; import com.jsowell.common.util.bean.BeanUtils; import com.jsowell.common.util.id.IdUtils; import com.jsowell.common.util.id.SnowflakeIdWorker; -import com.jsowell.pile.domain.OrderAbnormalRecord; -import com.jsowell.pile.domain.OrderBasicInfo; -import com.jsowell.pile.domain.OrderDetail; -import com.jsowell.pile.domain.OrderMonitorData; -import com.jsowell.pile.domain.OrderPayRecord; -import com.jsowell.pile.domain.PileAuthCard; -import com.jsowell.pile.domain.PileBasicInfo; -import com.jsowell.pile.domain.WxpayCallbackRecord; -import com.jsowell.pile.domain.WxpayRefundCallback; -import com.jsowell.pile.dto.GenerateOrderDTO; -import com.jsowell.pile.dto.IndexQueryDTO; -import com.jsowell.pile.dto.QueryOrderDTO; -import com.jsowell.pile.dto.QueryPersonPileDTO; -import com.jsowell.pile.dto.QueryStartChargeDTO; -import com.jsowell.pile.dto.QueryStationInfoDTO; -import com.jsowell.pile.dto.RefundableWxPayOrderData; +import com.jsowell.pile.domain.*; +import com.jsowell.pile.dto.*; import com.jsowell.pile.mapper.OrderBasicInfoMapper; -import com.jsowell.pile.service.IMemberBasicInfoService; -import com.jsowell.pile.service.IOrderAbnormalRecordService; -import com.jsowell.pile.service.IOrderBasicInfoService; -import com.jsowell.pile.service.IOrderPayRecordService; -import com.jsowell.pile.service.IPileAuthCardService; -import com.jsowell.pile.service.IPileBasicInfoService; -import com.jsowell.pile.service.IPileBillingTemplateService; -import com.jsowell.pile.service.IPileConnectorInfoService; -import com.jsowell.pile.service.IPileMerchantInfoService; -import com.jsowell.pile.service.IPileStationInfoService; -import com.jsowell.pile.service.OrderMonitorDataService; -import com.jsowell.pile.service.WechatPayService; -import com.jsowell.pile.service.WxpayCallbackRecordService; -import com.jsowell.pile.service.WxpayRefundCallbackService; +import com.jsowell.pile.service.*; import com.jsowell.pile.transaction.dto.OrderTransactionDTO; import com.jsowell.pile.transaction.service.TransactionService; import com.jsowell.pile.vo.base.OrderAmountDetailVO; @@ -71,12 +36,7 @@ import com.jsowell.pile.vo.uniapp.MemberVO; import com.jsowell.pile.vo.uniapp.OrderVO; import com.jsowell.pile.vo.uniapp.PersonPileConnectorSumInfoVO; import com.jsowell.pile.vo.uniapp.SendMessageVO; -import com.jsowell.pile.vo.web.BillingTemplateVO; -import com.jsowell.pile.vo.web.IndexOrderInfoVO; -import com.jsowell.pile.vo.web.OrderListVO; -import com.jsowell.pile.vo.web.OrderTotalDataVO; -import com.jsowell.pile.vo.web.PileConnectorInfoVO; -import com.jsowell.pile.vo.web.UpdateMemberBalanceDTO; +import com.jsowell.pile.vo.web.*; import com.jsowell.wxpay.common.WeChatPayParameter; import com.jsowell.wxpay.dto.WeChatRefundDTO; import com.jsowell.wxpay.dto.WechatSendMsgDTO; @@ -92,11 +52,7 @@ import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.time.LocalDateTime; -import java.util.Comparator; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; import java.util.function.Function; @@ -545,6 +501,9 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { orderAmount = payAmount; } + // 虚拟金额 指订单消费中使用赠送金额支付的部分 + BigDecimal virtualAmount = BigDecimal.ZERO; + // 剩余需要退回的金额 residue BigDecimal residue = payAmount.subtract(orderAmount); if (residue.compareTo(BigDecimal.ZERO) > 0) { @@ -584,6 +543,8 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { if (returnGift != null && giftPayRecord != null) { giftPayRecord.setRefundAmount(returnGift); updatePayRecordList.add(giftPayRecord); + // 支付的赠送金额-退回的赠送金额 = 实际使用赠送金额消费的部分 + virtualAmount = giftPay.subtract(returnGift); } UpdateMemberBalanceDTO updateMemberBalanceDTO = UpdateMemberBalanceDTO.builder() .memberId(orderBasicInfo.getMemberId()) @@ -626,6 +587,8 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { // 把交易记录中的用电量,金额等信息 更新到orderBasicInfo和orderDetail orderBasicInfo.setOrderAmount(orderAmount); // 订单总金额 + orderBasicInfo.setVirtualAmount(virtualAmount); // 虚拟金额 + orderBasicInfo.setSettleAmount(orderAmount.subtract(virtualAmount)); // 结算金额 orderBasicInfo.setOrderStatus(OrderStatusEnum.ORDER_COMPLETE.getValue()); orderBasicInfo.setReason(data.getStopReasonMsg()); // 充电停止原因 orderBasicInfo.setSettlementTime(DateUtils.getNowDate()); // 结算时间