Selaa lähdekoodia

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

zouxuan 9 kuukautta sitten
vanhempi
commit
27fc48edb8

+ 17 - 3
cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherSubjectPriceController.java

@@ -1,6 +1,9 @@
 package com.yonge.cooleshow.teacher.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;
@@ -17,6 +20,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 
@@ -28,6 +32,8 @@ public class TeacherSubjectPriceController extends BaseController {
     private TeacherSubjectPriceService teacherSubjectPriceService;
     @Resource
     private SysUserService sysUserService;
+    @Resource
+    private SubjectService subjectService;
 
     @ApiOperation(value = "新增、修改老师课程价格配置")
     @PostMapping("/saveOrUpdate")
@@ -58,7 +64,7 @@ public class TeacherSubjectPriceController extends BaseController {
             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.setSubjectId(subjectIds);
+            dto.setSubjectIds(subjectIds);
             dto.setSubjectName(subjectNames);
             dto.setTeacherId(list.get(0).getTeacherId());
             dto.setCourseType(list.get(0).getCourseType());
@@ -72,13 +78,21 @@ public class TeacherSubjectPriceController extends BaseController {
 
     @ApiOperation(value = "获取老师课程价格配置")
     @PostMapping("/list")
-    public HttpResponseResult<List<TeacherSubjectPrice>> list(@RequestBody TeacherSubjectPriceWrapper.PriceSearch query){
+    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();
-        return succeed(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();
     }
 }
 

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

@@ -397,10 +397,42 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
                                                                          CourseGroupWrapper.TeacherCourseGroupQuery query) {
         List<CourseGroupWrapper.TeacherCourseGroupDto> records = this.baseMapper.myCourseGroup(page, query);
         if (CollectionUtils.isNotEmpty(records)) {
+            List<Long> courseIds = records.stream().map(CourseGroupWrapper.TeacherCourseGroupDto::getCourseGroupId).distinct().collect(Collectors.toList());
             List<Long> subjectIds = records.stream().map(CourseGroupWrapper.TeacherCourseGroupDto::getSubjectId).distinct().collect(Collectors.toList());
             List<Subject> subjectList = subjectService.findBySubjectByIdList(subjectIds);
             Map<Long, String> subjectMap = subjectList.stream().collect(Collectors.toMap(Subject::getId, Subject::getName));
-            records.forEach(e -> e.setSubjectName(subjectMap.get(e.getSubjectId())));
+            List<CourseScheduleStudentPayment> list = courseScheduleStudentPaymentService.lambdaQuery()
+                    .in(CourseScheduleStudentPayment::getCourseGroupId, courseIds)
+                    .list();
+            Map<Long, List<CourseScheduleStudentPayment>> map = list.stream().collect(Collectors.groupingBy(CourseScheduleStudentPayment::getCourseGroupId));
+            //获取所有用户编号
+            List<Long> userIds = list.stream().map(CourseScheduleStudentPayment::getUserId).distinct().collect(Collectors.toList());
+            Map<Long, com.yonge.cooleshow.biz.dal.entity.SysUser> userMap = sysUserService.getMapByIds(userIds);
+            for (CourseGroupWrapper.TeacherCourseGroupDto e : records) {
+                e.setSubjectName(subjectMap.get(e.getSubjectId()));
+                if(StringUtils.equals(query.getCourseType(),"PIANO_ROOM_CLASS")){
+                    List<CourseScheduleStudentPayment> studentPayments = map.get(e.getCourseGroupId());
+                    e.setStudentNum(studentPayments.size());
+                    StringBuffer studentName = new StringBuffer();
+                    for (int i = 0; i < studentPayments.size(); i++) {
+                        if(studentName.length() > 0){
+                            studentName.append(",");
+                        }
+                        studentName.append(userMap.get(studentPayments.get(i).getUserId()).getUsername());
+                        if (i > 0) {
+                            studentName.append("等").append(studentPayments.size()).append("人");
+                            break;
+                        }
+                    }
+                    e.setStudentName(studentName.toString());
+                }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());
+                    e.setCourseGroupName(e.getCourseGroupName() + "-" + sysUser.getUsername());
+                    e.setStudentAvatar(sysUser.getAvatar());
+                }
+            }
         }
         return page.setRecords(records);
     }

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

@@ -162,20 +162,6 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
             CourseScheduleEnum.existCourseState(status, "查询条件错误,课程状态不正确");
         }
         param.put("status", status);
-//        String classDate = WrapperUtil.toStr(param, "classDate", "查询时间不能为空!");
-        //本月的第一天
-//        LocalDate firstDay;
-//        try {
-//            String[] classDateSp = classDate.split("-");
-//            firstDay = LocalDate.of(Integer.parseInt(classDateSp[0]), Integer.parseInt(classDateSp[1]), 1);
-//        } catch (Exception e) {
-//            throw new BizException("查询时间格式不正确 [" + classDate + "]");
-//        }
-        //本月的最后一天
-//        LocalDate lastDay = firstDay.with(TemporalAdjusters.lastDayOfMonth());
-        //查询该月的所有课程
-//        param.put("startDate", firstDay.toString());
-//        param.put("endDate", lastDay.toString());
         param.put("teacherId", sysUserService.getUserId());
         param.put("type", CourseScheduleEnum.LIVE.getCode());
         param.put("groupState", String.join(",", CourseGroupEnum.ING.getCode(), CourseGroupEnum.COMPLETE.getCode()));

+ 12 - 109
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherLiveCourseInfoVo.java

@@ -3,7 +3,12 @@ package com.yonge.cooleshow.biz.dal.vo;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Positive;
+import javax.validation.constraints.Size;
 import java.io.Serializable;
 import java.util.Date;
 
@@ -12,6 +17,7 @@ import java.util.Date;
  * Created by 2022-04-06
  */
 @ApiModel(value = "TeacherLiveCourseInfoVo", description = "老师直播课课程")
+@Data
 public class TeacherLiveCourseInfoVo implements Serializable {
 
     @ApiModelProperty(value = "课程组id")
@@ -58,115 +64,12 @@ public class TeacherLiveCourseInfoVo implements Serializable {
     @ApiModelProperty("用户id")
     private Long userId;
 
-    public Long getUserId() {
-        return userId;
-    }
+    @ApiModelProperty(value = "课程数")
+    private Integer courseNum;
 
-    public void setUserId(Long userId) {
-        this.userId = userId;
-    }
+    @ApiModelProperty(value = "课程介绍")
+    private String courseIntroduce;
 
-    public String getUsername() {
-        return username;
-    }
-
-    public void setUsername(String username) {
-        this.username = username;
-    }
-
-    public String getAvatar() {
-        return avatar;
-    }
-
-    public void setAvatar(String avatar) {
-        this.avatar = avatar;
-    }
-
-    public Long getCourseGroupId() {
-        return courseGroupId;
-    }
-
-    public void setCourseGroupId(Long courseGroupId) {
-        this.courseGroupId = courseGroupId;
-    }
-
-    public String getCourseGroupName() {
-        return courseGroupName;
-    }
-
-    public void setCourseGroupName(String courseGroupName) {
-        this.courseGroupName = courseGroupName;
-    }
-
-    public String getSubjectName() {
-        return subjectName;
-    }
-
-    public void setSubjectName(String subjectName) {
-        this.subjectName = subjectName;
-    }
-
-    public Date getStartTime() {
-        return startTime;
-    }
-
-    public void setStartTime(Date startTime) {
-        this.startTime = startTime;
-    }
-
-    public Date getEndTime() {
-        return endTime;
-    }
-
-    public void setEndTime(Date endTime) {
-        this.endTime = endTime;
-    }
-
-    public String getStatus() {
-        return status;
-    }
-
-    public void setStatus(String status) {
-        this.status = status;
-    }
-
-    public Integer getStudentCount() {
-        return studentCount;
-    }
-
-    public void setStudentCount(Integer studentCount) {
-        this.studentCount = studentCount;
-    }
-
-    public String getBackgroundPic() {
-        return backgroundPic;
-    }
-
-    public void setBackgroundPic(String backgroundPic) {
-        this.backgroundPic = backgroundPic;
-    }
-
-    public String getImGroupId() {
-        return imGroupId;
-    }
-
-    public void setImGroupId(String imGroupId) {
-        this.imGroupId = imGroupId;
-    }
-
-    public Long getCourseId() {
-        return courseId;
-    }
-
-    public void setCourseId(Long courseId) {
-        this.courseId = courseId;
-    }
-
-    public Integer getClassNum() {
-        return classNum;
-    }
-
-    public void setClassNum(Integer classNum) {
-        this.classNum = classNum;
-    }
+    @ApiModelProperty(value = "已上完课的课程数")
+    private Integer completeCourseNum;
 }

+ 10 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/TeacherSubjectPriceWrapper.java

@@ -21,6 +21,9 @@ public class TeacherSubjectPriceWrapper {
     @Data
     public static class TeacherSubjectPriceDto{
 
+        @ApiModelProperty(value = "id")
+        private Long id;
+
         @ApiModelProperty(value = "老师id")
         private Long teacherId;
 
@@ -34,13 +37,19 @@ public class TeacherSubjectPriceWrapper {
         private Integer courseMinutes;
 
         @ApiModelProperty(value = "声部id")
-        private String subjectId;
+        private Long subjectId;
+
+        @ApiModelProperty(value = "声部id")
+        private String subjectIds;
 
         @ApiModelProperty(value = "声部名称")
         private String subjectName;
 
         @ApiModelProperty(value = "声部价格")
         private BigDecimal subjectPrice;
+
+        @ApiModelProperty(value = "声部图片")
+        private String subjectPic;
     }
 
 }

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

@@ -50,6 +50,9 @@ public class CourseGroupWrapper {
         @ApiModelProperty(value = "课程数")
         private Integer courseNum;
 
+        @ApiModelProperty(value = "学生数")
+        private Integer studentNum = 1;
+
         @ApiModelProperty(value = "学员姓名")
         private String studentName;
 

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

@@ -1003,12 +1003,10 @@
     </select>
     <select id="myCourseGroup"
             resultType="com.yonge.cooleshow.biz.dal.wrapper.course.CourseGroupWrapper$TeacherCourseGroupDto">
-        select cg.name_ courseGroupName,su.username_ studentName,cg.status_ status,
-               su.avatar_ studentAvatar,cg.subject_id_ subjectId,
+        select cg.name_ courseGroupName,cg.status_ status,
+               cg.subject_id_ subjectId,
                cg.complete_course_num_ completeCourseNum,cg.course_num_ courseNum,cg.id_ courseGroupId
         from course_group cg
-        LEFT JOIN course_schedule_student_payment cssp ON cssp.course_group_id_ = cg.id_
-        LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
         <where>
             <if test="param.teacherId != null">
                 AND cg.teacher_id_ = #{param.teacherId}
@@ -1023,6 +1021,5 @@
                 AND cg.type_ = #{param.courseType}
             </if>
         </where>
-        group by cg.id_
     </select>
 </mapper>

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

@@ -160,7 +160,10 @@
         b.im_group_id_  as imGroupId,
         su.username_ as username,
         su.id_ as userId,
-        su.avatar_ as avatar
+        su.avatar_ as avatar,
+        b.course_num_ as courseNum,
+        b.complete_course_num_ as completeCourseNum,
+        b.course_introduce_ as courseIntroduce
         from course_schedule as a
         left join course_group as b on a.course_group_id_ = b.id_
         left join subject as s on b.subject_id_ = s.id_