diff --git a/service/src/main/java/com/sv/mapper/VenueLessonTicketMapper.java b/service/src/main/java/com/sv/mapper/VenueLessonTicketMapper.java index 1116edf..2c313e8 100644 --- a/service/src/main/java/com/sv/mapper/VenueLessonTicketMapper.java +++ b/service/src/main/java/com/sv/mapper/VenueLessonTicketMapper.java @@ -127,4 +127,23 @@ public interface VenueLessonTicketMapper { */ @NoPlatform Integer countFreeWeekLimit(@Param("memberId") Integer memberId, @Param("venueId") Integer venueId, @Param("checkDate") String checkDate); + + /** + * 检验是否满足普通课当天预约限制 + * @param memberId + * @param venueId + * @param checkDate + */ + @NoPlatform + Integer countNormalDayLimit(@Param("memberId") Integer memberId, @Param("venueId") Integer venueId, @Param("checkDate") String checkDate); + + /** + * 检验是否满足普通课当周预约限制 + * @param memberId + * @param venueId + * @param checkDate + */ + @NoPlatform + Integer countNormalWeekLimit(@Param("memberId") Integer memberId, @Param("venueId") Integer venueId, @Param("checkDate") String checkDate); + } diff --git a/service/src/main/java/com/sv/service/api/MemberLessonTicketService.java b/service/src/main/java/com/sv/service/api/MemberLessonTicketService.java index faf4f57..3251c39 100644 --- a/service/src/main/java/com/sv/service/api/MemberLessonTicketService.java +++ b/service/src/main/java/com/sv/service/api/MemberLessonTicketService.java @@ -194,17 +194,22 @@ public class MemberLessonTicketService extends BaseServiceImpl { // 1判断选择的课程是否可预约 VenueLesson venueLesson = venueLessonService.findById(lessonTicketOrderDTO.getLessonId()); + Venue venue = venueService.findById(venueLesson.getVenueId()); if (new Integer(1).equals(venueLesson.getType())) { - // 课程是公益课 判断用户是否可以购买公益课 memberService.verifyMemberBanType(member); - // 课程是公益课 - Venue venue = venueService.findById(venueLesson.getVenueId()); Integer limitDay = venue.getLimitDay() == null ? 1 : venue.getLimitDay(); Integer limitWeek = venue.getLimitWeek() == null ? 2 : venue.getLimitWeek(); // 1、对每天的课设置预约次数的限制 // 2、对每周的预约次数进行次数限制 venueLessonService.checkFreeLimit(member.getId(),venueLesson.getVenueId(),limitDay,limitWeek,venueLesson.getDate()); + }else { + // 课程是非公益课 + Integer limitNoDay = venue.getLimitNoDay() == null ? 1 : venue.getLimitNoDay(); + Integer limitNoWeek = venue.getLimitNoWeek() == null ? 2 : venue.getLimitNoWeek(); + // 1、对每天的课设置预约次数的限制 + // 2、对每周的预约次数进行次数限制 + venueLessonService.checkNormalLimit(member.getId(),venueLesson.getVenueId(),limitNoDay,limitNoWeek,venueLesson.getDate()); } venueLessonService.decide(venueLesson, lessonTicketOrderDTO.getNum()); diff --git a/service/src/main/java/com/sv/service/api/VenueLessonService.java b/service/src/main/java/com/sv/service/api/VenueLessonService.java index 8ad200a..18661d3 100644 --- a/service/src/main/java/com/sv/service/api/VenueLessonService.java +++ b/service/src/main/java/com/sv/service/api/VenueLessonService.java @@ -354,5 +354,29 @@ public class VenueLessonService extends BaseServiceImpl { throw new ServiceException("该场馆一周最多可预约" + limitWeek + "个公益课"); } } + + /** + * 检验是否满足公益课预约限制 + * @param memberId + * @param venueId + * @param limitNoDay + * @param limitNoWeek + * @param date + */ + public void checkNormalLimit(Integer memberId, Integer venueId, Integer limitNoDay, Integer limitNoWeek, Date date) { + if (date == null){ + date = new Date(); + } + String checkDate = DateUtilCard.getStrFromDate(date); + Integer dayCount = venueLessonTicketMapper.countNormalDayLimit(memberId, venueId, checkDate); + if (dayCount + 1 > limitNoDay){ + throw new ServiceException("该场馆当天最多可预约" + limitNoDay + "个普通课程"); + } + Integer weekCount = venueLessonTicketMapper.countNormalWeekLimit(memberId, venueId, checkDate); + if (weekCount + 1 > limitNoWeek){ + throw new ServiceException("该场馆一周最多可预约" + limitNoWeek + "个普通课程"); + } + } + } diff --git a/service/src/main/resources/mybatis/mapper/sv/VenueLessonTicketMapper.xml b/service/src/main/resources/mybatis/mapper/sv/VenueLessonTicketMapper.xml index 33c74f7..dfcc94c 100644 --- a/service/src/main/resources/mybatis/mapper/sv/VenueLessonTicketMapper.xml +++ b/service/src/main/resources/mybatis/mapper/sv/VenueLessonTicketMapper.xml @@ -379,4 +379,39 @@ AND t.member_id = #{memberId} AND a.date = #{checkDate}; + + + +