Browse Source

活动排课

zouxuan 4 years ago
parent
commit
594214c6fb

+ 32 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/PracticeGroupBuyParamsDto.java

@@ -2,6 +2,7 @@ package com.ym.mec.biz.dal.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 public class PracticeGroupBuyParamsDto {
@@ -21,9 +22,40 @@ public class PracticeGroupBuyParamsDto {
     @ApiModelProperty(value = "是否重新支付")
     private boolean isRepeatPay;
 
+    @ApiModelProperty(value = "营销活动编号")
+    private Integer activityId;
+
     @ApiModelProperty(value = "优惠券列表", required = false)
     private List<Integer> couponIdList;
 
+    private BigDecimal amount;
+
+    private Integer organId;
+
+    public Integer getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(Integer organId) {
+        this.organId = organId;
+    }
+
+    public BigDecimal getAmount() {
+        return amount;
+    }
+
+    public void setAmount(BigDecimal amount) {
+        this.amount = amount;
+    }
+
+    public Integer getActivityId() {
+        return activityId;
+    }
+
+    public void setActivityId(Integer activityId) {
+        this.activityId = activityId;
+    }
+
     public Long getPracticeGroupId() {
         return practiceGroupId;
     }

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/VipGroupActivity.java

@@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty;
 import java.math.BigDecimal;
 import java.util.Date;
 
+import static com.ym.mec.biz.dal.enums.PeriodEnum.DAY;
 import static com.ym.mec.biz.dal.enums.PeriodEnum.MONTH;
 
 /**
@@ -158,7 +159,7 @@ public class VipGroupActivity {
 
 	private PeriodEnum periodEnum = MONTH;
 
-	private PeriodEnum givePeriodEnum = MONTH;
+	private PeriodEnum givePeriodEnum = DAY;
 
 	private String status = "DRAFT";
 

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/GroupType.java

@@ -16,6 +16,7 @@ public enum GroupType implements BaseEnum<String, GroupType> {
 	MAINTENANCE("乐保"),
 	REPLACEMENT("乐器置换"),
 	DEGREE("6.1考级活动"),
+	ACTIVITY("活动排课"),
 	MEMBER("购买会员");
 
 	private String desc;

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/OrderTypeEnum.java

@@ -26,6 +26,7 @@ public enum OrderTypeEnum implements BaseEnum<String, OrderTypeEnum> {
 	MAINTENANCE("MAINTENANCE","乐保"),
 	REPLACEMENT("REPLACEMENT","乐器置换"),
 	DEGREE("DEGREE","6.1考级活动"),
+	ACTIVITY("ACTIVITY","活动排课"),
 	MEMBER("MEMBER", "购买会员");
 
 

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/PracticeGroupService.java

@@ -361,4 +361,13 @@ public interface PracticeGroupService extends BaseService<Long, PracticeGroup> {
     * @date 2021/10/12 18:09
     */
     Object buyTeacherPracticeGroup(PracticeGroupBuyParamsDto practiceGroupBuyParams) throws Exception;
+
+    /**
+    * @description: 营销活动网管课购买
+     * @param practiceGroupBuyParams
+    * @return com.ym.mec.common.entity.HttpResponseResult
+    * @author zx
+    * @date 2021/10/13 15:12
+    */
+	Object buyActivityPracticeGroup(PracticeGroupBuyParamsDto practiceGroupBuyParams) throws Exception;
 }

+ 155 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java

@@ -4877,4 +4877,159 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         studentPaymentOrderService.update(studentPaymentOrder);
         return payMap;
     }
+
+    @Override
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class,isolation = Isolation.READ_COMMITTED)
+    public Object buyActivityPracticeGroup(PracticeGroupBuyParamsDto practiceGroupBuyParams) throws Exception {
+        Integer activityId = practiceGroupBuyParams.getActivityId();
+        VipGroupActivity activity = vipGroupActivityDao.get(activityId);
+        if(!activity.getEnable()){
+            throw new BizException("活动尚未开启,感谢您的关注");
+        }
+        Date now = new Date();
+        Date startTime = activity.getStartTime();
+        Date endTime = activity.getEndTime();
+        if(startTime.compareTo(now) > 0){
+            throw new BizException("活动尚未开始,感谢您的关注");
+        }
+        if(endTime.compareTo(now) <= 0){
+            throw new BizException("活动已结束,感谢您的参与");
+        }
+        Student student = studentDao.getLocked(practiceGroupBuyParams.getUserId());
+        Integer studentMaxUsedTimes = activity.getStudentMaxUsedTimes();
+        if(studentMaxUsedTimes != -1){
+            //获取活动购买次数
+            int activityBuyNum = activityUserMapperDao.countActivityBuyNum(activityId, practiceGroupBuyParams.getUserId());
+            if(activityBuyNum >= studentMaxUsedTimes){
+                throw new BizException("当前活动最多课购买{}次,感谢您的参与",studentMaxUsedTimes);
+            }
+        }
+        OrderTypeEnum orderTypeEnum;
+        if(activity.getActivityType() == 1){
+            orderTypeEnum = OrderTypeEnum.MEMBER;
+        }else {
+            if(activity.getCourseType().equals("VIP")){
+                orderTypeEnum = OrderTypeEnum.SMALL_CLASS_TO_BUY;
+            }else {
+                orderTypeEnum = OrderTypeEnum.PRACTICE_GROUP_BUY;
+            }
+        }
+
+        //判断用户是否已存在订单
+        // 判断是否存在支付中的记录
+        List<StudentPaymentOrder> list = studentPaymentOrderService
+                .queryByCondition(GroupType.ACTIVITY,null,student.getUserId(),DealStatusEnum.ING,orderTypeEnum);
+        if (list.size() > 0) {
+            StudentPaymentOrder order = list.get(0);
+            // 查询订单状态
+            PayStatus payStatus = studentPaymentOrderService.queryPayStatus(order.getPaymentChannel(), order.getOrderNo(), order.getTransNo());
+            if(payStatus == PayStatus.SUCCESSED){
+                throw new BizException("订单已支付成功,请勿重复支付");
+            }else if(payStatus == PayStatus.PAYING){
+                throw new BizException("订单还在交易中,请稍后重试");
+            }
+            if(practiceGroupBuyParams.isRepeatPay()){
+                //处理关闭订单
+                order.setStatus(DealStatusEnum.CLOSE);
+                order.setMemo("关闭活动订单");
+                if (order.getBalancePaymentAmount() != null && order.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) > 0) {
+                    sysUserCashAccountService.updateBalance(order.getUserId(), order.getBalancePaymentAmount(),
+                            PlatformCashAccountDetailTypeEnum.REFUNDS, "购买活动支付失败");
+                }
+                studentPaymentOrderService.update(order);
+                sysCouponCodeService.quit(order.getCouponCodeId());
+            }else {
+                return BaseController.failed(HttpStatus.CONTINUE,"您有待支付的订单");
+            }
+        }
+        BigDecimal activityFee = BigDecimal.ZERO;
+        GroupType groupType = GroupType.MEMBER;
+        //计算订单金额
+        switch (orderTypeEnum) {
+            case MEMBER:
+                groupType = GroupType.MEMBER;
+                break;
+            case SMALL_CLASS_TO_BUY:
+                groupType = GroupType.VIP;
+                break;
+            case PRACTICE_GROUP_BUY:
+                groupType = GroupType.PRACTICE;
+                break;
+        }
+        StudentPaymentOrder studentPaymentOrder = sysCouponCodeService.use(practiceGroupBuyParams.getCouponIdList(), activityFee, true);
+        activityFee = studentPaymentOrder.getActualAmount();
+        if(practiceGroupBuyParams.getAmount().compareTo(activityFee) != 0){
+            throw new BizException("非法访问");
+        }
+
+        String channelType = "";
+        Date nowDate = new Date();
+
+        BigDecimal balance = BigDecimal.ZERO;
+        if (practiceGroupBuyParams.isUseBalancePayment() && activityFee.compareTo(BigDecimal.ZERO) > 0) {
+            SysUserCashAccount userCashAccount = sysUserCashAccountService.getLocked(student.getUserId());
+            if (userCashAccount == null) {
+                throw new BizException("用户账户找不到");
+            }
+            if (userCashAccount.getBalance() != null && userCashAccount.getBalance().compareTo(BigDecimal.ZERO) > 0) {
+                balance = activityFee.compareTo(userCashAccount.getBalance()) >= 0 ? userCashAccount.getBalance() : activityFee;
+                activityFee = activityFee.subtract(balance);
+                studentPaymentOrder.setActualAmount(activityFee);
+                studentPaymentOrder.setBalancePaymentAmount(balance);
+                sysUserCashAccountService.updateBalance(student.getUserId(), balance.negate(), PlatformCashAccountDetailTypeEnum.PAY_FEE, "营销活动购买");
+            }
+        }
+
+        String orderNo = idGeneratorService.generatorId("payment") + "";
+
+        studentPaymentOrder.setPaymentChannel("BALANCE");
+        studentPaymentOrder.setUserId(student.getUserId());
+        studentPaymentOrder.setGroupType(groupType);
+        studentPaymentOrder.setOrderNo(orderNo);
+        studentPaymentOrder.setType(orderTypeEnum);
+        studentPaymentOrder.setStatus(DealStatusEnum.ING);
+        studentPaymentOrder.setRemitFee(BigDecimal.ZERO);
+        studentPaymentOrder.setCourseRemitFee(BigDecimal.ZERO);
+        studentPaymentOrder.setOrganId(practiceGroupBuyParams.getOrganId());
+        studentPaymentOrder.setRoutingOrganId(practiceGroupBuyParams.getOrganId());
+        studentPaymentOrder.setCreateTime(nowDate);
+        studentPaymentOrder.setUpdateTime(nowDate);
+        studentPaymentOrderService.update(studentPaymentOrder);
+
+        studentPaymentOrder.setVersion(0);
+        if (activityFee.compareTo(BigDecimal.ZERO) == 0) {
+            studentPaymentRouteOrderService.addRouteOrder(orderNo, practiceGroupBuyParams.getOrganId(), balance);
+            Map<String, String> notifyMap = new HashMap<>();
+            notifyMap.put("tradeState", "1");
+            notifyMap.put("merOrderNo", studentPaymentOrder.getOrderNo());
+            notifyMap.put("channelType", channelType);
+            notifyMap.put("orderNo", "");
+            studentPaymentOrderService.updateOrder(notifyMap);
+            return notifyMap;
+        }
+
+        String orderSubject = "6.1考级活动";
+        String receiver = "degree";
+
+        String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
+
+        Map payMap = payService.getPayMap(
+                activityFee,
+                balance,
+                orderNo,
+                baseApiUrl + "/api-student/studentOrder/notify",
+                baseApiUrl + "/api-student/studentOrder/paymentResult?orderNo=" + orderNo,
+                orderSubject,
+                orderSubject,
+                studentPaymentOrder.getOrganId(),
+                receiver
+        );
+
+        studentPaymentOrder.setOrganId(studentPaymentOrder.getOrganId());
+        studentPaymentOrder.setMerNos((String) payMap.get("routingMerNos"));
+        studentPaymentOrder.setPaymentChannel((String) payMap.get("type"));
+        studentPaymentOrder.setUpdateTime(nowDate);
+        studentPaymentOrderService.update(studentPaymentOrder);
+        return payMap;
+    }
 }

+ 38 - 23
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupActivityServiceImpl.java

@@ -23,10 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 
 import static com.ym.mec.biz.dal.enums.SalarySettlementTypeEnum.TEACHER_DEFAULT;
 
@@ -78,7 +75,14 @@ public class VipGroupActivityServiceImpl extends BaseServiceImpl<Integer, VipGro
 			checkSettlement(vipGroupSalarySettlement.getPracticeSalarySettlement());
 			checkSettlement(vipGroupSalarySettlement.getGivePracticeSalarySettlement());
 		}
-
+		if("PROGRESS".equals(vipGroupActivityAddDto.getStatus())){
+			Date date = new Date();
+			if(vipGroupActivityAddDto.getStartTime().compareTo(date) <= 0 && vipGroupActivityAddDto.getEndTime().compareTo(date) > 0){
+				vipGroupActivityAddDto.setEnable(true);
+			}else {
+				vipGroupActivityAddDto.setEnable(false);
+			}
+		}
 		vipGroupActivityAddDto.setSalarySettlementJson(JSON.toJSONString(vipGroupActivityAddDto.getVipGroupSalarySettlement()));
 		ActivityApplyStudentType applyToStudentType = getApplyToStudentType(vipGroupActivityAddDto.getApplyToStudentType());
 //		vipGroupActivityAddDto.setApplyToStudentType(JSONObject.toJSONString(applyToStudentType));
@@ -125,25 +129,36 @@ public class VipGroupActivityServiceImpl extends BaseServiceImpl<Integer, VipGro
 		if(Objects.isNull(oldVipGroupActivity)){
 			throw new BizException("活动不存在!");
 		}
-		if(Objects.isNull(vipGroupActivityAddDto.getOrganId())){
-			throw new BizException("请指定部门!");
-		}
-		VipGroupSalarySettlementDto vipGroupSalarySettlement = vipGroupActivityAddDto.getVipGroupSalarySettlement();
-		if(vipGroupSalarySettlement != null){
-			checkSettlement(vipGroupSalarySettlement.getVipOnlineSalarySettlement());
-			checkSettlement(vipGroupSalarySettlement.getVipOfflineSalarySettlement());
-			checkSettlement(vipGroupSalarySettlement.getGiveVipOnlineSalarySettlement());
-			checkSettlement(vipGroupSalarySettlement.getGiveVipOfflineSalarySettlement());
-			checkSettlement(vipGroupSalarySettlement.getPracticeSalarySettlement());
-			checkSettlement(vipGroupSalarySettlement.getGivePracticeSalarySettlement());
+		if("PROGRESS".equals(oldVipGroupActivity.getStatus())){
+			oldVipGroupActivity.setCoursesStartTime(vipGroupActivityAddDto.getCoursesStartTime());
+			oldVipGroupActivity.setCoursesEndTime(vipGroupActivityAddDto.getCoursesEndTime());
+			oldVipGroupActivity.setStartTime(vipGroupActivityAddDto.getStartTime());
+			oldVipGroupActivity.setEndTime(vipGroupActivityAddDto.getEndTime());
+			oldVipGroupActivity.setApplyToStudentType(vipGroupActivityAddDto.getApplyToStudentType());
+			oldVipGroupActivity.setStudentMaxUsedTimes(vipGroupActivityAddDto.getStudentMaxUsedTimes());
+			Date date = new Date();
+			if(vipGroupActivityAddDto.getStartTime().compareTo(date) <= 0 && vipGroupActivityAddDto.getEndTime().compareTo(date) > 0){
+				vipGroupActivityAddDto.setEnable(true);
+			}else {
+				vipGroupActivityAddDto.setEnable(false);
+			}
+			super.update(oldVipGroupActivity);
+		}else {
+			VipGroupSalarySettlementDto vipGroupSalarySettlement = vipGroupActivityAddDto.getVipGroupSalarySettlement();
+			if(vipGroupSalarySettlement != null){
+				checkSettlement(vipGroupSalarySettlement.getVipOnlineSalarySettlement());
+				checkSettlement(vipGroupSalarySettlement.getVipOfflineSalarySettlement());
+				checkSettlement(vipGroupSalarySettlement.getGiveVipOnlineSalarySettlement());
+				checkSettlement(vipGroupSalarySettlement.getGiveVipOfflineSalarySettlement());
+				checkSettlement(vipGroupSalarySettlement.getPracticeSalarySettlement());
+				checkSettlement(vipGroupSalarySettlement.getGivePracticeSalarySettlement());
+			}
+			vipGroupActivityAddDto.setSalarySettlementJson(JSON.toJSONString(vipGroupActivityAddDto.getVipGroupSalarySettlement()));
+			ActivityApplyStudentType applyToStudentType = getApplyToStudentType(vipGroupActivityAddDto.getApplyToStudentType());
+			super.update(vipGroupActivityAddDto);
+			applyToStudentType.setActivityId(vipGroupActivityAddDto.getId());
+			activityApplyStudentTypeDao.updateByActivity(applyToStudentType);
 		}
-		vipGroupActivityAddDto.setSalarySettlementJson(JSON.toJSONString(vipGroupActivityAddDto.getVipGroupSalarySettlement()));
-		ActivityApplyStudentType applyToStudentType = getApplyToStudentType(vipGroupActivityAddDto.getApplyToStudentType());
-//		vipGroupActivityAddDto.setApplyToStudentType(JSONObject.toJSONString(applyToStudentType));
-		super.update(vipGroupActivityAddDto);
-		applyToStudentType.setActivityId(vipGroupActivityAddDto.getId());
-		activityApplyStudentTypeDao.updateByActivity(applyToStudentType);
-//		entityChangeEventSource.entityChange(oldVipGroupActivity, vipGroupActivityAddDto, operatorId);
 		return vipGroupActivityAddDto;
 	}
 

+ 28 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -2313,6 +2313,33 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		results.put("giveOfflineTeacherSalary", gofts);
         return results;
     }
+//    @Override
+//	BigDecimal calcActivityFee(VipGroupActivity vipGroupActivity){
+//		Map<String,BigDecimal> results = new HashMap<>(1);
+//
+//		BigDecimal discount = vipGroupActivity.getDiscount();
+//
+//		BigDecimal offlineClassNum = new BigDecimal(vipGroup.getOfflineClassesNum());
+//		BigDecimal onlineClassNum = new BigDecimal(vipGroup.getOnlineClassesNum());
+//		BigDecimal onlineClassesUnitPrice = vipGroup.getOnlineClassesUnitPrice();
+//		if(Objects.isNull(onlineClassesUnitPrice)){
+//			throw new BizException("课程单价异常");
+//		}
+//		BigDecimal onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum);
+//
+//		BigDecimal offlineClassesUnitPrice = vipGroup.getOfflineClassesUnitPrice();
+//		if(Objects.isNull(offlineClassesUnitPrice)){
+//			throw new BizException("课程单价异常");
+//		}
+//		BigDecimal offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
+//
+//		//课程购买费用计算
+//		BigDecimal totalPrice = onlineVipGroupCharge.add(offlineVipGroupCharge);
+//		totalPrice = totalPrice.multiply(discount).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
+//
+//		results.put("totalPrice",totalPrice.setScale(0,BigDecimal.ROUND_CEILING));
+//        return results;
+//    }
 
 	@Override
 	public <K extends VipGroup> Map<String,BigDecimal> countVipGroupCoursePredictFee(K vipGroup,
@@ -2799,7 +2826,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		/*
 		根据回调信息调整订单状态及vip课程状态等相关信息
 		 */
-		Long vipGroupId=Long.parseLong(order.getMusicGroupId());
+		Long vipGroupId = Long.parseLong(order.getMusicGroupId());
 		Integer userId = order.getUserId();
 		boolean isOk=order.getStatus().equals(DealStatusEnum.SUCCESS);
 

+ 3 - 1
mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml

@@ -404,7 +404,9 @@
         SELECT spo.*
         FROM student_payment_order spo
         WHERE spo.user_id_ = #{userId}
-          AND spo.music_group_id_ = #{musicGroupId}
+          <if test="musicGroupId != null">
+              AND spo.music_group_id_ = #{musicGroupId}
+          </if>
           AND spo.status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
           AND spo.group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
           and spo.type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}

+ 2 - 4
mec-biz/src/main/resources/config/mybatis/VipGroupActivityMapper.xml

@@ -164,9 +164,6 @@
 			<if test="attribute1 != null">
 				attribute1_ = #{attribute1},
 			</if>
-			<if test="endTime != null">
-				end_time_ = #{endTime},
-			</if>
 			<if test="attribute2 != null">
 				attribute2_ = #{attribute2},
 			</if>
@@ -224,6 +221,7 @@
 			<if test="allowOnlineToOffline!=null">
 				allow_online_to_offline_=#{allowOnlineToOffline},
 			</if>
+			end_time_ = #{endTime},
 			update_time_ = NOW()
 		</set>WHERE id_ = #{id}
 	</update>
@@ -301,7 +299,7 @@
 		SELECT vga.* FROM
 			vip_group_activity vga
 			LEFT JOIN activity_apply_student_type ast ON vga.id_ = ast.activity_id_
-		WHERE vga.status_ = 'PROGRESS'
+		WHERE vga.status_ = 'PROGRESS' AND vga.enable_ = 1
 		<if test="activityQueryDto.categoryId != null">
 		  AND FIND_IN_SET(#{activityQueryDto.categoryId}, vga.vip_group_category_id_list_ )
 		</if>

+ 16 - 0
mec-student/src/main/java/com/ym/mec/student/controller/PracticeGroupController.java

@@ -266,6 +266,22 @@ public class PracticeGroupController extends BaseController {
         }
     }
 
+    @ApiOperation("网管课营销活动购买")
+    @PostMapping(value = "/buyActivityPracticeGroup")
+    @AuditLogAnnotation(operateName = "网管课营销活动购买")
+    public HttpResponseResult buyActivityPracticeGroup(@RequestBody PracticeGroupBuyParamsDto practiceGroupBuyParams) throws Exception {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        if(Objects.isNull(practiceGroupBuyParams.getActivityId())){
+            throw new BizException("请选择活动");
+        }
+        practiceGroupBuyParams.setOrganId(sysUser.getOrganId());
+        practiceGroupBuyParams.setUserId(sysUser.getId());
+        return practiceGroupService.buyActivityPracticeGroup(practiceGroupBuyParams);
+    }
+
     @ApiOperation(value = "购买指导老师创建的网管课")
     @PostMapping("/buyTeacherPracticeGroup")
     @AuditLogAnnotation(operateName = "购买指导老师创建的网管课")

+ 7 - 2
mec-web/src/main/java/com/ym/mec/web/controller/VipGroupActivityController.java

@@ -1,6 +1,5 @@
 package com.ym.mec.web.controller;
 
-import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.EmployeeDao;
@@ -24,6 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
+
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -69,7 +69,12 @@ public class VipGroupActivityController extends BaseController {
     @PreAuthorize("@pcs.hasPermissions('vipGroupActivity/enable')")
     public Object enable(Integer id){
         VipGroupActivity activity = vipGroupActivityService.get(id);
-        activity.setEnable(!activity.getEnable());
+        Boolean enable = !activity.getEnable();
+        Date date = new Date();
+        if(enable && (activity.getStartTime().compareTo(date) > 0 || activity.getEndTime().compareTo(date) <= 0)){
+            throw new BizException("当前时间段不允许开启活动");
+        }
+        activity.setEnable(enable);
         return succeed(vipGroupActivityService.update(activity));
     }