From 16c60b7e3b834b05599882ab1ffe99ec78664762 Mon Sep 17 00:00:00 2001
From: tj <1378534974@qq.com>
Date: 星期二, 01 四月 2025 15:22:26 +0800
Subject: [PATCH] 1.支付订单
---
src/main/java/com/mzl/flower/enums/alipay/AlipayResultEnum.java | 23 ++
src/main/java/com/mzl/flower/component/SequenceNo.java | 3
src/main/java/com/mzl/flower/entity/productOrders/ProductOrdersDO.java | 69 ++++++
src/main/java/com/mzl/flower/enums/PayTypeEnum.java | 21 ++
src/main/java/com/mzl/flower/service/productOrders/ProductOrdersService.java | 27 ++
src/main/java/com/mzl/flower/service/impl/productOrders/ProductOrdersServiceImpl.java | 170 +++++++++++++++++
src/main/java/com/mzl/flower/web/v2/pay/AlipayController.java | 38 ++-
src/main/java/com/mzl/flower/dto/request/productOrders/ProductOrdersCreateDTO.java | 52 +++++
src/main/java/com/mzl/flower/service/customer/CustomerService.java | 12 +
src/main/java/com/mzl/flower/enums/ProductTypeEnum.java | 22 ++
src/main/java/com/mzl/flower/enums/PayStatusEnum.java | 23 ++
src/main/java/com/mzl/flower/web/v2/ProductOrdersController.java | 24 ++
src/main/resources/mapper/productOrders/ProductOrdersMapper.xml | 27 ++
src/main/java/com/mzl/flower/utils/DateUtils.java | 9
src/main/java/com/mzl/flower/config/PyamentV3Configurer.java | 2
src/main/java/com/mzl/flower/mapper/productOrders/ProductOrdersMapper.java | 16 +
src/main/java/com/mzl/flower/entity/customer/Customer.java | 7
17 files changed, 531 insertions(+), 14 deletions(-)
diff --git a/src/main/java/com/mzl/flower/component/SequenceNo.java b/src/main/java/com/mzl/flower/component/SequenceNo.java
index 76ce4cb..71864a7 100644
--- a/src/main/java/com/mzl/flower/component/SequenceNo.java
+++ b/src/main/java/com/mzl/flower/component/SequenceNo.java
@@ -22,6 +22,9 @@
public static final String ORDER_SETTLEMENT = "order_settlement";//结算单
+ public static final String ORDER_PRODUCT = "order_product";//订单
+
+
public String getSeqNo(String code){
try{
List<Object> parameterList = new ArrayList<>();
diff --git a/src/main/java/com/mzl/flower/config/PyamentV3Configurer.java b/src/main/java/com/mzl/flower/config/PyamentV3Configurer.java
index c138d66..5f52e64 100644
--- a/src/main/java/com/mzl/flower/config/PyamentV3Configurer.java
+++ b/src/main/java/com/mzl/flower/config/PyamentV3Configurer.java
@@ -21,7 +21,7 @@
/** 商户API私钥路径 */
//public static String privateKeyPath = "/opt/pay/wx/v3/apiclient_key.pem";
- public static String privateKeyPath = "E://huamanyuan/apiclient_key.pem";
+ public static String privateKeyPath = "D://apiclient_key.pem";
/** 商户证书序列号 */
public static String merchantSerialNumber = "37A08A552943EF34883614DBC8DE281598148757";
diff --git a/src/main/java/com/mzl/flower/dto/request/productOrders/ProductOrdersCreateDTO.java b/src/main/java/com/mzl/flower/dto/request/productOrders/ProductOrdersCreateDTO.java
new file mode 100644
index 0000000..2a3f370
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/request/productOrders/ProductOrdersCreateDTO.java
@@ -0,0 +1,52 @@
+package com.mzl.flower.dto.request.productOrders;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class ProductOrdersCreateDTO {
+ /**
+ * 订单名称
+ */
+ @ApiModelProperty(value = "订单名称")
+ @NotEmpty(message = "订单名称不能为空")
+ private String orderName;
+
+ /**
+ * 订单类型(连续包月、年卡等)
+ */
+ @ApiModelProperty(value = "订单类型")
+ @NotEmpty(message = "订单类型不能为空")
+ private String orderType;
+
+ /**
+ * 原价
+ */
+ @ApiModelProperty(value = "原价")
+ @NotNull(message = "原价不能为空")
+ private BigDecimal originalPrice;
+
+ /**
+ * 现价_订单金额
+ */
+ @ApiModelProperty(value = "现价")
+ @NotNull(message = "现价不能为空")
+ private BigDecimal currentPrice;
+
+ /**
+ * 支付方式(支付宝alipay、微信wechat等)
+ */
+// @ApiModelProperty(value = "支付方式")
+// @NotEmpty(message = "支付方式不能为空")
+// private String paymentMethod;
+
+}
diff --git a/src/main/java/com/mzl/flower/entity/customer/Customer.java b/src/main/java/com/mzl/flower/entity/customer/Customer.java
index a62cb78..e59773e 100644
--- a/src/main/java/com/mzl/flower/entity/customer/Customer.java
+++ b/src/main/java/com/mzl/flower/entity/customer/Customer.java
@@ -6,6 +6,8 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+import java.time.LocalDateTime;
+
@Data
@TableName("t_customer_info")
@@ -45,4 +47,9 @@
private Boolean isEnabled;
@ApiModelProperty("等级id")
private Long levelId;
+
+ @ApiModelProperty("会员到期时间")
+ private LocalDateTime memberOvertime;
+ @ApiModelProperty("是否会员")
+ private Boolean isMember;
}
diff --git a/src/main/java/com/mzl/flower/entity/productOrders/ProductOrdersDO.java b/src/main/java/com/mzl/flower/entity/productOrders/ProductOrdersDO.java
new file mode 100644
index 0000000..08e67d5
--- /dev/null
+++ b/src/main/java/com/mzl/flower/entity/productOrders/ProductOrdersDO.java
@@ -0,0 +1,69 @@
+package com.mzl.flower.entity.productOrders;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.time.LocalDateTime;
+import com.mzl.flower.base.BaseEntity;
+import com.mzl.flower.base.BaseNoIdEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @author generator@TaoJie
+ * @since 2025-03-31
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@TableName("t_product_orders")
+public class ProductOrdersDO extends BaseEntity {
+
+
+ /**
+ * 用户id
+ */
+ private String userId;
+
+ /**
+ * 订单编号(唯一编号)
+ */
+ private String orderNo;
+
+ /**
+ * 订单名称
+ */
+ private String orderName;
+
+ /**
+ * 订单类型(连续包月、年卡等)
+ */
+ private String orderType;
+
+ /**
+ * 原价
+ */
+ private BigDecimal originalPrice;
+
+ /**
+ * 现价_订单金额
+ */
+ private BigDecimal currentPrice;
+
+ /**
+ * 支付方式(支付宝alipay、微信wechat等)
+ */
+ private String paymentMethod;
+
+ /**
+ * 订单状态(待支付paying、已支付paid 、取消cancel等)
+ */
+ private String paymentStatus;
+
+ /**
+ * 支付时间
+ */
+ private LocalDateTime paymentTime;
+
+
+}
diff --git a/src/main/java/com/mzl/flower/enums/PayStatusEnum.java b/src/main/java/com/mzl/flower/enums/PayStatusEnum.java
new file mode 100644
index 0000000..6e52c48
--- /dev/null
+++ b/src/main/java/com/mzl/flower/enums/PayStatusEnum.java
@@ -0,0 +1,23 @@
+package com.mzl.flower.enums;
+
+import lombok.Getter;
+
+public enum PayStatusEnum {
+
+ PAYING("PAYING","待支付"),
+ PAID("PAID","已支付"),
+ CANCEL("CANCEL","取消"),
+ FINISHED("FINISHED","完成"),
+
+ ;
+
+ @Getter
+ private String name;
+
+ private String desc;
+ private PayStatusEnum(String name, String desc){
+ this.name=name;
+ this.desc=desc;
+ }
+
+}
diff --git a/src/main/java/com/mzl/flower/enums/PayTypeEnum.java b/src/main/java/com/mzl/flower/enums/PayTypeEnum.java
new file mode 100644
index 0000000..c0eeb1a
--- /dev/null
+++ b/src/main/java/com/mzl/flower/enums/PayTypeEnum.java
@@ -0,0 +1,21 @@
+package com.mzl.flower.enums;
+
+import lombok.Getter;
+
+public enum PayTypeEnum {
+
+ ALIPAY("alipay","支付宝"),
+ WECHAT("wechat","微信"),
+
+ ;
+
+ @Getter
+ private String name;
+
+ private String desc;
+ private PayTypeEnum(String name, String desc){
+ this.name=name;
+ this.desc=desc;
+ }
+
+}
diff --git a/src/main/java/com/mzl/flower/enums/ProductTypeEnum.java b/src/main/java/com/mzl/flower/enums/ProductTypeEnum.java
new file mode 100644
index 0000000..d734f64
--- /dev/null
+++ b/src/main/java/com/mzl/flower/enums/ProductTypeEnum.java
@@ -0,0 +1,22 @@
+package com.mzl.flower.enums;
+
+import lombok.Getter;
+
+public enum ProductTypeEnum {
+
+ MONTH_CONTINUED("连续包月","连续包月"),
+ YEAR("年卡","年卡"),
+ MONTH("月卡","月卡")
+
+ ;
+
+ @Getter
+ private String name;
+
+ private String desc;
+ private ProductTypeEnum(String name, String desc){
+ this.name=name;
+ this.desc=desc;
+ }
+
+}
diff --git a/src/main/java/com/mzl/flower/enums/alipay/AlipayResultEnum.java b/src/main/java/com/mzl/flower/enums/alipay/AlipayResultEnum.java
new file mode 100644
index 0000000..71a1dad
--- /dev/null
+++ b/src/main/java/com/mzl/flower/enums/alipay/AlipayResultEnum.java
@@ -0,0 +1,23 @@
+package com.mzl.flower.enums.alipay;
+
+import lombok.Getter;
+
+public enum AlipayResultEnum {
+
+ WAIT_BUYER_PAY("WAIT_BUYER_PAY","交易创建,等待买家付款。"),
+ TRADE_CLOSED("TRADE_CLOSED","未付款交易超时关闭,或支付完成后全额退款。"),
+ TRADE_SUCCESS("TRADE_SUCCESS","交易支付成功。"),
+ TRADE_FINISHED("TRADE_FINISHED","交易结束,不可退款。"),
+
+ ;
+
+ @Getter
+ private String name;
+
+ private String desc;
+ private AlipayResultEnum(String name, String desc){
+ this.name=name;
+ this.desc=desc;
+ }
+
+}
diff --git a/src/main/java/com/mzl/flower/mapper/productOrders/ProductOrdersMapper.java b/src/main/java/com/mzl/flower/mapper/productOrders/ProductOrdersMapper.java
new file mode 100644
index 0000000..13465cd
--- /dev/null
+++ b/src/main/java/com/mzl/flower/mapper/productOrders/ProductOrdersMapper.java
@@ -0,0 +1,16 @@
+package com.mzl.flower.mapper.productOrders;
+
+import com.mzl.flower.entity.productOrders.ProductOrdersDO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * Mapper 接口
+ * </p>
+ *
+ * @author generator@TaoJie
+ * @since 2025-03-31
+ */
+public interface ProductOrdersMapper extends BaseMapper<ProductOrdersDO> {
+
+}
diff --git a/src/main/java/com/mzl/flower/service/customer/CustomerService.java b/src/main/java/com/mzl/flower/service/customer/CustomerService.java
index 3c04fc6..1c9ae43 100644
--- a/src/main/java/com/mzl/flower/service/customer/CustomerService.java
+++ b/src/main/java/com/mzl/flower/service/customer/CustomerService.java
@@ -26,6 +26,7 @@
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import javax.annotation.Resource;
@@ -264,4 +265,15 @@
customerByPhone.setContactTel(phone);
return customerByPhone;
}
+ public Customer getByUserId(String userId) {
+ List<Customer> customers = customerMapper.selectList(new LambdaQueryWrapper<Customer>().eq(Customer::getUserId, userId).eq(Customer::getDeleted, TrueOrFalseEnum.FALSE.isFlag()));
+ if(!CollectionUtils.isEmpty(customers)){
+ return customers.get(0);
+ }
+ return null;
+ }
+
+ public void updateMemberInfo(Customer customer) {
+ customerMapper.updateById(customer);
+ }
}
diff --git a/src/main/java/com/mzl/flower/service/impl/productOrders/ProductOrdersServiceImpl.java b/src/main/java/com/mzl/flower/service/impl/productOrders/ProductOrdersServiceImpl.java
new file mode 100644
index 0000000..900be8d
--- /dev/null
+++ b/src/main/java/com/mzl/flower/service/impl/productOrders/ProductOrdersServiceImpl.java
@@ -0,0 +1,170 @@
+package com.mzl.flower.service.impl.productOrders;
+
+import cn.hutool.core.util.IdUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.mzl.flower.component.SequenceNo;
+import com.mzl.flower.config.security.SecurityUtils;
+import com.mzl.flower.dto.request.productOrders.ProductOrdersCreateDTO;
+import com.mzl.flower.entity.customer.Customer;
+import com.mzl.flower.entity.productOrders.ProductOrdersDO;
+import com.mzl.flower.enums.PayStatusEnum;
+import com.mzl.flower.enums.ProductTypeEnum;
+import com.mzl.flower.enums.alipay.AlipayResultEnum;
+import com.mzl.flower.mapper.productOrders.ProductOrdersMapper;
+import com.mzl.flower.service.customer.CustomerService;
+import com.mzl.flower.service.productOrders.ProductOrdersService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mzl.flower.utils.DateUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
+
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 服务实现类
+ * </p>
+ *
+ * @author generator@TaoJie
+ * @since 2025-03-31
+ */
+@Service
+public class ProductOrdersServiceImpl extends ServiceImpl<ProductOrdersMapper, ProductOrdersDO> implements ProductOrdersService {
+
+ @Autowired
+ private ProductOrdersMapper productOrdersMapper;
+
+ @Autowired
+ private SequenceNo sequenceNo;
+
+ @Autowired
+ private CustomerService customerService;
+
+
+ @Transactional
+ @Override
+ public ProductOrdersDO createProductOrders(ProductOrdersDO productOrdersDO) {
+
+ String userId = SecurityUtils.getUserId();
+
+// ProductOrdersDO productOrdersDO = new ProductOrdersDO();
+
+ productOrdersDO.setId(IdUtil.simpleUUID());
+
+ productOrdersDO.setUserId(userId);
+
+ // 待支付
+ productOrdersDO.setPaymentStatus(PayStatusEnum.PAYING.getName());
+
+
+ productOrdersDO.setOrderNo(getSalesNo());
+
+
+ productOrdersDO.create(userId);
+
+
+ int insert = productOrdersMapper.insert(productOrdersDO);
+
+ return productOrdersMapper.selectById(productOrdersDO.getId());
+ }
+
+ @Transactional
+ @Override
+ public Boolean updateProductOrderStatus(Map<String, String> params) {
+ String orderNo = params.get("out_trade_no"); // 本系统对应的订单好
+ String tradeNo = params.get("trade_no"); //支付宝交易号。支付宝交易凭证号。
+ String tradeStatus = params.get("trade_status"); //交易状态。咨询目前所处的状态。
+ String gmtPayment = params.get("gmt_payment"); // 交易 付款时间。该笔交易的买家付款时间。格式为 yyyy-MM-dd HH:mm:ss。
+ String gmtRefund = params.get("gmt_refund"); // 交易退款时间。该笔交易的退款时间。格式 为 yyyy-MM-dd HH:mm:ss.SS。
+ String gmtClose = params.get("gmt_close"); // 交易退款时间。该笔交易的退款时间。格式 为 yyyy-MM-dd HH:mm:ss.SS。
+
+
+ // 根据orderNo 查找订单
+ QueryWrapper<ProductOrdersDO> queryWrapper = new QueryWrapper<>();
+ queryWrapper.lambda().eq(ProductOrdersDO::getDeleted, false)
+ .eq(ProductOrdersDO::getOrderNo, orderNo);
+ List<ProductOrdersDO> productOrdersDOS = productOrdersMapper.selectList(queryWrapper);
+ if(!CollectionUtils.isEmpty(productOrdersDOS)){
+
+ ProductOrdersDO productOrdersDO = productOrdersDOS.get(0);
+
+ if(tradeStatus.equals(AlipayResultEnum.TRADE_CLOSED.getName())){
+ // 未付款交易超时关闭,或支付完成后全额退款
+ productOrdersDO.setPaymentStatus(PayStatusEnum.CANCEL.getName());
+ }
+ if(tradeStatus.equals(AlipayResultEnum.TRADE_SUCCESS.getName())){
+ // 交易支付成功
+ productOrdersDO.setPaymentStatus(PayStatusEnum.PAID.getName());
+ }
+ if(tradeStatus.equals(AlipayResultEnum.TRADE_FINISHED.getName())){
+ // 交易完成(交易结束,不可退款)
+ productOrdersDO.setPaymentStatus(PayStatusEnum.FINISHED.getName());
+ }
+ // 将yyyy-MM-dd HH:mm:ss转换成LocalDateTime
+ if(gmtPayment != null){
+ productOrdersDO.setPaymentTime(DateUtils.dateTimeStringToLocalDateTime(gmtPayment));
+ }
+
+
+ // 更新用户到期时间
+ if(!StringUtils.isEmpty(productOrdersDO.getUserId())){
+ Customer customer = customerService.getByUserId(productOrdersDO.getUserId());
+ if(customer != null){
+ LocalDateTime overTime = null;
+ // 根据年卡,月卡、月卡持续计算到期时间
+ if(productOrdersDO.getOrderType().equals(ProductTypeEnum.MONTH_CONTINUED.getName())){
+ if(null!=customer.getMemberOvertime()){
+ // 在当前时间上增加一个月
+ overTime = customer.getMemberOvertime().plusMonths(1);
+ }else{
+ // 当前时间上增加一个月
+ overTime =LocalDateTime.now().plusMonths(1);
+ }
+ }
+ if(productOrdersDO.getOrderType().equals(ProductTypeEnum.MONTH.getName())){
+ if(null!=customer.getMemberOvertime()){
+ // 在当前时间上增加一个月
+ overTime = customer.getMemberOvertime().plusMonths(1);
+ }else{
+ // 当前时间上增加一个月
+ overTime =LocalDateTime.now().plusMonths(1);
+ }
+ }
+ if(productOrdersDO.getOrderType().equals(ProductTypeEnum.YEAR.getName())){
+ if(null!=customer.getMemberOvertime()){
+ // 在当前时间上增加一个月
+ overTime = customer.getMemberOvertime().plusYears(1);
+ }else{
+ // 当前时间上增加一个月
+ overTime = customer.getMemberOvertime().plusYears(1);
+ }
+
+ }
+ // 设置过期时间
+ customer.setMemberOvertime(overTime);
+ customer.setIsMember(true); // 会员
+ }
+
+ // 更新会员信息
+ customerService.updateMemberInfo(customer);
+ }
+
+
+ return productOrdersMapper.updateById(productOrdersDO)>0;
+
+ }
+
+ return false;
+ }
+
+ private String getSalesNo(){
+ String seq = sequenceNo.getSeqNo(SequenceNo.ORDER_PRODUCT);
+ return "PO" + DateUtils.format(LocalDateTime.now(), "yyyyMMddHHmmss") + seq;
+ }
+}
diff --git a/src/main/java/com/mzl/flower/service/productOrders/ProductOrdersService.java b/src/main/java/com/mzl/flower/service/productOrders/ProductOrdersService.java
new file mode 100644
index 0000000..86b8c3e
--- /dev/null
+++ b/src/main/java/com/mzl/flower/service/productOrders/ProductOrdersService.java
@@ -0,0 +1,27 @@
+package com.mzl.flower.service.productOrders;
+
+import com.mzl.flower.dto.request.productOrders.ProductOrdersCreateDTO;
+import com.mzl.flower.entity.productOrders.ProductOrdersDO;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 服务类
+ * </p>
+ *
+ * @author generator@TaoJie
+ * @since 2025-03-31
+ */
+public interface ProductOrdersService extends IService<ProductOrdersDO> {
+
+ /**
+ * 创建订单
+ * @param productOrdersDO
+ * @return
+ */
+ ProductOrdersDO createProductOrders(ProductOrdersDO productOrdersDO);
+
+ Boolean updateProductOrderStatus(Map<String, String> params);
+}
diff --git a/src/main/java/com/mzl/flower/utils/DateUtils.java b/src/main/java/com/mzl/flower/utils/DateUtils.java
index 9970c68..1ea90d5 100644
--- a/src/main/java/com/mzl/flower/utils/DateUtils.java
+++ b/src/main/java/com/mzl/flower/utils/DateUtils.java
@@ -4,6 +4,7 @@
import java.time.LocalDate;
import java.time.LocalDateTime;
+import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
@@ -113,6 +114,14 @@
}
+ public static String format(LocalDateTime dateTime, String format) {
+ if (dateTime == null || format == null) {
+ return null;
+ }
+ DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(format).withZone(ZoneId.of("Asia/Shanghai"));
+ return dateTimeFormatter.format(dateTime);
+ }
+
public static void main(String[] args) {
// 定义日期时间字符串
diff --git a/src/main/java/com/mzl/flower/web/v2/ProductOrdersController.java b/src/main/java/com/mzl/flower/web/v2/ProductOrdersController.java
new file mode 100644
index 0000000..8cbb8d5
--- /dev/null
+++ b/src/main/java/com/mzl/flower/web/v2/ProductOrdersController.java
@@ -0,0 +1,24 @@
+package com.mzl.flower.web.v2;
+
+
+import com.mzl.flower.base.BaseController;
+import com.mzl.flower.service.productOrders.ProductOrdersService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+* @author generator@TaoJie
+* @since 2025-03-31
+*/
+@RestController
+@RequestMapping("/v1/product-orders")
+public class ProductOrdersController extends BaseController {
+
+ @Autowired
+ private ProductOrdersService productOrdersService;
+
+
+
+
+}
diff --git a/src/main/java/com/mzl/flower/web/v2/pay/AlipayController.java b/src/main/java/com/mzl/flower/web/v2/pay/AlipayController.java
index d4b73a0..7dbab6b 100644
--- a/src/main/java/com/mzl/flower/web/v2/pay/AlipayController.java
+++ b/src/main/java/com/mzl/flower/web/v2/pay/AlipayController.java
@@ -10,13 +10,19 @@
import com.mzl.flower.base.BaseController;
import com.mzl.flower.base.R;
import com.mzl.flower.config.pay.AlipayProperties;
+import com.mzl.flower.dto.request.productOrders.ProductOrdersCreateDTO;
+import com.mzl.flower.entity.productOrders.ProductOrdersDO;
+import com.mzl.flower.enums.PayTypeEnum;
+import com.mzl.flower.service.productOrders.ProductOrdersService;
import com.mzl.flower.utils.alipay.OrderInfoUtil2_0;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
+import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
@@ -38,33 +44,36 @@
@Autowired
AlipayClient alipayClient;
+ @Autowired
+ private ProductOrdersService productOrdersService;
+
/**
* 获取订单支付请求参数
* @param
* @return
* @throws Exception
*/
- @GetMapping(value = "/pay-order-info")
+ @PostMapping(value = "/pay-order-info")
@ApiOperation(value = "获取订单支付请求参数")
- public ResponseEntity getPayOrderInfo() throws Exception {
+ public ResponseEntity getPayOrderInfo(@Validated @RequestBody ProductOrdersCreateDTO productOrdersCreateDTO) throws Exception {
- String orderId=" ";
- String totalAmount="0.01";
- String subject="测试支付";
- String body="我是测试支付";
-// 创建订单
-// createAlipayOrder(orderId,totalAmount,subject);
+ // 创建订单
+ // 当前的支付类型是微信支付
+ ProductOrdersDO productOrdersDTO=new ProductOrdersDO();
+ BeanUtils.copyProperties(productOrdersCreateDTO,productOrdersDTO);
+ productOrdersDTO.setPaymentMethod(PayTypeEnum.ALIPAY.getName());
+
+ ProductOrdersDO productOrdersDO=productOrdersService.createProductOrders(productOrdersDTO);
//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
//SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
- model.setBody("我是测试数据");
- model.setSubject("App支付测试Java");
- model.setOutTradeNo(OrderInfoUtil2_0.getOutTradeNo());
-// model.setOutTradeNo(orderId);
+ model.setBody(productOrdersDO.getOrderType()+"_"+productOrdersDO.getCurrentPrice());
+ model.setSubject(productOrdersDO.getOrderName());
+ model.setOutTradeNo(productOrdersDO.getOrderNo());
+ model.setTotalAmount(productOrdersDO.getCurrentPrice()+"");
model.setTimeoutExpress("30m");
- model.setTotalAmount("0.01");
model.setProductCode("QUICK_MSECURITY_PAY");
request.setBizModel(model);
request.setNotifyUrl(alipayProperties.getNotifyUrl());
@@ -111,6 +120,9 @@
// 查看验签结果
System.out.println(rsa2);
if(rsa2){
+ // 更新支付状态
+ productOrdersService.updateProductOrderStatus(params);
+
return "success";
}
diff --git a/src/main/resources/mapper/productOrders/ProductOrdersMapper.xml b/src/main/resources/mapper/productOrders/ProductOrdersMapper.xml
new file mode 100644
index 0000000..f3d69aa
--- /dev/null
+++ b/src/main/resources/mapper/productOrders/ProductOrdersMapper.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.mzl.flower.mapper.productOrders.ProductOrdersMapper">
+
+ <!-- 通用查询映射结果 -->
+ <resultMap id="BaseResultMap" type="com.mzl.flower.entity.productOrders.ProductOrdersDO">
+ <id column="id" property="id" />
+ <result column="create_time" property="createTime" />
+ <result column="update_time" property="updateTime" />
+ <result column="delete_time" property="deleteTime" />
+ <result column="user_id" property="userId" />
+ <result column="order_no" property="orderNo" />
+ <result column="order_name" property="orderName" />
+ <result column="order_type" property="orderType" />
+ <result column="
+original_price" property="
+originalPrice" />
+ <result column="current_price" property="currentPrice" />
+ <result column="payment_method" property="paymentMethod" />
+ <result column="payment_status" property="paymentStatus" />
+ <result column="payment_time" property="paymentTime" />
+ <result column="update_by" property="updateBy" />
+ <result column="create_by" property="createBy" />
+ <result column="deleted" property="deleted" />
+ </resultMap>
+
+</mapper>
--
Gitblit v1.9.3