Ver Fonte

新增学生端查询琴房课列表

cy há 3 anos atrás
pai
commit
8934fb6370

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

@@ -228,4 +228,7 @@ public interface CourseScheduleDao extends BaseMapper<CourseSchedule> {
 
 
     //查询已完成课时
     //查询已完成课时
     List<CourseCompleteVo> selectComplete();
     List<CourseCompleteVo> selectComplete();
+
+    //查琴房课列表
+    List<PianoClassVo> queryPianoClass(IPage page,@Param("param") MyCourseSearch search);
 }
 }

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

@@ -69,6 +69,18 @@ public class CourseScheduleReplied implements Serializable {
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date updateTime;
     private Date updateTime;
 
 
+    @ApiModelProperty("学生评价时间 ")
+    @TableField(value = "student_replied_time_")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date studentRepliedTime;
+
+    @ApiModelProperty("老师评价时间 ")
+    @TableField(value = "teacher_replied_time_")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date teacherRepliedTime;
+
     public Long getId() {
     public Long getId() {
         return id;
         return id;
     }
     }
@@ -148,4 +160,20 @@ public class CourseScheduleReplied implements Serializable {
     public void setUpdateTime(Date updateTime) {
     public void setUpdateTime(Date updateTime) {
         this.updateTime = updateTime;
         this.updateTime = updateTime;
     }
     }
+
+    public Date getStudentRepliedTime() {
+        return studentRepliedTime;
+    }
+
+    public void setStudentRepliedTime(Date studentRepliedTime) {
+        this.studentRepliedTime = studentRepliedTime;
+    }
+
+    public Date getTeacherRepliedTime() {
+        return teacherRepliedTime;
+    }
+
+    public void setTeacherRepliedTime(Date teacherRepliedTime) {
+        this.teacherRepliedTime = teacherRepliedTime;
+    }
 }
 }

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

@@ -255,5 +255,7 @@ public interface CourseScheduleService extends IService<CourseSchedule> {
     void updateCourseStudent(Map<String, Object> param);
     void updateCourseStudent(Map<String, Object> param);
 
 
     PageInfo<CourseScheduleRecordVo> selectCourseList(Map<String, Object> param);
     PageInfo<CourseScheduleRecordVo> selectCourseList(Map<String, Object> param);
+
+    IPage<PianoClassVo> queryPianoClass(IPage<PianoClassVo> page, MyCourseSearch search);
 }
 }
 
 

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

@@ -2174,4 +2174,10 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         //重新新增学员
         //重新新增学员
         paymentDao.insertBatch(payments);
         paymentDao.insertBatch(payments);
     }
     }
+
+    @Override
+    public IPage<PianoClassVo> queryPianoClass(IPage<PianoClassVo> page, MyCourseSearch search) {
+        monthToDate(search);
+        return page.setRecords(baseMapper.queryPianoClass(page, search));
+    }
 }
 }

+ 163 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/PianoClassVo.java

@@ -0,0 +1,163 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.yonge.cooleshow.common.entity.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * @Author: cy
+ * @Date: 2022/6/27
+ */
+@ApiModel
+public class PianoClassVo extends BaseEntity {
+    @ApiModelProperty("课程id")
+    private Long courseId;
+
+    @ApiModelProperty("课程组id")
+    private Long courseGroupId;
+
+    @ApiModelProperty("课程组名称")
+    private String courseGroupName;
+
+    @ApiModelProperty("声部id")
+    private Long subjectId;
+
+    @ApiModelProperty("声部名称")
+    private String subjectName;
+
+    @ApiModelProperty("老师id")
+    private Long teacherId;
+
+    @ApiModelProperty("老师姓名")
+    private String teacherName;
+
+    @ApiModelProperty("老师真实姓名")
+    private String teacherRealName;
+
+    @ApiModelProperty("老师头像")
+    private String avatar;
+
+    @ApiModelProperty("课程状态 NOT_START未开始 ING进行中 COMPLETE已完成")
+    private String status;
+
+    @ApiModelProperty("开始时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date startTime;
+
+    @ApiModelProperty("结束时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date endTime;
+
+    @ApiModelProperty("学生考勤 0:异常 1:正常")
+    private Integer studentSign;
+
+    public Long getCourseId() {
+        return courseId;
+    }
+
+    public void setCourseId(Long courseId) {
+        this.courseId = courseId;
+    }
+
+    public Long getCourseGroupId() {
+        return courseGroupId;
+    }
+
+    public void setCourseGroupId(Long courseGroupId) {
+        this.courseGroupId = courseGroupId;
+    }
+
+    public String getCourseGroupName() {
+        return courseGroupName;
+    }
+
+    public void setCourseGroupName(String courseGroupName) {
+        this.courseGroupName = courseGroupName;
+    }
+
+    public Long getSubjectId() {
+        return subjectId;
+    }
+
+    public void setSubjectId(Long subjectId) {
+        this.subjectId = subjectId;
+    }
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
+    public Long getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Long teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+
+    public String getTeacherRealName() {
+        return teacherRealName;
+    }
+
+    public void setTeacherRealName(String teacherRealName) {
+        this.teacherRealName = teacherRealName;
+    }
+
+    public String getAvatar() {
+        return avatar;
+    }
+
+    public void setAvatar(String avatar) {
+        this.avatar = avatar;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    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 getStudentSign() {
+        return studentSign;
+    }
+
+    public void setStudentSign(Integer studentSign) {
+        this.studentSign = studentSign;
+    }
+}

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

@@ -838,4 +838,38 @@
             #{item}
             #{item}
         </foreach>
         </foreach>
     </update>
     </update>
+    <select id="queryPianoClass" resultType="com.yonge.cooleshow.biz.dal.vo.PianoClassVo">
+        SELECT DISTINCT
+            s.id_ AS courseId,
+            g.id_ AS courseGroupId,
+            CONCAT(g.name_,'-第',s.class_num_,'课') AS courseGroupName,
+            b.id_ AS subjectId,
+            b.name_ AS subjectName,
+            s.teacher_id_ AS teacherId,
+            u.username_ AS teacherName,
+            u.real_name_ AS teacherRealName,
+            u.avatar_ AS avatar,
+            s.status_ AS `status`,
+            s.start_time_ AS startTime,
+            s.end_time_ AS endTime,
+            CASE WHEN a.sign_in_time_ IS NOT NULL THEN 1 ELSE 0 END AS studentSign
+        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 course_schedule_student_payment p ON s.id_=p.course_id_
+        LEFT JOIN student_attendance a ON s.id_=a.course_group_id_
+        WHERE s.type_='PIANO_ROOM_CLASS'
+        AND p.user_id_=#{param.studentId}
+        <if test="param.status !=null and param.status !=''">
+            AND s.status_ = #{param.status}
+        </if>
+        <if test="param.subjectId !=null">
+            AND b.id_ = #{param.subjectId}
+        </if>
+        <if test="param.classMonth !=null">
+            <![CDATA[ AND s.class_date_ >= #{param.startDate} ]]>
+            <![CDATA[ AND s.class_date_ <= #{param.endDate} ]]>
+        </if>
+    </select>
 </mapper>
 </mapper>

+ 13 - 0
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/StudentCourseScheduleController.java

@@ -169,5 +169,18 @@ public class StudentCourseScheduleController extends BaseController {
     public HttpResponseResult<List<TeacherSubjectPrice>> getTeacherSubjectPrice(@NotNull Long teacherId) {
     public HttpResponseResult<List<TeacherSubjectPrice>> getTeacherSubjectPrice(@NotNull Long teacherId) {
         return succeed(courseScheduleService.teacherSubjectPrice(teacherId));
         return succeed(courseScheduleService.teacherSubjectPrice(teacherId));
     }
     }
+
+    @ApiOperation("学生端-我的课程-琴房课列表")
+    @PostMapping("/queryPianoClass")
+    public HttpResponseResult<PageInfo<PianoClassVo>> queryPianoClass(@RequestBody MyCourseSearch search) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+
+        search.setStudentId(user.getId());
+        IPage<PianoClassVo> pages = courseScheduleService.queryPianoClass(PageUtil.getPage(search), search);
+        return succeed(PageUtil.pageInfo(pages));
+    }
 }
 }