|
@@ -82,111 +82,130 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
|
|
|
long record = super.insert(bean);
|
|
|
|
|
|
if (record > 0) {
|
|
|
- ThreadPool.getExecutor().submit(() -> {
|
|
|
- try {
|
|
|
-
|
|
|
- // 统计单曲练习时长,频率;评测时长、频率
|
|
|
- ClientEnum clientType = Optional.of(ClientEnum.valueOf(bean.getClientId().toUpperCase()))
|
|
|
- .orElse(ClientEnum.STUDENT);
|
|
|
-
|
|
|
- // 单曲统计
|
|
|
- MusicCompareWrapper.RecordInfo musicStatRecord = MusicCompareWrapper.RecordInfo.builder()
|
|
|
- .musicSheetId(bean.getMusicSheetId())
|
|
|
- .clientId(clientType)
|
|
|
- .userId(0L)
|
|
|
- .recentTime(DateTime.now().getMillis())
|
|
|
- .build();
|
|
|
-
|
|
|
- // 用户单曲统计
|
|
|
- MusicCompareWrapper.RecordInfo userStatRecord = MusicCompareWrapper.RecordInfo.builder()
|
|
|
- .musicSheetId(bean.getMusicSheetId())
|
|
|
- .clientId(clientType)
|
|
|
- .userId(bean.getUserId())
|
|
|
- .recentTime(DateTime.now().getMillis())
|
|
|
- .build();
|
|
|
+ // 生成曲目评测统计数据
|
|
|
+ saveMusicCompareRecordStatInfo(bean);
|
|
|
+ }
|
|
|
|
|
|
- // 按练习、评测分别进行统计
|
|
|
- Lists.newArrayList(FeatureType.values()).parallelStream().forEach(dataType -> {
|
|
|
+ return record;
|
|
|
+ }
|
|
|
|
|
|
- MusicCompareWrapper.RecordQueryInfo queryInfo = MusicCompareWrapper.RecordQueryInfo.builder()
|
|
|
- .clientId(bean.getClientId())
|
|
|
- .musicSheetId(bean.getMusicSheetId())
|
|
|
- .feature(dataType)
|
|
|
- .build();
|
|
|
+ /**
|
|
|
+ * 生成曲目统计数据
|
|
|
+ * @param record SysMusicCompareRecord
|
|
|
+ */
|
|
|
+ private void saveMusicCompareRecordStatInfo(SysMusicCompareRecord record) {
|
|
|
+
|
|
|
+ ThreadPool.getExecutor().submit(() -> {
|
|
|
+ try {
|
|
|
+
|
|
|
+ // 统计单曲练习时长,频率;评测时长、频率
|
|
|
+ ClientEnum clientType = Optional.of(ClientEnum.valueOf(record.getClientId().toUpperCase()))
|
|
|
+ .orElse(ClientEnum.STUDENT);
|
|
|
+
|
|
|
+ // 单曲统计
|
|
|
+ MusicCompareWrapper.RecordInfo musicStatRecord = MusicCompareWrapper.RecordInfo.builder()
|
|
|
+ .musicSheetId(record.getMusicSheetId())
|
|
|
+ .clientId(clientType)
|
|
|
+ .userId(0L)
|
|
|
+ .recentTime(DateTime.now().getMillis())
|
|
|
+ .build();
|
|
|
+
|
|
|
+ // 用户单曲统计
|
|
|
+ MusicCompareWrapper.RecordInfo userStatRecord = MusicCompareWrapper.RecordInfo.builder()
|
|
|
+ .musicSheetId(record.getMusicSheetId())
|
|
|
+ .clientId(clientType)
|
|
|
+ .userId(record.getUserId())
|
|
|
+ .recentTime(DateTime.now().getMillis())
|
|
|
+ .build();
|
|
|
+
|
|
|
+ // 按练习、评测分别进行统计
|
|
|
+ Lists.newArrayList(FeatureType.values()).parallelStream().forEach(dataType -> {
|
|
|
+
|
|
|
+ MusicCompareWrapper.RecordQueryInfo queryInfo = MusicCompareWrapper.RecordQueryInfo.builder()
|
|
|
+ .clientId(record.getClientId())
|
|
|
+ .musicSheetId(record.getMusicSheetId())
|
|
|
+ .feature(dataType)
|
|
|
+ .build();
|
|
|
|
|
|
- // 曲目统计
|
|
|
- List<StatGroupWrapper> musicWrappers = sysMusicCompareRecordDao.selectMusicCompareRecordStatInfo(queryInfo);
|
|
|
+ // 曲目统计
|
|
|
+ List<StatGroupWrapper> musicWrappers = sysMusicCompareRecordDao.selectMusicCompareRecordStatInfo(queryInfo);
|
|
|
|
|
|
- // 用户曲目统计
|
|
|
- queryInfo.setUserId(bean.getUserId());
|
|
|
+ // 用户曲目统计
|
|
|
+ queryInfo.setUserId(record.getUserId());
|
|
|
|
|
|
- List<StatGroupWrapper> userMusicWrappers = sysMusicCompareRecordDao.selectMusicCompareRecordStatInfo(queryInfo);
|
|
|
+ List<StatGroupWrapper> userMusicWrappers = sysMusicCompareRecordDao.selectMusicCompareRecordStatInfo(queryInfo);
|
|
|
|
|
|
- switch (dataType) {
|
|
|
- case CLOUD_STUDY_TRAIN: // 练习
|
|
|
- {
|
|
|
- // 先统计练习曲目
|
|
|
- if (CollectionUtils.isNotEmpty(musicWrappers)) {
|
|
|
+ switch (dataType) {
|
|
|
+ case CLOUD_STUDY_TRAIN: // 练习
|
|
|
+ {
|
|
|
+ // 先统计练习曲目
|
|
|
+ if (CollectionUtils.isNotEmpty(musicWrappers)) {
|
|
|
|
|
|
- StatGroupWrapper wrapper = musicWrappers.get(0);
|
|
|
+ StatGroupWrapper wrapper = musicWrappers.get(0);
|
|
|
|
|
|
- musicStatRecord.trainDuration(wrapper.getNumber().longValue())
|
|
|
- .trainFrequency(wrapper.getTotal().longValue());
|
|
|
- }
|
|
|
+ musicStatRecord.trainDuration(wrapper.getNumber().longValue())
|
|
|
+ .trainFrequency(wrapper.getTotal().longValue());
|
|
|
+ }
|
|
|
|
|
|
- // 在按用户统计
|
|
|
- if (CollectionUtils.isNotEmpty(userMusicWrappers)) {
|
|
|
- StatGroupWrapper wrapper = userMusicWrappers.get(0);
|
|
|
+ // 在按用户统计
|
|
|
+ if (CollectionUtils.isNotEmpty(userMusicWrappers)) {
|
|
|
+ StatGroupWrapper wrapper = userMusicWrappers.get(0);
|
|
|
|
|
|
- userStatRecord.trainDuration(wrapper.getNumber().longValue())
|
|
|
- .trainFrequency(wrapper.getTotal().longValue());
|
|
|
- }
|
|
|
+ userStatRecord.trainDuration(wrapper.getNumber().longValue())
|
|
|
+ .trainFrequency(wrapper.getTotal().longValue());
|
|
|
}
|
|
|
- break;
|
|
|
- case CLOUD_STUDY_EVALUATION: // 评测
|
|
|
- {
|
|
|
- // 先统计评测曲目
|
|
|
- if (CollectionUtils.isNotEmpty(musicWrappers)) {
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case CLOUD_STUDY_EVALUATION: // 评测
|
|
|
+ {
|
|
|
+ // 先统计评测曲目
|
|
|
+ if (CollectionUtils.isNotEmpty(musicWrappers)) {
|
|
|
|
|
|
- StatGroupWrapper wrapper = musicWrappers.get(0);
|
|
|
+ StatGroupWrapper wrapper = musicWrappers.get(0);
|
|
|
|
|
|
- musicStatRecord.evaluateDuration(wrapper.getNumber().longValue())
|
|
|
- .evaluateFrequency(wrapper.getTotal().longValue());
|
|
|
- }
|
|
|
+ musicStatRecord.evaluateDuration(wrapper.getNumber().longValue())
|
|
|
+ .evaluateFrequency(wrapper.getTotal().longValue());
|
|
|
+ }
|
|
|
|
|
|
- // 在按用户统计
|
|
|
- if (CollectionUtils.isNotEmpty(userMusicWrappers)) {
|
|
|
- StatGroupWrapper wrapper = userMusicWrappers.get(0);
|
|
|
+ // 在按用户统计
|
|
|
+ if (CollectionUtils.isNotEmpty(userMusicWrappers)) {
|
|
|
+ StatGroupWrapper wrapper = userMusicWrappers.get(0);
|
|
|
|
|
|
- userStatRecord.evaluateDuration(wrapper.getNumber().longValue())
|
|
|
- .evaluateFrequency(wrapper.getTotal().longValue());
|
|
|
- }
|
|
|
+ userStatRecord.evaluateDuration(wrapper.getNumber().longValue())
|
|
|
+ .evaluateFrequency(wrapper.getTotal().longValue());
|
|
|
}
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
- List<MusicCompareWrapper.RecordInfo> recordInfos = Lists.newArrayList(musicStatRecord, userStatRecord);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ });
|
|
|
|
|
|
- musicCompareRecordStatService.batchUpdateMusicCompareRecordStat(recordInfos);
|
|
|
+ List<MusicCompareWrapper.RecordInfo> recordInfos = Lists.newArrayList(musicStatRecord, userStatRecord);
|
|
|
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("MusicCompareRecordStat userId={}, musicId={}", bean.getUserId(), bean.getMusicSheetId(), e);
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
+ musicCompareRecordStatService.batchUpdateMusicCompareRecordStat(recordInfos);
|
|
|
|
|
|
- return record;
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("MusicCompareRecordStat userId={}, musicId={}", record.getUserId(), record.getMusicSheetId(), e);
|
|
|
+ }
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@Transactional
|
|
|
public void saveMusicCompareData(SysMusicCompareRecord sysMusicCompareRecord) {
|
|
|
-
|
|
|
- sysMusicCompareRecordDao.update(sysMusicCompareRecord);
|
|
|
|
|
|
+ int record = sysMusicCompareRecordDao.update(sysMusicCompareRecord);
|
|
|
+
|
|
|
+ if (record > 0) {
|
|
|
+ SysMusicCompareRecord info = sysMusicCompareRecordDao.get(sysMusicCompareRecord.getId());
|
|
|
+
|
|
|
+ if (Objects.nonNull(info)) {
|
|
|
+
|
|
|
+ // 生成曲目评测统计数据
|
|
|
+ saveMusicCompareRecordStatInfo(info);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|