Browse Source

vip定制课

zouxuan 8 months ago
parent
commit
b4cd38c783

+ 24 - 20
cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherHomeController.java

@@ -1,21 +1,17 @@
 package com.yonge.cooleshow.teacher.controller;
 
-import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
-import com.yonge.cooleshow.auth.api.entity.SysUser;
-import com.yonge.cooleshow.biz.dal.service.CourseScheduleService;
-import com.yonge.cooleshow.biz.dal.service.MusicSheetService;
-import com.yonge.cooleshow.biz.dal.service.UserAccountRecordService;
+import com.yonge.cooleshow.biz.dal.service.*;
 import com.yonge.cooleshow.biz.dal.vo.PianoRoomTimeVo;
 import com.yonge.cooleshow.biz.dal.vo.TeacherHomeStatisticalVo;
+import com.yonge.cooleshow.biz.dal.wrapper.TeacherIndexWrapper;
 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.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 org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 import java.math.BigDecimal;
 
 /**
@@ -30,7 +26,7 @@ import java.math.BigDecimal;
 public class TeacherHomeController extends BaseController {
 
     @Autowired
-    private SysUserFeignService sysUserFeignService;
+    private SysUserService sysUserService;
 
     @Autowired
     private CourseScheduleService courseScheduleService;
@@ -41,35 +37,35 @@ public class TeacherHomeController extends BaseController {
     @Autowired
     private UserAccountRecordService userAccountRecordService;
 
+    @Resource
+    private SysMusicCompareRecordService sysMusicCompareRecordService;
+
     @ApiOperation(value = "首页统计数据")
     @GetMapping(value="/count")
     public HttpResponseResult<TeacherHomeStatisticalVo> countTeacherHome() {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null  || sysUser.getId() == null) {
-            return failed("用户信息获取失败");
-        }
+        Long userId = sysUserService.getUserId();
 
         // 我的课程
-        Integer courseSechedule  = courseScheduleService.getWeekNotStart(sysUser.getId());
+        Integer courseSechedule  = courseScheduleService.getWeekNotStart(userId);
 
         // 课后作业
-        Integer courseHomework = courseScheduleService.getHomeworkNotDecorate(sysUser.getId());
+        Integer courseHomework = courseScheduleService.getHomeworkNotDecorate(userId);
 
         // 课后评价
-        Integer courseScheduleReplied = courseScheduleService.getNotRepliedCourseSchedule(sysUser.getId());
+        Integer courseScheduleReplied = courseScheduleService.getNotRepliedCourseSchedule(userId);
 
         // 我的乐谱
-        Integer musicSheet = musicSheetService.getTeacherMusicSheetCount(sysUser.getId());
+        Integer musicSheet = musicSheetService.getTeacherMusicSheetCount(userId);
 
         // 我收到的评价
-        Integer studentReplied = courseScheduleService.getWeekStudentRepliedCourseSchedule(sysUser.getId());
+        Integer studentReplied = courseScheduleService.getWeekStudentRepliedCourseSchedule(userId);
 
         // 我的收入
-        BigDecimal decimal = userAccountRecordService.getMonthDecimal(sysUser.getId());
+        BigDecimal decimal = userAccountRecordService.getMonthDecimal(userId);
 
 
         // 琴房剩余时长
-        PianoRoomTimeVo pianoRoomTimeVo = courseScheduleService.selectRemainTime(sysUser.getId());
+        PianoRoomTimeVo pianoRoomTimeVo = courseScheduleService.selectRemainTime(userId);
 
         TeacherHomeStatisticalVo teacherHomeStatisticalVo = new TeacherHomeStatisticalVo();
         teacherHomeStatisticalVo.setCourseHomework(courseHomework);
@@ -82,6 +78,14 @@ public class TeacherHomeController extends BaseController {
         return succeed(teacherHomeStatisticalVo);
     }
 
+    @ApiOperation("首页练习数据统计")
+    @PostMapping(value = "/practice")
+    public HttpResponseResult<TeacherIndexWrapper.TeacherPracticeHome> practice(@RequestBody TeacherIndexWrapper.SummarySearch summarySearch) {
+        summarySearch.setTeacherId(sysUserService.getUserId());
+        return succeed(sysMusicCompareRecordService.getTeacherPracticeHome(summarySearch));
+    }
+
+
 
 
 }

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

@@ -15,6 +15,7 @@ import com.yonge.cooleshow.biz.dal.vo.MyFens;
 import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
 
 import com.yonge.cooleshow.biz.dal.wrapper.StatGroupWrapper;
+import com.yonge.cooleshow.biz.dal.wrapper.TeacherIndexWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.TenantInfoWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.teacher.TeacherWrapper;
 import org.apache.ibatis.annotations.Param;
@@ -132,4 +133,6 @@ public interface TeacherDao extends BaseMapper<Teacher> {
      * @return List<StatGroupWrapper>
      */
     List<StatGroupWrapper> countCustomerServiceMemberNum();
+
+    List<Long> getStudentIds(@Param("param") TeacherIndexWrapper.SummarySearch summarySearch);
 }

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

@@ -3,6 +3,7 @@ package com.yonge.cooleshow.biz.dal.service;
 import com.yonge.cooleshow.biz.dal.dao.SysMusicCompareRecordDao;
 import com.yonge.cooleshow.biz.dal.entity.SysMusicCompareRecord;
 import com.yonge.cooleshow.biz.dal.queryInfo.SysMusicCompareRecordQueryInfo;
+import com.yonge.cooleshow.biz.dal.wrapper.TeacherIndexWrapper;
 import com.yonge.toolset.base.page.PageInfo;
 import com.yonge.toolset.mybatis.service.BaseService;
 
@@ -63,4 +64,6 @@ public interface SysMusicCompareRecordService extends BaseService<Long, SysMusic
     SysMusicCompareRecordQueryInfo.StatDto rankingList(SysMusicCompareRecordQueryInfo.StudentCompareRecordQueryInfo queryInfo);
 
     Map<Long, SysMusicCompareRecord> getMapByIds(List<Long> musicPracticeRecordIds);
+
+    TeacherIndexWrapper.TeacherPracticeHome getTeacherPracticeHome(TeacherIndexWrapper.SummarySearch summarySearch);
 }

+ 24 - 10
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/SysMusicCompareRecordServiceImpl.java

@@ -14,6 +14,7 @@ import com.yonge.cooleshow.biz.dal.enums.IndexDataType;
 import com.yonge.cooleshow.biz.dal.queryInfo.SysMusicCompareRecordQueryInfo;
 import com.yonge.cooleshow.biz.dal.service.*;
 import com.yonge.cooleshow.biz.dal.wrapper.StatGroupWrapper;
+import com.yonge.cooleshow.biz.dal.wrapper.TeacherIndexWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.music.MusicCompareWrapper;
 import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.toolset.base.page.PageInfo;
@@ -31,6 +32,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.time.DayOfWeek;
 import java.time.LocalDate;
@@ -43,24 +45,23 @@ import java.util.stream.Collectors;
 public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysMusicCompareRecord>  implements SysMusicCompareRecordService {
 
 	private final static Logger log = LoggerFactory.getLogger(SysMusicCompareRecordServiceImpl.class);
-	@Autowired
+	@Resource
 	private SysMusicCompareRecordDao sysMusicCompareRecordDao;
-	@Autowired
+	@Resource
 	private SysConfigService sysConfigService;
-	@Autowired
+	@Resource
 	private MusicSheetDao musicSheetDao;
-	@Autowired
+	@Resource
 	private MusicCompareRecordStatService musicCompareRecordStatService;
-	@Autowired
+	@Resource
 	private TeacherService teacherService;
-	@Autowired
+	@Resource
 	private StudentService studentService;
-	@Autowired
+	@Resource
 	private SysUserService sysUserService;
-	@Autowired
+	@Resource
 	private SysMusicCompareWeekDataService sysMusicCompareWeekDataService;
-
-    @Autowired
+    @Resource
     private UserMusicService userMusicService;
 
 	@Override
@@ -525,6 +526,19 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
         return list.stream().collect(Collectors.toMap(SysMusicCompareRecord::getId, o ->o));
     }
 
+    @Override
+    public TeacherIndexWrapper.TeacherPracticeHome getTeacherPracticeHome(TeacherIndexWrapper.SummarySearch summarySearch) {
+		TeacherIndexWrapper.TeacherPracticeHome teacherPracticeHome = new TeacherIndexWrapper.TeacherPracticeHome();
+		//获取老师关联的学员
+		List<Long> studentIds = teacherService.getDao().getStudentIds(summarySearch);
+		if(CollectionUtils.isEmpty(studentIds)){
+			return teacherPracticeHome;
+		}
+		//获取学员练习汇总
+
+        return teacherPracticeHome;
+    }
+
 
     private String getExpireTime() {
 

+ 101 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/TeacherIndexWrapper.java

@@ -0,0 +1,101 @@
+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;
+
+import java.util.List;
+
+@ApiModel(value = "TeacherIndexWrapper", description = "首页数据统计")
+public class TeacherIndexWrapper {
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public static class SummarySearch {
+        @ApiModelProperty("开始时间")
+        private String startTime;
+
+        @ApiModelProperty("结束时间")
+        private String endTime;
+
+        @ApiModelProperty("乐器")
+        private Long subjectId;
+
+        @ApiModelProperty("老师id")
+        private Long teacherId;
+    }
+
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public static class TeacherPracticeHome{
+
+        @ApiModelProperty("练习统计")
+        private PracticeSummaryDto practiceSummary;
+
+        @ApiModelProperty("练习时长")
+        private List<PracticeTimeDto> practiceTimes;
+
+        @ApiModelProperty("练习人数")
+        private List<PracticeTimeDto> practiceCounts;
+
+        @ApiModelProperty("学员练习统计")
+        private List<StudentPracticeSummaryDto> studentPracticeSummary;
+    }
+
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public static class PracticeSummaryDto{
+        @ApiModelProperty("练习人数")
+        private Integer practiceCount;
+
+        @ApiModelProperty("平均练习时长")
+        private Long averagePracticeTime;
+
+        @ApiModelProperty("练习总时长")
+        private Long totalPracticeTime;
+	}
+
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public static class PracticeTimeDto {
+        @ApiModelProperty("日期")
+        private String date;
+
+        @ApiModelProperty("练习时长")
+        private Long practiceTime;
+
+    }
+
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public static class StudentPracticeSummaryDto{
+
+        @ApiModelProperty("学员姓名")
+        private String studentName;
+
+        @ApiModelProperty("乐器")
+        private String subjectName;
+
+        @ApiModelProperty("练习总时长")
+        private Long totalPracticeTime;
+
+        @ApiModelProperty("练习天数")
+        private Integer practiceDays;
+
+        @ApiModelProperty("平均练习时长")
+        private Long averagePracticeTime;
+    }
+
+}

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

@@ -1044,10 +1044,14 @@
                cg.complete_course_num_ completeCourseNum,cg.course_num_ courseNum,
                cg.id_ courseGroupId,cg.course_plan_ coursePlan,cg.teacher_id_ teacherId
         from course_group cg
+        left join course_schedule_student_payment cssp ON cssp.course_group_id_ = cg.id_
         <where>
             <if test="param.teacherId != null">
                 AND cg.teacher_id_ = #{param.teacherId}
             </if>
+            <if test="param.studentId != null">
+                AND cssp.user_id_ = #{param.studentId}
+            </if>
             <if test="param.status != null and param.status != ''">
                 AND cg.status_ = #{param.status}
             </if>
@@ -1061,5 +1065,6 @@
                 AND cg.type_ = #{param.courseType}
             </if>
         </where>
+        GROUP BY cg.id_
     </select>
 </mapper>

+ 15 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -503,5 +503,20 @@
              SELECT t1.im_customer_id_, t1.user_id_ FROM student t1 WHERE t1.im_customer_id_ != ''
          ) t GROUP BY t.im_customer_id_
     </select>
+    <select id="getStudentIds" resultType="java.lang.Long">
+        select distinct cssp.user_id_ from course_schedule_teacher_salary csts
+        left join course_schedule cs ON cs.id_ = csts.course_schedule_id_
+        left join course_schedule_student_payment cssp ON cssp.course_id_ = cs.id_
+        <if test="param.subjectId != null">
+            left join student st ON st.user_id_ = cssp.user_id_
+        </if>
+        where csts.teacher_id_ = #{param.teacherId}
+        <if test="param.startTime != null and param.startTime != ''">
+            and cs.start_time_ BETWEEN #{param.startTime} AND #{param.endTime}
+        </if>
+        <if test="param.subjectId != null">
+            and find_in_set(#{param.subjectId},st.subject_id_)
+        </if>
+    </select>
 
 </mapper>