ソースを参照

Merge remote-tracking branch 'origin/master'

weifanli 3 年 前
コミット
dde10a06c3
76 ファイル変更1342 行追加427 行削除
  1. 27 0
      cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/AdminFeignService.java
  2. 4 3
      cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/CmsFeignService.java
  3. 17 0
      cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/fallback/AdminFeignServiceFallback.java
  4. 2 2
      cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/fallback/CmsFeignServiceFallback.java
  5. 19 5
      cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/controller/NewsController.java
  6. 4 4
      cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/controller/queryinfo/NewsInformationQueryInfo.java
  7. 10 1
      cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/dal/dao/SysNewsInformationDao.java
  8. 12 2
      cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/dal/entity/SysNewsInformation.java
  9. 13 1
      cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/dto/AppParam.java
  10. 2 0
      cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/service/SysNewsInformationService.java
  11. 6 2
      cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/service/impl/SysNewsInformationServiceImpl.java
  12. 1 0
      cooleshow-cms/src/main/resources/config/mybatis/HelpCenterContentMapper.xml
  13. 13 4
      cooleshow-cms/src/main/resources/config/mybatis/SysNewsInformationMapper.xml
  14. 4 7
      cooleshow-task/src/main/java/com/yonge/cooleshow/task/jobs/NoticeReleaseTask.java
  15. 20 0
      cooleshow-task/src/main/java/com/yonge/cooleshow/task/jobs/TeacherSendTask.java
  16. 31 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/client/AdminFeignClient.java
  17. 28 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/AdminSysUserContractRecordController.java
  18. 12 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/CourseHomeworkController.java
  19. 0 39
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/SysUserContractsController.java
  20. 14 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/AppVersionInfoDao.java
  21. 6 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleDao.java
  22. 16 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/MusicAlbumDao.java
  23. 8 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/MusicSheetDao.java
  24. 20 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/SysUserContractRecordDao.java
  25. 0 31
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/SysUserContractsDao.java
  26. 3 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/VideoLessonGroupDao.java
  27. 36 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/AppAuditVersionSearch.java
  28. 34 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/MusicAlbumSearch.java
  29. 35 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/StudentMusicSheetSearch.java
  30. 34 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/TeacherStyleSearch.java
  31. 34 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/VideoLessonGroupSearch.java
  32. 14 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/CourseGroup.java
  33. 13 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MusicAlbum.java
  34. 12 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MusicSheet.java
  35. 117 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/SysUserContractRecord.java
  36. 0 125
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/SysUserContracts.java
  37. 13 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TeacherStyleVideo.java
  38. 14 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/VideoLessonGroup.java
  39. 39 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/AppVersionStatusEnum.java
  40. 42 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/ContractTypeEnum.java
  41. 19 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/AppVersionInfoService.java
  42. 10 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseScheduleService.java
  43. 9 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicAlbumService.java
  44. 8 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicSheetService.java
  45. 17 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/SysUserContractRecordService.java
  46. 0 27
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/SysUserContractsService.java
  47. 17 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/AppVersionInfoServiceImpl.java
  48. 28 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java
  49. 14 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicAlbumServiceImpl.java
  50. 12 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicSheetServiceImpl.java
  51. 29 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/SysUserContractRecordServiceImpl.java
  52. 0 35
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/SysUserContractsServiceImpl.java
  53. 4 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java
  54. 3 7
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VideoLessonGroupServiceImpl.java
  55. 97 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/HomeMusicSheetVo.java
  56. 11 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/LiveCourseGroupVo.java
  57. 53 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TodayNotRepliedAndNotDecorateHomeworkVo.java
  58. 6 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/AppVersionInfoMapper.xml
  59. 6 4
      cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseGroupMapper.xml
  60. 21 3
      cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  61. 58 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicAlbumMapper.xml
  62. 18 2
      cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicSheetMapper.xml
  63. 31 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/SysUserContractRecordMapper.xml
  64. 0 101
      cooleshow-user/user-biz/src/main/resources/config/mybatis/SysUserContractsMapper.xml
  65. 3 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherStyleVideoMapper.xml
  66. 13 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/VideoLessonGroupMapper.xml
  67. 11 1
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/MusicAlbumController.java
  68. 11 0
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/MusicSheetController.java
  69. 13 0
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/StudentCourseGroupController.java
  70. 10 2
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/StudentCourseScheduleController.java
  71. 28 0
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/StudentSysUserContractRecordController.java
  72. 11 0
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/SysConfigController.java
  73. 6 0
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/TeacherController.java
  74. 7 1
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/VideoLessonController.java
  75. 1 1
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherCourseScheduleController.java
  76. 28 0
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherSysUserContractRecordController.java

+ 27 - 0
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/AdminFeignService.java

@@ -0,0 +1,27 @@
+package com.yonge.cooleshow.api.feign;
+
+import com.yonge.cooleshow.api.feign.fallback.AdminFeignServiceFallback;
+import com.yonge.cooleshow.api.feign.fallback.MallAdminFeignServiceFallback;
+import com.yonge.cooleshow.common.constant.AppConstant;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.toolset.feign.config.FeignConfiguration;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-05-06
+ */
+@FeignClient(name = AppConstant.APPLICATION_ADMIN_SERVER, configuration = FeignConfiguration.class,
+             fallback = AdminFeignServiceFallback.class)
+public interface AdminFeignService {
+
+
+    /**
+     * 公告发布轮询
+     */
+    @GetMapping("/admin/teacherSend")
+    HttpResponseResult<Object> sendTodayNotRepliedAndNotDecorateHomework();
+}

+ 4 - 3
cooleshow-task/src/main/java/com/yonge/cooleshow/task/feign/CmsFeignService.java → cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/CmsFeignService.java

@@ -1,7 +1,8 @@
-package com.yonge.cooleshow.task.feign;
+package com.yonge.cooleshow.api.feign;
 
+import com.yonge.cooleshow.common.constant.AppConstant;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
-import com.yonge.cooleshow.task.feign.fallback.CmsFeignServiceFallback;
+import com.yonge.cooleshow.api.feign.fallback.CmsFeignServiceFallback;
 import com.yonge.toolset.feign.config.FeignConfiguration;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -13,7 +14,7 @@ import org.springframework.web.bind.annotation.GetMapping;
  * @date 2022-04-29
  */
 
-@FeignClient(name = "cms-server", configuration = FeignConfiguration.class, fallback = CmsFeignServiceFallback.class)
+@FeignClient(name = AppConstant.APPLICATION_CMS_SERVER, configuration = FeignConfiguration.class, fallback = CmsFeignServiceFallback.class)
 public interface CmsFeignService {
 
     /**

+ 17 - 0
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/fallback/AdminFeignServiceFallback.java

@@ -0,0 +1,17 @@
+package com.yonge.cooleshow.api.feign.fallback;
+
+import com.yonge.cooleshow.api.feign.AdminFeignService;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-05-06
+ */
+public class AdminFeignServiceFallback implements AdminFeignService {
+    @Override
+    public HttpResponseResult<Object> sendTodayNotRepliedAndNotDecorateHomework() {
+        return null;
+    }
+}

+ 2 - 2
cooleshow-task/src/main/java/com/yonge/cooleshow/task/feign/fallback/CmsFeignServiceFallback.java → cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/fallback/CmsFeignServiceFallback.java

@@ -1,7 +1,7 @@
-package com.yonge.cooleshow.task.feign.fallback;
+package com.yonge.cooleshow.api.feign.fallback;
 
+import com.yonge.cooleshow.api.feign.CmsFeignService;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
-import com.yonge.cooleshow.task.feign.CmsFeignService;
 
 /**
  * Description

+ 19 - 5
cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/controller/NewsController.java

@@ -72,6 +72,9 @@ public class NewsController extends BaseController {
 		if (!check.getStatus()) {
 			return check;
 		}
+		if (StringUtil.isEmpty(newsInfo.getAttribute1())) {
+			newsInfo.setAttribute1("0");
+		}
 		newsInfo.setStatus(NewsStatusEnum.HIDDEN);
 		newsInfo.setCreateTime(new Date());
 		newsInfo.setCreateBy(sysUser.getId());
@@ -114,8 +117,8 @@ public class NewsController extends BaseController {
 			}
 		}
 
-		// 1 6
-		if (newsInfo.getType() == 1  || newsInfo.getType() == 6) {
+		// 6
+		if (newsInfo.getType() == 6) {
 			if (StringUtil.isEmpty(newsInfo.getContent())) {
 				return failed("内容不能为空");
 			}
@@ -158,6 +161,9 @@ public class NewsController extends BaseController {
 		if(NewsStatusEnum.SHOW.getCode().equals(sysNewsInformationDto.getStatus().getCode())) {
 			return failed("启用状态下,不可修改");
 		}
+		if (StringUtil.isEmpty(newsInfo.getAttribute1())) {
+			newsInfo.setAttribute1("0");
+		}
 		if (newsInfo.getType() == 2) {
 			if ( "IMAGE".equals(newsInfo.getAttribute2())) {
 				newsInfo.setLinkUrl("");
@@ -207,9 +213,18 @@ public class NewsController extends BaseController {
 	@ApiOperation("app首页banner、按钮、资讯")
 	@PostMapping(value = "/app/home")
 	public HttpResponseResult<AppHomeDto> appHome(@RequestBody AppParam param) {
-		AppHomeDto appHomeDto = new AppHomeDto();
+
 		NewsInformationQueryInfo queryInfo = new NewsInformationQueryInfo();
-		queryInfo.setStatus(NewsStatusEnum.SHOW);
+		//  查询app版本
+		String status = sysNewsInformationService.selectAppVersionInfo(param.getPlatform(), param.getVersion());
+		if ("auditing".equals(status)) {
+			queryInfo.setVersion("1");
+		}  else {
+			queryInfo.setVersion("0");
+		}
+
+		AppHomeDto appHomeDto = new AppHomeDto();
+		queryInfo.setStatus(NewsStatusEnum.SHOW.getCode().toString());
 		queryInfo.setPlatformType("STUDENT");
 		// 1热门资讯
 		queryInfo.setType(1);
@@ -236,7 +251,6 @@ public class NewsController extends BaseController {
 
 		// 按钮
 		queryInfo.setType(5);
-		queryInfo.setVersion(param.getVersion());
 		params = new HashMap<>();
 		MapUtil.populateMap(params, queryInfo);
 		appHomeDto.setAppMenu(sysNewsInformationService.selectPage(queryInfo).getRows());

+ 4 - 4
cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/controller/queryinfo/NewsInformationQueryInfo.java

@@ -25,7 +25,7 @@ public class NewsInformationQueryInfo extends QueryInfo {
 	private String subType;
 
 	@ApiModelProperty(value = "资讯状态(0:禁用,1:启用)", required = false)
-	private NewsStatusEnum status;
+	private String status;
 
 	@ApiModelProperty(value = "编号/标题", required = false)
 	private String title;
@@ -39,7 +39,7 @@ public class NewsInformationQueryInfo extends QueryInfo {
 	@ApiModelProperty(value = "需排除编号")
 	private List<Long> excludeIds;
 
-	@ApiModelProperty("版本号")
+	@ApiModelProperty("是否审核版本 0:否,1:是")
 	private String version;
 
 	@ApiModelProperty("广告类型  IMAGE:图片,VIDEO:视频")
@@ -72,11 +72,11 @@ public class NewsInformationQueryInfo extends QueryInfo {
 		this.subType = subType;
 	}
 
-	public NewsStatusEnum getStatus() {
+	public String getStatus() {
 		return status;
 	}
 
-	public void setStatus(NewsStatusEnum status) {
+	public void setStatus(String status) {
 		this.status = status;
 	}
 

+ 10 - 1
cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/dal/dao/SysNewsInformationDao.java

@@ -60,7 +60,7 @@ public interface SysNewsInformationDao extends BaseDAO<Long, SysNewsInformation>
 	 *
 	 * @param id
 	 */
-    void updateStatus(Long id);
+	void updateStatus(Long id);
 
 	/**
 	 * 查看广告版本
@@ -70,4 +70,13 @@ public interface SysNewsInformationDao extends BaseDAO<Long, SysNewsInformation>
 	 * @return
 	 */
 	Integer selectByVersionAndStatus(@Param("version") String version, @Param("status") Integer status);
+
+	/**
+	 * 获取当前app版本是否为审核状态
+	 *
+	 * @param platform 平台
+	 * @param version 版本
+	 * @return
+	 */
+	String selectAppVersionInfo(@Param("platform") String platform, @Param("version") String version);
 }

+ 12 - 2
cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/dal/entity/SysNewsInformation.java

@@ -35,7 +35,7 @@ public class SysNewsInformation {
 	private String videoCoverImage;
 
 	/** 类型 */
-	@ApiModelProperty(value = "类型,1热门资讯,2开屏广告,3闪页管理,4轮播图管理 5app按钮管理", required = true)
+	@ApiModelProperty(value = "类型,1热门资讯,2开屏广告,3闪页管理,4轮播图管理 5app按钮管理 6:乐理章节", required = true)
 	@NotNull(message = "类型不能为空")
 	private Integer type;
 	
@@ -81,7 +81,7 @@ public class SysNewsInformation {
 
 	private Boolean delFlag= false;
 
-	@ApiModelProperty("版本号")
+	@ApiModelProperty("是否审核版本 0:否,1:是")
 	private String attribute1;
 
 	@ApiModelProperty("广告类型  IMAGE:图片,VIDEO:视频")
@@ -91,6 +91,9 @@ public class SysNewsInformation {
 	
 	private String subjectName;
 
+	@ApiModelProperty("链接方式 IN :内部链接   OUT:外部链接")
+	private String linkType;
+
 	public Integer getShowTime() {
 		return showTime;
 	}
@@ -288,4 +291,11 @@ public class SysNewsInformation {
 		return ToStringBuilder.reflectionToString(this);
 	}
 
+	public String getLinkType() {
+		return linkType;
+	}
+
+	public void setLinkType(String linkType) {
+		this.linkType = linkType;
+	}
 }

+ 13 - 1
cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/dto/AppParam.java

@@ -12,9 +12,13 @@ import io.swagger.annotations.ApiModelProperty;
 @ApiModel("app首页查询参数")
 public class AppParam {
 
-    @ApiModelProperty("版本号")
+    @ApiModelProperty(value = "版本号",required = true)
     private String version;
 
+    @ApiModelProperty(value = "平台",required = true)
+    private String platform;
+
+
     public String getVersion() {
         return version;
     }
@@ -22,4 +26,12 @@ public class AppParam {
     public void setVersion(String version) {
         this.version = version;
     }
+
+    public String getPlatform() {
+        return platform;
+    }
+
+    public void setPlatform(String platform) {
+        this.platform = platform;
+    }
 }

+ 2 - 0
cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/service/SysNewsInformationService.java

@@ -62,4 +62,6 @@ public interface SysNewsInformationService extends BaseService<Long, SysNewsInfo
 	 * @return
 	 */
     boolean updateStatus(Long id);
+
+    String selectAppVersionInfo(String platform, String version);
 }

+ 6 - 2
cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/service/impl/SysNewsInformationServiceImpl.java

@@ -46,7 +46,7 @@ public class SysNewsInformationServiceImpl extends BaseServiceImpl<Long, SysNews
 	public Map<String,PageInfo<SysNewsInformation>> getHomeList(SysUser user, NewsInformationQueryInfo queryInfo) {
 		//1精彩活动,2热门资讯,3banner类型
 		Map<String,PageInfo<SysNewsInformation>> homeList = new HashMap<>();
-		queryInfo.setStatus(NewsStatusEnum.SHOW);
+		queryInfo.setStatus(NewsStatusEnum.SHOW.getCode().toString());
 		
 		String memo = queryInfo.getMemo();
 		
@@ -118,7 +118,7 @@ public class SysNewsInformationServiceImpl extends BaseServiceImpl<Long, SysNews
 	}
 
 	private PageInfo<SysNewsInformation> queryHomePage(QueryInfo queryInfo) {
-		PageInfo<SysNewsInformation> pageInfo = new PageInfo<SysNewsInformation>(queryInfo.getPage(), queryInfo.getRows());
+		PageInfo<SysNewsInformation> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
 		Map<String, Object> params = new HashMap<String, Object>();
 		MapUtil.populateMap(params, queryInfo);
 		
@@ -197,4 +197,8 @@ public class SysNewsInformationServiceImpl extends BaseServiceImpl<Long, SysNews
 		return true;
     }
 
+	@Override
+	public String selectAppVersionInfo(String platform, String version) {
+		return sysNewsInformationDao.selectAppVersionInfo(platform, version);
+	}
 }

+ 1 - 0
cooleshow-cms/src/main/resources/config/mybatis/HelpCenterContentMapper.xml

@@ -236,5 +236,6 @@
 		where content.status_ = 0
 		and content.release_time_ &lt;= date_add(now(),interval 5 MINUTE)
 		and content.catalog_id_ = 2
+		and content.release_status_ = 0
 	</select>
 </mapper>

+ 13 - 4
cooleshow-cms/src/main/resources/config/mybatis/SysNewsInformationMapper.xml

@@ -28,6 +28,7 @@
 		<result column="attribute2_" property="attribute2" />
 		<result column="show_time_" property="showTime" />
 		<result column="update_by_" property="updateBy" />
+		<result column="link_type_" property="linkType" />
 		<result column="create_by_" property="createBy" />
 	</resultMap>
 	
@@ -46,7 +47,7 @@
 				and sni.sub_type_ = #{subType}
 			</if>
 			<if test="status != null">
-				and sni.status_ = #{status, typeHandler=com.yonge.toolset.mybatis.dal.CustomEnumTypeHandler}
+				and sni.status_ = #{status}
 			</if>
 			<if test="title != null">
 				and (sni.title_ like '%' #{title} '%'
@@ -95,8 +96,8 @@
 	
 	<!-- 向数据库增加一条记录 -->
 	<insert id="insert" parameterType="com.yonge.cooleshow.cms.dal.entity.SysNewsInformation" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		INSERT INTO sys_news_information (id_,title_,content_,cover_image_,video_cover_image_,type_,online_time_,offline_time_,sub_type_,status_,create_time_,update_time_,link_url_,href_target_,order_,del_flag_,memo_,attribute1_,attribute2_,subject_id_list_,create_by_,update_by_,show_time_)
-		VALUES(#{id},#{title},#{content},#{coverImage},#{videoCoverImage},#{type},#{onlineTime},#{offlineTime},#{subType},#{status, typeHandler=com.yonge.toolset.mybatis.dal.CustomEnumTypeHandler},now(),now(),#{linkUrl},#{hrefTarget},#{order},0,#{memo},#{attribute1},#{attribute2},#{subjectIdList},#{createBy},#{updateBy},#{showTime})
+		INSERT INTO sys_news_information (id_,title_,content_,cover_image_,video_cover_image_,type_,online_time_,offline_time_,sub_type_,status_,create_time_,update_time_,link_url_,href_target_,order_,del_flag_,memo_,attribute1_,attribute2_,subject_id_list_,create_by_,update_by_,show_time_,link_type_)
+		VALUES(#{id},#{title},#{content},#{coverImage},#{videoCoverImage},#{type},#{onlineTime},#{offlineTime},#{subType},#{status, typeHandler=com.yonge.toolset.mybatis.dal.CustomEnumTypeHandler},now(),now(),#{linkUrl},#{hrefTarget},#{order},0,#{memo},#{attribute1},#{attribute2},#{subjectIdList},#{createBy},#{updateBy},#{showTime},#{linkType})
 	</insert>
 	
 	<!-- 根据主键查询一条记录 -->
@@ -156,6 +157,9 @@
 			<if test="updateBy != null">
 				update_by_ = #{updateBy},
 			</if>
+			<if test="linkType != null">
+				link_type_ = #{linkType},
+			</if>
 			<if test="showTime != null">
 				show_time_ = #{showTime}
 			</if>
@@ -180,7 +184,12 @@
 		order by sni.status_ desc,sni.order_,sni.update_time_ desc
 		<include refid="global.limit"/>
 	</select>
-	
+
+	<select id="selectAppVersionInfo" resultType="java.lang.String">
+
+		select avi.status_ from app_version_info avi where avi.platform_ = #{platform} and avi.version_ = #{version}
+
+	</select>
 	<!-- 查询当前表的总记录数 -->
 	<select id="selectPageCount" resultType="int">
 		SELECT COUNT(sni.id_) FROM sys_news_information sni

+ 4 - 7
cooleshow-task/src/main/java/com/yonge/cooleshow/task/jobs/NoticeReleaseTask.java

@@ -2,15 +2,12 @@ package com.yonge.cooleshow.task.jobs;
 
 import com.yonge.cooleshow.task.core.BaseTask;
 import com.yonge.cooleshow.task.core.TaskException;
-import com.yonge.cooleshow.task.feign.CmsFeignService;
+import com.yonge.cooleshow.api.feign.CmsFeignService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
 
-/**
- * Description
- *
- * @author liujunchi
- * @date 2022-04-29
- */
+
+@Service
 public class NoticeReleaseTask  extends BaseTask {
 
     @Autowired

+ 20 - 0
cooleshow-task/src/main/java/com/yonge/cooleshow/task/jobs/TeacherSendTask.java

@@ -0,0 +1,20 @@
+package com.yonge.cooleshow.task.jobs;
+
+import com.yonge.cooleshow.api.feign.AdminFeignService;
+import com.yonge.cooleshow.api.feign.MallPortalFeignService;
+import com.yonge.cooleshow.task.core.BaseTask;
+import com.yonge.cooleshow.task.core.TaskException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class TeacherSendTask extends BaseTask {
+
+    @Autowired
+    private AdminFeignService adminFeignService;
+
+    @Override
+    public void execute() throws TaskException {
+        Object o = adminFeignService.sendTodayNotRepliedAndNotDecorateHomework();
+    }
+}

+ 31 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/client/AdminFeignClient.java

@@ -0,0 +1,31 @@
+package com.yonge.cooleshow.admin.client;
+
+import com.yonge.cooleshow.biz.dal.service.CourseScheduleService;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-05-06
+ */
+@ApiIgnore
+@RestController
+@RequestMapping("/feign-client/admin")
+public class AdminFeignClient {
+
+    @Autowired
+    private CourseScheduleService courseScheduleService;
+
+
+    @PostMapping(value = "/teacherSend")
+    public HttpResponseResult<Object> sendTodayNotRepliedAndNotDecorateHomework() {
+        courseScheduleService.sendTodayNotRepliedAndNotDecorateHomework();
+        return HttpResponseResult.succeed();
+    }
+}

+ 28 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/AdminSysUserContractRecordController.java

@@ -0,0 +1,28 @@
+package com.yonge.cooleshow.admin.controller;
+
+import com.yonge.cooleshow.biz.dal.service.SysUserContractRecordService;
+import com.yonge.cooleshow.common.controller.BaseController;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ * 用户协议记录表-一个用户一种协议一个版本一条记录(SysUserContractRecord)表控制层
+ *
+ * @author hgw
+ * @since 2022-05-07 15:04:05
+ */
+@Api(tags = "用户协议记录表-一个用户一种协议一个版本一条记录")
+@RestController
+@RequestMapping("/sysUserContractRecord")
+public class AdminSysUserContractRecordController extends BaseController {
+    /**
+     * 服务对象
+     */
+    @Resource
+    private SysUserContractRecordService sysUserContractRecordService;
+
+}
+

+ 12 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/CourseHomeworkController.java

@@ -4,6 +4,7 @@ import com.yonge.cooleshow.biz.dal.dto.search.HomeworkAdminSearch;
 import com.yonge.cooleshow.biz.dal.enums.CourseScheduleEnum;
 import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import com.yonge.cooleshow.biz.dal.service.CourseHomeworkService;
+import com.yonge.cooleshow.biz.dal.service.CourseScheduleService;
 import com.yonge.cooleshow.biz.dal.support.PageUtil;
 import com.yonge.cooleshow.biz.dal.vo.CourseHomeworkDetailVo;
 import com.yonge.cooleshow.biz.dal.vo.CourseHomeworkVo;
@@ -26,6 +27,8 @@ public class CourseHomeworkController extends BaseController {
     @Autowired
     private CourseHomeworkService courseHomeworkService;
 
+	@Autowired
+	private CourseScheduleService courseScheduleService;
 
 	@ApiOperation(value = "课后作业-列表", httpMethod = "POST", consumes = "application/json", produces = "application/json")
 	@PostMapping(value = "/list", consumes = "application/json", produces = "application/json")
@@ -43,4 +46,13 @@ public class CourseHomeworkController extends BaseController {
 															 @PathVariable("courseId") Long courseId) {
 		return succeed(courseHomeworkService.getCourseHomeworkDetailByCourseId(courseId));
 	}
+
+
+
+	@PostMapping(value = "/teacherSend")
+	@ApiOperation(value = "发送老师未评价和未布置作业消息")
+	public HttpResponseResult<Object> sendTodayNotRepliedAndNotDecorateHomework() {
+		courseScheduleService.sendTodayNotRepliedAndNotDecorateHomework();
+		return HttpResponseResult.succeed();
+	}
 }

+ 0 - 39
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/SysUserContractsController.java

@@ -1,39 +0,0 @@
-package com.yonge.cooleshow.admin.controller;
-
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import com.yonge.cooleshow.biz.dal.entity.SysUserContracts;
-import com.yonge.cooleshow.biz.dal.service.SysUserContractsService;
-import com.yonge.cooleshow.common.controller.BaseController;
-import com.yonge.cooleshow.common.entity.HttpResponseResult;
-
-@RequestMapping("sysUserContracts")
-@Api(tags = "用户协议服务")
-@RestController
-public class SysUserContractsController extends BaseController {
-
-	@Autowired
-	private SysUserContractsService sysUserContractsService;
-	
-    @ApiOperation(value = "查询学生最新协议")
-    @GetMapping("/getLatest")
-    @PreAuthorize("@pcs.hasPermissions('sysUserContracts/getLatest')")
-	public HttpResponseResult<SysUserContracts> getLatest(Long userId) {
-		
-		SysUserContracts sysUserContracts = sysUserContractsService.getLatestUserContract(userId);
-
-		if(sysUserContracts == null){
-			return failed("该学员尚未签署协议");
-		}
-
-		return succeed(sysUserContracts);
-	}
-
-}

+ 14 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/AppVersionInfoDao.java

@@ -1,9 +1,10 @@
 package com.yonge.cooleshow.biz.dal.dao;
 
-import java.util.List;
-
 import com.yonge.cooleshow.biz.dal.entity.AppVersionInfo;
 import com.yonge.toolset.mybatis.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 public interface AppVersionInfoDao extends BaseDAO<Long, AppVersionInfo> {
 
@@ -13,4 +14,15 @@ public interface AppVersionInfoDao extends BaseDAO<Long, AppVersionInfo> {
 	 * @param platform
 	 */
 	void batchUpdateStatus(String platform);
+
+
+	/**
+	 * 获取当前app版本是否为审核状态
+	 *
+	 * @param platform 平台
+	 * @param version 版本
+	 * @return
+	 */
+	AppVersionInfo selectAppVersionInfo(@Param("platform") String platform, @Param("version") String version);
+
 }

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

@@ -9,10 +9,10 @@ import com.yonge.cooleshow.biz.dal.dto.search.HomeworkSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.MyCourseSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.PracticeTeacherSearch;
 import com.yonge.cooleshow.biz.dal.entity.CourseSchedule;
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import com.yonge.cooleshow.biz.dal.vo.*;
 import org.apache.ibatis.annotations.Param;
 
-import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -125,10 +125,10 @@ public interface CourseScheduleDao extends BaseMapper<CourseSchedule> {
     void courseAdjust(CourseAdjustVo adjustVo);
 
     //学生端-首页-直播课
-    List<StudentHomePage.Live> selectLive();
+    List<StudentHomePage.Live> selectLive(YesOrNoEnum appAuditVersion);
 
     //学生端-首页-视频课
-    List<StudentHomePage.Video> selectVideo();
+    List<StudentHomePage.Video> selectVideo(YesOrNoEnum appAuditVersion);
 
     //学生端-首页-最近一堂课
     StudentHomePage.RecentCourses selectRecentCourses(Long studentId);
@@ -177,6 +177,9 @@ public interface CourseScheduleDao extends BaseMapper<CourseSchedule> {
     //根据老师id统计明日课程
     List<CountVo> selectTypeCount(@Param("teacherId")Long teacherId,@Param("tomorrow") String tomorrow);
 
+
+    List<TodayNotRepliedAndNotDecorateHomeworkVo> selectTodayNotRepliedAndNotDecorateHomework();
+
     //统计学员购买课程
     List<RepliedCountVo> countAllReplie(String today);
 

+ 16 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/MusicAlbumDao.java

@@ -46,5 +46,21 @@ public interface MusicAlbumDao extends BaseMapper<MusicAlbum> {
      */
     List<MusicAlbumVo> selectFavoriteNumAndMusicNum(@Param("records") List<MusicAlbumVo> records);
 
+
+    /**
+     * 根据id获取专辑信息
+     *
+     * @param musicAlbumId 专辑id
+     * @return
+     */
     MusicAlbumVo selectMusicAlbumById(@Param("musicAlbumId") Long musicAlbumId);
+
+    /**
+     * 学生专辑查询
+     *
+     * @param page  分页信息
+     * @param query 查询条件
+     * @return page
+     */
+    List<MusicAlbumVo> selectStudentPage(@Param("page") IPage<MusicAlbumVo> page, @Param("query") MusicAlbumSearch query);
 }

+ 8 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/MusicSheetDao.java

@@ -4,10 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.biz.dal.dto.search.*;
 import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
-import com.yonge.cooleshow.biz.dal.vo.MusicSheetDetailVo;
-import com.yonge.cooleshow.biz.dal.vo.MusicSheetVo;
-import com.yonge.cooleshow.biz.dal.vo.StudentMusicSheetOrderVo;
-import com.yonge.cooleshow.biz.dal.vo.TeacherMusicSheetVo;
+import com.yonge.cooleshow.biz.dal.vo.*;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -117,4 +114,11 @@ public interface MusicSheetDao extends BaseMapper<MusicSheet> {
      * @return
      */
     Integer selectTeacherMusicSheetCount(@Param("userId") Long userId);
+
+    /**
+     * 点播数量统计
+     *
+     * @return
+     */
+    HomeMusicSheetVo selectMusicNum();
 }

+ 20 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/SysUserContractRecordDao.java

@@ -0,0 +1,20 @@
+package com.yonge.cooleshow.biz.dal.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yonge.cooleshow.biz.dal.entity.SysUserContractRecord;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 用户协议记录表-一个用户一种协议一个版本一条记录(SysUserContractRecord)表数据库访问层
+ *
+ * @author hgw
+ * @since 2022-05-07 15:04:05
+ */
+public interface SysUserContractRecordDao extends BaseMapper<SysUserContractRecord> {
+
+    int insertBatch(@Param("entities") List<SysUserContractRecord> entities);
+
+}
+

+ 0 - 31
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/SysUserContractsDao.java

@@ -1,31 +0,0 @@
-package com.yonge.cooleshow.biz.dal.dao;
-
-import java.util.List;
-
-import org.apache.ibatis.annotations.Param;
-
-import com.yonge.cooleshow.biz.dal.entity.SysUserContracts;
-import com.yonge.toolset.mybatis.dal.BaseDAO;
-
-public interface SysUserContractsDao extends BaseDAO<Long, SysUserContracts> {
-
-    /**
-     * @describe 获取用户指定类型的协议记录
-     * @author Joburgess
-     * @date 2020.09.18
-     * @param userId:
-     * @param contractType:
-     * @return java.util.List<com.yonge.cooleshow.biz.dal.entity.SysUserContracts>
-     */
-    List<SysUserContracts> getUserContractWithType(@Param("userId") Long userId,
-                                                   @Param("contractType") SysUserContracts.ContractType contractType,
-                                                   @Param("version") Integer version);
-
-    /**
-     * 获取最近一次的协议
-     * @param userId
-     * @return
-     */
-    SysUserContracts getLatestUserContract(Long userId);
-
-}

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

@@ -41,4 +41,7 @@ public interface VideoLessonGroupDao extends BaseMapper<VideoLessonGroup> {
 
     //查询所有视频课组
     List<VideoLessonAuthGroup> queryGroupList(IPage<VideoLessonAuthGroup> page, @Param("param") VideoGroupSearch query);
+
+    //根据组id查详情
+    VideoLessonGroup selectGroupById(Long groupId);
 }

+ 36 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/AppAuditVersionSearch.java

@@ -0,0 +1,36 @@
+package com.yonge.cooleshow.biz.dal.dto.search;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-05-07
+ */
+@ApiModel("app审核版本参数")
+public class AppAuditVersionSearch {
+
+    @ApiModelProperty(value = "版本号", required = true)
+    private String version;
+
+    @ApiModelProperty(value = "平台",required = true)
+    private String platform;
+
+    public String getVersion() {
+        return version;
+    }
+
+    public void setVersion(String version) {
+        this.version = version;
+    }
+
+    public String getPlatform() {
+        return platform;
+    }
+
+    public void setPlatform(String platform) {
+        this.platform = platform;
+    }
+}

+ 34 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/MusicAlbumSearch.java

@@ -30,9 +30,35 @@ public class MusicAlbumSearch extends QueryInfo{
     @ApiModelProperty("专辑状态0:停用,1:启用")
     private YesOrNoEnum albumStatus;
 
+
+    @ApiModelProperty(value = "是否审核时可见 (0:否  1:是)",hidden = true)
+    private YesOrNoEnum auditVersion;
+
     @ApiModelProperty(value = "排序规则,1:按收藏人数倒叙",hidden = true)
     private Integer sortBy;
 
+    @ApiModelProperty(value = "版本号",required = true)
+    private String version;
+
+    @ApiModelProperty(value = "平台",required = true)
+    private String platform;
+
+    public String getVersion() {
+        return version;
+    }
+
+    public void setVersion(String version) {
+        this.version = version;
+    }
+
+    public String getPlatform() {
+        return platform;
+    }
+
+    public void setPlatform(String platform) {
+        this.platform = platform;
+    }
+
     public String getIdAndName() {
         return idAndName;
     }
@@ -75,4 +101,12 @@ public class MusicAlbumSearch extends QueryInfo{
     public void setSortBy(Integer sortBy) {
         this.sortBy = sortBy;
     }
+
+    public YesOrNoEnum getAuditVersion() {
+        return auditVersion;
+    }
+
+    public void setAuditVersion(YesOrNoEnum auditVersion) {
+        this.auditVersion = auditVersion;
+    }
 }

+ 35 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/StudentMusicSheetSearch.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.dto.search;
 
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModelProperty;
 
 /**
@@ -20,6 +21,40 @@ public class StudentMusicSheetSearch  extends MusicSheetSearch{
     @ApiModelProperty("专辑分页参数")
     private Integer albumRow = 3;
 
+
+    @ApiModelProperty(value = "是否审核时可见 (0:否  1:是)",hidden = true)
+    private YesOrNoEnum auditVersion;
+
+    @ApiModelProperty(value = "版本号",required = true)
+    private String version;
+
+    @ApiModelProperty(value = "平台",required = true)
+    private String platform;
+
+    public YesOrNoEnum getAuditVersion() {
+        return auditVersion;
+    }
+
+    public void setAuditVersion(YesOrNoEnum auditVersion) {
+        this.auditVersion = auditVersion;
+    }
+
+    public String getVersion() {
+        return version;
+    }
+
+    public void setVersion(String version) {
+        this.version = version;
+    }
+
+    public String getPlatform() {
+        return platform;
+    }
+
+    public void setPlatform(String platform) {
+        this.platform = platform;
+    }
+
     public Integer getSheetRow() {
         return sheetRow;
     }

+ 34 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/TeacherStyleSearch.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.dto.search;
 
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import com.yonge.toolset.base.page.QueryInfo;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -17,6 +18,39 @@ public class TeacherStyleSearch extends QueryInfo{
 
     private Long studentId;
 
+    @ApiModelProperty(value = "是否审核时可见 (0:否  1:是)",hidden = true)
+    private YesOrNoEnum auditVersion;
+
+    @ApiModelProperty(value = "版本号",required = true)
+    private String version;
+
+    @ApiModelProperty(value = "平台",required = true)
+    private String platform;
+
+    public YesOrNoEnum getAuditVersion() {
+        return auditVersion;
+    }
+
+    public void setAuditVersion(YesOrNoEnum auditVersion) {
+        this.auditVersion = auditVersion;
+    }
+
+    public String getVersion() {
+        return version;
+    }
+
+    public void setVersion(String version) {
+        this.version = version;
+    }
+
+    public String getPlatform() {
+        return platform;
+    }
+
+    public void setPlatform(String platform) {
+        this.platform = platform;
+    }
+
     public String getUsername() {
         return username;
     }

+ 34 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/VideoLessonGroupSearch.java

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.biz.dal.dto.search;
 
 import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import com.yonge.toolset.base.page.QueryInfo;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -26,6 +27,39 @@ public class VideoLessonGroupSearch extends QueryInfo {
     @ApiModelProperty(value = "老师id")
     private Long teacherId;
 
+    @ApiModelProperty(value = "是否审核时可见 (0:否  1:是)",hidden = true)
+    private YesOrNoEnum auditVersion;
+
+    @ApiModelProperty(value = "版本号",required = true)
+    private String version;
+
+    @ApiModelProperty(value = "平台",required = true)
+    private String platform;
+
+    public YesOrNoEnum getAuditVersion() {
+        return auditVersion;
+    }
+
+    public void setAuditVersion(YesOrNoEnum auditVersion) {
+        this.auditVersion = auditVersion;
+    }
+
+    public String getVersion() {
+        return version;
+    }
+
+    public void setVersion(String version) {
+        this.version = version;
+    }
+
+    public String getPlatform() {
+        return platform;
+    }
+
+    public void setPlatform(String platform) {
+        this.platform = platform;
+    }
+
     public Long getTeacherId() {
         return teacherId;
     }

+ 14 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/CourseGroup.java

@@ -1,9 +1,11 @@
 package com.yonge.cooleshow.biz.dal.entity;
 
 
+import com.baomidou.mybatisplus.annotation.FieldFill;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -91,6 +93,10 @@ public class CourseGroup implements Serializable {
     @ApiModelProperty(value = "课程开始时间")
     private Date courseStartTime;
 
+    @TableField(value = "audit_version_")
+    @ApiModelProperty(value = "是否审核时可见 (0:否  1:是)")
+    private YesOrNoEnum auditVersion = YesOrNoEnum.NO;
+
     @TableField("created_by_")
     @ApiModelProperty(value = "创建人")
     private Long createdBy;
@@ -282,5 +288,13 @@ public class CourseGroup implements Serializable {
     public void setCompleteCourseNum(Integer completeCourseNum) {
         this.completeCourseNum = completeCourseNum;
     }
+
+    public YesOrNoEnum getAuditVersion() {
+        return auditVersion;
+    }
+
+    public void setAuditVersion(YesOrNoEnum auditVersion) {
+        this.auditVersion = auditVersion;
+    }
 }
 

+ 13 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MusicAlbum.java

@@ -48,6 +48,11 @@ public class MusicAlbum extends BaseEntity {
     @ApiModelProperty(value = "专辑状态(1:启用;0:停用)")
     private YesOrNoEnum albumStatus;  //专辑状态(1:启用;0:停用)
 
+
+	@TableField("audit_version_")
+	@ApiModelProperty(value = "是否审核时可见 (0:否  1:是)")
+	private YesOrNoEnum auditVersion;
+
     @TableField("sort_number_")
     @ApiModelProperty(value = "排序号")
     private Integer sortNumber;  //排序号
@@ -210,4 +215,12 @@ public class MusicAlbum extends BaseEntity {
 	public void setDelFlag(Boolean delFlag) {
 		this.delFlag = delFlag;
 	}
+
+	public YesOrNoEnum getAuditVersion() {
+		return auditVersion;
+	}
+
+	public void setAuditVersion(YesOrNoEnum auditVersion) {
+		this.auditVersion = auditVersion;
+	}
 }

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

@@ -141,6 +141,10 @@ public class MusicSheet implements Serializable {
     @ApiModelProperty(value = "是否自带节拍器(0:否;1:是)")
     private YesOrNoEnum hasBeat;  //是否自带节拍器(0:否;1:是)
 
+	@TableField("audit_version_")
+	@ApiModelProperty(value = "是否审核时可见 (0:否  1:是)")
+	private YesOrNoEnum auditVersion;
+
     @TableField("create_time_")
     @ApiModelProperty(value = "创建时间")
     private java.util.Date createTime;  //创建时间
@@ -421,4 +425,12 @@ public class MusicSheet implements Serializable {
 	public void setMp3Type(AudioTypeEnum mp3Type) {
 		this.mp3Type = mp3Type;
 	}
+
+	public YesOrNoEnum getAuditVersion() {
+		return auditVersion;
+	}
+
+	public void setAuditVersion(YesOrNoEnum auditVersion) {
+		this.auditVersion = auditVersion;
+	}
 }

+ 117 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/SysUserContractRecord.java

@@ -0,0 +1,117 @@
+package com.yonge.cooleshow.biz.dal.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 用户协议记录表-一个用户一种协议一个版本一条记录(SysUserContractRecord)表实体类
+ *
+ * @author hgw
+ * @since 2022-05-07 15:21:18
+ */
+@ApiModel(value = "sys_user_contract_record-用户协议记录表-一个用户一种协议一个版本一条记录")
+public class SysUserContractRecord implements Serializable {
+    @TableId(value = "id_", type = IdType.AUTO)
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+    @TableField("user_id_")
+    @ApiModelProperty(value = "用户id")
+    private Long userId;
+
+    @TableField("user_type_")
+    @ApiModelProperty(value = "用户类型")
+    private String userType;
+
+    @TableField("contract_id_")
+    @ApiModelProperty(value = "协议模板对应的id")
+    private Integer contractId;
+
+    @TableField("url_")
+    @ApiModelProperty(value = "协议地址")
+    private String url;
+
+    @TableField("created_time_")
+    @ApiModelProperty(value = "创建时间")
+    private Date createdTime;
+
+    @TableField("contract_no_")
+    @ApiModelProperty(value = "合同编号")
+    private String contractNo;
+
+    @TableField("remark_")
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public String getUserType() {
+        return userType;
+    }
+
+    public void setUserType(String userType) {
+        this.userType = userType;
+    }
+
+    public Integer getContractId() {
+        return contractId;
+    }
+
+    public void setContractId(Integer contractId) {
+        this.contractId = contractId;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public Date getCreatedTime() {
+        return createdTime;
+    }
+
+    public void setCreatedTime(Date createdTime) {
+        this.createdTime = createdTime;
+    }
+
+    public String getContractNo() {
+        return contractNo;
+    }
+
+    public void setContractNo(String contractNo) {
+        this.contractNo = contractNo;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+}
+

+ 0 - 125
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/SysUserContracts.java

@@ -1,125 +0,0 @@
-package com.yonge.cooleshow.biz.dal.entity;
-
-import com.yonge.toolset.base.enums.BaseEnum;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-
-/**
- * 对应数据库表(sys_user_contracts):
- */
-public class SysUserContracts {
-
-	public enum ContractType implements BaseEnum<String, ContractType> {
-
-		REGISTER("注册"),
-		COURSES("课程购买"),
-		PRODUCT("产品");
-
-		private String desc;
-
-		private ContractType(String desc) {
-			this.desc = desc;
-		}
-
-		@Override
-		public String getCode() {
-			return name();
-		}
-
-		public String getDesc() {
-			return desc;
-		}
-	}
-
-	/**  */
-	private Long id;
-
-	/**  */
-	private Long userId;
-
-	/** 合同号 */
-	private String contractNo;
-
-	/** 协议类型 */
-	private ContractType type;
-
-	/** 协议地址 */
-	private String url;
-
-	/** 备注 */
-	private String memo;
-
-	private Integer version;
-
-	/** 创建时间 */
-	private java.util.Date createTime;
-
-	public Integer getVersion() {
-		return version;
-	}
-
-	public void setVersion(Integer version) {
-		this.version = version;
-	}
-
-	public void setId(Long id) {
-		this.id = id;
-	}
-
-	public Long getId() {
-		return this.id;
-	}
-
-	public void setUserId(Long userId) {
-		this.userId = userId;
-	}
-
-	public Long getUserId() {
-		return this.userId;
-	}
-
-	public void setContractNo(String contractNo) {
-		this.contractNo = contractNo;
-	}
-
-	public String getContractNo() {
-		return this.contractNo;
-	}
-
-	public void setType(ContractType type) {
-		this.type = type;
-	}
-
-	public ContractType getType() {
-		return this.type;
-	}
-
-	public void setUrl(String url) {
-		this.url = url;
-	}
-
-	public String getUrl() {
-		return this.url;
-	}
-
-	public void setMemo(String memo) {
-		this.memo = memo;
-	}
-
-	public String getMemo() {
-		return this.memo;
-	}
-
-	public void setCreateTime(java.util.Date createTime) {
-		this.createTime = createTime;
-	}
-
-	public java.util.Date getCreateTime() {
-		return this.createTime;
-	}
-
-	@Override
-	public String toString() {
-		return ToStringBuilder.reflectionToString(this);
-	}
-
-}

+ 13 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TeacherStyleVideo.java

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.biz.dal.entity;
 
 import com.baomidou.mybatisplus.annotation.*;
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -55,6 +56,10 @@ public class TeacherStyleVideo implements Serializable {
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
     private Date updateTime;
 
+    @TableField("audit_version_")
+    @ApiModelProperty(value = "是否审核时可见 (0:否  1:是)")
+    private YesOrNoEnum auditVersion = YesOrNoEnum.NO;
+
     public Long getId() {
         return id;
     }
@@ -110,4 +115,12 @@ public class TeacherStyleVideo implements Serializable {
     public void setUpdateTime(Date updateTime) {
         this.updateTime = updateTime;
     }
+
+    public YesOrNoEnum getAuditVersion() {
+        return auditVersion;
+    }
+
+    public void setAuditVersion(YesOrNoEnum auditVersion) {
+        this.auditVersion = auditVersion;
+    }
 }

+ 14 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/VideoLessonGroup.java

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.biz.dal.entity;
 
 import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import com.yonge.cooleshow.biz.dal.valid.AddGroup;
 import com.yonge.cooleshow.biz.dal.valid.UpdateGroup;
 import com.yonge.cooleshow.common.entity.BaseEntity;
@@ -103,6 +104,11 @@ public class VideoLessonGroup extends BaseEntity {
     @ApiModelProperty(value = "审批人id")
     private Integer auditId;
 
+
+    @TableField("audit_version_")
+    @ApiModelProperty(value = "是否审核时可见 (0:否  1:是)")
+    private YesOrNoEnum auditVersion = YesOrNoEnum.NO;
+
     public Long getId() {
         return id;
     }
@@ -246,4 +252,12 @@ public class VideoLessonGroup extends BaseEntity {
     public void setAuditId(Integer auditId) {
         this.auditId = auditId;
     }
+
+    public YesOrNoEnum getAuditVersion() {
+        return auditVersion;
+    }
+
+    public void setAuditVersion(YesOrNoEnum auditVersion) {
+        this.auditVersion = auditVersion;
+    }
 }

+ 39 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/AppVersionStatusEnum.java

@@ -0,0 +1,39 @@
+package com.yonge.cooleshow.biz.dal.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.yonge.toolset.base.enums.BaseEnum;
+
+/**
+ * Description 曲目音频类型 1:mp3,2:midi,3:mp3_metronome
+ *
+ * @author liujunchi
+ * @date 2022-04-01
+ */
+public enum AppVersionStatusEnum implements BaseEnum<String, AppVersionStatusEnum> {
+
+
+    NEWEST("newest","newest"),
+    HISTORY("history","history"),
+    AUDITING("auditing","auditing");
+    @EnumValue
+    private String code;
+    private String msg;
+
+    AppVersionStatusEnum(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    @Override
+    public String getCode() {
+        return this.code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+}

+ 42 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/ContractTypeEnum.java

@@ -0,0 +1,42 @@
+package com.yonge.cooleshow.biz.dal.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.yonge.toolset.base.enums.BaseEnum;
+
+/**
+ * 协议模板类型枚举
+ */
+public enum ContractTypeEnum implements BaseEnum<String, ContractTypeEnum> {
+
+    REGISTER("REGISTER","注册"),
+    COURSES("COURSES","课程购买"),
+    PRODUCT("PRODUCT","产品")
+    ;
+
+    @EnumValue
+    private String code;
+
+    private String desc;
+
+    private ContractTypeEnum(String code,String desc) {
+        this.code = code;
+        this.desc = desc;
+    }
+
+    @Override
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+
+    public void setDesc(String desc) {
+        this.desc = desc;
+    }
+}

+ 19 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/AppVersionInfoService.java

@@ -3,6 +3,7 @@ package com.yonge.cooleshow.biz.dal.service;
 import java.util.List;
 
 import com.yonge.cooleshow.biz.dal.entity.AppVersionInfo;
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import com.yonge.toolset.mybatis.service.BaseService;
 
 public interface AppVersionInfoService extends BaseService<Long, AppVersionInfo> {
@@ -12,4 +13,22 @@ public interface AppVersionInfoService extends BaseService<Long, AppVersionInfo>
 	void add(AppVersionInfo appVersionInfo);
 
 	void updateVersion(AppVersionInfo appVersionInfo);
+
+	/**
+	 * 获取app版本信息
+	 *
+	 * @param platform 平台  ios、andorid
+	 * @param version 版本号
+	 * @return
+	 */
+	AppVersionInfo selectAppVersionInfo(String platform, String version);
+
+	/**
+	 * 获取是否是审核版本
+	 *
+	 * @param platform 平台 ios、andorid
+	 * @param version 版本号
+	 * @return
+	 */
+	YesOrNoEnum getAppAuditVersion(String platform, String version);
 }

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

@@ -10,6 +10,7 @@ import com.yonge.cooleshow.biz.dal.dto.search.PracticeTeacherSearch;
 import com.yonge.cooleshow.biz.dal.entity.CourseCalendarEntity;
 import com.yonge.cooleshow.biz.dal.entity.CourseSchedule;
 import com.yonge.cooleshow.biz.dal.entity.TeacherSubjectPrice;
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import com.yonge.cooleshow.biz.dal.vo.*;
 import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
@@ -185,7 +186,7 @@ public interface CourseScheduleService extends IService<CourseSchedule> {
 
     void courseAdjust(CourseAdjustVo adjustVo);
 
-    StudentHomePage queryLiveAndVideo(Long studentId,Long teacherId);
+    StudentHomePage queryLiveAndVideo(Long studentId, Long teacherId, YesOrNoEnum appAuditVersion);
 
     List<TeacherSubjectPrice> teacherSubjectPrice(Long teacherId);
 
@@ -222,5 +223,13 @@ public interface CourseScheduleService extends IService<CourseSchedule> {
     Integer getWeekStudentRepliedCourseSchedule(Long userId);
 
     void courseRemind();
+
+    /**
+     * 发送"当日陪练课未评价/布置作业
+     * (每晚9点30,已评价/已布置不发)"
+     *
+     */
+    void sendTodayNotRepliedAndNotDecorateHomework();
+
 }
 

+ 9 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicAlbumService.java

@@ -113,4 +113,13 @@ public interface MusicAlbumService extends IService<MusicAlbum> {
      * @return
      */
     boolean del(Long id);
+
+    /**
+     * 学生查看专辑
+     *
+     * @param page 分页
+     * @param query 查询条件
+     * @return
+     */
+    IPage<MusicAlbumVo> selectStudentPage(IPage<MusicAlbumVo> page, MusicAlbumSearch query);
 }

+ 8 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicSheetService.java

@@ -215,4 +215,12 @@ public interface MusicSheetService extends IService<MusicSheet> {
      * @return 老师过审的曲目数量
      */
     Integer getTeacherMusicSheetCount(Long userId);
+
+    /**
+     * 获取首页统计数据
+     *
+     * @return
+     */
+    HomeMusicSheetVo getMusicSheetHome();
+
 }

+ 17 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/SysUserContractRecordService.java

@@ -0,0 +1,17 @@
+package com.yonge.cooleshow.biz.dal.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.biz.dal.dao.SysUserContractRecordDao;
+import com.yonge.cooleshow.biz.dal.entity.SysUserContractRecord;
+
+/**
+ * 用户协议记录表-一个用户一种协议一个版本一条记录(SysUserContractRecord)表服务接口
+ *
+ * @author hgw
+ * @since 2022-05-07 15:04:06
+ */
+public interface SysUserContractRecordService extends IService<SysUserContractRecord> {
+
+    SysUserContractRecordDao getDao();
+}
+

+ 0 - 27
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/SysUserContractsService.java

@@ -1,27 +0,0 @@
-package com.yonge.cooleshow.biz.dal.service;
-
-import java.util.List;
-
-import com.yonge.cooleshow.biz.dal.entity.SysUserContracts;
-import com.yonge.toolset.mybatis.service.BaseService;
-
-public interface SysUserContractsService extends BaseService<Long, SysUserContracts> {
-
-    /**
-     * @describe 获取用户指定类型的协议记录
-     * @author Joburgess
-     * @date 2020.09.18
-     * @param userId:
-     * @param contractType:
-     * @return java.util.List<com.yonge.cooleshow.biz.dal.entity.SysUserContracts>
-     */
-    List<SysUserContracts> getUserContractWithType(Long userId, SysUserContracts.ContractType contractType, Integer contractVersion);
-
-    /**
-     * 获取最近一次的协议
-     * @param userId
-     * @return
-     */
-    SysUserContracts getLatestUserContract(Long userId);
-
-}

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

@@ -3,6 +3,8 @@ package com.yonge.cooleshow.biz.dal.service.impl;
 import java.util.Date;
 import java.util.List;
 
+import com.yonge.cooleshow.biz.dal.enums.AppVersionStatusEnum;
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import com.yonge.toolset.mybatis.service.impl.BaseServiceImpl;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -56,4 +58,19 @@ public class AppVersionInfoServiceImpl extends BaseServiceImpl<Long, AppVersionI
 		appVersionInfoDao.update(appVersionInfo);
 	}
 
+	@Override
+	public AppVersionInfo selectAppVersionInfo(String platform, String version) {
+		return appVersionInfoDao.selectAppVersionInfo(platform, version);
+	}
+
+    @Override
+    public YesOrNoEnum getAppAuditVersion(String platform, String version) {
+		AppVersionInfo appVersionInfo = selectAppVersionInfo(platform, version);
+		if (appVersionInfo != null
+				&& AppVersionStatusEnum.AUDITING.getCode().equals(appVersionInfo.getStatus())) {
+			return YesOrNoEnum.YES;
+		} else {
+			return YesOrNoEnum.NO;
+		}
+	}
 }

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

@@ -991,11 +991,14 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
      * @Date: 2022/4/22
      */
     @Override
-    public StudentHomePage queryLiveAndVideo(Long studentId, Long teacherId) {
+    public StudentHomePage queryLiveAndVideo(Long studentId, Long teacherId, YesOrNoEnum appAuditVersion) {
         StudentHomePage homePage = new StudentHomePage();
+        if (appAuditVersion == null) {
+            appAuditVersion = YesOrNoEnum.NO;
+        }
         if (teacherId == null) {
-            homePage.setLiveList(baseMapper.selectLive());
-            homePage.setVideoList(baseMapper.selectVideo());
+            homePage.setLiveList(baseMapper.selectLive(appAuditVersion));
+            homePage.setVideoList(baseMapper.selectVideo(appAuditVersion));
             homePage.setRecentCourses(baseMapper.selectRecentCourses(studentId));
         }
         if (studentId == null) {
@@ -1033,6 +1036,28 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         return baseMapper.selectWeekStudentRepliedCourseSchedule(userId);
     }
 
+    @Override
+    public void sendTodayNotRepliedAndNotDecorateHomework() {
+        List<TodayNotRepliedAndNotDecorateHomeworkVo> list = baseMapper.selectTodayNotRepliedAndNotDecorateHomework();
+        for (TodayNotRepliedAndNotDecorateHomeworkVo info : list) {
+            if (info.getRepliedNum() == 0 && info.getDecorateNum() == 0) {
+                continue;
+            }
+            try {
+                Map<Long, String> teacherReceivers = new HashMap<>();
+                teacherReceivers.put(info.getTeacherId(), info.getPhone());
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.NOT_EVALUATE_STUDENT_PRACTICE,
+                                                   teacherReceivers, null, 0, null, ClientEnum.TEACHER.getCode(),
+                                                   info.getRepliedNum(),info.getDecorateNum());
+            } catch (Exception e) {
+                log.warn("老师当日陪练课未评价/布置作业消息发送失败,{}",e.getMessage());
+            }
+
+        }
+
+
+    }
+
     /**
      * @Description: 购买陪练课消息推送
      * @Author: cy

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

@@ -9,7 +9,6 @@ import com.yonge.cooleshow.biz.dal.dto.search.MusicAlbumSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.StudentMusicAlbumSearch;
 import com.yonge.cooleshow.biz.dal.entity.AlbumFavorite;
 import com.yonge.cooleshow.biz.dal.entity.MusicAlbum;
-import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
 import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import com.yonge.cooleshow.biz.dal.service.*;
 import com.yonge.cooleshow.biz.dal.support.PageUtil;
@@ -93,11 +92,12 @@ public class MusicAlbumServiceImpl extends ServiceImpl<MusicAlbumDao,MusicAlbum>
         albumDetailVo.setAlbumCoverUrl(musicAlbum.getAlbumCoverUrl());
         albumDetailVo.setAlbumStatue(musicAlbum.getAlbumStatus());
         albumDetailVo.setAlbumFavoriteCount(musicAlbum.getAlbumFavoriteCount());
-        albumDetailVo.setMusicSheetCount(musicAlbum.getMusicSheetCount());
         albumDetailVo.setMusicTagNames(musicTagService.getMusicTagNames(StringUtil.toLongList(musicAlbum.getAlbumTag())));
 
         IPage<MusicSheetVo> musicSheetVoIPage = musicSheetService.selectAlbumDetailPage(page,query);
         albumDetailVo.setMusicSheetList(PageUtil.pageInfo(musicSheetVoIPage));
+
+        albumDetailVo.setMusicSheetCount(Long.valueOf(musicSheetVoIPage.getTotal()).intValue());
         return albumDetailVo;
     }
 
@@ -129,6 +129,9 @@ public class MusicAlbumServiceImpl extends ServiceImpl<MusicAlbumDao,MusicAlbum>
         if (checkNameRepeat(musicAlbum.getAlbumName(),musicAlbum.getId())) {
             throw new BizException("专辑名称重复");
         }
+        if (musicAlbum.getAuditVersion() == null) {
+            musicAlbum.setAuditVersion(YesOrNoEnum.NO);
+        }
         musicAlbum.setDelFlag(false);
         return this.save(musicAlbum);
     }
@@ -139,6 +142,9 @@ public class MusicAlbumServiceImpl extends ServiceImpl<MusicAlbumDao,MusicAlbum>
         if (checkNameRepeat(musicAlbum.getAlbumName(),musicAlbum.getId())) {
             throw new BizException("专辑名称重复");
         }
+        if (musicAlbum.getAuditVersion() == null) {
+            musicAlbum.setAuditVersion(YesOrNoEnum.NO);
+        }
         return this.updateById(musicAlbum);
     }
 
@@ -191,8 +197,14 @@ public class MusicAlbumServiceImpl extends ServiceImpl<MusicAlbumDao,MusicAlbum>
         return this.updateById(musicAlbum);
     }
 
+    @Override
+    public IPage<MusicAlbumVo> selectStudentPage(IPage<MusicAlbumVo> page, MusicAlbumSearch query) {
+        return page.setRecords(baseMapper.selectStudentPage(page,query));
+    }
+
     private boolean checkNameRepeat(String albumName, Long id) {
         LambdaQueryChainWrapper<MusicAlbum> eq = this.lambdaQuery()
+                                                     .eq(MusicAlbum::getDelFlag,0)
                                                    .eq(MusicAlbum::getAlbumName, albumName);
         if (id != null) {
             eq.ne(MusicAlbum::getId,id);

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

@@ -323,6 +323,9 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
             musicSheetAccompanimentService.delByMusicSheetId(musicSheetDto.getId());
         }
 
+        if (musicSheetDto.getAuditVersion() == null) {
+            musicSheetDto.setAuditVersion(YesOrNoEnum.NO);
+        }
         List<MusicSheetAccompaniment> list;
         if (!AudioTypeEnum.MIDI.getCode().equals(musicSheetDto.getAudioType().getCode())){
             list = musicSheetDto.getBackground();
@@ -540,6 +543,15 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
 
     }
 
+    @Override
+    public HomeMusicSheetVo getMusicSheetHome() {
+
+        HomeMusicSheetVo homeMusicSheetVo = baseMapper.selectMusicNum();
+        // homeMusicSheetVo.
+
+        return homeMusicSheetVo;
+    }
+
     private SysUser getSysUser(Long userId) {
         return Optional.ofNullable(userId)
                        .map(sysUserFeignService::queryUserById)

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

@@ -0,0 +1,29 @@
+package com.yonge.cooleshow.biz.dal.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.biz.dal.dao.SysUserContractRecordDao;
+import com.yonge.cooleshow.biz.dal.entity.SysUserContractRecord;
+import com.yonge.cooleshow.biz.dal.service.SysUserContractRecordService;
+import org.springframework.stereotype.Service;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * 用户协议记录表-一个用户一种协议一个版本一条记录(SysUserContractRecord)表服务实现类
+ *
+ * @author hgw
+ * @since 2022-05-07 15:04:06
+ */
+@Service("sysUserContractRecordService")
+public class SysUserContractRecordServiceImpl extends ServiceImpl<SysUserContractRecordDao, SysUserContractRecord> implements SysUserContractRecordService {
+
+    private final static Logger log = LoggerFactory.getLogger(SysUserContractRecordServiceImpl.class);
+
+    @Override
+    public SysUserContractRecordDao getDao() {
+        return this.baseMapper;
+    }
+
+}
+

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

@@ -1,35 +0,0 @@
-package com.yonge.cooleshow.biz.dal.service.impl;
-
-import java.util.List;
-
-import com.yonge.toolset.mybatis.service.impl.BaseServiceImpl;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.yonge.cooleshow.biz.dal.dao.SysUserContractsDao;
-import com.yonge.cooleshow.biz.dal.entity.SysUserContracts;
-import com.yonge.cooleshow.biz.dal.service.SysUserContractsService;
-import com.yonge.toolset.mybatis.dal.BaseDAO;
-
-@Service
-public class SysUserContractsServiceImpl extends BaseServiceImpl<Long, SysUserContracts> implements SysUserContractsService {
-	
-	@Autowired
-	private SysUserContractsDao sysUserContractsDao;
-
-	@Override
-	public BaseDAO<Long, SysUserContracts> getDAO() {
-		return sysUserContractsDao;
-	}
-
-	@Override
-	public List<SysUserContracts> getUserContractWithType(Long userId, SysUserContracts.ContractType contractType, Integer contractVersion) {
-		return sysUserContractsDao.getUserContractWithType(userId, contractType, contractVersion);
-	}
-
-	@Override
-	public SysUserContracts getLatestUserContract(Long userId) {
-		return sysUserContractsDao.getLatestUserContract(userId);
-	}
-
-}

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

@@ -335,7 +335,10 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
         List<TeacherStyleVideo> createList = styleVideo.stream().filter(o -> o.getId() == null)
                 .collect(Collectors.toList());
 
-        createList.forEach(o -> o.setUserId(teacherDto.getUserId()));
+        createList.forEach(o -> {
+            o.setUserId(teacherDto.getUserId());
+            o.setAuditVersion(YesOrNoEnum.NO);
+        });
 
         List<Long> oldIds = styleVideo.stream().filter(o -> o.getId() != null)
                 .map(TeacherStyleVideo::getId).collect(Collectors.toList());

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

@@ -9,6 +9,7 @@ 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.*;
 import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import com.yonge.cooleshow.biz.dal.service.VideoLessonGroupService;
 import com.yonge.cooleshow.biz.dal.vo.*;
 import com.yonge.toolset.base.exception.BizException;
@@ -66,13 +67,7 @@ public class VideoLessonGroupServiceImpl extends ServiceImpl<VideoLessonGroupDao
      * @Date: 2022/4/11
      */
     public VideoLessonGroup selectGroup(Long groupId) {
-        VideoLessonGroup lessonGroup = videoLessonGroupDao.selectById(groupId);
-        Subject subject = subjectDao.selectSubjectById(lessonGroup.getLessonSubject());
-        if (subject==null){
-            throw new BizException("数据异常");
-        }
-        lessonGroup.setLessonSubjectName(subject.getName());
-        return lessonGroup;
+        return videoLessonGroupDao.selectGroupById(groupId);
     }
 
     /**
@@ -145,6 +140,7 @@ public class VideoLessonGroupServiceImpl extends ServiceImpl<VideoLessonGroupDao
 
         //添加组
         lessonGroup.setTeacherId(sysUser.getId());
+        lessonGroup.setAuditVersion(YesOrNoEnum.NO);
         videoLessonGroupDao.insert(lessonGroup);
 
         for (VideoLessonGroupDetail detail : lessonList) {

+ 97 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/HomeMusicSheetVo.java

@@ -0,0 +1,97 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-05-07
+ */
+@ApiModel("首页点播数据统计")
+public class HomeMusicSheetVo {
+
+    @ApiModelProperty("乐谱总数")
+    private Integer musicSheetCount;
+
+    @ApiModelProperty("平台乐谱")
+    private Integer musicSheetTeacherCount;
+
+    @ApiModelProperty("老师上传")
+    private Integer musicSheetPlatformCount;
+
+    @ApiModelProperty("集合")
+    private List<MusicSheetSmall> musicSheetSmallList;
+
+    static class MusicSheetSmall{
+
+        @ApiModelProperty("曲目编号")
+        private Long  musicSheetId;
+
+        @ApiModelProperty("曲目名称")
+        private String musicSheetName;
+
+        @ApiModelProperty("付费人数")
+        private Integer num;
+
+
+        public Long getMusicSheetId() {
+            return musicSheetId;
+        }
+
+        public void setMusicSheetId(Long musicSheetId) {
+            this.musicSheetId = musicSheetId;
+        }
+
+        public String getMusicSheetName() {
+            return musicSheetName;
+        }
+
+        public void setMusicSheetName(String musicSheetName) {
+            this.musicSheetName = musicSheetName;
+        }
+
+        public Integer getNum() {
+            return num;
+        }
+
+        public void setNum(Integer num) {
+            this.num = num;
+        }
+    }
+
+    public Integer getMusicSheetCount() {
+        return musicSheetCount;
+    }
+
+    public void setMusicSheetCount(Integer musicSheetCount) {
+        this.musicSheetCount = musicSheetCount;
+    }
+
+    public Integer getMusicSheetTeacherCount() {
+        return musicSheetTeacherCount;
+    }
+
+    public void setMusicSheetTeacherCount(Integer musicSheetTeacherCount) {
+        this.musicSheetTeacherCount = musicSheetTeacherCount;
+    }
+
+    public Integer getMusicSheetPlatformCount() {
+        return musicSheetPlatformCount;
+    }
+
+    public void setMusicSheetPlatformCount(Integer musicSheetPlatformCount) {
+        this.musicSheetPlatformCount = musicSheetPlatformCount;
+    }
+
+    public List<MusicSheetSmall> getMusicSheetSmallList() {
+        return musicSheetSmallList;
+    }
+
+    public void setMusicSheetSmallList(List<MusicSheetSmall> musicSheetSmallList) {
+        this.musicSheetSmallList = musicSheetSmallList;
+    }
+}

+ 11 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/LiveCourseGroupVo.java

@@ -54,6 +54,9 @@ public class LiveCourseGroupVo {
     @ApiModelProperty(value = "直播课成课后生成的im群id")
     private String imGroupId;
 
+    @ApiModelProperty(value = "手机号")
+    private String phone;
+
     public Long getCourseNum() {
         return courseNum;
     }
@@ -149,4 +152,12 @@ public class LiveCourseGroupVo {
     public void setImGroupId(String imGroupId) {
         this.imGroupId = imGroupId;
     }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
 }

+ 53 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TodayNotRepliedAndNotDecorateHomeworkVo.java

@@ -0,0 +1,53 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import io.swagger.annotations.ApiModel;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-05-06
+ */
+@ApiModel("查询当日未评价和未布置作业信息")
+public class TodayNotRepliedAndNotDecorateHomeworkVo {
+
+    private Long teacherId;
+
+    private String phone;
+
+    private Integer repliedNum;
+
+    private Integer decorateNum;
+
+    public Long getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Long teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+    public Integer getRepliedNum() {
+        return repliedNum;
+    }
+
+    public void setRepliedNum(Integer repliedNum) {
+        this.repliedNum = repliedNum;
+    }
+
+    public Integer getDecorateNum() {
+        return decorateNum;
+    }
+
+    public void setDecorateNum(Integer decorateNum) {
+        this.decorateNum = decorateNum;
+    }
+}

+ 6 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/AppVersionInfoMapper.xml

@@ -120,4 +120,10 @@
 			</if>
 		</where>
 	</select>
+
+	<select id="selectAppVersionInfo" resultMap="AppVersionInfo">
+
+		select avi.status_ from app_version_info avi where avi.platform_ = #{platform} and avi.version_ = #{version}
+
+	</select>
 </mapper>

+ 6 - 4
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseGroupMapper.xml

@@ -132,6 +132,9 @@
                 or b.name_ like concat('%',#{param.search},'%')
                 )
             </if>
+            <if test="param.auditVersion != null ">
+                and #{param.auditVersion} = b.audit_version_
+            </if>
         </where>
     </select>
 
@@ -147,12 +150,11 @@
         cg.course_num_ as courseNum,
         cg.created_time_ as createTime,
         cg.course_introduce_ as courseIntroduce,
-        cg.im_group_id_  as imGroupId
+        cg.im_group_id_  as imGroupId,
+        su.phone_ as phone
         from course_group cg
         left join course_schedule_student_payment cssp on cg.id_ = cssp.course_group_id_
-        <if test="param.search != null and param.search != ''">
-            left join sys_user su on su.id_ = cssp.user_id_
-        </if>
+        left join sys_user su on su.id_ = cssp.user_id_
         <where>
             <if test="param.teacherId != null">
                 and #{param.teacherId} = cg.teacher_id_

+ 21 - 3
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -503,7 +503,7 @@
         FROM course_group g
         LEFT JOIN sys_user u ON g.teacher_id_=u.id_
         LEFT JOIN subject s ON g.subject_id_=s.id_
-        WHERE type_='LIVE' and g.status_ = 'APPLY'
+        WHERE type_='LIVE' and g.status_ = 'APPLY' and #{appAuditVersion} = g.audit_version_
         ORDER BY courseStartTime DESC LIMIT 4
     </select>
     <select id="selectVideo" resultType="com.yonge.cooleshow.biz.dal.vo.StudentHomePage$Video">
@@ -525,7 +525,7 @@
         LEFT JOIN sys_user u ON g.teacher_id_=u.id_
         LEFT JOIN `subject` s ON g.lesson_subject_=s.id_
         LEFT JOIN (SELECT video_lesson_group_id_ ,COUNT(1) AS count_ FROM video_lesson_purchase_record WHERE order_status_='PAID' GROUP BY video_lesson_group_id_) r ON g.id_= r.video_lesson_group_id_
-        WHERE g.audit_status_='PASS'
+        WHERE g.audit_status_='PASS' and #{appAuditVersion} = g.audit_version_
         ORDER BY g.create_time_ DESC LIMIT 4
     </select>
     <select id="selectRecentCourses" resultType="com.yonge.cooleshow.biz.dal.vo.StudentHomePage$RecentCourses">
@@ -565,7 +565,7 @@
         LEFT JOIN sys_user u ON s.teacher_id_=u.id_
         LEFT JOIN course_group g ON s.course_group_id_=g.id_
         WHERE s.teacher_id_=#{teacherId}
-        AND s.status_ = 'NOT_START'
+        AND s.status_ IN ('NOT_START','ING')
         ORDER BY ABS(NOW() - s.start_time_) ASC
         limit 1
     </select>
@@ -621,6 +621,24 @@
         AND teacher_id_=#{teacherId} AND lock_=0
         GROUP BY type_
     </select>
+
+
+    <select id="selectTodayNotRepliedAndNotDecorateHomework"
+            resultType="com.yonge.cooleshow.biz.dal.vo.TodayNotRepliedAndNotDecorateHomeworkVo">
+
+        select sum(if(ch.id_ is null,1,0)) as decorateNum,
+            sum(if(csr.teacher_replied_ is null,1,0)) as repliedNum,
+            su.id_ as teacherId,
+            su.phone_ as phone
+        from course_schedule cs
+        left join course_schedule_replied csr on cs.id_ = csr.course_schedule_id_
+        left join course_homework ch on cs.id_ = ch.course_schedule_id_
+        left join sys_user su on cs.teacher_id_ = su.id_
+        where cs.status_ = 'COMPLETE' and date_format(cs.class_date_,'%Y-%m-%d') = date_format(now(),'%Y-%m-%d')
+        and cs.type_ = 'PRACTICE'
+        group by  su.id_,su.phone_
+    </select>
+
     <select id="countAllReplie" resultType="com.yonge.cooleshow.biz.dal.vo.RepliedCountVo"
             parameterType="java.lang.String">
         SELECT

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

@@ -12,6 +12,7 @@
         <result column="sort_number_" jdbcType="INTEGER" property="sortNumber"/>
         <result column="hot_flag_" jdbcType="TINYINT" property="hotFlag"/>
         <result column="top_flag_" jdbcType="TINYINT" property="topFlag"/>
+        <result column="audit_version_" jdbcType="TINYINT" property="auditVersion"/>
         <result column="create_time_" jdbcType="TIMESTAMP" property="createTime"/>
         <result column="create_by_" jdbcType="BIGINT" property="createBy"/>
         <result column="update_time_" jdbcType="TIMESTAMP" property="updateTime"/>
@@ -29,6 +30,7 @@
         t.hot_flag_,
         t.top_flag_,
         t.create_time_,
+        t.audit_version_,
         t.create_by_,
         t.update_time_,
         t.update_by_
@@ -58,6 +60,9 @@
             <if test="query.albumStatus != null">
                 and t.album_status_ = #{query.albumStatus}
             </if>
+            <if test="query.auditVersion != null">
+                and t.audit_version_ = #{query.auditVersion}
+            </if>
         </where>
         <if test="query.sortBy != null">
             <choose>
@@ -92,6 +97,10 @@
                     find_in_set(#{item},t.album_tag_)
                 </foreach>
             </if>
+
+            <if test="query.auditVersion != null">
+                and t.audit_version_ = #{query.auditVersion}
+            </if>
             <if test="query.albumStatus != null">
                 and t.album_status_ = #{query.albumStatus}
             </if>
@@ -104,7 +113,11 @@
         t1.num as musicSheetCount
         ,t2.num as albumFavoriteCount
         from music_album t
-        left join (select count(1) as num,amr.album_id_ from album_music_relate amr group by amr.album_id_) t1 on t1.album_id_ = t.id_
+        left join (select count(1) as num,amr.album_id_
+            from album_music_relate amr
+            join music_sheet ms on amr.music_sheet_id_ = ms.id_
+            where ms.del_flag_ = 0 and ms.state_ = 1 and ms.audit_status_ = 'PASS'
+            group by amr.album_id_) t1 on t1.album_id_ = t.id_
         left join (select count(1) as num,af.album_id_ from album_favorite af group by af.album_id_) t2 on t2.album_id_ = t.id_
         <where>
             t.del_flag_ = 0
@@ -135,4 +148,48 @@
         left join (select count(1) as num,af.album_id_ from album_favorite af group by af.album_id_) t2 on t2.album_id_ = t.id_
         where t.id_ = #{musicAlbumId}
     </select>
+
+    <select id="selectStudentPage" resultType="com.yonge.cooleshow.biz.dal.vo.MusicAlbumVo">
+        select <include refid="Base_Column_List"/>
+        ,(select group_concat(mt.name_) from music_tag mt
+        where find_in_set(mt.id_,t.album_tag_) and mt.del_flag_ = 0) as musicTagNames
+        ,if( t1.num>0,t1.num,0) as musicSheetCount
+        ,if(t2.num >0,t2.num,0) as albumFavoriteCount
+        from music_album t
+        left join (select count(1) as num,amr.album_id_
+            from album_music_relate amr
+            join music_sheet ms on amr.music_sheet_id_ = ms.id_
+            where ms.del_flag_ = 0 and ms.state_ = 1 and ms.audit_status_ = 'PASS'
+            group by amr.album_id_) t1 on t1.album_id_ = t.id_
+        left join (select count(1) as num,af.album_id_ from album_favorite af group by af.album_id_) t2 on t2.album_id_ = t.id_
+        <where>
+            t.del_flag_ = 0
+            <if test="query.idAndName != null and query.idAndName != ''">
+                and (t.id_ like concat('%',#{query.idAndName},'%') or
+                t.album_name_ like concat('%',#{query.idAndName},'%'))
+            </if>
+            <if test="query.albumTagIdList != null and query.albumTagIdList.size() != 0">
+                and
+                <foreach collection="query.albumTagIdList" separator="and" item="item">
+                    find_in_set(#{item},t.album_tag_)
+                </foreach>
+            </if>
+            <if test="query.albumStatus != null">
+                and t.album_status_ = #{query.albumStatus}
+            </if>
+            <if test="query.auditVersion != null">
+                and t.audit_version_ = #{query.auditVersion}
+            </if>
+        </where>
+        <if test="query.sortBy != null">
+            <choose>
+                <when test="query.sortBy == 1">
+                    order by t2.num desc
+                </when>
+            </choose>
+        </if>
+        <if test="query.sortBy == null">
+            order by t.id_ desc
+        </if>
+    </select>
 </mapper>

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

@@ -56,6 +56,7 @@
         t.update_time_ as updateTime,
         t.update_by_ as updateBy,
         t.del_flag_ as delFlag,
+        t.audit_version_ as auditVersion,
         t.source_type_ as sourceType,
         t.submit_audit_time_ as submitAuditTime,
         t.remark_ as remark
@@ -84,13 +85,13 @@
         </if>
         <if test="param.musicTagIds != null and param.musicTagIds != ''">
             and
-            <foreach collection="param.musicTagIdList" separator="and" item="item">
+            <foreach collection="param.musicTagIdList" separator="or" item="item">
                 find_in_set(#{item},t.music_tag_)
             </foreach>
         </if>
         <if test="param.subjectIds != null and param.subjectIds != ''">
             and
-            <foreach collection="param.subjectIdList" separator="and" item="item">
+            <foreach collection="param.subjectIdList" separator="or" item="item">
                 find_in_set(#{item},t.music_subject_)
             </foreach>
         </if>
@@ -247,6 +248,9 @@
         </if>
         <where>
             <include refid="QueryInfo"/>
+            <if test="param.auditVersion != null ">
+                and #{param.auditVersion} = t.audit_version_
+            </if>
         </where>
         order by  t.id_ desc
     </select>
@@ -454,4 +458,16 @@
         where user_id_ = #{userId}
         and state_ = 1 and audit_status_ = 'PASS' and del_flag_ = 0
     </select>
+
+    <select id="selectMusicNum" resultType="com.yonge.cooleshow.biz.dal.vo.HomeMusicSheetVo">
+
+        select
+            sum(if(ms.source_type_ = 'PLATFORM',1,0)) as musicSheetPlatformCount,
+            sum(if(ms.source_type_ = 'TEACHER',1,0)) as musicSheetTeacherCount,
+            count(1) as musicSheetCount
+        from music_sheet ms
+        where ms.state_ = 1 and ms.del_flag_ = 0 and ms.audit_status_ = 'PASS'
+
+
+    </select>
 </mapper>

+ 31 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/SysUserContractRecordMapper.xml

@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.yonge.cooleshow.biz.dal.dao.SysUserContractRecordDao">
+    <resultMap id="BaseResultMap" type="com.yonge.cooleshow.biz.dal.entity.SysUserContractRecord">
+        <id column="id_" jdbcType="INTEGER" property="id"/>
+        <result column="user_id_" jdbcType="INTEGER" property="userId"/>
+        <result column="user_type_" jdbcType="VARCHAR" property="userType"/>
+        <result column="contract_id_" jdbcType="INTEGER" property="contractId"/>
+        <result column="url_" jdbcType="VARCHAR" property="url"/>
+        <result column="created_time_" jdbcType="TIMESTAMP" property="createdTime"/>
+        <result column="contract_no_" jdbcType="VARCHAR" property="contractNo"/>
+        <result column="remark_" jdbcType="VARCHAR" property="remark"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id_
+        , user_id_, user_type_, contract_id_, url_, created_time_, contract_no_, remark_
+    </sql>
+
+    <insert id="insertBatch" keyColumn="id_" keyProperty="id" useGeneratedKeys="true"
+            parameterType="com.yonge.cooleshow.biz.dal.entity.SysUserContractRecord">
+        insert into sys_user_contract_record(user_id_, user_type_, contract_id_, url_, created_time_, contract_no_,
+        remark_)
+        values
+        <foreach collection="entities" item="entity" separator=",">
+            (#{entity.userId}, #{entity.userType}, #{entity.contractId}, #{entity.url}, #{entity.createdTime},
+            #{entity.contractNo}, #{entity.remark})
+        </foreach>
+    </insert>
+
+</mapper>

+ 0 - 101
cooleshow-user/user-biz/src/main/resources/config/mybatis/SysUserContractsMapper.xml

@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<!-- 这个文件是自动生成的。 不要修改此文件。所有改动将在下次重新自动生成时丢失。 -->
-<mapper namespace="com.yonge.cooleshow.biz.dal.dao.SysUserContractsDao">
-
-	<resultMap type="com.yonge.cooleshow.biz.dal.entity.SysUserContracts"
-			   id="SysUserContracts">
-		<result column="id_" property="id" />
-		<result column="user_id_" property="userId" />
-		<result column="contract_no_" property="contractNo" />
-		<result column="type_" property="type" />
-		<result column="url_" property="url" />
-		<result column="memo_" property="memo" />
-		<result column="create_time_" property="createTime" />
-		<result column="version_" property="version" />
-	</resultMap>
-
-	<!-- 根据主键查询一条记录 -->
-	<select id="get" resultMap="SysUserContracts">
-		SELECT * FROM
-		sys_user_contracts WHERE id_ = #{id}
-	</select>
-
-	<!-- 全查询 -->
-	<select id="findAll" resultMap="SysUserContracts">
-		SELECT * FROM sys_user_contracts
-		ORDER BY id_
-	</select>
-
-	<!-- 向数据库增加一条记录 -->
-	<insert id="insert" parameterType="com.yonge.cooleshow.biz.dal.entity.SysUserContracts"
-			useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		<!-- <selectKey resultClass="int" keyProperty="id" > SELECT SEQ_WSDEFINITION_ID.nextval 
-			AS ID FROM DUAL </selectKey> -->
-		INSERT INTO sys_user_contracts
-		(id_,user_id_,contract_no_,type_,url_,memo_,create_time_,version_)
-		VALUES(#{id},#{userId},#{contractNo},#{type},#{url},#{memo},#{createTime},#{version})
-	</insert>
-
-	<!-- 根据主键查询一条记录 -->
-	<update id="update" parameterType="com.yonge.cooleshow.biz.dal.entity.SysUserContracts">
-		UPDATE sys_user_contracts
-		<set>
-			<if test="userId != null">
-				user_id_ = #{userId},
-			</if>
-			<if test="id != null">
-				id_ = #{id},
-			</if>
-			<if test="url != null">
-				url_ = #{url},
-			</if>
-			<if test="memo != null">
-				memo_ = #{memo},
-			</if>
-			<if test="contractNo != null">
-				contract_no_ = #{contractNo},
-			</if>
-			<if test="type != null">
-				type_ = #{type},
-			</if>
-			<if test="createTime != null">
-				create_time_ = #{createTime},
-			</if>
-		</set>
-		WHERE id_ = #{id}
-	</update>
-
-	<!-- 根据主键删除一条记录 -->
-	<delete id="delete">
-		DELETE FROM sys_user_contracts WHERE id_ =
-		#{id}
-	</delete>
-
-	<!-- 分页查询 -->
-	<select id="queryPage" resultMap="SysUserContracts"
-			parameterType="map">
-		SELECT * FROM sys_user_contracts ORDER BY id_
-		<include refid="global.limit" />
-	</select>
-
-	<!-- 查询当前表的总记录数 -->
-	<select id="queryCount" resultType="int">
-		SELECT COUNT(*) FROM
-		sys_user_contracts
-	</select>
-
-	<select id="getUserContractWithType" resultMap="SysUserContracts">
-		SELECT * FROM sys_user_contracts
-		WHERE user_id_=#{userId}
-		  AND type_=#{contractType}
-		  <if test="version!=null">
-			  AND version_=#{version}
-		  </if>
-	</select>
-
-	<select id="getLatestUserContract" resultMap="SysUserContracts">
-		SELECT * FROM sys_user_contracts WHERE user_id_=#{userId} order by id_ desc limit 0,1
-	</select>
-
-</mapper>

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

@@ -58,6 +58,9 @@
 			<if test="param.subjectId != null and param.subjectId != ''">
 				AND INTE_ARRAY(a.subject_id_,#{param.subjectId})
 			</if>
+			<if test="param.auditVersion != null">
+				and #{param.auditVersion} = t.audit_version_
+			</if>
 		</where>
 		order by ta.live_flag_ desc,(ta.fans_num_ * 0.3 + t.browse_ * 0.3 + ta.exp_time_) desc
 	</select>

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

@@ -255,6 +255,9 @@
 			<if	test="param.teacherId != null">
 				AND g.teacher_id_ = #{param.teacherId}
 			</if>
+			<if test="param.auditVersion != null">
+				and g.audit_version_ = #{param.auditVersion}
+			</if>
 		</where>
 		ORDER BY g.create_time_ DESC
 	</select>
@@ -298,4 +301,14 @@
 		</where>
 		ORDER BY g.create_time_ DESC
 	</select>
+    <select id="selectGroupById" resultType="com.yonge.cooleshow.biz.dal.entity.VideoLessonGroup"
+            parameterType="java.lang.Long">
+		SELECT
+		<include refid="baseColumns"/>
+		s.name_ AS lessonSubjectName
+		FROM video_lesson_group g
+		LEFT JOIN `subject` s ON g.lesson_subject_=s.id_
+		WHERE g.id_=#{groupId}
+		AND s.del_flag_ = 0
+	</select>
 </mapper>

+ 11 - 1
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/MusicAlbumController.java

@@ -6,7 +6,10 @@ import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.search.MusicAlbumDetailSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.MusicAlbumSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.StudentMusicAlbumSearch;
+import com.yonge.cooleshow.biz.dal.entity.AppVersionInfo;
+import com.yonge.cooleshow.biz.dal.enums.AppVersionStatusEnum;
 import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
+import com.yonge.cooleshow.biz.dal.service.AppVersionInfoService;
 import com.yonge.cooleshow.biz.dal.service.MusicAlbumService;
 import com.yonge.cooleshow.biz.dal.support.PageUtil;
 import com.yonge.cooleshow.biz.dal.vo.AlbumDetailVo;
@@ -39,6 +42,8 @@ public class MusicAlbumController extends BaseController {
 	@Autowired
 	private MusicAlbumService musicAlbumService;
 
+    @Autowired
+    private AppVersionInfoService appVersionInfoService;
 
     @ApiOperation(value = "分页查询", httpMethod="POST", consumes="application/json", produces="application/json")
     @PostMapping(value="/list", consumes="application/json", produces="application/json")
@@ -47,9 +52,14 @@ public class MusicAlbumController extends BaseController {
         if (sysUser == null  || sysUser.getId() == null) {
             return failed("用户信息获取失败");
         }
+
+        // 检查app版本
+        query.setAuditVersion(appVersionInfoService.getAppAuditVersion(query.getPlatform(),query.getVersion()));
+
+
         query.setAlbumStatus(YesOrNoEnum.YES);
         query.setSortBy(1);
-        IPage<MusicAlbumVo> iPage = musicAlbumService.selectPage(PageUtil.getPage(query),query);
+        IPage<MusicAlbumVo> iPage = musicAlbumService.selectStudentPage(PageUtil.getPage(query),query);
         return succeed(PageUtil.pageInfo(iPage));
     }
 

+ 11 - 0
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/MusicSheetController.java

@@ -10,6 +10,7 @@ import com.yonge.cooleshow.biz.dal.dto.search.MusicSheetSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.StudentMusicSheetSearch;
 import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
 import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
+import com.yonge.cooleshow.biz.dal.service.AppVersionInfoService;
 import com.yonge.cooleshow.biz.dal.service.MusicAlbumService;
 import com.yonge.cooleshow.biz.dal.service.MusicSheetService;
 import com.yonge.cooleshow.biz.dal.support.PageUtil;
@@ -48,6 +49,9 @@ public class MusicSheetController extends BaseController {
     @Autowired
     private MusicAlbumService musicAlbumService;
 
+    @Autowired
+    private AppVersionInfoService appVersionInfoService;
+
     /**
      * 查询单条
      */
@@ -68,6 +72,9 @@ public class MusicSheetController extends BaseController {
         if (sysUser == null  || sysUser.getId() == null) {
             return failed("用户信息获取失败");
         }
+        // 检查app版本
+        query.setAuditVersion(appVersionInfoService.getAppAuditVersion(query.getPlatform(),query.getVersion()));
+
 
         // 学生 只能看通过审核 并且 启用的 曲目
         query.setState(YesOrNoEnum.YES);
@@ -86,8 +93,11 @@ public class MusicSheetController extends BaseController {
             return failed("用户信息获取失败");
         }
 
+        // 检查app版本
+        YesOrNoEnum appAuditVersion = appVersionInfoService.getAppAuditVersion(query.getPlatform(), query.getVersion());
         // 学生 只能看通过审核 并且 启用的 曲目
         query.setState(YesOrNoEnum.YES);
+        query.setAuditVersion(appAuditVersion);
         query.setAuditStatus(AuthStatusEnum.PASS);
         query.setStudentId(sysUser.getId());
         query.setRows(query.getSheetRow());
@@ -96,6 +106,7 @@ public class MusicSheetController extends BaseController {
         MusicAlbumSearch musicAlbumSearch = new MusicAlbumSearch();
         musicAlbumSearch.setAlbumStatus(YesOrNoEnum.YES);
         musicAlbumSearch.setSortBy(1);
+        musicAlbumSearch.setAuditVersion(appAuditVersion);
         musicAlbumSearch.setAlbumTagIds(query.getMusicTagIds());
         musicAlbumSearch.setPage(query.getPage());
         musicAlbumSearch.setRows(query.getAlbumRow());

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

@@ -2,6 +2,8 @@ package com.yonge.cooleshow.student.controller;
 
 import com.yonge.cooleshow.biz.dal.dto.CheckCourseTimeDto;
 import com.yonge.cooleshow.biz.dal.entity.CourseTimeEntity;
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
+import com.yonge.cooleshow.biz.dal.service.AppVersionInfoService;
 import com.yonge.cooleshow.biz.dal.service.CourseGroupService;
 import com.yonge.cooleshow.biz.dal.vo.CourseGroupVo;
 import com.yonge.cooleshow.biz.dal.vo.LiveCourseInfoVo;
@@ -9,6 +11,7 @@ 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.*;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
@@ -31,6 +34,9 @@ public class StudentCourseGroupController extends BaseController {
     @Resource
     private CourseGroupService courseGroupService;
 
+    @Autowired
+    private AppVersionInfoService appVersionInfoService;
+
     @ApiOperation("直播课详情")
     @GetMapping("/queryLiveCourseInfo")
     public HttpResponseResult<LiveCourseInfoVo> queryLiveCourseInfo(@ApiParam(value = "课程组id", required = true) @RequestParam(value = "groupId") Long groupId) {
@@ -43,11 +49,18 @@ public class StudentCourseGroupController extends BaseController {
             @ApiImplicitParam(name = "groupStatus", dataType = "String", value = "课程组状态  ING(进行中)  NOT_SALE(未开售,未上架) APPLY(报名中,销售中) COMPLETE(已完成)"),
             @ApiImplicitParam(name = "page", dataType = "Integer", value = "页数"),
             @ApiImplicitParam(name = "rows", dataType = "Integer", value = "每页数量"),
+            @ApiImplicitParam(name = "version", dataType = "String", value = "版本"),
+            @ApiImplicitParam(name = "platform", dataType = "Integer", value = "平台"),
     })
     @ApiOperation("分页查询直播课课程组列表")
     @PostMapping("/queryPageCourseGroup")
     public HttpResponseResult<PageInfo<CourseGroupVo>> queryPageLiveCourseGroup(@RequestBody Map<String, Object> param) {
         param.put("os","student");
+        YesOrNoEnum auditVersion = YesOrNoEnum.NO;
+        if (param.get("platform") != null && param.get("version") != null) {
+            auditVersion = appVersionInfoService.getAppAuditVersion(param.get("platform").toString(),param.get("version").toString());
+        }
+        param.put("auditVersion",auditVersion);
         return succeed(courseGroupService.queryPageLiveCourseGroup(param));
     }
 

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

@@ -3,12 +3,15 @@ package com.yonge.cooleshow.student.controller;
 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.AppAuditVersionSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.MyCourseSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.PracticeTeacherSearch;
 import com.yonge.cooleshow.biz.dal.entity.CourseCalendarEntity;
 import com.yonge.cooleshow.biz.dal.entity.CourseScheduleReplied;
 import com.yonge.cooleshow.biz.dal.entity.TeacherSubjectPrice;
 import com.yonge.cooleshow.biz.dal.enums.CourseScheduleEnum;
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
+import com.yonge.cooleshow.biz.dal.service.AppVersionInfoService;
 import com.yonge.cooleshow.biz.dal.service.CourseRepliedService;
 import com.yonge.cooleshow.biz.dal.service.CourseScheduleService;
 import com.yonge.cooleshow.biz.dal.support.PageUtil;
@@ -44,6 +47,8 @@ public class StudentCourseScheduleController extends BaseController {
     private CourseScheduleService courseScheduleService;
     @Autowired
     private CourseRepliedService repliedService;
+    @Autowired
+    private AppVersionInfoService appVersionInfoService;
 
     @ApiOperation("学生端-我的-我的课程-陪练课")
     @PostMapping("/queryStudentPracticeCourse")
@@ -129,12 +134,15 @@ public class StudentCourseScheduleController extends BaseController {
 
     @ApiOperation("学生-首页-直播课&视频课&最近课程")
     @GetMapping("/queryLiveAndVideo")
-    public HttpResponseResult<StudentHomePage> queryLiveAndVideo() {
+    public HttpResponseResult<StudentHomePage> queryLiveAndVideo(AppAuditVersionSearch search) {
         SysUser user = sysUserFeignService.queryUserInfo();
         if (user == null || null == user.getId()) {
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
-        return succeed(courseScheduleService.queryLiveAndVideo(user.getId(),null));
+        // 检查app版本审核/正式
+        YesOrNoEnum appAuditVersion = appVersionInfoService.getAppAuditVersion(search.getPlatform(),
+                                                                               search.getVersion());
+        return succeed(courseScheduleService.queryLiveAndVideo(user.getId(),null,appAuditVersion));
     }
 
     @ApiImplicitParams({

+ 28 - 0
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/StudentSysUserContractRecordController.java

@@ -0,0 +1,28 @@
+package com.yonge.cooleshow.student.controller;
+
+import com.yonge.cooleshow.biz.dal.entity.SysUserContractRecord;
+import com.yonge.cooleshow.biz.dal.service.SysUserContractRecordService;
+import org.springframework.web.bind.annotation.*;
+import com.yonge.cooleshow.common.controller.BaseController;
+import io.swagger.annotations.Api;
+
+import javax.annotation.Resource;
+
+/**
+ * 用户协议记录表-一个用户一种协议一个版本一条记录(SysUserContractRecord)表控制层
+ *
+ * @author hgw
+ * @since 2022-05-07 15:04:05
+ */
+@Api(tags = "用户协议记录表-一个用户一种协议一个版本一条记录")
+@RestController
+@RequestMapping("/sysUserContractRecord")
+public class StudentSysUserContractRecordController extends BaseController {
+    /**
+     * 服务对象
+     */
+    @Resource
+    private SysUserContractRecordService sysUserContractRecordService;
+
+}
+

+ 11 - 0
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/SysConfigController.java

@@ -3,6 +3,7 @@ package com.yonge.cooleshow.student.controller;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -53,4 +54,14 @@ public class SysConfigController extends BaseController {
 		}
 		return succeed(sysConfigService.findByParamName(paramName));
 	}
+
+	@ApiOperation(value = "查询参数")
+	@GetMapping(value = "queryByParamNameList")
+	public Object queryByParamNameList(String paramNames) {
+		if(StringUtils.isBlank(paramNames)){
+			return failed("参数不能为空");
+		}
+		List<String> paramNameList = Arrays.asList(paramNames.split(","));
+		return succeed(sysConfigService.findByParamName(paramNameList));
+	}
 }

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

@@ -5,6 +5,7 @@ import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.search.TeacherStyleSearch;
 import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
+import com.yonge.cooleshow.biz.dal.service.AppVersionInfoService;
 import com.yonge.cooleshow.biz.dal.service.StudentStarService;
 import com.yonge.cooleshow.biz.dal.service.TeacherService;
 import com.yonge.cooleshow.biz.dal.service.TeacherStyleVideoService;
@@ -34,6 +35,9 @@ public class TeacherController extends BaseController {
     @Autowired
     private StudentStarService studentStarService;
 
+    @Autowired
+    private AppVersionInfoService appVersionInfoService;
+
     @ApiOperation(value = "老师风采-分页")
     @PostMapping("/stylePage")
     public HttpResponseResult<PageInfo<TeacherStyleVideoVo>> stylePage(@RequestBody TeacherStyleSearch query) {
@@ -41,6 +45,8 @@ public class TeacherController extends BaseController {
         if (user == null || null == user.getId()) {
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
+        // 检查app版本
+        query.setAuditVersion(appVersionInfoService.getAppAuditVersion(query.getPlatform(),query.getVersion()));
         query.setStudentId(user.getId());
         IPage<TeacherStyleVideoVo> pages = styleVideoService.stylePage(PageUtil.getPage(query), query);
         return succeed(PageUtil.pageInfo(pages));

+ 7 - 1
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/VideoLessonController.java

@@ -6,6 +6,7 @@ import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonEvaluateSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonGroupSearch;
 import com.yonge.cooleshow.biz.dal.entity.VideoLessonEvaluate;
+import com.yonge.cooleshow.biz.dal.service.AppVersionInfoService;
 import com.yonge.cooleshow.biz.dal.service.VideoLessonEvaluateService;
 import com.yonge.cooleshow.biz.dal.service.VideoLessonGroupDetailService;
 import com.yonge.cooleshow.biz.dal.service.VideoLessonGroupService;
@@ -42,7 +43,8 @@ public class VideoLessonController extends BaseController {
     private VideoLessonEvaluateService evaluateService;
     @Autowired
     private VideoLessonGroupService videoLessonGroupService;
-
+    @Autowired
+    private AppVersionInfoService appVersionInfoService;
     /**
      * @Description: 根据组id查询视频课
      * @Author: cy
@@ -95,6 +97,10 @@ public class VideoLessonController extends BaseController {
     @ApiOperation(value = "查询视频课组")
     @PostMapping(value = "/selectGroup")
     public HttpResponseResult<PageInfo<LessonGroupVo>> page(@RequestBody VideoLessonGroupSearch query) {
+
+        // 检查app版本
+        query.setAuditVersion(appVersionInfoService.getAppAuditVersion(query.getPlatform(),query.getVersion()));
+
         IPage<LessonGroupVo> pages = videoLessonGroupService.selectLessonGroup(PageUtil.getPage(query), query);
         return succeed(PageUtil.pageInfo(pages));
     }

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

@@ -143,7 +143,7 @@ public class TeacherCourseScheduleController extends BaseController {
         if (user == null || null == user.getId()) {
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
-        return succeed(courseScheduleService.queryLiveAndVideo(null,user.getId()));
+        return succeed(courseScheduleService.queryLiveAndVideo(null, user.getId(), null));
     }
 }
 

+ 28 - 0
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherSysUserContractRecordController.java

@@ -0,0 +1,28 @@
+package com.yonge.cooleshow.teacher.controller;
+
+import com.yonge.cooleshow.biz.dal.service.SysUserContractRecordService;
+import com.yonge.cooleshow.common.controller.BaseController;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ * 用户协议记录表-一个用户一种协议一个版本一条记录(SysUserContractRecord)表控制层
+ *
+ * @author hgw
+ * @since 2022-05-07 15:04:05
+ */
+@Api(tags = "用户协议记录表-一个用户一种协议一个版本一条记录")
+@RestController
+@RequestMapping("/sysUserContractRecord")
+public class TeacherSysUserContractRecordController extends BaseController {
+    /**
+     * 服务对象
+     */
+    @Resource
+    private SysUserContractRecordService sysUserContractRecordService;
+
+}
+