Преглед изворни кода

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

zouxuan пре 5 година
родитељ
комит
ce75188d07
33 измењених фајлова са 1752 додато и 15 уклоњено
  1. 14 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ExtracurricularExercisesDao.java
  2. 15 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ExtracurricularExercisesMessageDao.java
  3. 54 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ExtracurricularExercisesReplyDao.java
  4. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseScheduleDto.java
  5. 60 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ExtraExerciseStudentsDto.java
  6. 147 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ExtracurricularExercises.java
  7. 92 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ExtracurricularExercisesMessage.java
  8. 125 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ExtracurricularExercisesReply.java
  9. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentCourseHomework.java
  10. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentCourseHomeworkReply.java
  11. 42 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/ExtraExercilseQueryInfo.java
  12. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentCourseHomeworkReplyQueryInfo.java
  13. 28 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ExtracurricularExercisesMessageService.java
  14. 50 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ExtracurricularExercisesReplyService.java
  15. 28 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ExtracurricularExercisesService.java
  16. 74 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesMessageServiceImpl.java
  17. 107 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesReplyServiceImpl.java
  18. 89 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesServiceImpl.java
  19. 12 12
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java
  20. 2 1
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  21. 119 0
      mec-biz/src/main/resources/config/mybatis/ExtracurricularExercisesMapper.xml
  22. 107 0
      mec-biz/src/main/resources/config/mybatis/ExtracurricularExercisesMessageMapper.xml
  23. 165 0
      mec-biz/src/main/resources/config/mybatis/ExtracurricularExercisesReplyMapper.xml
  24. 1 1
      mec-biz/src/main/resources/config/mybatis/PracticeGroupMapper.xml
  25. 44 0
      mec-student/src/main/java/com/ym/mec/student/controller/ExtracurricularExercisesMessageController.java
  26. 62 0
      mec-student/src/main/java/com/ym/mec/student/controller/ExtracurricularExercisesReplyController.java
  27. 14 1
      mec-student/src/main/java/com/ym/mec/student/controller/PracticeGroupController.java
  28. 35 0
      mec-student/src/main/java/com/ym/mec/student/controller/StudentCourseHomeworkController.java
  29. 35 0
      mec-student/src/main/java/com/ym/mec/student/controller/StudentCourseHomeworkReplyController.java
  30. 35 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/CourseHomeworkController.java
  31. 77 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/ExtracurricularExercisesController.java
  32. 44 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/ExtracurricularExercisesMessageController.java
  33. 35 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherCourseHomeworkReplyController.java

+ 14 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ExtracurricularExercisesDao.java

@@ -0,0 +1,14 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.biz.dal.entity.ExtracurricularExercises;
+import com.ym.mec.common.dal.BaseDAO;
+
+import java.util.List;
+import java.util.Map;
+
+public interface ExtracurricularExercisesDao extends BaseDAO<Long, ExtracurricularExercises> {
+
+    int countExtraExercises(Map<String, Object> params);
+    List<ExtracurricularExercises> findExtraExercises(Map<String, Object> params);
+
+}

+ 15 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ExtracurricularExercisesMessageDao.java

@@ -0,0 +1,15 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.biz.dal.dto.StudentCourseHomeworkCommentDto;
+import com.ym.mec.biz.dal.entity.ExtracurricularExercisesMessage;
+import com.ym.mec.common.dal.BaseDAO;
+
+import java.util.List;
+import java.util.Map;
+
+public interface ExtracurricularExercisesMessageDao extends BaseDAO<Long, ExtracurricularExercisesMessage> {
+
+    int countStudentExtraComments(Map<String, Object> params);
+    List<StudentCourseHomeworkCommentDto> findStudentExtraComments(Map<String, Object> params);
+
+}

+ 54 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ExtracurricularExercisesReplyDao.java

@@ -0,0 +1,54 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.biz.dal.dto.ExtraExerciseStudentsDto;
+import com.ym.mec.biz.dal.entity.ExtracurricularExercisesReply;
+import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+public interface ExtracurricularExercisesReplyDao extends BaseDAO<Long, ExtracurricularExercisesReply> {
+
+    /**
+     * @describe 批量插入
+     * @author Joburgess
+     * @date 2020/3/26
+     * @param replies:
+     * @return int
+     */
+    int batchInsert(@Param("replies")List<ExtracurricularExercisesReply> replies);
+
+    /**
+     * @describe 获取课外训练的学生列表
+     * @author Joburgess
+     * @date 2020/3/26
+     * @param extraExerciseId: 课外训练编号
+     * @param studentName: 学生名称
+     * @return java.util.List<com.ym.mec.biz.dal.dto.ExtraExerciseStudentsDto>
+     */
+    List<ExtraExerciseStudentsDto> findExtraExerciseStudents(@Param("extraExerciseId") Long extraExerciseId,
+                                                             @Param("studentName") String studentName);
+
+    /**
+     * @describe 获取学生课外训练详情
+     * @author Joburgess
+     * @date 2020/3/26
+     * @param extraExerciseReplyId:
+     * @return com.ym.mec.biz.dal.dto.ExtraExerciseStudentsDto
+     */
+    ExtraExerciseStudentsDto findExtraExerciseReply(@Param("extraExerciseReplyId") Long extraExerciseReplyId);
+
+    int countStudentExtraExercises(Map<String, Object> params);
+    List<ExtraExerciseStudentsDto> findStudentExtraExercises(Map<String, Object> params);
+
+    /**
+     * @describe 统计已经提交的学生数量
+     * @author Joburgess
+     * @date 2020/3/26
+     * @param extraExerciseId:
+     * @return int
+     */
+    int countIsSubmitStudents(@Param("extraExerciseId") Long extraExerciseId);
+	
+}

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseScheduleDto.java

@@ -67,6 +67,16 @@ public class CourseScheduleDto extends CourseSchedule {
     @ApiModelProperty(value = "学生评论id")
     private Long StudentReviewId;
 
+    private int isNew;
+
+    public int getIsNew() {
+        return isNew;
+    }
+
+    public void setIsNew(int isNew) {
+        this.isNew = isNew;
+    }
+
     public List<StudentNameAndPhoneDto> getStudents() {
         return students;
     }

+ 60 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ExtraExerciseStudentsDto.java

@@ -0,0 +1,60 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.ExtracurricularExercisesReply;
+
+/**
+ * @Author Joburgess
+ * @Date 2020/3/26
+ */
+public class ExtraExerciseStudentsDto extends ExtracurricularExercisesReply {
+
+    private String studentName;
+
+    private Integer teacherId;
+
+    private String teacherName;
+
+    private String title;
+
+    private String content;
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+
+    public String getStudentName() {
+        return studentName;
+    }
+
+    public void setStudentName(String studentName) {
+        this.studentName = studentName;
+    }
+
+    public Integer getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Integer teacherId) {
+        this.teacherId = teacherId;
+    }
+}

+ 147 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ExtracurricularExercises.java

@@ -0,0 +1,147 @@
+package com.ym.mec.biz.dal.entity;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+/**
+ * 对应数据库表(extracurricular_exercises):
+ */
+public class ExtracurricularExercises {
+
+	/**  */
+	private Long id;
+	
+	/** 老师编号 */
+	private Integer teacherId;
+	
+	/** 学生列表 */
+	private String studentIdList;
+	
+	/** 批次号 */
+	private String batchNo;
+	
+	/** 标题 */
+	private String title;
+	
+	/** 附件地址(多个用逗号分隔) */
+	private String attachments;
+	
+	/** 作业内容 */
+	private String content;
+	
+	/** 截止日期 */
+	private java.util.Date expireDate;
+	
+	/** 完成人数 */
+	private Integer completedNum;
+	
+	/** 预计人数 */
+	private Integer expectNum;
+	
+	/**  */
+	private java.util.Date createTime;
+	
+	/**  */
+	private java.util.Date updateTime;
+	
+	public void setId(Long id){
+		this.id = id;
+	}
+	
+	public Long getId(){
+		return this.id;
+	}
+			
+	public void setTeacherId(Integer teacherId){
+		this.teacherId = teacherId;
+	}
+	
+	public Integer getTeacherId(){
+		return this.teacherId;
+	}
+			
+	public void setStudentIdList(String studentIdList){
+		this.studentIdList = studentIdList;
+	}
+	
+	public String getStudentIdList(){
+		return this.studentIdList;
+	}
+			
+	public void setBatchNo(String batchNo){
+		this.batchNo = batchNo;
+	}
+	
+	public String getBatchNo(){
+		return this.batchNo;
+	}
+			
+	public void setTitle(String title){
+		this.title = title;
+	}
+	
+	public String getTitle(){
+		return this.title;
+	}
+			
+	public void setAttachments(String attachments){
+		this.attachments = attachments;
+	}
+	
+	public String getAttachments(){
+		return this.attachments;
+	}
+			
+	public void setContent(String content){
+		this.content = content;
+	}
+	
+	public String getContent(){
+		return this.content;
+	}
+			
+	public void setExpireDate(java.util.Date expireDate){
+		this.expireDate = expireDate;
+	}
+	
+	public java.util.Date getExpireDate(){
+		return this.expireDate;
+	}
+			
+	public void setCompletedNum(Integer completedNum){
+		this.completedNum = completedNum;
+	}
+	
+	public Integer getCompletedNum(){
+		return this.completedNum;
+	}
+			
+	public void setExpectNum(Integer expectNum){
+		this.expectNum = expectNum;
+	}
+	
+	public Integer getExpectNum(){
+		return this.expectNum;
+	}
+			
+	public void setCreateTime(java.util.Date createTime){
+		this.createTime = createTime;
+	}
+	
+	public java.util.Date getCreateTime(){
+		return this.createTime;
+	}
+			
+	public void setUpdateTime(java.util.Date updateTime){
+		this.updateTime = updateTime;
+	}
+	
+	public java.util.Date getUpdateTime(){
+		return this.updateTime;
+	}
+			
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

+ 92 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ExtracurricularExercisesMessage.java

@@ -0,0 +1,92 @@
+package com.ym.mec.biz.dal.entity;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+/**
+ * 对应数据库表(extracurricular_exercises_message):
+ */
+public class ExtracurricularExercisesMessage {
+
+	/**  */
+	private Long id;
+	
+	/**  */
+	private Long extracurricularExercisesReplyId;
+	
+	/** 留言人编号 */
+	private Integer userId;
+	
+	/** 角色(学生、老师) */
+	private String role;
+	
+	/** 留言内容 */
+	private String content;
+	
+	/**  */
+	private java.util.Date createTime;
+	
+	/** 父级编号 */
+	private Long parentId;
+	
+	public void setId(Long id){
+		this.id = id;
+	}
+	
+	public Long getId(){
+		return this.id;
+	}
+			
+	public void setExtracurricularExercisesReplyId(Long extracurricularExercisesReplyId){
+		this.extracurricularExercisesReplyId = extracurricularExercisesReplyId;
+	}
+	
+	public Long getExtracurricularExercisesReplyId(){
+		return this.extracurricularExercisesReplyId;
+	}
+			
+	public void setUserId(Integer userId){
+		this.userId = userId;
+	}
+	
+	public Integer getUserId(){
+		return this.userId;
+	}
+			
+	public void setRole(String role){
+		this.role = role;
+	}
+	
+	public String getRole(){
+		return this.role;
+	}
+			
+	public void setContent(String content){
+		this.content = content;
+	}
+	
+	public String getContent(){
+		return this.content;
+	}
+			
+	public void setCreateTime(java.util.Date createTime){
+		this.createTime = createTime;
+	}
+	
+	public java.util.Date getCreateTime(){
+		return this.createTime;
+	}
+			
+	public void setParentId(Long parentId){
+		this.parentId = parentId;
+	}
+	
+	public Long getParentId(){
+		return this.parentId;
+	}
+			
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

+ 125 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ExtracurricularExercisesReply.java

@@ -0,0 +1,125 @@
+package com.ym.mec.biz.dal.entity;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+/**
+ * 对应数据库表(extracurricular_exercises_reply):
+ */
+public class ExtracurricularExercisesReply {
+
+	/**  */
+	private Long id;
+	
+	/**  */
+	private Long extracurricularExercisesId;
+	
+	/**  */
+	private Integer userId;
+	
+	/** 作品附件 */
+	private String attachments;
+	
+	/**  */
+	private java.util.Date createTime;
+	
+	/**  */
+	private java.util.Date updateTime;
+	
+	/** 备注 */
+	private String remark;
+	
+	/** 提交状态 */
+	private Integer status;
+	
+	/** 是否回复 */
+	private Integer isReplied;
+	
+	/** 是否已查看 */
+	private Integer isView;
+	
+	public void setId(Long id){
+		this.id = id;
+	}
+	
+	public Long getId(){
+		return this.id;
+	}
+			
+	public void setExtracurricularExercisesId(Long extracurricularExercisesId){
+		this.extracurricularExercisesId = extracurricularExercisesId;
+	}
+	
+	public Long getExtracurricularExercisesId(){
+		return this.extracurricularExercisesId;
+	}
+			
+	public void setUserId(Integer userId){
+		this.userId = userId;
+	}
+	
+	public Integer getUserId(){
+		return this.userId;
+	}
+			
+	public void setAttachments(String attachments){
+		this.attachments = attachments;
+	}
+	
+	public String getAttachments(){
+		return this.attachments;
+	}
+			
+	public void setCreateTime(java.util.Date createTime){
+		this.createTime = createTime;
+	}
+	
+	public java.util.Date getCreateTime(){
+		return this.createTime;
+	}
+			
+	public void setUpdateTime(java.util.Date updateTime){
+		this.updateTime = updateTime;
+	}
+	
+	public java.util.Date getUpdateTime(){
+		return this.updateTime;
+	}
+			
+	public void setRemark(String remark){
+		this.remark = remark;
+	}
+	
+	public String getRemark(){
+		return this.remark;
+	}
+			
+	public void setStatus(Integer status){
+		this.status = status;
+	}
+	
+	public Integer getStatus(){
+		return this.status;
+	}
+			
+	public void setIsReplied(Integer isReplied){
+		this.isReplied = isReplied;
+	}
+	
+	public Integer getIsReplied(){
+		return this.isReplied;
+	}
+			
+	public void setIsView(Integer isView){
+		this.isView = isView;
+	}
+	
+	public Integer getIsView(){
+		return this.isView;
+	}
+			
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentCourseHomework.java

@@ -45,6 +45,16 @@ public class StudentCourseHomework {
 	/**  */
 	private java.util.Date updateTime;
 
+	private boolean isExtra;
+
+	public boolean isExtra() {
+		return isExtra;
+	}
+
+	public void setIsExtra(boolean isExtra) {
+		isExtra = isExtra;
+	}
+
 	public String getAvatar() {
 		return avatar;
 	}

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentCourseHomeworkReply.java

@@ -30,6 +30,16 @@ public class StudentCourseHomeworkReply {
 	@ApiModelProperty(value = "父级编号",required = true)
 	private Long parentId;
 
+	private boolean isExtra;
+
+	public boolean isExtra() {
+		return isExtra;
+	}
+
+	public void setIsExtra(boolean isExtra) {
+		isExtra = isExtra;
+	}
+
 	public void setId(Long id){
 		this.id = id;
 	}

+ 42 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/ExtraExercilseQueryInfo.java

@@ -0,0 +1,42 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.common.page.QueryInfo;
+
+import java.util.Date;
+
+/**
+ * @Author Joburgess
+ * @Date 2020/3/26
+ */
+public class ExtraExercilseQueryInfo extends QueryInfo {
+
+    private Integer teacherId;
+
+    private Integer studentId;
+
+    private Date createTime;
+
+    public Integer getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Integer teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    public Integer getStudentId() {
+        return studentId;
+    }
+
+    public void setStudentId(Integer studentId) {
+        this.studentId = studentId;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+}

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentCourseHomeworkReplyQueryInfo.java

@@ -17,6 +17,16 @@ public class StudentCourseHomeworkReplyQueryInfo extends QueryInfo {
 
     private Integer userId;
 
+    private boolean isExtra;
+
+    public boolean isExtra() {
+        return isExtra;
+    }
+
+    public void setIsExtra(boolean isExtra) {
+        isExtra = isExtra;
+    }
+
     public Integer getUserId() {
         return userId;
     }

+ 28 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ExtracurricularExercisesMessageService.java

@@ -0,0 +1,28 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.entity.ExtracurricularExercisesMessage;
+import com.ym.mec.biz.dal.page.StudentCourseHomeworkReplyQueryInfo;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.service.BaseService;
+
+public interface ExtracurricularExercisesMessageService extends BaseService<Long, ExtracurricularExercisesMessage> {
+
+    /**
+     * @describe 添加学生作业评论
+     * @author Joburgess
+     * @date 2020/3/26
+     * @param extracurricularExercisesMessage:
+     * @return void
+     */
+    void addStudentExtraExerciseComment(ExtracurricularExercisesMessage extracurricularExercisesMessage);
+
+    /**
+     * @describe 获取学生课外作业评论列表
+     * @author Joburgess
+     * @date 2020/3/26
+     * @param queryInfo:
+     * @return com.ym.mec.common.page.PageInfo
+     */
+    PageInfo findStudentExtraExerciseComments(StudentCourseHomeworkReplyQueryInfo queryInfo);
+
+}

+ 50 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ExtracurricularExercisesReplyService.java

@@ -0,0 +1,50 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.dto.CourseHomeworkStudentDetailDto;
+import com.ym.mec.biz.dal.dto.ExtraExerciseStudentsDto;
+import com.ym.mec.biz.dal.entity.ExtracurricularExercisesReply;
+import com.ym.mec.biz.dal.page.ExtraExercilseQueryInfo;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.service.BaseService;
+
+import java.util.List;
+
+public interface ExtracurricularExercisesReplyService extends BaseService<Long, ExtracurricularExercisesReply> {
+
+    /**
+     * @describe
+     * @author Joburgess
+     * @date 2020/3/26
+     * @param extraExerciseId: 课外训练编号
+     * @return java.util.List<com.ym.mec.biz.dal.dto.ExtraExerciseStudentsDto>
+     */
+    List<ExtraExerciseStudentsDto> findExtraExerciseStudents(Long extraExerciseId,String studentName);
+
+    /**
+     * @describe 获取学生的课外训练列表
+     * @author Joburgess
+     * @date 2020/3/26
+     * @param queryInfo:
+     * @return java.util.List<com.ym.mec.biz.dal.dto.ExtraExerciseStudentsDto>
+     */
+    PageInfo findStudentExtraExercises(ExtraExercilseQueryInfo queryInfo);
+
+    /**
+     * @describe 获取学生课外训练详情
+     * @author Joburgess
+     * @date 2020/3/26
+     * @param studentExerciseId: 学生课外训练编号
+     * @return com.ym.mec.biz.dal.dto.ExtraExerciseStudentsDto
+     */
+    CourseHomeworkStudentDetailDto findStudentExtraExerciseDetail(Long studentExerciseId);
+
+    /**
+     * @describe 学生提交课外训练
+     * @author Joburgess
+     * @date 2020/3/26
+     * @param extracurricularExercisesReply:
+     * @return void
+     */
+    void submitExtraExercise(ExtracurricularExercisesReply extracurricularExercisesReply);
+
+}

+ 28 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ExtracurricularExercisesService.java

@@ -0,0 +1,28 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.entity.ExtracurricularExercises;
+import com.ym.mec.biz.dal.page.ExtraExercilseQueryInfo;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.service.BaseService;
+
+public interface ExtracurricularExercisesService extends BaseService<Long, ExtracurricularExercises> {
+
+    /**
+     * @describe 创建课外训练
+     * @author Joburgess
+     * @date 2020/3/26
+     * @param exercises:
+     * @return void
+     */
+    void createExtraExercises(ExtracurricularExercises exercises);
+
+    /**
+     * @describe 获取教师创建的课外训练列表
+     * @author Joburgess
+     * @date 2020/3/26
+     * @param queryInfo:
+     * @return com.ym.mec.common.page.PageInfo
+     */
+    PageInfo findExtraExercilses(ExtraExercilseQueryInfo queryInfo);
+
+}

+ 74 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesMessageServiceImpl.java

@@ -0,0 +1,74 @@
+package com.ym.mec.biz.service.impl;
+
+import com.ym.mec.biz.dal.dao.ExtracurricularExercisesMessageDao;
+import com.ym.mec.biz.dal.dao.ExtracurricularExercisesReplyDao;
+import com.ym.mec.biz.dal.dto.StudentCourseHomeworkCommentDto;
+import com.ym.mec.biz.dal.entity.ExtracurricularExercisesMessage;
+import com.ym.mec.biz.dal.entity.ExtracurricularExercisesReply;
+import com.ym.mec.biz.dal.page.StudentCourseHomeworkReplyQueryInfo;
+import com.ym.mec.biz.service.ExtracurricularExercisesMessageService;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+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.*;
+
+@Service
+public class ExtracurricularExercisesMessageServiceImpl extends BaseServiceImpl<Long, ExtracurricularExercisesMessage> implements ExtracurricularExercisesMessageService {
+	
+	@Autowired
+	private ExtracurricularExercisesMessageDao extracurricularExercisesMessageDao;
+	@Autowired
+	private ExtracurricularExercisesReplyDao extracurricularExercisesReplyDao;
+
+	@Override
+	public BaseDAO<Long, ExtracurricularExercisesMessage> getDAO() {
+		return extracurricularExercisesMessageDao;
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void addStudentExtraExerciseComment(ExtracurricularExercisesMessage extracurricularExercisesMessage) {
+		if(Objects.isNull(extracurricularExercisesMessage.getExtracurricularExercisesReplyId())){
+			throw new BizException("请指定学生课外训练");
+		}
+		if(StringUtils.isBlank(extracurricularExercisesMessage.getContent())){
+			throw new BizException("请填写回复内容");
+		}
+		extracurricularExercisesMessageDao.insert(extracurricularExercisesMessage);
+		ExtracurricularExercisesReply extracurricularExercisesReply = extracurricularExercisesReplyDao.get(extracurricularExercisesMessage.getExtracurricularExercisesReplyId());
+		if(Objects.isNull(extracurricularExercisesReply)){
+			throw new BizException("课外训练不存在");
+		}
+		if("TEACHER".equals(extracurricularExercisesMessage.getRole())&&Objects.nonNull(extracurricularExercisesReply.getAttachments())){
+			extracurricularExercisesReply.setIsReplied(1);
+			extracurricularExercisesReplyDao.update(extracurricularExercisesReply);
+		}
+	}
+
+	@Override
+	public PageInfo findStudentExtraExerciseComments(StudentCourseHomeworkReplyQueryInfo queryInfo) {
+		PageInfo<StudentCourseHomeworkCommentDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+		Map<String, Object> params = new HashMap<>();
+		MapUtil.populateMap(params, queryInfo);
+
+		List<StudentCourseHomeworkCommentDto> dataList = null;
+		int count = extracurricularExercisesMessageDao.countStudentExtraComments(params);
+		if (count > 0) {
+			pageInfo.setTotal(count);
+			params.put("offset", pageInfo.getOffset());
+			dataList = extracurricularExercisesMessageDao.findStudentExtraComments(params);
+		}
+		if (count == 0) {
+			dataList = new ArrayList<>();
+		}
+		pageInfo.setRows(dataList);
+		return pageInfo;
+	}
+}

+ 107 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesReplyServiceImpl.java

@@ -0,0 +1,107 @@
+package com.ym.mec.biz.service.impl;
+
+import com.ym.mec.biz.dal.dao.ExtracurricularExercisesDao;
+import com.ym.mec.biz.dal.dao.ExtracurricularExercisesReplyDao;
+import com.ym.mec.biz.dal.dto.CourseHomeworkStudentDetailDto;
+import com.ym.mec.biz.dal.dto.ExtraExerciseStudentsDto;
+import com.ym.mec.biz.dal.entity.ExtracurricularExercises;
+import com.ym.mec.biz.dal.entity.ExtracurricularExercisesReply;
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import com.ym.mec.biz.dal.page.ExtraExercilseQueryInfo;
+import com.ym.mec.biz.service.ExtracurricularExercisesReplyService;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+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.*;
+
+@Service
+public class ExtracurricularExercisesReplyServiceImpl extends BaseServiceImpl<Long, ExtracurricularExercisesReply> implements ExtracurricularExercisesReplyService {
+	
+	@Autowired
+	private ExtracurricularExercisesReplyDao extracurricularExercisesReplyDao;
+	@Autowired
+	private ExtracurricularExercisesDao extracurricularExercisesDao;
+
+	@Override
+	public BaseDAO<Long, ExtracurricularExercisesReply> getDAO() {
+		return extracurricularExercisesReplyDao;
+	}
+
+	@Override
+	public List<ExtraExerciseStudentsDto> findExtraExerciseStudents(Long extraExerciseId,String studentName) {
+		if(Objects.isNull(extraExerciseId)){
+			throw new BizException("请选择课外训练");
+		}
+		return extracurricularExercisesReplyDao.findExtraExerciseStudents(extraExerciseId,studentName);
+	}
+
+	@Override
+	public CourseHomeworkStudentDetailDto findStudentExtraExerciseDetail(Long studentExerciseId) {
+		ExtraExerciseStudentsDto extraExerciseReply = extracurricularExercisesReplyDao.findExtraExerciseReply(studentExerciseId);
+		CourseHomeworkStudentDetailDto detail=new CourseHomeworkStudentDetailDto();
+		detail.setCourseHomeworkId(extraExerciseReply.getId());
+		detail.setClassGroupName(extraExerciseReply.getTitle() + "•" + extraExerciseReply.getStudentName());
+		detail.setContent(extraExerciseReply.getContent());
+		detail.setAttachments(extraExerciseReply.getAttachments());
+		detail.setStatus(extraExerciseReply.getStatus()==0?YesOrNoEnum.NO:YesOrNoEnum.YES);
+		detail.setIsReplied(extraExerciseReply.getIsReplied()==0?YesOrNoEnum.NO:YesOrNoEnum.YES);
+		detail.setTeacherId(extraExerciseReply.getTeacherId());
+		detail.setTeacherName(extraExerciseReply.getTeacherName());
+		detail.setStudentId(extraExerciseReply.getUserId());
+		detail.setStudentName(extraExerciseReply.getStudentName());
+		return detail;
+	}
+
+	@Override
+	public PageInfo findStudentExtraExercises(ExtraExercilseQueryInfo queryInfo) {
+		PageInfo<ExtraExerciseStudentsDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+		Map<String, Object> params = new HashMap<>();
+		MapUtil.populateMap(params, queryInfo);
+
+		List<ExtraExerciseStudentsDto> dataList = null;
+		int count = extracurricularExercisesReplyDao.countStudentExtraExercises(params);
+		if (count > 0) {
+			pageInfo.setTotal(count);
+			params.put("offset", pageInfo.getOffset());
+			dataList = extracurricularExercisesReplyDao.findStudentExtraExercises(params);
+		}
+		if (count == 0) {
+			dataList = new ArrayList<>();
+		}
+		pageInfo.setRows(dataList);
+		return pageInfo;
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void submitExtraExercise(ExtracurricularExercisesReply extracurricularExercisesReply) {
+		if(Objects.nonNull(extracurricularExercisesReply.getId())){
+			throw new BizException("请选择课外训练");
+		}
+		if(StringUtils.isBlank(extracurricularExercisesReply.getAttachments())){
+			throw new BizException("请先提交作业文件");
+		}
+		ExtracurricularExercisesReply existExtra = extracurricularExercisesReplyDao.get(extracurricularExercisesReply.getId());
+		if(Objects.isNull(existExtra)){
+			throw new BizException("作业不存在");
+		}
+		ExtracurricularExercises extracurricularExercises = extracurricularExercisesDao.get(existExtra.getExtracurricularExercisesId());
+		if(Objects.isNull(extracurricularExercises)){
+			throw new BizException("作业不存在");
+		}
+		existExtra.setAttachments(extracurricularExercisesReply.getAttachments());
+		existExtra.setStatus(1);
+		extracurricularExercisesReplyDao.update(existExtra);
+
+		int submitStudentNum=extracurricularExercisesReplyDao.countIsSubmitStudents(existExtra.getExtracurricularExercisesId());
+		extracurricularExercises.setCompletedNum(submitStudentNum);
+		extracurricularExercisesDao.update(extracurricularExercises);
+	}
+}

+ 89 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesServiceImpl.java

@@ -0,0 +1,89 @@
+package com.ym.mec.biz.service.impl;
+
+import com.ym.mec.biz.dal.dao.ExtracurricularExercisesDao;
+import com.ym.mec.biz.dal.dao.ExtracurricularExercisesReplyDao;
+import com.ym.mec.biz.dal.entity.ExtracurricularExercises;
+import com.ym.mec.biz.dal.entity.ExtracurricularExercisesReply;
+import com.ym.mec.biz.dal.page.ExtraExercilseQueryInfo;
+import com.ym.mec.biz.service.ExtracurricularExercisesService;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+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.Isolation;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Service
+public class ExtracurricularExercisesServiceImpl extends BaseServiceImpl<Long, ExtracurricularExercises> implements ExtracurricularExercisesService {
+	
+	@Autowired
+	private ExtracurricularExercisesDao extracurricularExercisesDao;
+	@Autowired
+	private ExtracurricularExercisesReplyDao extracurricularExercisesReplyDao;
+
+	@Override
+	public BaseDAO<Long, ExtracurricularExercises> getDAO() {
+		return extracurricularExercisesDao;
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
+	public void createExtraExercises(ExtracurricularExercises exercises) {
+		if(StringUtils.isBlank(exercises.getTitle())){
+			throw new BizException("请填写标题");
+		}
+		if(StringUtils.isBlank(exercises.getContent())){
+			throw new BizException("请填写内容");
+		}
+		if(Objects.isNull(exercises.getExpireDate())){
+			throw new BizException("请指定截至日期");
+		}
+		if(StringUtils.isBlank(exercises.getStudentIdList())){
+			throw new BizException("请指定学生");
+		}
+		List<Integer> studentIds = Arrays.asList(exercises.getStudentIdList().split(",")).stream().mapToInt(Integer::valueOf).boxed().collect(Collectors.toList());
+		exercises.setBatchNo(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
+		exercises.setExpectNum(studentIds.size());
+		extracurricularExercisesDao.insert(exercises);
+		List<ExtracurricularExercisesReply> studentExtraExerises=new ArrayList<>();
+		for (Integer studentId : studentIds) {
+			ExtracurricularExercisesReply studentExtraExercise=new ExtracurricularExercisesReply();
+			studentExtraExercise.setExtracurricularExercisesId(exercises.getId());
+			studentExtraExercise.setUserId(studentId);
+			studentExtraExercise.setStatus(0);
+			studentExtraExercise.setIsReplied(0);
+			studentExtraExercise.setIsView(0);
+			studentExtraExerises.add(studentExtraExercise);
+		}
+		extracurricularExercisesReplyDao.batchInsert(studentExtraExerises);
+	}
+
+	@Override
+	public PageInfo findExtraExercilses(ExtraExercilseQueryInfo queryInfo) {
+		PageInfo<ExtracurricularExercises> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+		Map<String, Object> params = new HashMap<>();
+		MapUtil.populateMap(params, queryInfo);
+
+		List<ExtracurricularExercises> dataList = null;
+		int count = extracurricularExercisesDao.countExtraExercises(params);
+		if (count > 0) {
+			pageInfo.setTotal(count);
+			params.put("offset", pageInfo.getOffset());
+			dataList = extracurricularExercisesDao.findExtraExercises(params);
+		}
+		if (count == 0) {
+			dataList = new ArrayList<>();
+		}
+		pageInfo.setRows(dataList);
+		return pageInfo;
+	}
+}

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

@@ -140,6 +140,8 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
 
     private static List<String> applyDayTimes = new ArrayList<>();
 
+    private static final Set<Integer> ENABLE_APPLY_ORGANIDS = new HashSet<>(Arrays.asList(new Integer[]{1, 43, 47}));
+
     static {
         applyStartDay = DateUtil.stringToDate("2020-03-25 00:00:00");
         activityStartDate = DateUtil.stringToDate("2020-03-25 00:00:00");
@@ -210,22 +212,21 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
 
     @Override
     public List<CourseScheduleDto> findUserPracticeCourses(Integer userId) {
-        return courseScheduleDao.findStudentPracticeCourses(userId);
+        List<CourseScheduleDto> studentPracticeCourses = courseScheduleDao.findStudentPracticeCourses(userId);
+        if(!CollectionUtils.isEmpty(studentPracticeCourses)){
+            studentPracticeCourses.sort(Comparator.comparing(CourseScheduleDto::getStartClassTime));
+            for (CourseScheduleDto studentPracticeCours : studentPracticeCourses) {
+                if(studentPracticeCours.getCreateTime().after(applyStartDay)){
+                    studentPracticeCours.setIsNew(1);
+                }
+            }
+        }
+        return studentPracticeCourses;
     }
 
     @Override
     public Map<String, Object> checkCanApplyFreePracticeGroup(Integer userId) {
         Map<String,Object> result=new HashMap<>();
-//        int recordNum = practiceLessonApplyDao.checkUserIsApply(userId);
-//        LocalDateTime now=LocalDateTime.now();
-//        if(recordNum>0){
-//            LocalDateTime applyExpireDateTime=LocalDateTime.parse("2020-02-29 00:00:00", DateUtil.dateTimeFormatter);
-//            result.put("canApply", now.compareTo(applyExpireDateTime)<=0?1:0);
-//        }else{
-//            LocalDateTime applyExpireDateTime=LocalDateTime.parse("2020-02-22 20:00:00", DateUtil.dateTimeFormatter);
-//            result.put("canApply", now.compareTo(applyExpireDateTime)<=0?1:0);
-//        }
-        result.put("canApply", 1);
         return result;
     }
 
@@ -765,7 +766,6 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         result.put("userDefaultSubjectIds", StringUtils.join(userDefaultSubjectIds.toArray(), ","));
         result.put("practiceApplyIntervalMinutes", practiceApplyIntervalTimeConfig.getParanValue(Integer.class));
         result.put("practiceCourseMinutes", practiceCourseMinutesConfig.getParanValue(Integer.class));
-        result.put("enableApply", applyTimes < 1 ? 1 : 0);
         return result;
     }
 

+ 2 - 1
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -2462,7 +2462,8 @@
                cs.teach_mode_,
                cs.music_group_id_,
                cs.group_type_,
-               su.real_name_ teacher_name_
+               su.real_name_ teacher_name_,
+               pg.create_time_
         FROM course_schedule_student_payment cssp
                  LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
                  LEFT JOIN sys_user su ON cs.actual_teacher_id_ = su.id_

+ 119 - 0
mec-biz/src/main/resources/config/mybatis/ExtracurricularExercisesMapper.xml

@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!--
+这个文件是自动生成的。
+不要修改此文件。所有改动将在下次重新自动生成时丢失。
+-->
+<mapper namespace="com.ym.mec.biz.dal.dao.ExtracurricularExercisesDao">
+	
+	<resultMap type="com.ym.mec.biz.dal.entity.ExtracurricularExercises" id="ExtracurricularExercises">
+		<result column="id_" property="id" />
+		<result column="teacher_id_" property="teacherId" />
+		<result column="student_id_list_" property="studentIdList" />
+		<result column="batch_no_" property="batchNo" />
+		<result column="title_" property="title" />
+		<result column="attachments_" property="attachments" />
+		<result column="content_" property="content" />
+		<result column="expire_date_" property="expireDate" />
+		<result column="completed_num_" property="completedNum" />
+		<result column="expect_num_" property="expectNum" />
+		<result column="create_time_" property="createTime" />
+		<result column="update_time_" property="updateTime" />
+	</resultMap>
+	
+	<!-- 根据主键查询一条记录 -->
+	<select id="get" resultMap="ExtracurricularExercises" >
+		SELECT * FROM extracurricular_exercises WHERE id_ = #{id} 
+	</select>
+	
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="ExtracurricularExercises">
+		SELECT * FROM extracurricular_exercises ORDER BY id_
+	</select>
+	
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.ExtracurricularExercises" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		<!--
+		<selectKey resultClass="int" keyProperty="id" > 
+		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL 
+		</selectKey>
+		-->
+		INSERT INTO extracurricular_exercises (id_,teacher_id_,student_id_list_,batch_no_,title_,attachments_,content_,expire_date_,completed_num_,expect_num_,create_time_,update_time_)
+		VALUES(#{id},#{teacherId},#{studentIdList},#{batchNo},#{title},#{attachments},#{content},#{expireDate},#{completedNum},#{expectNum},NOW(), NOW())
+	</insert>
+	
+	<!-- 根据主键查询一条记录 -->
+	<update id="update" parameterType="com.ym.mec.biz.dal.entity.ExtracurricularExercises">
+		UPDATE extracurricular_exercises
+		<set>
+			<if test="studentIdList != null">
+			student_id_list_ = #{studentIdList},
+			</if>
+			<if test="expireDate != null">
+			expire_date_ = #{expireDate},
+			</if>
+			<if test="batchNo != null">
+			batch_no_ = #{batchNo},
+			</if>
+			<if test="id != null">
+			id_ = #{id},
+			</if>
+			<if test="teacherId != null">
+			teacher_id_ = #{teacherId},
+			</if>
+			<if test="title != null">
+			title_ = #{title},
+			</if>
+			<if test="expectNum != null">
+			expect_num_ = #{expectNum},
+			</if>
+			<if test="content != null">
+			content_ = #{content},
+			</if>
+			<if test="attachments != null">
+			attachments_ = #{attachments},
+			</if>
+			<if test="completedNum != null">
+			completed_num_ = #{completedNum},
+			</if>
+			update_time_ = NOW()
+		</set> WHERE id_ = #{id}
+	</update>
+	
+	<!-- 根据主键删除一条记录 -->
+	<delete id="delete" >
+		DELETE FROM extracurricular_exercises WHERE id_ = #{id} 
+	</delete>
+	
+	<!-- 分页查询 -->
+	<select id="queryPage" resultMap="ExtracurricularExercises" parameterType="map">
+		SELECT * FROM extracurricular_exercises ORDER BY id_ <include refid="global.limit"/>
+	</select>
+	
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM extracurricular_exercises
+	</select>
+
+	<sql id="queryExtraExercisesCondition">
+		<where>
+			<if test="teacherId!=null">
+				teacher_id_=#{teacherId}
+			</if>
+			<if test="createTime!=null">
+				AND DATE_FORMAT(create_time_, '%Y-%m-%d') = DATE_FORMAT(#{createTime}, '%Y-%m-%d')
+			</if>
+		</where>
+	</sql>
+
+	<select id="countExtraExercises" resultType="int">
+		SELECT COUNT(id_) FROM extracurricular_exercises
+		<include refid="queryExtraExercisesCondition"/>
+	</select>
+	<select id="findExtraExercises" resultMap="ExtracurricularExercises">
+		SELECT * FROM extracurricular_exercises
+		<include refid="queryExtraExercisesCondition"/>
+		ORDER BY create_time_ DESC
+		<include refid="global.limit"/>
+	</select>
+</mapper>

+ 107 - 0
mec-biz/src/main/resources/config/mybatis/ExtracurricularExercisesMessageMapper.xml

@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!--
+这个文件是自动生成的。
+不要修改此文件。所有改动将在下次重新自动生成时丢失。
+-->
+<mapper namespace="com.ym.mec.biz.dal.dao.ExtracurricularExercisesMessageDao">
+	
+	<resultMap type="com.ym.mec.biz.dal.entity.ExtracurricularExercisesMessage" id="ExtracurricularExercisesMessage">
+		<result column="id_" property="id" />
+		<result column="extracurricular_exercises_reply_id_" property="extracurricularExercisesReplyId" />
+		<result column="user_id_" property="userId" />
+		<result column="role_" property="role" />
+		<result column="content_" property="content" />
+		<result column="create_time_" property="createTime" />
+		<result column="parent_id_" property="parentId" />
+	</resultMap>
+	
+	<!-- 根据主键查询一条记录 -->
+	<select id="get" resultMap="ExtracurricularExercisesMessage" >
+		SELECT * FROM extracurricular_exercises_message WHERE id_ = #{id} 
+	</select>
+	
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="ExtracurricularExercisesMessage">
+		SELECT * FROM extracurricular_exercises_message ORDER BY id_
+	</select>
+	
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.ExtracurricularExercisesMessage" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		<!--
+		<selectKey resultClass="int" keyProperty="id" > 
+		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL 
+		</selectKey>
+		-->
+		INSERT INTO extracurricular_exercises_message (id_,extracurricular_exercises_reply_id_,user_id_,role_,content_,create_time_,parent_id_)
+		VALUES(#{id},#{extracurricularExercisesReplyId},#{userId},#{role},#{content},NOW(),#{parentId})
+	</insert>
+	
+	<!-- 根据主键查询一条记录 -->
+	<update id="update" parameterType="com.ym.mec.biz.dal.entity.ExtracurricularExercisesMessage">
+		UPDATE extracurricular_exercises_message
+		<set>
+			<if test="parentId != null">
+			parent_id_ = #{parentId},
+			</if>
+			<if test="userId != null">
+			user_id_ = #{userId},
+			</if>
+			<if test="role != null">
+			role_ = #{role},
+			</if>
+			<if test="id != null">
+			id_ = #{id},
+			</if>
+			<if test="content != null">
+			content_ = #{content},
+			</if>
+			<if test="extracurricularExercisesReplyId != null">
+			extracurricular_exercises_reply_id_ = #{extracurricularExercisesReplyId},
+			</if>
+		</set> WHERE id_ = #{id}
+	</update>
+	
+	<!-- 根据主键删除一条记录 -->
+	<delete id="delete" >
+		DELETE FROM extracurricular_exercises_message WHERE id_ = #{id} 
+	</delete>
+	
+	<!-- 分页查询 -->
+	<select id="queryPage" resultMap="ExtracurricularExercisesMessage" parameterType="map">
+		SELECT * FROM extracurricular_exercises_message ORDER BY id_ <include refid="global.limit"/>
+	</select>
+	
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM extracurricular_exercises_message
+	</select>
+
+	<sql id="StudentExtraCommentsQueryCondition">
+		<where>
+			<if test="studentCourseHomeworkId!=null">
+				extracurricular_exercises_reply_id_=#{studentCourseHomeworkId}
+			</if>
+		</where>
+	</sql>
+	<select id="countStudentExtraComments" resultType="int">
+		SELECT COUNT(id_) FROM extracurricular_exercises_message
+		<include refid="StudentExtraCommentsQueryCondition"/>
+	</select>
+	<select id="findStudentExtraComments" resultMap="com.ym.mec.biz.dal.dao.StudentCourseHomeworkReplyDao.studentCourseHomeworkComment">
+		SELECT
+			eem.id_ comment_id_,
+			eem.user_id_ comment_user_id_,
+			suc.username_ comment_user_name_,
+			suc.avatar_,
+			IF(suc.user_type_ LIKE '%STUDENT%',0,1) is_teacher_,
+			eem.content_ comment_content_,
+			eem.create_time_ comment_time
+		FROM
+			extracurricular_exercises_message eem
+		LEFT JOIN sys_user suc ON eem.user_id_=suc.id_
+		<include refid="StudentExtraCommentsQueryCondition"/>
+		ORDER BY schr.id_ DESC
+		<include refid="global.limit"/>
+	</select>
+</mapper>

+ 165 - 0
mec-biz/src/main/resources/config/mybatis/ExtracurricularExercisesReplyMapper.xml

@@ -0,0 +1,165 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!--
+这个文件是自动生成的。
+不要修改此文件。所有改动将在下次重新自动生成时丢失。
+-->
+<mapper namespace="com.ym.mec.biz.dal.dao.ExtracurricularExercisesReplyDao">
+	
+	<resultMap type="com.ym.mec.biz.dal.entity.ExtracurricularExercisesReply" id="ExtracurricularExercisesReply">
+		<result column="id_" property="id" />
+		<result column="extracurricular_exercises_id_" property="extracurricularExercisesId" />
+		<result column="user_id_" property="userId" />
+		<result column="attachments_" property="attachments" />
+		<result column="create_time_" property="createTime" />
+		<result column="update_time_" property="updateTime" />
+		<result column="remark_" property="remark" />
+		<result column="status_" property="status" />
+		<result column="is_replied_" property="isReplied" />
+		<result column="is_view_" property="isView" />
+	</resultMap>
+
+	<resultMap id="ExtraExerciseStudentsDto" type="com.ym.mec.biz.dal.dto.ExtraExerciseStudentsDto" extends="ExtracurricularExercisesReply">
+		<result column="student_name_" property="studentName"/>
+		<result column="teacher_id_" property="teacherId"/>
+		<result column="teacher_name_" property="teacherName"/>
+		<result column="title_" property="title"/>
+		<result column="content_" property="content"/>
+	</resultMap>
+	
+	<!-- 根据主键查询一条记录 -->
+	<select id="get" resultMap="ExtracurricularExercisesReply" >
+		SELECT * FROM extracurricular_exercises_reply WHERE id_ = #{id} 
+	</select>
+	
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="ExtracurricularExercisesReply">
+		SELECT * FROM extracurricular_exercises_reply ORDER BY id_
+	</select>
+	
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.ExtracurricularExercisesReply" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		<!--
+		<selectKey resultClass="int" keyProperty="id" > 
+		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL 
+		</selectKey>
+		-->
+		INSERT INTO extracurricular_exercises_reply (extracurricular_exercises_id_,user_id_,attachments_,create_time_,update_time_,remark_,status_,is_replied_,is_view_)
+		VALUES(#{extracurricularExercisesId},#{userId},#{attachments},NOW(),NOW(),#{remark},#{status},#{isReplied},#{isView})
+	</insert>
+
+	<!-- 向数据库增加一条记录 -->
+	<insert id="batchInsert" parameterType="com.ym.mec.biz.dal.entity.ExtracurricularExercisesReply" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		INSERT INTO extracurricular_exercises_reply (extracurricular_exercises_id_,user_id_,attachments_,create_time_,update_time_,remark_,status_,is_replied_,is_view_)
+		VALUES
+		<foreach collection="replies" item="reply" separator=",">
+			(#{reply.extracurricularExercisesId},#{reply.userId},#{reply.attachments},NOW(),NOW(),#{reply.remark},#{reply.status},#{reply.isReplied},#{reply.isView})
+		</foreach>
+	</insert>
+
+	<!-- 根据主键查询一条记录 -->
+	<update id="update" parameterType="com.ym.mec.biz.dal.entity.ExtracurricularExercisesReply">
+		UPDATE extracurricular_exercises_reply
+		<set>
+			<if test="status != null">
+			status_ = #{status},
+			</if>
+			<if test="isView != null">
+			is_view_ = #{isView},
+			</if>
+			<if test="userId != null">
+			user_id_ = #{userId},
+			</if>
+			<if test="remark != null">
+			remark_ = #{remark},
+			</if>
+			<if test="id != null">
+			id_ = #{id},
+			</if>
+			<if test="isReplied != null">
+			is_replied_ = #{isReplied},
+			</if>
+			<if test="extracurricularExercisesId != null">
+			extracurricular_exercises_id_ = #{extracurricularExercisesId},
+			</if>
+			<if test="attachments != null">
+			attachments_ = #{attachments},
+			</if>
+			update_time_ = NOW()
+		</set> WHERE id_ = #{id}
+	</update>
+	
+	<!-- 根据主键删除一条记录 -->
+	<delete id="delete" >
+		DELETE FROM extracurricular_exercises_reply WHERE id_ = #{id} 
+	</delete>
+	
+	<!-- 分页查询 -->
+	<select id="queryPage" resultMap="ExtracurricularExercisesReply" parameterType="map">
+		SELECT * FROM extracurricular_exercises_reply ORDER BY id_ <include refid="global.limit"/>
+	</select>
+	
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM extracurricular_exercises_reply
+	</select>
+	<select id="findExtraExerciseStudents" resultMap="ExtraExerciseStudentsDto">
+		SELECT
+			eer.*,
+			su.student_name_
+		FROM
+			extracurricular_exercises_reply eer
+			LEFT JOIN sys_user su ON su.id_ = eer.user_id_
+		WHERE eer.extracurricular_exercises_id_= #{extraExerciseId}
+		<if test="studentName != null">
+			AND su.username_ LIKE CONCAT('%',#{studentName},'%')
+		</if>
+	</select>
+	<select id="findExtraExerciseReply" resultMap="ExtraExerciseStudentsDto">
+		SELECT
+			eer.*,
+			ee.title_,
+			ee.content_,
+			ee.teacher_id_,
+			su.student_name_
+		FROM
+			extracurricular_exercises_reply eer
+			LEFT JOIN extracurricular_exercises ee ON ee.id_=eer.extracurricular_exercises_id_
+			LEFT JOIN sys_user su ON su.id_ = eer.user_id_
+		WHERE
+			eer.id_ = #{extraExerciseReplyId}
+	</select>
+
+	<sql id="queryStudentExtraExercisesCondition">
+		<where>
+			<if test="teacherId!=null">
+				user_id_=#{studentId}
+			</if>
+			<if test="createTime!=null">
+				DATE_FORMAT(create_time_, '%Y-%m-%d') = DATE_FORMAT(#{createTime}, '%Y-%m-%d')
+			</if>
+		</where>
+	</sql>
+	<select id="countStudentExtraExercises" resultType="int">
+		SELECT COUNT(id_) FROM extracurricular_exercises_reply
+		<include refid="queryStudentExtraExercisesCondition"/>
+	</select>
+	<select id="findStudentExtraExercises" resultMap="ExtraExerciseStudentsDto">
+		SELECT
+			eer.*,
+			ee.teacher_id_,
+			tea.real_name_ teacher_name_,
+			su.student_name_
+		FROM
+			extracurricular_exercises_reply eer
+			LEFT JOIN extracurricular_exercises ee ON ee.id_=eer.extracurricular_exercises_id_
+			LEFT JOIN sys_user su ON su.id_ = eer.user_id_
+			LEFT JOIN sys_user tea ON tea.id_=ee.teacher_id_
+			<include refid="queryStudentExtraExercisesCondition"/>
+			ORDER BY eer.create_time_ DESC
+		<include refid="global.limit"/>
+	</select>
+	<select id="countIsSubmitStudents" resultType="int">
+		SELECT COUNT(id_) FROM extracurricular_exercises_reply WHERE extracurricular_exercises_id_=#{extraExerciseId} AND attachments_ IS NOT NULL
+	</select>
+</mapper>

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

@@ -151,7 +151,7 @@
         WHERE student_id_ = #{userId}
           AND group_status_ = 'NORMAL'
           AND buy_months_ IS NULL
-          AND create_time_ > '2020-01-25'
+          AND create_time_ > '2020-03-25'
     </select>
     <select id="countPracticeGroupByOrgan" resultType="java.lang.Integer">
         SELECT count(*) FROM practice_group pg

+ 44 - 0
mec-student/src/main/java/com/ym/mec/student/controller/ExtracurricularExercisesMessageController.java

@@ -0,0 +1,44 @@
+package com.ym.mec.student.controller;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.ExtracurricularExercisesMessage;
+import com.ym.mec.biz.service.ExtracurricularExercisesMessageService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+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.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @Author Joburgess
+ * @Date 2020/3/26
+ */
+@Api(tags = "课外训练评论服务")
+@RequestMapping("extracurricularExercisesMessage")
+@RestController
+public class ExtracurricularExercisesMessageController extends BaseController {
+
+    @Autowired
+    private ExtracurricularExercisesMessageService extracurricularExercisesMessageService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @ApiOperation(value = "添加学生作业评论")
+    @GetMapping("/addStudentExtraExerciseComment")
+    public HttpResponseResult addStudentExtraExerciseComment(ExtracurricularExercisesMessage extracurricularExercisesMessage){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        extracurricularExercisesMessage.setUserId(sysUser.getId());
+        extracurricularExercisesMessage.setRole("STUDENT");
+        extracurricularExercisesMessageService.addStudentExtraExerciseComment(extracurricularExercisesMessage);
+        return succeed();
+    }
+
+}

+ 62 - 0
mec-student/src/main/java/com/ym/mec/student/controller/ExtracurricularExercisesReplyController.java

@@ -0,0 +1,62 @@
+package com.ym.mec.student.controller;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.ExtracurricularExercisesReply;
+import com.ym.mec.biz.dal.page.ExtraExercilseQueryInfo;
+import com.ym.mec.biz.service.ExtracurricularExercisesReplyService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+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.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @Author Joburgess
+ * @Date 2020/3/26
+ */
+@Api(tags = "课外训练服务")
+@RequestMapping("extracurricularExercisesReply")
+@RestController
+public class ExtracurricularExercisesReplyController extends BaseController {
+
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private ExtracurricularExercisesReplyService extracurricularExercisesReplyService;
+
+    @ApiOperation(value = "获取学生的课外训练列表")
+    @GetMapping("/findStudentExtraExercises")
+    public HttpResponseResult findStudentExtraExercises(ExtraExercilseQueryInfo queryInfo){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        queryInfo.setStudentId(sysUser.getId());
+        return succeed(extracurricularExercisesReplyService.findStudentExtraExercises(queryInfo));
+    }
+
+    @ApiOperation(value = "获取课外训练学生")
+    @GetMapping("/findExtraExerciseStudents")
+    public HttpResponseResult findExtraExerciseStudents(Long extraExerciseId,String studentName){
+        return succeed(extracurricularExercisesReplyService.findExtraExerciseStudents(extraExerciseId,studentName));
+    }
+
+    @ApiOperation(value = "获取课外训练详情")
+    @GetMapping("/findStudentExtraExerciseDetail")
+    public HttpResponseResult findStudentExtraExerciseDetail(Long studentExerciseId){
+        return succeed(extracurricularExercisesReplyService.findStudentExtraExerciseDetail(studentExerciseId));
+    }
+
+    @ApiOperation(value = "提交课外训练作业")
+    @GetMapping("/submitExtraExercise")
+    public HttpResponseResult submitExtraExercise(ExtracurricularExercisesReply extracurricularExercisesReply){
+        extracurricularExercisesReplyService.submitExtraExercise(extracurricularExercisesReply);
+        return succeed();
+    }
+
+}

+ 14 - 1
mec-student/src/main/java/com/ym/mec/student/controller/PracticeGroupController.java

@@ -73,6 +73,12 @@ public class PracticeGroupController extends BaseController {
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
         Map<String,Object> result=practiceGroupService.checkCanApplyFreePracticeGroup(sysUser.getId());
+        if(ENABLE_APPLY_ORGANIDS.contains(sysUser.getOrganId())){
+            Integer applyTimes = practiceGroupDao.countUserPracticeApplyRecord(sysUser.getId());
+            result.put("canApply", applyTimes < 1 ? 1 : 0);
+        }else{
+            result.put("canApply", 0);
+        }
         result.put("organId", sysUser.getOrganId());
         return succeed(result);
     }
@@ -84,7 +90,14 @@ public class PracticeGroupController extends BaseController {
         if (sysUser == null) {
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
-        return succeed(practiceGroupService.getPracticeApplyParams(sysUser.getId()));
+        Map<String,Object> result=practiceGroupService.getPracticeApplyParams(sysUser.getId());
+        if(ENABLE_APPLY_ORGANIDS.contains(sysUser.getOrganId())){
+            Integer applyTimes = practiceGroupDao.countUserPracticeApplyRecord(sysUser.getId());
+            result.put("enableApply", applyTimes < 1 ? 1 : 0);
+        }else{
+            result.put("enableApply", 0);
+        }
+        return succeed(result);
     }
 
     @ApiOperation("获取可以预约的教师")

+ 35 - 0
mec-student/src/main/java/com/ym/mec/student/controller/StudentCourseHomeworkController.java

@@ -2,9 +2,11 @@ package com.ym.mec.student.controller;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.ExtracurricularExercisesReply;
 import com.ym.mec.biz.dal.entity.StudentCourseHomework;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.CourseHomeworkQueryInfo;
+import com.ym.mec.biz.service.ExtracurricularExercisesReplyService;
 import com.ym.mec.biz.service.StudentCourseHomeworkService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
@@ -30,6 +32,8 @@ public class StudentCourseHomeworkController extends BaseController {
     @Autowired
     private StudentCourseHomeworkService studentCourseHomeworkService;
     @Autowired
+    private ExtracurricularExercisesReplyService extracurricularExercisesReplyService;
+    @Autowired
     private SysUserFeignService sysUserFeignService;
 
     @ApiOperation(value = "提交作业")
@@ -50,6 +54,23 @@ public class StudentCourseHomeworkController extends BaseController {
         return succeed();
     }
 
+    @ApiOperation(value = "重新提交-公用")
+    @PostMapping(value = "/updatePublic",produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
+    public Object updatePublic(@RequestBody StudentCourseHomework studentCourseHomework){
+        if(!studentCourseHomework.isExtra()){
+            studentCourseHomework.setStatus(YesOrNoEnum.YES);
+            studentCourseHomework.setId(studentCourseHomework.getCourseHomeworkId());
+            studentCourseHomework.setCourseHomeworkId(null);
+            studentCourseHomeworkService.submitHomework(studentCourseHomework);
+        }else{
+            ExtracurricularExercisesReply extracurricularExercisesReply = new ExtracurricularExercisesReply();
+            extracurricularExercisesReply.setId(studentCourseHomework.getCourseHomeworkId());
+            extracurricularExercisesReply.setAttachments(studentCourseHomework.getAttachments());
+            extracurricularExercisesReplyService.submitExtraExercise(extracurricularExercisesReply);
+        }
+        return succeed();
+    }
+
     @ApiOperation(value = "获取学生作业界面详细信息")
     @GetMapping(value = "/findCourseHomeworkStudentDetail")
     public Object findCourseHomeworkStudentDetail(Long courseScheduleID) {
@@ -60,6 +81,20 @@ public class StudentCourseHomeworkController extends BaseController {
         return succeed(studentCourseHomeworkService.findCourseHomeworkStudentDetail(courseScheduleID,user.getId().longValue()));
     }
 
+    @ApiOperation(value = "获取学生作业界面详细信息-公用")
+    @GetMapping(value = "/findCourseHomeworkStudentDetailPublic")
+    public Object findCourseHomeworkStudentDetailPublic(Long courseScheduleID, boolean isExtra) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if(Objects.isNull(user)){
+            return failed(HttpStatus.FORBIDDEN,"请登录");
+        }
+        if(!isExtra){
+            return succeed(studentCourseHomeworkService.findCourseHomeworkStudentDetail(courseScheduleID,user.getId().longValue()));
+        }else{
+            return succeed(extracurricularExercisesReplyService.findStudentExtraExerciseDetail(courseScheduleID));
+        }
+    }
+
     @ApiOperation(value = "获取学生作业记录")
     @GetMapping(value = "/findStudentHomeworkRecord")
     public HttpResponseResult findStudentHomeworkRecord(CourseHomeworkQueryInfo queryInfo){

+ 35 - 0
mec-student/src/main/java/com/ym/mec/student/controller/StudentCourseHomeworkReplyController.java

@@ -2,8 +2,10 @@ package com.ym.mec.student.controller;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.ExtracurricularExercisesMessage;
 import com.ym.mec.biz.dal.entity.StudentCourseHomeworkReply;
 import com.ym.mec.biz.dal.page.StudentCourseHomeworkReplyQueryInfo;
+import com.ym.mec.biz.service.ExtracurricularExercisesMessageService;
 import com.ym.mec.biz.service.StudentCourseHomeworkReplyService;
 import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
@@ -27,6 +29,8 @@ public class StudentCourseHomeworkReplyController extends BaseController {
 
     @Autowired
     private StudentCourseHomeworkReplyService studentCourseHomeworkReplyService;
+    @Autowired
+    private ExtracurricularExercisesMessageService extracurricularExercisesMessageService;
     @Resource
     private SysUserFeignService sysUserFeignService;
 
@@ -42,12 +46,43 @@ public class StudentCourseHomeworkReplyController extends BaseController {
         return succeed();
     }
 
+    @ApiOperation(value = "新增回复-公用")
+    @PostMapping("/addPublic")
+    public Object addPublic(@RequestBody StudentCourseHomeworkReply studentCourseHomeworkReply) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        if(!studentCourseHomeworkReply.isExtra()){
+            studentCourseHomeworkReply.setUserId(sysUser.getId());
+            studentCourseHomeworkReplyService.insert(studentCourseHomeworkReply);
+        }else{
+            ExtracurricularExercisesMessage extracurricularExercisesMessage=new ExtracurricularExercisesMessage();
+            extracurricularExercisesMessage.setExtracurricularExercisesReplyId(studentCourseHomeworkReply.getStudentCourseHomeworkId());
+            extracurricularExercisesMessage.setContent(studentCourseHomeworkReply.getContent());
+            extracurricularExercisesMessage.setUserId(sysUser.getId());
+            extracurricularExercisesMessage.setRole("STUDENT");
+            extracurricularExercisesMessageService.addStudentExtraExerciseComment(extracurricularExercisesMessage);
+        }
+        return succeed();
+    }
+
     @ApiOperation(value = "回复查询")
     @PostMapping("/queryPage")
     public Object queryPage(@RequestBody StudentCourseHomeworkReplyQueryInfo queryInfo){
         return succeed(studentCourseHomeworkReplyService.queryPage(queryInfo));
     }
 
+    @ApiOperation(value = "回复查询-公用")
+    @PostMapping("/queryPagePublic")
+    public Object queryPagePublic(@RequestBody StudentCourseHomeworkReplyQueryInfo queryInfo){
+        if(!queryInfo.isExtra()){
+            return succeed(studentCourseHomeworkReplyService.queryPage(queryInfo));
+        }else{
+            return succeed(extracurricularExercisesMessageService.findStudentExtraExerciseComments(queryInfo));
+        }
+    }
+
     @ApiOperation(value = "删除回复")
     @DeleteMapping("/del/{id}")
     public Object del(@ApiParam(value = "回复ID", required = true) @PathVariable("id") Long id){

+ 35 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/CourseHomeworkController.java

@@ -3,10 +3,12 @@ package com.ym.mec.teacher.controller;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.CourseHomeworkStudentDetailDto;
+import com.ym.mec.biz.dal.entity.ExtracurricularExercisesReply;
 import com.ym.mec.biz.dal.entity.StudentCourseHomework;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.CourseHomeworkQueryInfo;
 import com.ym.mec.biz.service.CourseHomeworkService;
+import com.ym.mec.biz.service.ExtracurricularExercisesReplyService;
 import com.ym.mec.biz.service.StudentCourseHomeworkService;
 import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
@@ -33,6 +35,8 @@ public class CourseHomeworkController extends BaseController {
     @Autowired
     private StudentCourseHomeworkService studentCourseHomeworkService;
     @Autowired
+    private ExtracurricularExercisesReplyService extracurricularExercisesReplyService;
+    @Autowired
     private SysUserFeignService sysUserFeignService;
 
     @ApiOperation(value = "根据班级获取教师布置的作业")
@@ -69,4 +73,35 @@ public class CourseHomeworkController extends BaseController {
         return succeed(courseHomeworkStudentDetail);
     }
 
+    @ApiOperation(value = "获取学生作业界面详细信息-公用")
+    @GetMapping(value = "/findCourseHomeworkStudentDetailPublic")
+    public Object findCourseHomeworkStudentDetailPublic(Long courseScheduleID,Long userId, boolean isExtra){
+        StudentCourseHomework studentCourseHomework1 = studentCourseHomeworkService.get(courseScheduleID);
+        if(Objects.isNull(studentCourseHomework1)){
+            return failed("作业不存在");
+        }
+        if(!isExtra){
+            CourseHomeworkStudentDetailDto courseHomeworkStudentDetail = studentCourseHomeworkService.findCourseHomeworkStudentDetail(studentCourseHomework1.getCourseScheduleId(), userId);
+            if(Objects.nonNull(courseHomeworkStudentDetail)){
+                StudentCourseHomework studentCourseHomework=new StudentCourseHomework();
+                studentCourseHomework.setId(studentCourseHomework1.getId());
+                studentCourseHomework.setIsView(YesOrNoEnum.YES);
+                studentCourseHomeworkService.update(studentCourseHomework);
+            }
+            return succeed(courseHomeworkStudentDetail);
+        }else{
+            CourseHomeworkStudentDetailDto studentExtraExerciseDetail = extracurricularExercisesReplyService.findStudentExtraExerciseDetail(courseScheduleID);
+            if(Objects.isNull(studentExtraExerciseDetail)){
+                return failed("作业不存在");
+            }
+            if(Objects.nonNull(studentExtraExerciseDetail.getAttachments())){
+                ExtracurricularExercisesReply extracurricularExercisesReply=new ExtracurricularExercisesReply();
+                extracurricularExercisesReply.setId(studentExtraExerciseDetail.getCourseHomeworkId());
+                extracurricularExercisesReply.setIsView(1);
+                extracurricularExercisesReplyService.update(extracurricularExercisesReply);
+            }
+            return succeed(studentExtraExerciseDetail);
+        }
+    }
+
 }

+ 77 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/ExtracurricularExercisesController.java

@@ -0,0 +1,77 @@
+package com.ym.mec.teacher.controller;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.ExtracurricularExercises;
+import com.ym.mec.biz.dal.page.ExtraExercilseQueryInfo;
+import com.ym.mec.biz.service.ExtracurricularExercisesReplyService;
+import com.ym.mec.biz.service.ExtracurricularExercisesService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+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.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Objects;
+
+/**
+ * @Author Joburgess
+ * @Date 2020/3/26
+ */
+@Api(tags = "课外训练服务")
+@RequestMapping("extracurricularExercises")
+@RestController
+public class ExtracurricularExercisesController extends BaseController {
+
+    @Autowired
+    private ExtracurricularExercisesService extracurricularExercisesService;
+    @Autowired
+    private ExtracurricularExercisesReplyService extracurricularExercisesReplyService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @ApiOperation(value = "创建课外训练")
+    @PostMapping("/createExtraExercises")
+    private HttpResponseResult createExtraExercises(ExtracurricularExercises exercises){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(Objects.isNull(sysUser)){
+            return failed(HttpStatus.FORBIDDEN,"请登录");
+        }
+        exercises.setTeacherId(sysUser.getId());
+        extracurricularExercisesService.createExtraExercises(exercises);
+        return succeed();
+    }
+
+    @ApiOperation(value = "获取课外训练列表")
+    @GetMapping("/findExtraExercilses")
+    private HttpResponseResult findExtraExercilses(ExtraExercilseQueryInfo queryInfo){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(Objects.isNull(sysUser)){
+            return failed(HttpStatus.FORBIDDEN,"请登录");
+        }
+        queryInfo.setTeacherId(sysUser.getId());
+        return succeed(extracurricularExercisesService.findExtraExercilses(queryInfo));
+    }
+
+    @ApiOperation(value = "获取课外训练详情")
+    @GetMapping("/findStudentExtraExerciseDetail")
+    private HttpResponseResult findStudentExtraExerciseDetail(Long studentExerciseId){
+        if(Objects.isNull(studentExerciseId)){
+            return failed("请选择课外训练作业");
+        }
+//        ExtraExerciseStudentsDto studentExtraExerciseDetail = extracurricularExercisesReplyService.findStudentExtraExerciseDetail(studentExerciseId);
+//        if(Objects.isNull(studentExtraExerciseDetail)){
+//            return failed("作业不存在");
+//        }
+//        if(Objects.nonNull(studentExtraExerciseDetail.getAttachments())){
+//            studentExtraExerciseDetail.setIsView(1);
+//            extracurricularExercisesReplyService.update(studentExtraExerciseDetail);
+//        }
+        return succeed(extracurricularExercisesReplyService.findStudentExtraExerciseDetail(studentExerciseId));
+    }
+}

+ 44 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/ExtracurricularExercisesMessageController.java

@@ -0,0 +1,44 @@
+package com.ym.mec.teacher.controller;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.ExtracurricularExercisesMessage;
+import com.ym.mec.biz.service.ExtracurricularExercisesMessageService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+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.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @Author Joburgess
+ * @Date 2020/3/26
+ */
+@Api(tags = "课外训练评论服务")
+@RequestMapping("extracurricularExercisesMessage")
+@RestController
+public class ExtracurricularExercisesMessageController extends BaseController {
+
+    @Autowired
+    private ExtracurricularExercisesMessageService extracurricularExercisesMessageService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @ApiOperation(value = "添加学生作业评论")
+    @GetMapping("/addStudentExtraExerciseComment")
+    public HttpResponseResult addStudentExtraExerciseComment(ExtracurricularExercisesMessage extracurricularExercisesMessage){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        extracurricularExercisesMessage.setUserId(sysUser.getId());
+        extracurricularExercisesMessage.setRole("TEACHER");
+        extracurricularExercisesMessageService.addStudentExtraExerciseComment(extracurricularExercisesMessage);
+        return succeed();
+    }
+
+}

+ 35 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherCourseHomeworkReplyController.java

@@ -2,8 +2,10 @@ package com.ym.mec.teacher.controller;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.ExtracurricularExercisesMessage;
 import com.ym.mec.biz.dal.entity.StudentCourseHomeworkReply;
 import com.ym.mec.biz.dal.page.StudentCourseHomeworkReplyQueryInfo;
+import com.ym.mec.biz.service.ExtracurricularExercisesMessageService;
 import com.ym.mec.biz.service.StudentCourseHomeworkReplyService;
 import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
@@ -25,6 +27,8 @@ import java.util.Objects;
 public class TeacherCourseHomeworkReplyController extends BaseController {
 
     @Autowired
+    private ExtracurricularExercisesMessageService extracurricularExercisesMessageService;
+    @Autowired
     private StudentCourseHomeworkReplyService studentCourseHomeworkReplyService;
     @Autowired
     private SysUserFeignService sysUserFeignService;
@@ -41,12 +45,43 @@ public class TeacherCourseHomeworkReplyController extends BaseController {
         return succeed();
     }
 
+    @ApiOperation(value = "新增回复-公用")
+    @PostMapping("/addPublic")
+    public Object addPublic(@RequestBody StudentCourseHomeworkReply studentCourseHomeworkReply) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if(Objects.isNull(user)){
+            return failed(HttpStatus.FORBIDDEN,"请登录");
+        }
+        if(!studentCourseHomeworkReply.isExtra()){
+            studentCourseHomeworkReply.setUserId(user.getId());
+            studentCourseHomeworkReplyService.insertTeacherReply(studentCourseHomeworkReply);
+        }else{
+            ExtracurricularExercisesMessage extracurricularExercisesMessage=new ExtracurricularExercisesMessage();
+            extracurricularExercisesMessage.setExtracurricularExercisesReplyId(studentCourseHomeworkReply.getStudentCourseHomeworkId());
+            extracurricularExercisesMessage.setContent(studentCourseHomeworkReply.getContent());
+            extracurricularExercisesMessage.setUserId(user.getId());
+            extracurricularExercisesMessage.setRole("TEACHER");
+            extracurricularExercisesMessageService.addStudentExtraExerciseComment(extracurricularExercisesMessage);
+        }
+        return succeed();
+    }
+
     @ApiOperation(value = "回复查询")
     @GetMapping("/queryPage")
     public Object queryPage(StudentCourseHomeworkReplyQueryInfo queryInfo){
         return succeed(studentCourseHomeworkReplyService.queryPage(queryInfo));
     }
 
+    @ApiOperation(value = "回复查询-公用")
+    @PostMapping("/queryPagePublic")
+    public Object queryPagePublic(StudentCourseHomeworkReplyQueryInfo queryInfo){
+        if(!queryInfo.isExtra()){
+            return succeed(studentCourseHomeworkReplyService.queryPage(queryInfo));
+        }else{
+            return succeed(extracurricularExercisesMessageService.findStudentExtraExerciseComments(queryInfo));
+        }
+    }
+
     @ApiOperation(value = "删除回复")
     @PostMapping("/del/{id}")
     public Object del(@ApiParam(value = "回复ID", required = true) @PathVariable("id") Long id){