diff --git a/entity/src/main/java/com/sv/dto/api/VenueDTO.java b/entity/src/main/java/com/sv/dto/api/VenueDTO.java index 741a6f7..8553003 100644 --- a/entity/src/main/java/com/sv/dto/api/VenueDTO.java +++ b/entity/src/main/java/com/sv/dto/api/VenueDTO.java @@ -19,7 +19,7 @@ public class VenueDTO implements Serializable { /** - * + * */ private Integer id; @@ -122,6 +122,16 @@ public class VenueDTO implements Serializable { */ private Integer deleted; + /** + * 每天预约限制 + */ + private Integer limitDay; + + /** + * 每周预约限制 + */ + private Integer limitWeek; + /** * 场馆图片列表 */ @@ -140,7 +150,7 @@ public class VenueDTO implements Serializable { /** * 设置 * - * @param id + * @param id */ public void setId(Integer id){ this.id = id; @@ -149,7 +159,7 @@ public class VenueDTO implements Serializable { /** * 获取 * - * @return + * @return */ public Integer getId(){ return id; @@ -527,4 +537,20 @@ public class VenueDTO implements Serializable { public void setCodeUrl(String codeUrl) { this.codeUrl = codeUrl; } -} \ No newline at end of file + + public Integer getLimitDay() { + return limitDay; + } + + public void setLimitDay(Integer limitDay) { + this.limitDay = limitDay; + } + + public Integer getLimitWeek() { + return limitWeek; + } + + public void setLimitWeek(Integer limitWeek) { + this.limitWeek = limitWeek; + } +} diff --git a/entity/src/main/java/com/sv/dto/api/VenueLessonDTO.java b/entity/src/main/java/com/sv/dto/api/VenueLessonDTO.java index 88f220e..cec0e0d 100644 --- a/entity/src/main/java/com/sv/dto/api/VenueLessonDTO.java +++ b/entity/src/main/java/com/sv/dto/api/VenueLessonDTO.java @@ -22,9 +22,8 @@ import java.util.List; */ public class VenueLessonDTO implements Serializable { - /** - * + * */ private Integer id; @@ -180,6 +179,11 @@ public class VenueLessonDTO implements Serializable { */ private String venueName; + /** + * 可取消预约时间(小时) + */ + private Integer orderLimit; + /** * 日期集合 */ @@ -189,7 +193,7 @@ public class VenueLessonDTO implements Serializable { /** * 设置 * - * @param id + * @param id */ public void setId(Integer id){ this.id = id; @@ -198,7 +202,7 @@ public class VenueLessonDTO implements Serializable { /** * 获取 * - * @return + * @return */ public Integer getId(){ return id; @@ -615,4 +619,12 @@ public class VenueLessonDTO implements Serializable { public void setType(Integer type) { this.type = type; } -} \ No newline at end of file + + public Integer getOrderLimit() { + return orderLimit; + } + + public void setOrderLimit(Integer orderLimit) { + this.orderLimit = orderLimit; + } +} diff --git a/entity/src/main/java/com/sv/entity/Venue.java b/entity/src/main/java/com/sv/entity/Venue.java index 4ceddaf..70b0e83 100644 --- a/entity/src/main/java/com/sv/entity/Venue.java +++ b/entity/src/main/java/com/sv/entity/Venue.java @@ -151,6 +151,16 @@ public class Venue implements Serializable { */ private Integer deleted; + /** + * 每天预约限制 + */ + private Integer limitDay; + + /** + * 每周预约限制 + */ + private Integer limitWeek; + /** * 设置 @@ -574,4 +584,20 @@ public class Venue implements Serializable { public void setNumber(Integer number) { this.number = number; } -} \ No newline at end of file + + public Integer getLimitDay() { + return limitDay; + } + + public void setLimitDay(Integer limitDay) { + this.limitDay = limitDay; + } + + public Integer getLimitWeek() { + return limitWeek; + } + + public void setLimitWeek(Integer limitWeek) { + this.limitWeek = limitWeek; + } +} diff --git a/entity/src/main/java/com/sv/entity/VenueLesson.java b/entity/src/main/java/com/sv/entity/VenueLesson.java index 3615448..3cb98e9 100644 --- a/entity/src/main/java/com/sv/entity/VenueLesson.java +++ b/entity/src/main/java/com/sv/entity/VenueLesson.java @@ -20,7 +20,7 @@ public class VenueLesson implements Serializable { /** - * + * */ private Integer id; @@ -136,12 +136,15 @@ public class VenueLesson implements Serializable { */ private Integer deleted; - + /** + * 可取消预约时间(小时) + */ + private Integer orderLimit; /** * 设置 * - * @param id + * @param id */ public void setId(Integer id){ this.id = id; @@ -150,7 +153,7 @@ public class VenueLesson implements Serializable { /** * 获取 * - * @return + * @return */ public Integer getId(){ return id; @@ -520,4 +523,12 @@ public class VenueLesson implements Serializable { public void setType(Integer type) { this.type = type; } -} \ No newline at end of file + + public Integer getOrderLimit() { + return orderLimit; + } + + public void setOrderLimit(Integer orderLimit) { + this.orderLimit = orderLimit; + } +} diff --git a/oms/oms-h5/src/views/venue/edit.vue b/oms/oms-h5/src/views/venue/edit.vue index d966a26..e2387a8 100644 --- a/oms/oms-h5/src/views/venue/edit.vue +++ b/oms/oms-h5/src/views/venue/edit.vue @@ -81,6 +81,16 @@ + + + + + + + + + +
*请点击地图选择一个位置,用于小程序前端导航
@@ -126,7 +136,7 @@ 删除
- + 添加时间段价格 @@ -213,6 +223,8 @@ export default { starTime : '', endTime:'', priceDate: undefined, + limitDay: 1, + limitWeek: 1, }, imgs: [], timeData: undefined, @@ -336,6 +348,8 @@ export default { this.form.businessStartTime = response.venue.businessStartTime; this.form.businessEndTime = response.venue.businessEndTime; this.form.cardContent = response.venue.cardContent; + this.form.limitDay = response.venue.limitDay; + this.form.limitWeek = response.venue.limitWeek; this.timeData = [ response.venue.businessStartTime, response.venue.businessEndTime @@ -370,7 +384,7 @@ export default { starTime : this.form.priceDate[0], endTime : this.form.priceDate[1], }); - + }); }); }, diff --git a/oms/oms-h5/src/views/venue/lesson/edit.vue b/oms/oms-h5/src/views/venue/lesson/edit.vue index a718d9c..3a3b0c2 100644 --- a/oms/oms-h5/src/views/venue/lesson/edit.vue +++ b/oms/oms-h5/src/views/venue/lesson/edit.vue @@ -60,6 +60,11 @@ + + + + + @@ -147,7 +152,8 @@ export default { platformId: '', lessonImage: [], tags: [], - note: '' + note: '', + orderLimit: 48 }, multip: 3, imgs: [], @@ -253,6 +259,7 @@ export default { this.form.tags = response.venueLesson.tags this.form.note = response.venueLesson.note this.form.type = response.venueLesson.type + this.form.orderLimit = response.venueLesson.orderLimit response.venueLesson.lessonImage.forEach(element => { this.imgs.push({ name: element, url: element }) }) diff --git a/service/src/main/java/com/sv/mapper/MemberLessonTicketMapper.java b/service/src/main/java/com/sv/mapper/MemberLessonTicketMapper.java index a8a8f06..1f55959 100644 --- a/service/src/main/java/com/sv/mapper/MemberLessonTicketMapper.java +++ b/service/src/main/java/com/sv/mapper/MemberLessonTicketMapper.java @@ -1,5 +1,6 @@ package com.sv.mapper; +import com.sv.annotation.NoPlatform; import com.sv.annotation.PlatformKey; import com.sv.dto.api.MemberLessonTicketDTO; import com.sv.dto.api.MemberLessonTicketDetailDTO; @@ -155,4 +156,4 @@ public interface MemberLessonTicketMapper { Integer findByZero(@Param("memberId") Integer memberId,@Param("lessonId") Integer lessonId); List findTicketByStatusAndTime(@Param("memberId") Integer memberId,@Param("status") Integer status,@Param("startDate") String startDate,@Param("endDate") String endDate); -} \ No newline at end of file +} diff --git a/service/src/main/java/com/sv/mapper/VenueLessonTicketMapper.java b/service/src/main/java/com/sv/mapper/VenueLessonTicketMapper.java index 45f1c35..fc9f9b6 100644 --- a/service/src/main/java/com/sv/mapper/VenueLessonTicketMapper.java +++ b/service/src/main/java/com/sv/mapper/VenueLessonTicketMapper.java @@ -1,5 +1,6 @@ package com.sv.mapper; +import com.sv.annotation.NoPlatform; import com.sv.annotation.PlatformKey; import com.sv.entity.MemberLessonTicket; import com.sv.entity.VenueLessonTicket; @@ -108,4 +109,20 @@ public interface VenueLessonTicketMapper { */ @PlatformKey Integer findNum(Integer venueId); -} \ No newline at end of file + + /** + * 检验是否满足公益课当天预约限制 + * @param memberId + * @param venueId + */ + @NoPlatform + Integer countFreeDayLimit(@Param("memberId") Integer memberId,@Param("venueId") Integer venueId); + + /** + * 检验是否满足公益课当周预约限制 + * @param memberId + * @param venueId + */ + @NoPlatform + Integer countFreeWeekLimit(@Param("memberId") Integer memberId,@Param("venueId") Integer venueId); +} 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 2a57ac2..e159e21 100644 --- a/service/src/main/java/com/sv/service/api/MemberLessonTicketService.java +++ b/service/src/main/java/com/sv/service/api/MemberLessonTicketService.java @@ -55,6 +55,8 @@ public class MemberLessonTicketService extends BaseServiceImpl { @Resource private VenueLessonService venueLessonService; @Resource + private VenueService venueService; + @Resource private VenueLessonTicketService venueLessonTicketService; @Resource private MemberCardOrderService memberCardOrderService; @@ -196,6 +198,13 @@ public class MemberLessonTicketService extends BaseServiceImpl { // 课程是公益课 判断用户是否可以购买公益课 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); } venueLessonService.decide(venueLesson, lessonTicketOrderDTO.getNum()); @@ -494,8 +503,11 @@ public class MemberLessonTicketService extends BaseServiceImpl { double min = between / 3600; DecimalFormat df = new DecimalFormat("#.#"); Double hour = Double.parseDouble(df.format(min)); - Double subHour = 48D; - if (hour <= subHour) { + Integer orderLimit = venueLesson.getOrderLimit(); + if (orderLimit == null){ + orderLimit = 48; + } + if (hour <= orderLimit) { throw new ServiceException(ExceptionCodeTemplate.LESSON_CANCEL); } 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 9476242..64f833b 100644 --- a/service/src/main/java/com/sv/service/api/VenueLessonService.java +++ b/service/src/main/java/com/sv/service/api/VenueLessonService.java @@ -4,10 +4,9 @@ import com.github.pagehelper.PageHelper; import com.sv.dto.api.VenueLessonDTO; import com.sv.dto.app.VenueLessonStatus; import com.sv.entity.Member; -import com.sv.entity.MemberLessonTicket; import com.sv.entity.VenueLesson; -import com.sv.entity.VenueLessonTicket; import com.sv.mapper.VenueLessonMapper; +import com.sv.mapper.VenueLessonTicketMapper; import com.sv.service.api.util.DateUtilCard; import com.sv.service.api.util.WeekDayUtil; import com.ydd.framework.core.common.Pagination; @@ -45,7 +44,7 @@ public class VenueLessonService extends BaseServiceImpl { @Resource private MemberService memberService; @Resource - private VenueLessonTicketService venueLessonTicketService; + private VenueLessonTicketMapper venueLessonTicketMapper; /** * 创建场馆课程 @@ -333,5 +332,22 @@ public class VenueLessonService extends BaseServiceImpl { return venueLessonMapper.getLessonStatus(venueId); } + /** + * 检验是否满足公益课预约限制 + * @param memberId + * @param venueId + * @param limitDay + * @param limitWeek + */ + public void checkFreeLimit(Integer memberId, Integer venueId, Integer limitDay, Integer limitWeek) { + Integer dayCount = venueLessonTicketMapper.countFreeDayLimit(memberId, venueId); + if (dayCount + 1 > limitDay){ + throw new ServiceException("该场馆当天最多可预约" + limitDay + "个公益课"); + } + Integer weekCount = venueLessonTicketMapper.countFreeWeekLimit(memberId, venueId); + if (weekCount + 1 > limitWeek){ + throw new ServiceException("该场馆一周最多可预约" + limitWeek + "个公益课"); + } + } } diff --git a/service/src/main/resources/mybatis/mapper/sv/VenueLessonMapper.xml b/service/src/main/resources/mybatis/mapper/sv/VenueLessonMapper.xml index dab0105..246ae90 100644 --- a/service/src/main/resources/mybatis/mapper/sv/VenueLessonMapper.xml +++ b/service/src/main/resources/mybatis/mapper/sv/VenueLessonMapper.xml @@ -24,6 +24,7 @@ + @@ -70,7 +71,8 @@ deleted, note, status, - type + type, + order_limit @@ -96,6 +98,7 @@ #{deleted, jdbcType=TINYINT}, #{note, jdbcType=VARCHAR}, #{status, jdbcType=INTEGER} + #{orderLimit, jdbcType=INTEGER} @@ -177,6 +180,9 @@ deleted, + + order_limit, + @@ -242,6 +248,9 @@ #{deleted}, + + #{orderLimit}, + @@ -333,6 +342,9 @@ note = #{note}, + + order_limit = #{orderLimit}, + WHERE id = #{id} @@ -487,6 +499,7 @@ ve.latitude, ve.longitude, le.type, + le.order_limit, ve.`name` AS venueName FROM sv_venue_lesson AS le @@ -508,7 +521,8 @@ vl.price, vl.num, vl.sale_num, - vl.note + vl.note, + vl.order_limit FROM sv_venue_lesson AS vl LEFT JOIN sv_venue AS ue ON vl.venue_id = ue.id diff --git a/service/src/main/resources/mybatis/mapper/sv/VenueLessonTicketMapper.xml b/service/src/main/resources/mybatis/mapper/sv/VenueLessonTicketMapper.xml index 875ac8a..4d9a660 100644 --- a/service/src/main/resources/mybatis/mapper/sv/VenueLessonTicketMapper.xml +++ b/service/src/main/resources/mybatis/mapper/sv/VenueLessonTicketMapper.xml @@ -344,4 +344,40 @@ lesson_id = #{venueId} AND deleted = 0 - \ No newline at end of file + + + + + diff --git a/service/src/main/resources/mybatis/mapper/sv/VenueMapper.xml b/service/src/main/resources/mybatis/mapper/sv/VenueMapper.xml index 9ffc32e..b06d300 100644 --- a/service/src/main/resources/mybatis/mapper/sv/VenueMapper.xml +++ b/service/src/main/resources/mybatis/mapper/sv/VenueMapper.xml @@ -28,6 +28,8 @@ + + @@ -50,6 +52,8 @@ + + @@ -105,7 +109,9 @@ created_time, modified_time, code_url, - deleted + deleted, + limit_day, + limit_week @@ -129,6 +135,8 @@ #{createdTime, jdbcType=TIMESTAMP}, #{modifiedTime, jdbcType=TIMESTAMP}, #{deleted, jdbcType=TINYINT} + #{limit_day, jdbcType=TINYINT} + #{limit_week, jdbcType=TINYINT} @@ -251,6 +259,12 @@ deleted, + + limit_day, + + + limit_week, + @@ -325,6 +339,12 @@ #{deleted}, + + #{limitDay}, + + + #{limitWeek}, + @@ -430,6 +450,12 @@ code_url = #{codeUrl}, + + limit_day = #{limitDay}, + + + limit_week = #{limitWeek}, + WHERE id = #{id} @@ -465,7 +491,9 @@ description, longitude, latitude, - card_content + card_content, + limit_day, + limit_week FROM sv_venue WHERE @@ -535,4 +563,4 @@ delete from sv_venue_member where member_id = #{memberId} and venue_id = #{venueId} - \ No newline at end of file +