From 715d429a1b600c2331b795624ba57415ebd52aa9 Mon Sep 17 00:00:00 2001
From: quyixiao <2621048238@qq.com>
Date: Thu, 4 Dec 2025 08:16:04 +0800
Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../heyu/api/data/dao/vv/VvOutTradeNoDao.java | 36 ++++++
.../api/data/dao/vv/VvReverseOrderDao.java | 7 ++
.../heyu/api/data/dao/vv/VvTradeOrderDao.java | 6 +
.../data/entity/vv/VvOutTradeNoEntity.java | 106 ++++++++++++++++++
.../data/entity/vv/VvReverseOrderEntity.java | 21 +++-
.../data/entity/vv/VvTradeOrderEntity.java | 21 +++-
.../impl/vv/VvOutTradeNoServiceImpl.java | 68 +++++++++++
.../data/service/vv/VvOutTradeNoService.java | 34 ++++++
.../resources/mapper/vv/VvOutTradeNoDao.xml | 6 +
.../java/com/test/xxx/MysqlMain_insert.java | 2 +-
.../java/com/test/xxx/MysqlMain_update.java | 2 +-
.../java/com/heyu/api/jsapi/JsapiPrepay.java | 22 +++-
.../api/controller/vv/AppOrderController.java | 19 +++-
.../vv/AppWeiXinPayNotifyController.java | 25 +++--
.../vv/AppWeiXinRefundNotifyController.java | 10 +-
15 files changed, 359 insertions(+), 26 deletions(-)
create mode 100644 api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvOutTradeNoDao.java
create mode 100644 api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvOutTradeNoEntity.java
create mode 100644 api-mapper/src/main/java/com/heyu/api/data/service/impl/vv/VvOutTradeNoServiceImpl.java
create mode 100644 api-mapper/src/main/java/com/heyu/api/data/service/vv/VvOutTradeNoService.java
create mode 100644 api-mapper/src/main/resources/mapper/vv/VvOutTradeNoDao.xml
diff --git a/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvOutTradeNoDao.java b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvOutTradeNoDao.java
new file mode 100644
index 0000000..e02dfbc
--- /dev/null
+++ b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvOutTradeNoDao.java
@@ -0,0 +1,36 @@
+package com.heyu.api.data.dao.vv;
+/**
+*
+* sku详描 服务类
+*
+*
+* @author quyixiao
+* @since 2025-12-04
+*/
+import com.heyu.api.data.entity.vv.VvOutTradeNoEntity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+@Mapper
+public interface VvOutTradeNoDao extends BaseMapper {
+
+
+ VvOutTradeNoEntity selectVvOutTradeNoById(@Param("id")Long id);
+
+
+ Long insertVvOutTradeNo(VvOutTradeNoEntity vvOutTradeNo);
+
+
+ Long insertOrUpdateVvOutTradeNo(VvOutTradeNoEntity vvOutTradeNo);
+
+
+ int updateVvOutTradeNoById(VvOutTradeNoEntity vvOutTradeNo);
+
+
+ int updateCoverVvOutTradeNoById(VvOutTradeNoEntity vvOutTradeNo);
+
+
+ int deleteVvOutTradeNoById(@Param("id")Long id);
+
+
+}
\ No newline at end of file
diff --git a/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvReverseOrderDao.java b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvReverseOrderDao.java
index 5f740d2..172ea1d 100644
--- a/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvReverseOrderDao.java
+++ b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvReverseOrderDao.java
@@ -65,5 +65,12 @@ public interface VvReverseOrderDao extends BaseMapper {
@OrderBy(VvReverseOrderEntity.id_)
@LIMIT
VvReverseOrderEntity selectVvReverseOrderByTrackNumber(String trackNumber);
+
+
+
+
+
+ @LIMIT
+ VvReverseOrderEntity selectVvReverseOrderByOutRefundNo(String outRefundNo);
}
diff --git a/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvTradeOrderDao.java b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvTradeOrderDao.java
index 542d103..fac96e0 100644
--- a/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvTradeOrderDao.java
+++ b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvTradeOrderDao.java
@@ -66,4 +66,10 @@ public interface VvTradeOrderDao extends BaseMapper {
List selectAppTradeOrderByTradeOrderIds(@IFNullReturnEmpty @IN List id);
+
+
+
+ @LIMIT
+ VvTradeOrderEntity selectVvTradeOrderByOutTradeNo(String outTradeNo);
+
}
\ No newline at end of file
diff --git a/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvOutTradeNoEntity.java b/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvOutTradeNoEntity.java
new file mode 100644
index 0000000..9b6c689
--- /dev/null
+++ b/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvOutTradeNoEntity.java
@@ -0,0 +1,106 @@
+package com.heyu.api.data.entity.vv;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.lz.mybatis.plugin.annotations.AS;
+
+import java.math.BigDecimal;
+import java.util.Date;import java.util.Date;
+/**
+*sku详描
+* @author quyixiao
+* @since 2025-12-04
+*/
+
+@Data
+@TableName("vv_out_trade_no")
+public class VvOutTradeNoEntity implements java.io.Serializable {
+private static final long serialVersionUID = 1L;
+
+ public final static String CLASS_NAME ="com.heyu.api.data.entity.vv.VvOutTradeNoEntity:";
+
+ public final static String all = CLASS_NAME + "*";
+ public final static String id_ = CLASS_NAME + "id"; //
+ public final static String is_delete = CLASS_NAME + "is_delete"; // 是否删除:0 否 1 删除
+ public final static String create_time = CLASS_NAME + "create_time"; // 创建时间
+ public final static String modify_time = CLASS_NAME + "modify_time"; // 修改时间
+ //
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+ //是否删除:0 否 1 删除
+ private Integer isDelete;
+ //创建时间
+ private Date createTime;
+ //修改时间
+ private Date modifyTime;
+ /**
+ *
+ * @return
+ */
+ public Long getId() {
+ return id;
+ }
+ /**
+ *
+ * @param id
+ */
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ /**
+ * 是否删除:0 否 1 删除
+ * @return
+ */
+ public Integer getIsDelete() {
+ return isDelete;
+ }
+ /**
+ * 是否删除:0 否 1 删除
+ * @param isDelete
+ */
+ public void setIsDelete(Integer isDelete) {
+ this.isDelete = isDelete;
+ }
+
+ /**
+ * 创建时间
+ * @return
+ */
+ public Date getCreateTime() {
+ return createTime;
+ }
+ /**
+ * 创建时间
+ * @param createTime
+ */
+ public void setCreateTime(Date createTime) {
+ this.createTime = createTime;
+ }
+
+ /**
+ * 修改时间
+ * @return
+ */
+ public Date getModifyTime() {
+ return modifyTime;
+ }
+ /**
+ * 修改时间
+ * @param modifyTime
+ */
+ public void setModifyTime(Date modifyTime) {
+ this.modifyTime = modifyTime;
+ }
+
+ @Override
+ public String toString() {
+ return "VvOutTradeNoEntity{" +
+ ",id=" + id +
+ ",isDelete=" + isDelete +
+ ",createTime=" + createTime +
+ ",modifyTime=" + modifyTime +
+ "}";
+ }
+}
\ No newline at end of file
diff --git a/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvReverseOrderEntity.java b/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvReverseOrderEntity.java
index 029ba62..0e33279 100644
--- a/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvReverseOrderEntity.java
+++ b/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvReverseOrderEntity.java
@@ -10,7 +10,7 @@ import java.util.Date;import java.util.Date;
/**
*逆向表
* @author quyixiao
-* @since 2025-11-19
+* @since 2025-12-04
*/
@Data
@@ -77,6 +77,7 @@ private static final long serialVersionUID = 1L;
public final static String agree_sign_receipt_user = CLASS_NAME + "agree_sign_receipt_user"; // 同意签收用户
public final static String return_seller_id = CLASS_NAME + "return_seller_id"; // 退回到哪个卖家id
public final static String return_seller_warehouse_id = CLASS_NAME + "return_seller_warehouse_id"; // 退回到卖家仓库id
+ public final static String out_refund_no = CLASS_NAME + "out_refund_no"; // 退款编号
//
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@@ -190,6 +191,8 @@ private static final long serialVersionUID = 1L;
private Long returnSellerId;
//退回到卖家仓库id
private Long returnSellerWarehouseId;
+ //退款编号
+ private String outRefundNo;
/**
*
* @return
@@ -1030,6 +1033,21 @@ private static final long serialVersionUID = 1L;
this.returnSellerWarehouseId = returnSellerWarehouseId;
}
+ /**
+ * 退款编号
+ * @return
+ */
+ public String getOutRefundNo() {
+ return outRefundNo;
+ }
+ /**
+ * 退款编号
+ * @param outRefundNo
+ */
+ public void setOutRefundNo(String outRefundNo) {
+ this.outRefundNo = outRefundNo;
+ }
+
@Override
public String toString() {
return "VvReverseOrderEntity{" +
@@ -1089,6 +1107,7 @@ private static final long serialVersionUID = 1L;
",agreeSignReceiptUser=" + agreeSignReceiptUser +
",returnSellerId=" + returnSellerId +
",returnSellerWarehouseId=" + returnSellerWarehouseId +
+ ",outRefundNo=" + outRefundNo +
"}";
}
}
\ No newline at end of file
diff --git a/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvTradeOrderEntity.java b/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvTradeOrderEntity.java
index b28f6d3..30588ad 100644
--- a/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvTradeOrderEntity.java
+++ b/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvTradeOrderEntity.java
@@ -10,7 +10,7 @@ import java.util.Date;import java.util.Date;
/**
*购物车
* @author quyixiao
-* @since 2025-11-17
+* @since 2025-12-04
*/
@Data
@@ -49,6 +49,7 @@ private static final long serialVersionUID = 1L;
public final static String transaction_id = CLASS_NAME + "transaction_id"; // 事务id
public final static String buyer_address_id = CLASS_NAME + "buyer_address_id"; // 买家地址id
public final static String promotion_price = CLASS_NAME + "promotion_price"; // 促销价
+ public final static String out_trade_no = CLASS_NAME + "out_trade_no"; //
//
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@@ -106,6 +107,8 @@ private static final long serialVersionUID = 1L;
private Long buyerAddressId;
//促销价
private BigDecimal promotionPrice;
+ //
+ private String outTradeNo;
/**
*
* @return
@@ -526,6 +529,21 @@ private static final long serialVersionUID = 1L;
this.promotionPrice = promotionPrice;
}
+ /**
+ *
+ * @return
+ */
+ public String getOutTradeNo() {
+ return outTradeNo;
+ }
+ /**
+ *
+ * @param outTradeNo
+ */
+ public void setOutTradeNo(String outTradeNo) {
+ this.outTradeNo = outTradeNo;
+ }
+
@Override
public String toString() {
return "VvTradeOrderEntity{" +
@@ -557,6 +575,7 @@ private static final long serialVersionUID = 1L;
",transactionId=" + transactionId +
",buyerAddressId=" + buyerAddressId +
",promotionPrice=" + promotionPrice +
+ ",outTradeNo=" + outTradeNo +
"}";
}
}
\ No newline at end of file
diff --git a/api-mapper/src/main/java/com/heyu/api/data/service/impl/vv/VvOutTradeNoServiceImpl.java b/api-mapper/src/main/java/com/heyu/api/data/service/impl/vv/VvOutTradeNoServiceImpl.java
new file mode 100644
index 0000000..1997b21
--- /dev/null
+++ b/api-mapper/src/main/java/com/heyu/api/data/service/impl/vv/VvOutTradeNoServiceImpl.java
@@ -0,0 +1,68 @@
+package com.heyu.api.data.service.impl.vv;
+/**
+*
+* sku详描 服务类
+*
+*
+* @author quyixiao
+* @since 2025-12-04
+*/
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.heyu.api.data.dao.vv.VvOutTradeNoDao;
+import com.heyu.api.data.entity.vv.VvOutTradeNoEntity;
+import com.heyu.api.data.service.vv.VvOutTradeNoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+@Service
+public class VvOutTradeNoServiceImpl extends ServiceImpl implements VvOutTradeNoService {
+
+
+ @Autowired
+ private VvOutTradeNoDao vvOutTradeNoDao;
+
+
+
+ @Override
+ public VvOutTradeNoEntity selectVvOutTradeNoById(Long id){
+ return vvOutTradeNoDao.selectVvOutTradeNoById(id);
+ }
+
+
+
+ @Override
+ public Long insertVvOutTradeNo(VvOutTradeNoEntity vvOutTradeNo){
+ return vvOutTradeNoDao.insertVvOutTradeNo(vvOutTradeNo);
+ }
+
+
+
+ @Override
+ public Long insertOrUpdateVvOutTradeNo(VvOutTradeNoEntity vvOutTradeNo){
+ return vvOutTradeNoDao.insertOrUpdateVvOutTradeNo(vvOutTradeNo);
+ }
+
+
+
+ @Override
+ public int updateVvOutTradeNoById(VvOutTradeNoEntity vvOutTradeNo){
+ return vvOutTradeNoDao.updateVvOutTradeNoById(vvOutTradeNo);
+ }
+
+
+
+ @Override
+ public int updateCoverVvOutTradeNoById(VvOutTradeNoEntity vvOutTradeNo){
+ return vvOutTradeNoDao.updateCoverVvOutTradeNoById(vvOutTradeNo);
+ }
+
+
+
+ @Override
+ public int deleteVvOutTradeNoById(Long id){
+ return vvOutTradeNoDao.deleteVvOutTradeNoById(id);
+ }
+
+
+
+}
diff --git a/api-mapper/src/main/java/com/heyu/api/data/service/vv/VvOutTradeNoService.java b/api-mapper/src/main/java/com/heyu/api/data/service/vv/VvOutTradeNoService.java
new file mode 100644
index 0000000..85a9337
--- /dev/null
+++ b/api-mapper/src/main/java/com/heyu/api/data/service/vv/VvOutTradeNoService.java
@@ -0,0 +1,34 @@
+package com.heyu.api.data.service.vv;
+/**
+*
+* sku详描 服务类
+*
+*
+* @author quyixiao
+* @since 2025-12-04
+*/
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.heyu.api.data.entity.vv.VvOutTradeNoEntity;
+public interface VvOutTradeNoService extends IService {
+
+
+
+ VvOutTradeNoEntity selectVvOutTradeNoById(Long id);
+
+
+ Long insertVvOutTradeNo(VvOutTradeNoEntity vvOutTradeNo);
+
+
+ Long insertOrUpdateVvOutTradeNo(VvOutTradeNoEntity vvOutTradeNo);
+
+
+ int updateVvOutTradeNoById(VvOutTradeNoEntity vvOutTradeNo);
+
+
+ int updateCoverVvOutTradeNoById(VvOutTradeNoEntity vvOutTradeNo);
+
+
+ int deleteVvOutTradeNoById(Long id);
+
+
+}
\ No newline at end of file
diff --git a/api-mapper/src/main/resources/mapper/vv/VvOutTradeNoDao.xml b/api-mapper/src/main/resources/mapper/vv/VvOutTradeNoDao.xml
new file mode 100644
index 0000000..11e75ac
--- /dev/null
+++ b/api-mapper/src/main/resources/mapper/vv/VvOutTradeNoDao.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/api-mapper/src/test/java/com/test/xxx/MysqlMain_insert.java b/api-mapper/src/test/java/com/test/xxx/MysqlMain_insert.java
index 95cf77f..846bfa6 100644
--- a/api-mapper/src/test/java/com/test/xxx/MysqlMain_insert.java
+++ b/api-mapper/src/test/java/com/test/xxx/MysqlMain_insert.java
@@ -94,7 +94,7 @@ public class MysqlMain_insert {
List list = new ArrayList();
- list.add(new TablesBean("vv_promoter"));
+ list.add(new TablesBean("vv_out_trade_no"));
diff --git a/api-mapper/src/test/java/com/test/xxx/MysqlMain_update.java b/api-mapper/src/test/java/com/test/xxx/MysqlMain_update.java
index 8e8559d..2d90d6b 100644
--- a/api-mapper/src/test/java/com/test/xxx/MysqlMain_update.java
+++ b/api-mapper/src/test/java/com/test/xxx/MysqlMain_update.java
@@ -48,7 +48,7 @@ public class MysqlMain_update {
}
List list = new ArrayList();
- list.add(new TablesBean("vv_sku"));
+ list.add(new TablesBean("vv_reverse_order"));
Map map = MysqlUtil2ShowCreateTable.getComments();
for (int i = 0; i < list.size(); i++) {
diff --git a/api-third/src/main/java/com/heyu/api/jsapi/JsapiPrepay.java b/api-third/src/main/java/com/heyu/api/jsapi/JsapiPrepay.java
index 0ffdcdb..d35c5da 100644
--- a/api-third/src/main/java/com/heyu/api/jsapi/JsapiPrepay.java
+++ b/api-third/src/main/java/com/heyu/api/jsapi/JsapiPrepay.java
@@ -4,8 +4,10 @@ package com.heyu.api.jsapi;
import com.alibaba.fastjson.JSON;
import com.heyu.api.alibaba.request.mm.order.ProfitSharingDTO;
+import com.heyu.api.data.dao.vv.VvOutTradeNoDao;
import com.heyu.api.data.dao.vv.VvReverseOrderDao;
import com.heyu.api.data.dao.vv.VvTradeOrderDao;
+import com.heyu.api.data.entity.vv.VvOutTradeNoEntity;
import com.heyu.api.data.entity.vv.VvReverseOrderEntity;
import com.heyu.api.data.entity.vv.VvTradeOrderEntity;
import com.heyu.api.data.utils.BigDecimalUtil;
@@ -71,6 +73,9 @@ public class JsapiPrepay {
private VvReverseOrderDao vvReverseOrderDao;
+ @Autowired
+ private VvOutTradeNoDao vvOutTradeNoDao;
+
@Value("${eb.config.weixin.pay.notifyUrl}")
@@ -107,7 +112,7 @@ public class JsapiPrepay {
* https://pay.weixin.qq.com/doc/v3/merchant/4012791897
* JSAPI/小程序下单
*/
- public DirectAPIv3JsapiPrepayResponse prePay(Long tradeOrderId,
+ public DirectAPIv3JsapiPrepayResponse prePay(String outTradeNo,
Long amount,
String openid) {
DirectAPIv3JsapiPrepayRequest request = new DirectAPIv3JsapiPrepayRequest();
@@ -115,7 +120,7 @@ public class JsapiPrepay {
request.setMchid(mchid);
request.setNotifyUrl(notifyUrl);
request.setDescription(System.currentTimeMillis() + "");
- request.setOutTradeNo(tradeOrderId + "");
+ request.setOutTradeNo(outTradeNo );
request.setTimeExpire(WXPayUtility.generateExpireTime()); // 2025-11-05T21:02:16+08:00
request.setAttach("自定义数据说明");
request.setGoodsTag("WXG");
@@ -219,6 +224,7 @@ public class JsapiPrepay {
}
}
+
/****
* https://pay.weixin.qq.com/doc/v3/merchant/4012791903
* 退款申请
@@ -229,8 +235,16 @@ public class JsapiPrepay {
CreateRequest request = new CreateRequest();
request.transactionId = vvTradeOrderEntity.getTransactionId(); // 【微信支付订单号】 微信支付侧订单的唯一标识,订单支付成功后,查询订单和支付成功回调通知会返回该参数。transaction_id和out_trade_no必须二选一进行传参。
- request.outTradeNo = tradeOrderId + ""; // 【商户订单号】 商户下单时传入的商户系统内部订单号。transaction_id和out_trade_no必须二选一进行传参。
- request.outRefundNo = reverseOrderId + ""; //【商户退款单号】 商户系统内部的退款单号,商户系统内部唯一,只能是数字、大小写字母_-|*@ ,同一商户退款单号多次请求只退一笔。不可超过64个字节数。
+
+ VvOutTradeNoEntity vvOutTradeNo = new VvOutTradeNoEntity();
+ vvOutTradeNoDao.insertOrUpdateVvOutTradeNo(vvOutTradeNo);
+
+ vvReverseOrderEntity.setOutRefundNo(vvOutTradeNo.getId()+"");
+ vvReverseOrderDao.updateVvReverseOrderById(vvReverseOrderEntity);
+
+
+ request.outTradeNo = vvTradeOrderEntity.getOutTradeNo() + ""; // 【商户订单号】 商户下单时传入的商户系统内部订单号。transaction_id和out_trade_no必须二选一进行传参。
+ request.outRefundNo = vvReverseOrderEntity.getOutRefundNo() + ""; //【商户退款单号】 商户系统内部的退款单号,商户系统内部唯一,只能是数字、大小写字母_-|*@ ,同一商户退款单号多次请求只退一笔。不可超过64个字节数。
request.reason = vvReverseOrderEntity.getRefundReason(); // 【退款原因】 若商户传了退款原因,该原因将在下发给用户的退款消息中显示,具体展示可参见退款通知UI示意图。请注意:1、该退款原因参数的长度不得超过80个字节;2、当订单退款金额小于等于1元且为部分退款时,退款原因将不会在消息中体现。
request.notifyUrl = refundNotifyUrl; // 【退款结果回调url】 异步接收微信支付退款结果通知的回调地址,通知url必须为外网可访问的url,不能携带参数。 如果传了该参数,则商户平台上配置的回调地址(商户平台-交易中心-退款管理-退款配置)将不会生效,优先回调当前传的这个地址。
/**
diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppOrderController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppOrderController.java
index 38d239a..7748aab 100644
--- a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppOrderController.java
+++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppOrderController.java
@@ -129,6 +129,9 @@ public class AppOrderController {
private VvPromoterTradeOrderAwardDao vvPromoterTradeOrderAwardDao;
+ @Autowired
+ private VvOutTradeNoDao vvOutTradeNoDao;
+
/***
* https://api.1024api.com/api-interface/app/order/list
@@ -499,7 +502,12 @@ public class AppOrderController {
vvProductDao.updateShowSaleCountAndSaleCount(map.getValue(), map.getValue(), map.getKey());
}
- DirectAPIv3JsapiPrepayResponse jsapiPrepayResponse = jsapiPrepay.prePay(vvTradeOrderEntity.getId(),
+ VvOutTradeNoEntity vvOutTradeNo = new VvOutTradeNoEntity();
+ vvOutTradeNoDao.insertOrUpdateVvOutTradeNo(vvOutTradeNo);
+ vvTradeOrderEntity.setOutTradeNo(vvOutTradeNo.getId()+"");
+ vvTradeOrderDao.updateVvTradeOrderById(vvTradeOrderEntity);
+
+ DirectAPIv3JsapiPrepayResponse jsapiPrepayResponse = jsapiPrepay.prePay(vvTradeOrderEntity.getOutTradeNo(),
BigDecimalUtil.multiply(vvTradeOrderEntity.getPayAmount(), new BigDecimal(100)).longValue(),
vvBuyerEntity.getOpenid()
);
@@ -516,6 +524,7 @@ public class AppOrderController {
vvTradeOrderLineEntity.setGmtPrePay(new Date());
vvTradeOrderLineDao.updateVvTradeOrderLineById(vvTradeOrderLineEntity);
}
+
// 发送订单关单的消息
Date currentTime = new Date();
Date after30 = DateUtils.addMinutes(currentTime, 30);
@@ -567,13 +576,19 @@ public class AppOrderController {
VvTradeOrderEntity vvTradeOrderEntity = vvTradeOrderDao.selectVvTradeOrderById(vvOrderRequest.getTradeOrderId());
VvBuyerEntity vvBuyerEntity = vvBuyerDao.selectVvBuyerById(vvOrderRequest.getBuyerId());
+ VvOutTradeNoEntity vvOutTradeNo = new VvOutTradeNoEntity();
+ vvOutTradeNoDao.insertOrUpdateVvOutTradeNo(vvOutTradeNo);
- DirectAPIv3JsapiPrepayResponse jsapiPrepayResponse = jsapiPrepay.prePay(vvTradeOrderEntity.getId(),
+ vvTradeOrderEntity.setOutTradeNo(vvOutTradeNo.getId()+"");
+ vvTradeOrderDao.updateVvTradeOrderById(vvTradeOrderEntity);
+
+ DirectAPIv3JsapiPrepayResponse jsapiPrepayResponse = jsapiPrepay.prePay(vvTradeOrderEntity.getOutTradeNo(),
BigDecimalUtil.multiply(vvTradeOrderEntity.getPayAmount(), new BigDecimal(100)).longValue(),
vvBuyerEntity.getOpenid()
);
String prepay_id = jsapiPrepayResponse.getPrepayId();
+
if (jsapiPrepayResponse != null && jsapiPrepayResponse.getPrepayId() != null) {
List vvTradeOrderLineEntities = vvTradeOrderLineDao.selectVvTradeOrderLineByTradeOrderId(vvTradeOrderEntity.getId());
for (VvTradeOrderLineEntity vvTradeOrderLineEntity : vvTradeOrderLineEntities) {
diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppWeiXinPayNotifyController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppWeiXinPayNotifyController.java
index 365592c..5d84c46 100644
--- a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppWeiXinPayNotifyController.java
+++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppWeiXinPayNotifyController.java
@@ -4,13 +4,12 @@ package com.heyu.api.controller.vv;
import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
-import com.heyu.api.data.enums.OrderStatusEnums;
import com.heyu.api.common.annotation.Describe;
import com.heyu.api.data.dao.vv.VvTradeOrderDao;
import com.heyu.api.data.dao.vv.VvTradeOrderLineDao;
import com.heyu.api.data.entity.vv.VvTradeOrderEntity;
import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity;
-import com.heyu.api.data.utils.NumberUtil;
+import com.heyu.api.data.enums.OrderStatusEnums;
import com.heyu.api.jsapi.JsapiPrepay;
import com.heyu.api.jsapi.dto.pay.DirectAPIv3QueryResponse;
import lombok.extern.slf4j.Slf4j;
@@ -107,22 +106,24 @@ public class AppWeiXinPayNotifyController {
private void updateOrderStatus(String outTradeNo, String transactionId) {
try {
DirectAPIv3QueryResponse response = jsapiPrepay.queryOrder(transactionId);
- VvTradeOrderEntity tradeOrderEntity = tradeOrderDao.selectVvTradeOrderById(NumberUtil.objToLong(outTradeNo));
+ VvTradeOrderEntity tradeOrderEntity = tradeOrderDao.selectVvTradeOrderByOutTradeNo(outTradeNo);
tradeOrderEntity.setTradeInfo(JSON.toJSONString(response));
tradeOrderEntity.setTransactionId(transactionId);
tradeOrderDao.updateVvTradeOrderById(tradeOrderEntity);
+
+ // 这里是更新商户订单状态的逻辑,例如标记订单已支付
+ log.info("handleWeChatPayCallback 订单 " + outTradeNo + " 已支付,交易号:" + transactionId + "开始更新子订单信息");
+ List vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectVvTradeOrderLineByTradeOrderId(tradeOrderEntity.getId());
+ for (VvTradeOrderLineEntity vvTradeOrderLineEntity : vvTradeOrderLineEntityList) {
+ vvTradeOrderLineEntity.setStatus(OrderStatusEnums.wait_shipping.getStatus());
+ vvTradeOrderLineEntity.setGmtPay(new Date());
+ vvTradeOrderLineEntity.setTransactionId(transactionId);
+ vvTradeOrderLineDao.updateVvTradeOrderLineById(vvTradeOrderLineEntity);
+ }
}catch ( Exception e ){
log.error("AppWeiXinPayNotifyController updateOrderStatus error:{}",e.getMessage());
}
- // 这里是更新商户订单状态的逻辑,例如标记订单已支付
- log.info("handleWeChatPayCallback 订单 " + outTradeNo + " 已支付,交易号:" + transactionId + "开始更新子订单信息");
- List vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectVvTradeOrderLineByTradeOrderId(NumberUtil.objToLong(outTradeNo));
- for (VvTradeOrderLineEntity vvTradeOrderLineEntity : vvTradeOrderLineEntityList) {
- vvTradeOrderLineEntity.setStatus(OrderStatusEnums.wait_shipping.getStatus());
- vvTradeOrderLineEntity.setGmtPay(new Date());
- vvTradeOrderLineEntity.setTransactionId(transactionId);
- vvTradeOrderLineDao.updateVvTradeOrderLineById(vvTradeOrderLineEntity);
- }
+
}
}
diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppWeiXinRefundNotifyController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppWeiXinRefundNotifyController.java
index 0e15a3b..167c340 100644
--- a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppWeiXinRefundNotifyController.java
+++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppWeiXinRefundNotifyController.java
@@ -2,7 +2,6 @@ package com.heyu.api.controller.vv;
import com.alibaba.fastjson.JSONObject;
-import com.heyu.api.data.enums.ReverseStatusEnums;
import com.heyu.api.data.dao.vv.VvReverseOrderDao;
import com.heyu.api.data.dao.vv.VvReverseOrderLineDao;
import com.heyu.api.data.dao.vv.VvTradeOrderDao;
@@ -10,7 +9,7 @@ import com.heyu.api.data.dao.vv.VvTradeOrderLineDao;
import com.heyu.api.data.entity.vv.VvReverseOrderEntity;
import com.heyu.api.data.entity.vv.VvReverseOrderLineEntity;
import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity;
-import com.heyu.api.data.utils.NumberUtil;
+import com.heyu.api.data.enums.ReverseStatusEnums;
import com.heyu.api.data.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -110,15 +109,18 @@ public class AppWeiXinRefundNotifyController {
log.info("AppWeiXinRefundNotifyController refundNotifyUrl out_trade_no:{} ,out_refund_no:{} refund_status:{} resultStr :{} " ,out_trade_no,out_refund_no,refund_status,resultStr);
Map parm = new HashMap<>();
if (!StringUtils.isEmpty(refund_status) && "SUCCESS".equals(refund_status)) {
- VvReverseOrderEntity vvReverseOrderEntity = reverseOrderDao.selectVvReverseOrderById(NumberUtil.objToLong(out_refund_no));
+
+ VvReverseOrderEntity vvReverseOrderEntity = reverseOrderDao.selectVvReverseOrderByOutRefundNo(out_refund_no);
+
log.info("AppWeiXinRefundNotifyController refundNotifyUrl reverseStatus:{}", vvReverseOrderEntity.getStatus());
+
if(ReverseStatusEnums.weixin_refunding.getStatus().equals(vvReverseOrderEntity.getStatus())){
vvReverseOrderEntity.setGmtRefunded(new Date());
vvReverseOrderEntity.setStatus(ReverseStatusEnums.refunded.getStatus());
vvReverseOrderEntity.setGmtRefundNotify(new Date());
reverseOrderDao.updateVvReverseOrderById(vvReverseOrderEntity);
- List vvReverseOrderLineEntities = vvReverseOrderLineDao.selectVvReverseOrderLineByReverseOrderId(NumberUtil.objToLong(out_refund_no));;
+ List vvReverseOrderLineEntities = vvReverseOrderLineDao.selectVvReverseOrderLineByReverseOrderId(vvReverseOrderEntity.getId());
List tradeOrderLineIds = new ArrayList<>();
for (VvReverseOrderLineEntity vvReverseOrderLineEntity : vvReverseOrderLineEntities) {
tradeOrderLineIds.add(vvReverseOrderLineEntity.getTradeOrderLineId());