Ver Fonte

fix:merge

liujunchi há 3 anos atrás
pai
commit
3a68b4393d
33 ficheiros alterados com 433 adições e 16 exclusões
  1. 27 0
      cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/AdminFeignService.java
  2. 2 2
      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. 16 2
      cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/controller/NewsController.java
  6. 1 1
      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. 1 1
      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. 5 1
      cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/service/impl/SysNewsInformationServiceImpl.java
  12. 6 1
      cooleshow-cms/src/main/resources/config/mybatis/SysNewsInformationMapper.xml
  13. 1 1
      cooleshow-task/src/main/java/com/yonge/cooleshow/task/jobs/NoticeReleaseTask.java
  14. 25 0
      cooleshow-task/src/main/java/com/yonge/cooleshow/task/jobs/TeacherSendTask.java
  15. 31 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/client/AdminFeignClient.java
  16. 12 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/CourseHomeworkController.java
  17. 14 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/AppVersionInfoDao.java
  18. 4 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleDao.java
  19. 7 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/MusicAlbumDao.java
  20. 34 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/MusicAlbumSearch.java
  21. 13 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MusicAlbum.java
  22. 39 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/AppVersionStatusEnum.java
  23. 9 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/AppVersionInfoService.java
  24. 8 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseScheduleService.java
  25. 4 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/AppVersionInfoServiceImpl.java
  26. 22 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java
  27. 6 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicAlbumServiceImpl.java
  28. 53 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TodayNotRepliedAndNotDecorateHomeworkVo.java
  29. 6 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/AppVersionInfoMapper.xml
  30. 17 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  31. 9 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicAlbumMapper.xml
  32. 16 0
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/MusicAlbumController.java
  33. 1 0
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/StudentCourseScheduleController.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();
+}

+ 2 - 2
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,7 @@
-package com.yonge.cooleshow.task.feign;
+package com.yonge.cooleshow.api.feign;
 
 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;

+ 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

+ 16 - 2
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());
@@ -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,8 +213,17 @@ 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();
+		//  查询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);
 		queryInfo.setPlatformType("STUDENT");
 		// 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());

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

@@ -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:视频")

+ 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);
 }

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

@@ -81,7 +81,7 @@ public class SysNewsInformation {
 
 	private Boolean delFlag= false;
 
-	@ApiModelProperty("版本号")
+	@ApiModelProperty("是否审核版本 0:否,1:是")
 	private String attribute1;
 
 	@ApiModelProperty("广告类型  IMAGE:图片,VIDEO:视频")

+ 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);
 }

+ 5 - 1
cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/service/impl/SysNewsInformationServiceImpl.java

@@ -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);
+	}
 }

+ 6 - 1
cooleshow-cms/src/main/resources/config/mybatis/SysNewsInformationMapper.xml

@@ -180,7 +180,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

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

@@ -2,7 +2,7 @@ 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;
 
 /**

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

@@ -0,0 +1,25 @@
+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;
+
+/**
+ * 订单轮询
+ * @Author: liweifan
+ * @Data: 2022/4/13 17:36
+ */
+@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();
+    }
+}

+ 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();
+	}
 }

+ 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);
+
 }

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

@@ -176,5 +176,9 @@ public interface CourseScheduleDao extends BaseMapper<CourseSchedule> {
 
     //根据老师id统计明日课程
     List<CountVo> selectTypeCount(@Param("teacherId")Long teacherId,@Param("tomorrow") String tomorrow);
+
+
+    List<TodayNotRepliedAndNotDecorateHomeworkVo> selectTodayNotRepliedAndNotDecorateHomework();
+
 }
 

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

@@ -46,5 +46,12 @@ 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);
 }

+ 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;
+    }
 }

+ 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;
+	}
 }

+ 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;
+    }
+}

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

@@ -12,4 +12,13 @@ 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);
 }

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

@@ -222,5 +222,13 @@ public interface CourseScheduleService extends IService<CourseSchedule> {
     Integer getWeekStudentRepliedCourseSchedule(Long userId);
 
     void courseRemind();
+
+    /**
+     * 发送"当日陪练课未评价/布置作业
+     * (每晚9点30,已评价/已布置不发)"
+     *
+     */
+    void sendTodayNotRepliedAndNotDecorateHomework();
+
 }
 

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

@@ -56,4 +56,8 @@ public class AppVersionInfoServiceImpl extends BaseServiceImpl<Long, AppVersionI
 		appVersionInfoDao.update(appVersionInfo);
 	}
 
+	@Override
+	public AppVersionInfo selectAppVersionInfo(String platform, String version) {
+		return appVersionInfoDao.selectAppVersionInfo(platform, version);
+	}
 }

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

@@ -1038,6 +1038,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

+ 6 - 1
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;
@@ -129,6 +128,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 +141,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);
     }
 

+ 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>

+ 17 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -621,4 +621,21 @@
         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>
 </mapper>

+ 9 - 0
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>

+ 16 - 0
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,6 +52,17 @@ public class MusicAlbumController extends BaseController {
         if (sysUser == null  || sysUser.getId() == null) {
             return failed("用户信息获取失败");
         }
+
+        // 检查app版本
+        AppVersionInfo appVersionInfo = appVersionInfoService.selectAppVersionInfo(query.getPlatform(),
+                                                                                   query.getVersion());
+        if (appVersionInfo != null
+                && AppVersionStatusEnum.AUDITING.getCode().equals(appVersionInfo.getStatus())) {
+            query.setAuditVersion(YesOrNoEnum.YES);
+        } else {
+            query.setAuditVersion(YesOrNoEnum.NO);
+        }
+
         query.setAlbumStatus(YesOrNoEnum.YES);
         query.setSortBy(1);
         IPage<MusicAlbumVo> iPage = musicAlbumService.selectPage(PageUtil.getPage(query),query);

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

@@ -134,6 +134,7 @@ public class StudentCourseScheduleController extends BaseController {
         if (user == null || null == user.getId()) {
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
+        // 检查app版本审核/正式
         return succeed(courseScheduleService.queryLiveAndVideo(user.getId(),null));
     }