Prechádzať zdrojové kódy

Merge branch 'feature/1219_opt' of http://git.dayaedu.com/yonge/cooleshow into feature/1219_opt

刘俊驰 5 mesiacov pred
rodič
commit
f462664783

+ 4 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/CourseGroup.java

@@ -103,6 +103,10 @@ public class CourseGroup implements Serializable {
     @ApiModelProperty(value = "课程开始时间")
     private Date courseStartTime;
 
+    @TableField("course_end_time_")
+    @ApiModelProperty(value = "课程截止时间")
+    private Date courseEndTime;
+
     @TableField(value = "audit_version_")
     @ApiModelProperty(value = "是否审核时可见 (0:否  1:是)")
     private YesOrNoEnum auditVersion = YesOrNoEnum.NO;

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

@@ -1627,6 +1627,8 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
 
         courseGroup.setUpdatedTime(new Date());
         this.updateById(courseGroup);
+        //更新第一次和最后一次课时间
+        baseMapper.updateCourseStartTime(courseGroup.getId());
         // 小组课成课推送
         if (courseGroup.getType().equals(CourseScheduleEnum.GROUP.getCode())) {
             // 极光-消息推送-老师端-通知老师小组课程组成课

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

@@ -1309,6 +1309,8 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         UpdateWrapper<CourseGroup> warp = new UpdateWrapper<>();
         warp.set("status_", "ING").eq("id_", paymentList.get(0).getCourseGroupId());
         courseGroupService.update(warp);
+        //更新开课时间
+        courseGroupService.getDao().updateCourseStartTime(paymentList.get(0).getCourseGroupId());
 
         //查询趣纠课服务费
         String practiceServiceRateStr = sysConfigService.findConfigValue(SysConfigConstant.PRACTICE_SERVICE_FEE);
@@ -1505,18 +1507,16 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         List<Long> studentIds = studentPayments.stream().map(CourseScheduleStudentPayment::getUserId).collect(Collectors.toList());
         this.batchCheckStudentCourseTime(studentIds, timeList, CourseTimeEntity::getStartTime, CourseTimeEntity::getEndTime);
         baseMapper.courseAdjust(adjustVo);
-        if(StringUtils.equals("GROUP",schedule.getType())){
-            //更新开课时间
-            courseGroupService.getDao().updateCourseStartTime(schedule.getCourseGroupId());
-            //更新课程课次
-            List<CourseSchedule> courseSchedules = this.lambdaQuery()
-                    .eq(CourseSchedule::getCourseGroupId, schedule.getCourseGroupId())
-                    .orderByAsc(CourseSchedule::getStartTime).list();
-            courseSchedules.forEach(courseSchedule1 -> {
-                courseSchedule1.setClassNum(courseSchedules.indexOf(courseSchedule1)+1);
-            });
-            this.updateBatchById(courseSchedules);
-        }
+        //更新开课时间
+        courseGroupService.getDao().updateCourseStartTime(schedule.getCourseGroupId());
+        //更新课程课次
+        List<CourseSchedule> courseSchedules = this.lambdaQuery()
+                .eq(CourseSchedule::getCourseGroupId, schedule.getCourseGroupId())
+                .orderByAsc(CourseSchedule::getStartTime).list();
+        courseSchedules.forEach(courseSchedule1 -> {
+            courseSchedule1.setClassNum(courseSchedules.indexOf(courseSchedule1)+1);
+        });
+        this.updateBatchById(courseSchedules);
         // 课程调整后给学生发消息
         sendCourseAdjustMessage(teacherId,studentIds,adjustVo.getCourseId(),adjustVo.getStartTime(),oldStartTime);
     }
@@ -2362,6 +2362,8 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
                 courseScheduleStudentPaymentService.save(payment);
             }
         }
+        //更新第一次和最后一次课时间
+        courseGroupService.getDao().updateCourseStartTime(courseGroup.getId());
 
         //扣减piano_room_time
         DistributedLock.of(redissonClient)
@@ -2625,6 +2627,8 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
                 .set(CourseSchedule::getEndTime, endTime)
                 .set(CourseSchedule::getFreeEndTime, freeEndTime)
         );
+        //修改开课时间
+        courseGroupService.getDao().updateCourseStartTime(courseSchedule.getCourseGroupId());
 
         if (CollectionUtils.isNotEmpty(studentPayments)) {
             SysUser teacher = sysUserService.getByUserId(teacherId);

+ 9 - 15
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/HomeServiceImpl.java

@@ -398,22 +398,16 @@ public class HomeServiceImpl implements HomeService {
         String groupBy;
         List<String> dateList;
         Date startDate = DateUtil.strToDate(summarySearch.getStartTime(), DateUtil.DEFAULT_PATTERN);
-        if(StringUtils.equals(summarySearch.getStartTime(),summarySearch.getEndTime())){
-            groupBy = "%Y-%m-%d %H";
-            //获取当天的小时段
-            dateList = DateUtil.getHourList(startDate);
+        Date endDate = DateUtil.strToDate(summarySearch.getEndTime(), DateUtil.DEFAULT_PATTERN);
+        if(DateUtil.daysBetween(startDate,endDate) <= 31){
+            groupBy = "%Y-%m-%d";
+            dateList = DateUtil.getDayList(startDate,endDate);
+        }else if(DateUtil.monthsBetween(startDate,endDate) <= 12){
+            groupBy = "%Y-%m";
+            dateList = DateUtil.getMonthList(startDate,endDate);
         }else {
-            Date endDate = DateUtil.strToDate(summarySearch.getEndTime(), DateUtil.DEFAULT_PATTERN);
-            if(DateUtil.daysBetween(startDate,endDate) <= 31){
-                groupBy = "%Y-%m-%d";
-                dateList = DateUtil.getDayList(startDate,endDate);
-            }else if(DateUtil.monthsBetween(startDate,endDate) <= 12){
-                groupBy = "%Y-%m";
-                dateList = DateUtil.getMonthList(startDate,endDate);
-            }else {
-                groupBy = "%Y";
-                dateList = DateUtil.getYearList(startDate,endDate);
-            }
+            groupBy = "%Y";
+            dateList = DateUtil.getYearList(startDate,endDate);
         }
         //获取老师关联的学员
         List<Long> studentIds = teacherService.getDao().getStudentIds(summarySearch.getTeacherId(), summarySearch.getSubjectId(), summarySearch.getStartTime(), summarySearch.getEndTime());

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

@@ -426,6 +426,8 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
         UpdateWrapper<CourseGroup> warp = new UpdateWrapper<>();
         warp.set("status_", "ING").eq("id_", paymentList.get(0).getCourseGroupId());
         courseGroupService.update(warp);
+        //更新开课时间
+        courseGroupService.getDao().updateCourseStartTime(paymentList.get(0).getCourseGroupId());
 
         //查询服务费
         String practiceServiceRateStr = null;

+ 12 - 5
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseGroupMapper.xml

@@ -19,6 +19,7 @@
         <result column="mix_student_num_" jdbcType="INTEGER" property="mixStudentNum"/>
         <result column="max_student_num_" jdbcType="INTEGER" property="maxStudentNum"/>
         <result column="course_start_time_" jdbcType="TIMESTAMP" property="courseStartTime"/>
+        <result column="course_end_time_" jdbcType="TIMESTAMP" property="courseEndTime"/>
         <result column="created_by_" jdbcType="INTEGER" property="createdBy"/>
         <result column="created_time_" jdbcType="TIMESTAMP" property="createdTime"/>
         <result column="updated_by_" jdbcType="INTEGER" property="updatedBy"/>
@@ -34,20 +35,21 @@
         , type_, teacher_id_, name_, subject_id_, single_course_minutes_, course_num_,
         complete_course_num_, course_introduce_, course_price_, status_, sales_start_date_,
         sales_end_date_, background_pic_, mix_student_num_,max_student_num_,pre_student_num_, im_group_id_,
-        course_start_time_, created_by_, created_time_, updated_by_, updated_time_,reason_,course_plan_
+        course_start_time_,course_end_time_, created_by_, created_time_, updated_by_, updated_time_,reason_,course_plan_
     </sql>
 
     <insert id="insertBatch" keyColumn="id_" keyProperty="id" useGeneratedKeys="true"
             parameterType="com.yonge.cooleshow.biz.dal.entity.CourseGroup">
         insert into course_group(type_, teacher_id_, name_, subject_id_, single_course_minutes_, course_num_,
         complete_course_num_, course_introduce_, course_price_, status_, sales_start_date_, sales_end_date_, background_pic_,
-        mix_student_num_,max_student_num_,pre_student_num_,im_group_id_, course_start_time_, created_by_, created_time_, updated_by_, updated_time_,reason_,course_plan_)
+        mix_student_num_,max_student_num_,pre_student_num_,im_group_id_, course_start_time_, course_end_time_,
+                                 created_by_, created_time_, updated_by_, updated_time_,reason_,course_plan_)
         values
         <foreach collection="entities" item="entity" separator=",">
             (#{entity.type}, #{entity.teacherId}, #{entity.name}, #{entity.subjectId}, #{entity.singleCourseMinutes},
             #{entity.courseNum}, #{entity.completeCourseNum}, #{entity.courseIntroduce}, #{entity.coursePrice}, #{entity.status},
             #{entity.salesStartDate}, #{entity.salesEndDate}, #{entity.backgroundPic}, #{entity.mixStudentNum},#{entity.maxStudentNum},
-            #{entity.preStudentNum},#{entity.imGroupId},#{entity.courseStartTime}, #{entity.createdBy}, #{entity.createdTime}, #{entity.updatedBy},
+            #{entity.preStudentNum},#{entity.imGroupId},#{entity.courseStartTime},#{entity.courseEndTime}, #{entity.createdBy}, #{entity.createdTime}, #{entity.updatedBy},
             #{entity.updatedTime},#{entity.reason},#{entity.coursePlan})
         </foreach>
     </insert>
@@ -1127,7 +1129,12 @@
         where id_ = #{groupId} and lock_num_ + #{num} &lt;= max_student_num_ and lock_num_ + #{num} &gt;= 0
     </update>
     <update id="updateCourseStartTime">
-        update course_group set course_start_time_ =
-        (select MIN(start_time_) from course_schedule where course_group_id_ = #{groupId}) WHERE id_ = #{groupId}
+        update course_group cg
+            left join (
+            select course_group_id_,MIN(start_time_) start_time_,MAX(end_time_) end_time_ from course_schedule
+            where course_group_id_ = #{groupId}
+            group by course_group_id_) c ON c.course_group_id_ = cg.id_
+            set cg.course_start_time_ = c.start_time_,cg.course_end_time_ = c.end_time_
+        where c.course_group_id_ = cg.id_ AND cg.id_ = #{groupId}
     </update>
 </mapper>

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

@@ -517,15 +517,12 @@
     <select id="getStudentIds" resultType="java.lang.Long">
         select distinct cssp.user_id_ from course_group cg
         left join course_schedule_student_payment cssp ON cssp.course_group_id_ = cg.id_
-        <if test="startTime != null and startTime != ''">
-            left join course_schedule cs ON cssp.course_id_ = cs.id_
-        </if>
         <if test="subjectId != null">
             left join student st ON st.user_id_ = cssp.user_id_
         </if>
-        where cg.teacher_id_ = #{teacherId}
+        where cg.teacher_id_ = #{teacherId} AND cg.status_ IN ('ING','COMPLETE')
         <if test="startTime != null and startTime != ''">
-            AND cs.class_date_ BETWEEN #{startTime} AND #{endTime} AND cs.lock_ = 0
+            AND cg.course_start_time_ &lt;= CONCAT(#{endTime},'23:59:59') AND cg.course_end_time_ >= CONCAT(#{startTime},'00:00:00')
         </if>
         <if test="subjectId != null">
             and find_in_set(#{subjectId},st.subject_id_)