|  | @@ -7,36 +7,37 @@ import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.auth.api.dto.RealnameAuthReq;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.auth.api.entity.SysUser;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.auth.api.enums.SysUserType;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.constant.SysConfigConstant;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.dao.CourseScheduleDao;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.dao.EmployeeDao;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.dao.StudentStarDao;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.dto.req.TeacherSubmitReq;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.dto.search.TeacherSearch;
 | 
	
		
			
				|  |  | -import com.yonge.cooleshow.biz.dal.entity.Subject;
 | 
	
		
			
				|  |  | -import com.yonge.cooleshow.biz.dal.entity.TeacherStyleVideo;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.entity.*;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.enums.CacheNameEnum;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.enums.TeacherTypeEnum;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 | 
	
		
			
				|  |  | -import com.yonge.cooleshow.biz.dal.service.TeacherAuthEntryRecordService;
 | 
	
		
			
				|  |  | -import com.yonge.cooleshow.biz.dal.service.TeacherStyleVideoService;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.service.*;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.vo.TeacherAuthEntryRecordVo;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.vo.TeacherHomeVo;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.vo.TeacherTotalVo;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.common.entity.HttpResponseResult;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.common.exception.BizException;
 | 
	
		
			
				|  |  |  import com.yonge.toolset.utils.idcard.IdcardInfoExtractor;
 | 
	
		
			
				|  |  | +import org.apache.poi.ss.formula.functions.T;
 | 
	
		
			
				|  |  | +import org.redisson.api.RedissonClient;
 | 
	
		
			
				|  |  |  import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  |  import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 | 
	
		
			
				|  |  |  import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  | -import com.yonge.cooleshow.biz.dal.entity.Teacher;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.dao.TeacherDao;
 | 
	
		
			
				|  |  | -import com.yonge.cooleshow.biz.dal.service.TeacherService;
 | 
	
		
			
				|  |  |  import org.springframework.transaction.annotation.Transactional;
 | 
	
		
			
				|  |  |  import org.springframework.util.CollectionUtils;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import java.util.*;
 | 
	
		
			
				|  |  |  import java.util.stream.Collectors;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  @Service
 | 
	
		
			
				|  |  |  public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> implements TeacherService {
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
	
		
			
				|  | @@ -46,12 +47,17 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private TeacherAuthEntryRecordService entryRecordService;
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  | +    private TeacherAuthMusicianRecordService musicianRecordService;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  |      private EmployeeDao employeeDao;
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private StudentStarDao studentStarDao;
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private CourseScheduleDao courseScheduleDao;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private RedissonClient redissonClient;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private SysConfigService sysConfigService;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public TeacherVo detail(Long userId) {
 | 
	
	
		
			
				|  | @@ -84,9 +90,54 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  | +    public HttpResponseResult<TeacherHomeVo> queryUserInfo(SysUser user) {
 | 
	
		
			
				|  |  | +        Teacher teacher = getById(user.getId());
 | 
	
		
			
				|  |  | +        if (null == teacher) {
 | 
	
		
			
				|  |  | +            return HttpResponseResult.failed("未查询到老师信息");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        TeacherHomeVo teacherHomeVo = new TeacherHomeVo();
 | 
	
		
			
				|  |  | +        teacherHomeVo.setUserId(user.getId());
 | 
	
		
			
				|  |  | +        teacherHomeVo.setHeardUrl(user.getAvatar());
 | 
	
		
			
				|  |  | +        teacherHomeVo.setUsername(user.getUsername());
 | 
	
		
			
				|  |  | +        teacherHomeVo.setLiveFlag(teacher.getLiveFlag());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        TeacherAuthEntryRecord entryRecord = entryRecordService.getLastRecordByUserId(user.getId());
 | 
	
		
			
				|  |  | +        if (null == entryRecord) {
 | 
	
		
			
				|  |  | +            teacherHomeVo.setEntryStatus(AuthStatusEnum.UNPAALY);
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +            teacherHomeVo.setEntryStatus(entryRecord.getTeacherAuthStatus());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        TeacherAuthMusicianRecord musicianRecord = musicianRecordService.getLastRecordByUserId(user.getId());
 | 
	
		
			
				|  |  | +        if (null == musicianRecord) {
 | 
	
		
			
				|  |  | +            teacherHomeVo.setMusicianAuthStatus(AuthStatusEnum.UNPAALY);
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +            teacherHomeVo.setMusicianAuthStatus(musicianRecord.getTeacherAuthStatus());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        TeacherTotalVo totalVo = (TeacherTotalVo) redissonClient.getBucket(CacheNameEnum.TEACHER_HOME_TOTAL.getRedisKey(user.getId())).get();
 | 
	
		
			
				|  |  | +        if (null == totalVo) {
 | 
	
		
			
				|  |  | +            totalVo = new TeacherTotalVo();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        teacherHomeVo.setStarGrade((null == totalVo.getStarGrade()) ? 0 : totalVo.getStarGrade().intValue());
 | 
	
		
			
				|  |  | +        teacherHomeVo.setFansNum((null == totalVo.getFansNum()) ? 0 : totalVo.getFansNum());
 | 
	
		
			
				|  |  | +        teacherHomeVo.setExpTime((null == totalVo.getExpTime()) ? 0 : totalVo.getExpTime());
 | 
	
		
			
				|  |  | +        teacherHomeVo.setUnExpTime((null == totalVo.getUnExpTime()) ? 0 : totalVo.getUnExpTime());
 | 
	
		
			
				|  |  | +        return HttpResponseResult.succeed(teacherHomeVo);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  |      public HttpResponseResult<Boolean> openLive(Long id) {
 | 
	
		
			
				|  |  | -        //todo 根据老师规则,判断老师直播权限
 | 
	
		
			
				|  |  | -        if (true) {
 | 
	
		
			
				|  |  | +        TeacherTotalVo totalVo = (TeacherTotalVo) redissonClient.getBucket(CacheNameEnum.TEACHER_HOME_TOTAL.getRedisKey(id)).get();
 | 
	
		
			
				|  |  | +        if (null == totalVo) {
 | 
	
		
			
				|  |  | +            return HttpResponseResult.succeed(false);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        //开通直播需要粉丝数
 | 
	
		
			
				|  |  | +        Integer fansNum = Integer.parseInt(sysConfigService.findByParamName(SysConfigConstant.OPEN_LIVE_FANS_NUM).getParamValue());
 | 
	
		
			
				|  |  | +        //开通直播需要已完成课时数
 | 
	
		
			
				|  |  | +        Integer overClass = Integer.parseInt(sysConfigService.findByParamName(SysConfigConstant.OPEN_LIVE_OVER_CLASS).getParamValue());
 | 
	
		
			
				|  |  | +        //根据老师规则,判断老师直播权限
 | 
	
		
			
				|  |  | +        if (totalVo.getFansNum() > fansNum && totalVo.getExpTime() > overClass) {
 | 
	
		
			
				|  |  |              Teacher teacher = new Teacher();
 | 
	
		
			
				|  |  |              teacher.setUserId(id);
 | 
	
		
			
				|  |  |              teacher.setLiveFlag(YesOrNoEnum.YES);
 | 
	
	
		
			
				|  | @@ -120,21 +171,23 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
 | 
	
		
			
				|  |  |          for (Teacher teacher : teachers) {
 | 
	
		
			
				|  |  |              TeacherTotalVo totalVo = new TeacherTotalVo();
 | 
	
		
			
				|  |  |              totalVo.setUserId(teacher.getUserId());
 | 
	
		
			
				|  |  | -            TeacherTotalVo fansTotal= teacherStarMap.get(teacher.getUserId());
 | 
	
		
			
				|  |  | -            if(null != fansTotal){
 | 
	
		
			
				|  |  | +            TeacherTotalVo fansTotal = teacherStarMap.get(teacher.getUserId());
 | 
	
		
			
				|  |  | +            if (null != fansTotal) {
 | 
	
		
			
				|  |  |                  totalVo.setFansNum(fansTotal.getFansNum());
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            TeacherTotalVo courseTotal= teacherCourseMap.get(teacher.getUserId());
 | 
	
		
			
				|  |  | -            if(null != courseTotal){
 | 
	
		
			
				|  |  | +            TeacherTotalVo courseTotal = teacherCourseMap.get(teacher.getUserId());
 | 
	
		
			
				|  |  | +            if (null != courseTotal) {
 | 
	
		
			
				|  |  |                  totalVo.setExpTime(courseTotal.getExpTime());
 | 
	
		
			
				|  |  |                  totalVo.setUnExpTime(courseTotal.getUnExpTime());
 | 
	
		
			
				|  |  |                  Double starGrade = courseTotal.getStarGrade();
 | 
	
		
			
				|  |  | -                if(null != starGrade){
 | 
	
		
			
				|  |  | +                if (null != starGrade) {
 | 
	
		
			
				|  |  |                      Long round = Math.round(starGrade);
 | 
	
		
			
				|  |  |                      totalVo.setStarGrade(round.doubleValue());
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              resultList.add(totalVo);
 | 
	
		
			
				|  |  | +            redissonClient.getBucket(CacheNameEnum.TEACHER_HOME_TOTAL.getRedisKey(totalVo.getUserId()))
 | 
	
		
			
				|  |  | +                    .set(totalVo);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          return resultList;
 | 
	
		
			
				|  |  |      }
 |