浏览代码

vip定制课

zouxuan 7 月之前
父节点
当前提交
048459ca9d

+ 22 - 96
cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherCourseScheduleController.java

@@ -1,20 +1,12 @@
 package com.yonge.cooleshow.teacher.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
-import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.search.MyCourseSearch;
 import com.yonge.cooleshow.biz.dal.entity.CourseCalendarEntity;
 import com.yonge.cooleshow.biz.dal.service.CourseScheduleService;
 import com.yonge.cooleshow.biz.dal.service.HolidaysFestivalsService;
-import com.yonge.cooleshow.biz.dal.vo.ArrangeCourseVo;
-import com.yonge.cooleshow.biz.dal.vo.CourseAdjustVo;
-import com.yonge.cooleshow.biz.dal.vo.CourseScheduleRecordVo;
-import com.yonge.cooleshow.biz.dal.vo.CourseStudentVo;
-import com.yonge.cooleshow.biz.dal.vo.MyCourseVo;
-import com.yonge.cooleshow.biz.dal.vo.PianoRoomTimeVo;
-import com.yonge.cooleshow.biz.dal.vo.StudentHomePage;
-import com.yonge.cooleshow.biz.dal.vo.TeacherLiveCourseInfoVo;
+import com.yonge.cooleshow.biz.dal.service.SysUserService;
+import com.yonge.cooleshow.biz.dal.vo.*;
 import com.yonge.cooleshow.biz.dal.wrapper.course.CourseScheduleWrapper;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
@@ -25,16 +17,10 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
@@ -53,11 +39,11 @@ public class TeacherCourseScheduleController extends BaseController {
     /**
      * 服务对象
      */
-    @Autowired
+    @Resource
     private CourseScheduleService courseScheduleService;
-    @Autowired
-    private SysUserFeignService sysUserFeignService;
-    @Autowired
+    @Resource
+    private SysUserService sysUserService;
+    @Resource
     private HolidaysFestivalsService holidaysFestivalsService;
 
     @ApiImplicitParams({
@@ -113,11 +99,7 @@ public class TeacherCourseScheduleController extends BaseController {
                     "     search:{\"classDate\":\"2022-03-27\"}")
     @PostMapping("/queryTeacherPracticeCourse")
     public HttpResponseResult<PageInfo<MyCourseVo>> queryTeacherPracticeCourse(@RequestBody MyCourseSearch search) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null || null == user.getId()) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        search.setTeacherId(user.getId());
+        search.setTeacherId(sysUserService.getUserId());
         IPage<MyCourseVo> pages = courseScheduleService.queryTeacherPracticeCourse(PageUtil.getPage(search), search);
         return succeed(PageUtil.pageInfo(pages));
     }
@@ -125,44 +107,28 @@ public class TeacherCourseScheduleController extends BaseController {
     @ApiOperation("老师端-课表-日历")
     @PostMapping("/queryCourseSchedule")
     public HttpResponseResult<Set<String>> queryCourseSchedule(@RequestBody MyCourseSearch search) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null || null == user.getId()) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        search.setTeacherId(user.getId());
+        search.setTeacherId(sysUserService.getUserId());
         return succeed(courseScheduleService.queryCourseSchedule(search));
     }
 
     @ApiOperation(value = "老师端-课表-日历-用户", notes = "search:{\"classDate\":\"2022-03-27\"}")
     @PostMapping("/queryCourseUser")
     public HttpResponseResult<Map<String, Object>> queryCourseUser(@RequestBody MyCourseSearch search) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null || null == user.getId()) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        search.setTeacherId(user.getId());
+        search.setTeacherId(sysUserService.getUserId());
         return succeed(courseScheduleService.queryCourseUser(search));
     }
 
     @ApiOperation(value = "老师端-课表-日历-调课")
     @PostMapping("/courseAdjust")
     public HttpResponseResult<Object> courseAdjust(@Validated @RequestBody CourseAdjustVo adjustVo) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null || null == user.getId()) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        courseScheduleService.courseAdjust(adjustVo, user.getId());
+        courseScheduleService.courseAdjust(adjustVo, sysUserService.getUserId());
         return succeed();
     }
 
     @ApiOperation("老师-首页-最近课程")
     @GetMapping("/queryLiveAndVideo")
     public HttpResponseResult<StudentHomePage> queryLiveAndVideo() {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null || null == user.getId()) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        return succeed(courseScheduleService.queryLiveAndVideo(null, user.getId(), null));
+        return succeed(courseScheduleService.queryLiveAndVideo(null, sysUserService.getUserId(), null));
     }
 
     @ApiOperation("老师端-查询房间配置")
@@ -185,11 +151,7 @@ public class TeacherCourseScheduleController extends BaseController {
     @ApiOperation("查询琴房剩余时长、冻结时长、统计学员人数")
     @GetMapping("/selectRemainTime")
     public HttpResponseResult<PianoRoomTimeVo> selectRemainTime() {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null || null == user.getId()) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        return succeed(courseScheduleService.selectRemainTime(user.getId()));
+        return succeed(courseScheduleService.selectRemainTime(sysUserService.getUserId()));
     }
 
     @ApiImplicitParams({
@@ -200,33 +162,21 @@ public class TeacherCourseScheduleController extends BaseController {
     @ApiOperation("我的学员&课内学员")
     @PostMapping("/selectStudent")
     public HttpResponseResult<PageInfo<CourseStudentVo>> selectStudent(@RequestBody Map<String, Object> param) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null || null == user.getId()) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        param.put("teacherId", user.getId());
+        param.put("teacherId", sysUserService.getUserId());
         return succeed(courseScheduleService.selectStudent(param));
     }
 
     @ApiOperation("排课")
     @PostMapping("/arrangeCourse")
     public HttpResponseResult<Object> arrangeCourse(@RequestBody ArrangeCourseVo arrangeCourseVo) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null || null == user.getId()) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        String message = courseScheduleService.arrangeCourse(arrangeCourseVo, user.getId());
+        String message = courseScheduleService.arrangeCourse(arrangeCourseVo, sysUserService.getUserId());
         return succeed(message);
     }
 
     @ApiOperation("根据月份查询消耗时长")
     @GetMapping("/selectConsumeTime")
     public HttpResponseResult<Object> selectConsumeTime(String month) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null || null == user.getId()) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        return succeed(courseScheduleService.selectConsumeTime(month, user.getId()));
+        return succeed(courseScheduleService.selectConsumeTime(month, sysUserService.getUserId()));
     }
 
     @ApiImplicitParams({
@@ -237,11 +187,7 @@ public class TeacherCourseScheduleController extends BaseController {
     @ApiOperation("琴房课程列表")
     @PostMapping("/selectCourseList")
     public HttpResponseResult<PageInfo<CourseScheduleRecordVo>> selectCourseList(@RequestBody Map<String, Object> param) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null || null == user.getId()) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        param.put("teacherId", user.getId());
+        param.put("teacherId", sysUserService.getUserId());
         return succeed(courseScheduleService.selectCourseList(param));
     }
 
@@ -253,11 +199,7 @@ public class TeacherCourseScheduleController extends BaseController {
     @ApiOperation("消耗时长列表")
     @PostMapping("/selectConsumeTimeList")
     public HttpResponseResult<PageInfo<CourseScheduleRecordVo>> selectConsumeTimeList(@RequestBody Map<String, Object> param) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null || null == user.getId()) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        param.put("teacherId", user.getId());
+        param.put("teacherId", sysUserService.getUserId());
         return succeed(courseScheduleService.selectConsumeTimeList(param));
     }
 
@@ -267,11 +209,7 @@ public class TeacherCourseScheduleController extends BaseController {
     @ApiOperation("删除课程")
     @PostMapping("/deleteCourse")
     public HttpResponseResult<Object> deleteCourse(@RequestBody Map<String, Object> param) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null || null == user.getId()) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        param.put("teacherId", user.getId());
+        param.put("teacherId", sysUserService.getUserId());
         courseScheduleService.deleteCourse(param);
         return succeed();
     }
@@ -284,11 +222,7 @@ public class TeacherCourseScheduleController extends BaseController {
     @ApiOperation("调整上课时间")
     @PostMapping("/updateCourseTime")
     public HttpResponseResult<Object> updateCourseTime(@RequestBody Map<String, Object> param) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null || null == user.getId()) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        param.put("teacherId", user.getId());
+        param.put("teacherId", sysUserService.getUserId());
         courseScheduleService.updateCourseTime(param);
         return succeed();
     }
@@ -300,11 +234,7 @@ public class TeacherCourseScheduleController extends BaseController {
     @ApiOperation("调整上课学员")
     @PostMapping("/updateCourseStudent")
     public HttpResponseResult<Object> updateCourseStudent(@RequestBody Map<String, Object> param) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null || null == user.getId()) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        param.put("teacherId", user.getId());
+        param.put("teacherId", sysUserService.getUserId());
         courseScheduleService.updateCourseStudent(param);
         return succeed();
     }
@@ -312,10 +242,6 @@ public class TeacherCourseScheduleController extends BaseController {
     @ApiOperation("查询节假日")
     @GetMapping("/selectHoliday")
     public HttpResponseResult<Object> selectHoliday(Integer year) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null || null == user.getId()) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
         return succeed(holidaysFestivalsService.queryByYear(year));
     }
 

+ 1 - 1
cooleshow-app/src/main/java/com/yonge/cooleshow/website/controller/TeacherFreeTimeController.java

@@ -32,7 +32,7 @@ public class TeacherFreeTimeController extends BaseController {
 
     @ApiOperation(value = "新增、修改老师陪练课设置")
     @PostMapping("/upSet")
-    public HttpResponseResult upSet(@Valid @RequestBody TeacherFreeTime teacherFreeTime){
+    public HttpResponseResult upSet(@RequestBody TeacherFreeTime teacherFreeTime){
         teacherFreeTime.setTeacherId(sysUserService.getUserId());
         teacherFreeTimeService.upSet(teacherFreeTime);
         return succeed();

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseScheduleService.java

@@ -9,6 +9,7 @@ import com.yonge.cooleshow.biz.dal.dto.search.MyCourseSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.PracticeTeacherSearch;
 import com.yonge.cooleshow.biz.dal.entity.CourseCalendarEntity;
 import com.yonge.cooleshow.biz.dal.entity.CourseSchedule;
+import com.yonge.cooleshow.biz.dal.entity.TeacherFreeTime;
 import com.yonge.cooleshow.biz.dal.entity.TeacherSubjectPrice;
 import com.yonge.cooleshow.biz.dal.vo.ArrangeCourseVo;
 import com.yonge.cooleshow.biz.dal.vo.CourseAdjustVo;
@@ -249,6 +250,8 @@ public interface CourseScheduleService extends IService<CourseSchedule> {
 
     List<Long> getTeacherId(Integer amount);
 
+    List<Long> getAllTimeConfig(List<TeacherFreeTime> teacherFreeTime, List<String> futureDay, List<Long> idList);
+
     void scheduleTask();
 
     void teacherSalaryTask();

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TeacherFreeTimeService.java

@@ -30,5 +30,8 @@ public interface TeacherFreeTimeService extends IService<TeacherFreeTime> {
     void upSet(TeacherFreeTime teacherFreeTime);
 
     IPage<PracticeTeacherVo> queryTeacherList(IPage<PracticeTeacherVo> page,TeacherFreeTimeWrapper.TeacherSearch query);
+
+    //更新老师30天内是否有空
+    void updateTeacherFreeTime(Long teacherId);
 }
 

+ 2 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java

@@ -141,9 +141,6 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
     @Autowired
     private TeacherService teacherService;
 
-    @Autowired
-    private RedisCacheService redisCacheService;
-
     @Override
     public CourseScheduleDao getDao() {
         return this.baseMapper;
@@ -1624,7 +1621,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         List<TeacherFreeTime> teacherFreeTime = teacherFreeTimeDao.getTeacherFreeTime();
 
         //老师配置-跳过节假日
-        List<TeacherFreeTime> skipHoliday = teacherFreeTime.stream().filter(item -> item.getSkipHolidayFlag()).collect(Collectors.toList());
+        List<TeacherFreeTime> skipHoliday = teacherFreeTime.stream().filter(TeacherFreeTime::getSkipHolidayFlag).collect(Collectors.toList());
         //老师配置
         List<TeacherFreeTime> noSkipHoliday = teacherFreeTime.stream().filter(item -> !item.getSkipHolidayFlag()).collect(Collectors.toList());
 
@@ -1653,6 +1650,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
      * @param idList          未约满老师id集合
      * @return
      */
+    @Override
     public List<Long> getAllTimeConfig(List<TeacherFreeTime> teacherFreeTime, List<String> futureDay, List<Long> idList) {
         List<String> statusList = Lists.newArrayList(CourseScheduleEnum.NOT_START.getCode(), CourseScheduleEnum.ING.getCode());
 

+ 53 - 17
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherFreeTimeServiceImpl.java

@@ -1,26 +1,29 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yonge.cooleshow.biz.dal.dao.TeacherFreeTimeDao;
+import com.yonge.cooleshow.biz.dal.entity.HolidaysFestivals;
+import com.yonge.cooleshow.biz.dal.entity.TeacherAuthEntryRecord;
 import com.yonge.cooleshow.biz.dal.entity.TeacherFreeTime;
+import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
+import com.yonge.cooleshow.biz.dal.service.CourseScheduleService;
+import com.yonge.cooleshow.biz.dal.service.HolidaysFestivalsService;
+import com.yonge.cooleshow.biz.dal.service.TeacherAuthEntryRecordService;
 import com.yonge.cooleshow.biz.dal.service.TeacherFreeTimeService;
 import com.yonge.cooleshow.biz.dal.vo.PracticeTeacherVo;
-import com.yonge.cooleshow.biz.dal.vo.WeekVo;
 import com.yonge.cooleshow.biz.dal.wrapper.TeacherFreeTimeWrapper;
 import com.yonge.toolset.utils.date.DateUtil;
+import org.apache.commons.collections.CollectionUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 老师可排课时间表(TeacherFreeTime)表服务实现类
@@ -32,6 +35,12 @@ public class TeacherFreeTimeServiceImpl extends ServiceImpl<TeacherFreeTimeDao,
 
     private final static Logger log = LoggerFactory.getLogger(TeacherFreeTimeServiceImpl.class);
 
+    @Resource
+    private TeacherAuthEntryRecordService teacherAuthEntryRecordService;
+    @Resource
+    private HolidaysFestivalsService holidaysFestivalsService;
+    @Resource
+    private CourseScheduleService courseScheduleService;
 
     @Override
     public TeacherFreeTimeDao getDao() {
@@ -49,6 +58,8 @@ public class TeacherFreeTimeServiceImpl extends ServiceImpl<TeacherFreeTimeDao,
         }
         teacherFreeTime.setRecentFreeTime(oldTeacherFreeTime.getRecentFreeTime());
         baseMapper.insert(teacherFreeTime);
+        //更新老师30天内是否有空
+        this.updateTeacherFreeTime(teacherId);
     }
 
     @Override
@@ -56,17 +67,42 @@ public class TeacherFreeTimeServiceImpl extends ServiceImpl<TeacherFreeTimeDao,
         return page.setRecords(baseMapper.queryTeacherList(page, query));
     }
 
-    public static String timeOffSet(String week,Integer freeMinutes){
-        List<WeekVo> list = JSONObject.parseArray(week, WeekVo.class);
-        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
-        List<WeekVo> weekList = new ArrayList<>();
-        for (WeekVo weekVo : list) {
-            WeekVo vo = new WeekVo();
-            vo.setStartTime(weekVo.getStartTime());
-            vo.setEndTime(sdf.format(DateUtil.offsetMinute(weekVo.getEndTime(), -freeMinutes, "HH:mm:ss")));
-            weekList.add(vo);
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateTeacherFreeTime(Long teacherId) {
+        //查询所有过审的老师时间配置
+        TeacherAuthEntryRecord authEntryRecord = teacherAuthEntryRecordService.lambdaQuery()
+                .eq(TeacherAuthEntryRecord::getUserId, teacherId)
+                .eq(TeacherAuthEntryRecord::getTeacherAuthStatus, AuthStatusEnum.PASS).last("limit 1").one();
+        if(Objects.isNull(authEntryRecord)){
+            this.lambdaUpdate().eq(TeacherFreeTime::getTeacherId, teacherId)
+                    .set(TeacherFreeTime::getRecentFreeTime, 0).update();
+        }
+        TeacherFreeTime freeTime = this.lambdaQuery().eq(TeacherFreeTime::getTeacherId, teacherId).last("limit 1").one();
+        if(Objects.isNull(freeTime)){
+            this.lambdaUpdate().eq(TeacherFreeTime::getTeacherId, teacherId)
+                    .set(TeacherFreeTime::getRecentFreeTime, 0).update();
+        }
+        //未来30天日期
+        List<String> futureDays = DateUtil.getFutureDays(30);
+        if(freeTime.getSkipHolidayFlag()){
+            //查询节假日
+            HolidaysFestivals holidays = holidaysFestivalsService.queryByYear(Integer.parseInt(DateUtil.getYear(new Date())));
+            String[] strs = holidays.getHolidaysFestivalsJson().split(",");
+            List<String> holiday = Arrays.asList(strs);
+            //未来30天日期-跳过节假日
+            futureDays = futureDays.stream().filter(item -> !holiday.contains(item)).collect(Collectors.toList());
+        }
+        List<TeacherFreeTime> freeTimeList = new ArrayList<>();
+        freeTimeList.add(freeTime);
+        List<Long> teacherIdList = courseScheduleService.getAllTimeConfig(freeTimeList, futureDays, new ArrayList<>());
+        if(CollectionUtils.isNotEmpty(teacherIdList)){
+            this.lambdaUpdate().in(TeacherFreeTime::getTeacherId, teacherIdList)
+                    .set(TeacherFreeTime::getRecentFreeTime, 1).update();
+        }else {
+            this.lambdaUpdate().eq(TeacherFreeTime::getTeacherId, teacherId)
+                    .set(TeacherFreeTime::getRecentFreeTime, 0).update();
         }
-        return JSON.toJSON(weekList).toString();
     }
 }