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