|
@@ -3,10 +3,11 @@ package com.yonge.cooleshow.biz.dal.service.impl;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.beust.jcommander.internal.Lists;
|
|
|
-import com.dayaedu.cbs.common.enums.music.EMusicAvailableType;
|
|
|
-import com.dayaedu.cbs.common.enums.music.EMusicPaymentType;
|
|
|
+import com.dayaedu.cbs.common.enums.EClientType;
|
|
|
+import com.dayaedu.cbs.common.enums.music.*;
|
|
|
import com.dayaedu.cbs.common.enums.school.EMusicSheetType;
|
|
|
import com.dayaedu.cbs.openfeign.client.MusicFeignClientService;
|
|
|
import com.dayaedu.cbs.openfeign.properties.OpenFeignClientConfigProperties;
|
|
@@ -36,9 +37,7 @@ import com.yonge.cooleshow.biz.dal.service.*;
|
|
|
import com.yonge.cooleshow.biz.dal.service.cbs.CbsMusicScoreService;
|
|
|
import com.yonge.cooleshow.biz.dal.vo.*;
|
|
|
import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
|
|
|
-import com.yonge.cooleshow.biz.dal.wrapper.StatGroupWrapper;
|
|
|
-import com.yonge.cooleshow.biz.dal.wrapper.TenantGroupAlbumWrapper;
|
|
|
-import com.yonge.cooleshow.biz.dal.wrapper.UserPaymentOrderWrapper;
|
|
|
+import com.yonge.cooleshow.biz.dal.wrapper.*;
|
|
|
import com.yonge.cooleshow.biz.dal.wrapper.music.MusicCompareWrapper;
|
|
|
import com.yonge.cooleshow.common.constant.SysConfigConstant;
|
|
|
import com.yonge.cooleshow.common.entity.HttpResponseResult;
|
|
@@ -65,6 +64,9 @@ import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
|
import java.text.MessageFormat;
|
|
|
import java.util.*;
|
|
|
+import java.util.concurrent.LinkedBlockingQueue;
|
|
|
+import java.util.concurrent.ThreadPoolExecutor;
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -1473,7 +1475,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
|
|
|
addMusicSheetApplicationExtend.setTopFlag(musicSheet.getTopFlag() != YesOrNoEnum.YES);
|
|
|
addMusicSheetApplicationExtend.setMusicTagIds(musicSheet.getMusicTag());
|
|
|
addMusicSheetApplicationExtend.setMusicPrice(musicSheet.getMusicPrice());
|
|
|
- addMusicSheetApplicationExtend.setPaymentType(EMusicPaymentType.valueOf(musicSheet.getPaymentType()));
|
|
|
+ addMusicSheetApplicationExtend.setPaymentType(musicSheet.getPaymentType());
|
|
|
addMusicSheetApplicationExtend.setAvailableType(EMusicAvailableType.valueOf("TEACHER".equals(musicSheet.getPaymentType()) ?
|
|
|
"PERSON" : "PLATFORM".equals(musicSheet.getPaymentType()) ? "PLATFORM":"ORG"));
|
|
|
addMusicSheetApplicationExtend.setTopFlag(musicSheet.getTopFlag() == YesOrNoEnum.YES);
|
|
@@ -1999,8 +2001,8 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
|
|
|
CbsMusicSheetApplicationExtendClientWrapper.AddMusicSheetApplicationExtend applicationExtend = extend.get(0);
|
|
|
musicSheetAudit.setMusicTag(applicationExtend.getMusicTagIds());
|
|
|
if(applicationExtend.getPaymentType() != null){
|
|
|
- musicSheetAudit.setPaymentType(applicationExtend.getPaymentType().getCode());
|
|
|
- musicSheetAudit.setChargeType(ChargeTypeEnum.valueOf(applicationExtend.getPaymentType().getCode()));
|
|
|
+ musicSheetAudit.setPaymentType(applicationExtend.getPaymentType());
|
|
|
+ musicSheetAudit.setChargeType(ChargeTypeEnum.valueOf(applicationExtend.getPaymentType()));
|
|
|
}
|
|
|
if(applicationExtend.getTopFlag() != null){
|
|
|
musicSheetAudit.setTopFlag(applicationExtend.getTopFlag()? YesOrNoEnum.YES: YesOrNoEnum.NO);
|
|
@@ -2017,6 +2019,220 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
|
|
|
return musicSheetAudit;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void sync() {
|
|
|
+ // 分页查询,每次100条
|
|
|
+ int curPage = 1;
|
|
|
+ int pageSize = 50;
|
|
|
+ Date date = new Date();
|
|
|
+ // 100个线程的无界线程池
|
|
|
+ ThreadPoolExecutor executorService = new ThreadPoolExecutor(50, 50,
|
|
|
+ 0L, TimeUnit.MILLISECONDS,
|
|
|
+ new LinkedBlockingQueue<>());
|
|
|
+ while (true) {
|
|
|
+ IPage<MusicSheet> page = baseMapper.selectSyncPage(new Page<>(curPage, pageSize));
|
|
|
+ List<MusicSheet> records = page.getRecords();
|
|
|
+ if (CollectionUtils.isEmpty(records)) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ for (MusicSheet record : records) {
|
|
|
+ if (record.getCbsMusicSheetId() != null) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ executorService.submit(() ->
|
|
|
+ {
|
|
|
+
|
|
|
+ try {
|
|
|
+
|
|
|
+ syncMusicSheet(record, date);
|
|
|
+ }catch (Exception e) {
|
|
|
+ log.error("曲目同步异常,曲目ID:{}", record.getId(), e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ curPage++;
|
|
|
+ }
|
|
|
+
|
|
|
+ while (!executorService.getQueue().isEmpty()) {
|
|
|
+ try {
|
|
|
+ log.info("线程池中正在执行的任务数量:{},等待数量:{}", executorService.getActiveCount(),executorService.getQueue().size());
|
|
|
+ Thread.sleep(1000);
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ log.error("线程等待异常", e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ log.info("-------------------- 曲目数据同步成功! -------------------------------");
|
|
|
+ executorService.shutdown();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private void syncMusicSheet(MusicSheet record, Date date) {
|
|
|
+ if (record.getCbsMusicSheetId() !=null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ List<MusicSheetAccompaniment> list = musicSheetAccompanimentService.lambdaQuery().eq(MusicSheetAccompaniment::getMusicSheetId, record.getId()).list();
|
|
|
+
|
|
|
+ CbsMusicSheetWrapper.AddMusicSheet addMusicSheet = this.musicToAddMusicSheet(record,list);
|
|
|
+
|
|
|
+ R<CbsMusicSheetWrapper.MusicSheet> musicSheetR = musicFeignClientService.musicCbsSync(addMusicSheet);
|
|
|
+ try {
|
|
|
+ CbsMusicSheetWrapper.MusicSheet musicSheet = musicSheetR.feignData();
|
|
|
+ if (musicSheet == null) {
|
|
|
+ log.error("曲目同步失败,曲目ID:{}", record.getId());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ MusicSheet musicSheet1 = new MusicSheet();
|
|
|
+ musicSheet1.setId(record.getId());
|
|
|
+ musicSheet1.setCbsMusicSheetId(musicSheet.getId());
|
|
|
+// musicSheet1.setCbsSubjectId(musicSheet.getSubjectIds());
|
|
|
+ musicSheet1.setMusicSheetName(musicSheet.getName());
|
|
|
+ this.updateById(musicSheet1);
|
|
|
+ } catch (Exception e){
|
|
|
+ log.error("曲目同步失败,曲目ID:{}", record.getId());
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private CbsMusicSheetWrapper.AddMusicSheet musicToAddMusicSheet(MusicSheet from, List<MusicSheetAccompaniment> accList) {
|
|
|
+ if (from == null) {
|
|
|
+ throw com.microsvc.toolkit.common.webportal.exception.BizException.from("参数错误");
|
|
|
+ }
|
|
|
+ CbsMusicSheetWrapper.AddMusicSheet addMusicSheet = new CbsMusicSheetWrapper.AddMusicSheet();
|
|
|
+ addMusicSheet.setId(from.getId());
|
|
|
+ addMusicSheet.setMusicCover(from.getTitleImg());
|
|
|
+ addMusicSheet.setName(from.getMusicSheetName());
|
|
|
+ if (StringUtils.isNotBlank(from.getMusicSubject())) {
|
|
|
+ List<Long> subjectIds = Arrays.stream(from.getMusicSubject().split(","))
|
|
|
+ .map(Long::parseLong).collect(Collectors.toList());
|
|
|
+ List<Subject> list = subjectService.findBySubjectByIdList(subjectIds);
|
|
|
+ if (CollectionUtils.isNotEmpty(list)) {
|
|
|
+ addMusicSheet.setSubjectIds(list.stream().map(o->o.getCbsSubjectId().toString()).collect(Collectors.joining(",")));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ addMusicSheet.setSendAppFlag(false);
|
|
|
+ addMusicSheet.setAppAuditFlag(from.getAuditVersion() ==YesOrNoEnum.YES);
|
|
|
+ addMusicSheet.setRemark(from.getRemark());
|
|
|
+
|
|
|
+ addMusicSheet.setMusicCategoryId(110061L);
|
|
|
+ addMusicSheet.setComposer(from.getComposer());
|
|
|
+ if (from.getMusicSheetType() != null) {
|
|
|
+ addMusicSheet.setMusicSheetType(from.getMusicSheetType() == MusicSheetTypeEnum.CONCERT?EMusicSheetType.CONCERT:EMusicSheetType.SINGLE);
|
|
|
+ } else {
|
|
|
+ addMusicSheet.setMusicSheetType(EMusicSheetType.SINGLE);
|
|
|
+
|
|
|
+ }
|
|
|
+ if (from.getMp3Type() !=null && from.getMp3Type() == AudioTypeEnum.MP3) {
|
|
|
+ addMusicSheet.setIsPlayBeat(true);
|
|
|
+ addMusicSheet.setIsUseSystemBeat(true);
|
|
|
+ } else {
|
|
|
+ addMusicSheet.setIsPlayBeat(true);
|
|
|
+ addMusicSheet.setIsUseSystemBeat(false);
|
|
|
+ }
|
|
|
+ if (from.getCanEvaluate() !=null) {
|
|
|
+ addMusicSheet.setIsEvaluated(from.getCanEvaluate() == YesOrNoEnum.YES);
|
|
|
+ } else {
|
|
|
+ addMusicSheet.setIsEvaluated(true);
|
|
|
+ }
|
|
|
+ addMusicSheet.setIsConvertibleScore(from.getNotation() == null ||from.getNotation() == YesOrNoEnum.YES);
|
|
|
+ addMusicSheet.setIsShowFingering(from.getShowFingering() ==null ||from.getShowFingering() ==YesOrNoEnum.YES);
|
|
|
+ addMusicSheet.setPlaySpeed(Optional.ofNullable(from.getPlaySpeed()).map(String::valueOf).orElse(null));
|
|
|
+ if (from.getAudioType() !=null) {
|
|
|
+ addMusicSheet.setPlayMode( from.getAudioType() == AudioTypeEnum.MP3?EMusicPlayMode.MP3:EMusicPlayMode.MIDI);
|
|
|
+ } else {
|
|
|
+ addMusicSheet.setPlayMode(EMusicPlayMode.MP3);
|
|
|
+
|
|
|
+ }
|
|
|
+ addMusicSheet.setXmlFileUrl(from.getXmlFileUrl());
|
|
|
+ addMusicSheet.setMidiFileUrl(from.getMidiUrl());
|
|
|
+ addMusicSheet.setMusicJson(from.getMusicJSON());
|
|
|
+ addMusicSheet.setMusicSvg(from.getMusicSvg());
|
|
|
+ addMusicSheet.setMusicJianSvg(from.getMusicJianSvg());
|
|
|
+ addMusicSheet.setMusicFirstSvg(from.getMusicFirstSvg());
|
|
|
+
|
|
|
+ addMusicSheet.setMusicJianImg(from.getMusicJianSvg());
|
|
|
+ addMusicSheet.setMusicFirstImg(from.getMusicFirstSvg());
|
|
|
+ addMusicSheet.setMusicImg(from.getMusicImg());
|
|
|
+ addMusicSheet.setExtConfigJson(from.getExtConfigJson());
|
|
|
+ addMusicSheet.setCreateTime(from.getCreateTime());
|
|
|
+ addMusicSheet.setAudioType(from.getAccompanimentType() !=null && from.getAccompanimentType() == AccompanimentTypeEnum.COMMON? EAudioType.COMMON:EAudioType.HOMEMODE);
|
|
|
+ if (from.getSourceType() !=null) {
|
|
|
+ addMusicSheet.setAvailableType(from.getSourceType() == SourceTypeEnum.PLATFORM?EMusicAvailableType.PLATFORM:EMusicAvailableType.PERSON);
|
|
|
+ addMusicSheet.setSourceType(from.getSourceType() == SourceTypeEnum.PLATFORM?EMusicSourceType.PLATFORM:EMusicSourceType.PERSON);
|
|
|
+ } else {
|
|
|
+ addMusicSheet.setAvailableType(EMusicAvailableType.PLATFORM);
|
|
|
+ addMusicSheet.setSourceType(EMusicSourceType.PLATFORM);
|
|
|
+ }
|
|
|
+ addMusicSheet.setStatus(from.getState() == YesOrNoEnum.YES);
|
|
|
+ addMusicSheet.setReason(from.getReason());
|
|
|
+
|
|
|
+ String tracks = "";
|
|
|
+ // 伴奏,原音 扩展信息
|
|
|
+ if (addMusicSheet.getPlayMode() == EMusicPlayMode.MP3) {
|
|
|
+ CbsMusicSheetWrapper.MusicSheetAccompaniment musicSheetAccompaniment = new CbsMusicSheetWrapper.MusicSheetAccompaniment();
|
|
|
+ if (StringUtils.isNotBlank(from.getMetronomeUrl())) {
|
|
|
+ musicSheetAccompaniment.setAudioFileUrl(from.getMetronomeUrl());
|
|
|
+ }else if (StringUtils.isNotBlank(from.getUrl())) {
|
|
|
+ musicSheetAccompaniment.setAudioFileUrl(from.getUrl());
|
|
|
+ } else if (StringUtils.isNotBlank(from.getAudioFileUrl())) {
|
|
|
+ musicSheetAccompaniment.setAudioFileUrl(from.getAudioFileUrl());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(musicSheetAccompaniment.getAudioFileUrl())) {
|
|
|
+ addMusicSheet.setMusicSheetAccompanimentList(Lists.newArrayList(musicSheetAccompaniment));
|
|
|
+ }
|
|
|
+ if (CollectionUtils.isNotEmpty(accList)) {
|
|
|
+ List<CbsMusicSheetWrapper.MusicSheetSound> musicSheetSounds = new ArrayList<>();
|
|
|
+ for (MusicSheetAccompaniment sheetAccompaniment : accList) {
|
|
|
+ CbsMusicSheetWrapper.MusicSheetSound musicSheetSound = new CbsMusicSheetWrapper.MusicSheetSound();
|
|
|
+ if (StringUtils.isNotBlank(sheetAccompaniment.getAudioFileUrl())){
|
|
|
+ musicSheetSound.setAudioFileUrl(sheetAccompaniment.getAudioFileUrl());
|
|
|
+ } else if (StringUtils.isNotBlank(sheetAccompaniment.getMetronomeUrl())) {
|
|
|
+ musicSheetSound.setAudioFileUrl(sheetAccompaniment.getMetronomeUrl());
|
|
|
+ }
|
|
|
+ musicSheetSound.setTrack(sheetAccompaniment.getTrack());
|
|
|
+ musicSheetSound.setSortNumber(sheetAccompaniment.getSortNumber());
|
|
|
+ if (StringUtils.isNotBlank(musicSheetSound.getAudioFileUrl())) {
|
|
|
+ musicSheetSounds.add(musicSheetSound);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ tracks = musicSheetSounds.stream().map(CbsMusicSheetWrapper.MusicSheetSound::getTrack).collect(Collectors.joining(","));
|
|
|
+ addMusicSheet.setMusicSheetSoundList(musicSheetSounds);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ addMusicSheet.setMultiTracksSelection(tracks);
|
|
|
+
|
|
|
+ CbsMusicSheetWrapper.MusicSheetExtend musicSheetExtend = new CbsMusicSheetWrapper.MusicSheetExtend();
|
|
|
+ musicSheetExtend.setApplicationId(Long.parseLong(openFeignClientConfigProperties.getAppId()));
|
|
|
+ if (from.getSourceType() !=null) {
|
|
|
+ if (from.getSourceType() == SourceTypeEnum.TEACHER) {
|
|
|
+ musicSheetExtend.setUserId(from.getUserId());
|
|
|
+ musicSheetExtend.setClientType(EClientType.TEACHER.name());
|
|
|
+ } else {
|
|
|
+ musicSheetExtend.setClientType(EClientType.BACKEND.name());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ addMusicSheet.setMusicSheetExtend(musicSheetExtend);
|
|
|
+
|
|
|
+ // 应用扩展信息
|
|
|
+ CbsMusicSheetApplicationExtendClientWrapper.AddMusicSheetApplicationExtend addMusicSheetApplicationExtend = new CbsMusicSheetApplicationExtendClientWrapper.AddMusicSheetApplicationExtend();
|
|
|
+ addMusicSheetApplicationExtend.setApplicationId(Long.parseLong(openFeignClientConfigProperties.getAppId()));
|
|
|
+ addMusicSheetApplicationExtend.setStatus(addMusicSheet.getStatus());
|
|
|
+ addMusicSheetApplicationExtend.setSortNo(from.getSortNumber());
|
|
|
+ addMusicSheetApplicationExtend.setPaymentType(from.getPaymentType());
|
|
|
+ addMusicSheetApplicationExtend.setTopFlag(from.getTopFlag() !=null && from.getTopFlag() == YesOrNoEnum.YES);
|
|
|
+ addMusicSheetApplicationExtend.setExquisiteFlag(from.getExquisiteFlag() !=null && from.getExquisiteFlag() == YesOrNoEnum.YES);
|
|
|
+ addMusicSheetApplicationExtend.setAvailableType(from.getProviderType() !=null && from.getProviderType() == SourceTypeEnum.TENANT?EMusicAvailableType.ORG:EMusicAvailableType.PLATFORM);
|
|
|
+ addMusicSheetApplicationExtend.setMusicTagIds(from.getMusicTag());
|
|
|
+ addMusicSheetApplicationExtend.setMusicPrice(from.getMusicPrice());
|
|
|
+ addMusicSheet.setAddMusicSheetApplicationExtend(Lists.newArrayList(addMusicSheetApplicationExtend));
|
|
|
+ addMusicSheet.setIsConvertibleScore(true);
|
|
|
+ return addMusicSheet;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
private SysUser getSysUser(Long userId) {
|
|
|
return Optional.ofNullable(userId)
|
|
|
.map(sysUserFeignService::queryUserById)
|