Browse Source

Merge branch 'feature/1113-vipCourse' of http://git.dayaedu.com/yonge/cooleshow into feature/1113-vipCourse

刘俊驰 8 tháng trước cách đây
mục cha
commit
c8dc02c6d9

+ 2 - 2
cooleshow-app/src/main/java/com/yonge/cooleshow/student/controller/StudentCourseScheduleController.java

@@ -138,8 +138,8 @@ public class StudentCourseScheduleController extends BaseController {
 
     @ApiOperation("查询老师趣纠课配置")
     @GetMapping("/getTeacherSubjectPrice")
-    public HttpResponseResult<List<TeacherSubjectPrice>> getTeacherSubjectPrice(@NotNull Long teacherId) {
-        return succeed(courseScheduleService.teacherSubjectPrice(teacherId));
+    public HttpResponseResult<List<TeacherSubjectPrice>> getTeacherSubjectPrice(@NotNull Long teacherId,String groupType) {
+        return succeed(courseScheduleService.teacherSubjectPrice(teacherId,groupType));
     }
 
     @ApiOperation("学生端-我的课程-琴房课列表")

+ 83 - 0
cooleshow-app/src/main/java/com/yonge/cooleshow/student/controller/TeacherSubjectPriceController.java

@@ -0,0 +1,83 @@
+package com.yonge.cooleshow.student.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.yonge.cooleshow.biz.dal.entity.Subject;
+import com.yonge.cooleshow.biz.dal.entity.TeacherSubjectPrice;
+import com.yonge.cooleshow.biz.dal.service.SubjectService;
+import com.yonge.cooleshow.biz.dal.service.SysUserService;
+import com.yonge.cooleshow.biz.dal.service.TeacherSubjectPriceService;
+import com.yonge.cooleshow.biz.dal.wrapper.TeacherSubjectPriceWrapper;
+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.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+
+@Api(tags = "老师课程价格配置")
+@RestController
+@RequestMapping("${app-config.url.student:}/teacherSubjectPrice")
+public class TeacherSubjectPriceController extends BaseController {
+    @Resource
+    private TeacherSubjectPriceService teacherSubjectPriceService;
+    @Resource
+    private SysUserService sysUserService;
+    @Resource
+    private SubjectService subjectService;
+
+
+    @ApiOperation(value = "获取老师课程价格配置")
+    @PostMapping("/detail")
+    public HttpResponseResult<TeacherSubjectPriceWrapper.TeacherSubjectPriceDto> detail(@RequestBody TeacherSubjectPriceWrapper.PriceSearch query){
+        List<TeacherSubjectPrice> list = teacherSubjectPriceService.lambdaQuery()
+                .eq(TeacherSubjectPrice::getTeacherId, sysUserService.getUserId())
+                .eq(query.getSubjectId() != null, TeacherSubjectPrice::getSubjectId, query.getSubjectId())
+                .eq(StringUtils.isNotEmpty(query.getCourseType()), TeacherSubjectPrice::getCourseType, query.getCourseType())
+                .list();
+        if(CollectionUtils.isNotEmpty(list)){
+            //获取所有的声部、声部名称
+            TeacherSubjectPriceWrapper.TeacherSubjectPriceDto dto = new TeacherSubjectPriceWrapper.TeacherSubjectPriceDto();
+            String subjectIds = list.stream().map(e->e.getSubjectId().toString()).distinct().collect(Collectors.joining(","));
+            String subjectNames = list.stream().map(TeacherSubjectPrice::getSubjectName).distinct().collect(Collectors.joining(","));
+            dto.setSubjectIds(subjectIds);
+            dto.setSubjectName(subjectNames);
+            dto.setTeacherId(list.get(0).getTeacherId());
+            dto.setCourseType(list.get(0).getCourseType());
+            dto.setFreeMinutes(list.get(0).getFreeMinutes());
+            dto.setCourseMinutes(list.get(0).getCourseMinutes());
+            dto.setSubjectPrice(list.get(0).getSubjectPrice());
+            return succeed(dto);
+        }
+        return succeed();
+    }
+
+    @ApiOperation(value = "获取老师课程价格配置")
+    @PostMapping("/list")
+    public HttpResponseResult<List<TeacherSubjectPriceWrapper.TeacherSubjectPriceDto>> list(@RequestBody TeacherSubjectPriceWrapper.PriceSearch query){
+        List<TeacherSubjectPrice> list = teacherSubjectPriceService.lambdaQuery()
+                .eq(TeacherSubjectPrice::getTeacherId, sysUserService.getUserId())
+                .eq(query.getSubjectId() != null, TeacherSubjectPrice::getSubjectId, query.getSubjectId())
+                .eq(StringUtils.isNotEmpty(query.getCourseType()), TeacherSubjectPrice::getCourseType, query.getCourseType())
+                .list();
+        if(CollectionUtils.isNotEmpty(list)){
+            List<TeacherSubjectPriceWrapper.TeacherSubjectPriceDto> results = JSONObject.parseArray(JSONObject.toJSONString(list), TeacherSubjectPriceWrapper.TeacherSubjectPriceDto.class);
+            List<Long> subjectIds = list.stream().map(TeacherSubjectPrice::getSubjectId).distinct().collect(Collectors.toList());
+            List<Subject> subjectList = subjectService.findBySubjectByIdList(subjectIds);
+            Map<Long, String> subjectMap = subjectList.stream().collect(Collectors.toMap(Subject::getId, Subject::getImg));
+            results.forEach(e->e.setSubjectPic(subjectMap.get(e.getSubjectId())));
+            return succeed(results);
+        }
+        return succeed();
+    }
+}
+

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseScheduleService.java

@@ -200,7 +200,7 @@ public interface CourseScheduleService extends IService<CourseSchedule> {
 
     StudentHomePage queryLiveAndVideo(Long studentId, Long teacherId, YesOrNoEnum appAuditVersion);
 
-    List<TeacherSubjectPrice> teacherSubjectPrice(Long teacherId);
+    List<TeacherSubjectPrice> teacherSubjectPrice(Long teacherId,String groupType);
 
     /**
      * 本周剩余的课时

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

@@ -114,6 +114,8 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
 
     @Autowired
     private UserPaymentCoreService userPaymentCoreService;
+    @Autowired
+    private StudentService studentService;
 
     @Override
     public CourseGroupDao getDao() {
@@ -432,7 +434,7 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
                         }
                     }
                     e.setStudentName(studentName.toString());
-                }else{
+                }else {
                     CourseScheduleStudentPayment studentPayment = map.get(e.getCourseGroupId()).get(0);
                     com.yonge.cooleshow.biz.dal.entity.SysUser sysUser = userMap.get(studentPayment.getUserId());
                     e.setStudentName(sysUser.getUsername());
@@ -476,6 +478,8 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
                 .list();
         if (CollectionUtils.isNotEmpty(studentPayments)) {
             List<Long> userIds = studentPayments.stream().map(CourseScheduleStudentPayment::getUserId).distinct().collect(Collectors.toList());
+            Map<Long, Student> studentMap = studentService.getMapByIds(userIds);
+            //获取用户声部列表
             Map<Long, com.yonge.cooleshow.biz.dal.entity.SysUser> mapByIds = sysUserService.getMapByIds(userIds);
             List<CourseGroupWrapper.CourseStudentVo> result = new ArrayList<>();
             userIds.forEach(e -> {
@@ -485,6 +489,13 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
                 vo.setStudentName(sysUser.getRealName());
                 vo.setUserName(sysUser.getUsername());
                 vo.setAvatar(sysUser.getAvatar());
+                vo.setSubjectId(studentMap.get(e).getSubjectId());
+                if(StringUtils.isNotEmpty(vo.getSubjectId())){
+                    List<Subject> subjectList = subjectService.findBySubjectByIdList(vo.getSubjectId());
+                    if(CollectionUtils.isNotEmpty(subjectList)){
+                        vo.setSubjectName(subjectList.stream().map(Subject::getName).collect(Collectors.joining(",")));
+                    }
+                }
                 vo.setImUserId(imGroupService.getImUserId(String.valueOf(e),
                         ClientEnum.STUDENT.name()));
                 result.add(vo);

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

@@ -1602,7 +1602,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
      * @Author: cy
      * @Date: 2022/4/26
      */
-    public List<TeacherSubjectPrice> teacherSubjectPrice(Long teacherId) {
+    public List<TeacherSubjectPrice> teacherSubjectPrice(Long teacherId,String groupType) {
         TeacherFreeTime teacherFreeTime = teacherFreeTimeService.lambdaQuery().eq(TeacherFreeTime::getTeacherId, teacherId).one();
         if (teacherFreeTime == null) {
             log.info("未查到趣纠课配置,老师id:{}", teacherId);
@@ -1620,7 +1620,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         }
         return teacherSubjectPriceService.lambdaQuery()
                 .eq(TeacherSubjectPrice::getTeacherId, teacherId)
-                .eq(TeacherSubjectPrice::getCourseType, "PRACTICE").list();
+                .eq(TeacherSubjectPrice::getCourseType, groupType).list();
     }
 
     @Override
@@ -2767,7 +2767,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         List<CourseSchedule> courseSchedules = this.lambdaQuery().eq(CourseSchedule::getCourseGroupId, query.getCourseGroupId())
                 .eq(StringUtils.isNotEmpty(query.getStatus()), CourseSchedule::getStatus, query.getStatus())
                 .ne(query.getAttendanceStatus() != null,CourseSchedule::getStatus,"NOT_START")
-                .orderByDesc(CourseSchedule::getStartTime)
+                .orderByAsc(CourseSchedule::getStartTime)
                 .list();
         if (CollectionUtils.isEmpty(courseSchedules)) {
             return Lists.newArrayList();
@@ -2824,7 +2824,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
             courseVo.setEndTime(courseSchedule.getEndTime());
             courseVo.setStatus(courseSchedule.getStatus());
             courseVo.setCourseGoupId(courseGroup.getId());
-            courseVo.setCourseGroupName(courseGroup.getName());
+            courseVo.setCourseGroupName(courseGroup.getName() + "-第" + courseSchedule.getClassNum() + "课");
             courseVo.setSubjectId(courseGroup.getSubjectId());
             courseVo.setSubjectName(subject.getName());
             if(query.getAttendanceStatus() == null){
@@ -2844,6 +2844,8 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
                     }).collect(Collectors.toList()));
             courseVos.add(courseVo);
         }
+        //按照课程开始时间排序
+        courseVos.sort(Comparator.comparing(CourseScheduleWrapper.MyCourseVo::getStartTime));
         return courseVos;
     }
 
@@ -2883,7 +2885,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         List<CourseSchedule> courseSchedules = this.lambdaQuery()
                 .in(CourseSchedule::getId, courseIds)
                 .ne(query.getAttendanceStatus() != null,CourseSchedule::getStatus,"NOT_START")
-                .orderByDesc(CourseSchedule::getStartTime).list();
+                .orderByAsc(CourseSchedule::getStartTime).list();
         if(StringUtils.isNotEmpty(query.getClassMonth())){
             courseSchedules = courseSchedules.stream().
                     filter(courseSchedule -> query.getClassMonth().equals(DateUtil.dateToString(courseSchedule.getStartTime(),"yyyy-MM"))).collect(Collectors.toList());
@@ -2929,6 +2931,8 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
             courseVo.setImUserId(imGroupService.getImUserId(String.valueOf(user.getId()),ClientEnum.TEACHER.name()));
             courseVos.add(courseVo);
         }
+        //按照课程时间排序
+        courseVos.sort(Comparator.comparing(CourseScheduleWrapper.StudentCourseList::getStartTime));
         return courseVos;
     }
 

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

@@ -562,6 +562,9 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
 		}
 		teacherPracticeHome.setPracticeTimes(sysMusicCompareRecordDao.getStudentTrainTime(studentIds,summarySearch,groupBy));
 
+		//练习人数
+//		teacherPracticeHome.setPracticeCounts(sysMusicCompareRecordDao.getStudentTrainCount(studentIds,summarySearch,groupBy));
+
         return teacherPracticeHome;
     }
 

+ 6 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/course/CourseGroupWrapper.java

@@ -118,6 +118,12 @@ public class CourseGroupWrapper {
 
         @ApiModelProperty("IM用户ID")
         private String imUserId;
+
+        @ApiModelProperty(value = "声部编号")
+        private String subjectId;
+
+        @ApiModelProperty(value = "声部名称")
+        private String subjectName;
     }
 
 

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

@@ -72,6 +72,7 @@
         b.im_group_id_              as imGroupId,
         b.reason_ as                   reason,
         b.course_plan_ as coursePlan,
+        b.course_introduce_ as courseIntroduce,
         0  as existBuy
         from course_group as b
         left join subject as s on b.subject_id_ = s.id_

+ 1 - 1
cooleshow-user/user-biz/src/main/resources/config/mybatis/VideoLessonGroupMapper.xml

@@ -602,7 +602,7 @@
 		LIMIT 5
 	</select>
 	<select id="countMusicAlbum" resultType="java.util.Map">
-		select c.course_group_id_ 'key',COUNT(distinct ms.id_) 'value' from
+		select c.course_group_id_,COUNT(distinct ms.id_) from
 			(
 				select crma.course_group_id_, music_album_id_ music_sheet_id_ from course_relation_music_album crma
 				where crma.relation_type_ = 'MUSIC' AND crma.course_group_id_ IN