Browse Source

Merge remote-tracking branch 'origin/feature/1022_vip' into feature/1022_vip

zouxuan 7 tháng trước cách đây
mục cha
commit
b56cda4b1a

+ 11 - 43
mec-application/src/main/java/com/ym/mec/student/controller/StudentManageController.java

@@ -1,6 +1,7 @@
 package com.ym.mec.student.controller;
 
 import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
 import com.microsvc.toolkit.middleware.oss.wrapper.OssWrapper;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.CloudTeacherOrderDao;
@@ -32,6 +33,7 @@ import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 @Api(tags = "学生管理")
@@ -161,20 +163,14 @@ public class StudentManageController extends BaseController {
     @ApiOperation(value = "获取学员基本信息")
     @GetMapping("student/queryUserInfo")
 	public Object queryUserInfo(String platform) {
-		SysUser user = sysUserService.getUser();
-		Student student = studentService.get(user.getId());
-		student.setId(user.getId());
-		student.setUsername(user.getUsername());
-		student.setAvatar(user.getAvatar());
-		student.setPhone(user.getPhone());
-		student.setCurrentClass(user.getCurrentClass());
-		student.setCurrentGrade(user.getCurrentGrade());
-		student.setBirthdate(user.getBirthdate());
-		student.setGender(user.getGender());
-		student.setRealName(user.getRealName());
-		student.setIdCardNo(user.getIdCardNo());
-		student.setImToken(user.getImToken());
-		student.setOrganId(user.getOrganId());
+
+        SysUser user = sysUserService.getUser();
+        // 返回数据
+        Map<String, Object> datas = Maps.newHashMap();
+
+        // 查询学员基本信息
+        Student student = studentManageService.getStudentUserInfo(user.getId(), user, datas);
+        datas.put("student", student);
 
         // 注册IM用户Token
         try {
@@ -200,9 +196,6 @@ public class StudentManageController extends BaseController {
 			student.setExtSjectNamesMap(subjectList.stream().collect(Collectors.toMap(Subject :: getId, Subject :: getName)));
 		}
 
-		Map<String, Object> datas = new HashMap<String, Object>();
-		datas.put("student", student);
-		
         List<CloudTeacherOrder> dataList = cloudTeacherOrderDao.queryByUserIdAndStatus(user.getId(),1);
         if(dataList != null && dataList.size() > 0){
         	datas.put("isExistPendingMember", true);
@@ -228,32 +221,7 @@ public class StudentManageController extends BaseController {
 		} else {
 			datas.put("userPrivileges", memberRankPrivilegesService.queryByMemberRankId(student.getMemberRankSettingId()));
 		}
-		SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.HOMEWORK_OPEN_FLAG);
-		if (sysConfig == null) {
-			datas.put("homeworkOpenFlag", 0);
-		} else {
-			datas.put("homeworkOpenFlag", Integer.parseInt(sysConfig.getParanValue()));
-		}
-        // 获取会员等级图标
-        MemberRankSetting memberRankSetting = memberRankSettingService.get(student.getMemberRankSettingId());
-        if (memberRankSetting != null) {
-            student.setMemberRankImg(memberRankSetting.getIcon());
-        }
-        //是否是试用会员
-		if(student.getExperienceMemberRankSettingId() == null){
-            datas.put("isExperience", 0);
-        }else {
-            int i = DateUtil.daysBetween(student.getExperienceMembershipEndTime(),student.getMembershipEndTime());
-            if(i > 0){
-                datas.put("isExperience", 0);
-            }else {
-                datas.put("isExperience", 1);
-                if (memberRankSetting != null) {
-                    student.setMemberRankImg(memberRankSetting.getExperienceIcon());
-                }
-            }
-        }
-        datas.put("vipInfo", cloudTeacherOrderService.getEffectiveCloudTeacherOrder(Lists.newArrayList(student.getUserId())));
+
 		return succeed(datas);
 	}
 

+ 16 - 0
mec-application/src/main/java/com/ym/mec/teacher/controller/StudentController.java

@@ -1,6 +1,8 @@
 package com.ym.mec.teacher.controller;
 
+import com.google.common.collect.Maps;
 import com.ym.mec.biz.dal.dto.BaseMapDto;
+import com.ym.mec.biz.dal.entity.Student;
 import com.ym.mec.biz.dal.entity.StudentAttendance;
 import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
@@ -98,6 +100,20 @@ public class StudentController extends BaseController {
         return succeed(studentManageService.findStudentMusicGroupsByUserId(userId));
     }
 
+    @ApiOperation(value = "根据学生ID获取学生信息")
+    @GetMapping("/queryUserInfo")
+    public Object queryUserInfo(@ApiParam(value = "学生编号", required = true) Integer userId){
+
+        // 返回数据
+        Map<String, Object> dataMap = Maps.newHashMap();
+
+        // 查询学员基本信息
+        Student student = studentManageService.getStudentUserInfo(userId, null, dataMap);
+        dataMap.put("student", student);
+
+        return succeed(dataMap);
+    }
+
     @ApiOperation(value = "获取老师关联的学员声部列表")
     @GetMapping("/queryStuSubjectId")
     public HttpResponseResult<List<BaseMapDto>> queryStuSubjectId(){

+ 15 - 0
mec-application/src/main/java/com/ym/mec/web/controller/StudentManageController.java

@@ -1,6 +1,7 @@
 package com.ym.mec.web.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.google.common.collect.Maps;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.StudentMusicGroupStatusEnum;
@@ -524,4 +525,18 @@ public class StudentManageController extends BaseController {
         studentService.updateStudentMember(userId,endTime,memo,sysUserService.getUserId());
         return succeed();
     }
+
+    @ApiOperation(value = "根据学生ID获取学生信息")
+    @GetMapping("/queryUserInfo")
+    public Object queryUserInfo(@ApiParam(value = "学生编号", required = true) Integer userId){
+
+        // 返回数据
+        Map<String, Object> dataMap = Maps.newHashMap();
+
+        // 查询学员基本信息
+        Student student = studentManageService.getStudentUserInfo(userId, null, dataMap);
+        dataMap.put("student", student);
+
+        return succeed(dataMap);
+    }
 }

+ 17 - 0
mec-application/src/main/java/com/ym/mec/web/controller/education/EduStudentController.java

@@ -1,9 +1,11 @@
 package com.ym.mec.web.controller.education;
 
+import com.google.common.collect.Maps;
 import com.ym.mec.biz.dal.dto.BaseMapDto;
 import com.ym.mec.biz.dal.dto.EduOrganStudentDataDto;
 import com.ym.mec.biz.dal.dto.StatDto;
 import com.ym.mec.biz.dal.entity.Organization;
+import com.ym.mec.biz.dal.entity.Student;
 import com.ym.mec.biz.dal.page.StudentQueryInfo;
 import com.ym.mec.biz.service.OrganizationService;
 import com.ym.mec.biz.service.StudentManageService;
@@ -21,6 +23,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -51,6 +54,20 @@ public class EduStudentController extends BaseController {
         return succeed(studentManageService.findStudentMusicGroupsByUserId(userId));
     }
 
+    @ApiOperation(value = "根据学生ID获取学生信息")
+    @GetMapping("/queryUserInfo")
+    public Object queryUserInfo(@ApiParam(value = "学生编号", required = true) Integer userId){
+
+        // 返回数据
+        Map<String, Object> dataMap = Maps.newHashMap();
+
+        // 查询学员基本信息
+        Student student = studentManageService.getStudentUserInfo(userId, null, dataMap);
+        dataMap.put("student", student);
+
+        return succeed(dataMap);
+    }
+
     @ApiOperation(value = "分部云教练学员数据预览")
     @GetMapping("/organStudentOverView")
     public HttpResponseResult<List<EduOrganStudentDataDto>> organStudentOverView() throws Exception {

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentManageService.java

@@ -221,4 +221,13 @@ public interface StudentManageService {
     PageInfo<CloudTeacherActiveWapper.Result> cloudTeacherActive(CloudTeacherActiveWapper.Query queryInfo);
 
     CloudTeacherActiveWapper.ResultMap cloudTeacherActiveStatistics(CloudTeacherActiveWapper.Query queryInfo);
+
+    /**
+     * 获取学员信息
+     * @param userId 学员id
+     * @param user 当前用户
+     * @param datas 附加数据
+     * @return 学员信息
+     */
+    Student getStudentUserInfo(Integer userId, SysUser user, Map<String, Object> datas);
 }

+ 56 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentLessonTrainingDetailServiceImpl.java

@@ -4,8 +4,11 @@ import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.dayaedu.cbs.openfeign.client.CoursewareFeignService;
 import com.dayaedu.cbs.openfeign.wrapper.courseware.CbsMaterialWrapper;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
 import com.microsvc.toolkit.common.response.paging.PageInfo;
 import com.microsvc.toolkit.common.response.template.R;
+import com.ym.mec.biz.dal.dao.CloudTeacherOrderDao;
 import com.ym.mec.biz.dal.dao.CourseHomeworkDao;
 import com.ym.mec.biz.dal.dao.StudentLessonTrainingDetailMapper;
 import com.ym.mec.biz.dal.dao.SubjectDao;
@@ -17,12 +20,14 @@ import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.ELessonTrainingType;
 import com.ym.mec.biz.dal.enums.StandardEnum;
 import com.ym.mec.biz.service.ExtracurricularExercisesService;
+import com.ym.mec.biz.service.MemberRankCategoryMapperService;
 import com.ym.mec.biz.service.StudentLessonTrainingDetailService;
 import com.ym.mec.biz.service.SubjectService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.jetbrains.annotations.NotNull;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -51,6 +56,12 @@ public class StudentLessonTrainingDetailServiceImpl extends ServiceImpl<StudentL
     @Resource
     private CoursewareFeignService coursewareFeignService;
 
+    @Autowired
+    private CloudTeacherOrderDao cloudTeacherOrderDao;
+
+    @Autowired
+    private MemberRankCategoryMapperService memberRankCategoryMapperService;
+
     /**
      * 查询详情
      * @param id 详情ID
@@ -205,6 +216,30 @@ public class StudentLessonTrainingDetailServiceImpl extends ServiceImpl<StudentL
                 .distinct()
                 .collect(Collectors.toList());
         if(CollectionUtils.isNotEmpty(musicScoreIdList)){
+
+            // 按用户分组,查询用户VIP信息
+            List<Long> collect = studentLessonTrainingDetails.stream()
+                .filter(x -> "MUSIC_SCORE".equals(x.getHomeworkType()))
+                .map(StudentLessonTrainingDetailWrapper.StudentLessonTrainingDetail::getUserId)
+                .filter(Objects::nonNull)
+                .distinct().collect(Collectors.toList());
+
+            Map<Integer, List<Integer>> userVipMap = Maps.newConcurrentMap();
+            collect.parallelStream().forEach(userId -> {
+                // 查询有效的会员
+                List<Integer> activationVipIds = cloudTeacherOrderDao.getActivationVipIds(userId.intValue());
+
+                // 获取会员的曲目分类
+                List<MemberRankCategoryMapper> categoryMapperList = memberRankCategoryMapperService.getByMemberRankId(activationVipIds);
+                if (CollectionUtils.isEmpty(categoryMapperList)) {
+                    categoryMapperList = Lists.newArrayList();
+                }
+                List<Integer> categoryIds = categoryMapperList.stream().map(MemberRankCategoryMapper::getCategoryId).distinct().collect(Collectors.toList());
+                // 设置用户VIP可查看曲目分类
+                userVipMap.put(userId.intValue(), categoryIds);
+            });
+
+            // 查询曲目信息
             List<SysMusicScore> scoreList = sysMusicScoreDao.findByIds(musicScoreIdList.stream().map(String::valueOf).collect(Collectors.joining(",")));
             if(CollectionUtils.isNotEmpty(scoreList)){
                 Map<Integer, SysMusicScore> musicScoreMap = scoreList.stream().collect(Collectors.toMap(SysMusicScore::getId, Function.identity()));
@@ -215,12 +250,33 @@ public class StudentLessonTrainingDetailServiceImpl extends ServiceImpl<StudentL
                             if(sysMusicScore.getShowFlag() == 1 && sysMusicScore.getDelFlag() == 0){
                                 studentLessonTrainingDetail.setValidFlag(true);
                             }
+
+                            // 免费曲目也可以直接访问
+                            if (StringUtils.isBlank(sysMusicScore.getRankIds())) {
+                                studentLessonTrainingDetail.setValidFlag(true);
+                            }
+
+                            // 用户VIP可查看曲目分类
+                            if (Objects.nonNull(studentLessonTrainingDetail.getUserId())
+                                && userVipMap.containsKey(studentLessonTrainingDetail.getUserId().intValue())) {
+
+                                // 设置默认不可以查看
+                                boolean validFlag = false;
+                                List<Integer> categoryIds = userVipMap.get(studentLessonTrainingDetail.getUserId().intValue());
+                                if (categoryIds.contains(sysMusicScore.getCbsMusicCategoriesId())
+                                    || StringUtils.isBlank(sysMusicScore.getRankIds())) {
+                                    // 免费曲目,已购买曲目可直接查看
+                                    validFlag = true;
+                                }
+                                studentLessonTrainingDetail.setValidFlag(validFlag);
+                            }
                             studentLessonTrainingDetail.setMusicScoreName(sysMusicScore.getName());
                         }
                     }
                 }
             }
         }
+
         //课件素材编号列表
         List<Long> materialList = studentLessonTrainingDetails.stream()
                 .filter(o->"VIDEO".equals(o.getHomeworkType()))

+ 72 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentManageServiceImpl.java

@@ -121,6 +121,9 @@ public class StudentManageServiceImpl implements StudentManageService {
     @Autowired
     private SubjectService subjectService;
 
+    @Autowired
+    private MemberRankSettingService memberRankSettingService;
+
     @Override
     public PageInfo<StudentManageListDto> findStudentsByOrganId(StudentManageQueryInfo queryInfo) {
         PageInfo<StudentManageListDto> pageInfo = new PageInfo<StudentManageListDto>(queryInfo.getPage(), queryInfo.getRows());
@@ -1258,4 +1261,73 @@ public class StudentManageServiceImpl implements StudentManageService {
         resultMap.setStatistics(statistics);
         return resultMap;
     }
+
+    /**
+     * 获取学员信息
+     * @param userId 学员id
+     * @param user 用户信息
+     * @param datas 附加数据
+     * @return 学员信息
+     */
+    @Override
+    public Student getStudentUserInfo(Integer userId, SysUser user, Map<String, Object> datas) {
+
+        // 获取学员信息
+        if (Objects.isNull(user)) {
+            user = teacherDao.getUser(userId);
+
+            if (Objects.isNull(user)) {
+                throw new BizException("学员信息不存在");
+            }
+        }
+
+        // 基本信息填充
+        Student student = studentService.get(user.getId());
+        student.setId(user.getId());
+        student.setUsername(user.getUsername());
+        student.setAvatar(user.getAvatar());
+        student.setPhone(user.getPhone());
+        student.setCurrentClass(user.getCurrentClass());
+        student.setCurrentGrade(user.getCurrentGrade());
+        student.setBirthdate(user.getBirthdate());
+        student.setGender(user.getGender());
+        student.setRealName(user.getRealName());
+        student.setIdCardNo(user.getIdCardNo());
+        student.setImToken(user.getImToken());
+        student.setOrganId(user.getOrganId());
+
+        // 学员其他基础信息
+        SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.HOMEWORK_OPEN_FLAG);
+        if (sysConfig == null) {
+            datas.put("homeworkOpenFlag", 0);
+        } else {
+            datas.put("homeworkOpenFlag", Integer.parseInt(sysConfig.getParanValue()));
+        }
+
+        // 获取会员等级图标
+        MemberRankSetting memberRankSetting = memberRankSettingService.get(student.getMemberRankSettingId());
+        if (memberRankSetting != null) {
+            student.setMemberRankImg(memberRankSetting.getIcon());
+        }
+
+        //是否是试用会员
+        if(student.getExperienceMemberRankSettingId() == null){
+            datas.put("isExperience", 0);
+        }else {
+            int i = DateUtil.daysBetween(student.getExperienceMembershipEndTime(),student.getMembershipEndTime());
+            if(i > 0){
+                datas.put("isExperience", 0);
+            }else {
+                datas.put("isExperience", 1);
+                if (memberRankSetting != null) {
+                    student.setMemberRankImg(memberRankSetting.getExperienceIcon());
+                }
+            }
+        }
+
+        // 学员会员信息
+        datas.put("vipInfo", cloudTeacherOrderService.getEffectiveCloudTeacherOrder(Lists.newArrayList(student.getUserId())));
+
+        return student;
+    }
 }