Explorar el Código

生成曲目评测统计数据

Eric hace 2 años
padre
commit
fe516fb033

+ 99 - 80
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/SysMusicCompareRecordServiceImpl.java

@@ -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

+ 2 - 2
service.md

@@ -1,12 +1,12 @@
 - [ ] gateway-server
 - [ ] auth-server
-- [x] admin-server
+- [ ] admin-server
 - [ ] teacher-server
 - [ ] student-server
 - [ ] website-server
 - [ ] task-server
 - [ ] websocket-server
-- [ ] audio-analysis
+- [x] audio-analysis
 - [ ] bbs-server
 - [ ] classroom-server
 - [ ] cms-server