提交修改

This commit is contained in:
quyixiao 2025-11-06 19:45:56 +08:00
parent 95940263fd
commit e78cce35f2
6 changed files with 89 additions and 18 deletions

View File

@ -149,4 +149,6 @@ public interface VvTradeOrderLineDao extends BaseMapper<VvTradeOrderLineEntity>
List<VvTradeOrderLineEntity> selectVvTradeOrderLineByBuyerIdTrackNumber(Long buyerId, String trackNumber);
List<VvTradeOrderLineEntity> selectByTradeOrderIdAndTransactionId(Long tradeOrderId, String transactionId);
}

View File

@ -10,7 +10,7 @@ import java.util.Date;import java.util.Date;
/**
*购物车
* @author quyixiao
* @since 2025-10-25
* @since 2025-11-06
*/
@Data
@ -72,6 +72,8 @@ private static final long serialVersionUID = 1L;
public final static String award_amount = CLASS_NAME + "award_amount"; // 奖励金额
public final static String activity_id = CLASS_NAME + "activity_id"; // 活动id
public final static String activity_award_count = CLASS_NAME + "activity_award_count"; // 这次活动的奖励次数
public final static String transaction_id = CLASS_NAME + "transaction_id"; // 支付事务id
public final static String pay_type = CLASS_NAME + "pay_type"; // 支付方式weixin
//
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@ -175,6 +177,10 @@ private static final long serialVersionUID = 1L;
private Long activityId;
//这次活动的奖励次数
private Integer activityAwardCount;
//支付事务id
private String transactionId;
//支付方式weixin
private String payType;
/**
*
* @return
@ -940,6 +946,36 @@ private static final long serialVersionUID = 1L;
this.activityAwardCount = activityAwardCount;
}
/**
* 支付事务id
* @return
*/
public String getTransactionId() {
return transactionId;
}
/**
* 支付事务id
* @param transactionId
*/
public void setTransactionId(String transactionId) {
this.transactionId = transactionId;
}
/**
* 支付方式weixin
* @return
*/
public String getPayType() {
return payType;
}
/**
* 支付方式weixin
* @param payType
*/
public void setPayType(String payType) {
this.payType = payType;
}
@Override
public String toString() {
return "VvTradeOrderLineEntity{" +
@ -994,6 +1030,8 @@ private static final long serialVersionUID = 1L;
",awardAmount=" + awardAmount +
",activityId=" + activityId +
",activityAwardCount=" + activityAwardCount +
",transactionId=" + transactionId +
",payType=" + payType +
"}";
}
}

View File

@ -48,7 +48,7 @@ public class MysqlMain_update {
}
List<TablesBean> list = new ArrayList<TablesBean>();
list.add(new TablesBean("vv_product"));
list.add(new TablesBean("vv_trade_order_line"));
Map<String, String> map = MysqlUtil2ShowCreateTable.getComments();

View File

@ -61,8 +61,7 @@ public class JsapiPrepay {
public DirectAPIv3JsapiPrepayResponse prePay(String tradeOrderId,
String skuInfo,
public DirectAPIv3JsapiPrepayResponse prePay(Long tradeOrderId,
Long amount,
String openid
) {
@ -70,8 +69,8 @@ public class JsapiPrepay {
request.setAppid(appid);
request.setMchid(mchid);
request.setNotifyUrl(notifyUrl);
request.setDescription(skuInfo);
request.setOutTradeNo(tradeOrderId);
request.setDescription(System.currentTimeMillis() + "");
request.setOutTradeNo(tradeOrderId + "");
request.setTimeExpire(WXPayUtility.generateExpireTime()); // 2025-11-05T21:02:16+08:00
request.setAttach("自定义数据说明");
request.setGoodsTag("WXG");
@ -87,7 +86,7 @@ public class JsapiPrepay {
return doPay(request);
}
public DirectAPIv3JsapiPrepayResponse doPay(DirectAPIv3JsapiPrepayRequest request) {
private DirectAPIv3JsapiPrepayResponse doPay(DirectAPIv3JsapiPrepayRequest request) {
String uri = PATH;
String reqBody = WXPayUtility.toJson(request);

View File

@ -15,6 +15,8 @@ import com.heyu.api.data.utils.BigDecimalUtil;
import com.heyu.api.data.utils.R;
import com.heyu.api.data.utils.SanUtils;
import com.heyu.api.data.utils.StringUtils;
import com.heyu.api.jsapi.JsapiPrepay;
import com.heyu.api.jsapi.dto.DirectAPIv3JsapiPrepayResponse;
import com.heyu.api.utils.ISelect;
import com.heyu.api.utils.PPageUtils;
import lombok.extern.slf4j.Slf4j;
@ -63,6 +65,9 @@ public class AppOrderController {
@Autowired
private VvBuyerAddressDao vvBuyerAddressDao;
@Autowired
private JsapiPrepay jsapiPrepay;
/***
* https://api.1024api.com/api-interface/app/order/list
*
@ -267,7 +272,6 @@ public class AppOrderController {
VvTradeOrderEntity vvTradeOrderEntity = new VvTradeOrderEntity();
VvBuyerEntity vvBuyerEntity = vvBuyerDao.selectVvBuyerById(vvOrderRequest.getBuyerId());
//创建时间
vvTradeOrderEntity.setCreateTime(new Date());
vvTradeOrderEntity.setModifyTime(new Date());
@ -276,7 +280,6 @@ public class AppOrderController {
vvTradeOrderEntity.setBuyerName(vvBuyerEntity.getBuyerName());
vvTradeOrderEntity.setBuyerWeixin(vvBuyerEntity.getBuyerWeixin());
vvTradeOrderEntity.setGmtDownOrder(new Date());
VvBuyerAddressEntity vvBuyerAddress = vvBuyerAddressDao.selectVvBuyerAddressById(vvOrderRequest.getBuyerAddressId());
vvTradeOrderEntity.setContry(vvBuyerAddress.getContry());
vvTradeOrderEntity.setProvince(vvBuyerAddress.getProvince());
@ -287,13 +290,11 @@ public class AppOrderController {
vvTradeOrderEntity.setBuyerId(vvOrderRequest.getBuyerId());
vvTradeOrderEntity.setCreateTimestamp(System.currentTimeMillis());
vvTradeOrderEntity.setModifyTimestamp(System.currentTimeMillis());
vvTradeOrderDao.insertVvTradeOrder(vvTradeOrderEntity);
for (VvTradeOrderLineEntity tradeOrderLineEntity : vvTradeOrderLineEntityList) {
tradeOrderLineEntity.setTradeOrderId(vvTradeOrderEntity.getId());
vvTradeOrderLineDao.insertOrUpdateVvTradeOrderLine(tradeOrderLineEntity);
}
for (VvTradeOrderLineDTO vvTradeOrderLineDTO : vvOrderRequest.getVvTradeOrderLineDTOList()) {
vvSkuDao.updateVvSkuStockSaleCountById(vvTradeOrderLineDTO.getNum(), vvTradeOrderLineDTO.getNum(), vvTradeOrderLineDTO.getNum(), vvTradeOrderLineDTO.getSkuId());
}
@ -301,12 +302,19 @@ public class AppOrderController {
for (Map.Entry<Long, Integer> map : productNumMap.entrySet()) {
vvProductDao.updateShowSaleCountAndSaleCount(map.getValue(), map.getValue(), map.getKey());
}
DirectAPIv3JsapiPrepayResponse jsapiPrepayResponse = jsapiPrepay.prePay(vvTradeOrderEntity.getId(),
BigDecimalUtil.multiply(vvTradeOrderEntity.getAllPrice(), new BigDecimal(100)).longValue(),
vvBuyerEntity.getOpenid()
);
if (jsapiPrepayResponse != null && jsapiPrepayResponse.getPrepayId() != null) {
List<VvTradeOrderLineEntity> vvTradeOrderLineEntities = vvTradeOrderLineDao.selectVvTradeOrderLineByTradeOrderId(vvTradeOrderEntity.getId());
for (VvTradeOrderLineEntity vvTradeOrderLineEntity : vvTradeOrderLineEntities) {
vvTradeOrderLineEntity.setPayType("weixin");
vvTradeOrderLineEntity.setStatus(OrderStatusEnums.wait_pay.getStatus());
vvTradeOrderLineEntity.setTransactionId(jsapiPrepayResponse.getPrepayId());
vvTradeOrderLineDao.updateVvTradeOrderLineById(vvTradeOrderLineEntity);
}
}
return R.ok("订单创建成功");
}
@ -320,6 +328,8 @@ public class AppOrderController {
return R.ok();
}
/***
* 订单 妥投 /app/order/delivered
*/
@ -339,4 +349,8 @@ public class AppOrderController {
return R.ok();
}
}

View File

@ -3,8 +3,13 @@ package com.heyu.api.controller.vv;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.heyu.api.alibaba.request.mm.enums.OrderStatusEnums;
import com.heyu.api.common.annotation.Describe;
import com.heyu.api.data.dao.vv.VvTradeOrderLineDao;
import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity;
import com.heyu.api.data.utils.NumberUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@ -17,6 +22,8 @@ import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.security.Key;
import java.util.Base64;
import java.util.Date;
import java.util.List;
@Slf4j
@RestController
@ -24,6 +31,10 @@ import java.util.Base64;
public class AppWeiXinPayNotifyController {
@Autowired
private VvTradeOrderLineDao vvTradeOrderLineDao;
// 微信支付APIv3密钥
@Value("${eb.config.weixin.pay.apiv3key}")
private String apiv3key;
@ -80,9 +91,16 @@ public class AppWeiXinPayNotifyController {
return new String(decryptedData, StandardCharsets.UTF_8);
}
private void updateOrderStatus(String outTradeNo, String transactionId) {
// 这里是更新商户订单状态的逻辑例如标记订单已支付
System.out.println("订单 " + outTradeNo + " 已支付,交易号:" + transactionId);
log.info("订单 " + outTradeNo + " 已支付,交易号:" + transactionId + "开始更新子订单信息");
List<VvTradeOrderLineEntity> vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectByTradeOrderIdAndTransactionId(NumberUtil.objToLong(outTradeNo), transactionId);
for (VvTradeOrderLineEntity vvTradeOrderLineEntity : vvTradeOrderLineEntityList) {
vvTradeOrderLineEntity.setStatus(OrderStatusEnums.wait_shipping.getStatus());
vvTradeOrderLineEntity.setGmtPay(new Date());
vvTradeOrderLineDao.updateVvTradeOrderLineById(vvTradeOrderLineEntity);
}
}
}