From 90345c7171d8e85e46c516dafce2c7cbb7e9da11 Mon Sep 17 00:00:00 2001
From: zhangsan <646228430@qq.com>
Date: Thu, 3 Jul 2025 18:48:44 +0800
Subject: [PATCH] =?UTF-8?q?7.3=20=E6=B7=BB=E5=8A=A0=E6=8B=BC=E5=9B=A2?=
=?UTF-8?q?=E6=9C=89=E6=95=88=E6=97=B6=E9=97=B4=EF=BC=9A=E5=80=92=E8=AE=A1?=
=?UTF-8?q?=E6=97=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../mapper/group_buy_order_list_mapper.xml | 3 ++-
.../mybatis/mapper/group_buy_order_mapper.xml | 7 +++++--
.../trade/model/entity/GroupBuyTeamEntity.java | 6 ++++++
.../trade/model/entity/PayActivityEntity.java | 2 ++
.../model/entity/TradePaySuccessEntity.java | 5 ++++-
.../adapter/repository/TradeRepository.java | 16 ++++++++++++++++
.../infrastructure/dao/po/GroupBuyOrder.java | 4 ++++
.../infrastructure/dao/po/GroupBuyOrderList.java | 2 ++
.../whut/trigger/http/MarketTradeController.java | 1 +
9 files changed, 42 insertions(+), 4 deletions(-)
diff --git a/group-buying-sys-app/src/main/resources/mybatis/mapper/group_buy_order_list_mapper.xml b/group-buying-sys-app/src/main/resources/mybatis/mapper/group_buy_order_list_mapper.xml
index 666a93f..3117fc3 100644
--- a/group-buying-sys-app/src/main/resources/mybatis/mapper/group_buy_order_list_mapper.xml
+++ b/group-buying-sys-app/src/main/resources/mybatis/mapper/group_buy_order_list_mapper.xml
@@ -17,6 +17,7 @@
+
@@ -49,7 +50,7 @@
update group_buy_order_list
- set status = 1, update_time = now()
+ set status = 1, out_trade_time = #{outTradeTime}, update_time = now()
where out_trade_no = #{outTradeNo} and user_id = #{userId}
diff --git a/group-buying-sys-app/src/main/resources/mybatis/mapper/group_buy_order_mapper.xml b/group-buying-sys-app/src/main/resources/mybatis/mapper/group_buy_order_mapper.xml
index b36e658..9be2123 100644
--- a/group-buying-sys-app/src/main/resources/mybatis/mapper/group_buy_order_mapper.xml
+++ b/group-buying-sys-app/src/main/resources/mybatis/mapper/group_buy_order_mapper.xml
@@ -15,6 +15,8 @@
+
+
@@ -22,10 +24,11 @@
insert into group_buy_order(
team_id, activity_id, source, channel, original_price,
- deduction_price, pay_price, target_count, complete_count, lock_count, status, create_time, update_time
+ deduction_price, pay_price, target_count, complete_count,
+ lock_count, status, valid_start_time, valid_end_time, create_time, update_time
) values(
#{teamId}, #{activityId}, #{source}, #{channel}, #{originalPrice},
- #{deductionPrice}, #{payPrice}, #{targetCount}, #{completeCount}, #{lockCount}, 0, now(), now()
+ #{deductionPrice}, #{payPrice}, #{targetCount}, #{completeCount}, #{lockCount}, 0, #{validStartTime}, #{validEndTime} ,now(), now()
)
diff --git a/group-buying-sys-domain/src/main/java/edu/whut/domain/trade/model/entity/GroupBuyTeamEntity.java b/group-buying-sys-domain/src/main/java/edu/whut/domain/trade/model/entity/GroupBuyTeamEntity.java
index 74bd01c..c4e372b 100644
--- a/group-buying-sys-domain/src/main/java/edu/whut/domain/trade/model/entity/GroupBuyTeamEntity.java
+++ b/group-buying-sys-domain/src/main/java/edu/whut/domain/trade/model/entity/GroupBuyTeamEntity.java
@@ -5,6 +5,8 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
+import java.util.Date;
+
/**
* 拼团组队实体对象
*/
@@ -26,5 +28,9 @@ public class GroupBuyTeamEntity {
private Integer lockCount;
/** 状态(0-拼单中、1-完成、2-失败) */
private GroupBuyOrderStatusEnumVO status;
+ /** 拼团开始时间 - 参与拼团时间 */
+ private Date validStartTime;
+ /** 拼团结束时间 - 拼团有效时长 */
+ private Date validEndTime;
}
diff --git a/group-buying-sys-domain/src/main/java/edu/whut/domain/trade/model/entity/PayActivityEntity.java b/group-buying-sys-domain/src/main/java/edu/whut/domain/trade/model/entity/PayActivityEntity.java
index eb06cdb..d4fa442 100644
--- a/group-buying-sys-domain/src/main/java/edu/whut/domain/trade/model/entity/PayActivityEntity.java
+++ b/group-buying-sys-domain/src/main/java/edu/whut/domain/trade/model/entity/PayActivityEntity.java
@@ -26,6 +26,8 @@ public class PayActivityEntity {
private Date startTime;
/** 拼团结束时间 */
private Date endTime;
+ /** 拼团时长(分钟)*/
+ private Integer validTime;
/** 目标数量 */
private Integer targetCount;
diff --git a/group-buying-sys-domain/src/main/java/edu/whut/domain/trade/model/entity/TradePaySuccessEntity.java b/group-buying-sys-domain/src/main/java/edu/whut/domain/trade/model/entity/TradePaySuccessEntity.java
index 5a0f370..129a052 100644
--- a/group-buying-sys-domain/src/main/java/edu/whut/domain/trade/model/entity/TradePaySuccessEntity.java
+++ b/group-buying-sys-domain/src/main/java/edu/whut/domain/trade/model/entity/TradePaySuccessEntity.java
@@ -5,6 +5,8 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
+import java.util.Date;
+
/**
* 交易支付订单实体对象
*/
@@ -22,5 +24,6 @@ public class TradePaySuccessEntity {
private String userId;
/** 外部交易单号 */
private String outTradeNo;
-
+ /** 外部交易时间 */
+ private Date outTradeTime;
}
diff --git a/group-buying-sys-infrastructure/src/main/java/edu/whut/infrastructure/adapter/repository/TradeRepository.java b/group-buying-sys-infrastructure/src/main/java/edu/whut/infrastructure/adapter/repository/TradeRepository.java
index bd9e3d6..2b694fc 100644
--- a/group-buying-sys-infrastructure/src/main/java/edu/whut/infrastructure/adapter/repository/TradeRepository.java
+++ b/group-buying-sys-infrastructure/src/main/java/edu/whut/infrastructure/adapter/repository/TradeRepository.java
@@ -15,6 +15,7 @@ import edu.whut.infrastructure.dao.po.GroupBuyActivity;
import edu.whut.infrastructure.dao.po.GroupBuyOrder;
import edu.whut.infrastructure.dao.po.GroupBuyOrderList;
import edu.whut.infrastructure.dao.po.NotifyTask;
+import edu.whut.infrastructure.dcc.DCCService;
import edu.whut.types.common.Constants;
import edu.whut.types.enums.ActivityStatusEnumVO;
import edu.whut.types.enums.GroupBuyOrderStatusEnumVO;
@@ -28,6 +29,8 @@ import org.springframework.dao.DuplicateKeyException;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
+import java.util.Calendar;
+import java.util.Date;
import java.util.HashMap;
import java.util.List;
@@ -49,6 +52,8 @@ public class TradeRepository implements ITradeRepository {
private final INotifyTaskDao notifyTaskDao;
+ private final DCCService dccService;
+
/**
* 根据外部交易号 & 用户id 查询未支付的锁单记录(用于幂等)
*/
@@ -96,6 +101,11 @@ public class TradeRepository implements ITradeRepository {
if (StringUtils.isBlank(teamId)) {
// 新建团队,随机 8 位数字作 teamId(示例中用 RandomStringUtils,线上可换雪花算法等)
teamId = RandomStringUtils.randomNumeric(8);
+ // 日期处理
+ Date currentDate = new Date();
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(currentDate);
+ calendar.add(Calendar.MINUTE, activity.getValidTime());
// 构建拼团订单
GroupBuyOrder orderPo = GroupBuyOrder.builder()
@@ -109,6 +119,8 @@ public class TradeRepository implements ITradeRepository {
.targetCount(activity.getTargetCount())
.completeCount(0)
.lockCount(1) // 首单已锁定
+ .validStartTime(currentDate)
+ .validEndTime(calendar.getTime())
.build();
groupBuyOrderDao.insert(orderPo);
@@ -220,6 +232,8 @@ public class TradeRepository implements ITradeRepository {
.completeCount(groupBuyOrder.getCompleteCount())
.lockCount(groupBuyOrder.getLockCount())
.status(GroupBuyOrderStatusEnumVO.valueOf(groupBuyOrder.getStatus()))
+ .validStartTime(groupBuyOrder.getValidStartTime())
+ .validEndTime(groupBuyOrder.getValidEndTime())
.build();
}
@@ -245,6 +259,8 @@ public class TradeRepository implements ITradeRepository {
GroupBuyOrderList req = new GroupBuyOrderList();
req.setUserId(user.getUserId());
req.setOutTradeNo(payOK.getOutTradeNo());
+ req.setOutTradeTime(payOK.getOutTradeTime());
+
//更新订单状态到已完成
int rows = groupBuyOrderListDao.updateOrderStatus2COMPLETE(req);
if (rows != 1) {
diff --git a/group-buying-sys-infrastructure/src/main/java/edu/whut/infrastructure/dao/po/GroupBuyOrder.java b/group-buying-sys-infrastructure/src/main/java/edu/whut/infrastructure/dao/po/GroupBuyOrder.java
index 32881ae..11bee84 100644
--- a/group-buying-sys-infrastructure/src/main/java/edu/whut/infrastructure/dao/po/GroupBuyOrder.java
+++ b/group-buying-sys-infrastructure/src/main/java/edu/whut/infrastructure/dao/po/GroupBuyOrder.java
@@ -41,6 +41,10 @@ public class GroupBuyOrder {
private Integer lockCount;
/** 状态(0-拼单中、1-完成、2-失败) */
private Integer status;
+ /** 拼团开始时间 - 参与拼团时间 */
+ private Date validStartTime;
+ /** 拼团结束时间 - 拼团有效时长 */
+ private Date validEndTime;
/** 创建时间 */
private Date createTime;
/** 更新时间 */
diff --git a/group-buying-sys-infrastructure/src/main/java/edu/whut/infrastructure/dao/po/GroupBuyOrderList.java b/group-buying-sys-infrastructure/src/main/java/edu/whut/infrastructure/dao/po/GroupBuyOrderList.java
index ddfda2f..fc4347a 100644
--- a/group-buying-sys-infrastructure/src/main/java/edu/whut/infrastructure/dao/po/GroupBuyOrderList.java
+++ b/group-buying-sys-infrastructure/src/main/java/edu/whut/infrastructure/dao/po/GroupBuyOrderList.java
@@ -45,6 +45,8 @@ public class GroupBuyOrderList {
private Integer status;
/** 外部交易单号-确保外部调用唯一幂等 */
private String outTradeNo;
+ /** 外部交易时间 */
+ private Date outTradeTime;
/** 唯一业务ID */
private String bizId;
/** 创建时间 */
diff --git a/group-buying-sys-trigger/src/main/java/edu/whut/trigger/http/MarketTradeController.java b/group-buying-sys-trigger/src/main/java/edu/whut/trigger/http/MarketTradeController.java
index cf6988b..ef69566 100644
--- a/group-buying-sys-trigger/src/main/java/edu/whut/trigger/http/MarketTradeController.java
+++ b/group-buying-sys-trigger/src/main/java/edu/whut/trigger/http/MarketTradeController.java
@@ -131,6 +131,7 @@ public class MarketTradeController implements IMarketTradeService {
.activityName(discountVO.getActivityName())
.startTime(discountVO.getStartTime())
.endTime(discountVO.getEndTime())
+ .validTime(discountVO.getValidTime())
.targetCount(discountVO.getTarget())
.build(),
PayDiscountEntity.builder()