Prechádzať zdrojové kódy

Merge remote-tracking branch 'origin/master'

liweifan 2 rokov pred
rodič
commit
d9f4a747af
13 zmenil súbory, kde vykonal 371 pridanie a 3 odobranie
  1. 3 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleDao.java
  2. 28 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/CourseScheduleReplied.java
  3. 12 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/SysMusicCompareRecord.java
  4. 2 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseScheduleService.java
  5. 13 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseHomeworkServiceImpl.java
  6. 6 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java
  7. 30 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/SysMusicCompareRecordServiceImpl.java
  8. 47 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/CourseHomeworkDetailVo.java
  9. 174 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/PianoClassVo.java
  10. 4 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseHomeworkMapper.xml
  11. 37 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  12. 2 2
      cooleshow-user/user-biz/src/main/resources/config/mybatis/SysMusicCompareRecordMapper.xml
  13. 13 0
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/StudentCourseScheduleController.java

+ 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<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")
     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() {
         return id;
     }
@@ -148,4 +160,20 @@ public class CourseScheduleReplied implements Serializable {
     public void setUpdateTime(Date 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;
+    }
 }

+ 12 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/SysMusicCompareRecord.java

@@ -4,6 +4,7 @@ import java.math.BigDecimal;
 import java.time.DayOfWeek;
 import java.time.LocalDate;
 
+import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
 import com.yonge.cooleshow.biz.dal.enums.DeviceTypeEnum;
@@ -75,6 +76,17 @@ public class SysMusicCompareRecord extends BaseEntity {
 	
 	private String partIndex;
 
+	@ApiModelProperty("音乐过期 0:否 1:是")
+	private Integer expire;
+
+	public Integer getExpire() {
+		return expire;
+	}
+
+	public void setExpire(Integer expire) {
+		this.expire = expire;
+	}
+
 	public SysMusicCompareRecord() {
 	}
 

+ 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);
 
     PageInfo<CourseScheduleRecordVo> selectCourseList(Map<String, Object> param);
+
+    IPage<PianoClassVo> queryPianoClass(IPage<PianoClassVo> page, MyCourseSearch search);
 }
 

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

@@ -176,6 +176,19 @@ public class CourseHomeworkServiceImpl extends ServiceImpl<CourseHomeworkDao, Co
             throw  new BizException("未找到作业信息");
         }
 
+        // 课程组的群聊
+        ImGroup imGroup = imGroupService.getByCourseGroupId(courseHomeworkDetailVo.getCourseGroupId());
+        if (imGroup != null) {
+            courseHomeworkDetailVo.setImGroupId(imGroup.getId());
+        }
+
+        // 购买人数
+        List<CourseScheduleStudentPayment> studentPaymentList = courseScheduleStudentPaymentService.getByCourseId(
+                courseHomeworkDetailVo.getCourseScheduleId());
+        if (!CollectionUtils.isEmpty(studentPaymentList)) {
+            courseHomeworkDetailVo.setStudentNum(studentPaymentList.size());
+        }
+
         // 学生信息
         CourseHomeworkDetailVo studentInfoDetailVo = baseMapper
                 .selectPaymentStudentInfo(courseHomeworkDetailVo.getCourseScheduleId(),studentId);

+ 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);
     }
+
+    @Override
+    public IPage<PianoClassVo> queryPianoClass(IPage<PianoClassVo> page, MyCourseSearch search) {
+        monthToDate(search);
+        return page.setRecords(baseMapper.queryPianoClass(page, search));
+    }
 }

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

@@ -2,6 +2,8 @@ package com.yonge.cooleshow.biz.dal.service.impl;
 
 import java.math.BigDecimal;
 import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.Date;
@@ -12,6 +14,8 @@ import java.util.Objects;
 import java.util.Set;
 import java.util.stream.Collectors;
 
+import com.yonge.cooleshow.biz.dal.service.SysConfigService;
+import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -58,6 +62,9 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
     private SysUserFeignService sysUserFeignService;
 
 	@Autowired
+	private SysConfigService sysConfigService;
+
+	@Autowired
 	private MusicSheetDao musicSheetDao;
 
 	@Override
@@ -102,6 +109,19 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
 		jsonObject.put("heardLevel", userLastEvaluationData.getHeardLevel());
 		jsonObject.put("videoFilePath", userLastEvaluationData.getVideoFilePath());
 		jsonObject.put("partIndex", userLastEvaluationData.getPartIndex());
+		if(userLastEvaluationData.getCreateTime() == null) {
+			jsonObject.put("expire", 1);
+		} else {
+			LocalDateTime localDateTime = userLastEvaluationData.getCreateTime()
+																.toInstant()
+																.atZone(ZoneId.systemDefault())
+																.toLocalDateTime();
+			if (localDateTime.plusDays(Long.parseLong(getExpireTime())).compareTo(LocalDateTime.now()) <0) {
+				jsonObject.put("expire", 1);
+			} else {
+				jsonObject.put("expire", 0);
+			}
+		}
 
 		MusicSheet sysMusicScore = musicSheetDao.selectById(userLastEvaluationData.getMusicSheetId());
 		if(Objects.nonNull(sysMusicScore)){
@@ -136,6 +156,7 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
 		queryInfo.setFeatureType(FeatureType.CLOUD_STUDY_EVALUATION);
 		MapUtil.populateMap(params, queryInfo);
 
+		params.put("expireTime",getExpireTime());
 		List<SysMusicCompareRecord> dataList = null;
 		int count = this.findCount(params);
 		if (count > 0) {
@@ -192,4 +213,13 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
 		return pageInfo;
 	}
 
+
+	private String getExpireTime() {
+
+		String homeworkExpireTime = sysConfigService.findConfigValue(SysConfigConstant.HOMEWORK_EXPIRE_TIME);
+		if (org.springframework.util.StringUtils.isEmpty(homeworkExpireTime)) {
+			return "9999";
+		}
+		return homeworkExpireTime;
+	}
 }

+ 47 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/CourseHomeworkDetailVo.java

@@ -27,6 +27,20 @@ public class CourseHomeworkDetailVo {
     @ApiModelProperty("课程组id")
     private Long courseGroupId;
 
+    @ApiModelProperty("课程组名")
+    private String courseGroupName;
+
+    @ApiModelProperty("课堂编号-第几堂课")
+    private Integer classNum;
+
+
+    @ApiModelProperty("群聊id")
+    private String imGroupId;
+
+
+    @ApiModelProperty("学员人数")
+    private Integer studentNum;
+
     @ApiModelProperty("学生课程作业id")
     private Long studentHomeworkId;
 
@@ -107,6 +121,39 @@ public class CourseHomeworkDetailVo {
     @ApiModelProperty("作业过期 1:已过期 0:未过期")
     private Integer homeworkExpire;
 
+
+    public String getCourseGroupName() {
+        return courseGroupName;
+    }
+
+    public void setCourseGroupName(String courseGroupName) {
+        this.courseGroupName = courseGroupName;
+    }
+
+    public Integer getClassNum() {
+        return classNum;
+    }
+
+    public void setClassNum(Integer classNum) {
+        this.classNum = classNum;
+    }
+
+    public String getImGroupId() {
+        return imGroupId;
+    }
+
+    public void setImGroupId(String imGroupId) {
+        this.imGroupId = imGroupId;
+    }
+
+    public Integer getStudentNum() {
+        return studentNum;
+    }
+
+    public void setStudentNum(Integer studentNum) {
+        this.studentNum = studentNum;
+    }
+
     public Integer getHomeworkExpire() {
         return homeworkExpire;
     }

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

@@ -0,0 +1,174 @@
+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("群聊id")
+    private String imGroupId;
+
+    @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 String getImGroupId() {
+        return imGroupId;
+    }
+
+    public void setImGroupId(String imGroupId) {
+        this.imGroupId = imGroupId;
+    }
+
+    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;
+    }
+}

+ 4 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseHomeworkMapper.xml

@@ -188,6 +188,9 @@
         ,ch.create_time_ as decorateTime
         ,sch.attachments_ as studentAttachments
         ,sch.teacher_replied_ as teacherReplied
+        ,cg.id_ as courseGroupId
+        ,cg.name_ as courseGroupName
+        ,cs.class_num_ as classNum
         ,sch.submit_time_ as submitTime
         ,sch.id_ as studentHomeworkId
         ,sch.student_id_ as studentId
@@ -203,6 +206,7 @@
         ,if(sch.teacher_replied_ is null or sch.teacher_replied_ = '',0,1) as reviewHomework
         ,if(sch.id_ is not null and date_add(sch.submit_time_,INTERVAL #{homeworkExpireTime} DAY) &lt; now(),1,0) as homeworkExpire
         from course_schedule cs
+        left join course_group cg on cs.course_group_id_ = cg.id_
         left join course_homework ch on ch.course_schedule_id_ = cs.id_
         left join course_schedule_student_payment cssp on cs.id_ = cssp.course_id_
         left join student_course_homework sch  on sch.course_schedule_id_ = cssp.course_id_ and sch.student_id_ = cssp.user_id_

+ 37 - 1
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -699,7 +699,7 @@
         left join course_schedule_replied csr on cs.id_ = csr.course_schedule_id_
         where cs.teacher_id_ = #{userId} and cs.status_ = 'COMPLETE' and cs.type_ = 'PRACTICE'
         and csr.student_replied_ is not null
-        and YEARWEEK(date_format(csr.create_time_,'%Y-%m-%d'),7) = YEARWEEK(now(),7)
+        and YEARWEEK(date_format(csr.student_replied_time_,'%Y-%m-%d'),7) = YEARWEEK(now(),7)
     </select>
     <select id="selectStartTime" resultType="java.lang.String" parameterType="java.lang.String">
         SELECT s.start_time_
@@ -838,4 +838,40 @@
             #{item}
         </foreach>
     </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`,
+            i.id_ AS imGroupId,
+            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_
+        LEFT JOIN im_group i ON s.course_group_id_=i.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>

+ 2 - 2
cooleshow-user/user-biz/src/main/resources/config/mybatis/SysMusicCompareRecordMapper.xml

@@ -147,9 +147,9 @@
 		       smcr.score_, smcr.intonation_, smcr.cadence_,
 		       smcr.integrity_, smcr.record_file_path_, smcr.video_file_path_, smcr.client_id_, smcr.device_type_, smcr.play_time_,
 		       smcr.monday_, smcr.create_time_,
-			sms.name_ sys_music_score_name_
+			sms.music_sheet_name_ sys_music_score_name_,if(smcr.create_time_ is not null and date_add(smcr.create_time_,INTERVAL #{expireTime} DAY) &lt; now(),1,0) as expire
 		FROM sys_music_compare_record smcr
-		LEFT JOIN sys_music_score sms on smcr.music_sheet_id_ = sms.id_
+		LEFT JOIN music_sheet sms on smcr.music_sheet_id_ = sms.id_
 		<include refid="queryCondition"/>
 		ORDER BY id_ DESC
 		<include refid="global.limit"/>

+ 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) {
         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));
+    }
 }