Browse Source

声部查询修改

liweifan 2 years ago
parent
commit
6a4c249679

+ 1 - 0
cooleshow-common/src/main/java/com/yonge/cooleshow/common/enums/CacheNameEnum.java

@@ -17,6 +17,7 @@ public enum CacheNameEnum implements BaseEnum<String, CacheNameEnum> {
 
     TEACHER_TOTAL("老师统计缓存"),
     STUDENT_TOTAL("学生统计缓存"),
+    SUBJECT_ITEM("声部下拉缓存", Duration.ofHours(1L)),
     TEACHER_SUBJECT_ITEM("老师声部下拉缓存", Duration.ofHours(1L)),
     STUDENT_SUBJECT_ITEM("学生声部下拉缓存", Duration.ofHours(1L)),
 

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

@@ -54,4 +54,5 @@ public interface SubjectDao extends BaseDAO<Long, Subject> {
 
     Subject queryByName(@Param("name") String name);
 
+    List<Subject> subjectSelect(@Param("type") String type);
 }

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

@@ -50,5 +50,5 @@ public interface SubjectService extends BaseService<Long, Subject> {
 	 * @updateTime 2022/3/21 17:23
 	 * @return: java.util.List<com.yonge.cooleshow.biz.dal.vo.SubjectSelectVo>
 	 */
-	List<Subject> subjectSelect();
+	List<Subject> subjectSelect(String type);
 }

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

@@ -36,6 +36,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
+import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.*;
@@ -53,7 +54,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
 
     private static final Logger log = LoggerFactory.getLogger(MusicSheetServiceImpl.class);
 
-    @Autowired
+    @Resource
     private MusicSheetDao musicSheetDao;
 
     @Autowired
@@ -80,7 +81,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
     @Autowired
     private AlbumMusicRelateService albumMusicRelateService;
 
-    @Autowired
+    @Resource
     private SysUserFeignService sysUserFeignService;
 
     @Autowired
@@ -717,7 +718,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
         dataList.sort(Comparator.comparingInt(ExcelDataReaderProperty::getRowIndex));
         List<MusicSheetDto> musicSheetDtoList = new ArrayList<>();
         List<MusicTagVo> musicTagVoList = musicTagService.selectMusicTagTree();
-        List<Subject> subjects = subjectService.subjectSelect();
+        List<Subject> subjects = subjectService.subjectSelect(null);
         Date date = new Date();
         for (ExcelDataReaderProperty<MusicSheetExport> readerProperty : dataList) {
             MusicSheetDto musicSheetDto = new MusicSheetDto();

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

@@ -49,8 +49,6 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
     private StudentService studentService;
     @Autowired
     private TeacherDao teacherDao;
-    @Autowired
-    private TeacherService teacherService;
 
     @Override
     public StudentVo detail(Long userId) {
@@ -118,15 +116,6 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
             subjectList.addAll(cacheByType);
         }
         return subjectList;
-
-        /*List<Subject> subjectList = (List<Subject>) redissonClient.getBucket(CacheNameEnum.STUDENT_SUBJECT_ITEM.getRedisKey(id)).get();
-        if (null == subjectList) {
-            subjectList = baseMapper.querySubjectItem(id);
-            redissonClient.getBucket(CacheNameEnum.STUDENT_SUBJECT_ITEM.getRedisKey(id))
-                    .set(subjectList, CacheNameEnum.STUDENT_SUBJECT_ITEM.getDuration().toHours(),
-                            TimeUnit.HOURS);
-        }
-        return subjectList;*/
     }
 
     private List<Subject> getCacheByType(Long userId, String type) {

+ 38 - 8
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/SubjectServiceImpl.java

@@ -1,10 +1,15 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
+import com.yonge.cooleshow.biz.dal.entity.TeacherTotal;
+import com.yonge.cooleshow.common.enums.CacheNameEnum;
 import com.yonge.toolset.base.page.PageInfo;
+import com.yonge.toolset.base.util.StringUtil;
 import com.yonge.toolset.mybatis.service.impl.BaseServiceImpl;
+import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -22,6 +27,8 @@ public class SubjectServiceImpl extends BaseServiceImpl<Long, Subject> implement
 
     @Autowired
     private SubjectDao subjectDao;
+    @Autowired
+    private RedissonClient redissonClient;
 
     @Override
     public BaseDAO<Long, Subject> getDAO() {
@@ -81,16 +88,36 @@ public class SubjectServiceImpl extends BaseServiceImpl<Long, Subject> implement
     }
 
     @Override
-    public List<Subject> subjectSelect() {
-        List<Subject> allList = subjectDao.findAll(new HashMap<>());
+    public List<Subject> subjectSelect(String type) {
+        Object cacheRes = redissonClient.getBucket(CacheNameEnum.SUBJECT_ITEM.getRedisKey(type)).get();
+        if (null != cacheRes) {
+            List<Subject> resList = (List<Subject>) cacheRes;
+            if (!CollectionUtils.isEmpty(resList)) {
+                return resList;
+            }
+        }
+
+        List<Subject> parents;
+        List<Subject> subjects;
+
+        if(StringUtil.isEmpty(type)){
+            List<Subject> allList = subjectDao.findAll(new HashMap<>());
 
-        List<Subject> parents = allList.stream()
-                .filter(o -> (null == o.getParentSubjectId() || o.getParentSubjectId().equals(0L)))
-                .collect(Collectors.toList());
+            parents = allList.stream()
+                    .filter(o -> (null == o.getParentSubjectId() || o.getParentSubjectId().equals(0L)))
+                    .collect(Collectors.toList());
+
+            subjects = allList.stream()
+                    .filter(o -> !(null == o.getParentSubjectId() || o.getParentSubjectId().equals(0L)))
+                    .collect(Collectors.toList());
+        }else{
+            subjects = subjectDao.subjectSelect(type);
+
+            List<Long> parentIds = subjects.stream().map(Subject::getParentSubjectId).collect(Collectors.toList());
+
+            parents = findBySubjectByIdList(parentIds);
+        }
 
-        List<Subject> subjects = allList.stream()
-                .filter(o -> !(null == o.getParentSubjectId() || o.getParentSubjectId().equals(0L)))
-                .collect(Collectors.toList());
 
         for (Subject parent : parents) {
             if (null == parent.getId()) {
@@ -110,6 +137,9 @@ public class SubjectServiceImpl extends BaseServiceImpl<Long, Subject> implement
                 }
             }
         }
+
+        redissonClient.getBucket(CacheNameEnum.SUBJECT_ITEM.getRedisKey(type)).set(parents,
+                CacheNameEnum.STUDENT_SUBJECT_ITEM.getDuration().toHours(),TimeUnit.HOURS);
         return parents;
     }
 

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

@@ -27,6 +27,35 @@
 		SELECT * FROM subject where del_flag_ = 0 ORDER BY id_
 	</select>
 
+    <select id="subjectSelect" resultType="com.yonge.cooleshow.biz.dal.entity.Subject">
+        select t.* from subject t
+        join (
+        <trim prefixOverrides="union all">
+            <if test="type == null or type =='MUSIC'">
+                union all
+                (select a.music_subject_ as subject_id_ from music_sheet a GROUP BY a.music_subject_)
+            </if>
+            <if test="type == null or type =='VIDEO'">
+                union all
+                (select a.lesson_subject_ as subject_id_ from video_lesson_group a GROUP BY a.lesson_subject_)
+            </if>
+            <if test="type == null or type =='PINAO_ROOM'">
+                union all
+                (select a.subject_id_ as subject_id_ from course_group a where a.type_ = 'PIANO_ROOM_CLASS' GROUP BY a.subject_id_)
+            </if>
+            <if test="type == null or type =='PRACTICE'">
+                union all
+                (select a.subject_id_ as subject_id_ from course_group a where a.type_ = 'PRACTICE' GROUP BY a.subject_id_)
+            </if>
+            <if test="type == null or type =='LIVE'">
+                union all
+                (select a.subject_id_ as subject_id_ from course_group a where a.type_ = 'LIVE' GROUP BY a.subject_id_)
+            </if>
+        </trim>
+        ) a on t.id_ = a.subject_id_
+        where t.parent_subject_id_ != 0
+    </select>
+
     <!-- 向数据库增加一条记录 -->
     <insert id="insert" parameterType="com.yonge.cooleshow.biz.dal.entity.Subject" useGeneratedKeys="true"
             keyColumn="id"
@@ -151,4 +180,6 @@
         where  t.id_ = #{id}
     </select>
 
+
+
 </mapper>

+ 3 - 2
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/SubjectController.java

@@ -27,8 +27,9 @@ public class SubjectController extends BaseController {
 
     @ApiOperation(value = "获取声部")
     @GetMapping("/subjectSelect")
-    public HttpResponseResult<List<Subject>> subjectSelect() {
-        List<Subject> subjectSelect = subjectService.subjectSelect();
+    public HttpResponseResult<List<Subject>> subjectSelect(
+            @ApiParam(value = "类型 PRACTICE 陪练课 LIVE 直播课 VIDEO 视频课 PINAO_ROOM 琴房 MUSIC 曲目 ") String type) {
+        List<Subject> subjectSelect = subjectService.subjectSelect(type);
         return succeed(subjectSelect);
     }
 

+ 3 - 2
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/SubjectController.java

@@ -33,8 +33,9 @@ public class SubjectController extends BaseController {
 
 	@ApiOperation(value = "获取声部")
 	@GetMapping("/subjectSelect")
-    public HttpResponseResult<List<Subject>> subjectSelect(){
-        List<Subject> subjectSelect = subjectService.subjectSelect();
+    public HttpResponseResult<List<Subject>> subjectSelect(
+			@ApiParam(value = "类型 PRACTICE 陪练课 LIVE 直播课 VIDEO 视频课 PINAO_ROOM 琴房 MUSIC 曲目 ") String type){
+        List<Subject> subjectSelect = subjectService.subjectSelect(type);
         return succeed(subjectSelect);
     }
 }

+ 3 - 2
cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/open/OpenSubjectController.java

@@ -35,8 +35,9 @@ public class OpenSubjectController extends BaseController {
 
     @ApiOperation(value = "获取声部")
     @GetMapping("/subjectSelect")
-    public HttpResponseResult<List<Subject>> subjectSelect() {
-        List<Subject> subjectSelect = subjectService.subjectSelect();
+    public HttpResponseResult<List<Subject>> subjectSelect(
+            @ApiParam(value = "类型 PRACTICE 陪练课 LIVE 直播课 VIDEO 视频课 PINAO_ROOM 琴房 MUSIC 曲目 ") String type) {
+        List<Subject> subjectSelect = subjectService.subjectSelect(type);
         return succeed(subjectSelect);
     }