|  | @@ -1,15 +1,23 @@
 | 
	
		
			
				|  |  |  package com.fs.course.service.impl;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -import java.time.LocalDate;
 | 
	
		
			
				|  |  | -import java.time.LocalDateTime;
 | 
	
		
			
				|  |  | -import java.util.List;
 | 
	
		
			
				|  |  | -import com.fs.common.utils.DateUtils;
 | 
	
		
			
				|  |  | +import com.baomidou.mybatisplus.core.conditions.Wrapper;
 | 
	
		
			
				|  |  | +import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 | 
	
		
			
				|  |  | +import com.fs.common.exception.ServiceException;
 | 
	
		
			
				|  |  | +import com.fs.course.domain.FsUserCoursePeriod;
 | 
	
		
			
				|  |  | +import com.fs.course.domain.FsUserCoursePeriodDays;
 | 
	
		
			
				|  |  | +import com.fs.course.mapper.FsUserCoursePeriodDaysMapper;
 | 
	
		
			
				|  |  | +import com.fs.course.mapper.FsUserCoursePeriodMapper;
 | 
	
		
			
				|  |  | +import com.fs.course.service.IFsUserCoursePeriodService;
 | 
	
		
			
				|  |  |  import com.fs.course.vo.FsUserCoursePeriodVO;
 | 
	
		
			
				|  |  |  import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  |  import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  | -import com.fs.course.mapper.FsUserCoursePeriodMapper;
 | 
	
		
			
				|  |  | -import com.fs.course.domain.FsUserCoursePeriod;
 | 
	
		
			
				|  |  | -import com.fs.course.service.IFsUserCoursePeriodService;
 | 
	
		
			
				|  |  | +import org.springframework.transaction.annotation.Transactional;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import javax.annotation.Resource;
 | 
	
		
			
				|  |  | +import java.time.LocalDate;
 | 
	
		
			
				|  |  | +import java.time.LocalDateTime;
 | 
	
		
			
				|  |  | +import java.util.List;
 | 
	
		
			
				|  |  | +import java.util.Objects;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   * 会员营期Service业务层处理
 | 
	
	
		
			
				|  | @@ -22,6 +30,8 @@ public class FsUserCoursePeriodServiceImpl implements IFsUserCoursePeriodService
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private FsUserCoursePeriodMapper fsUserCoursePeriodMapper;
 | 
	
		
			
				|  |  | +    @Resource
 | 
	
		
			
				|  |  | +    private FsUserCoursePeriodDaysMapper fsUserCoursePeriodDaysMapper;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * 查询会员营期
 | 
	
	
		
			
				|  | @@ -109,4 +119,50 @@ public class FsUserCoursePeriodServiceImpl implements IFsUserCoursePeriodService
 | 
	
		
			
				|  |  |      public List<FsUserCoursePeriodVO> selectFsUserCoursePeriodPage(FsUserCoursePeriod fsUserCoursePeriod) {
 | 
	
		
			
				|  |  |          return fsUserCoursePeriodMapper.selectFsUserCoursePeriodPage(fsUserCoursePeriod);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 结束营期
 | 
	
		
			
				|  |  | +     * @param id    营期ID
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public void closePeriod(Long id) {
 | 
	
		
			
				|  |  | +        // 修改营期结束时间
 | 
	
		
			
				|  |  | +        FsUserCoursePeriod fsUserCoursePeriod = fsUserCoursePeriodMapper.selectFsUserCoursePeriodById(id);
 | 
	
		
			
				|  |  | +        if (Objects.isNull(fsUserCoursePeriod)) {
 | 
	
		
			
				|  |  | +            throw new ServiceException("结束营期失败:营期不存在");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if (fsUserCoursePeriod.getPeriodStatus() == 1) {
 | 
	
		
			
				|  |  | +            throw new ServiceException("结束营期失败:营期未开始不能进行结束操作!");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if (fsUserCoursePeriod.getPeriodStatus() == 3) {
 | 
	
		
			
				|  |  | +            throw new ServiceException("结束营期失败:营期已结束不能进行结束操作!");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        fsUserCoursePeriod.setPeriodEndTime(LocalDate.now());
 | 
	
		
			
				|  |  | +        fsUserCoursePeriodMapper.updateFsUserCoursePeriod(fsUserCoursePeriod);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 修改大于当前时间的课程状态
 | 
	
		
			
				|  |  | +        Wrapper<FsUserCoursePeriodDays> updateWrapper = Wrappers.<FsUserCoursePeriodDays>lambdaUpdate()
 | 
	
		
			
				|  |  | +        .set(FsUserCoursePeriodDays::getStatus, 2)
 | 
	
		
			
				|  |  | +        .eq(FsUserCoursePeriodDays::getPeriodId, fsUserCoursePeriod.getPeriodId())
 | 
	
		
			
				|  |  | +        .eq(FsUserCoursePeriodDays::getStatus, 0)
 | 
	
		
			
				|  |  | +        .gt(FsUserCoursePeriodDays::getDayDate, LocalDate.now());
 | 
	
		
			
				|  |  | +        fsUserCoursePeriodDaysMapper.update(null, updateWrapper);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 更新营期状态
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public void changePeriodStatus() {
 | 
	
		
			
				|  |  | +        // 开营
 | 
	
		
			
				|  |  | +        fsUserCoursePeriodMapper.startPeriod(LocalDate.now());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 关营
 | 
	
		
			
				|  |  | +        fsUserCoursePeriodMapper.endPeriod(LocalDate.now());
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  }
 |