Administrator
4 days ago 6e3fcdbde6ad62832753ddc8d3e1429f29ea58ee
refactor(mall): 优化活动报名相关功能

- 移除 ApiActivityOrderInfoVo 中的冗余字段
- 在 ApiActivityOrderListVo 中添加订单失效时间字段
- 实现联系人重复报名的校验逻辑
- 优化活动报名流程,防止重复报名
3 files modified
25 ■■■■■ changed files
src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityServiceImpl.java 19 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/vo/activity/ApiActivityOrderInfoVo.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/vo/activity/ApiActivityOrderListVo.java 4 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityServiceImpl.java
@@ -415,6 +415,7 @@
                new LambdaQueryWrapper<HappyActivityConnect>()
                        .eq(HappyActivityConnect::getMemberId, memberId)
                        .eq(HappyActivityConnect::getName, dto.getName())
                        .eq(HappyActivityConnect::getPhone, dto.getPhone())
        );
        if(CollUtil.isNotEmpty(happyActivityConnects)){
            throw new FebsException("已经添加过该联系人");
@@ -504,6 +505,24 @@
        }
        Long activityId = dto.getActivityId();
        List<HappyActivityOrderItem> happyActivityOrderItems = happyActivityOrderItemMapper.selectList(
                new LambdaQueryWrapper<HappyActivityOrderItem>()
                        .eq(HappyActivityOrderItem::getActivityId, activityId)
                        .in(HappyActivityOrderItem::getConnectId, connectIds)
        );
        if(CollUtil.isNotEmpty(happyActivityOrderItems)){
            //stream流操作happyActivityOrderItems,返回一个orderId的Set集合
            Set<Long> orderIdSet = happyActivityOrderItems.stream().map(HappyActivityOrderItem::getOrderId).collect(Collectors.toSet());
            List<HappyActivityOrder> happyActivityOrders = happyActivityOrderMapper.selectList(
                    new LambdaQueryWrapper<HappyActivityOrder>()
                            .in(HappyActivityOrder::getId, orderIdSet)
                            .in(HappyActivityOrder::getState, Arrays.asList(StateUpDownEnum.ORDER_STATE_WAIT_PAY.getCode(),StateUpDownEnum.ORDER_STATE_WAIT_USE.getCode()))
            );
            if(CollUtil.isNotEmpty(happyActivityOrders)){
                throw new FebsException("有报名人重复报名了活动,请重新选择");
            }
        }
        HappyActivity happyActivity = this.baseMapper.selectById(activityId);
        if (ObjectUtil.isEmpty(happyActivity)) {
            throw new FebsException("活动不存在");
src/main/java/cc/mrbird/febs/mall/vo/activity/ApiActivityOrderInfoVo.java
@@ -43,8 +43,6 @@
    @ApiModelProperty(value = "实付金额")
    private BigDecimal price;
    @ApiModelProperty(value = "订单状态 1-待支付 2-待使用 3-已使用 4-售后")
    private Integer orderState;
src/main/java/cc/mrbird/febs/mall/vo/activity/ApiActivityOrderListVo.java
@@ -42,6 +42,10 @@
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date endTime;
    @ApiModelProperty(value = "订单失效时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date failTime;
    @ApiModelProperty(value = "活动地点")
    private String address;