فهرست منبع

Merge branch 'master' of http://git.dayaedu.com/yonge/mec into zouxuan

zouxuan 5 سال پیش
والد
کامیت
d1c8456b59
18فایلهای تغییر یافته به همراه403 افزوده شده و 77 حذف شده
  1. 17 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleReviewDao.java
  2. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentManageDao.java
  3. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentManageListDto.java
  4. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/CourseReview4EduQueryInfo.java
  5. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/CourseReviewQueryInfo.java
  6. 19 0
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseReviewService.java
  7. 126 31
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseReviewServiceImpl.java
  8. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  9. 3 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java
  10. 15 24
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentManageServiceImpl.java
  11. 4 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServeServiceImpl.java
  12. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  13. 96 4
      mec-biz/src/main/resources/config/mybatis/CourseScheduleReviewMapper.xml
  14. 13 9
      mec-biz/src/main/resources/config/mybatis/PracticeGroupMapper.xml
  15. 11 1
      mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml
  16. 28 1
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/CourseReviewController.java
  17. 24 0
      mec-web/src/main/java/com/ym/mec/web/controller/CourseReviewController.java
  18. 5 0
      mec-web/src/main/java/com/ym/mec/web/controller/education/EduCourseReviewController.java

+ 17 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleReviewDao.java

@@ -98,6 +98,7 @@ public interface CourseScheduleReviewDao extends BaseDAO<Integer, CourseSchedule
 
     /**
      * 根据班级id获取班级学生
+     *
      * @param classGroupId
      * @return
      */
@@ -105,13 +106,29 @@ public interface CourseScheduleReviewDao extends BaseDAO<Integer, CourseSchedule
 
     /**
      * 删除课程评价
+     *
      * @param courseScheduleId
      */
     void delByCourseScheduleId(@Param("courseScheduleId") Long courseScheduleId);
 
     /**
      * 删除课程评价
+     *
      * @param courseScheduleIds
      */
     void delByCourseScheduleIds(@Param("courseScheduleIds") List<Long> courseScheduleIds);
+
+    /**
+     * 线上课评价列表
+     * @param params
+     * @return
+     */
+    List<CourseReviewDto> getOnlineCourseReviewList(Map<String, Object> params);
+
+    /**
+     * 线上课评价统计
+     * @param params
+     * @return
+     */
+    Integer countOnlineCourseReviews(Map<String, Object> params);
 }

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentManageDao.java

@@ -288,4 +288,11 @@ public interface StudentManageDao {
      * @return
      */
     List<BasicUserDto> queryCanAddStudent(@Param("musicGroupId") String musicGroupId, @Param("musicGroupPaymentCalenderId") Long musicGroupPaymentCalenderId);
+
+    /**
+     * 学员是否有课
+     * @param userIds
+     * @return
+     */
+    List<Map<Integer,Integer>> queryHasCourseMap(@Param("userIds") Set<Integer> userIds);
 }

+ 3 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentManageListDto.java

@@ -56,7 +56,7 @@ public class StudentManageListDto {
 
     private Integer organId;
 
-    private Integer serviceTag;
+    private YesOrNoEnum serviceTag;
 
     private YesOrNoEnum operatingTag;
 
@@ -74,11 +74,11 @@ public class StudentManageListDto {
     
     private Integer teacherId;
 
-    public Integer getServiceTag() {
+    public YesOrNoEnum getServiceTag() {
         return serviceTag;
     }
 
-    public void setServiceTag(Integer serviceTag) {
+    public void setServiceTag(YesOrNoEnum serviceTag) {
         this.serviceTag = serviceTag;
     }
 

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/CourseReview4EduQueryInfo.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.page;
 
 import com.ym.mec.common.page.QueryInfo;
+import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
 import io.swagger.annotations.ApiModelProperty;
 
 /**
@@ -20,6 +21,9 @@ public class CourseReview4EduQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "是否完成双向沟通 1-是 0-否",required = false)
     private Integer hasLiaison;
 
+    @ApiModelProperty(value = "课程类型",required = false)
+    private CourseScheduleType type;
+
     @ApiModelProperty(value = "开始时间",required = false)
     private String startTime;
 
@@ -74,4 +78,12 @@ public class CourseReview4EduQueryInfo extends QueryInfo {
     public void setHasLiaison(Integer hasLiaison) {
         this.hasLiaison = hasLiaison;
     }
+
+    public CourseScheduleType getType() {
+        return type;
+    }
+
+    public void setType(CourseScheduleType type) {
+        this.type = type;
+    }
 }

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/CourseReviewQueryInfo.java

@@ -3,6 +3,7 @@ package com.ym.mec.biz.dal.page;
 import com.ym.mec.biz.dal.enums.PracticeGroupType;
 import com.ym.mec.common.page.QueryInfo;
 import io.swagger.annotations.ApiModelProperty;
+import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
 
 /**
  * 课次评论
@@ -59,6 +60,9 @@ public class CourseReviewQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "作业是否回复",required = false)
     private Integer homeWorkReplied;
 
+    @ApiModelProperty(value = "课程类型",required = false)
+    private CourseScheduleType type;
+
     public PracticeGroupType getPracticeGroupType() {
         return practiceGroupType;
     }
@@ -196,4 +200,12 @@ public class CourseReviewQueryInfo extends QueryInfo {
     public void setHomeWorkReplied(Integer homeWorkReplied) {
         this.homeWorkReplied = homeWorkReplied;
     }
+
+    public CourseScheduleType getType() {
+        return type;
+    }
+
+    public void setType(CourseScheduleType type) {
+        this.type = type;
+    }
 }

+ 19 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CourseReviewService.java

@@ -1,12 +1,14 @@
 package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.dto.*;
+import com.ym.mec.biz.dal.entity.CourseHomework;
 import com.ym.mec.biz.dal.entity.CourseScheduleReview;
 import com.ym.mec.biz.dal.page.CourseReview4EduQueryInfo;
 import com.ym.mec.biz.dal.page.CourseReviewQueryInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
+import java.util.Date;
 import java.util.List;
 
 
@@ -89,4 +91,21 @@ public interface CourseReviewService extends BaseService<Integer, CourseSchedule
 	 */
 	ReviewInfoDto getStuAndTeaReviewInfo(Long courseId,Integer userId);
 
+	/**
+	 * 获取线上课评价列表
+	 * @param queryInfo
+	 * @return
+	 */
+	PageInfo<CourseReviewDto> findOnlineCourseReviews(CourseReviewQueryInfo queryInfo);
+
+	/**
+	 * 布置线上课作业
+	 * @param courseScheduleId
+	 * @param content
+	 * @param expiryDate
+	 * @return
+	 */
+	CourseHomework addHomeWork(Integer courseScheduleId,String content, Date expiryDate);
+
+
 }

+ 126 - 31
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseReviewServiceImpl.java

@@ -11,6 +11,7 @@ import java.util.stream.Collectors;
 
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.*;
+import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.ImSendTypeEnum;
 import com.ym.mec.common.entity.ImPrivateMessage;
@@ -24,15 +25,6 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.entity.ClassGroup;
-import com.ym.mec.biz.dal.entity.CourseHomework;
-import com.ym.mec.biz.dal.entity.CourseSchedule;
-import com.ym.mec.biz.dal.entity.CourseScheduleComplaints;
-import com.ym.mec.biz.dal.entity.CourseScheduleReview;
-import com.ym.mec.biz.dal.entity.CourseScheduleStudentPayment;
-import com.ym.mec.biz.dal.entity.PracticeGroup;
-import com.ym.mec.biz.dal.entity.StudentCourseHomework;
-import com.ym.mec.biz.dal.entity.Teacher;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.CourseReview4EduQueryInfo;
@@ -104,7 +96,7 @@ public class CourseReviewServiceImpl extends BaseServiceImpl<Integer, CourseSche
     private SysConfigDao sysConfigDao;
 
     @Autowired
-    private RedisCache<String, Object> redisCache;
+    private VipGroupDao vipGroupDao;
 
     @Override
     public BaseDAO<Integer, CourseScheduleReview> getDAO() {
@@ -114,7 +106,7 @@ public class CourseReviewServiceImpl extends BaseServiceImpl<Integer, CourseSche
 
     @Override
     public PageInfo<CourseReviewDto> findPracticeGroupReviews(CourseReviewQueryInfo queryInfo) {
-        PageInfo pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        PageInfo<CourseReviewDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
         Map<String, Object> params = new HashMap<>();
         MapUtil.populateMap(params, queryInfo);
 
@@ -145,7 +137,7 @@ public class CourseReviewServiceImpl extends BaseServiceImpl<Integer, CourseSche
 
     @Override
     public PageInfo<CourseScheduleReview> findPracticeGroupReviews4Edu(CourseReview4EduQueryInfo queryInfo) {
-        PageInfo pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        PageInfo<CourseScheduleReview> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
         Map<String, Object> params = new HashMap<>();
         MapUtil.populateMap(params, queryInfo);
 
@@ -178,15 +170,24 @@ public class CourseReviewServiceImpl extends BaseServiceImpl<Integer, CourseSche
 
         studentDao.lockUser(courseScheduleReview.getTeacherId());
 
-        PracticeGroup practiceGroup = practiceGroupDao.get(Long.parseLong(courseSchedule.getMusicGroupId()));
+        Integer studentId = null;
+        Integer educationalTeacherId = null;
 
-        CourseScheduleReview hasReview = courseScheduleReviewDao.findByCourseScheduleAndStudent(courseScheduleId.longValue(), practiceGroup.getStudentId());
+        if (courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.PRACTICE)) {
+            PracticeGroup practiceGroup = practiceGroupDao.get(Long.parseLong(courseSchedule.getMusicGroupId()));
+            studentId = practiceGroup.getStudentId();
+            educationalTeacherId = practiceGroup.getEducationalTeacherId();
+        } else if (courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.VIP)) {
+            VipGroup vipGroup = vipGroupDao.get(Long.parseLong(courseSchedule.getMusicGroupId()));
+            educationalTeacherId = vipGroup.getEducationalTeacherId();
+        }
+        CourseScheduleReview hasReview = courseScheduleReviewDao.findByCourseScheduleAndStudent(courseScheduleId.longValue(), studentId);
         if (hasReview != null) {
             throw new BizException("评论已提交,请勿重复提交");
         }
         courseScheduleReview.setClassGroupId(courseSchedule.getClassGroupId());
-        courseScheduleReview.setEducationalTeacherId(practiceGroup.getEducationalTeacherId());
-        courseScheduleReview.setStudentId(practiceGroup.getStudentId());
+        courseScheduleReview.setEducationalTeacherId(educationalTeacherId);
+        courseScheduleReview.setStudentId(studentId);
         courseScheduleReview.setCreateTime(date);
         courseScheduleReview.setUpdateTime(date);
         long num = courseScheduleReviewDao.insert(courseScheduleReview);
@@ -201,12 +202,12 @@ public class CourseReviewServiceImpl extends BaseServiceImpl<Integer, CourseSche
             CourseHomework courseHomework = new CourseHomework();
             List<CourseScheduleStudentPayment> courseScheduleStudentPayments = courseScheduleStudentPaymentDao.findByCourseSchedule(courseSchedule.getId());
 
-            if(Objects.nonNull(existHomework)){
+            if (Objects.nonNull(existHomework)) {
                 courseHomework.setId(existHomework.getId());
                 courseHomework.setContent(courseScheduleReview.getHomeWork());
                 courseHomework.setExpiryDate(DateUtil.addDays(date, 7));
                 courseHomeworkService.update(courseHomework);
-            }else{
+            } else {
                 courseHomework.setContent(courseScheduleReview.getHomeWork());
                 courseHomework.setCourseScheduleId(courseSchedule.getId());
                 courseHomework.setMusicGroupId(courseSchedule.getMusicGroupId());
@@ -223,7 +224,7 @@ public class CourseReviewServiceImpl extends BaseServiceImpl<Integer, CourseSche
                 String dateStr = DateUtil.dateToString(DateUtil.addDays(date, 3), "MM月dd日");
                 for (CourseScheduleStudentPayment courseScheduleStudentPayment : courseScheduleStudentPayments) {
                     StudentCourseHomework studentCourseHomework = new StudentCourseHomework();
-                    if(Objects.isNull(existHomework)){
+                    if (Objects.isNull(existHomework)) {
                         studentCourseHomework.setCourseHomeworkId(courseHomework.getId());
                         studentCourseHomework.setUserId(courseScheduleStudentPayment.getUserId());
                         studentCourseHomework.setCourseScheduleId(courseSchedule.getId());
@@ -234,7 +235,7 @@ public class CourseReviewServiceImpl extends BaseServiceImpl<Integer, CourseSche
                         studentCourseHomework.setIsReplied(YesOrNoEnum.NO);
                         studentCourseHomework.setIsRepliedTimely(0);
                         studentCourseHomeworkDao.insert(studentCourseHomework);
-                    }else{
+                    } else {
                         studentCourseHomework = studentCourseHomeworkDao.findByStudentAndCourseHomewok(existHomework.getId(), courseScheduleStudentPayment.getUserId());
                     }
 
@@ -242,17 +243,17 @@ public class CourseReviewServiceImpl extends BaseServiceImpl<Integer, CourseSche
                     userMap.put(courseScheduleStudentPayment.getUserId(), courseScheduleStudentPayment.getUserId().toString());
                     String notifyUrl = "?courseScheduleID=" + courseSchedule.getId() + "&studentCourseHomeworkId=" + studentCourseHomework.getId() + "&extra=0";
                     String extra = "dayaedu" + notifyUrl + "&userId=" + courseScheduleStudentPayment.getUserId();
-                    if (courseScheduleReview.getMsgType() != ImSendTypeEnum.TXT){
-                        sysMessageService.batchSendImMessage(MessageTypeEnum.IM_HOMEWORK_REMIND_DETAIL,courseScheduleReview.getTeacherId().toString(),extra,
+                    if (courseScheduleReview.getMsgType() != ImSendTypeEnum.TXT) {
+                        sysMessageService.batchSendImMessage(MessageTypeEnum.IM_HOMEWORK_REMIND_DETAIL, courseScheduleReview.getTeacherId().toString(), extra,
                                 new String[]{courseScheduleStudentPayment.getUserId().toString()},
-                                null,courseSchedule.getName(), dateStr,courseHomework.getContent());
-                    }else {
-                        sysMessageService.batchSendImMessage(MessageTypeEnum.IM_HOMEWORK_REMIND,courseScheduleReview.getTeacherId().toString(),extra,
+                                null, courseSchedule.getName(), dateStr, courseHomework.getContent());
+                    } else {
+                        sysMessageService.batchSendImMessage(MessageTypeEnum.IM_HOMEWORK_REMIND, courseScheduleReview.getTeacherId().toString(), extra,
                                 new String[]{courseScheduleStudentPayment.getUserId().toString()},
-                                null,courseSchedule.getName(), dateStr,courseHomework.getContent());
+                                null, courseSchedule.getName(), dateStr, courseHomework.getContent());
                     }
                     sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.HOMEWORK_REMIND,
-                            userMap, null, 0, 3+notifyUrl, "STUDENT", teacher.getRealName(), courseSchedule.getName(), dateStr);
+                            userMap, null, 0, 3 + notifyUrl, "STUDENT", teacher.getRealName(), courseSchedule.getName(), dateStr);
                 }
             }
         }
@@ -273,10 +274,9 @@ public class CourseReviewServiceImpl extends BaseServiceImpl<Integer, CourseSche
         TeacherClassHeadInfo teacherClassGroupInfo = getCourseInfoHead(courseScheduleReview.getCourseScheduleId());
         courseScheduleReview.setTeacherName(teacherClassGroupInfo.getBishopTeacher());
 
-        CourseSchedule courseSchedule = courseScheduleDao.get(courseScheduleReview.getCourseScheduleId().longValue());
-        if (courseSchedule.getGroupType().equals(GroupType.PRACTICE)) {
-            PracticeCourseDto practiceGroup = practiceGroupDao.findByGroupId(Integer.parseInt(courseSchedule.getMusicGroupId()));
-            courseScheduleReview.setEduTeacherName(practiceGroup.getEduTeacherName());
+        if (courseScheduleReview.getEducationalTeacherId() != null) {
+            SysUser user = teacherDao.getUser(courseScheduleReview.getEducationalTeacherId());
+            courseScheduleReview.setEduTeacherName(user.getRealName());
         }
 
         ReviewInfoDto reviewInfoDto = new ReviewInfoDto();
@@ -508,4 +508,99 @@ public class CourseReviewServiceImpl extends BaseServiceImpl<Integer, CourseSche
         }
         return reviewInfoDto;
     }
+
+    @Override
+    public PageInfo<CourseReviewDto> findOnlineCourseReviews(CourseReviewQueryInfo queryInfo) {
+        PageInfo<CourseReviewDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+
+        List<CourseReviewDto> dataList = null;
+        int count = courseScheduleReviewDao.countOnlineCourseReviews(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = courseScheduleReviewDao.getOnlineCourseReviewList(params);
+        }
+        if (count == 0) {
+            dataList = new ArrayList<>();
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
+    public CourseHomework addHomeWork(Integer courseScheduleId, String content, Date expiryDate) {
+        if (StringUtils.isBlank(content)) {
+            throw new BizException("作业内容不能为空");
+        }
+        if (courseScheduleId == null || courseScheduleId <= 0) {
+            throw new BizException("课程id必须大于0");
+        }
+        Date date = new Date();
+        CourseSchedule courseSchedule = courseScheduleDao.get(courseScheduleId.longValue());
+        if (courseSchedule == null) {
+            throw new BizException("课程不存在");
+        }
+        studentDao.lockUser(courseSchedule.getActualTeacherId());
+
+        CourseHomework existHomework = courseHomeworkDao.findByCourseSchedule(courseScheduleId.longValue());
+
+        //新增课堂作业
+        CourseHomework courseHomework = new CourseHomework();
+        List<CourseScheduleStudentPayment> courseScheduleStudentPayments = courseScheduleStudentPaymentDao.findByCourseSchedule(courseSchedule.getId());
+
+        if (Objects.nonNull(existHomework)) {
+            courseHomework.setId(existHomework.getId());
+            courseHomework.setContent(content);
+            courseHomework.setExpiryDate(expiryDate);
+            courseHomeworkService.update(courseHomework);
+        } else {
+            courseHomework.setContent(content);
+            courseHomework.setCourseScheduleId(courseSchedule.getId());
+            courseHomework.setMusicGroupId(courseSchedule.getMusicGroupId());
+            courseHomework.setGroupType(courseSchedule.getGroupType());
+            courseHomework.setClassGroupId(courseSchedule.getClassGroupId());
+            courseHomework.setExpiryDate(expiryDate);
+            courseHomework.setExpectNum(CollectionUtils.isEmpty(courseScheduleStudentPayments) ? 0 : courseScheduleStudentPayments.size());
+            courseHomeworkService.insert(courseHomework);
+        }
+
+        if (!CollectionUtils.isEmpty(courseScheduleStudentPayments)) {
+            Teacher teacher = teacherDao.get(courseSchedule.getActualTeacherId());
+            String dateStr = DateUtil.dateToString(DateUtil.addDays(date, 3), "MM月dd日");
+            for (CourseScheduleStudentPayment courseScheduleStudentPayment : courseScheduleStudentPayments) {
+                StudentCourseHomework studentCourseHomework = new StudentCourseHomework();
+                if (Objects.isNull(existHomework)) {
+                    studentCourseHomework.setCourseHomeworkId(courseHomework.getId());
+                    studentCourseHomework.setUserId(courseScheduleStudentPayment.getUserId());
+                    studentCourseHomework.setCourseScheduleId(courseSchedule.getId());
+                    studentCourseHomework.setCreateTime(date);
+                    studentCourseHomework.setUpdateTime(date);
+                    studentCourseHomework.setStatus(YesOrNoEnum.NO);
+                    studentCourseHomework.setIsView(YesOrNoEnum.NO);
+                    studentCourseHomework.setIsReplied(YesOrNoEnum.NO);
+                    studentCourseHomework.setIsRepliedTimely(0);
+                    studentCourseHomeworkDao.insert(studentCourseHomework);
+                } else {
+                    studentCourseHomework = studentCourseHomeworkDao.findByStudentAndCourseHomewok(existHomework.getId(), courseScheduleStudentPayment.getUserId());
+                }
+
+                Map<Integer, String> userMap = new HashMap<>();
+                userMap.put(courseScheduleStudentPayment.getUserId(), courseScheduleStudentPayment.getUserId().toString());
+                String notifyUrl = "?courseScheduleID=" + courseSchedule.getId() + "&studentCourseHomeworkId=" + studentCourseHomework.getId() + "&extra=0";
+                String extra = "dayaedu" + notifyUrl + "&userId=" + courseScheduleStudentPayment.getUserId();
+
+                sysMessageService.batchSendImMessage(MessageTypeEnum.IM_HOMEWORK_REMIND, courseSchedule.getActualTeacherId().toString(), extra,
+                        new String[]{courseScheduleStudentPayment.getUserId().toString()},
+                        null, courseSchedule.getName(), dateStr, courseHomework.getContent());
+
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.HOMEWORK_REMIND,
+                        userMap, null, 0, 3 + notifyUrl, "STUDENT", teacher.getRealName(), courseSchedule.getName(), dateStr);
+            }
+        }
+
+        return courseHomework;
+    }
 }

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -30,6 +30,7 @@ import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.json.JsonUtil;
 import org.apache.commons.collections.ListUtils;
+import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -3607,6 +3608,10 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(courseGenerateInfo.getCourseCreateStartTime());
 
+        if(Objects.isNull(courseGenerateInfo.getCourseCount())||courseGenerateInfo.getCourseCount()<=0){
+        	throw new BizException("可排课次数不足");
+		}
+
         Set<String> holidayDays = new HashSet<>();
 
 		if (courseGenerateInfo.isSkipHoliday()) {

+ 3 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java

@@ -3730,10 +3730,11 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
             for (Map.Entry<Integer, String> integerStringEntry : userNeedRemindPracticeIdMap.entrySet()) {
                 Map<Integer, String> userMap = new HashMap<>();
                 userMap.put(integerStringEntry.getKey(), integerStringEntry.getKey().toString());
+                String[] params = integerStringEntry.getValue().split("-");
                 sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.PRACTICE_RENEW_REMIND_PUSH,
-                        userMap, null, 0, "5?" + pushUrl + integerStringEntry.getValue(), "STUDENT");
+                        userMap, null, 0, "5?" + pushUrl + (params[0].equals("CHARGE")?params[1]:""), "STUDENT");
             }
-            List<Integer> practiceIds = userNeedRemindPracticeIdMap.values().stream().map(e->Integer.valueOf(e)).collect(Collectors.toList());
+            List<Integer> practiceIds = userNeedRemindPracticeIdMap.values().stream().map(e->Integer.valueOf(e.split("-")[1])).collect(Collectors.toList());
             practiceGroupDao.batchUpdatePracticeRemindStatus(practiceIds, YesOrNoEnum.YES.getCode());
         }
     }

+ 15 - 24
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentManageServiceImpl.java

@@ -1,33 +1,14 @@
 package com.ym.mec.biz.service.impl;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-import com.ym.mec.biz.dal.dao.*;
-import com.ym.mec.biz.dal.dto.*;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.Student;
 import com.ym.mec.biz.dal.entity.StudentRegistration;
 import com.ym.mec.biz.dal.entity.SysUserCashAccount;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
-import com.ym.mec.biz.dal.page.MusicGroupStudentQueryInfo;
-import com.ym.mec.biz.dal.page.StudentManageAttendanceQueryInfo;
-import com.ym.mec.biz.dal.page.StudentManageCourseQueryInfo;
-import com.ym.mec.biz.dal.page.StudentManageQueryInfo;
-import com.ym.mec.biz.dal.page.StudentManageVipClassQueryInfo;
-import com.ym.mec.biz.dal.page.StudentOperatingQueryInfo;
-import com.ym.mec.biz.dal.page.StudentSignQueryInfo;
-import com.ym.mec.biz.dal.page.TeacherPaymentRecordInfo;
+import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.biz.service.StudentManageService;
 import com.ym.mec.biz.service.StudentService;
 import com.ym.mec.common.entity.ImResult;
@@ -36,6 +17,13 @@ import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.util.collection.MapUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @Author Joburgess
@@ -140,6 +128,8 @@ public class StudentManageServiceImpl implements StudentManageService {
             Map<Integer,String> vipGroupStatus = MapUtil.convertMybatisMap(vipGroupDao.queryUserVipStatus(userIds));
             //获取所在声部
             Map<Integer,String> subjectNames = MapUtil.convertMybatisMap(studentManageDao.querySubjectNames(userIds));
+            //学员是否有课
+            Map<Integer,Integer> hasCourseMap = MapUtil.convertMybatisMap(studentManageDao.queryHasCourseMap(userIds));
             dataList.forEach(e -> {
                 e.setOrganName(organNames.get(e.getOrganId()));
                 e.setMusicGroupName(musicGroupNames.get(e.getUserId().longValue()));
@@ -147,7 +137,8 @@ public class StudentManageServiceImpl implements StudentManageService {
                 e.setSubjectName(subjectNames.get(e.getUserId().longValue()));
                 e.setMusicGroupStatus(musicGroupStatus.get(e.getUserId().longValue()));
                 e.setVipGroupStatus(vipGroupStatus.get(e.getUserId()));
-                if(hasCourse == null){
+                e.setHasCourse(hasCourseMap.get(e.getUserId())==null?YesOrNoEnum.NO:YesOrNoEnum.YES);
+                /*if(hasCourse == null){
                     Integer course = studentManageDao.getHasCourse(e.getUserId());
                     e.setHasCourse(course==null?YesOrNoEnum.NO:course==0?YesOrNoEnum.NO:YesOrNoEnum.YES);
                 }else {
@@ -156,7 +147,7 @@ public class StudentManageServiceImpl implements StudentManageService {
                     }else {
                         e.setHasCourse(YesOrNoEnum.NO);
                     }
-                }
+                }*/
                 e.setHasPracticeCourse(hasPracticeCourseMap.get(e.getUserId()) == null?YesOrNoEnum.NO:YesOrNoEnum.YES);
                 if(collect.get(e.getUserId()) != null){
                     e.setCourseBalance(collect.get(e.getUserId()).getCourseBalance());

+ 4 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServeServiceImpl.java

@@ -140,7 +140,8 @@ public class StudentServeServiceImpl implements StudentServeService {
                     studentExtracurricularExercisesSituation.setActualExercisesNum(1);
                     long replyNum = studentHomeworks.stream().filter(e -> YesOrNoEnum.YES.equals(e.getStatus())).count();
                     studentExtracurricularExercisesSituation.setExercisesReplyNum(replyNum>0?1:0);
-                    if(replyNum>0){
+                    long haveSubmitTimes = studentHomeworks.stream().filter(e -> Objects.nonNull(e.getSubmitTime())).count();
+                    if(replyNum>0&&haveSubmitTimes>0){
                         Date lastSubmitTime = studentHomeworks.stream().filter(e->Objects.nonNull(e.getSubmitTime())).max(Comparator.comparing(StudentServeCourseHomeworkDto::getSubmitTime)).get().getSubmitTime();
                         studentExtracurricularExercisesSituation.setLastSubmitTime(lastSubmitTime);
                     }
@@ -178,7 +179,8 @@ public class StudentServeServiceImpl implements StudentServeService {
                 studentExtracurricularExercisesSituation.setActualExercisesNum(1);
                 long replyNum = studentExercises.stream().filter(e -> e.getStatus()==1).count();
                 studentExtracurricularExercisesSituation.setExercisesReplyNum(replyNum>0?1:0);
-                if(replyNum>0){
+                long haveSubmitTimes = studentExercises.stream().filter(e->Objects.nonNull(e.getSubmitTime())).count();
+                if(replyNum>0&&haveSubmitTimes>0){
                     Date lastSubmitTime = studentExercises.stream().filter(e->Objects.nonNull(e.getSubmitTime())).max(Comparator.comparing(ExtracurricularExercisesReply::getSubmitTime)).get().getSubmitTime();
                     studentExtracurricularExercisesSituation.setLastSubmitTime(lastSubmitTime);
                 }

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -1737,6 +1737,9 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			StudentPauseInfo studentPauseInfo1 = studentPauseInfos.stream().min(Comparator.comparing(StudentPauseInfo::getSurplusCourseNum)).get();
 			Map<String, Object> courseInfo1 = JSON.parseObject(studentPauseInfo1.getCoursesJson(), Map.class);
 			Integer[] teachModeSequence1=JSON.parseArray(courseInfo1.get("teaChModeSequence").toString(), Integer.class).stream().toArray(Integer[]::new);
+			if(teachModeSequence1.length<=0){
+				throw new BizException("此学员无剩余课时");
+			}
 			studentRecoverInfo.setCourseCount(teachModeSequence1.length);
 			List<CourseSchedule> newCourseSchedules = courseScheduleService.createCourses(studentRecoverInfo,false);
 			for(int i=0;i<newCourseSchedules.size();i++){

+ 96 - 4
mec-biz/src/main/resources/config/mybatis/CourseScheduleReviewMapper.xml

@@ -278,8 +278,11 @@
 
     <sql id="practiceGroupReviews4EduQueryCondition">
         <where>
+            <if test="type != null">
+                AND cs.type_=#{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+            </if>
             <if test="eduTeacherId != null">
-                AND pg.educational_teacher_id_=#{eduTeacherId}
+                AND csr.educational_teacher_id_=#{eduTeacherId}
             </if>
             <if test='hasReview !=null and hasReview=="1"'>
                 AND csr.course_review_ IS NOT NULL
@@ -309,10 +312,9 @@
     </sql>
 
     <select id="getPracticeGroupReview4EduList" resultMap="CourseScheduleReview">
-        SELECT csr.id_,cs.class_date_, pg.name_ course_name_,su.real_name_ teacher_name_,csr.hand_homework_
+        SELECT csr.id_,cs.class_date_, cs.name_ course_name_,su.real_name_ teacher_name_,csr.hand_homework_
         FROM course_schedule_review csr
         LEFT JOIN course_schedule cs on cs.id_ = csr.course_schedule_id_
-        LEFT JOIN practice_group pg ON cs.music_group_id_ = pg.id_ AND cs.group_type_='PRACTICE'
         LEFT JOIN sys_user su ON cs.actual_teacher_id_ = su.id_
         <include refid="practiceGroupReviews4EduQueryCondition"/>
         <include refid="global.limit"/>
@@ -322,7 +324,6 @@
     <select id="countPracticeGroupReviews4Edu" resultType="java.lang.Integer">
         SELECT count(*) FROM course_schedule_review csr
         LEFT JOIN course_schedule cs on cs.id_ = csr.course_schedule_id_
-        LEFT JOIN practice_group pg ON cs.music_group_id_ = pg.id_ AND cs.group_type_='PRACTICE'
         <include refid="practiceGroupReviews4EduQueryCondition"/>
     </select>
 
@@ -330,7 +331,9 @@
         SELECT *
         FROM course_schedule_review
         WHERE course_schedule_id_ = #{courseScheduleId}
+        <if test="studentId != null">
           AND student_id_ = #{studentId}
+        </if>
     </select>
 
     <select id="findByCourseSchedules" resultMap="CourseScheduleReview">
@@ -382,4 +385,93 @@
                  LEFT JOIN sys_user su on cgsm.user_id_ = su.id_
         WHERE cgsm.class_group_id_ = #{classGroupId}
     </select>
+
+    <select id="getOnlineCourseReviewList" resultMap="CourseReviewDto">
+        SELECT cs.id_,cs.class_date_,cs.name_ course_name_,csr.id_ review_id_, csc.score_ student_review_,
+        csr.hand_homework_,csr.course_review_,csr.teaching_material_,csr.pronunciation_,csr.tempo_,
+        csr.music_theory_,csr.song_,csr.memo_,csr.create_time_,csr.has_liaison_,csr.update_time_,sa.id_
+        attendance_id_,sch.is_replied_ home_work_replied_,
+        CASE WHEN sch.id_ IS NULL THEN 0 ELSE 1 END assign_homework_
+        FROM course_schedule cs
+        LEFT JOIN sys_user su ON cs.actual_teacher_id_ = su.id_
+        LEFT JOIN course_schedule_review csr on cs.id_ = csr.course_schedule_id_
+        LEFT JOIN course_schedule_complaints csc on csc.course_schedule_id_ = cs.id_
+        LEFT JOIN student_attendance sa on sa.course_schedule_id_ = cs.id_
+        LEFT JOIN student_course_homework sch on cs.id_ = sch.course_schedule_id_
+        <include refid="courseReviewsQueryCondition"/>
+        ORDER BY cs.class_date_ DESC
+        <include refid="global.limit"/>
+    </select>
+
+    <select id="countOnlineCourseReviews" resultType="java.lang.Integer">
+        SELECT count(*) FROM course_schedule cs
+        LEFT JOIN course_schedule_review csr on cs.id_ = csr.course_schedule_id_
+        LEFT JOIN course_schedule_complaints csc on csc.course_schedule_id_ = cs.id_
+        LEFT JOIN student_attendance sa on sa.course_schedule_id_ = cs.id_
+        LEFT JOIN student_course_homework sch on cs.id_ = sch.course_schedule_id_
+        <include refid="courseReviewsQueryCondition"/>
+    </select>
+
+    <sql id="courseReviewsQueryCondition">
+        <where>
+            AND cs.type_ IN ('PRACTICE','VIP') AND cs.teach_mode_='ONLINE' AND cs.status_='OVER' AND (cs.del_flag_ = 0 OR cs.del_flag_ IS NULL)
+            <if test="search!=null and search!=''">
+                AND (cs.name_ LIKE CONCAT('%',#{search},'%') OR cs.id_= #{search})
+            </if>
+            <if test="organId != null">
+                AND FIND_IN_SET(cs.organ_id_,#{organId})
+            </if>
+            <if test="type != null">
+                AND cs.type_=#{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+            </if>
+            <if test="teacherId != null">
+                AND cs.actual_teacher_id_=#{teacherId}
+            </if>
+            <if test="assignHomework != null and assignHomework == 1">
+                AND sch.id_>0
+            </if>
+            <if test="assignHomework != null and assignHomework ==0">
+                AND sch.id_ IS NULL
+            </if>
+            <if test='hasReview !=null and hasReview=="1"'>
+                AND csr.id_ > 0
+            </if>
+            <if test='hasReview !=null and hasReview=="0"'>
+                AND csr.id_ IS NULL
+            </if>
+            <if test='hasHandHomework !=null and hasHandHomework=="1"'>
+                AND csr.hand_homework_ = 1
+            </if>
+            <if test='hasHandHomework !=null and hasHandHomework=="0"'>
+                AND csr.hand_homework_ IS NULL
+            </if>
+            <if test='hasLiaison !=null and hasLiaison=="1"'>
+                AND csr.has_liaison_ = 1
+            </if>
+            <if test='hasLiaison !=null and hasLiaison=="0"'>
+                AND (csr.has_liaison_ = 0 OR csr.has_liaison_ IS NULL)
+            </if>
+            <if test="courseReview != null">
+                AND csr.course_review_=#{courseReview}
+            </if>
+            <if test="startTime !=null">
+                <![CDATA[AND cs.class_date_ >= #{startTime} ]]>
+            </if>
+            <if test="endTime !=null">
+                <![CDATA[AND cs.class_date_ <= #{endTime} ]]>
+            </if>
+            <if test='hasArrived !=null and hasArrived=="1"'>
+                AND sa.id_ > 0
+            </if>
+            <if test='hasArrived !=null and hasArrived=="0"'>
+                AND sa.id_ IS NULL
+            </if>
+            <if test='homeWorkReplied !=null and homeWorkReplied =="1"'>
+                AND sch.is_replied_ > 0
+            </if>
+            <if test='homeWorkReplied !=null and homeWorkReplied =="0"'>
+                AND (sch.is_replied_ = 0 OR sch.is_replied_ IS NULL)
+            </if>
+        </where>
+    </sql>
 </mapper>

+ 13 - 9
mec-biz/src/main/resources/config/mybatis/PracticeGroupMapper.xml

@@ -170,9 +170,8 @@
         SELECT COUNT(*)
         FROM practice_group
         WHERE student_id_ = #{userId}
-          AND group_status_ = 'NORMAL'
+          AND group_status_ IN ('NORMAL', 'FINISH')
           AND type_='FREE'
-          AND create_time_ > '2020-03-25'
     </select>
     <select id="countPracticeGroupByOrgan" resultType="java.lang.Integer">
         SELECT count(*) FROM practice_group pg
@@ -683,27 +682,32 @@
             AND cs.actual_teacher_id_ = #{teacherId}
             AND pg.student_id_ = #{studentId}
     </select>
+
     <select id="checkStudentExitChargePractice" resultType="int">
         SELECT COUNT(id_) FROM practice_group WHERE type_='CHARGE' AND student_id_=#{studentId} AND group_status_ IN ('NORMAL', 'FINISH')
     </select>
+
     <select id="countStudentIngTrialPractices" resultType="int">
       SELECT COUNT(pg.id_) FROM practice_group pg LEFT JOIN course_schedule cs ON cs.music_group_id_=pg.id_
       WHERE pg.student_id_=#{studentId} AND pg.type_='TRIAL' AND cs.group_type_='PRACTICE' AND CONCAT(cs.class_date_, ' ', cs.end_class_time_)>NOW()
     </select>
+
     <select id="getNeedRemindPracticeUsers" resultType="int">
         SELECT pg.student_id_ FROM practice_group pg
         LEFT JOIN course_schedule cs ON cs.music_group_id_=pg.id_
         WHERE pg.group_status_='NORMAL' AND cs.group_type_='PRACTICE' AND CONCAT(class_date_, ' ', end_class_time_)>NOW()
         GROUP BY pg.student_id_ HAVING COUNT(cs.id_)=1;
     </select>
+
     <select id="getUserNeedRemindPracticeIdMap" resultType="map">
-        SELECT cssp.user_id_ AS 'key', cssp.music_group_id_ AS 'value' FROM course_schedule_student_payment cssp
-        LEFT JOIN course_schedule cs ON cs.id_=cssp.course_schedule_id_
-        LEFT JOIN practice_group pg ON pg.id_=cssp.music_group_id_
+        SELECT cssp.user_id_ AS 'key', CONCAT(pg.type_, '-', cssp.music_group_id_) AS 'value'
+        FROM course_schedule_student_payment cssp
+            LEFT JOIN course_schedule cs ON cs.id_=cssp.course_schedule_id_
+            LEFT JOIN practice_group pg ON pg.id_=cssp.music_group_id_
         WHERE pg.reminded=0 AND cs.group_type_='PRACTICE' AND CONCAT(class_date_, ' ', end_class_time_)>NOW()
-        AND cssp.user_id_ IN
-        <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
-            #{studentId}
-        </foreach>
+            AND cssp.user_id_ IN
+            <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
+                #{studentId}
+            </foreach>
     </select>
 </mapper>

+ 11 - 1
mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml

@@ -746,7 +746,7 @@
         <result property="organId" column="organ_id_"/>
         <result property="subjectName" column="music_group_subject_"/>
         <result property="courseBalance" column="course_balance_"/>
-        <result property="serviceTag" column="service_tag_" />
+        <result property="serviceTag" column="service_tag_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result property="operatingTag" column="operating_tag_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result property="teacherName" column="teacher_name_"/>
         <result property="teacherId" column="teacher_id_"/>
@@ -901,5 +901,15 @@
         WHERE mgpc.id_ = #{musicGroupPaymentCalenderId}
         ) AND mgsf.music_group_id_ = #{musicGroupId}
     </select>
+    <select id="queryHasCourseMap" resultType="java.util.Map">
+        SELECT su.id_ 'key',COUNT(DISTINCT su.id_) 'value' FROM sys_user su
+        LEFT JOIN course_schedule_student_payment cssp ON cssp.user_id_ = su.id_
+        LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
+        WHERE cs.status_ != 'OVER' AND su.id_ IN
+        <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
+            #{userId}
+        </foreach>
+        GROUP BY su.id_
+    </select>
 
 </mapper>

+ 28 - 1
mec-teacher/src/main/java/com/ym/mec/teacher/controller/CourseReviewController.java

@@ -8,11 +8,14 @@ import com.ym.mec.biz.service.CourseReviewService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 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.web.bind.annotation.*;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Objects;
 
@@ -30,7 +33,7 @@ public class CourseReviewController extends BaseController {
 
     @ApiOperation(value = "网管课评论列表")
     @GetMapping("getPracticeGroup")
-    public Object getPracticeGroup(CourseReviewQueryInfo queryInfo) {
+    public HttpResponseResult getPracticeGroup(CourseReviewQueryInfo queryInfo) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
             return failed("用户信息获取失败");
@@ -91,4 +94,28 @@ public class CourseReviewController extends BaseController {
         return succeed(courseReviewService.batchAdd(sysUser.getId(),courseScheduleReviews));
     }
 
+    @ApiOperation(value = "线上课评论列表")
+    @GetMapping("getOnlineCourse")
+    public HttpResponseResult getOnlineCourse(CourseReviewQueryInfo queryInfo) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        queryInfo.setTeacherId(sysUser.getId());
+        return succeed(courseReviewService.findOnlineCourseReviews(queryInfo));
+    }
+
+    @ApiOperation(value = "布置线上课作业")
+    @PostMapping(value = "/addHomeWork")
+    @ApiImplicitParams({ @ApiImplicitParam(name = "courseId", value = "课程编号", required = true, dataType = "int"),
+            @ApiImplicitParam(name = "content", value = "作业内容", required = true, dataType = "String"),
+            @ApiImplicitParam(name = "expiryDate", value = "作业截止日期", required = true, dataType = "Date")})
+    public HttpResponseResult addHomeWork(Integer courseId, String content, Date expiryDate) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (Objects.isNull(sysUser)) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        return succeed(courseReviewService.addHomeWork(courseId,content,expiryDate));
+    }
+
 }

+ 24 - 0
mec-web/src/main/java/com/ym/mec/web/controller/CourseReviewController.java

@@ -82,4 +82,28 @@ public class CourseReviewController extends BaseController {
         return succeed(courseReviewService.getStuAndTeaReview(courseId));
     }
 
+    @ApiOperation(value = "网管课课程评论管理")
+    @GetMapping("getVipGroup")
+    @PreAuthorize("@pcs.hasPermissions('courseReview/getVipGroup')")
+    public Object getVipGroup(CourseReviewQueryInfo queryInfo) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        if (!sysUser.getIsSuperAdmin()) {
+            Employee employee = employeeDao.get(sysUser.getId());
+            if (StringUtils.isEmpty(queryInfo.getOrganId())) {
+                queryInfo.setOrganId(employee.getOrganIdList());
+            } else if (StringUtils.isEmpty(employee.getOrganIdList())) {
+                return failed("用户所在分部异常");
+            } else {
+                List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
+                if (!list.containsAll(Arrays.asList(queryInfo.getOrganId().split(",")))) {
+                    return failed("非法请求");
+                }
+            }
+        }
+        return succeed(courseReviewService.findPracticeGroupReviews(queryInfo));
+    }
+
 }

+ 5 - 0
mec-web/src/main/java/com/ym/mec/web/controller/education/EduCourseReviewController.java

@@ -54,6 +54,11 @@ public class EduCourseReviewController extends BaseController {
     @ApiOperation(value = "教务评论")
     @GetMapping("updateReviewInfo")
     public HttpResponseResult updateReviewInfo(CourseScheduleReview courseScheduleReview) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        courseScheduleReview.setEducationalTeacherId(sysUser.getId());
         return succeed(courseReviewService.updateReview(courseScheduleReview));
     }