ソースを参照

曲目统计查询

Eric 2 年 前
コミット
45ec1a7d03

+ 6 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/io/request/music/MusicCompareVo.java

@@ -164,5 +164,11 @@ public class MusicCompareVo implements Serializable {
         @ApiModelProperty("最近使用时间")
         @JsonFormat(pattern = MK.TIME_PATTERN, timezone = MK.TIME_ZONE)
         private Date recentTime;
+
+        @ApiModelProperty("作曲人")
+        private String composer;
+
+        @ApiModelProperty("音乐标签")
+        private String musicTagName;
     }
 }

+ 40 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicCompareRecordStatServiceImp.java

@@ -4,18 +4,25 @@ import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.google.common.collect.Lists;
 import com.yonge.cooleshow.biz.dal.entity.MusicCompareRecordStat;
+import com.yonge.cooleshow.biz.dal.entity.MusicTag;
 import com.yonge.cooleshow.biz.dal.enums.EQueryOp;
 import com.yonge.cooleshow.biz.dal.mapper.MusicCompareRecordStatMapper;
 import com.yonge.cooleshow.biz.dal.service.MusicCompareRecordStatService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.biz.dal.service.MusicTagService;
 import com.yonge.cooleshow.biz.dal.wrapper.StatGroupWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.music.MusicCompareWrapper;
 import com.yonge.toolset.mybatis.support.PageUtil;
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Arrays;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -28,6 +35,9 @@ import java.util.Objects;
 @Service
 public class MusicCompareRecordStatServiceImp extends ServiceImpl<MusicCompareRecordStatMapper, MusicCompareRecordStat> implements MusicCompareRecordStatService {
 
+    @Autowired
+    private MusicTagService musicTagService;
+
     /**
      * 曲目统计汇总信息
      *
@@ -112,6 +122,36 @@ public class MusicCompareRecordStatServiceImp extends ServiceImpl<MusicCompareRe
         // 用户曲目统计信息
         List<MusicCompareWrapper.RecordInfo> recordInfos = getBaseMapper().selectMusicCompareRecordPage(page, query);
 
+        if (CollectionUtils.isNotEmpty(recordInfos)) {
+
+            List<String> collect = recordInfos.stream()
+                    .filter(x -> StringUtils.isNotEmpty(x.getMusicTag()))
+                    .flatMap(x -> Arrays.stream(x.getMusicTag().split(",")))
+                    .distinct().collect(Collectors.toList());
+
+            Map<Long, String> tagNameMap = musicTagService.lambdaQuery()
+                    .eq(MusicTag::getType, "MUSIC")
+                    .in(MusicTag::getId, collect)
+                    .list().stream()
+                    .collect(Collectors.toMap(MusicTag::getId, MusicTag::getName, (o, n) -> n));
+
+            String tagName;
+            for (MusicCompareWrapper.RecordInfo item : recordInfos) {
+
+                if (StringUtils.isNotEmpty(item.getMusicTag())) {
+
+                    List<Long> tagIds = Arrays.stream(item.getMusicTag().split(","))
+                            .map(Long::parseLong).distinct().collect(Collectors.toList());
+
+                    tagName = tagNameMap.entrySet().stream()
+                            .filter(x -> tagIds.contains(x.getKey()))
+                            .map(Map.Entry::getValue).collect(Collectors.joining(","));
+
+                    item.setMusicTagName(tagName);
+                }
+            }
+        }
+
         return page.setRecords(recordInfos);
     }
 

+ 9 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/music/MusicCompareWrapper.java

@@ -176,6 +176,15 @@ public class MusicCompareWrapper {
         @ApiModelProperty("曲目名称")
         private String musicName;
 
+        @ApiModelProperty("作曲人")
+        private String composer;
+
+        @ApiModelProperty("音乐标签编号")
+        private String musicTag;
+
+        @ApiModelProperty("音乐标签")
+        private String musicTagName;
+
         @ApiModelProperty("使用时长")
         private Long trainDuration;
 

+ 3 - 1
cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicCompareRecordStatMapper.xml

@@ -32,9 +32,11 @@
         <result column="evaluate_frequency_" property="evaluateFrequency" />
         <result column="recent_time_" property="recentTime" />
         <result column="music_sheet_name_" property="musicName" />
+        <result column="composer_" property="composer" />
+        <result column="music_tag_" property="musicTag" />
     </resultMap>
     <select id="selectMusicCompareRecordPage" resultMap="MusicCompareRecordPageResultMap">
-        SELECT t1.id_, t1.music_sheet_id_, t1.user_id_, t1.train_duration_, t1.train_frequency_, t1.evaluate_duration_, t1.evaluate_frequency_, t1.recent_time_, t2.music_sheet_name_
+        SELECT t1.id_, t1.music_sheet_id_, t1.user_id_, t1.train_duration_, t1.train_frequency_, t1.evaluate_duration_, t1.evaluate_frequency_, t1.recent_time_, t2.music_sheet_name_, t2.composer_, t2.music_tag_
         FROM music_compare_record_stat t1 LEFT JOIN music_sheet t2 ON t1.music_sheet_id_ = t2.id_
         <where>
             <if test="record.clientType != null">

+ 2 - 2
service.md

@@ -1,8 +1,8 @@
 - [ ] gateway-server
 - [ ] auth-server
 - [x] admin-server
-- [x] teacher-server
-- [x] student-server
+- [ ] teacher-server
+- [ ] student-server
 - [ ] website-server
 - [ ] task-server
 - [ ] websocket-server