Browse Source

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

zouxuan 5 years ago
parent
commit
d08558e804

+ 17 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/PracticeGroupDao.java

@@ -25,6 +25,15 @@ public interface PracticeGroupDao extends com.ym.mec.common.dal.BaseDAO<Long, Pr
                                                             @Param("endDate") Date endDate);
 
     /**
+     * @describe 批量更新
+     * @author Joburgess
+     * @date 2020/2/23
+     * @param groups:
+     * @return int
+     */
+    int batchUpdate(@Param("groups") List<PracticeGroup> groups);
+
+    /**
      * @describe 统计用户的申请记录
      * @author Joburgess
      * @date 2020/2/3
@@ -101,4 +110,12 @@ public interface PracticeGroupDao extends com.ym.mec.common.dal.BaseDAO<Long, Pr
      * @return java.util.List<com.ym.mec.biz.dal.dto.PracticeCourseDto>
      */
     List<PracticeCourseDto> findUserBuyPracticeGroups(@Param("userId") Integer userId);
+
+    /**
+     * @describe 获取已经达到截至时间的陪练课程组
+     * @author Joburgess
+     * @date 2020/2/23
+     * @return java.util.List<com.ym.mec.biz.dal.entity.PracticeGroup>
+     */
+    List<PracticeGroup> findHistoryPracticeGroups();
 }

+ 22 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseListDto.java

@@ -75,6 +75,12 @@ public class CourseListDto {
 
     private String practiceRenewUrl;
 
+    @ApiModelProperty(value = "是否有陪练报告")
+    private Boolean hasReport = false;
+
+    @ApiModelProperty(value = "陪练报告地址")
+    private String studyReportUrl;
+
     public String getPracticeRenewUrl() {
         return practiceRenewUrl;
     }
@@ -269,4 +275,20 @@ public class CourseListDto {
     public void setTeachMode(String teachMode) {
         this.teachMode = teachMode;
     }
+
+    public Boolean getHasReport() {
+        return hasReport;
+    }
+
+    public void setHasReport(Boolean hasReport) {
+        this.hasReport = hasReport;
+    }
+
+    public String getStudyReportUrl() {
+        return studyReportUrl;
+    }
+
+    public void setStudyReportUrl(String studyReportUrl) {
+        this.studyReportUrl = studyReportUrl;
+    }
 }

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/PracticeGroupService.java

@@ -214,4 +214,13 @@ public interface PracticeGroupService extends BaseService<Long, PracticeGroup> {
 	 * @return com.ym.mec.common.entity.HttpResponseResult
 	 */
 	HttpResponseResult repay(Integer userId,Integer practiceGroupId);
+
+	/**
+	 * @describe 更新历史陪练课程组状态
+	 * @author Joburgess
+	 * @date 2020/2/23
+	 * @param :
+	 * @return void
+	 */
+	void updateHistoryPracticeGroupStatus();
 }

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -609,6 +609,10 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         Set<String> practiceGroupId = practiceCourse.stream().map(e -> e.getPracticeId()).collect(Collectors.toSet());
         //获取陪练课学生名字
         Map<String, String> practiceStuNames = MapUtil.convertIntegerMap(classGroupDao.findVipStuNames(StringUtils.join(practiceGroupId, ","),"PRACTICE"));
+        //获取有陪练报告的课程组
+        List<Integer> classGroupIds = practiceCourse.stream().map(e -> e.getClassGroupId()).collect(Collectors.toList());
+        List<CourseScheduleEvaluate> courseScheduleEvaluates = courseScheduleEvaluateDao.findByClassGroupIds(classGroupIds);
+        Map<Integer, Long> reportMap = courseScheduleEvaluates.stream().collect(Collectors.toMap(CourseScheduleEvaluate::getClassGroupId, CourseScheduleEvaluate::getId));
 
         Set<String> musicGroupId = musicCourse.stream().map(e -> e.getMusicId()).collect(Collectors.toSet());
 //        Set<String> vipGroupId = vipCourses.stream().map(e -> e.getVipId()).collect(Collectors.toSet());
@@ -663,6 +667,11 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             if(ClassGroupTypeEnum.PRACTICE == e.getType()){
                 e.setStudentNames(practiceStuNames.get(e.getPracticeId()));
                 e.setPracticeRenewUrl(practiceRenewUrlConfig.getParanValue());
+                if(reportMap.containsKey(e.getClassGroupId())){
+                    e.setHasReport(true);
+                    String baseUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
+                    e.setStudyReportUrl(baseUrl + "/#/reportDetail?classGroupId=" + e.getClassGroupId());
+                }
             }
             if (ClassGroupTypeEnum.VIP == e.getType()) {
                 e.setStudentNames(vipStuNames.get(e.getVipId()));

+ 7 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -1781,10 +1781,13 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 					}
 				}
 			}
-			
-			if ((newCourseSchedule.getStatus() != oldCourseSchedule.getStatus() && newCourseSchedule.getStatus() == CourseStatusEnum.NOT_START)) {
-				//如果已结束修改成了未开始,需要更新学生考勤记录
-				studentAttendanceDao.deleteStudentAttendancesByCourse(courseScheduleId);
+
+			if(newCourseSchedule.getStatus() == CourseStatusEnum.NOT_START){
+                //如果已结束修改成了未开始,需要更新学生考勤记录
+                studentAttendanceDao.deleteStudentAttendancesByCourse(courseScheduleId);
+            }
+
+            if ((newCourseSchedule.getStatus() != oldCourseSchedule.getStatus() && newCourseSchedule.getStatus() == CourseStatusEnum.NOT_START)) {
 				
 				if(newCourseSchedule.getGroupType() == GroupType.MUSIC){
 					//清理课程作业

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

@@ -2135,7 +2135,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
     @Override
     public PracticeGroup findUserLatestPracticeGroup(Integer userId, Long groupId) {
         if(Objects.isNull(groupId)){
-            throw new BizException("请选择续费的课程");
+            throw new BizException("请选择需要续费的课程");
         }
         Date now=new Date();
         PracticeGroupDto userPracticeGroup = practiceGroupDao.findUserPracticeGroup2(userId, groupId);
@@ -2143,7 +2143,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
             throw new BizException("需要续费的课程组不存在");
         }
         if(userPracticeGroup.getCoursesExpireDate().before(now)){
-            throw new BizException("此课程组已超过可续费期限");
+            throw new BizException("当前课程组已经无法续费,请选择购买");
         }
         return userPracticeGroup;
     }
@@ -2642,12 +2642,12 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         LocalDate courseStartDay=LocalDate.now();
         if(practiceGroupBuyParams.isRenew()){
             if(Objects.isNull(practiceGroupBuyParams.getGroupId())){
-                return BaseController.failed(HttpStatus.EXPECTATION_FAILED, "请选择续费的课程");
+                return BaseController.failed(HttpStatus.EXPECTATION_FAILED, "请选择需要续费的课程");
             }
             PracticeGroup userLatestPracticeGroup = practiceGroupDao.findUserPracticeGroup(practiceGroupBuyParams.getStudentId(),practiceGroupBuyParams.getGroupId());
             if(Objects.nonNull(userLatestPracticeGroup)){
                 if(userLatestPracticeGroup.getCoursesExpireDate().before(now)){
-                    throw new BizException("此课程组已超过可续费期限");
+                    throw new BizException("当前课程组已经无法续费,请选择购买");
                 }
                 LocalDate lastExpiredDay=LocalDateTime.ofInstant(userLatestPracticeGroup.getCoursesExpireDate().toInstant(),DateUtil.zoneId).toLocalDate();
                 if(Objects.nonNull(lastExpiredDay)&&lastExpiredDay.compareTo(courseStartDay)>=0){
@@ -2938,7 +2938,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
 
             return BaseController.succeed(payMap);
         } catch (Exception e) {
-            throw new BizException("调用支付接口出错", e);
+            throw new BizException("订单提交超时,请尝试重新提交购买");
         }
     }
 
@@ -3045,12 +3045,12 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
             LOGGER.error("小课[{}]购买协议错误:{}",order.getMusicGroupId(),e.getMessage(),e.getMessage());
         }
 
-//        List<ImGroupMember> imGroupMemberList = new ArrayList<>();
-//        imGroupMemberList.add(new ImGroupMember(practiceGroup.getUserId().toString()));
-//        imGroupMemberList.add(new ImGroupMember(practiceGroup.getStudentId().toString()));
-//        ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
-//        // 创建群组
-//        imFeignService.groupCreate(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
+        List<ImGroupMember> imGroupMemberList = new ArrayList<>();
+        imGroupMemberList.add(new ImGroupMember(practiceGroup.getUserId().toString()));
+        imGroupMemberList.add(new ImGroupMember(practiceGroup.getStudentId().toString()));
+        ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
+        // 创建群组
+        imFeignService.groupCreate(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
     }
 
     @Override
@@ -3127,7 +3127,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         Map<DealStatusEnum, List<StudentPaymentOrder>> statusOrderMap = userGroupOrders.stream().collect(Collectors.groupingBy(StudentPaymentOrder::getStatus));
         List<StudentPaymentOrder> successOrders=statusOrderMap.get(DealStatusEnum.SUCCESS);
         if(!CollectionUtils.isEmpty(successOrders)&&successOrders.size()>0){
-            throw new BizException("此课程组存在支付成功的订单");
+            throw new BizException("该订单已经支付成功,请勿重复购买");
         }
 
         StudentPaymentOrder latestOrder=userGroupOrders.stream().max(Comparator.comparing(StudentPaymentOrder::getCreateTime)).get();
@@ -3137,7 +3137,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
 
         List<StudentPaymentOrder> ingOrders = statusOrderMap.get(DealStatusEnum.ING);
         if(CollectionUtils.isEmpty(ingOrders)||ingOrders.size()<=0){
-            throw new BizException("此课程组不存在进行中的订单");
+            throw new BizException("改订单支付失败,请重新购买");
         }else{
             for (StudentPaymentOrder ingOrder : ingOrders) {
                 ingOrder.setStatus(DealStatusEnum.CLOSE);
@@ -3179,7 +3179,20 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
 
             return BaseController.succeed(payMap);
         } catch (Exception e) {
-            throw new BizException("调用支付接口出错", e);
+            throw new BizException("订单提交超时,请尝试重新提交购买");
+        }
+    }
+
+    @Override
+    public void updateHistoryPracticeGroupStatus() {
+        List<PracticeGroup> historyPracticeGroups = practiceGroupDao.findHistoryPracticeGroups();
+        List<PracticeGroup> needUpdateGroups = new ArrayList<>();
+        for (PracticeGroup historyPracticeGroup : historyPracticeGroups) {
+            if(historyPracticeGroup.getGroupStatus().equals(GroupStatusEnum.NORMAL)){
+                historyPracticeGroup.setGroupStatus(GroupStatusEnum.FINISH);
+                needUpdateGroups.add(historyPracticeGroup);
+            }
         }
+        practiceGroupDao.batchUpdate(needUpdateGroups);
     }
 }

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

@@ -62,6 +62,19 @@
 		WHERE id_ = #{id}
 	</update>
 
+	<update id="batchUpdate">
+		<foreach collection="groups" item="group" separator=";">
+			UPDATE practice_group
+			<set>
+				<if test="groupStatus!=null">
+					group_status_=#{group.groupStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+				</if>
+				update_time_ = NOW()
+			</set>
+			WHERE id_ = #{group.id}
+		</foreach>
+	</update>
+
 	<!-- 根据主键查询一条记录 -->
 	<select id="get" resultMap="PracticeGroup">
 		SELECT * FROM practice_group WHERE id_ = #{id}
@@ -146,6 +159,9 @@
 		LEFT JOIN sys_user su ON pg.user_id_ = su.id_
 		WHERE pg.student_id_=#{userId} AND pg.id_=#{groupId};
 	</select>
+    <select id="findHistoryPracticeGroups" resultMap="PracticeGroup">
+		SELECT * FROM practice_group WHERE courses_expire_date_ &lt; NOW()
+    </select>
 
     <sql id="practiceGroupQueryCondition">
 		<where>

+ 4 - 0
mec-client-api/src/main/java/com/ym/mec/task/TaskRemoteService.java

@@ -71,4 +71,8 @@ public interface TaskRemoteService {
 	@GetMapping("task/teacherCourseStatistic")
 	// 老师课酬统计
 	public void teacherCourseStatistic();
+
+	//更新历史陪练课至已结束
+	@GetMapping("/updateHistoryPracticeGroupStatus")
+	public void updateHistoryPracticeGroupStatus();
 }

+ 5 - 0
mec-client-api/src/main/java/com/ym/mec/task/fallback/TaskRemoteServiceFallback.java

@@ -90,4 +90,9 @@ public class TaskRemoteServiceFallback implements TaskRemoteService {
 	public void teacherCourseStatistic() {
 		logger.info("统计老师课酬失败");
 	}
+
+	@Override
+	public void updateHistoryPracticeGroupStatus() {
+		logger.info("历史陪练课状态更新失败");
+	}
 }

+ 21 - 0
mec-task/src/main/java/com/ym/mec/task/jobs/UpdateHistoryPracticeGroupStatusTask.java

@@ -0,0 +1,21 @@
+package com.ym.mec.task.jobs;
+
+import com.ym.mec.task.TaskRemoteService;
+import com.ym.mec.task.core.BaseTask;
+import com.ym.mec.task.core.TaskException;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * @Author Joburgess
+ * @Date 2020/2/23
+ */
+public class UpdateHistoryPracticeGroupStatusTask extends BaseTask {
+
+    @Autowired
+    private TaskRemoteService taskRemoteService;
+
+    @Override
+    public void execute() throws TaskException {
+        taskRemoteService.updateHistoryPracticeGroupStatus();
+    }
+}

+ 9 - 0
mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java

@@ -39,6 +39,9 @@ public class TaskController extends BaseController {
 	@Autowired
 	private TeacherCourseStatisticsService teacherCourseStatisticsService;
 
+	@Autowired
+	private PracticeGroupService practiceGroupService;
+
 	@GetMapping("/refreshPaymentFeeStatus")
 	// 刷新付费状态
 	public void refreshPaymentFeeStatus() {
@@ -135,4 +138,10 @@ public class TaskController extends BaseController {
 		teacherCourseStatisticsService.teacherCourseStatistic();
 	}
 
+	//更新历史陪练课至已结束
+	@GetMapping("/updateHistoryPracticeGroupStatus")
+	public void updateHistoryPracticeGroupStatus(){
+		practiceGroupService.updateHistoryPracticeGroupStatus();
+	}
+
 }