|
@@ -870,17 +870,8 @@ DISCOUNT("畅学卡")
|
|
|
ActivityPlanVo activityPlan = activityPlanService.detail(orderReq.getActivityId());
|
|
|
if (activityPlan != null && activityPlan.getActivityState() == 1) {
|
|
|
if (ActivityTypeEnum.MEMBER == activityPlan.getActivityType()) {
|
|
|
- // 检查购买次数是否符合要求 待支付,支付中,支付完成的订单小于次数才可以继续购买
|
|
|
- if (activityPlan.getBuyCount() !=null && activityPlan.getBuyCount() !=-1) {
|
|
|
- int count = userOrderService.lambdaQuery()
|
|
|
- .eq(UserOrder::getActivityId, orderReq.getActivityId())
|
|
|
- .in(UserOrder::getStatus, OrderStatusEnum.WAIT_PAY.getCode(),
|
|
|
- OrderStatusEnum.PAYING.getCode(), OrderStatusEnum.PAID.getCode())
|
|
|
- .count();
|
|
|
- if (count >= activityPlan.getBuyCount()) {
|
|
|
- throw new BizException("活动以达到参与最大次数");
|
|
|
- }
|
|
|
- }
|
|
|
+
|
|
|
+ checkActivityTimes(orderReq.getUserId(),orderReq.getPaymentClient(), activityPlan.getId());
|
|
|
|
|
|
// 会员买赠活动 判断购买商品是否符合活动要求
|
|
|
Map<String, List<Long>> map = orderReq.getGoodsInfos().stream()
|
|
@@ -921,6 +912,49 @@ DISCOUNT("畅学卡")
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 检查活动购买次数
|
|
|
+ *
|
|
|
+ * @param userId 用户ID
|
|
|
+ * @param client 客户端
|
|
|
+ * @param activityId 活动ID
|
|
|
+ */
|
|
|
+ private void checkActivityTimes(Long userId,ClientEnum client, Long activityId) {
|
|
|
+ ActivityPlan activityPlan = activityPlanService.getById(activityId);
|
|
|
+ if (activityPlan == null) {
|
|
|
+ throw new BizException("活动不存在");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 检查购买次数是否符合要求 待支付,支付中,支付完成的订单小于次数才可以继续购买
|
|
|
+ if (activityPlan.getBuyCount() !=null && activityPlan.getBuyCount() !=-1) {
|
|
|
+ int count = getActivityCount(userId, client, activityId);
|
|
|
+ if (count >= activityPlan.getBuyCount()) {
|
|
|
+ throw new BizException("活动以达到参与最大次数");
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询活动参与次数
|
|
|
+ *
|
|
|
+ * @param userId 用户ID
|
|
|
+ * @param client 客户端
|
|
|
+ * @param activityId 活动ID
|
|
|
+ * @return int 活动参与次数
|
|
|
+ */
|
|
|
+ private int getActivityCount(Long userId, ClientEnum client, Long activityId) {
|
|
|
+ return userOrderService.lambdaQuery()
|
|
|
+ .eq(UserOrder::getActivityId, activityId)
|
|
|
+ .eq(UserOrder::getUserId, userId)
|
|
|
+ .eq(UserOrder::getOrderClient, client)
|
|
|
+ .in(UserOrder::getStatus, OrderStatusEnum.WAIT_PAY.getCode(),
|
|
|
+ OrderStatusEnum.PAYING.getCode(), OrderStatusEnum.PAID.getCode())
|
|
|
+ .count();
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 用户支付请求
|
|
|
*
|