|
@@ -7,6 +7,7 @@ import com.yonge.cooleshow.biz.dal.dao.MusicSheetDao;
|
|
import com.yonge.cooleshow.biz.dal.dao.UserAccountRecordDao;
|
|
import com.yonge.cooleshow.biz.dal.dao.UserAccountRecordDao;
|
|
import com.yonge.cooleshow.biz.dal.dto.SubjectHomeSearch;
|
|
import com.yonge.cooleshow.biz.dal.dto.SubjectHomeSearch;
|
|
import com.yonge.cooleshow.biz.dal.dto.req.TotalReq;
|
|
import com.yonge.cooleshow.biz.dal.dto.req.TotalReq;
|
|
|
|
+import com.yonge.cooleshow.biz.dal.entity.SysUser;
|
|
import com.yonge.cooleshow.biz.dal.enums.CourseScheduleEnum;
|
|
import com.yonge.cooleshow.biz.dal.enums.CourseScheduleEnum;
|
|
import com.yonge.cooleshow.biz.dal.enums.GoodTypeEnum;
|
|
import com.yonge.cooleshow.biz.dal.enums.GoodTypeEnum;
|
|
import com.yonge.cooleshow.biz.dal.enums.TeacherTagEnum;
|
|
import com.yonge.cooleshow.biz.dal.enums.TeacherTagEnum;
|
|
@@ -58,6 +59,10 @@ public class HomeServiceImpl implements HomeService {
|
|
private SysMusicCompareRecordService sysMusicCompareRecordService;
|
|
private SysMusicCompareRecordService sysMusicCompareRecordService;
|
|
@Resource
|
|
@Resource
|
|
private UserOrderDetailService userOrderDetailService;
|
|
private UserOrderDetailService userOrderDetailService;
|
|
|
|
+ @Resource
|
|
|
|
+ private SysUserService sysUserService;
|
|
|
|
+ @Resource
|
|
|
|
+ private StudentService studentService;
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public HomeUserToDoNum getUserToDoNum() {
|
|
public HomeUserToDoNum getUserToDoNum() {
|
|
@@ -453,30 +458,20 @@ public class HomeServiceImpl implements HomeService {
|
|
|
|
|
|
//数据补全,按时间顺序
|
|
//数据补全,按时间顺序
|
|
private List<TeacherIndexWrapper.CourseExposureTotal> exposureFillData(List<TeacherIndexWrapper.CourseExposureTotal> exposureTotals,
|
|
private List<TeacherIndexWrapper.CourseExposureTotal> exposureFillData(List<TeacherIndexWrapper.CourseExposureTotal> exposureTotals,
|
|
- List<String> dateList,
|
|
|
|
- String[] typeArr) {
|
|
|
|
- if(exposureTotals == null){
|
|
|
|
- exposureTotals = new ArrayList<>();
|
|
|
|
- }
|
|
|
|
- //按类型分组
|
|
|
|
- Map<String, List<TeacherIndexWrapper.CourseExposureTotal>> typeMap = exposureTotals.stream()
|
|
|
|
- .collect(Collectors.groupingBy(TeacherIndexWrapper.CourseExposureTotal::getType));
|
|
|
|
|
|
+ List<String> dateList) {
|
|
List<TeacherIndexWrapper.CourseExposureTotal> result = new ArrayList<>();
|
|
List<TeacherIndexWrapper.CourseExposureTotal> result = new ArrayList<>();
|
|
//按时间段补全数据
|
|
//按时间段补全数据
|
|
for (String s : dateList) {
|
|
for (String s : dateList) {
|
|
- for (String type : typeArr) {
|
|
|
|
- List<TeacherIndexWrapper.CourseExposureTotal> dateMap = typeMap.get(type);
|
|
|
|
- if(CollectionUtils.isEmpty(dateMap)){
|
|
|
|
- result.add(new TeacherIndexWrapper.CourseExposureTotal(s,type,0));
|
|
|
|
|
|
+ if(CollectionUtils.isEmpty(exposureTotals)){
|
|
|
|
+ result.add(new TeacherIndexWrapper.CourseExposureTotal(s,0));
|
|
|
|
+ }else {
|
|
|
|
+ Map<String, TeacherIndexWrapper.CourseExposureTotal> dateMapGroup = exposureTotals.stream()
|
|
|
|
+ .collect(Collectors.toMap(TeacherIndexWrapper.CourseExposureTotal::getDate, o -> o));
|
|
|
|
+ TeacherIndexWrapper.CourseExposureTotal courseExposureTotal = dateMapGroup.get(s);
|
|
|
|
+ if(Objects.nonNull(courseExposureTotal)){
|
|
|
|
+ result.add(courseExposureTotal);
|
|
}else {
|
|
}else {
|
|
- Map<String, TeacherIndexWrapper.CourseExposureTotal> dateMapGroup = dateMap.stream()
|
|
|
|
- .collect(Collectors.toMap(TeacherIndexWrapper.CourseExposureTotal::getDate, o -> o));
|
|
|
|
- TeacherIndexWrapper.CourseExposureTotal courseExposureTotal = dateMapGroup.get(s);
|
|
|
|
- if(Objects.nonNull(courseExposureTotal)){
|
|
|
|
- result.add(courseExposureTotal);
|
|
|
|
- }else {
|
|
|
|
- result.add(new TeacherIndexWrapper.CourseExposureTotal(s,type,0));
|
|
|
|
- }
|
|
|
|
|
|
+ result.add(new TeacherIndexWrapper.CourseExposureTotal(s,0));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -496,7 +491,7 @@ public class HomeServiceImpl implements HomeService {
|
|
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public Map<String,List<TeacherIndexWrapper.CourseExposureTotal>> courseExposureTotal(TeacherIndexWrapper.CourseExposureSearch search) {
|
|
|
|
|
|
+ public List<TeacherIndexWrapper.CourseExposureTotal> courseExposureTotal(TeacherIndexWrapper.CourseExposureSearch search) {
|
|
String groupBy;
|
|
String groupBy;
|
|
List<String> dateList;
|
|
List<String> dateList;
|
|
Date startDate = DateUtil.strToDate(search.getStartTime(), DateUtil.DEFAULT_PATTERN);
|
|
Date startDate = DateUtil.strToDate(search.getStartTime(), DateUtil.DEFAULT_PATTERN);
|
|
@@ -511,19 +506,11 @@ public class HomeServiceImpl implements HomeService {
|
|
groupBy = "%Y";
|
|
groupBy = "%Y";
|
|
dateList = DateUtil.getYearList(startDate,endDate);
|
|
dateList = DateUtil.getYearList(startDate,endDate);
|
|
}
|
|
}
|
|
- List<TeacherIndexWrapper.CourseExposureTotal> courseExposureTotals = exposureRecordService.getDao().courseExposureTotal(search, groupBy);
|
|
|
|
- //按分类分组
|
|
|
|
- Map<String,List<TeacherIndexWrapper.CourseExposureTotal>> typeMap = courseExposureTotals.stream()
|
|
|
|
- .collect(Collectors.groupingBy(TeacherIndexWrapper.CourseExposureTotal::getType));
|
|
|
|
- Map<String,List<TeacherIndexWrapper.CourseExposureTotal>> result = new HashMap<>();
|
|
|
|
- result.put("EXPOSURE_LIVE",exposureFillData(typeMap.get(GoodTypeEnum.LIVE.getCode()),dateList,new String[]{GoodTypeEnum.LIVE.getCode()}));
|
|
|
|
- result.put("EXPOSURE_VIDEO",exposureFillData(typeMap.get(GoodTypeEnum.VIDEO.getCode()),dateList,new String[]{GoodTypeEnum.VIDEO.getCode()}));
|
|
|
|
- result.put("EXPOSURE_MUSIC",exposureFillData(typeMap.get(GoodTypeEnum.MUSIC.getCode()),dateList,new String[]{GoodTypeEnum.MUSIC.getCode()}));
|
|
|
|
- return result;
|
|
|
|
|
|
+ return exposureFillData(exposureRecordService.getDao().courseExposureTotal(search, groupBy),dateList);
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public Map<String,List<TeacherIndexWrapper.CourseExposureTotal>> courseBuyTotal(TeacherIndexWrapper.CourseExposureSearch search) {
|
|
|
|
|
|
+ public List<TeacherIndexWrapper.CourseExposureTotal> courseBuyTotal(TeacherIndexWrapper.CourseExposureSearch search) {
|
|
//获取学员练习时长
|
|
//获取学员练习时长
|
|
//获取分组条件,如果所选时间段只有一天,则按小时分组,超过一个月按天分组,超过一年按月分组
|
|
//获取分组条件,如果所选时间段只有一天,则按小时分组,超过一个月按天分组,超过一年按月分组
|
|
String groupBy;
|
|
String groupBy;
|
|
@@ -541,21 +528,56 @@ public class HomeServiceImpl implements HomeService {
|
|
dateList = DateUtil.getYearList(startDate,endDate);
|
|
dateList = DateUtil.getYearList(startDate,endDate);
|
|
}
|
|
}
|
|
Map<String,List<TeacherIndexWrapper.CourseExposureTotal>> result = new HashMap<>();
|
|
Map<String,List<TeacherIndexWrapper.CourseExposureTotal>> result = new HashMap<>();
|
|
- //直播课
|
|
|
|
|
|
+ //课程
|
|
List<TeacherIndexWrapper.CourseExposureTotal> liveSummer = userOrderDetailService.getDao().liveBuyTotal(search,groupBy);
|
|
List<TeacherIndexWrapper.CourseExposureTotal> liveSummer = userOrderDetailService.getDao().liveBuyTotal(search,groupBy);
|
|
- result.put(GoodTypeEnum.LIVE.getCode(),exposureFillData(liveSummer,dateList,new String[]{GoodTypeEnum.LIVE.getCode()}));
|
|
|
|
- //视频课
|
|
|
|
- List<TeacherIndexWrapper.CourseExposureTotal> videoSummer = userOrderDetailService.getDao().videoBuyTotal(search,groupBy);
|
|
|
|
- result.put(GoodTypeEnum.VIDEO.getCode(),exposureFillData(videoSummer,dateList,new String[]{GoodTypeEnum.VIDEO.getCode()}));
|
|
|
|
|
|
+ result.put("COURSE",exposureFillData(liveSummer,dateList));
|
|
//获取老师关联的学员
|
|
//获取老师关联的学员
|
|
List<Long> studentIds = teacherService.getDao().getStudentIds(search.getTeacherId(),null);
|
|
List<Long> studentIds = teacherService.getDao().getStudentIds(search.getTeacherId(),null);
|
|
if(CollectionUtils.isNotEmpty(studentIds)){
|
|
if(CollectionUtils.isNotEmpty(studentIds)){
|
|
//曲谱
|
|
//曲谱
|
|
search.setStudentIds(studentIds);
|
|
search.setStudentIds(studentIds);
|
|
List<TeacherIndexWrapper.CourseExposureTotal> musicSheetSummer = userOrderDetailService.getDao().musicSheetBuyTotal(search,groupBy);
|
|
List<TeacherIndexWrapper.CourseExposureTotal> musicSheetSummer = userOrderDetailService.getDao().musicSheetBuyTotal(search,groupBy);
|
|
- result.put(GoodTypeEnum.MUSIC.getCode(),exposureFillData(musicSheetSummer,dateList,new String[]{GoodTypeEnum.MUSIC.getCode()}));
|
|
|
|
|
|
+ result.put(GoodTypeEnum.MUSIC.getCode(),exposureFillData(musicSheetSummer,dateList));
|
|
}
|
|
}
|
|
- return result;
|
|
|
|
|
|
+ //将数据合并,map中所有的数据按时间,将list中的数据相加
|
|
|
|
+ List<TeacherIndexWrapper.CourseExposureTotal> finalResult = new ArrayList<>();
|
|
|
|
+ for (String s : dateList) {
|
|
|
|
+ TeacherIndexWrapper.CourseExposureTotal courseExposureTotal = new TeacherIndexWrapper.CourseExposureTotal();
|
|
|
|
+ courseExposureTotal.setDate(s);
|
|
|
|
+ courseExposureTotal.setExposureNum(0);
|
|
|
|
+ for (Map.Entry<String, List<TeacherIndexWrapper.CourseExposureTotal>> entry : result.entrySet()) {
|
|
|
|
+ List<TeacherIndexWrapper.CourseExposureTotal> value = entry.getValue();
|
|
|
|
+ Map<String, TeacherIndexWrapper.CourseExposureTotal> collect = value.stream()
|
|
|
|
+ .collect(Collectors.toMap(TeacherIndexWrapper.CourseExposureTotal::getDate, o -> o));
|
|
|
|
+ TeacherIndexWrapper.CourseExposureTotal exposureTotal = collect.get(s);
|
|
|
|
+ if(Objects.nonNull(exposureTotal)){
|
|
|
|
+ courseExposureTotal.setExposureNum(courseExposureTotal.getExposureNum() + exposureTotal.getExposureNum());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ finalResult.add(courseExposureTotal);
|
|
|
|
+ }
|
|
|
|
+ return finalResult;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public PageInfo<TeacherIndexWrapper.TeacherIncome> teacherIncomeList(IPage<TeacherIndexWrapper.TeacherIncome> page,TeacherIndexWrapper.CourseExposureSearch query) {
|
|
|
|
+ IPage<TeacherIndexWrapper.TeacherIncome> record = baserMapper.teacherIncomeList(page,query);
|
|
|
|
+ List<TeacherIndexWrapper.TeacherIncome> records = record.getRecords();
|
|
|
|
+ if (CollectionUtils.isNotEmpty(records)) {
|
|
|
|
+ List<Long> userIds = records.stream().map(TeacherIndexWrapper.TeacherIncome::getUserId).collect(Collectors.toList());
|
|
|
|
+ //获取用户声部信息
|
|
|
|
+// studentService.querySubject()
|
|
|
|
+ List<SysUser> sysUsers = sysUserService.getDao().selectBatchIds(userIds);
|
|
|
|
+ Map<Long, SysUser> sysUserMap = sysUsers.stream().collect(Collectors.toMap(SysUser::getId, Function.identity()));
|
|
|
|
+ for (TeacherIndexWrapper.TeacherIncome teacherIncome : records) {
|
|
|
|
+ SysUser sysUser = sysUserMap.get(teacherIncome.getUserId());
|
|
|
|
+ if (sysUser != null) {
|
|
|
|
+ teacherIncome.setUserName(sysUser.getUsername());
|
|
|
|
+ teacherIncome.setUserAvatar(sysUser.getAvatar());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return PageUtil.pageInfo(record);
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|