Parcourir la source

Merge remote-tracking branch 'origin/master'

hgw il y a 3 ans
Parent
commit
5beedd56b3
33 fichiers modifiés avec 504 ajouts et 55 suppressions
  1. 7 1
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/dal/dao/SysUserDao.java
  2. 4 9
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/service/impl/SysUserServiceImpl.java
  3. 8 0
      cooleshow-auth/auth-server/src/main/resources/config/mybatis/SysUserMapper.xml
  4. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/convert/OrderStatusConvert.java
  5. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/convert/OrderTypeConvert.java
  6. 3 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleDao.java
  7. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/UserWithdrawalDao.java
  8. 28 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/CourseScheduleReplied.java
  9. 12 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/SysMusicCompareRecord.java
  10. 0 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserBankCard.java
  11. 4 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/CourseScheduleEnum.java
  12. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/sdk/WithdrawSdk.java
  13. 2 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseScheduleService.java
  14. 4 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/VideoLessonGroupService.java
  15. 3 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseGroupServiceImpl.java
  16. 13 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseHomeworkServiceImpl.java
  17. 11 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java
  18. 30 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/SysMusicCompareRecordServiceImpl.java
  19. 7 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java
  20. 3 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserWithdrawalServiceImpl.java
  21. 14 7
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VideoLessonGroupServiceImpl.java
  22. 47 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/CourseHomeworkDetailVo.java
  23. 174 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/PianoClassVo.java
  24. 4 4
      cooleshow-user/user-biz/src/main/resources/config/contracts/latest_contract_template.ftl
  25. 4 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseHomeworkMapper.xml
  26. 37 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  27. 2 2
      cooleshow-user/user-biz/src/main/resources/config/mybatis/SysMusicCompareRecordMapper.xml
  28. 6 3
      cooleshow-user/user-biz/src/main/resources/config/mybatis/UserWithdrawalMapper.xml
  29. 13 0
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/StudentCourseScheduleController.java
  30. 0 6
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/SysUserContractRecordController.java
  31. 1 1
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherCourseScheduleController.java
  32. 30 0
      cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/open/OpenTeacherController.java
  33. 29 6
      cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/open/OpenVideoGroupController.java

+ 7 - 1
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/dal/dao/SysUserDao.java

@@ -136,7 +136,13 @@ public interface SysUserDao extends BaseDAO<Long, SysUser> {
      * @updateTime 2022/3/22 11:06
      */
     void updatetSetDetail(@Param("param") UserSetReq setReq, @Param("id") Long id);
-
+    /***
+     * 查询用户账户是否存在 true 存在
+     * @author liweifan
+     * @param: id
+     * @updateTime 2022/4/14 17:07
+     */
+    Boolean queryUserAccount(@Param("userId") Long id);
     /***
      * 创建用户账户
      * @author liweifan

+ 4 - 9
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/service/impl/SysUserServiceImpl.java

@@ -203,19 +203,14 @@ public class SysUserServiceImpl extends BaseServiceImpl<Long, SysUser> implement
     @Transactional(rollbackFor = Exception.class)
     public void saveStudent(SysUser sysUser) {
         sysUserDao.saveStudent(sysUser.getId());
-        if (!sysUser.getUserType().contains("TEACHER")) {
-            sysUserDao.createUserAccount(sysUser.getId());
-        }
+        sysUserDao.createUserAccount(sysUser.getId());
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void saveTeacher(SysUser sysUser) {
-
         sysUserDao.saveTeacher(sysUser.getId());
-        if (!sysUser.getUserType().contains("STUDENT")) {
-            sysUserDao.createUserAccount(sysUser.getId());
-        }
+        sysUserDao.createUserAccount(sysUser.getId());
     }
 
     @Override
@@ -252,7 +247,7 @@ public class SysUserServiceImpl extends BaseServiceImpl<Long, SysUser> implement
 
     @Override
     public boolean verifyQrCode(String phone, String qrCode) {
-        if(StringUtils.isEmpty(phone) || StringUtils.isEmpty(qrCode)){
+        if (StringUtils.isEmpty(phone) || StringUtils.isEmpty(qrCode)) {
             return false;
         }
         Object data = redissonClient.getBucket(CacheNameEnum.QR_LOGIN_CODE.getRedisKey(qrCode))
@@ -261,7 +256,7 @@ public class SysUserServiceImpl extends BaseServiceImpl<Long, SysUser> implement
             return false;
         }
         QRLoginDto dto = (QRLoginDto) data;
-        if(phone.equals(dto.getPhone()) && qrCode.equals(dto.getCode())){
+        if (phone.equals(dto.getPhone()) && qrCode.equals(dto.getCode())) {
             return true;
         }
         return false;

+ 8 - 0
cooleshow-auth/auth-server/src/main/resources/config/mybatis/SysUserMapper.xml

@@ -72,8 +72,15 @@
     <insert id="saveStudent">
         INSERT INTO student (user_id_,create_time_,update_time_) VALUES(#{userId},NOW(),NOW())
     </insert>
+
+    <select id="queryUserAccount" resultType="java.lang.Boolean">
+        select count(1) from user_cash_account where #{userId}
+    </select>
+
     <insert id="createUserAccount">
         INSERT INTO user_cash_account (user_id_,create_time_,update_time_)VALUES(#{userId},NOW(),NOW())
+            ON DUPLICATE KEY UPDATE
+                                 user_id_ = VALUES(user_id_)
     </insert>
 
     <!-- 根据主键查询一条记录 -->
@@ -269,4 +276,5 @@
             </if>
         </where>
     </select>
+
 </mapper>

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/convert/OrderStatusConvert.java

@@ -41,7 +41,7 @@ public class OrderStatusConvert implements Converter<OrderStatusEnum> {
     @Override
     public CellData convertToExcelData(OrderStatusEnum statusEnum, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
         if(null != statusEnum){
-            return new CellData(statusEnum.getCode());
+            return new CellData(statusEnum.getMsg());
         }
         return new CellData("异常数据");
     }

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/convert/OrderTypeConvert.java

@@ -35,7 +35,7 @@ public class OrderTypeConvert implements Converter<OrderTypeEnum> {
     @Override
     public CellData convertToExcelData(OrderTypeEnum statusEnum, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
         if(null != statusEnum){
-            return new CellData(statusEnum.getCode());
+            return new CellData(statusEnum.getMsg());
         }
         return new CellData("异常数据");
     }

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

@@ -228,4 +228,7 @@ public interface CourseScheduleDao extends BaseMapper<CourseSchedule> {
 
     //查询已完成课时
     List<CourseCompleteVo> selectComplete();
+
+    //查琴房课列表
+    List<PianoClassVo> queryPianoClass(IPage page,@Param("param") MyCourseSearch search);
 }

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/UserWithdrawalDao.java

@@ -39,7 +39,7 @@ public interface UserWithdrawalDao extends BaseMapper<UserWithdrawal> {
      * @updateTime 2022/4/15 18:05
      * @return: java.util.List<com.yonge.cooleshow.biz.dal.vo.UserWithdrawalVo>
      */
-    List<UserWithdrawalVo> selectList(@Param("param") TeacherWithdrawalSearch teacherWithdrawal);
+    List<UserWithdrawalVo> selectAllList(@Param("param") TeacherWithdrawalSearch teacherWithdrawal);
 
     /**
      * 查询用户今天发起的结算次数

+ 28 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/CourseScheduleReplied.java

@@ -69,6 +69,18 @@ public class CourseScheduleReplied implements Serializable {
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date updateTime;
 
+    @ApiModelProperty("学生评价时间 ")
+    @TableField(value = "student_replied_time_")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date studentRepliedTime;
+
+    @ApiModelProperty("老师评价时间 ")
+    @TableField(value = "teacher_replied_time_")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date teacherRepliedTime;
+
     public Long getId() {
         return id;
     }
@@ -148,4 +160,20 @@ public class CourseScheduleReplied implements Serializable {
     public void setUpdateTime(Date updateTime) {
         this.updateTime = updateTime;
     }
+
+    public Date getStudentRepliedTime() {
+        return studentRepliedTime;
+    }
+
+    public void setStudentRepliedTime(Date studentRepliedTime) {
+        this.studentRepliedTime = studentRepliedTime;
+    }
+
+    public Date getTeacherRepliedTime() {
+        return teacherRepliedTime;
+    }
+
+    public void setTeacherRepliedTime(Date teacherRepliedTime) {
+        this.teacherRepliedTime = teacherRepliedTime;
+    }
 }

+ 12 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/SysMusicCompareRecord.java

@@ -4,6 +4,7 @@ import java.math.BigDecimal;
 import java.time.DayOfWeek;
 import java.time.LocalDate;
 
+import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
 import com.yonge.cooleshow.biz.dal.enums.DeviceTypeEnum;
@@ -75,6 +76,17 @@ public class SysMusicCompareRecord extends BaseEntity {
 	
 	private String partIndex;
 
+	@ApiModelProperty("音乐过期 0:否 1:是")
+	private Integer expire;
+
+	public Integer getExpire() {
+		return expire;
+	}
+
+	public void setExpire(Integer expire) {
+		this.expire = expire;
+	}
+
 	public SysMusicCompareRecord() {
 	}
 

+ 0 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserBankCard.java

@@ -57,7 +57,6 @@ public class UserBankCard implements Serializable {
     private Date updateTime;
     @ApiModelProperty("逻辑删除 ")
     @TableField(value = "del_flag_")
-    @TableLogic
     private Boolean delFlag;
 	public Long getId() {
         return id;

+ 4 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/CourseScheduleEnum.java

@@ -39,13 +39,15 @@ public enum CourseScheduleEnum implements BaseEnum<String, CourseScheduleEnum> {
      * @param errMsg 错误异常
      */
     public static CourseScheduleEnum existCourseType(String code, String errMsg) {
-        CourseScheduleEnum[] values = {PRACTICE, LIVE};
+        CourseScheduleEnum[] values = {PRACTICE, LIVE, PIANO_ROOM_CLASS};
         existCourse(values, code, errMsg);
         //返回枚举对象
         if (code.equals(CourseScheduleEnum.PRACTICE.getCode())) {
             return CourseScheduleEnum.PRACTICE;
-        } else {
+        } else if (code.equals(CourseScheduleEnum.LIVE.getCode())) {
             return CourseScheduleEnum.LIVE;
+        } else {
+            return CourseScheduleEnum.PIANO_ROOM_CLASS;
         }
     }
 

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/sdk/WithdrawSdk.java

@@ -280,6 +280,6 @@ public class WithdrawSdk {
         } catch (Exception e) {
             e.printStackTrace();
         }
-        return null;
+        return BigDecimal.ZERO;
     }
 }

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

@@ -255,5 +255,7 @@ public interface CourseScheduleService extends IService<CourseSchedule> {
     void updateCourseStudent(Map<String, Object> param);
 
     PageInfo<CourseScheduleRecordVo> selectCourseList(Map<String, Object> param);
+
+    IPage<PianoClassVo> queryPianoClass(IPage<PianoClassVo> page, MyCourseSearch search);
 }
 

+ 4 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/VideoLessonGroupService.java

@@ -9,6 +9,8 @@ import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroup;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.yonge.cooleshow.biz.dal.vo.*;
 
+import java.util.List;
+
 /**
  * VideoLessonGroupService服务类
  *
@@ -19,6 +21,8 @@ import com.yonge.cooleshow.biz.dal.vo.*;
 public interface VideoLessonGroupService extends IService<VideoLessonGroup> {
     IPage<VideoLessonGroupVo> selectPage(IPage<VideoLessonGroupVo> page, VideoLessonGroupSearch query);
 
+    List<VideoLessonGroupVo> selectPage(VideoLessonGroupSearch query);
+
     VideoLessonGroup selectGroup(Long groupId);
 
     void updateGroup(VideoLessonGroupUpVo lessonGroupUpVo);

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

@@ -326,8 +326,9 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
         }
         //获取老师锁课缓存
         RMap<Long, List<CourseTimeEntity>> map = getExpireLiveLockTimeCache(dto.getTeacherId());
-        //陪练课无需锁定时间
-        if (!courseTypeFlag) {
+        //陪练课/琴房课无需锁定时间
+        boolean coursePianoFlag = CourseScheduleEnum.existCourseType(dto.getCourseType(), "课程类型不正确!").equals(CourseScheduleEnum.PIANO_ROOM_CLASS);
+        if (!courseTypeFlag && !coursePianoFlag) {
             //直播课添加课时数据
             map.fastPut(dto.getTeacherId(), timeList);
         }

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

@@ -176,6 +176,19 @@ public class CourseHomeworkServiceImpl extends ServiceImpl<CourseHomeworkDao, Co
             throw  new BizException("未找到作业信息");
         }
 
+        // 课程组的群聊
+        ImGroup imGroup = imGroupService.getByCourseGroupId(courseHomeworkDetailVo.getCourseGroupId());
+        if (imGroup != null) {
+            courseHomeworkDetailVo.setImGroupId(imGroup.getId());
+        }
+
+        // 购买人数
+        List<CourseScheduleStudentPayment> studentPaymentList = courseScheduleStudentPaymentService.getByCourseId(
+                courseHomeworkDetailVo.getCourseScheduleId());
+        if (!CollectionUtils.isEmpty(studentPaymentList)) {
+            courseHomeworkDetailVo.setStudentNum(studentPaymentList.size());
+        }
+
         // 学生信息
         CourseHomeworkDetailVo studentInfoDetailVo = baseMapper
                 .selectPaymentStudentInfo(courseHomeworkDetailVo.getCourseScheduleId(),studentId);

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

@@ -954,7 +954,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
             //校验缓存中的时间和当前自动生成的时间有没有重复
             dateList.forEach(item ->
             {
-                if (!checkCourseTime(courseTimeCache, CourseTimeEntity::getStartTime, CourseTimeEntity::getEndTime, item.getStartTime(), item.getEndTime())) {
+                if (checkCourseTime(courseTimeCache, CourseTimeEntity::getStartTime, CourseTimeEntity::getEndTime, item.getStartTime(), item.getEndTime())) {
                     throw new BizException("与缓存中时间存在中途");
                 }
             });
@@ -1270,6 +1270,10 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
                 .eq(TeacherFreeTime::getEnableFlag, 1)
                 .eq(TeacherFreeTime::getDefaultFlag, 1));
 
+        if (teacherFreeTime==null){
+            throw new BizException("未查到老师陪练课配置");
+        }
+
         if ((teacherFreeTime.getMonday() == null || teacherFreeTime.getMonday().equals("[]")) &&
                 (teacherFreeTime.getThursday() == null || teacherFreeTime.getThursday().equals("[]")) &&
                 (teacherFreeTime.getWednesday() == null || teacherFreeTime.getWednesday().equals("[]")) &&
@@ -2174,4 +2178,10 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         //重新新增学员
         paymentDao.insertBatch(payments);
     }
+
+    @Override
+    public IPage<PianoClassVo> queryPianoClass(IPage<PianoClassVo> page, MyCourseSearch search) {
+        monthToDate(search);
+        return page.setRecords(baseMapper.queryPianoClass(page, search));
+    }
 }

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

@@ -2,6 +2,8 @@ package com.yonge.cooleshow.biz.dal.service.impl;
 
 import java.math.BigDecimal;
 import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.Date;
@@ -12,6 +14,8 @@ import java.util.Objects;
 import java.util.Set;
 import java.util.stream.Collectors;
 
+import com.yonge.cooleshow.biz.dal.service.SysConfigService;
+import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -58,6 +62,9 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
     private SysUserFeignService sysUserFeignService;
 
 	@Autowired
+	private SysConfigService sysConfigService;
+
+	@Autowired
 	private MusicSheetDao musicSheetDao;
 
 	@Override
@@ -102,6 +109,19 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
 		jsonObject.put("heardLevel", userLastEvaluationData.getHeardLevel());
 		jsonObject.put("videoFilePath", userLastEvaluationData.getVideoFilePath());
 		jsonObject.put("partIndex", userLastEvaluationData.getPartIndex());
+		if(userLastEvaluationData.getCreateTime() == null) {
+			jsonObject.put("expire", 1);
+		} else {
+			LocalDateTime localDateTime = userLastEvaluationData.getCreateTime()
+																.toInstant()
+																.atZone(ZoneId.systemDefault())
+																.toLocalDateTime();
+			if (localDateTime.plusDays(Long.parseLong(getExpireTime())).compareTo(LocalDateTime.now()) <0) {
+				jsonObject.put("expire", 1);
+			} else {
+				jsonObject.put("expire", 0);
+			}
+		}
 
 		MusicSheet sysMusicScore = musicSheetDao.selectById(userLastEvaluationData.getMusicSheetId());
 		if(Objects.nonNull(sysMusicScore)){
@@ -136,6 +156,7 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
 		queryInfo.setFeatureType(FeatureType.CLOUD_STUDY_EVALUATION);
 		MapUtil.populateMap(params, queryInfo);
 
+		params.put("expireTime",getExpireTime());
 		List<SysMusicCompareRecord> dataList = null;
 		int count = this.findCount(params);
 		if (count > 0) {
@@ -192,4 +213,13 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
 		return pageInfo;
 	}
 
+
+	private String getExpireTime() {
+
+		String homeworkExpireTime = sysConfigService.findConfigValue(SysConfigConstant.HOMEWORK_EXPIRE_TIME);
+		if (org.springframework.util.StringUtils.isEmpty(homeworkExpireTime)) {
+			return "9999";
+		}
+		return homeworkExpireTime;
+	}
 }

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

@@ -200,14 +200,18 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
         sysUser.setUsername("游客" + sysUser.getId());
         employeeDao.updateSysUser(sysUser);
         //插入老师表
+
         Teacher teacher = new Teacher();
         teacher.setUserId(sysUser.getId());
         teacher = getTeacherDetil(teacher, teacherSubmitReq);
         baseMapper.insert(teacher);
         //插入老师账户表
-        UserAccount userAccount = new UserAccount();
-        userAccount.setUserId(sysUser.getId());
-        userAccountService.save(userAccount);
+        UserAccount oldAcc = userAccountService.getById(sysUser.getId());
+        if(null == oldAcc){
+            UserAccount userAccount = new UserAccount();
+            userAccount.setUserId(sysUser.getId());
+            userAccountService.save(userAccount);
+        }
         return HttpResponseResult.succeed(true);
     }
 

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

@@ -98,7 +98,7 @@ public class UserWithdrawalServiceImpl extends ServiceImpl<UserWithdrawalDao, Us
 
     @Override
     public List<UserWithdrawalVo> selectList(TeacherWithdrawalSearch query) {
-        return baseMapper.selectList(query);
+        return baseMapper.selectAllList(query);
     }
 
     @Override
@@ -196,7 +196,8 @@ public class UserWithdrawalServiceImpl extends ServiceImpl<UserWithdrawalDao, Us
     @Override
     @Transactional(rollbackFor = Exception.class)
     public HttpResponseResult<Boolean> batchAuth(AuthOperaReq authOperaReq, SysUser sysUser) {
-        Long[] ids = StringUtil.toLongArray(StringPool.COMMA, authOperaReq.getId());
+        List<Long> ids = Arrays.asList(StringUtil.toLongArray(StringPool.COMMA, authOperaReq.getId()));
+
         //先判断三方余额是否充足
         List<UserWithdrawal> userWithdrawals = baseMapper.selectList(Wrappers.<UserWithdrawal>lambdaQuery()
                 .in(UserWithdrawal::getId, ids)

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

@@ -27,6 +27,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.Comparator;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -73,6 +74,12 @@ public class VideoLessonGroupServiceImpl extends ServiceImpl<VideoLessonGroupDao
         return page.setRecords(baseMapper.selectPage(page, query));
     }
 
+    public List<VideoLessonGroupVo> selectPage(VideoLessonGroupSearch query) {
+        List<VideoLessonGroupVo> list = baseMapper.selectPage(null, query);
+        List<VideoLessonGroupVo> collect = list.stream().sorted(Comparator.comparing(VideoLessonGroupVo::getCountStudent, Comparator.reverseOrder())).limit(2).collect(Collectors.toList());
+        return collect;
+    }
+
     /**
      * @Description: 根据组id查详情
      * @Author: cy
@@ -121,15 +128,15 @@ public class VideoLessonGroupServiceImpl extends ServiceImpl<VideoLessonGroupDao
         //推送
         VideoLessonGroup lessonGroup = baseMapper.selectById(examineVo.getId());
         String status = examineVo.getAuditStatus();
-        Map<Long,String> receivers = new HashMap<>();
+        Map<Long, String> receivers = new HashMap<>();
         SysUser teacher = sysUserFeignService.queryUserById(lessonGroup.getTeacherId());
         receivers.put(lessonGroup.getTeacherId(), teacher.getPhone());
         if (status.equals("PASS")) {
             try {
                 sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.VIDEO_SHEET_AUTH_PASS,
-                        receivers, null, 0, null, ClientEnum.TEACHER.getCode(),lessonGroup.getLessonName());
-            }catch (Exception e){
-                log.warn("视频课审核失败,{}",e.getMessage());
+                        receivers, null, 0, null, ClientEnum.TEACHER.getCode(), lessonGroup.getLessonName());
+            } catch (Exception e) {
+                log.warn("视频课审核失败,{}", e.getMessage());
             }
         } else {
             try {
@@ -138,9 +145,9 @@ public class VideoLessonGroupServiceImpl extends ServiceImpl<VideoLessonGroupDao
                     remark = examineVo.getRemarks();
                 }
                 sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.VIDEO_SHEET_AUTH_UNPASS,
-                        receivers, null, 0, null, ClientEnum.TEACHER.getCode(),lessonGroup.getLessonName(),remark);
-            }catch (Exception e){
-                log.warn("视频课审核失败,{}",e.getMessage());
+                        receivers, null, 0, null, ClientEnum.TEACHER.getCode(), lessonGroup.getLessonName(), remark);
+            } catch (Exception e) {
+                log.warn("视频课审核失败,{}", e.getMessage());
             }
         }
 

+ 47 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/CourseHomeworkDetailVo.java

@@ -27,6 +27,20 @@ public class CourseHomeworkDetailVo {
     @ApiModelProperty("课程组id")
     private Long courseGroupId;
 
+    @ApiModelProperty("课程组名")
+    private String courseGroupName;
+
+    @ApiModelProperty("课堂编号-第几堂课")
+    private Integer classNum;
+
+
+    @ApiModelProperty("群聊id")
+    private String imGroupId;
+
+
+    @ApiModelProperty("学员人数")
+    private Integer studentNum;
+
     @ApiModelProperty("学生课程作业id")
     private Long studentHomeworkId;
 
@@ -107,6 +121,39 @@ public class CourseHomeworkDetailVo {
     @ApiModelProperty("作业过期 1:已过期 0:未过期")
     private Integer homeworkExpire;
 
+
+    public String getCourseGroupName() {
+        return courseGroupName;
+    }
+
+    public void setCourseGroupName(String courseGroupName) {
+        this.courseGroupName = courseGroupName;
+    }
+
+    public Integer getClassNum() {
+        return classNum;
+    }
+
+    public void setClassNum(Integer classNum) {
+        this.classNum = classNum;
+    }
+
+    public String getImGroupId() {
+        return imGroupId;
+    }
+
+    public void setImGroupId(String imGroupId) {
+        this.imGroupId = imGroupId;
+    }
+
+    public Integer getStudentNum() {
+        return studentNum;
+    }
+
+    public void setStudentNum(Integer studentNum) {
+        this.studentNum = studentNum;
+    }
+
     public Integer getHomeworkExpire() {
         return homeworkExpire;
     }

+ 174 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/PianoClassVo.java

@@ -0,0 +1,174 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.yonge.cooleshow.common.entity.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * @Author: cy
+ * @Date: 2022/6/27
+ */
+@ApiModel
+public class PianoClassVo extends BaseEntity {
+    @ApiModelProperty("课程id")
+    private Long courseId;
+
+    @ApiModelProperty("课程组id")
+    private Long courseGroupId;
+
+    @ApiModelProperty("课程组名称")
+    private String courseGroupName;
+
+    @ApiModelProperty("声部id")
+    private Long subjectId;
+
+    @ApiModelProperty("声部名称")
+    private String subjectName;
+
+    @ApiModelProperty("老师id")
+    private Long teacherId;
+
+    @ApiModelProperty("老师姓名")
+    private String teacherName;
+
+    @ApiModelProperty("老师真实姓名")
+    private String teacherRealName;
+
+    @ApiModelProperty("老师头像")
+    private String avatar;
+
+    @ApiModelProperty("课程状态 NOT_START未开始 ING进行中 COMPLETE已完成")
+    private String status;
+
+    @ApiModelProperty("群聊id")
+    private String imGroupId;
+
+    @ApiModelProperty("开始时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date startTime;
+
+    @ApiModelProperty("结束时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date endTime;
+
+    @ApiModelProperty("学生考勤 0:异常 1:正常")
+    private Integer studentSign;
+
+    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 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 Long getSubjectId() {
+        return subjectId;
+    }
+
+    public void setSubjectId(Long subjectId) {
+        this.subjectId = subjectId;
+    }
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
+    public Long getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Long teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+
+    public String getTeacherRealName() {
+        return teacherRealName;
+    }
+
+    public void setTeacherRealName(String teacherRealName) {
+        this.teacherRealName = teacherRealName;
+    }
+
+    public String getAvatar() {
+        return avatar;
+    }
+
+    public void setAvatar(String avatar) {
+        this.avatar = avatar;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    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 Integer getStudentSign() {
+        return studentSign;
+    }
+
+    public void setStudentSign(Integer studentSign) {
+        this.studentSign = studentSign;
+    }
+}

+ 4 - 4
cooleshow-user/user-biz/src/main/resources/config/contracts/latest_contract_template.ftl

@@ -96,17 +96,17 @@
                         <span>身份证号:${userInfo.idCardNo!}</span>
                     </div>
                 </#if>
-                <#if userInfo.subjectName?default("")?trim?length gt 1>
+                <#--<#if userInfo.subjectName?default("")?trim?length gt 1>
                 <div class="iInfo">
                     <span>所在声部:${userInfo.subjectName!}</span>
                 </div>
-                </#if>
+                </#if>-->
             </div>
         </div>
         <div>(本协议中“乙方“指学员及家长;”乙方学员“指购买甲方产品或服务的学员;”乙方家长“仅指乙方学员的法定监护人。)</div>
 
-        <p class="underline bold">重要须知:在注册或购买使用甲方提供的产品、服务之前,请您务必审慎阅读、充分理解本使用协议各条款内容, 特别是免除或者限制甲方责任的条款、对您权利进行限制的条款、约定争议解决方式和司法管辖的条款等。 限制、免责条款或者其他涉及您重大权益的条款可能以加粗、加下划线等形式提示您重点注意。您注册或购买使用甲方提供的产品和服务,均视为您同意本使用协议,以及同意接受本使用协议的约束。</p>
-        <p class="underline bold">如无特别说明 ,下列术语在本协议中的定义为:管乐迷平台(下称“本平台”),即管乐迷APP;(下称“本平台”)指由甲方提供的器乐教学全流程辅助系统,包括媒体资料,教师点评,课前、课中、课后管理等服务;乐器练习云教练 (下称“本系统”),指由甲方提供和维护的器乐辅助练习系统;具体以该系统实际提供为准。该系统将根据实际需要进行调整和增减,乙方使用平台时需遵守本服务协议。</p>
+        <#--<p class="underline bold">重要须知:在注册或购买使用甲方提供的产品、服务之前,请您务必审慎阅读、充分理解本使用协议各条款内容, 特别是免除或者限制甲方责任的条款、对您权利进行限制的条款、约定争议解决方式和司法管辖的条款等。 限制、免责条款或者其他涉及您重大权益的条款可能以加粗、加下划线等形式提示您重点注意。您注册或购买使用甲方提供的产品和服务,均视为您同意本使用协议,以及同意接受本使用协议的约束。</p>
+        <p class="underline bold">如无特别说明 ,下列术语在本协议中的定义为:管乐迷平台(下称“本平台”),即管乐迷APP;(下称“本平台”)指由甲方提供的器乐教学全流程辅助系统,包括媒体资料,教师点评,课前、课中、课后管理等服务;乐器练习云教练 (下称“本系统”),指由甲方提供和维护的器乐辅助练习系统;具体以该系统实际提供为准。该系统将根据实际需要进行调整和增减,乙方使用平台时需遵守本服务协议。</p>-->
 
 		${contractMainContent!}
         

+ 4 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseHomeworkMapper.xml

@@ -188,6 +188,9 @@
         ,ch.create_time_ as decorateTime
         ,sch.attachments_ as studentAttachments
         ,sch.teacher_replied_ as teacherReplied
+        ,cg.id_ as courseGroupId
+        ,cg.name_ as courseGroupName
+        ,cs.class_num_ as classNum
         ,sch.submit_time_ as submitTime
         ,sch.id_ as studentHomeworkId
         ,sch.student_id_ as studentId
@@ -203,6 +206,7 @@
         ,if(sch.teacher_replied_ is null or sch.teacher_replied_ = '',0,1) as reviewHomework
         ,if(sch.id_ is not null and date_add(sch.submit_time_,INTERVAL #{homeworkExpireTime} DAY) &lt; now(),1,0) as homeworkExpire
         from course_schedule cs
+        left join course_group cg on cs.course_group_id_ = cg.id_
         left join course_homework ch on ch.course_schedule_id_ = cs.id_
         left join course_schedule_student_payment cssp on cs.id_ = cssp.course_id_
         left join student_course_homework sch  on sch.course_schedule_id_ = cssp.course_id_ and sch.student_id_ = cssp.user_id_

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

@@ -699,7 +699,7 @@
         left join course_schedule_replied csr on cs.id_ = csr.course_schedule_id_
         where cs.teacher_id_ = #{userId} and cs.status_ = 'COMPLETE' and cs.type_ = 'PRACTICE'
         and csr.student_replied_ is not null
-        and YEARWEEK(date_format(csr.create_time_,'%Y-%m-%d'),7) = YEARWEEK(now(),7)
+        and YEARWEEK(date_format(csr.student_replied_time_,'%Y-%m-%d'),7) = YEARWEEK(now(),7)
     </select>
     <select id="selectStartTime" resultType="java.lang.String" parameterType="java.lang.String">
         SELECT s.start_time_
@@ -838,4 +838,40 @@
             #{item}
         </foreach>
     </update>
+    <select id="queryPianoClass" resultType="com.yonge.cooleshow.biz.dal.vo.PianoClassVo">
+        SELECT DISTINCT
+            s.id_ AS courseId,
+            g.id_ AS courseGroupId,
+            CONCAT(g.name_,'-第',s.class_num_,'课') AS courseGroupName,
+            b.id_ AS subjectId,
+            b.name_ AS subjectName,
+            s.teacher_id_ AS teacherId,
+            u.username_ AS teacherName,
+            u.real_name_ AS teacherRealName,
+            u.avatar_ AS avatar,
+            s.status_ AS `status`,
+            i.id_ AS imGroupId,
+            s.start_time_ AS startTime,
+            s.end_time_ AS endTime,
+            CASE WHEN a.sign_in_time_ IS NOT NULL THEN 1 ELSE 0 END AS studentSign
+        FROM course_schedule s
+        LEFT JOIN sys_user u ON s.teacher_id_=u.id_
+        LEFT JOIN course_group g ON s.course_group_id_=g.id_
+        LEFT JOIN `subject` b ON g.subject_id_=b.id_
+        LEFT JOIN course_schedule_student_payment p ON s.id_=p.course_id_
+        LEFT JOIN student_attendance a ON s.id_=a.course_group_id_
+        LEFT JOIN im_group i ON s.course_group_id_=i.course_group_id_
+        WHERE s.type_='PIANO_ROOM_CLASS'
+        AND p.user_id_=#{param.studentId}
+        <if test="param.status !=null and param.status !=''">
+            AND s.status_ = #{param.status}
+        </if>
+        <if test="param.subjectId !=null">
+            AND b.id_ = #{param.subjectId}
+        </if>
+        <if test="param.classMonth !=null">
+            <![CDATA[ AND s.class_date_ >= #{param.startDate} ]]>
+            <![CDATA[ AND s.class_date_ <= #{param.endDate} ]]>
+        </if>
+    </select>
 </mapper>

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

@@ -147,9 +147,9 @@
 		       smcr.score_, smcr.intonation_, smcr.cadence_,
 		       smcr.integrity_, smcr.record_file_path_, smcr.video_file_path_, smcr.client_id_, smcr.device_type_, smcr.play_time_,
 		       smcr.monday_, smcr.create_time_,
-			sms.name_ sys_music_score_name_
+			sms.music_sheet_name_ sys_music_score_name_,if(smcr.create_time_ is not null and date_add(smcr.create_time_,INTERVAL #{expireTime} DAY) &lt; now(),1,0) as expire
 		FROM sys_music_compare_record smcr
-		LEFT JOIN sys_music_score sms on smcr.music_sheet_id_ = sms.id_
+		LEFT JOIN music_sheet sms on smcr.music_sheet_id_ = sms.id_
 		<include refid="queryCondition"/>
 		ORDER BY id_ DESC
 		<include refid="global.limit"/>

+ 6 - 3
cooleshow-user/user-biz/src/main/resources/config/mybatis/UserWithdrawalMapper.xml

@@ -91,6 +91,9 @@
         left join sys_user u on t.user_id_ = u.id_
             left join sys_user au on t.auth_user_id_ = au.id_
         <where>
+            <if test="param.userId !=null">
+                AND t.user_id_ = #{param.userId}
+            </if>
             <if test="null != param.search and '' != param.search">
                 AND (
                     t.user_id_ LIKE CONCAT('%', #{param.search}, '%') or
@@ -120,10 +123,10 @@
                 AND t.trans_no_ LIKE CONCAT('%', #{transNo}, '%')
             </if>
             <if test="param.startTime !=null">
-                <![CDATA[AND t.auth_time_ >= #{param.startTime} ]]>
+                <![CDATA[AND t.create_time_ >= #{param.startTime} ]]>
             </if>
             <if test="param.endTime !=null">
-                <![CDATA[AND t.auth_time_ < #{param.endTime} ]]>
+                <![CDATA[AND t.create_time_ < #{param.endTime} ]]>
             </if>
         </where>
         order by t.create_time_ desc
@@ -133,7 +136,7 @@
         <include refid="selectSql"/>
     </select>
 
-    <select id="selectList" resultType="com.yonge.cooleshow.biz.dal.vo.UserWithdrawalVo">
+    <select id="selectAllList" resultType="com.yonge.cooleshow.biz.dal.vo.UserWithdrawalVo">
         <include refid="selectSql"/>
     </select>
 

+ 13 - 0
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/StudentCourseScheduleController.java

@@ -169,5 +169,18 @@ public class StudentCourseScheduleController extends BaseController {
     public HttpResponseResult<List<TeacherSubjectPrice>> getTeacherSubjectPrice(@NotNull Long teacherId) {
         return succeed(courseScheduleService.teacherSubjectPrice(teacherId));
     }
+
+    @ApiOperation("学生端-我的课程-琴房课列表")
+    @PostMapping("/queryPianoClass")
+    public HttpResponseResult<PageInfo<PianoClassVo>> queryPianoClass(@RequestBody MyCourseSearch search) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+
+        search.setStudentId(user.getId());
+        IPage<PianoClassVo> pages = courseScheduleService.queryPianoClass(PageUtil.getPage(search), search);
+        return succeed(PageUtil.pageInfo(pages));
+    }
 }
 

+ 0 - 6
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/SysUserContractRecordController.java

@@ -3,18 +3,13 @@ package com.yonge.cooleshow.student.controller;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.entity.ContractTemplate;
-import com.yonge.cooleshow.biz.dal.entity.SysUserContractRecord;
-import com.yonge.cooleshow.biz.dal.enums.DealStatusEnum;
-import com.yonge.cooleshow.biz.dal.sdk.WithdrawSdk;
 import com.yonge.cooleshow.biz.dal.service.ContractService;
 import com.yonge.cooleshow.biz.dal.service.ContractTemplateService;
 import com.yonge.cooleshow.biz.dal.service.SysUserContractRecordService;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
-import com.yonge.cooleshow.common.enums.ContractTemplateSourceEnum;
 import com.yonge.cooleshow.common.enums.ContractTemplateTypeEnum;
 import com.yonge.cooleshow.common.enums.SysUserType;
-import com.yonge.cooleshow.common.service.IdGeneratorService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -85,6 +80,5 @@ public class SysUserContractRecordController extends BaseController {
         }
         return contractService.queryProductContract(user.getId(), SysUserType.STUDENT, contractType);
     }
-
 }
 

+ 1 - 1
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherCourseScheduleController.java

@@ -219,7 +219,7 @@ public class TeacherCourseScheduleController extends BaseController {
             @ApiImplicitParam(name = "month", dataType = "String", value = "月份,yyyy-mm"),
             @ApiImplicitParam(name = "status", dataType = "String", value = "课程状态"),
     })
-    @ApiOperation("课程列表")
+    @ApiOperation("琴房课程列表")
     @PostMapping("/selectCourseList")
     public HttpResponseResult<PageInfo<CourseScheduleRecordVo>> selectCourseList(@RequestBody Map<String, Object> param) {
         SysUser user = sysUserFeignService.queryUserInfo();

+ 30 - 0
cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/open/OpenTeacherController.java

@@ -0,0 +1,30 @@
+package com.yonge.cooleshow.website.controller.open;
+
+import com.yonge.cooleshow.biz.dal.service.TeacherService;
+import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import io.swagger.annotations.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/open/teacher")
+@Api(value = "开放老师接口", tags = "开放老师接口")
+public class OpenTeacherController extends BaseController {
+    @Autowired
+    private TeacherService teacherService;
+
+    /**
+     * 查询单条
+     */
+    @GetMapping("/detail/{id}")
+    @ApiOperation(value = "详情", notes = "传入id")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "id", paramType = "path", dataType = "long", required = true),
+    })
+    public HttpResponseResult<TeacherVo> detail(@PathVariable("id") Long userId) {
+        TeacherVo detail = teacherService.detail(userId);
+        return succeed(detail);
+    }
+}

+ 29 - 6
cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/open/OpenVideoGroupController.java

@@ -4,27 +4,31 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonGroupSearch;
+import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonSearch;
 import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroup;
+import com.yonge.cooleshow.biz.dal.service.TeacherService;
+import com.yonge.cooleshow.biz.dal.service.VideoLessonGroupDetailService;
 import com.yonge.cooleshow.biz.dal.service.VideoLessonGroupService;
+import com.yonge.cooleshow.biz.dal.vo.*;
 import com.yonge.toolset.mybatis.support.PageUtil;
 import com.yonge.cooleshow.biz.dal.valid.AddGroup;
 import com.yonge.cooleshow.biz.dal.valid.UpdateGroup;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupUpVo;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupVo;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonStudentVo;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonVo;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.toolset.base.page.PageInfo;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.constraints.NotNull;
+import java.util.List;
 
 /**
  * 视频课基本信息表 web 控制层
@@ -38,9 +42,12 @@ import javax.validation.constraints.NotNull;
 public class OpenVideoGroupController extends BaseController {
     @Autowired
     private SysUserFeignService sysUserFeignService;
-
+    @Autowired
+    private TeacherService teacherService;
     @Autowired
     private VideoLessonGroupService videoLessonGroupService;
+    @Autowired
+    private VideoLessonGroupDetailService videoLessonGroupDetailService;
 
     /**
     * @Description: 查询视频课组
@@ -54,7 +61,6 @@ public class OpenVideoGroupController extends BaseController {
         return succeed(PageUtil.pageInfo(pages));
     }
 
-
     /**
      * @Description: 根据组id查询视频课&视频课组
      * @Author: cy
@@ -66,4 +72,21 @@ public class OpenVideoGroupController extends BaseController {
         return succeed(videoLessonGroupService.selectVideoLesson(groupId));
     }
 
+    /**
+     * @Description: 根据视频课组id查详情
+     * @Author: cy
+     * @Date: 2022/6/27
+     */
+    @ApiOperation(value = "查询视频课", httpMethod = "POST", consumes = "application/json", produces = "application/json")
+    @PostMapping(value = "/info/page", consumes = "application/json", produces = "application/json")
+    public HttpResponseResult<PageInfo<VideoLessonGroupDetailVo>> page(@RequestBody VideoLessonSearch query) {
+        IPage<VideoLessonGroupDetailVo> pages = videoLessonGroupDetailService.selectPage(PageUtil.getPage(query), query);
+        return succeed(PageUtil.pageInfo(pages));
+    }
+
+    @ApiOperation(value = "其他课程")
+    @PostMapping("/otherLesson")
+    public HttpResponseResult<List<VideoLessonGroupVo>> otherLesson(@RequestBody VideoLessonGroupSearch query) {
+        return succeed(videoLessonGroupService.selectPage(query));
+    }
 }