Browse Source

merge:解决冲突

liujunchi 3 years ago
parent
commit
6bde2f5171
15 changed files with 499 additions and 24 deletions
  1. 7 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleDao.java
  2. 16 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleRepliedDao.java
  3. 21 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/MyCourseSearch.java
  4. 0 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/CourseScheduleReplied.java
  5. 5 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseRepliedService.java
  6. 5 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseScheduleService.java
  7. 46 15
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseRepliedServiceImpl.java
  8. 34 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java
  9. 11 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/MyCourseVo.java
  10. 124 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/MyRepliedVo.java
  11. 45 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  12. 77 3
      cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleRepliedMapper.xml
  13. 80 0
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/CourseScheduleController.java
  14. 17 0
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/CourseRepliedController.java
  15. 11 1
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/CourseScheduleController.java

+ 7 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleDao.java

@@ -72,6 +72,7 @@ public interface CourseScheduleDao extends BaseMapper<CourseSchedule> {
     List<MyCourseVo> queryTeacherPracticeCourse(IPage page, @Param("param") MyCourseSearch query);
 
 
+
     /**
      * 老师未布置的课程作业数量
      * <p>
@@ -81,5 +82,11 @@ public interface CourseScheduleDao extends BaseMapper<CourseSchedule> {
      * @return number
      */
     Integer countTeacherNoDecorateHomework(@Param("param") HomeworkSearch param);
+
+    //查询老师约课日历
+    List<String> queryCourseSchedule(MyCourseSearch search);
+
+    //根据学生id查询老师
+    List<MyCourseVo> queryStudentPracticeCourse(IPage<MyCourseVo> page, @Param("param") MyCourseSearch search);
 }
 

+ 16 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleRepliedDao.java

@@ -4,6 +4,8 @@ import java.util.List;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.biz.dal.dto.search.MyCourseSearch;
+import com.yonge.cooleshow.biz.dal.vo.MyRepliedVo;
 import org.apache.ibatis.annotations.Param;
 import com.yonge.cooleshow.biz.dal.entity.CourseScheduleReplied;
 import com.yonge.cooleshow.biz.dal.vo.CourseScheduleRepliedVo;
@@ -35,4 +37,18 @@ public interface CourseScheduleRepliedDao extends BaseMapper<CourseScheduleRepli
     void updateReplied(CourseScheduleReplied replied);
 
     List<Long> selectAll();
+
+	/**
+	 * @Description: 查询我的评价
+	 * @Author: cy
+	 * @Date: 2022/4/13
+	 */
+	List<MyRepliedVo> myReplied(IPage<MyRepliedVo> page, @Param("param") MyCourseSearch search);
+
+	/**
+	 * @Description: 添加评论
+	 * @Author: cy
+	 * @Date: 2022/4/13
+	 */
+	void insertReplied(CourseScheduleReplied replied);
 }

+ 21 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/MyCourseSearch.java

@@ -18,12 +18,18 @@ public class MyCourseSearch extends QueryInfo {
     @ApiModelProperty(value = "上课日期")
     private String classDate;
 
+    @ApiModelProperty(value = "上课月份")
+    private String classMonth;
+
     @ApiModelProperty(value = "声部id")
     private Integer subjectId;
 
     @ApiModelProperty(value = "老师id")
     private Long teacherId;
 
+    @ApiModelProperty(value = "学生id")
+    private Long studentId;
+
     @ApiModelProperty(value = "0:未评价 1:已评价")
     private Integer replied;
 
@@ -33,8 +39,21 @@ public class MyCourseSearch extends QueryInfo {
     @ApiModelProperty(value = "学生姓名")
     private String studentName;
 
-//    @ApiModelProperty(value = "筛选条件")
-//    private String search;
+    public Long getStudentId() {
+        return studentId;
+    }
+
+    public void setStudentId(Long studentId) {
+        this.studentId = studentId;
+    }
+
+    public String getClassMonth() {
+        return classMonth;
+    }
+
+    public void setClassMonth(String classMonth) {
+        this.classMonth = classMonth;
+    }
 
     public String getStudentName() {
         return studentName;

+ 0 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/CourseScheduleReplied.java

@@ -29,7 +29,6 @@ public class CourseScheduleReplied implements Serializable {
 
     @ApiModelProperty("学生id ")
     @TableField(value = "student_id_")
-    @NotNull(message = "学生id不能为空")
     private Long studentId;
 
     @ApiModelProperty("课程编号 ")

+ 5 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseRepliedService.java

@@ -1,8 +1,11 @@
 package com.yonge.cooleshow.biz.dal.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.dto.search.MyCourseSearch;
 import com.yonge.cooleshow.biz.dal.entity.CourseScheduleReplied;
+import com.yonge.cooleshow.biz.dal.vo.MyRepliedVo;
 
 /**
  * @Author: cy
@@ -12,4 +15,6 @@ public interface CourseRepliedService extends IService<CourseScheduleReplied> {
     void replied(CourseScheduleReplied replied, SysUser sysUser);
 
     CourseScheduleReplied selectReplied(CourseScheduleReplied replied);
+
+    IPage<MyRepliedVo> myReplied(IPage<MyRepliedVo> page, MyCourseSearch search);
 }

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

@@ -143,5 +143,10 @@ public interface CourseScheduleService extends IService<CourseSchedule> {
      * @return number
      */
     Integer countTeacherNoDecorateHomework(HomeworkSearch homeworkSearch);
+
+    List<String> queryCourseSchedule(MyCourseSearch search);
+
+    IPage<MyCourseVo> queryStudentPracticeCourse(IPage<MyCourseVo> page, MyCourseSearch search);
+
 }
 

+ 46 - 15
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseRepliedServiceImpl.java

@@ -1,16 +1,19 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dao.CourseScheduleDao;
 import com.yonge.cooleshow.biz.dal.dao.CourseScheduleRepliedDao;
 import com.yonge.cooleshow.biz.dal.dao.CourseScheduleStudentPaymentDao;
+import com.yonge.cooleshow.biz.dal.dto.search.MyCourseSearch;
 import com.yonge.cooleshow.biz.dal.entity.CourseSchedule;
 import com.yonge.cooleshow.biz.dal.entity.CourseScheduleReplied;
 import com.yonge.cooleshow.biz.dal.entity.CourseScheduleStudentPayment;
 import com.yonge.cooleshow.biz.dal.enums.CourseScheduleEnum;
 import com.yonge.cooleshow.biz.dal.service.CourseRepliedService;
+import com.yonge.cooleshow.biz.dal.vo.MyRepliedVo;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -56,24 +59,21 @@ public class CourseRepliedServiceImpl extends ServiceImpl<CourseScheduleRepliedD
             throw new RuntimeException("课程未开始无法评论");
         }
 
-        //评论存在执行修改
-        QueryWrapper<CourseScheduleReplied> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("student_id_", replied.getStudentId());
-        queryWrapper.eq("course_schedule_id_", replied.getCourseScheduleId());
-        queryWrapper.eq("course_group_id_", replied.getCourseGroupId());
-        queryWrapper.eq("course_group_type_", CourseScheduleEnum.PRACTICE.getCode());
-        CourseScheduleReplied scheduleReplied = repliedDao.selectOne(queryWrapper);
-        if (scheduleReplied != null) {
-            repliedDao.updateReplied(replied);
-            return;
-        }
-
         //当前用户为老师
         CourseSchedule courseSchedule = scheduleDao.selectById(scheduleId);
         if (courseSchedule != null) {
             Long teacherId = courseSchedule.getTeacherId();
             if (userId == teacherId) {
-                repliedDao.insert(replied);
+                if (studentId == null) {
+                    throw new RuntimeException("学生id不能为空");
+                }
+                replied.setScore(null);
+                replied.setStudentReplied(null);
+                if (!repliedIsNull(replied)){//评论已存在
+                    repliedDao.updateReplied(replied);
+                    return;
+                }
+                repliedDao.insertReplied(replied);
                 return;
             }
         }
@@ -84,10 +84,31 @@ public class CourseRepliedServiceImpl extends ServiceImpl<CourseScheduleRepliedD
         wrapper.eq("course_id_", scheduleId);
         wrapper.eq("course_type_", CourseScheduleEnum.PRACTICE);
         CourseScheduleStudentPayment payment = paymentDao.selectOne(wrapper);
-        if (payment == null || userId != studentId) {
+        if (payment == null) {
             throw new RuntimeException("未购买该课无法评论");
         }
-        repliedDao.insert(replied);
+        replied.setStudentId(userId);
+        replied.setTeacherReplied(null);
+        if (!repliedIsNull(replied)){//评论已存在
+            repliedDao.updateReplied(replied);
+            return;
+        }
+        repliedDao.insertReplied(replied);
+    }
+
+    /**
+     * @Description: 判断评论是否存在
+     * @Author: cy
+     * @Date: 2022/4/13
+     */
+    public boolean repliedIsNull(CourseScheduleReplied replied) {
+        QueryWrapper<CourseScheduleReplied> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("student_id_", replied.getStudentId());
+        queryWrapper.eq("course_schedule_id_", replied.getCourseScheduleId());
+        queryWrapper.eq("course_group_id_", replied.getCourseGroupId());
+        queryWrapper.eq("course_group_type_", CourseScheduleEnum.PRACTICE.getCode());
+        CourseScheduleReplied scheduleReplied = repliedDao.selectOne(queryWrapper);
+        return scheduleReplied == null ? true : false;
     }
 
     /**
@@ -105,4 +126,14 @@ public class CourseRepliedServiceImpl extends ServiceImpl<CourseScheduleRepliedD
         return repliedDao.selectOne(wrapper);
     }
 
+    /**
+     * @Description: 首页-我收到的评价
+     * @Author: cy
+     * @Date: 2022/4/13
+     */
+    @Override
+    public IPage<MyRepliedVo> myReplied(IPage<MyRepliedVo> page, MyCourseSearch search) {
+        return page.setRecords(repliedDao.myReplied(page, search));
+    }
+
 }

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

@@ -610,11 +610,22 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
     }
 
     /**
-     * @Description: 老师端-首页-我的课程-陪练课
+     * 老师端-首页-我的课程-陪练课
+     *      search:{"classMonth":"2022-03","status":"COMPLETE","subjectId":1}
+     *
+     * 老师端-首页-课后评价
+     *      search:{"classMonth":"2022-03","replied":0,"studentName":"测试王"}
+     *
+     * 老师端-我的-我的主页
+     *      search:{"classMonth":"2022-03"}
+     *
+     * 老师端-课表
+     *      search:{"classDate":"2022-03-27"}
+     *
+     * @Description: 根据老师id查询购课学员
      * @Author: cy
      * @Date: 2022/4/11
      */
-    @Override
     public IPage<MyCourseVo> queryTeacherPracticeCourse(IPage<MyCourseVo> page, MyCourseSearch search) {
         //查询所有已评价学生id
         List<Long> studentList=repliedDao.selectAll();
@@ -627,6 +638,9 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
                 List<Long> userList=paymentDao.selectAll();
                 //取差集
                 userList.removeAll(studentList);
+                if (userList.isEmpty()){
+                    return page.setRecords(new ArrayList<>());
+                }
                 search.setRepliedIds(userList);
             }
 
@@ -643,5 +657,23 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         // 陪练课 课程状态为完成,有学生考勤记录 没有学生课程记录
         return baseMapper.countTeacherNoDecorateHomework(homeworkSearch);
     }
+
+    /**
+     * @Description: 查询老师约课日历
+     * @Author: cy
+     * @Date: 2022/4/13
+     */
+    public List<String> queryCourseSchedule(MyCourseSearch search) {
+        return baseMapper.queryCourseSchedule(search);
+    }
+
+    /**
+     * @Description: 根据学生id查询老师
+     * @Author: cy
+     * @Date: 2022/4/13
+     */
+    public IPage<MyCourseVo> queryStudentPracticeCourse(IPage<MyCourseVo> page, MyCourseSearch search) {
+        return page.setRecords(baseMapper.queryStudentPracticeCourse(page, search));
+    }
 }
 

+ 11 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/MyCourseVo.java

@@ -48,6 +48,17 @@ public class MyCourseVo implements Serializable {
     @ApiModelProperty(value = "课程id")
     private Integer courseId;
 
+    @ApiModelProperty(value = "签到时间")
+    private String signInTime;
+
+    public String getSignInTime() {
+        return signInTime;
+    }
+
+    public void setSignInTime(String signInTime) {
+        this.signInTime = signInTime;
+    }
+
     public Integer getCourseGoupId() {
         return courseGoupId;
     }

+ 124 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/MyRepliedVo.java

@@ -0,0 +1,124 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Author: cy
+ * @Date: 2022/4/13
+ */
+@ApiModel(value = "MyRepliedVo")
+public class MyRepliedVo implements Serializable {
+    @ApiModelProperty(value = "用户id")
+    private Long userId;
+
+    @ApiModelProperty(value = "用户姓名")
+    private String userName;
+
+    @ApiModelProperty(value = "头像地址")
+    private String avatar;
+
+    @ApiModelProperty(value = "上课日期")
+    private Date classDate;
+
+    @ApiModelProperty(value = "上课时间")
+    private Date startTime;
+
+    @ApiModelProperty(value = "下课时间")
+    private Date endTime;
+
+    @ApiModelProperty(value = "声部id")
+    private Integer subjectId;
+
+    @ApiModelProperty(value = "声部名称")
+    private String subjectName;
+
+    @ApiModelProperty(value = "评分")
+    private String score;
+
+    @ApiModelProperty(value = "学员课后评价")
+    private String studentReplied;
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getAvatar() {
+        return avatar;
+    }
+
+    public void setAvatar(String avatar) {
+        this.avatar = avatar;
+    }
+
+    public Date getClassDate() {
+        return classDate;
+    }
+
+    public void setClassDate(Date classDate) {
+        this.classDate = classDate;
+    }
+
+    public Date getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(Date startTime) {
+        this.startTime = startTime;
+    }
+
+    public Date getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(Date endTime) {
+        this.endTime = endTime;
+    }
+
+    public Integer getSubjectId() {
+        return subjectId;
+    }
+
+    public void setSubjectId(Integer subjectId) {
+        this.subjectId = subjectId;
+    }
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
+    public String getScore() {
+        return score;
+    }
+
+    public void setScore(String score) {
+        this.score = score;
+    }
+
+    public String getStudentReplied() {
+        return studentReplied;
+    }
+
+    public void setStudentReplied(String studentReplied) {
+        this.studentReplied = studentReplied;
+    }
+}

+ 45 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -164,6 +164,9 @@
         <if test="param.classDate !=null and param.classDate !=''">
             AND cs.class_date_ = #{param.classDate}
         </if>
+        <if test="param.classMonth !=null and param.classMonth !=''">
+            AND DATE_FORMAT(cs.class_date_,'%Y-%m') = #{param.classMonth}
+        </if>
         <if test="param.repliedIds !=null">
             AND p.user_id_ IN
             <foreach collection="param.repliedIds" item="repliedIds" open="(" close=")" separator=",">
@@ -194,4 +197,46 @@
             </if>
         </where>
     </select>
+
+    <select id="queryCourseSchedule" resultType="java.lang.String"
+            parameterType="com.yonge.cooleshow.biz.dal.dto.search.MyCourseSearch">
+        SELECT s.class_date_
+        FROM course_schedule_student_payment p
+        LEFT JOIN course_schedule s ON p.course_id_ = s.id_
+        WHERE s.teacher_id_=#{teacherId}
+        AND p.course_type_='PRACTICE'
+        AND DATE_FORMAT(s.class_date_,'%Y-%m') = #{classMonth}
+    </select>
+    <select id="queryStudentPracticeCourse" resultType="com.yonge.cooleshow.biz.dal.vo.MyCourseVo">
+        SELECT
+            s.id_ AS courseId,
+            s.course_group_id_ AS courseGoupId,
+            s.class_date_ AS classDate,
+            s.start_time_ AS startTime,
+            s.end_time_ AS endTime,
+            s.status_ AS `status`,
+            s.teacher_id_ AS teacherId,
+            u.id_ AS userId,
+            u.username_ AS userName,
+            u.avatar_ AS avatar,
+            g.subject_id_ AS subjectId,
+            b.name_ AS subjectName,
+            a.sign_in_time_ AS signInTime
+        FROM course_schedule s
+        LEFT JOIN sys_user u ON s.teacher_id_ = u.id_
+        LEFT JOIN course_group g ON s.course_group_id_ = g.id_
+        LEFT JOIN `subject` b ON g.subject_id_ = b.id_
+        LEFT JOIN student_attendance a ON s.id_ = a.course_schedule_id_
+        WHERE s.id_ IN
+        (SELECT course_id_ FROM course_schedule_student_payment WHERE user_id_ = #{param.studentId} AND course_type_ = 'PRACTICE')
+        <if test="param.status !=null and param.status !=''">
+            AND s.status_ = #{param.status}
+        </if>
+        <if test="param.subjectId !=null">
+            AND g.subject_id_ = #{param.subjectId}
+        </if>
+        <if test="param.classMonth !=null and param.classMonth !=''">
+            AND DATE_FORMAT(s.class_date_,'%Y-%m') = #{param.classMonth}
+        </if>
+    </select>
 </mapper>

+ 77 - 3
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleRepliedMapper.xml

@@ -26,8 +26,57 @@
         , t.teacher_replied_
         , t.create_time_
         , t.update_time_
-        </sql> 
-    
+        </sql>
+    <insert id="insertReplied" parameterType="com.yonge.cooleshow.biz.dal.entity.CourseScheduleReplied">
+        INSERT INTO course_schedule_replied
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="studentId != null">
+                student_id_,
+            </if>
+            <if test="courseScheduleId != null">
+                course_schedule_id_,
+            </if>
+            <if test="courseGroupType != null">
+                course_group_type_,
+            </if>
+            <if test="courseGroupId != null">
+                course_group_id_,
+            </if>
+            <if test="score != null">
+                score_,
+            </if>
+            <if test="studentReplied != null">
+                student_replied_,
+            </if>
+            <if test="teacherReplied != null">
+                teacher_replied_,
+            </if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="studentId != null">
+                studentId,
+            </if>
+            <if test="courseScheduleId != null">
+                courseScheduleId,
+            </if>
+            <if test="courseGroupType != null">
+                courseGroupType,
+            </if>
+            <if test="courseGroupId != null">
+                courseGroupId,
+            </if>
+            <if test="score != null">
+                score,
+            </if>
+            <if test="studentReplied != null">
+                studentReplied,
+            </if>
+            <if test="teacherReplied != null">
+                teacherReplied,
+            </if>
+        </trim>
+    </insert>
+
     <select id="detail" resultType="com.yonge.cooleshow.biz.dal.vo.CourseScheduleRepliedVo">
         SELECT
             <include refid="baseColumns"/>
@@ -43,7 +92,6 @@
     <select id="selectAll" resultType="java.lang.Long">
         SELECT student_id_ FROM course_schedule_replied WHERE course_group_type_='PRACTICE'
     </select>
-
     <update id="updateReplied" parameterType="com.yonge.cooleshow.biz.dal.entity.CourseScheduleReplied">
         UPDATE course_schedule_replied
         <set>
@@ -57,4 +105,30 @@
         AND course_group_id_ = #{courseGroupId}
         AND course_group_type_ = #{courseGroupType}
     </update>
+    <select id="myReplied" resultType="com.yonge.cooleshow.biz.dal.vo.MyRepliedVo">
+        SELECT
+            r.score_ AS score,
+            r.student_id_ AS studentId,
+            g.subject_id_ AS subjectId,
+            sb.name_ AS subjectName,
+            s.class_date_ AS classDate,
+            s.start_time_ AS startTime,
+            s.end_time_ AS endTime,
+            u.id_ AS studentId,
+            u.username_ AS userName,
+            u.avatar_ AS avatar
+        FROM course_schedule_replied r
+        LEFT JOIN course_group g ON g.id_ = r.course_group_id_
+        LEFT JOIN `subject` sb ON sb.id_ = g.subject_id_
+        LEFT JOIN course_schedule s ON s.id_ = r.course_schedule_id_
+        LEFT JOIN sys_user u ON u.id_ = r.student_id_
+        WHERE r.course_group_type_ = 'PRACTICE'
+        AND s.teacher_id_ = #{param.teacherId}
+        <if test="param.studentName !=null and param.studentName !=''">
+            AND u.username_ LIKE CONCAT('%', #{param.studentName}, '%')
+        </if>
+        <if test="param.classDate !=null and param.classDate !=''">
+            AND DATE_FORMAT(s.class_date_,'%Y-%m') = #{param.classDate}
+        </if>
+    </select>
 </mapper>

+ 80 - 0
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/CourseScheduleController.java

@@ -0,0 +1,80 @@
+package com.yonge.cooleshow.student.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.CourseScheduleReplied;
+import com.yonge.cooleshow.biz.dal.enums.CourseScheduleEnum;
+import com.yonge.cooleshow.biz.dal.service.CourseRepliedService;
+import com.yonge.cooleshow.biz.dal.service.CourseScheduleService;
+import com.yonge.cooleshow.biz.dal.support.PageUtil;
+import com.yonge.cooleshow.biz.dal.vo.MyCourseVo;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.page.PageInfo;
+import io.swagger.annotations.Api;
+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.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @Author: cy
+ * @Date: 2022/4/13
+ */
+@Api(tags = "学生课表")
+@RestController
+@RequestMapping("/courseSchedule")
+public class CourseScheduleController extends BaseController {
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private CourseScheduleService courseScheduleService;
+    @Autowired
+    private CourseRepliedService repliedService;
+
+    @ApiOperation("学生端-我的-我的课程-陪练课")
+    @PostMapping("/queryStudentPracticeCourse")
+    public HttpResponseResult<PageInfo<MyCourseVo>> queryStudentPracticeCourse(@RequestBody MyCourseSearch search) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+
+        search.setStudentId(user.getId());
+        IPage<MyCourseVo> pages = courseScheduleService.queryStudentPracticeCourse(PageUtil.getPage(search), search);
+        return succeed(PageUtil.pageInfo(pages));
+    }
+
+    @ApiOperation(value = "学生端-我的-我的课程-课程详情-评价陪练课", httpMethod = "POST", consumes = "application/json", produces = "application/json")
+    @PostMapping(value = "/replied", consumes = "application/json", produces = "application/json")
+    public HttpResponseResult<Object> replied(@Validated @RequestBody CourseScheduleReplied replied) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null  || sysUser.getId() == null) {
+            return failed("用户信息获取失败");
+        }
+
+        replied.setCourseGroupType(CourseScheduleEnum.PRACTICE.getCode());
+        repliedService.replied(replied,sysUser);
+        return succeed();
+    }
+
+    @ApiOperation(value = "学生端-我的-我的课程-课程详情-查询陪练课评价")
+    @PostMapping(value = "/selectReplied")
+    public HttpResponseResult<CourseScheduleReplied> selectReplied(@Validated @RequestBody CourseScheduleReplied replied) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+
+        replied.setStudentId(user.getId());
+        replied.setCourseGroupType(CourseScheduleEnum.PRACTICE.getCode());
+        return succeed(repliedService.selectReplied(replied));
+    }
+}
+

+ 17 - 0
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/CourseRepliedController.java

@@ -1,12 +1,17 @@
 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.CourseScheduleReplied;
 import com.yonge.cooleshow.biz.dal.enums.CourseScheduleEnum;
 import com.yonge.cooleshow.biz.dal.service.CourseRepliedService;
+import com.yonge.cooleshow.biz.dal.support.PageUtil;
+import com.yonge.cooleshow.biz.dal.vo.MyRepliedVo;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.page.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -45,4 +50,16 @@ public class CourseRepliedController extends BaseController {
         replied.setCourseGroupType(CourseScheduleEnum.PRACTICE.getCode());
         return succeed(repliedService.selectReplied(replied));
     }
+
+    @ApiOperation(value = "首页-我收到的评价")
+    @PostMapping(value = "/myReplied")
+    public HttpResponseResult<PageInfo<MyRepliedVo>> myReplied(@RequestBody MyCourseSearch search) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null  || sysUser.getId() == null) {
+            return failed("用户信息获取失败");
+        }
+        search.setTeacherId(sysUser.getId());
+        IPage<MyRepliedVo> pages = repliedService.myReplied(PageUtil.getPage(search), search);
+        return succeed(PageUtil.pageInfo(pages));
+    }
 }

+ 11 - 1
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/CourseScheduleController.java

@@ -1,6 +1,5 @@
 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;
@@ -95,5 +94,16 @@ public class CourseScheduleController extends BaseController {
         IPage<MyCourseVo> pages = courseScheduleService.queryTeacherPracticeCourse(PageUtil.getPage(search), search);
         return succeed(PageUtil.pageInfo(pages));
     }
+
+    @ApiOperation("老师端-课表-日历")
+    @PostMapping("/queryCourseSchedule")
+    public HttpResponseResult<List<String>> queryCourseSchedule(@RequestBody MyCourseSearch search) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        search.setTeacherId(user.getId());
+        return succeed(courseScheduleService.queryCourseSchedule(search));
+    }
 }