zouxuan 7 hónapja
szülő
commit
0bc432cd88

+ 34 - 0
cooleshow-app/src/main/java/com/yonge/cooleshow/student/controller/StudentIndexController.java

@@ -0,0 +1,34 @@
+package com.yonge.cooleshow.student.controller;
+
+import com.yonge.cooleshow.biz.dal.service.StudentService;
+import com.yonge.cooleshow.biz.dal.service.SysUserService;
+import com.yonge.cooleshow.biz.dal.wrapper.StudentIndexWrapper;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+@Api(tags = "学生首页")
+@RestController
+@RequestMapping("${app-config.url.student:}/index")
+public class StudentIndexController extends BaseController {
+
+    @Resource
+    private SysUserService sysUserService;
+    @Resource
+    private StudentService studentService;
+
+
+    @ApiOperation(value = "首页-数据汇总")
+    @GetMapping("/summary")
+    public HttpResponseResult<StudentIndexWrapper.SummaryDto> summary() {
+        Long userId = sysUserService.getUserId();
+        return succeed(studentService.indexSummary(userId));
+    }
+
+}

+ 6 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleDao.java

@@ -20,6 +20,7 @@ import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
 
 
 import java.math.BigDecimal;
 import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
 import java.util.Set;
 import java.util.Set;
@@ -252,4 +253,9 @@ public interface CourseScheduleDao extends BaseMapper<CourseSchedule> {
      */
      */
     IPage<UserBindingCourseWrapper> selectBindingUserCoursePage(@Param(
     IPage<UserBindingCourseWrapper> selectBindingUserCoursePage(@Param(
             "page") IPage<UserBindingCourseWrapper> page, @Param("query") TeacherBindingUserQueryInfo.BindingStudentCourseQuery query);
             "page") IPage<UserBindingCourseWrapper> page, @Param("query") TeacherBindingUserQueryInfo.BindingStudentCourseQuery query);
+
+    Integer countStudentOverCourse(@Param("userId") Long userId,
+                                @Param("monday") Date monday,
+                                @Param("sunday") Date sunday,
+                                @Param("courseStatus") String courseStatus);
 }
 }

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/SysMusicCompareRecordDao.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.dao;
 package com.yonge.cooleshow.biz.dal.dao;
 
 
+import java.util.Date;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
 
 
@@ -68,4 +69,6 @@ public interface SysMusicCompareRecordDao extends BaseDAO<Long, SysMusicCompareR
 												   @Param("monday") String monday);
 												   @Param("monday") String monday);
 
 
     List<SysMusicCompareRecord> selectByIds(@Param("musicPracticeRecordIds") List<Long> musicPracticeRecordIds);
     List<SysMusicCompareRecord> selectByIds(@Param("musicPracticeRecordIds") List<Long> musicPracticeRecordIds);
+
+    Long countStudentPracticeTime(@Param("userId") Long userId, @Param("monday") Date monday, @Param("sunday") Date sunday);
 }
 }

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/StudentService.java

@@ -12,6 +12,7 @@ import com.yonge.cooleshow.biz.dal.vo.MyFollow;
 import com.yonge.cooleshow.biz.dal.vo.StudentHomeVo;
 import com.yonge.cooleshow.biz.dal.vo.StudentHomeVo;
 import com.yonge.cooleshow.biz.dal.vo.StudentVo;
 import com.yonge.cooleshow.biz.dal.vo.StudentVo;
 import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
 import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
+import com.yonge.cooleshow.biz.dal.wrapper.StudentIndexWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.StudentWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.StudentWrapper;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.toolset.utils.easyexcel.ExcelDataReaderProperty;
 import com.yonge.toolset.utils.easyexcel.ExcelDataReaderProperty;
@@ -140,4 +141,6 @@ public interface StudentService extends IService<Student> {
      * @return String
      * @return String
      */
      */
     String updateUserCustomerService(SysUser user);
     String updateUserCustomerService(SysUser user);
+
+    StudentIndexWrapper.SummaryDto indexSummary(Long userId);
 }
 }

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

@@ -31,6 +31,7 @@ import com.yonge.cooleshow.biz.dal.vo.MyFollow;
 import com.yonge.cooleshow.biz.dal.vo.StudentHomeVo;
 import com.yonge.cooleshow.biz.dal.vo.StudentHomeVo;
 import com.yonge.cooleshow.biz.dal.vo.StudentVo;
 import com.yonge.cooleshow.biz.dal.vo.StudentVo;
 import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
 import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
+import com.yonge.cooleshow.biz.dal.wrapper.StudentIndexWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.StudentWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.StudentWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.VipCardRecordWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.VipCardRecordWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.im.ImGroupWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.im.ImGroupWrapper;
@@ -135,6 +136,11 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
 
 
     @Autowired
     @Autowired
     private TenantGroupAlbumMapper tenantGroupAlbumMapper;
     private TenantGroupAlbumMapper tenantGroupAlbumMapper;
+    @Resource
+    private SysMusicCompareRecordService sysMusicCompareRecordService;
+    @Resource
+    private CourseScheduleService courseScheduleService;
+
     @Override
     @Override
     public StudentVo detail(Long userId) {
     public StudentVo detail(Long userId) {
         StudentVo detail = baseMapper.detail(userId);
         StudentVo detail = baseMapper.detail(userId);
@@ -1100,4 +1106,20 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
 
 
         return imCustomerServiceId;
         return imCustomerServiceId;
     }
     }
+
+    @Override
+    public StudentIndexWrapper.SummaryDto indexSummary(Long userId) {
+        Date now = new Date();
+        //获取学员本周练习时长
+        Date monday = DateUtil.getNextWeekMonday(now);
+        Date sunday = DateUtil.getNextWeekSunday(now);
+        StudentIndexWrapper.SummaryDto summaryDto = new StudentIndexWrapper.SummaryDto();
+        //统计学员本周练习时长
+        summaryDto.setRecordTime(sysMusicCompareRecordService.getDao().countStudentPracticeTime(userId, monday, sunday));
+        //统计本周以上课程数
+        summaryDto.setCourseCount(courseScheduleService.getDao().countStudentOverCourse(userId, monday, sunday,"ING,COMPLETE"));
+        //统计本周总课程数
+        summaryDto.setTotalCourseCount(courseScheduleService.getDao().countStudentOverCourse(userId, monday, sunday,null));
+        return summaryDto;
+    }
 }
 }

+ 28 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/StudentIndexWrapper.java

@@ -0,0 +1,28 @@
+package com.yonge.cooleshow.biz.dal.wrapper;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@ApiModel(value = "StudentIndexWrapper", description = "首页数据统计")
+public class StudentIndexWrapper {
+
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public static class SummaryDto{
+        @ApiModelProperty("练习总时长(秒)")
+        private Long recordTime;
+
+        @ApiModelProperty("本周已上课次数")
+        private Integer courseCount;
+
+        @ApiModelProperty("本周总课次")
+        private Integer totalCourseCount;
+	}
+
+}

+ 8 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -1006,4 +1006,12 @@
             and cssp.user_id_ =#{query.studentId}
             and cssp.user_id_ =#{query.studentId}
         </where>
         </where>
     </select>
     </select>
+    <select id="countStudentOverCourse">
+        select COUNT(DISTINCT cssp.course_id_) from course_schedule_student_payment cssp
+        left join course_schedule cs ON cs.id_ = cssp.course_id_
+        where cs.start_time_ BETWEEN #{monday} AND #{sunday} AND cssp.user_id_ = #{userId}
+        <if test="courseStatus != null and courseStatus != ''">
+            AND FIND_IN_SET(cs.status_,#{courseStatus})
+        </if>
+    </select>
 </mapper>
 </mapper>

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

@@ -556,6 +556,9 @@
             #{musicPracticeRecordId}
             #{musicPracticeRecordId}
         </foreach>
         </foreach>
     </select>
     </select>
+    <select id="countStudentPracticeTime" resultType="java.lang.Long">
+		SELECT SUM(play_time_) FROM sys_music_compare_record WHERE user_id_ = #{userId} AND create_time_ BETWEEN #{monday} AND #{sunday}
+	</select>
     <!--曲目练习统计-->
     <!--曲目练习统计-->
 
 
 </mapper>
 </mapper>