7.3 添加拼团有效时间:倒计时
This commit is contained in:
parent
ca9faa403b
commit
90345c7171
@ -17,6 +17,7 @@
|
||||
<result column="deduction_price" property="deductionPrice"/>
|
||||
<result column="status" property="status"/>
|
||||
<result column="out_trade_no" property="outTradeNo"/>
|
||||
<result column="out_trade_time" property="outTradeTime"/>
|
||||
<result column="biz_id" property="bizId"/>
|
||||
<result column="create_time" property="createTime"/>
|
||||
<result column="update_time" property="updateTime"/>
|
||||
@ -49,7 +50,7 @@
|
||||
|
||||
<update id="updateOrderStatus2COMPLETE" parameterType="edu.whut.infrastructure.dao.po.GroupBuyOrderList">
|
||||
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}
|
||||
</update>
|
||||
|
||||
|
@ -15,6 +15,8 @@
|
||||
<result column="complete_count" property="completeCount"/>
|
||||
<result column="lock_count" property="lockCount"/>
|
||||
<result column="status" property="status"/>
|
||||
<result column="valid_start_time" property="validStartTime"/>
|
||||
<result column="valid_end_time" property="validEndTime"/>
|
||||
<result column="create_time" property="createTime"/>
|
||||
<result column="update_time" property="updateTime"/>
|
||||
</resultMap>
|
||||
@ -22,10 +24,11 @@
|
||||
<insert id="insert" parameterType="edu.whut.infrastructure.dao.po.GroupBuyOrder">
|
||||
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()
|
||||
)
|
||||
</insert>
|
||||
|
||||
|
@ -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;
|
||||
|
||||
}
|
||||
|
@ -26,6 +26,8 @@ public class PayActivityEntity {
|
||||
private Date startTime;
|
||||
/** 拼团结束时间 */
|
||||
private Date endTime;
|
||||
/** 拼团时长(分钟)*/
|
||||
private Integer validTime;
|
||||
/** 目标数量 */
|
||||
private Integer targetCount;
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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) {
|
||||
|
@ -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;
|
||||
/** 更新时间 */
|
||||
|
@ -45,6 +45,8 @@ public class GroupBuyOrderList {
|
||||
private Integer status;
|
||||
/** 外部交易单号-确保外部调用唯一幂等 */
|
||||
private String outTradeNo;
|
||||
/** 外部交易时间 */
|
||||
private Date outTradeTime;
|
||||
/** 唯一业务ID */
|
||||
private String bizId;
|
||||
/** 创建时间 */
|
||||
|
@ -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()
|
||||
|
Loading…
x
Reference in New Issue
Block a user