Browse Source

Merge remote-tracking branch 'origin/master'

周箭河 5 years ago
parent
commit
85fe8ec9fc
30 changed files with 602 additions and 93 deletions
  1. 0 2
      mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/entity/SysUser.java
  2. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ExtracurricularExercisesReplyDao.java
  3. 21 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseScheduleEndDto.java
  4. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ExtraExerciseStudentsDto.java
  5. 33 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ExtracurricularExercises.java
  6. 22 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ExtracurricularExercisesReply.java
  7. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java
  8. 34 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/SignAttendanceStatusEnum.java
  9. 61 21
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/ExtraExercilseQueryInfo.java
  10. 72 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/ExtraExercilseReplyQueryInfo.java
  11. 5 5
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/PracticeGroupQueryInfo.java
  12. 4 4
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentCourseHomeworkReplyQueryInfo.java
  13. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  14. 36 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesMessageServiceImpl.java
  15. 21 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesReplyServiceImpl.java
  16. 56 18
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesServiceImpl.java
  17. 8 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java
  18. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TenantPaymentOrderServiceImpl.java
  19. 27 3
      mec-biz/src/main/resources/config/mybatis/ExtracurricularExercisesMapper.xml
  20. 8 3
      mec-biz/src/main/resources/config/mybatis/ExtracurricularExercisesMessageMapper.xml
  21. 53 7
      mec-biz/src/main/resources/config/mybatis/ExtracurricularExercisesReplyMapper.xml
  22. 8 5
      mec-biz/src/main/resources/config/mybatis/PracticeGroupMapper.xml
  23. 15 9
      mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java
  24. 1 1
      mec-student/src/main/java/com/ym/mec/student/controller/PracticeGroupController.java
  25. 2 2
      mec-student/src/main/java/com/ym/mec/student/controller/StudentCourseHomeworkController.java
  26. 4 4
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/CourseHomeworkController.java
  27. 1 1
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherCourseHomeworkReplyController.java
  28. 4 3
      mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java
  29. 43 0
      mec-web/src/main/java/com/ym/mec/web/controller/ExtracurricularExercisesController.java
  30. 29 0
      mec-web/src/main/java/com/ym/mec/web/controller/ExtracurricularExercisesReplyController.java

+ 0 - 2
mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/entity/SysUser.java

@@ -1,8 +1,6 @@
 package com.ym.mec.auth.api.entity;
 
-import com.ym.mec.auth.api.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModelProperty;
-import org.apache.commons.lang3.builder.ToStringBuilder;
 
 import java.io.Serializable;
 import java.util.Date;

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

@@ -31,6 +31,15 @@ public interface ExtracurricularExercisesReplyDao extends BaseDAO<Long, Extracur
                                                              @Param("studentName") String studentName);
 
     /**
+     * @describe 根据课外作业获取对应的学生列表
+     * @author Joburgess
+     * @date 2020/3/26
+     * @param extraExerciseIds:
+     * @return java.util.List<com.ym.mec.biz.dal.entity.ExtracurricularExercisesReply>
+     */
+    List<ExtracurricularExercisesReply> findExtraExerciseStudentsByExtraExercises(@Param("extraExerciseIds") List<Long> extraExerciseIds);
+
+    /**
      * @describe 获取学生课外训练详情
      * @author Joburgess
      * @date 2020/3/26

+ 21 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseScheduleEndDto.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.dto;
 
 import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.enums.SignAttendanceStatusEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 
 import java.util.Date;
@@ -25,6 +26,10 @@ public class CourseScheduleEndDto extends CourseSchedule {
 
     private int isSignOut = 3;
 
+    private SignAttendanceStatusEnum signInStatusEnum;
+
+    private SignAttendanceStatusEnum signOutStatusEnum;
+
     private YesOrNoEnum isCallNames;
 
     private Date signInTime;
@@ -33,6 +38,22 @@ public class CourseScheduleEndDto extends CourseSchedule {
 
     private String studentId;
 
+    public SignAttendanceStatusEnum getSignInStatusEnum() {
+        return signInStatusEnum;
+    }
+
+    public void setSignInStatusEnum(SignAttendanceStatusEnum signInStatusEnum) {
+        this.signInStatusEnum = signInStatusEnum;
+    }
+
+    public SignAttendanceStatusEnum getSignOutStatusEnum() {
+        return signOutStatusEnum;
+    }
+
+    public void setSignOutStatusEnum(SignAttendanceStatusEnum signOutStatusEnum) {
+        this.signOutStatusEnum = signOutStatusEnum;
+    }
+
     public String getStudentId() {
         return studentId;
     }

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

@@ -2,6 +2,8 @@ package com.ym.mec.biz.dal.dto;
 
 import com.ym.mec.biz.dal.entity.ExtracurricularExercisesReply;
 
+import java.util.Date;
+
 /**
  * @Author Joburgess
  * @Date 2020/3/26
@@ -18,6 +20,16 @@ public class ExtraExerciseStudentsDto extends ExtracurricularExercisesReply {
 
     private String content;
 
+    private java.util.Date expireDate;
+
+    public Date getExpireDate() {
+        return expireDate;
+    }
+
+    public void setExpireDate(Date expireDate) {
+        this.expireDate = expireDate;
+    }
+
     public String getTitle() {
         return title;
     }

+ 33 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ExtracurricularExercises.java

@@ -2,6 +2,8 @@ package com.ym.mec.biz.dal.entity;
 
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
+import com.ym.mec.auth.api.entity.SysUser;
+
 /**
  * 对应数据库表(extracurricular_exercises):
  */
@@ -13,6 +15,8 @@ public class ExtracurricularExercises {
 	/** 老师编号 */
 	private Integer teacherId;
 	
+	private SysUser teacher = new SysUser();
+	
 	/** 学生列表 */
 	private String studentIdList;
 	
@@ -42,7 +46,27 @@ public class ExtracurricularExercises {
 	
 	/**  */
 	private java.util.Date updateTime;
-	
+
+	private int isReplied;
+
+	private int isSubmit;
+
+	public int getIsReplied() {
+		return isReplied;
+	}
+
+	public void setIsReplied(int isReplied) {
+		this.isReplied = isReplied;
+	}
+
+	public int getIsSubmit() {
+		return isSubmit;
+	}
+
+	public void setIsSubmit(int isSubmit) {
+		this.isSubmit = isSubmit;
+	}
+
 	public void setId(Long id){
 		this.id = id;
 	}
@@ -139,6 +163,14 @@ public class ExtracurricularExercises {
 		return this.updateTime;
 	}
 			
+	public SysUser getTeacher() {
+		return teacher;
+	}
+
+	public void setTeacher(SysUser teacher) {
+		this.teacher = teacher;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

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

@@ -2,6 +2,8 @@ package com.ym.mec.biz.dal.entity;
 
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
+import com.ym.mec.auth.api.entity.SysUser;
+
 /**
  * 对应数据库表(extracurricular_exercises_reply):
  */
@@ -13,9 +15,13 @@ public class ExtracurricularExercisesReply {
 	/**  */
 	private Long extracurricularExercisesId;
 	
+	private ExtracurricularExercises extracurricularExercises = new ExtracurricularExercises();
+	
 	/**  */
 	private Integer userId;
 	
+	private SysUser user = new SysUser();
+	
 	/** 作品附件 */
 	private String attachments;
 	
@@ -37,6 +43,14 @@ public class ExtracurricularExercisesReply {
 	/** 是否已查看 */
 	private Integer isView;
 	
+	public ExtracurricularExercises getExtracurricularExercises() {
+		return extracurricularExercises;
+	}
+
+	public void setExtracurricularExercises(ExtracurricularExercises extracurricularExercises) {
+		this.extracurricularExercises = extracurricularExercises;
+	}
+
 	public void setId(Long id){
 		this.id = id;
 	}
@@ -117,6 +131,14 @@ public class ExtracurricularExercisesReply {
 		return this.isView;
 	}
 			
+	public SysUser getUser() {
+		return user;
+	}
+
+	public void setUser(SysUser user) {
+		this.user = user;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java

@@ -57,6 +57,16 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     HOMEWORK_STUDENT_REPLY_PUSH("HOMEWORK_STUDENT_REPLY_PUSH", "学生作业回复提醒"),
     HOMEWORK_TEACHER_REPLY_PUSH("HOMEWORK_TEACHER_REPLY_PUSH", "教师回复作业提醒"),
 
+    /** 课外训练消息 */
+    EXTRA_REMIND_PUSH("EXTRA_REMIND_PUSH", "作业提醒"),
+    EXTRA_REMIND_IM("EXTRA_REMIND_IM", "作业提醒"),
+    EXTRA_TEACHER_REPLY_PUSH("EXTRA_TEACHER_REPLY_PUSH", "作业点评提醒"),
+    EXTRA_TEACHER_REPLY_IM("EXTRA_TEACHER_REPLY_IM", "作业点评提醒"),
+    EXTRA_SUBMIT_PUSH("EXTRA_SUBMIT_PUSH", "作业提交提醒"),
+    EXTRA_SUBMIT_IM("EXTRA_SUBMIT_IM", "作业提交提醒"),
+    EXTRA_STUDENT_REPLY_PUSH("EXTRA_STUDENT_REPLY_PUSH", "作业回复提醒"),
+    EXTRA_STUDENT_REPLY_IM("EXTRA_STUDENT_REPLY_IM", "作业回复提醒"),
+
     TEACHER_PUSH_MUSIC_GROUP_COURSE_ADD_PLAN("TEACHER_PUSH_MUSIC_GROUP_COURSE_ADD_PLAN", "乐团课新增安排"),
     TEACHER_SMS_VIP_COURSE_APPLY_RESULT("TEACHER_SMS_VIP_COURSE_APPLY_RESULT", "VIP课申请结果"),
     TEACHER_PUSH_VIP_COURSE_APPLY_RESULT("TEACHER_PUSH_VIP_COURSE_APPLY_RESULT", "VIP课申请结果"),

+ 34 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/SignAttendanceStatusEnum.java

@@ -0,0 +1,34 @@
+package com.ym.mec.biz.dal.enums;
+
+import com.ym.mec.common.enums.BaseEnum;
+
+public enum SignAttendanceStatusEnum implements BaseEnum<Integer, SignAttendanceStatusEnum> {
+    NORMAL(1,"正常"),
+    UNUSUAL(0,"异常"),
+    NO(3,"未签到");
+
+    private Integer code;
+    private String msg;
+
+    SignAttendanceStatusEnum(Integer code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public void setCode(Integer code) {
+        this.code = code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    @Override
+    public Integer getCode() {
+        return this.code;
+    }
+}

+ 61 - 21
mec-biz/src/main/java/com/ym/mec/biz/dal/page/ExtraExercilseQueryInfo.java

@@ -10,33 +10,73 @@ import java.util.Date;
  */
 public class ExtraExercilseQueryInfo extends QueryInfo {
 
-    private Integer teacherId;
+	private String batchNo;// 批次号
 
-    private Integer studentId;
+	private Integer teacherId;
 
-    private Date createTime;
+	private Integer studentId;
 
-    public Integer getTeacherId() {
-        return teacherId;
-    }
+	private Date createTime;
 
-    public void setTeacherId(Integer teacherId) {
-        this.teacherId = teacherId;
-    }
+	private String title;// 作业标题
 
-    public Integer getStudentId() {
-        return studentId;
-    }
+	private Date assignStartTime;// 布置作业的开始时间
 
-    public void setStudentId(Integer studentId) {
-        this.studentId = studentId;
-    }
+	private Date assignEndTime;// 布置作业的结束时间
 
-    public Date getCreateTime() {
-        return createTime;
-    }
+	public Integer getTeacherId() {
+		return teacherId;
+	}
 
-    public void setCreateTime(Date createTime) {
-        this.createTime = createTime;
-    }
+	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;
+	}
+
+	public String getBatchNo() {
+		return batchNo;
+	}
+
+	public void setBatchNo(String batchNo) {
+		this.batchNo = batchNo;
+	}
+
+	public String getTitle() {
+		return title;
+	}
+
+	public void setTitle(String title) {
+		this.title = title;
+	}
+
+	public Date getAssignStartTime() {
+		return assignStartTime;
+	}
+
+	public void setAssignStartTime(Date assignStartTime) {
+		this.assignStartTime = assignStartTime;
+	}
+
+	public Date getAssignEndTime() {
+		return assignEndTime;
+	}
+
+	public void setAssignEndTime(Date assignEndTime) {
+		this.assignEndTime = assignEndTime;
+	}
 }

+ 72 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/ExtraExercilseReplyQueryInfo.java

@@ -0,0 +1,72 @@
+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 ExtraExercilseReplyQueryInfo extends QueryInfo {
+	
+	private Long extracurricularExercisesId;
+
+	private Integer teacherId;
+
+	private Integer studentId;
+
+	private String title;
+
+	private Date submitStartTime;// 提交作业的开始时间
+
+	private Date submitEndTime;// 提交作业的结束时间
+
+	public Long getExtracurricularExercisesId() {
+		return extracurricularExercisesId;
+	}
+
+	public void setExtracurricularExercisesId(Long extracurricularExercisesId) {
+		this.extracurricularExercisesId = extracurricularExercisesId;
+	}
+
+	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 getSubmitStartTime() {
+		return submitStartTime;
+	}
+
+	public void setSubmitStartTime(Date submitStartTime) {
+		this.submitStartTime = submitStartTime;
+	}
+
+	public Date getSubmitEndTime() {
+		return submitEndTime;
+	}
+
+	public void setSubmitEndTime(Date submitEndTime) {
+		this.submitEndTime = submitEndTime;
+	}
+
+	public String getTitle() {
+		return title;
+	}
+
+	public void setTitle(String title) {
+		this.title = title;
+	}
+}

+ 5 - 5
mec-biz/src/main/java/com/ym/mec/biz/dal/page/PracticeGroupQueryInfo.java

@@ -26,16 +26,16 @@ public class PracticeGroupQueryInfo extends QueryInfo {
 
     private Boolean hasEducationalTeacherId;
 
-    private Boolean firstOrRenew;
+    private Integer type;
 
     private boolean isExport = false;
 
-    public Boolean getFirstOrRenew() {
-        return firstOrRenew;
+    public Integer getType() {
+        return type;
     }
 
-    public void setFirstOrRenew(Boolean firstOrRenew) {
-        this.firstOrRenew = firstOrRenew;
+    public void setType(Integer type) {
+        this.type = type;
     }
 
     public Boolean getHasEducationalTeacherId() {

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

@@ -17,14 +17,14 @@ public class StudentCourseHomeworkReplyQueryInfo extends QueryInfo {
 
     private Integer userId;
 
-    private boolean isExtra;
+    private boolean extra;
 
     public boolean isExtra() {
-        return isExtra;
+        return extra;
     }
 
-    public void setIsExtra(boolean isExtra) {
-        isExtra = isExtra;
+    public void setExtra(boolean extra) {
+        this.extra = extra;
     }
 
     public Integer getUserId() {

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

@@ -3650,6 +3650,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
                     TeacherAttendance teacherAttendance=courseTeacherAttendances.get(0);
                     result.setIsSignIn(Objects.isNull(teacherAttendance.getSignInStatus())?3:teacherAttendance.getSignInStatus().getCode());
                     result.setIsSignOut(Objects.isNull(teacherAttendance.getSignOutStatus())?3:teacherAttendance.getSignOutStatus().getCode());
+					result.setSignInStatusEnum(result.getIsSignIn() == 1?SignAttendanceStatusEnum.NORMAL:result.getIsSignIn() == 0?SignAttendanceStatusEnum.UNUSUAL:SignAttendanceStatusEnum.NO);
+					result.setSignOutStatusEnum(result.getIsSignOut() == 1?SignAttendanceStatusEnum.NORMAL:result.getIsSignOut() == 0?SignAttendanceStatusEnum.UNUSUAL:SignAttendanceStatusEnum.NO);
                     result.setSignInTime(teacherAttendance.getSignInTime());
                     result.setSignOutTime(teacherAttendance.getSignOutTime());
                     result.setRemark(teacherAttendance.getRemark());

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

@@ -1,16 +1,23 @@
 package com.ym.mec.biz.service.impl;
 
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.ExtracurricularExercisesDao;
 import com.ym.mec.biz.dal.dao.ExtracurricularExercisesMessageDao;
 import com.ym.mec.biz.dal.dao.ExtracurricularExercisesReplyDao;
+import com.ym.mec.biz.dal.dao.TeacherDao;
 import com.ym.mec.biz.dal.dto.StudentCourseHomeworkCommentDto;
+import com.ym.mec.biz.dal.entity.ExtracurricularExercises;
 import com.ym.mec.biz.dal.entity.ExtracurricularExercisesMessage;
 import com.ym.mec.biz.dal.entity.ExtracurricularExercisesReply;
+import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.page.StudentCourseHomeworkReplyQueryInfo;
 import com.ym.mec.biz.service.ExtracurricularExercisesMessageService;
+import com.ym.mec.biz.service.SysMessageService;
 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.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -26,6 +33,12 @@ public class ExtracurricularExercisesMessageServiceImpl extends BaseServiceImpl<
 	private ExtracurricularExercisesMessageDao extracurricularExercisesMessageDao;
 	@Autowired
 	private ExtracurricularExercisesReplyDao extracurricularExercisesReplyDao;
+	@Autowired
+	private ExtracurricularExercisesDao extracurricularExercisesDao;
+	@Autowired
+	private SysMessageService sysMessageService;
+	@Autowired
+	private TeacherDao teacherDao;
 
 	@Override
 	public BaseDAO<Long, ExtracurricularExercisesMessage> getDAO() {
@@ -46,9 +59,32 @@ public class ExtracurricularExercisesMessageServiceImpl extends BaseServiceImpl<
 		if(Objects.isNull(extracurricularExercisesReply)){
 			throw new BizException("课外训练不存在");
 		}
+		ExtracurricularExercises extracurricularExercises = extracurricularExercisesDao.get(extracurricularExercisesReply.getExtracurricularExercisesId());
 		if("TEACHER".equals(extracurricularExercisesMessage.getRole())&&Objects.nonNull(extracurricularExercisesReply.getAttachments())){
 			extracurricularExercisesReply.setIsReplied(1);
 			extracurricularExercisesReplyDao.update(extracurricularExercisesReply);
+
+			Map<Integer, String> userMap = new HashMap<>();
+			userMap.put(extracurricularExercisesReply.getUserId(),extracurricularExercisesReply.getUserId().toString());
+			String notifyUrl = "3?courseScheduleID=" + extracurricularExercisesReply.getId() + "&studentCourseHomeworkId=" + extracurricularExercisesReply.getId();
+
+			sysMessageService.batchSendImMessage(MessageTypeEnum.EXTRA_TEACHER_REPLY_IM,extracurricularExercises.getTeacherId().toString(),
+					new String[]{extracurricularExercisesReply.getUserId().toString()},
+					null, extracurricularExercises.getTitle(), extracurricularExercisesMessage.getContent());
+			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.EXTRA_TEACHER_REPLY_PUSH,
+					userMap, null, 0, notifyUrl, "STUDENT", extracurricularExercises.getTitle());
+		}else{
+			Map<Integer, String> userMap = new HashMap<>();
+			userMap.put(extracurricularExercises.getTeacherId(), extracurricularExercises.getTeacherId().toString());
+			SysUser user = teacherDao.getUser(extracurricularExercisesReply.getUserId());
+
+			String notifyUrl = "9?courseScheduleID=" + extracurricularExercisesReply.getId() +
+					"&userId=" + extracurricularExercisesReply.getUserId() + "&studentCourseHomeworkId=" + extracurricularExercisesReply.getId();
+			sysMessageService.batchSendImMessage(MessageTypeEnum.EXTRA_STUDENT_REPLY_IM,extracurricularExercisesReply.getUserId().toString(),
+					new String[]{extracurricularExercises.getTeacherId().toString()},
+					null,extracurricularExercises.getTitle(), extracurricularExercisesMessage.getContent());
+			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.EXTRA_REMIND_PUSH,
+					userMap, null, 0, notifyUrl, "TEACHER", extracurricularExercises.getTitle(), user.getUsername());
 		}
 	}
 

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

@@ -1,19 +1,24 @@
 package com.ym.mec.biz.service.impl;
 
+import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.ExtracurricularExercisesDao;
 import com.ym.mec.biz.dal.dao.ExtracurricularExercisesReplyDao;
+import com.ym.mec.biz.dal.dao.TeacherDao;
 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.entity.StudentCourseHomework;
+import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 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.biz.service.SysMessageService;
 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.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -29,6 +34,10 @@ public class ExtracurricularExercisesReplyServiceImpl extends BaseServiceImpl<Lo
 	private ExtracurricularExercisesReplyDao extracurricularExercisesReplyDao;
 	@Autowired
 	private ExtracurricularExercisesDao extracurricularExercisesDao;
+	@Autowired
+	private SysMessageService sysMessageService;
+	@Autowired
+	private TeacherDao teacherDao;
 
 	@Override
 	public BaseDAO<Long, ExtracurricularExercisesReply> getDAO() {
@@ -69,6 +78,7 @@ public class ExtracurricularExercisesReplyServiceImpl extends BaseServiceImpl<Lo
 		detail.setTeacherName(extraExerciseReply.getTeacherName());
 		detail.setStudentId(extraExerciseReply.getUserId());
 		detail.setStudentName(extraExerciseReply.getStudentName());
+		detail.setExpiryDate(extraExerciseReply.getExpireDate());
 		return detail;
 	}
 
@@ -116,5 +126,16 @@ public class ExtracurricularExercisesReplyServiceImpl extends BaseServiceImpl<Lo
 		int submitStudentNum=extracurricularExercisesReplyDao.countIsSubmitStudents(existExtra.getExtracurricularExercisesId());
 		extracurricularExercises.setCompletedNum(submitStudentNum);
 		extracurricularExercisesDao.update(extracurricularExercises);
+
+		Map<Integer, String> userMap = new HashMap<>();
+		userMap.put(extracurricularExercises.getTeacherId(), extracurricularExercises.getTeacherId().toString());
+		SysUser user = teacherDao.getUser(existExtra.getUserId());
+		String notifyUrl = "9?courseScheduleID=" + existExtra.getId() + "&userId=" + existExtra.getUserId() + "&studentCourseHomeworkId=" + existExtra.getId();
+		sysMessageService.batchSendImMessage(MessageTypeEnum.EXTRA_SUBMIT_IM,existExtra.getUserId().toString(),
+				new String[]{extracurricularExercises.getTeacherId().toString()},
+				null,extracurricularExercises.getTitle());
+		sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.EXTRA_SUBMIT_PUSH,
+				userMap, null, 0, notifyUrl, "TEACHER",
+				extracurricularExercises.getTitle(), user.getUsername());
 	}
 }

+ 56 - 18
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesServiceImpl.java

@@ -2,14 +2,18 @@ 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.dao.TeacherDao;
 import com.ym.mec.biz.dal.entity.ExtracurricularExercises;
 import com.ym.mec.biz.dal.entity.ExtracurricularExercisesReply;
+import com.ym.mec.biz.dal.entity.Teacher;
+import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.page.ExtraExercilseQueryInfo;
 import com.ym.mec.biz.service.ExtracurricularExercisesService;
+import com.ym.mec.biz.service.SysMessageService;
 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.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import org.apache.commons.lang3.StringUtils;
@@ -17,6 +21,7 @@ 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 org.springframework.util.CollectionUtils;
 
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
@@ -30,6 +35,10 @@ public class ExtracurricularExercisesServiceImpl extends BaseServiceImpl<Long, E
 	private ExtracurricularExercisesDao extracurricularExercisesDao;
 	@Autowired
 	private ExtracurricularExercisesReplyDao extracurricularExercisesReplyDao;
+	@Autowired
+	private SysMessageService sysMessageService;
+	@Autowired
+	private TeacherDao teacherDao;
 
 	@Override
 	public BaseDAO<Long, ExtracurricularExercises> getDAO() {
@@ -55,7 +64,8 @@ public class ExtracurricularExercisesServiceImpl extends BaseServiceImpl<Long, E
 		exercises.setBatchNo(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
 		exercises.setExpectNum(studentIds.size());
 		extracurricularExercisesDao.insert(exercises);
-		List<ExtracurricularExercisesReply> studentExtraExerises=new ArrayList<>();
+		String dateStr = DateUtil.dateToString(exercises.getExpireDate(), "MM月dd日HH点");
+		Teacher teacher = teacherDao.get(exercises.getTeacherId());
 		for (Integer studentId : studentIds) {
 			ExtracurricularExercisesReply studentExtraExercise=new ExtracurricularExercisesReply();
 			studentExtraExercise.setExtracurricularExercisesId(exercises.getId());
@@ -63,32 +73,60 @@ public class ExtracurricularExercisesServiceImpl extends BaseServiceImpl<Long, E
 			studentExtraExercise.setStatus(0);
 			studentExtraExercise.setIsReplied(0);
 			studentExtraExercise.setIsView(0);
-			studentExtraExerises.add(studentExtraExercise);
+			extracurricularExercisesReplyDao.insert(studentExtraExercise);
+
+			String notifyUrl = "3?courseScheduleID=" + studentExtraExercise.getId() + "&studentCourseHomeworkId=" + studentExtraExercise.getId();
+			sysMessageService.batchSendImMessage(MessageTypeEnum.EXTRA_REMIND_IM,exercises.getTeacherId().toString(),
+					new String[]{studentId.toString()},
+					null, exercises.getTitle(), dateStr,exercises.getContent());
+
+			Map<Integer, String> userMap = new HashMap<>();
+			userMap.put(studentId, studentId.toString());
+			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.EXTRA_REMIND_PUSH,
+					userMap, null, 0, notifyUrl, "STUDENT",
+					teacher.getRealName(),exercises.getTitle(), dateStr);
 		}
-		extracurricularExercisesReplyDao.batchInsert(studentExtraExerises);
 	}
 
 	@Override
 	public List<Map<String, Object>> findExtraExercilses(ExtraExercilseQueryInfo queryInfo) {
-		PageInfo<ExtracurricularExercises> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
 		Map<String, Object> params = new HashMap<>();
 		MapUtil.populateMap(params, queryInfo);
+		List<Map<String, Object>> result = new ArrayList<>();
 
 		List<ExtracurricularExercises> dataList = extracurricularExercisesDao.findExtraExercises(params);
-		Map<String, List<ExtracurricularExercises>> collect = dataList.stream().collect(Collectors.groupingBy(e -> DateUtil.dateToString(e.getCreateTime(), "yyyy-MM-dd")));
+		if(!CollectionUtils.isEmpty(dataList)){
+			List<Long> extraExerciseIds = dataList.stream().map(ExtracurricularExercises::getId).collect(Collectors.toList());
+			List<ExtracurricularExercisesReply> extraExerciseStudentsByExtraExercises = extracurricularExercisesReplyDao.findExtraExerciseStudentsByExtraExercises(extraExerciseIds);
+			Map<Long, List<ExtracurricularExercisesReply>> idStudentsMap = extraExerciseStudentsByExtraExercises.stream().collect(Collectors.groupingBy(ExtracurricularExercisesReply::getExtracurricularExercisesId));
+			for (ExtracurricularExercises extracurricularExercises : dataList) {
+				List<ExtracurricularExercisesReply> extracurricularExercisesReplies = idStudentsMap.get(extracurricularExercises.getId());
+				if(CollectionUtils.isEmpty(extracurricularExercisesReplies)){
+					continue;
+				}
+				long repliedNum = extracurricularExercisesReplies.stream().filter(e -> e.getIsReplied() == 0).count();
+				if(repliedNum<=0){
+					extracurricularExercises.setIsReplied(1);
+				}
+				long submitNum = extracurricularExercisesReplies.stream().filter(e -> e.getIsView() == 1).count();
+				if(submitNum>0){
+					extracurricularExercises.setIsSubmit(1);
+				}
+			}
 
-		List<Map<String, Object>> result = new ArrayList<>();
-		List<Date> dates=new ArrayList<>();
-		collect.keySet().forEach(ds-> dates.add(DateUtil.stringToDate(ds,"yyyy-MM-dd")));
-		dates.sort(Comparator.comparing(Date::getTime));
-		dates.sort(Comparator.reverseOrder());
-		for (Date date : dates) {
-			String key=DateUtil.dateToString(date, "yyyy-MM-dd");
-			Map<String, Object> r = new HashMap<>();
-			r.put("day", key);
-			collect.get(key).sort(Comparator.comparing(ExtracurricularExercises::getCreateTime).reversed());
-			r.put("list", collect.get(key));
-			result.add(r);
+			Map<String, List<ExtracurricularExercises>> collect = dataList.stream().collect(Collectors.groupingBy(e -> DateUtil.dateToString(e.getCreateTime(), "yyyy-MM-dd")));
+			List<Date> dates=new ArrayList<>();
+			collect.keySet().forEach(ds-> dates.add(DateUtil.stringToDate(ds,"yyyy-MM-dd")));
+			dates.sort(Comparator.comparing(Date::getTime));
+			dates.sort(Comparator.reverseOrder());
+			for (Date date : dates) {
+				String key=DateUtil.dateToString(date, "yyyy-MM-dd");
+				Map<String, Object> r = new HashMap<>();
+				r.put("day", key);
+				collect.get(key).sort(Comparator.comparing(ExtracurricularExercises::getCreateTime).reversed());
+				r.put("list", collect.get(key));
+				result.add(r);
+			}
 		}
 		return result;
 	}

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

@@ -140,7 +140,7 @@ 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}));
+    private static final Set<Integer> ENABLE_APPLY_ORGANIDS = new HashSet<>(Arrays.asList(new Integer[]{28,34,37}));
 
     static {
         applyStartDay = DateUtil.stringToDate("2020-03-25 00:00:00");
@@ -752,7 +752,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         List<Subject> subjects = subjectDao.findBySubjectByIdList(practiceSubjectIdListConfig.getParanValue());
         List<Integer> subjectIds = Arrays.asList(practiceSubjectIdListConfig.getParanValue().split(",")).stream().mapToInt(idStr -> Integer.valueOf(idStr)).boxed().collect(Collectors.toList());
         List<Integer> userDefaultSubjectIds = Objects.isNull(student) || Objects.isNull(student.getSubjectIdList()) ? null : Arrays.asList(student.getSubjectIdList().split(",")).stream().mapToInt(idStr -> Integer.valueOf(idStr)).boxed().collect(Collectors.toList());
-        if (!CollectionUtils.isEmpty(userDefaultSubjectIds)) {
+        if (!CollectionUtils.isEmpty(userDefaultSubjectIds)&&userDefaultSubjectIds.size()<=1) {
             userDefaultSubjectIds = userDefaultSubjectIds.stream().filter(userDefaultSubjectId -> subjectIds.contains(userDefaultSubjectId)).collect(Collectors.toList());
         } else {
             userDefaultSubjectIds = new ArrayList<>();
@@ -1639,6 +1639,11 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         }
         SysConfig practiceCourseSalaryConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_COURSE_SALARY);
         Date now = new Date();
+        if(practiceGroup.getFirstCourseTime().after(practiceGroup.getSecondCourseTime())){
+            Date tmp=practiceGroup.getSecondCourseTime();
+            practiceGroup.setSecondCourseTime(practiceGroup.getFirstCourseTime());
+            practiceGroup.setFirstCourseTime(tmp);
+        }
         if (practiceGroup.getFirstCourseTime().before(activityStartDate)
                 || practiceGroup.getFirstCourseTime().after(activityEndDate)) {
             result.put("status", "APPLY_DATE_OVERFLOW");
@@ -2207,7 +2212,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         List<Subject> subjects = subjectDao.findBySubjectByIdList(practiceSubjectIdListConfig.getParanValue());
         List<Integer> subjectIds = Arrays.asList(practiceSubjectIdListConfig.getParanValue().split(",")).stream().mapToInt(idStr -> Integer.valueOf(idStr)).boxed().collect(Collectors.toList());
         List<Integer> userDefaultSubjectIds = Objects.isNull(student) || Objects.isNull(student.getSubjectIdList()) ? null : Arrays.asList(student.getSubjectIdList().split(",")).stream().mapToInt(idStr -> Integer.valueOf(idStr)).boxed().collect(Collectors.toList());
-        if (!CollectionUtils.isEmpty(userDefaultSubjectIds)) {
+        if (!CollectionUtils.isEmpty(userDefaultSubjectIds)&&userDefaultSubjectIds.size()<=1) {
             userDefaultSubjectIds = userDefaultSubjectIds.stream().filter(userDefaultSubjectId -> subjectIds.contains(userDefaultSubjectId)).collect(Collectors.toList());
         } else {
             userDefaultSubjectIds = new ArrayList<>();

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TenantPaymentOrderServiceImpl.java

@@ -119,7 +119,7 @@ public class TenantPaymentOrderServiceImpl extends BaseServiceImpl<Long, TenantP
 				// 是否满足条件
 				if (tenantEntryActivities.getSuitableUser() == SuitableUser.NEW) {
 					if (po.getStatus() == DealStatusEnum.ING) {
-						int i = 30 - DateUtil.minutesBetween(po.getCreateTime(), date);
+						int i = 35 - DateUtil.minutesBetween(po.getCreateTime(), date);
 						if(i <= 0){
 							throw new BizException("您的订单出现异常,请联系客服");
 						}

+ 27 - 3
mec-biz/src/main/resources/config/mybatis/ExtracurricularExercisesMapper.xml

@@ -9,6 +9,7 @@
 	<resultMap type="com.ym.mec.biz.dal.entity.ExtracurricularExercises" id="ExtracurricularExercises">
 		<result column="id_" property="id" />
 		<result column="teacher_id_" property="teacherId" />
+		<result column="username_" property="teacher.username" />
 		<result column="student_id_list_" property="studentIdList" />
 		<result column="batch_no_" property="batchNo" />
 		<result column="title_" property="title" />
@@ -20,6 +21,26 @@
 		<result column="create_time_" property="createTime" />
 		<result column="update_time_" property="updateTime" />
 	</resultMap>
+
+	<sql id="queryPageCondition">
+		<where>
+			<if test="teacherId != null">
+				teacher_id_ = #{teacherId}
+			</if>
+			<if test="title != null">
+				title_ = #{title}
+			</if>
+			<if test="batchNo != null">
+				batch_no_ = #{batchNo}
+			</if>
+			<if test="assignStartTime != null">
+				AND ee.create_time_ &gt;= #{assignStartTime}
+			</if>
+			<if test="assignEndTime != null">
+				AND ee.create_time_ &lt;= #{assignEndTime}
+			</if>
+		</where>
+	</sql>
 	
 	<!-- 根据主键查询一条记录 -->
 	<select id="get" resultMap="ExtracurricularExercises" >
@@ -87,12 +108,15 @@
 	
 	<!-- 分页查询 -->
 	<select id="queryPage" resultMap="ExtracurricularExercises" parameterType="map">
-		SELECT * FROM extracurricular_exercises ORDER BY id_ <include refid="global.limit"/>
+		SELECT ee.*,u.username_ FROM extracurricular_exercises ee left join sys_user u on ee.teacher_id_ = u.id_
+		<include refid="queryPageCondition"/>
+		ORDER BY id_ <include refid="global.limit"/>
 	</select>
 	
 	<!-- 查询当前表的总记录数 -->
 	<select id="queryCount" resultType="int">
-		SELECT COUNT(*) FROM extracurricular_exercises
+		SELECT COUNT(ee.id_) FROM extracurricular_exercises ee
+		<include refid="queryPageCondition"/>
 	</select>
 
 	<sql id="queryExtraExercisesCondition">
@@ -101,7 +125,7 @@
 				teacher_id_=#{teacherId}
 			</if>
 			<if test="createTime!=null">
-				AND DATE_FORMAT(create_time_, '%Y-%m-%d') = DATE_FORMAT(#{createTime}, '%Y-%m-%d')
+				AND DATE_FORMAT(create_time_, '%Y-%m') = DATE_FORMAT(#{createTime}, '%Y-%m')
 			</if>
 		</where>
 	</sql>

+ 8 - 3
mec-biz/src/main/resources/config/mybatis/ExtracurricularExercisesMessageMapper.xml

@@ -80,12 +80,16 @@
 	<sql id="StudentExtraCommentsQueryCondition">
 		<where>
 			<if test="studentCourseHomeworkId!=null">
-				extracurricular_exercises_reply_id_=#{studentCourseHomeworkId}
+				AND extracurricular_exercises_reply_id_=#{studentCourseHomeworkId}
+			</if>
+			<if test="userId!=null">
+				AND eer.user_id_=#{userId}
 			</if>
 		</where>
 	</sql>
 	<select id="countStudentExtraComments" resultType="int">
-		SELECT COUNT(id_) FROM extracurricular_exercises_message
+		SELECT COUNT(eem.id_) FROM extracurricular_exercises_message eem
+		LEFT JOIN extracurricular_exercises_reply eer ON eer.id_=eem.extracurricular_exercises_reply_id_
 		<include refid="StudentExtraCommentsQueryCondition"/>
 	</select>
 	<select id="findStudentExtraComments" resultMap="com.ym.mec.biz.dal.dao.StudentCourseHomeworkReplyDao.studentCourseHomeworkComment">
@@ -100,8 +104,9 @@
 		FROM
 			extracurricular_exercises_message eem
 		LEFT JOIN sys_user suc ON eem.user_id_=suc.id_
+		LEFT JOIN extracurricular_exercises_reply eer ON eer.id_=eem.extracurricular_exercises_reply_id_
 		<include refid="StudentExtraCommentsQueryCondition"/>
-		ORDER BY schr.id_ DESC
+		ORDER BY eem.id_ DESC
 		<include refid="global.limit"/>
 	</select>
 </mapper>

+ 53 - 7
mec-biz/src/main/resources/config/mybatis/ExtracurricularExercisesReplyMapper.xml

@@ -9,7 +9,9 @@
 	<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="title_" property="extracurricularExercises.title" />
 		<result column="user_id_" property="userId" />
+		<result column="username_" property="user.username" />
 		<result column="attachments_" property="attachments" />
 		<result column="create_time_" property="createTime" />
 		<result column="update_time_" property="updateTime" />
@@ -25,7 +27,34 @@
 		<result column="teacher_name_" property="teacherName"/>
 		<result column="title_" property="title"/>
 		<result column="content_" property="content"/>
+		<result column="expire_date_" property="expireDate"/>
 	</resultMap>
+
+	<sql id="queryPageCondition">
+		<where>
+			<if test="extracurricularExercisesId != null">
+				extracurricular_exercises_id_ = #{extracurricularExercisesId}
+			</if>
+			<if test="teacherId != null">
+				teacher_id_ = #{teacherId}
+			</if>
+			<if test="studentId != null">
+				user_id_ = #{studentId}
+			</if>
+			<if test="title != null">
+				title_ = #{title}
+			</if>
+			<if test="search != null">
+				title_ like concat('%',#{search},'%') or u.username_ like concat('%',#{search},'%')
+			</if>
+			<if test="submitStartTime != null">
+				AND eer.create_time_ &gt;= #{submitStartTime}
+			</if>
+			<if test="submitEndTime != null">
+				AND eer.create_time_ &lt;= #{submitEndTime}
+			</if>
+		</where>
+	</sql>
 	
 	<!-- 根据主键查询一条记录 -->
 	<select id="get" resultMap="ExtracurricularExercisesReply" >
@@ -96,13 +125,19 @@
 	
 	<!-- 分页查询 -->
 	<select id="queryPage" resultMap="ExtracurricularExercisesReply" parameterType="map">
-		SELECT * FROM extracurricular_exercises_reply ORDER BY id_ <include refid="global.limit"/>
+		SELECT eer.*,u.username_,ee.title_ FROM extracurricular_exercises_reply eer left join extracurricular_exercises ee on eer.extracurricular_exercises_id_ = ee.id_
+		left join sys_user u on eer.user_id_ = u.id_
+		<include refid="queryPageCondition"/>
+		 ORDER BY eer.id_ <include refid="global.limit"/>
 	</select>
 	
 	<!-- 查询当前表的总记录数 -->
 	<select id="queryCount" resultType="int">
-		SELECT COUNT(*) FROM extracurricular_exercises_reply
+		SELECT COUNT(eer.id_) FROM extracurricular_exercises_reply eer left join extracurricular_exercises ee on eer.extracurricular_exercises_id_ = ee.id_
+		left join sys_user u on eer.user_id_ = u.id_
+		<include refid="queryPageCondition"/>
 	</select>
+	
 	<select id="findExtraExerciseStudents" resultMap="ExtraExerciseStudentsDto">
 		SELECT
 			eer.*,
@@ -115,11 +150,20 @@
 			AND su.username_ LIKE CONCAT('%',#{studentName},'%')
 		</if>
 	</select>
+
+	<select id="findExtraExerciseStudentsByExtraExercises" resultMap="ExtracurricularExercisesReply">
+		SELECT * FROM extracurricular_exercises_reply WHERE extracurricular_exercises_id_ IN
+		<foreach collection="extraExerciseIds" item="extraExerciseId" open="(" close=")" separator=",">
+			#{extraExerciseId}
+		</foreach>
+	</select>
+
 	<select id="findExtraExerciseReply" resultMap="ExtraExerciseStudentsDto">
 		SELECT
 			eer.*,
 			ee.title_,
 			ee.content_,
+			ee.expire_date_,
 			ee.teacher_id_,
 			su.username_ student_name_
 		FROM
@@ -132,24 +176,26 @@
 
 	<sql id="queryStudentExtraExercisesCondition">
 		<where>
-			<if test="teacherId!=null">
-				user_id_=#{studentId}
+			<if test="studentId!=null">
+				AND eer.user_id_=#{studentId}
 			</if>
 			<if test="createTime!=null">
-				DATE_FORMAT(create_time_, '%Y-%m-%d') = DATE_FORMAT(#{createTime}, '%Y-%m-%d')
+				AND DATE_FORMAT(eer.create_time_, '%Y-%m') = DATE_FORMAT(#{createTime}, '%Y-%m')
 			</if>
 		</where>
 	</sql>
 	<select id="countStudentExtraExercises" resultType="int">
-		SELECT COUNT(id_) FROM extracurricular_exercises_reply
+		SELECT COUNT(id_) FROM extracurricular_exercises_reply eer
 		<include refid="queryStudentExtraExercisesCondition"/>
 	</select>
 	<select id="findStudentExtraExercises" resultMap="ExtraExerciseStudentsDto">
 		SELECT
 			eer.*,
+			ee.title_,
+			ee.expire_date_,
 			ee.teacher_id_,
 			tea.real_name_ teacher_name_,
-			su.student_name_
+			su.username_ student_name_
 		FROM
 			extracurricular_exercises_reply eer
 			LEFT JOIN extracurricular_exercises ee ON ee.id_=eer.extracurricular_exercises_id_

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

@@ -228,7 +228,7 @@
 
     <sql id="practiceGroupQueryCondition">
         <where>
-            pg.group_status_='NORMAL'
+            pg.group_status_ IN ('NORMAL', 'FINISH')
             <if test="hasEducationalTeacherId != null and hasEducationalTeacherId == true">
                 AND pg.educational_teacher_id_ IS NOT NULL
             </if>
@@ -247,11 +247,14 @@
             <if test="educationalTeacherId!=null">
                 AND pg.educational_teacher_id_=#{educationalTeacherId}
             </if>
-            <if test="firstOrRenew != null and firstOrRenew == true">
-                AND pg.be_renew_group_id_ IS NULL
+            <if test="type != null and type == 1">
+                AND pg.be_renew_group_id_ IS NULL AND pg.buy_months_ IS NOT NULL
             </if>
-            <if test="firstOrRenew != null and firstOrRenew == false">
-                AND pg.be_renew_group_id_ IS NOT NULL
+            <if test="type != null and type == 0">
+                AND pg.be_renew_group_id_ IS NOT NULL AND pg.buy_months_ IS NOT NULL
+            </if>
+            <if test="type != null and type == 2">
+                AND pg.buy_months_ IS NULL
             </if>
         </where>
     </sql>

+ 15 - 9
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -16,6 +16,7 @@ import com.ym.mec.biz.dal.dao.CourseScheduleDao;
 import com.ym.mec.biz.dal.dao.TeacherDao;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.Teacher;
+import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.SignStatusEnum;
 import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
 import com.ym.mec.biz.service.StudentAttendanceService;
@@ -99,7 +100,8 @@ public class RoomServiceImpl implements RoomService {
 
         log.info("joinRoom: roomId={}, userName={}, isAudience={}, isDisableCamera={}", roomId, userName, isAudience, isDisableCamera);
 
-        String userId = sysUserFeignService.queryUserInfo().getId().toString();
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        String userId = sysUser.getId().toString();
         Teacher teacher = teacherDao.get(Integer.parseInt(userId));
         CourseSchedule courseSchedule = courseScheduleDao.get(Long.parseLong(roomId));
         try {
@@ -111,7 +113,11 @@ public class RoomServiceImpl implements RoomService {
         }catch (Exception e){
             e.printStackTrace();
         }
-        roomId = "DAYA" + roomId;
+        if(courseSchedule.getGroupType() == GroupType.COMM){
+            roomId = "I" + roomId;
+        }else {
+            roomId = "S" + roomId;
+        }
         String display = "";
         Date curTime = DateTimeUtils.currentUTC();
         List<Room> roomList = roomDao.findByRid(roomId);
@@ -252,12 +258,12 @@ public class RoomServiceImpl implements RoomService {
         SysUser user = sysUserFeignService.queryUserInfo();
         String userId = user.getId().toString();
         Teacher teacher = teacherDao.get(user.getId());
-        CourseSchedule courseSchedule = courseScheduleDao.get(Long.parseLong(roomId.substring(4)));
+        CourseSchedule courseSchedule = courseScheduleDao.get(Long.parseLong(roomId.substring(1)));
         try {
             if(teacher != null && teacher.getId().equals(courseSchedule.getActualTeacherId())){
-                teacherAttendanceService.addTeacherAttendanceRecord(Integer.parseInt(roomId.substring(4)),user.getId(), SignStatusEnum.SIGN_OUT,true);
+                teacherAttendanceService.addTeacherAttendanceRecord(Integer.parseInt(roomId.substring(1)),user.getId(), SignStatusEnum.SIGN_OUT,true);
             }else {
-                studentAttendanceService.addStudentAttendanceRecord(Integer.parseInt(roomId.substring(4)),user.getId(), StudentAttendanceStatusEnum.NORMAL,SignStatusEnum.SIGN_OUT);
+                studentAttendanceService.addStudentAttendanceRecord(Integer.parseInt(roomId.substring(1)),user.getId(), StudentAttendanceStatusEnum.NORMAL,SignStatusEnum.SIGN_OUT);
             }
         }catch (Exception e){
             e.printStackTrace();
@@ -1141,12 +1147,12 @@ public class RoomServiceImpl implements RoomService {
 //            SysUser sysUser = sysUserFeignService.queryUserById(Integer.parseInt(userId));
             SysUser sysUser = teacherDao.getUser(Integer.parseInt(userId));
             Teacher teacher = teacherDao.get(sysUser.getId());
-            CourseSchedule courseSchedule = courseScheduleDao.get(Long.parseLong(roomId.substring(4)));
+            CourseSchedule courseSchedule = courseScheduleDao.get(Long.parseLong(roomId.substring(1)));
             try {
                 if(teacher != null && teacher.getId().equals(courseSchedule.getActualTeacherId())){
-                    teacherAttendanceService.addTeacherAttendanceRecord(Integer.parseInt(roomId.substring(4)),Integer.parseInt(userId), SignStatusEnum.SIGN_OUT,true);
+                    teacherAttendanceService.addTeacherAttendanceRecord(Integer.parseInt(roomId.substring(1)),Integer.parseInt(userId), SignStatusEnum.SIGN_OUT,true);
                 }else {
-                    studentAttendanceService.addStudentAttendanceRecord(Integer.parseInt(roomId.substring(4)),Integer.parseInt(userId), StudentAttendanceStatusEnum.NORMAL,SignStatusEnum.SIGN_OUT);
+                    studentAttendanceService.addStudentAttendanceRecord(Integer.parseInt(roomId.substring(1)),Integer.parseInt(userId), StudentAttendanceStatusEnum.NORMAL,SignStatusEnum.SIGN_OUT);
                 }
             }catch (Exception e){
                 e.printStackTrace();
@@ -1246,4 +1252,4 @@ public class RoomServiceImpl implements RoomService {
         }
         return result;
     }
-}
+}

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

@@ -53,7 +53,7 @@ public class PracticeGroupController extends BaseController {
     @Autowired
     private CourseScheduleEvaluateDao courseScheduleEvaluateDao;
 
-    private static final Set<Integer> ENABLE_APPLY_ORGANIDS = new HashSet<>(Arrays.asList(new Integer[]{1, 43, 47}));
+    private static final Set<Integer> ENABLE_APPLY_ORGANIDS = new HashSet<>(Arrays.asList(new Integer[]{28,34,37}));
 
     @ApiOperation("获取学生的陪练课")
     @GetMapping(value = "/findUserPracticeCourses")

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

@@ -83,12 +83,12 @@ public class StudentCourseHomeworkController extends BaseController {
 
     @ApiOperation(value = "获取学生作业界面详细信息-公用")
     @GetMapping(value = "/findCourseHomeworkStudentDetailPublic")
-    public Object findCourseHomeworkStudentDetailPublic(Long courseScheduleID, boolean isExtra) {
+    public Object findCourseHomeworkStudentDetailPublic(Long courseScheduleID, boolean extra) {
         SysUser user = sysUserFeignService.queryUserInfo();
         if(Objects.isNull(user)){
             return failed(HttpStatus.FORBIDDEN,"请登录");
         }
-        if(!isExtra){
+        if(!extra){
             return succeed(studentCourseHomeworkService.findCourseHomeworkStudentDetail(courseScheduleID,user.getId().longValue()));
         }else{
             return succeed(extracurricularExercisesReplyService.findStudentExtraExerciseDetail(courseScheduleID));

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

@@ -58,8 +58,8 @@ public class CourseHomeworkController extends BaseController {
 
     @ApiOperation(value = "根据课程计划获取需要交作业的学生-公用")
     @GetMapping("/findCourseStudentsPublic")
-    public Object findCourseStudentsPublic(Long courseScheduleId,String userName, boolean isExtra){
-        if(!isExtra){
+    public Object findCourseStudentsPublic(Long courseScheduleId,String userName, boolean extra){
+        if(!extra){
             return succeed(studentCourseHomeworkService.findStudentCourseHomeworkByCourse(courseScheduleId,userName));
         }else{
             return succeed(extracurricularExercisesReplyService.findExtraExerciseStudents(courseScheduleId,userName));
@@ -85,12 +85,12 @@ public class CourseHomeworkController extends BaseController {
 
     @ApiOperation(value = "获取学生作业界面详细信息-公用")
     @GetMapping(value = "/findCourseHomeworkStudentDetailPublic")
-    public Object findCourseHomeworkStudentDetailPublic(Long courseScheduleID,Long userId, boolean isExtra){
+    public Object findCourseHomeworkStudentDetailPublic(Long courseScheduleID,Long userId, boolean extra){
         StudentCourseHomework studentCourseHomework1 = studentCourseHomeworkService.get(courseScheduleID);
         if(Objects.isNull(studentCourseHomework1)){
             return failed("作业不存在");
         }
-        if(!isExtra){
+        if(!extra){
             CourseHomeworkStudentDetailDto courseHomeworkStudentDetail = studentCourseHomeworkService.findCourseHomeworkStudentDetail(studentCourseHomework1.getCourseScheduleId(), userId);
             if(Objects.nonNull(courseHomeworkStudentDetail)){
                 StudentCourseHomework studentCourseHomework=new StudentCourseHomework();

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

@@ -73,7 +73,7 @@ public class TeacherCourseHomeworkReplyController extends BaseController {
     }
 
     @ApiOperation(value = "回复查询-公用")
-    @PostMapping("/queryPagePublic")
+    @GetMapping("/queryPagePublic")
     public Object queryPagePublic(StudentCourseHomeworkReplyQueryInfo queryInfo){
         if(!queryInfo.isExtra()){
             return succeed(studentCourseHomeworkReplyService.queryPage(queryInfo));

+ 4 - 3
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -289,11 +289,12 @@ public class ExportController extends BaseController {
         }
         List<CourseScheduleEndDto> rows = scheduleService.endFindCourseSchedules(queryInfo).getRows();
         try {
-            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部名称", "课程编号", "开始时间", "结束时间", "班级名称", "班级声部", "课程名称", "课程类型", "教学模式",
-                    "教学点", "课程状态", "是否点名", "指导老师", "学员编号", "签到时间", "签退时间", "签到备注"}, new String[]{
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部名称", "课程编号", "开始时间", "结束时间",
+                    "班级名称", "班级声部", "课程名称", "课程类型", "教学模式",
+                    "教学点", "课程状态", "是否点名", "指导老师", "学员编号", "签到时间", "签退时间", "签到状态", "签退状态", "签到备注"}, new String[]{
                     "organName", "id", "startClassTime", "endClassTime", "classGroupName", "subjectName", "name",
                     "groupType.desc", "teachMode.msg", "schoolName", "status.msg", "isCallNames.msg", "teacherName", "studentId", "signInTime",
-                    "signOutTime", "remark"}, rows);
+                    "signOutTime","signInStatusEnum.msg","signOutStatusEnum.msg", "remark"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
             response.flushBuffer();

+ 43 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ExtracurricularExercisesController.java

@@ -0,0 +1,43 @@
+package com.ym.mec.web.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+import java.util.Objects;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+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;
+
+@Api(tags = "课外训练服务")
+@RequestMapping("extracurricularExercises")
+@RestController
+public class ExtracurricularExercisesController extends BaseController {
+
+    @Autowired
+    private ExtracurricularExercisesService extracurricularExercisesService;
+    @Autowired
+    private ExtracurricularExercisesReplyService extracurricularExercisesReplyService;
+
+    @ApiOperation(value = "获取课外训练列表")
+    @GetMapping("/queryPageList")
+    private HttpResponseResult findExtraExercilses(ExtraExercilseQueryInfo queryInfo){
+        return succeed(extracurricularExercisesService.queryPage(queryInfo));
+    }
+
+    @ApiOperation(value = "获取课外训练详情")
+    @GetMapping("/findStudentExtraExerciseDetail")
+    private HttpResponseResult findStudentExtraExerciseDetail(Long studentExerciseId){
+        if(Objects.isNull(studentExerciseId)){
+            return failed("请选择课外训练作业");
+        }
+        return succeed(extracurricularExercisesReplyService.findStudentExtraExerciseDetail(studentExerciseId));
+    }
+}

+ 29 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ExtracurricularExercisesReplyController.java

@@ -0,0 +1,29 @@
+package com.ym.mec.web.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.ym.mec.biz.dal.page.ExtraExercilseReplyQueryInfo;
+import com.ym.mec.biz.service.ExtracurricularExercisesReplyService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+
+@Api(tags = "课外训练学生作业服务")
+@RequestMapping("extracurricularExercisesReply")
+@RestController
+public class ExtracurricularExercisesReplyController extends BaseController {
+
+    @Autowired
+    private ExtracurricularExercisesReplyService extracurricularExercisesReplyService;
+
+    @ApiOperation(value = "获取课外训练作业列表")
+    @GetMapping("/queryPageList")
+    private HttpResponseResult findExtraExercilses(ExtraExercilseReplyQueryInfo queryInfo){
+        return succeed(extracurricularExercisesReplyService.queryPage(queryInfo));
+    }
+}