fixbug 预约限制修改

This commit is contained in:
limqhz
2021-05-28 21:42:24 +08:00
parent 0876337a66
commit 0231bad451
4 changed files with 20 additions and 14 deletions

View File

@@ -114,15 +114,17 @@ public interface VenueLessonTicketMapper {
* 检验是否满足公益课当天预约限制 * 检验是否满足公益课当天预约限制
* @param memberId * @param memberId
* @param venueId * @param venueId
* @param checkDate
*/ */
@NoPlatform @NoPlatform
Integer countFreeDayLimit(@Param("memberId") Integer memberId,@Param("venueId") Integer venueId); Integer countFreeDayLimit(@Param("memberId") Integer memberId, @Param("venueId") Integer venueId, @Param("checkDate") String checkDate);
/** /**
* 检验是否满足公益课当周预约限制 * 检验是否满足公益课当周预约限制
* @param memberId * @param memberId
* @param venueId * @param venueId
* @param checkDate
*/ */
@NoPlatform @NoPlatform
Integer countFreeWeekLimit(@Param("memberId") Integer memberId,@Param("venueId") Integer venueId); Integer countFreeWeekLimit(@Param("memberId") Integer memberId, @Param("venueId") Integer venueId, @Param("checkDate") String checkDate);
} }

View File

@@ -204,7 +204,7 @@ public class MemberLessonTicketService extends BaseServiceImpl {
Integer limitWeek = venue.getLimitWeek() == null ? 2 : venue.getLimitWeek(); Integer limitWeek = venue.getLimitWeek() == null ? 2 : venue.getLimitWeek();
// 1、对每天的课设置预约次数的限制 // 1、对每天的课设置预约次数的限制
// 2、对每周的预约次数进行次数限制 // 2、对每周的预约次数进行次数限制
venueLessonService.checkFreeLimit(member.getId(),venueLesson.getVenueId(),limitDay,limitWeek); venueLessonService.checkFreeLimit(member.getId(),venueLesson.getVenueId(),limitDay,limitWeek,venueLesson.getDate());
} }
venueLessonService.decide(venueLesson, lessonTicketOrderDTO.getNum()); venueLessonService.decide(venueLesson, lessonTicketOrderDTO.getNum());

View File

@@ -338,13 +338,18 @@ public class VenueLessonService extends BaseServiceImpl {
* @param venueId * @param venueId
* @param limitDay * @param limitDay
* @param limitWeek * @param limitWeek
* @param date
*/ */
public void checkFreeLimit(Integer memberId, Integer venueId, Integer limitDay, Integer limitWeek) { public void checkFreeLimit(Integer memberId, Integer venueId, Integer limitDay, Integer limitWeek, Date date) {
Integer dayCount = venueLessonTicketMapper.countFreeDayLimit(memberId, venueId); if (date == null){
date = new Date();
}
String checkDate = DateUtilCard.getStrFromDate(date);
Integer dayCount = venueLessonTicketMapper.countFreeDayLimit(memberId, venueId, checkDate);
if (dayCount + 1 > limitDay){ if (dayCount + 1 > limitDay){
throw new ServiceException("该场馆当天最多可预约" + limitDay + "个公益课"); throw new ServiceException("该场馆当天最多可预约" + limitDay + "个公益课");
} }
Integer weekCount = venueLessonTicketMapper.countFreeWeekLimit(memberId, venueId); Integer weekCount = venueLessonTicketMapper.countFreeWeekLimit(memberId, venueId, checkDate);
if (weekCount + 1 > limitWeek){ if (weekCount + 1 > limitWeek){
throw new ServiceException("该场馆一周最多可预约" + limitWeek + "个公益课"); throw new ServiceException("该场馆一周最多可预约" + limitWeek + "个公益课");
} }

View File

@@ -357,12 +357,12 @@
AND t.deleted = 0 AND t.deleted = 0
AND t.status in (0,1,3) AND t.status in (0,1,3)
AND t.member_id = #{memberId} AND t.member_id = #{memberId}
AND (CASE WHEN DAYNAME(CURDATE())='Sunday' AND (CASE WHEN DAYNAME(#{checkDate})='Sunday'
THEN DATE_SUB(CURDATE(),INTERVAL 6 DAY) THEN DATE_SUB(#{checkDate},INTERVAL 6 DAY)
ELSE DATE_SUB(CURDATE(),INTERVAL DAYOFWEEK(CURDATE())-2 DAY) END) <![CDATA[ <= ]]> DATE(a.date) ELSE DATE_SUB(#{checkDate},INTERVAL DAYOFWEEK(#{checkDate})-2 DAY) END) <![CDATA[ <= ]]> DATE(a.date)
AND (CASE WHEN DAYNAME(CURDATE())='Sunday' AND (CASE WHEN DAYNAME(#{checkDate})='Sunday'
THEN CURDATE() THEN #{checkDate}
ELSE DATE_ADD(CURDATE(),INTERVAL 8-DAYOFWEEK(CURDATE()) DAY) END) <![CDATA[ >= ]]> DATE(a.date); ELSE DATE_ADD(#{checkDate},INTERVAL 8-DAYOFWEEK(#{checkDate}) DAY) END) <![CDATA[ >= ]]> DATE(a.date);
</select> </select>
<select id="countFreeDayLimit" resultType="java.lang.Integer"> <select id="countFreeDayLimit" resultType="java.lang.Integer">
@@ -377,7 +377,6 @@
AND t.deleted = 0 AND t.deleted = 0
AND t.status in (0,1,3) AND t.status in (0,1,3)
AND t.member_id = #{memberId} AND t.member_id = #{memberId}
AND CURDATE() <![CDATA[ <= ]]> DATE(a.date) AND a.date = #{checkDate};
AND CURDATE() <![CDATA[ >= ]]> DATE(a.date);
</select> </select>
</mapper> </mapper>