课程自动复制
This commit is contained in:
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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 + "个普通课程");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -379,4 +379,39 @@
|
||||
AND t.member_id = #{memberId}
|
||||
AND a.date = #{checkDate};
|
||||
</select>
|
||||
|
||||
<select id="countNormalWeekLimit" resultType="java.lang.Integer">
|
||||
SELECT
|
||||
COUNT(0)
|
||||
FROM
|
||||
sv_member_lesson_ticket t,sv_venue_lesson a
|
||||
WHERE
|
||||
t.lesson_id = a.id
|
||||
AND t.venue_id = #{venueId}
|
||||
AND a.type = 0
|
||||
AND t.deleted = 0
|
||||
AND t.status in (0,1,3)
|
||||
AND t.member_id = #{memberId}
|
||||
AND (CASE WHEN DAYNAME(#{checkDate})='Sunday'
|
||||
THEN DATE_SUB(#{checkDate},INTERVAL 6 DAY)
|
||||
ELSE DATE_SUB(#{checkDate},INTERVAL DAYOFWEEK(#{checkDate})-2 DAY) END) <![CDATA[ <= ]]> DATE(a.date)
|
||||
AND (CASE WHEN DAYNAME(#{checkDate})='Sunday'
|
||||
THEN #{checkDate}
|
||||
ELSE DATE_ADD(#{checkDate},INTERVAL 8-DAYOFWEEK(#{checkDate}) DAY) END) <![CDATA[ >= ]]> DATE(a.date);
|
||||
</select>
|
||||
|
||||
<select id="countNormalDayLimit" resultType="java.lang.Integer">
|
||||
SELECT
|
||||
COUNT(0)
|
||||
FROM
|
||||
sv_member_lesson_ticket t,sv_venue_lesson a
|
||||
WHERE
|
||||
t.lesson_id = a.id
|
||||
AND t.venue_id = #{venueId}
|
||||
AND a.type = 0
|
||||
AND t.deleted = 0
|
||||
AND t.status in (0,1,3)
|
||||
AND t.member_id = #{memberId}
|
||||
AND a.date = #{checkDate};
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
Reference in New Issue
Block a user