From 541e19fafb285c8278f88587e761d3e613c2cebb Mon Sep 17 00:00:00 2001
From: zhangli <123879394@qq.com>
Date: Sun, 24 Aug 2025 14:06:06 +0800
Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E4=BB=98=E4=BC=98=E5=8C=96=EF=BC=8C?=
=?UTF-8?q?=E5=88=86=E6=B6=A6=E5=A2=9E=E5=8A=A0=E9=97=A8=E5=BA=97=E9=92=B1?=
=?UTF-8?q?=E5=8C=85=E5=8F=98=E6=9B=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../common/enums/WalletChangeTypeEnum.java | 23 ++
.../order/mapper/BaseWalletChangeMapper.java | 16 ++
.../sczx/order/mapper/BaseWalletMapper.java | 16 ++
.../com/sczx/order/po/BaseWalletChangePO.java | 65 ++++++
.../java/com/sczx/order/po/BaseWalletPO.java | 62 ++++++
.../repository/BaseWalletChangeRepo.java | 16 ++
.../sczx/order/repository/BaseWalletRepo.java | 16 ++
.../impl/BaseWalletChangeRepoImpl.java | 20 ++
.../repository/impl/BaseWalletRepoImpl.java | 20 ++
.../com/sczx/order/service/OrderService.java | 1 +
.../service/impl/OrderDistribServiceImpl.java | 41 +++-
.../order/service/impl/OrderServiceImpl.java | 196 ++++++++++--------
.../mapper/BaseWalletChangeMapper.xml | 5 +
.../resources/mapper/BaseWalletMapper.xml | 5 +
14 files changed, 413 insertions(+), 89 deletions(-)
create mode 100644 src/main/java/com/sczx/order/common/enums/WalletChangeTypeEnum.java
create mode 100644 src/main/java/com/sczx/order/mapper/BaseWalletChangeMapper.java
create mode 100644 src/main/java/com/sczx/order/mapper/BaseWalletMapper.java
create mode 100644 src/main/java/com/sczx/order/po/BaseWalletChangePO.java
create mode 100644 src/main/java/com/sczx/order/po/BaseWalletPO.java
create mode 100644 src/main/java/com/sczx/order/repository/BaseWalletChangeRepo.java
create mode 100644 src/main/java/com/sczx/order/repository/BaseWalletRepo.java
create mode 100644 src/main/java/com/sczx/order/repository/impl/BaseWalletChangeRepoImpl.java
create mode 100644 src/main/java/com/sczx/order/repository/impl/BaseWalletRepoImpl.java
create mode 100644 src/main/resources/mapper/BaseWalletChangeMapper.xml
create mode 100644 src/main/resources/mapper/BaseWalletMapper.xml
diff --git a/src/main/java/com/sczx/order/common/enums/WalletChangeTypeEnum.java b/src/main/java/com/sczx/order/common/enums/WalletChangeTypeEnum.java
new file mode 100644
index 0000000..d09deac
--- /dev/null
+++ b/src/main/java/com/sczx/order/common/enums/WalletChangeTypeEnum.java
@@ -0,0 +1,23 @@
+package com.sczx.order.common.enums;
+
+import lombok.Getter;
+
+/**
+ * 小程序类型枚举
+ */
+@Getter
+public enum WalletChangeTypeEnum {
+ REFERRAL("REFERRAL", "引荐"),
+ WITHDRAWAL("WITHDRAWAL", "提现");
+
+ private final String code;
+
+ private final String desc;
+
+
+ WalletChangeTypeEnum(String code, String desc) {
+ this.code = code;
+ this.desc = desc;
+ }
+
+}
diff --git a/src/main/java/com/sczx/order/mapper/BaseWalletChangeMapper.java b/src/main/java/com/sczx/order/mapper/BaseWalletChangeMapper.java
new file mode 100644
index 0000000..deedcd4
--- /dev/null
+++ b/src/main/java/com/sczx/order/mapper/BaseWalletChangeMapper.java
@@ -0,0 +1,16 @@
+package com.sczx.order.mapper;
+
+import com.sczx.order.po.BaseWalletChangePO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 钱包变更记录 Mapper 接口
+ *
+ *
+ * @author zhangli
+ * @since 2025-08-24 13:08:39
+ */
+public interface BaseWalletChangeMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/com/sczx/order/mapper/BaseWalletMapper.java b/src/main/java/com/sczx/order/mapper/BaseWalletMapper.java
new file mode 100644
index 0000000..bb64d82
--- /dev/null
+++ b/src/main/java/com/sczx/order/mapper/BaseWalletMapper.java
@@ -0,0 +1,16 @@
+package com.sczx.order.mapper;
+
+import com.sczx.order.po.BaseWalletPO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 钱包信息 Mapper 接口
+ *
+ *
+ * @author zhangli
+ * @since 2025-08-24 13:08:07
+ */
+public interface BaseWalletMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/com/sczx/order/po/BaseWalletChangePO.java b/src/main/java/com/sczx/order/po/BaseWalletChangePO.java
new file mode 100644
index 0000000..d49b55b
--- /dev/null
+++ b/src/main/java/com/sczx/order/po/BaseWalletChangePO.java
@@ -0,0 +1,65 @@
+package com.sczx.order.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * 钱包变更记录
+ *
+ *
+ * @author zhangli
+ * @since 2025-08-24 13:08:39
+ */
+@Getter
+@Setter
+@TableName("zc_base_wallet_change")
+@ApiModel(value = "BaseWalletChangePO对象", description = "钱包变更记录")
+public class BaseWalletChangePO implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("id主键")
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("用户id")
+ private Long userId;
+
+ @ApiModelProperty("变更类型")
+ private String changeType;
+
+ @ApiModelProperty("支付类型")
+ private String payType;
+
+ @ApiModelProperty("变更时间")
+ private LocalDateTime changeTime;
+
+ @ApiModelProperty("变更金额(元)")
+ private BigDecimal changeAmount;
+
+ @ApiModelProperty("引荐订单")
+ private String referralOrderNo;
+
+ @ApiModelProperty("提现状态")
+ private String changeStatus;
+
+ @ApiModelProperty("删除标志(0代表存在 2代表删除)")
+ private String delFlag;
+
+ @ApiModelProperty("创建时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("更新时间")
+ private LocalDateTime updateTime;
+
+
+}
diff --git a/src/main/java/com/sczx/order/po/BaseWalletPO.java b/src/main/java/com/sczx/order/po/BaseWalletPO.java
new file mode 100644
index 0000000..d350af1
--- /dev/null
+++ b/src/main/java/com/sczx/order/po/BaseWalletPO.java
@@ -0,0 +1,62 @@
+package com.sczx.order.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * 钱包信息
+ *
+ *
+ * @author zhangli
+ * @since 2025-08-24 13:08:07
+ */
+@Getter
+@Setter
+@TableName("zc_base_wallet")
+@ApiModel(value = "BaseWalletPO对象", description = "钱包信息")
+public class BaseWalletPO implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("用户id主键")
+ @TableId(value = "user_id", type = IdType.AUTO)
+ private Long userId;
+
+ @ApiModelProperty("用户名")
+ private String userName;
+
+ @ApiModelProperty("手机号")
+ private String phoneNumber;
+
+ @ApiModelProperty("余额(元)")
+ private BigDecimal balance;
+
+ @ApiModelProperty("可用金额(元)")
+ private BigDecimal availableAmount;
+
+ @ApiModelProperty("冻结金额(元)")
+ private BigDecimal freezeAmount;
+
+ @ApiModelProperty("钱包类型0门店1用户")
+ private Integer walletType;
+
+ @ApiModelProperty("删除标志(0代表存在 2代表删除)")
+ private String delFlag;
+
+ @ApiModelProperty("创建时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("更新时间")
+ private LocalDateTime updateTime;
+
+
+}
diff --git a/src/main/java/com/sczx/order/repository/BaseWalletChangeRepo.java b/src/main/java/com/sczx/order/repository/BaseWalletChangeRepo.java
new file mode 100644
index 0000000..e9fe19d
--- /dev/null
+++ b/src/main/java/com/sczx/order/repository/BaseWalletChangeRepo.java
@@ -0,0 +1,16 @@
+package com.sczx.order.repository;
+
+import com.sczx.order.po.BaseWalletChangePO;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 钱包变更记录 服务类
+ *
+ *
+ * @author zhangli
+ * @since 2025-08-24 13:08:39
+ */
+public interface BaseWalletChangeRepo extends IService {
+
+}
diff --git a/src/main/java/com/sczx/order/repository/BaseWalletRepo.java b/src/main/java/com/sczx/order/repository/BaseWalletRepo.java
new file mode 100644
index 0000000..36ebc6a
--- /dev/null
+++ b/src/main/java/com/sczx/order/repository/BaseWalletRepo.java
@@ -0,0 +1,16 @@
+package com.sczx.order.repository;
+
+import com.sczx.order.po.BaseWalletPO;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 钱包信息 服务类
+ *
+ *
+ * @author zhangli
+ * @since 2025-08-24 13:08:07
+ */
+public interface BaseWalletRepo extends IService {
+
+}
diff --git a/src/main/java/com/sczx/order/repository/impl/BaseWalletChangeRepoImpl.java b/src/main/java/com/sczx/order/repository/impl/BaseWalletChangeRepoImpl.java
new file mode 100644
index 0000000..c0086f8
--- /dev/null
+++ b/src/main/java/com/sczx/order/repository/impl/BaseWalletChangeRepoImpl.java
@@ -0,0 +1,20 @@
+package com.sczx.order.repository.impl;
+
+import com.sczx.order.po.BaseWalletChangePO;
+import com.sczx.order.mapper.BaseWalletChangeMapper;
+import com.sczx.order.repository.BaseWalletChangeRepo;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 钱包变更记录 服务实现类
+ *
+ *
+ * @author zhangli
+ * @since 2025-08-24 13:08:39
+ */
+@Service
+public class BaseWalletChangeRepoImpl extends ServiceImpl implements BaseWalletChangeRepo {
+
+}
diff --git a/src/main/java/com/sczx/order/repository/impl/BaseWalletRepoImpl.java b/src/main/java/com/sczx/order/repository/impl/BaseWalletRepoImpl.java
new file mode 100644
index 0000000..26e8b0f
--- /dev/null
+++ b/src/main/java/com/sczx/order/repository/impl/BaseWalletRepoImpl.java
@@ -0,0 +1,20 @@
+package com.sczx.order.repository.impl;
+
+import com.sczx.order.po.BaseWalletPO;
+import com.sczx.order.mapper.BaseWalletMapper;
+import com.sczx.order.repository.BaseWalletRepo;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 钱包信息 服务实现类
+ *
+ *
+ * @author zhangli
+ * @since 2025-08-24 13:08:07
+ */
+@Service
+public class BaseWalletRepoImpl extends ServiceImpl implements BaseWalletRepo {
+
+}
diff --git a/src/main/java/com/sczx/order/service/OrderService.java b/src/main/java/com/sczx/order/service/OrderService.java
index fdd68e2..6e65b5e 100644
--- a/src/main/java/com/sczx/order/service/OrderService.java
+++ b/src/main/java/com/sczx/order/service/OrderService.java
@@ -94,6 +94,7 @@ public interface OrderService {
*/
OrderDTO confirmReturnCar(ReturnCarReq returnCarReq);
+
/**
* 门店订单统计
* @param storeId
diff --git a/src/main/java/com/sczx/order/service/impl/OrderDistribServiceImpl.java b/src/main/java/com/sczx/order/service/impl/OrderDistribServiceImpl.java
index 9d4fd5f..0143e60 100644
--- a/src/main/java/com/sczx/order/service/impl/OrderDistribServiceImpl.java
+++ b/src/main/java/com/sczx/order/service/impl/OrderDistribServiceImpl.java
@@ -5,11 +5,16 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.google.common.collect.Lists;
import com.sczx.order.common.enums.DistribTypeEnum;
+import com.sczx.order.common.enums.WalletChangeTypeEnum;
import com.sczx.order.dto.OrderDistribDTO;
import com.sczx.order.dto.OrderDistribQueryReq;
import com.sczx.order.exception.BizException;
+import com.sczx.order.po.BaseWalletChangePO;
+import com.sczx.order.po.BaseWalletPO;
import com.sczx.order.po.OrderDistribPO;
import com.sczx.order.po.OrderMainPO;
+import com.sczx.order.repository.BaseWalletChangeRepo;
+import com.sczx.order.repository.BaseWalletRepo;
import com.sczx.order.repository.OrderDistribRepo;
import com.sczx.order.repository.OrderMainRepo;
import com.sczx.order.service.OrderDistribService;
@@ -26,6 +31,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.time.LocalDate;
+import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects;
@@ -39,6 +45,12 @@ public class OrderDistribServiceImpl implements OrderDistribService {
@Autowired
private OrderMainRepo orderMainRepo;
+ @Autowired
+ private BaseWalletRepo baseWalletRepo;
+
+ @Autowired
+ private BaseWalletChangeRepo baseWalletChangeRepo;
+
@Autowired
private StoreInteg storeInteg;
@@ -66,12 +78,12 @@ public class OrderDistribServiceImpl implements OrderDistribService {
CompanyDTO companyDTO = storeInteg.getCompanyById(Integer.valueOf(orderMainPO.getOperatorId().toString()));
Integer sharingRatio = companyDTO.getSharingRatio();
- OrderDistribPO platFormDistribPO = getOrderDistribPO(orderMainPO.getOrderId(),orderMainPO.getOrderNo(),DistribTypeEnum.PLATFORM.getCode(),sharingRatio.toString(),orderMainPO.getOrderAmount(),null,null,null);
+ OrderDistribPO platFormDistribPO = getOrderDistribPO(orderMainPO.getOrderId(),orderMainPO.getOrderNo(),DistribTypeEnum.PLATFORM.getCode(),sharingRatio.toString(),orderMainPO.getOrderAmount(),Integer.valueOf(orderMainPO.getOperatorId().toString()),Integer.valueOf(orderMainPO.getStoreId().toString()),null);
addOrderDistribPOList.add(platFormDistribPO);
//门店分润
CompanyStoreDTO companyStoreDTO = storeInteg.getStoreById(Integer.valueOf(orderMainPO.getStoreId().toString()));
- OrderDistribPO storeDistribPO = getOrderDistribPO(orderMainPO.getOrderId(),orderMainPO.getOrderNo(),DistribTypeEnum.STORE.getCode(),companyStoreDTO.getZucheRatio().toString(),orderMainPO.getOrderAmount(),null,Integer.valueOf(orderMainPO.getStoreId().toString()),null);
+ OrderDistribPO storeDistribPO = getOrderDistribPO(orderMainPO.getOrderId(),orderMainPO.getOrderNo(),DistribTypeEnum.STORE.getCode(),companyStoreDTO.getZucheRatio().toString(),orderMainPO.getOrderAmount(),Integer.valueOf(orderMainPO.getOperatorId().toString()),Integer.valueOf(orderMainPO.getStoreId().toString()),null);
addOrderDistribPOList.add(storeDistribPO);
//推荐人分润
@@ -91,7 +103,7 @@ public class OrderDistribServiceImpl implements OrderDistribService {
BigDecimal alreadyShareRate = addOrderDistribPOList.stream().map(OrderDistribPO::getDistribRate).reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
//运营商分润
String companyRate = String.valueOf(BigDecimal.ONE.subtract(alreadyShareRate).multiply(BigDecimal.valueOf(100)));
- OrderDistribPO companyDistribPO = getOrderDistribPO(orderMainPO.getOrderId(),orderMainPO.getOrderNo(),DistribTypeEnum.COMPANY.getCode(),companyRate,orderMainPO.getOrderAmount(),Integer.valueOf(orderMainPO.getOperatorId().toString()),null,null);
+ OrderDistribPO companyDistribPO = getOrderDistribPO(orderMainPO.getOrderId(),orderMainPO.getOrderNo(),DistribTypeEnum.COMPANY.getCode(),companyRate,orderMainPO.getOrderAmount(),Integer.valueOf(orderMainPO.getOperatorId().toString()),Integer.valueOf(orderMainPO.getStoreId().toString()),null);
addOrderDistribPOList.add(companyDistribPO);
orderDistribRepo.saveOrUpdateBatch(addOrderDistribPOList);
@@ -99,6 +111,29 @@ public class OrderDistribServiceImpl implements OrderDistribService {
updateMainWrapper.eq(OrderMainPO::getOrderId, orderMainPO.getOrderId())
.set(OrderMainPO::getDistribed, 1);
orderMainRepo.update(updateMainWrapper);
+
+ //门店钱包入账
+ LambdaQueryWrapper queryWalletWrapper = new LambdaQueryWrapper<>();
+ queryWalletWrapper.eq(BaseWalletPO::getUserId, orderMainPO.getOperatorId()).last(" limit 1");
+ BaseWalletPO baseWalletPO = baseWalletRepo.getOne(queryWalletWrapper);
+ if(baseWalletPO != null){
+ LambdaUpdateWrapper updateWalletWrapper = new LambdaUpdateWrapper<>();
+ updateWalletWrapper.eq(BaseWalletPO::getUserId, orderMainPO.getOperatorId())
+ .set(BaseWalletPO::getBalance, baseWalletPO.getBalance().add(storeDistribPO.getDistribAmount()));
+ baseWalletRepo.update(updateWalletWrapper);
+
+ BaseWalletChangePO baseWalletChangePO = new BaseWalletChangePO();
+ baseWalletChangePO.setUserId(orderMainPO.getOperatorId());
+ baseWalletChangePO.setChangeType(WalletChangeTypeEnum.REFERRAL.getCode());
+ baseWalletChangePO.setChangeTime(LocalDateTime.now());
+ baseWalletChangePO.setChangeAmount(storeDistribPO.getDistribAmount());
+ baseWalletChangePO.setReferralOrderNo(orderMainPO.getOrderNo());
+ baseWalletChangeRepo.save(baseWalletChangePO);
+ }
+
+
+
+
}
/**
diff --git a/src/main/java/com/sczx/order/service/impl/OrderServiceImpl.java b/src/main/java/com/sczx/order/service/impl/OrderServiceImpl.java
index b085ddf..7d29076 100644
--- a/src/main/java/com/sczx/order/service/impl/OrderServiceImpl.java
+++ b/src/main/java/com/sczx/order/service/impl/OrderServiceImpl.java
@@ -176,23 +176,27 @@ public class OrderServiceImpl implements OrderService {
BigDecimal orderAmount = orderSubPOList.stream().map(OrderSubPO::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
orderMainPO.setOrderAmount(orderAmount);
- // TODO 发起支付返回预支付信息
- UnifiedPaymentInfoDTO unifiedPaymentInfoDTO = new UnifiedPaymentInfoDTO();
+ //发起支付返回预支付信息
String paymentId = OrderUtil.generateSubOrderNo(OrderUtil.ZF_PREFIX);
- //发起支付
- if(StringUtils.equalsIgnoreCase(userInfoDTO.getMiniProgramType(), MiniProgramTypeEnum.WECHAT.getType())){
- PaymentRequest paymentRequest = new PaymentRequest();
- paymentRequest.setCompanyId(Long.valueOf(companyStoreDTO.getOperatingCompanyId()));
- paymentRequest.setOutTradeNo(paymentId);
- paymentRequest.setOpenId(userInfoDTO.getWechatOpenid());
- paymentRequest.setAttach(companyStoreDTO.getOperatingCompanyId().toString());
- paymentRequest.setSpbillCreateIp("127.0.0.1");
- paymentRequest.setBody(rentCarRuleDTO.getRuleName());
-// paymentRequest.setTotalFee(orderMainPO.getOrderAmount().multiply(new BigDecimal(100)).intValue());
- paymentRequest.setTotalFee(10);
- unifiedPaymentInfoDTO = payInteg.unifiedOrder(paymentRequest);
- // TODO 其他支付类型
- }
+ UnifiedPaymentInfoDTO unifiedPaymentInfoDTO = prepayOrder(paymentType,rentCarRuleDTO.getRuleName(),Long.valueOf(companyStoreDTO.getOperatingCompanyId()),paymentId,userInfoDTO
+ ,orderMainPO.getOrderAmount());
+
+// UnifiedPaymentInfoDTO unifiedPaymentInfoDTO = new UnifiedPaymentInfoDTO();
+//
+// //发起支付
+// if(StringUtils.equalsIgnoreCase(userInfoDTO.getMiniProgramType(), MiniProgramTypeEnum.WECHAT.getType())){
+// PaymentRequest paymentRequest = new PaymentRequest();
+// paymentRequest.setCompanyId(Long.valueOf(companyStoreDTO.getOperatingCompanyId()));
+// paymentRequest.setOutTradeNo(paymentId);
+// paymentRequest.setOpenId(userInfoDTO.getWechatOpenid());
+// paymentRequest.setAttach(companyStoreDTO.getOperatingCompanyId().toString());
+// paymentRequest.setSpbillCreateIp("127.0.0.1");
+// paymentRequest.setBody(rentCarRuleDTO.getRuleName());
+//// paymentRequest.setTotalFee(orderMainPO.getOrderAmount().multiply(new BigDecimal(100)).intValue());
+// paymentRequest.setTotalFee(10);
+// unifiedPaymentInfoDTO = payInteg.unifiedOrder(paymentRequest);
+// // TODO 其他支付类型
+// }
for(OrderSubPO orderSubPO : orderSubPOList){
orderSubPO.setPaymentId(paymentId);
@@ -265,24 +269,6 @@ public class OrderServiceImpl implements OrderService {
paymentType = PaymentTypeEnum.ZFB_PAY.getCode();
}
}
- //生成租车订单
-// BigDecimal rentCarOrderAmount = getRentCarAmount(orderMainPO.getRentalType(), orderMainPO.getRentalPrice(), orderMainPO.getRentalDays());
-
- //计算续租金额
-// BigDecimal rentCarOrderAmount = new BigDecimal(0);
-// if(RentCarTypeEnum.HOUR_RENTAL.getCode().equalsIgnoreCase(orderMainPO.getRentalType())){
-// Integer overdueHours = OrderUtil.getOrderOverdueHours(orderMainPO.getEndRentTime());
-// rentCarOrderAmount = rentCarOrderAmount.add(orderMainPO.getRentalPrice().multiply(new BigDecimal(overdueHours+1)));
-// } else if(RentCarTypeEnum.DAILY_RENTAL.getCode().equalsIgnoreCase(orderMainPO.getRentalType())){
-// Integer rentalDays = OrderUtil.getOrderExpectedDays(orderMainPO.getEndRentTime());
-// rentCarOrderAmount = rentCarOrderAmount.add(orderMainPO.getRentalPrice().multiply(new BigDecimal(rentalDays+1)));
-// } else if(RentCarTypeEnum.DAYS_RENTAL.getCode().equalsIgnoreCase(orderMainPO.getRentalType())){
-// Integer rentalDays = OrderUtil.getOrderExpectedDays(orderMainPO.getEndRentTime());
-// rentCarOrderAmount = rentCarOrderAmount.add(orderMainPO.getRentalPrice().multiply(new BigDecimal(rentalDays+orderMainPO.getRentalDays())));
-// } else {
-// Integer rentalDays = OrderUtil.getOrderExpectedDays(orderMainPO.getEndRentTime());
-// rentCarOrderAmount = rentCarOrderAmount.add(orderMainPO.getRentalPrice().multiply(new BigDecimal(rentalDays+30)));
-// }
BigDecimal rentCarOrderAmount = getReRentCarAmount(orderMainPO.getEndRentTime(), orderMainPO.getRentalType(), orderMainPO.getRentalPrice(), orderMainPO.getRentalDays());
@@ -298,23 +284,25 @@ public class OrderServiceImpl implements OrderService {
rentOrder.setPayStatus(PayStatusEnum.USERPAYING.getCode());
// 起支付返回预支付信息
- UnifiedPaymentInfoDTO unifiedPaymentInfoDTO = null;
+ RentCarRuleDTO rentCarRuleDTO = carInteg.getRentCarRuleByCarRuleId(orderMainPO.getRentCarRuleId());
+ UnifiedPaymentInfoDTO unifiedPaymentInfoDTO = prepayOrder(paymentType,rentCarRuleDTO.getRuleName(),orderMainPO.getOperatorId(),rentOrder.getPaymentId(),userInfoDTO
+ ,rentCarOrderAmount);
- //发起支付
- if(StringUtils.equalsIgnoreCase(userInfoDTO.getMiniProgramType(), MiniProgramTypeEnum.WECHAT.getType())){
- RentCarRuleDTO rentCarRuleDTO = carInteg.getRentCarRuleByCarRuleId(orderMainPO.getRentCarRuleId());
- PaymentRequest paymentRequest = new PaymentRequest();
- paymentRequest.setCompanyId(orderMainPO.getOperatorId());
- paymentRequest.setOutTradeNo(rentOrder.getPaymentId());
- paymentRequest.setOpenId(userInfoDTO.getWechatOpenid());
- paymentRequest.setAttach(orderMainPO.getOperatorId().toString());
- paymentRequest.setSpbillCreateIp("127.0.0.1");
- paymentRequest.setBody(rentCarRuleDTO.getRuleName());
-// paymentRequest.setTotalFee(rentCarOrderAmount.multiply(new BigDecimal(100)).intValue());
- paymentRequest.setTotalFee(10);
- unifiedPaymentInfoDTO = payInteg.unifiedOrder(paymentRequest);
- // TODO 其他支付类型
- }
+// //发起支付
+// if(StringUtils.equalsIgnoreCase(userInfoDTO.getMiniProgramType(), MiniProgramTypeEnum.WECHAT.getType())){
+//
+// PaymentRequest paymentRequest = new PaymentRequest();
+// paymentRequest.setCompanyId(orderMainPO.getOperatorId());
+// paymentRequest.setOutTradeNo(rentOrder.getPaymentId());
+// paymentRequest.setOpenId(userInfoDTO.getWechatOpenid());
+// paymentRequest.setAttach(orderMainPO.getOperatorId().toString());
+// paymentRequest.setSpbillCreateIp("127.0.0.1");
+// paymentRequest.setBody(rentCarRuleDTO.getRuleName());
+//// paymentRequest.setTotalFee(rentCarOrderAmount.multiply(new BigDecimal(100)).intValue());
+// paymentRequest.setTotalFee(10);
+// unifiedPaymentInfoDTO = payInteg.unifiedOrder(paymentRequest);
+// // TODO 其他支付类型
+// }
orderSubRepo.save(rentOrder);
@@ -369,29 +357,30 @@ public class OrderServiceImpl implements OrderService {
if(orderSubPOList.isEmpty()){
throw new InnerException("待支付子订单不存在");
}
- //获取门店信息
- CompanyStoreDTO companyStoreDTO = storeInteg.getStoreById(Integer.valueOf(orderMainPO.getStoreId().toString()));
- RentCarRuleDTO rentCarRuleDTO = carInteg.getRentCarRuleByCarRuleId(orderMainPO.getRentCarRuleId());
SimpleUserInfoDTO userInfoDTO = jwtUtil.getUserInfoFromToken();
OrderSubPO orderSubPO = orderSubPOList.get(0);
- UnifiedPaymentInfoDTO unifiedPaymentInfoDTO = null;
- //发起支付
- if(StringUtils.equalsIgnoreCase(orderSubPO.getPaymentMethod(), PaymentTypeEnum.WX_PAY.getCode())){
- PaymentRequest paymentRequest = new PaymentRequest();
- paymentRequest.setCompanyId(Long.valueOf(companyStoreDTO.getOperatingCompanyId()));
- paymentRequest.setOutTradeNo(orderSubPO.getPaymentId());
- paymentRequest.setOpenId(userInfoDTO.getWechatOpenid());
- paymentRequest.setAttach(companyStoreDTO.getOperatingCompanyId().toString());
- paymentRequest.setSpbillCreateIp("127.0.0.1");
- paymentRequest.setBody(rentCarRuleDTO.getRuleName());
-// BigDecimal orderAmount = orderSubPOList.stream().map(OrderSubPO::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-// paymentRequest.setTotalFee(orderAmount.multiply(new BigDecimal(100)).intValue());
- paymentRequest.setTotalFee(10);
- unifiedPaymentInfoDTO = payInteg.unifiedOrder(paymentRequest);
- // TODO 其他支付类型
- }
- return unifiedPaymentInfoDTO;
+
+ RentCarRuleDTO rentCarRuleDTO = carInteg.getRentCarRuleByCarRuleId(orderMainPO.getRentCarRuleId());
+ BigDecimal orderAmount = orderSubPOList.stream().map(OrderSubPO::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+ // 起支付返回预支付信息
+ // //发起支付
+// if(StringUtils.equalsIgnoreCase(orderSubPO.getPaymentMethod(), PaymentTypeEnum.WX_PAY.getCode())){
+// PaymentRequest paymentRequest = new PaymentRequest();
+// paymentRequest.setCompanyId(Long.valueOf(companyStoreDTO.getOperatingCompanyId()));
+// paymentRequest.setOutTradeNo(orderSubPO.getPaymentId());
+// paymentRequest.setOpenId(userInfoDTO.getWechatOpenid());
+// paymentRequest.setAttach(companyStoreDTO.getOperatingCompanyId().toString());
+// paymentRequest.setSpbillCreateIp("127.0.0.1");
+// paymentRequest.setBody(rentCarRuleDTO.getRuleName());
+//// BigDecimal orderAmount = orderSubPOList.stream().map(OrderSubPO::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+//// paymentRequest.setTotalFee(orderAmount.multiply(new BigDecimal(100)).intValue());
+// paymentRequest.setTotalFee(10);
+// unifiedPaymentInfoDTO = payInteg.unifiedOrder(paymentRequest);
+// // TODO 其他支付类型
+// }
+ return prepayOrder(orderSubPO.getPaymentMethod(),rentCarRuleDTO.getRuleName(),orderMainPO.getOperatorId(),orderSubPO.getPaymentId(),userInfoDTO
+ ,orderAmount);
}
@Override
@@ -484,23 +473,25 @@ public class OrderServiceImpl implements OrderService {
rentOrder.setPayStatus(PayStatusEnum.USERPAYING.getCode());
rentOrder.setPaymentMethod(paymentType);
// 发起支付返回预支付信息
- UnifiedPaymentInfoDTO unifiedPaymentInfoDTO = null;
+ RentCarRuleDTO rentCarRuleDTO = carInteg.getRentCarRuleByCarRuleId(orderMainPO.getRentCarRuleId());
+ UnifiedPaymentInfoDTO unifiedPaymentInfoDTO = prepayOrder(paymentType,rentCarRuleDTO.getRuleName(),orderMainPO.getOperatorId(),rentOrder.getPaymentId(),userInfoDTO
+ ,overDueAmount);
- //发起支付
- if(StringUtils.equalsIgnoreCase(userInfoDTO.getMiniProgramType(), MiniProgramTypeEnum.WECHAT.getType())){
- RentCarRuleDTO rentCarRuleDTO = carInteg.getRentCarRuleByCarRuleId(orderMainPO.getRentCarRuleId());
- PaymentRequest paymentRequest = new PaymentRequest();
- paymentRequest.setCompanyId(orderMainPO.getOperatorId());
- paymentRequest.setOutTradeNo(rentOrder.getPaymentId());
- paymentRequest.setOpenId(userInfoDTO.getWechatOpenid());
- paymentRequest.setAttach(orderMainPO.getOperatorId().toString());
- paymentRequest.setSpbillCreateIp("127.0.0.1");
- paymentRequest.setBody(rentCarRuleDTO.getRuleName());
-// paymentRequest.setTotalFee(overDueAmount.multiply(new BigDecimal(100)).intValue());
- paymentRequest.setTotalFee(10);
- unifiedPaymentInfoDTO = payInteg.unifiedOrder(paymentRequest);
- // TODO 其他支付类型
- }
+// //发起支付
+// if(StringUtils.equalsIgnoreCase(userInfoDTO.getMiniProgramType(), MiniProgramTypeEnum.WECHAT.getType())){
+// RentCarRuleDTO rentCarRuleDTO = carInteg.getRentCarRuleByCarRuleId(orderMainPO.getRentCarRuleId());
+// PaymentRequest paymentRequest = new PaymentRequest();
+// paymentRequest.setCompanyId(orderMainPO.getOperatorId());
+// paymentRequest.setOutTradeNo(rentOrder.getPaymentId());
+// paymentRequest.setOpenId(userInfoDTO.getWechatOpenid());
+// paymentRequest.setAttach(orderMainPO.getOperatorId().toString());
+// paymentRequest.setSpbillCreateIp("127.0.0.1");
+// paymentRequest.setBody(rentCarRuleDTO.getRuleName());
+//// paymentRequest.setTotalFee(overDueAmount.multiply(new BigDecimal(100)).intValue());
+// paymentRequest.setTotalFee(10);
+// unifiedPaymentInfoDTO = payInteg.unifiedOrder(paymentRequest);
+// // TODO 其他支付类型
+// }
orderSubRepo.save(rentOrder);
@@ -874,6 +865,39 @@ public class OrderServiceImpl implements OrderService {
return orderMainRepo.pageQueryRentBatteyOrder(pageNo, pageSize, orderQueryReq.getCustomerId(), orderQueryReq.getStoreId(), orderStatusList, orderQueryReq.getQueryBrandName());
}
+ /**
+ * 预支付下单
+ * @param payType
+ * @param body
+ * @param companyId
+ * @param outTradeNo
+ * @param userInfoDTO
+ * @param totalFee
+ * @return
+ */
+ private UnifiedPaymentInfoDTO prepayOrder(String payType,String body,Long companyId,String outTradeNo,SimpleUserInfoDTO userInfoDTO,BigDecimal totalFee){
+ // 发起支付返回预支付信息
+ UnifiedPaymentInfoDTO unifiedPaymentInfoDTO = null;
+
+ //发起支付
+ if(StringUtils.equalsIgnoreCase(payType, PaymentTypeEnum.WX_PAY.getCode())){
+ String openId = userInfoDTO.getWechatOpenid();
+ PaymentRequest paymentRequest = new PaymentRequest();
+ paymentRequest.setCompanyId(companyId);
+ paymentRequest.setOutTradeNo(outTradeNo);
+ paymentRequest.setOpenId(openId);
+ paymentRequest.setAttach(companyId.toString());
+ paymentRequest.setSpbillCreateIp("127.0.0.1");
+ paymentRequest.setBody(body);
+// paymentRequest.setTotalFee(totalFee.multiply(new BigDecimal(100)).intValue());
+ paymentRequest.setTotalFee(10);
+ unifiedPaymentInfoDTO = payInteg.unifiedOrder(paymentRequest);
+ // TODO 其他支付类型
+ }
+ return unifiedPaymentInfoDTO;
+ }
+
+
/**
* 支付成功更新订单状态
* @param orderMainPO
diff --git a/src/main/resources/mapper/BaseWalletChangeMapper.xml b/src/main/resources/mapper/BaseWalletChangeMapper.xml
new file mode 100644
index 0000000..82debf8
--- /dev/null
+++ b/src/main/resources/mapper/BaseWalletChangeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/main/resources/mapper/BaseWalletMapper.xml b/src/main/resources/mapper/BaseWalletMapper.xml
new file mode 100644
index 0000000..249c9a3
--- /dev/null
+++ b/src/main/resources/mapper/BaseWalletMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+