浏览代码

查询老师,学员声部下拉

weifanli 3 年之前
父节点
当前提交
905c4baaa3

+ 9 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/StudentDao.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.biz.dal.dto.search.StudentSearch;
 import com.yonge.cooleshow.biz.dal.entity.Student;
+import com.yonge.cooleshow.biz.dal.entity.Subject;
 import com.yonge.cooleshow.biz.dal.vo.StudentVo;
 import org.apache.ibatis.annotations.Param;
 
@@ -32,4 +33,12 @@ public interface StudentDao extends BaseMapper<Student> {
 	 * @return: java.lang.Integer
 	 */
     Integer setSubject(@Param("id") Long id, @Param("subjectIds") String subjectIds);
+	/***
+	 * 获取声部下拉框
+	 * @author liweifan
+	 * @param: id
+	 * @updateTime 2022/5/9 10:17
+	 * @return: java.util.List<com.yonge.cooleshow.biz.dal.entity.Subject>
+	 */
+	List<Subject> querySubjectItem(@Param("userId")Long id);
 }

+ 6 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/CacheNameEnum.java

@@ -15,6 +15,8 @@ import java.time.Duration;
 public enum CacheNameEnum implements BaseEnum<String, CacheNameEnum> {
     TEACHER_TOTAL("老师统计缓存"),
     STUDENT_TOTAL("学生统计缓存"),
+    TEACHER_SUBJECT_ITEM("老师声部下拉缓存", Duration.ofHours(1L)),
+    STUDENT_SUBJECT_ITEM("学生声部下拉缓存", Duration.ofHours(1L)),
 
     LOCK_EXECUTE_ORDER("用户下单/付款/取消订单锁"),
     LOCK_CHANGE_ACCOUNT("账户变更锁"),
@@ -50,6 +52,10 @@ public enum CacheNameEnum implements BaseEnum<String, CacheNameEnum> {
         return msg;
     }
 
+    public Duration getDuration() {
+        return duration;
+    }
+
     public String getRedisKey(Object... detils) {
         String key = this.getCode();
         for (Object detil : detils) {

+ 10 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/StudentService.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.search.StudentSearch;
 import com.yonge.cooleshow.biz.dal.entity.Student;
+import com.yonge.cooleshow.biz.dal.entity.Subject;
 import com.yonge.cooleshow.biz.dal.vo.StudentHomeVo;
 import com.yonge.cooleshow.biz.dal.vo.StudentTotalVo;
 import com.yonge.cooleshow.biz.dal.vo.StudentVo;
@@ -50,4 +51,13 @@ public interface StudentService extends IService<Student>  {
      * @return: java.lang.Integer
      */
     Integer setSubject(Long id, String subjectIds);
+
+    /***
+     * 获取声部下拉框
+     * @author liweifan
+     * @param: id
+     * @updateTime 2022/5/9 10:16
+     * @return: java.util.List<com.yonge.cooleshow.biz.dal.entity.Subject>
+     */
+    List<Subject> querySubjectItem(Long id);
 }

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

@@ -8,6 +8,7 @@ import com.yonge.cooleshow.biz.dal.dao.CourseScheduleDao;
 import com.yonge.cooleshow.biz.dal.dao.StudentStarDao;
 import com.yonge.cooleshow.biz.dal.dto.search.StudentSearch;
 import com.yonge.cooleshow.biz.dal.entity.StudentTotal;
+import com.yonge.cooleshow.biz.dal.entity.Subject;
 import com.yonge.cooleshow.biz.dal.enums.CacheNameEnum;
 import com.yonge.cooleshow.biz.dal.service.SysConfigService;
 import com.yonge.cooleshow.biz.dal.vo.*;
@@ -24,6 +25,7 @@ import org.springframework.util.CollectionUtils;
 
 import java.lang.reflect.InvocationTargetException;
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 
@@ -76,4 +78,16 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
     public Integer setSubject(Long id, String subjectIds) {
         return baseMapper.setSubject(id, subjectIds);
     }
+
+    @Override
+    public List<Subject> querySubjectItem(Long id) {
+        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;
+    }
 }

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

@@ -35,6 +35,7 @@ import com.yonge.cooleshow.biz.dal.dao.TeacherDao;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 @Service
@@ -299,7 +300,10 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
 
     @Override
     public Integer setSubject(Long id, String subjectIds) {
-        return baseMapper.setSubject(id, subjectIds);
+        Integer integer = baseMapper.setSubject(id, subjectIds);
+        //清除老师声部缓存
+        redissonClient.getBucket(CacheNameEnum.TEACHER_SUBJECT_ITEM.getRedisKey(id)).delete();
+        return integer;
     }
 
     @Override
@@ -356,8 +360,13 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
 
     @Override
     public List<Subject> querySubjectItem(Long id) {
-        List<Subject> subjectList = baseMapper.querySubjectItem(id);
-
-        return null;
+        List<Subject> subjectList = (List<Subject>) redissonClient.getBucket(CacheNameEnum.TEACHER_SUBJECT_ITEM.getRedisKey(id)).get();
+        if (null == subjectList) {
+            subjectList = baseMapper.querySubjectItem(id);
+            redissonClient.getBucket(CacheNameEnum.TEACHER_SUBJECT_ITEM.getRedisKey(id))
+                    .set(subjectList, CacheNameEnum.TEACHER_SUBJECT_ITEM.getDuration().toHours(),
+                            TimeUnit.HOURS);
+        }
+        return subjectList;
     }
 }

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

@@ -683,5 +683,8 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
                 userOrderVoConsumer.accept(orderDetailVo);
             }
         }
+
+        //清除老师声部缓存
+        redissonClient.getBucket(CacheNameEnum.STUDENT_SUBJECT_ITEM.getRedisKey(detail.getUserId())).delete();
     }
 }

+ 16 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/StudentMapper.xml

@@ -96,4 +96,20 @@
         </where>
     </select>
 
+    <select id="querySubjectItem" resultType="com.yonge.cooleshow.biz.dal.entity.Subject">
+        select * from subject t
+        where exists(
+            select 1 from music_sheet a
+            left join music_sheet_purchase_record a1 on a.id_ = a1.music_sheet_id_
+            where a1.student_id_ = #{userId} and a1.order_status_ = 'PAID' and find_in_set(t.id_,a.music_subject_)
+            union
+            select 1 from course_group b
+            left join course_schedule_student_payment b1 on b.id_ = b1.course_group_id_
+            where b1.user_id_ = #{userId} and find_in_set(t.id_,b.subject_id_)
+            union
+            select 1 from video_lesson_group c
+            left join video_lesson_purchase_record c1 on c.id_ = c1.video_lesson_group_id_
+            where c1.student_id_ = #{userId} and find_in_set(t.id_,c.lesson_subject_)
+        )
+    </select>
 </mapper>

+ 8 - 1
cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -142,6 +142,13 @@
     </update>
 
     <select id="querySubjectItem" resultType="com.yonge.cooleshow.biz.dal.entity.Subject">
-        select * from music_sheet
+        select * from subject t
+        where exists(
+            select 1 from music_sheet a where a.user_id_ = #{userId} and find_in_set(t.id_,a.music_subject_)
+            union
+            select 1 from course_group b where b.teacher_id_ = #{userId} and find_in_set(t.id_,b.subject_id_)
+            union
+            select 1 from video_lesson_group c where c.teacher_id_ = #{userId} and find_in_set(t.id_,c.lesson_subject_)
+        )
     </select>
 </mapper>

+ 12 - 0
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/StudentController.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.student.controller;
 
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.entity.Subject;
 import com.yonge.cooleshow.biz.dal.vo.StudentHomeVo;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
@@ -16,6 +17,8 @@ import org.springframework.web.bind.annotation.*;
 import com.yonge.cooleshow.biz.dal.entity.Student;
 import com.yonge.cooleshow.biz.dal.service.StudentService;
 
+import java.util.List;
+
 @RestController
 @RequestMapping("/student")
 @Api(value = "学生表", tags = "学生表")
@@ -59,4 +62,13 @@ public class StudentController extends BaseController {
         return status(studentService.setSubject(user.getId(), subjectIds) > 0);
     }
 
+    @ApiOperation(value = "获取声部搜索下拉框")
+    @PostMapping("/querySubjectItem")
+    public HttpResponseResult<List<Subject>> querySubjectItem() {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        return succeed(studentService.querySubjectItem(user.getId()));
+    }
 }