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
+