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());