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 @@ + + + + +