ソースを参照

曲目统计汇总查询

Eric 2 年 前
コミット
658e75e816

+ 33 - 10
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/music/MusicCompareRecordStatController.java

@@ -1,28 +1,25 @@
 package com.yonge.cooleshow.admin.controller.music;
 
 
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.admin.io.request.music.MusicCompareVo;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
-import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.service.MusicCompareRecordStatService;
-import com.yonge.cooleshow.biz.dal.vo.MusicSheetDetailVo;
 import com.yonge.cooleshow.biz.dal.wrapper.music.MusicCompareWrapper;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.toolset.base.page.PageInfo;
+import com.yonge.toolset.mybatis.support.PageUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 
-import org.springframework.stereotype.Controller;
-
 import java.util.List;
 
 /**
@@ -48,14 +45,14 @@ public class MusicCompareRecordStatController extends BaseController {
      */
     @ApiOperation(value = "曲目统计汇总信息", notes = "传入id")
     @PostMapping(value = "/record/stat", consumes="application/json", produces="application/json")
-    public HttpResponseResult<MusicCompareVo.RecordStat> detail(@RequestBody MusicCompareVo.StatQueryRequest info) {
+    public HttpResponseResult<MusicCompareVo.RecordStat> musicCompareRecordStatInfo(@RequestBody MusicCompareVo.StatQueryRequest info) {
 
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null  || sysUser.getId() == null) {
             return failed("用户信息获取失败");
         }
 
-        if (info.invalidParam()) {
+        if (info.userId(sysUser.getId()).invalidParam()) {
             return failed("无效的请求参数");
         }
 
@@ -65,4 +62,30 @@ public class MusicCompareRecordStatController extends BaseController {
         return succeed(MusicCompareVo.RecordStat.from(records.jsonString()));
     }
 
+    /**
+     * 查询曲目统计汇总信息
+     */
+    @ApiOperation(value = "曲目统计信息查询", notes = "传入id")
+    @PostMapping(value = "/record/page", consumes="application/json", produces="application/json")
+    public HttpResponseResult<PageInfo<MusicCompareVo.RecordInfo>> musicCompareRecordPageInfo(@RequestBody MusicCompareVo.StatQueryRequest info) {
+
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null  || sysUser.getId() == null) {
+            return failed("用户信息获取失败");
+        }
+
+        if (info.userId(sysUser.getId()).invalidParam()) {
+            return failed("无效的请求参数");
+        }
+
+        // 曲目统计信息
+        IPage<MusicCompareWrapper.RecordInfo> wrapper = musicCompareRecordStatService.findMusicCompareRecordPage(PageUtil.getPage(info),
+                MusicCompareWrapper.StatQueryInfo.from(info.jsonString()));
+
+        // 数据转换
+        List<MusicCompareVo.RecordInfo> pageInfos = JSON.parseArray(JSON.toJSONString(wrapper.getRecords()),
+                MusicCompareVo.RecordInfo.class);
+
+        return succeed(PageUtil.getPageInfo(wrapper, pageInfos));
+    }
 }

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

@@ -28,10 +28,13 @@ public class MusicCompareVo implements Serializable {
         @ApiModelProperty("客户端类型 TEACHER(老师端) STUDENT(学生端)")
         private ClientEnum clientType;
 
+        @ApiModelProperty("用户ID ")
+        private Long userId;
 
         public boolean invalidParam() {
 
             return Objects.isNull(getClientType())
+                    || Objects.isNull(getUserId())
                     || ClientEnum.invalid(getClientType().getCode());
         }
 
@@ -39,6 +42,11 @@ public class MusicCompareVo implements Serializable {
 
             return JSON.toJSONString(this);
         }
+
+        public StatQueryRequest userId(Long userId) {
+            this.userId = userId;
+            return this;
+        }
     }
 
     /**

+ 9 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicCompareRecordStatService.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.biz.dal.entity.MusicCompareRecordStat;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.yonge.cooleshow.biz.dal.wrapper.music.MusicCompareWrapper;
@@ -21,4 +22,12 @@ public interface MusicCompareRecordStatService extends IService<MusicCompareReco
      * @return MusicCompareWrapper.RecordStat
      */
     MusicCompareWrapper.RecordStat findMusicCompareRecordStatInfo(Long sysUserId, MusicCompareWrapper.StatQueryInfo info);
+
+    /**
+     * 曲目统计信息查询
+     * @param page IPage<MusicCompareWrapper.RecordInfo>
+     * @param query MusicCompareWrapper.StatQueryInfo
+     * @return IPage<MusicCompareWrapper.RecordInfo>
+     */
+    IPage<MusicCompareWrapper.RecordInfo> findMusicCompareRecordPage(IPage<Object> page, MusicCompareWrapper.StatQueryInfo query);
 }

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

@@ -1,6 +1,9 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
+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.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;
@@ -27,6 +30,49 @@ public class MusicCompareRecordStatServiceImp extends ServiceImpl<MusicCompareRe
      */
     @Override
     public MusicCompareWrapper.RecordStat findMusicCompareRecordStatInfo(Long sysUserId, MusicCompareWrapper.StatQueryInfo info) {
+
+        // 统计汇总信息
+        MusicCompareWrapper.RecordStat wrapper = MusicCompareWrapper.RecordStat.builder()
+                .trainMusicNums(0L)
+                .trainDuration(0L)
+                .trainFrequency(0L)
+                .evaluateMusicNums(0L)
+                .evaluateDuration(0L)
+                .evaluateFrequency(0L)
+                .recordInfos(Lists.newArrayList())
+                .build();
+
+        // 指标统计信息
+        Lists.newArrayList(EQueryOp.values()).parallelStream().forEach(dataType -> {
+
+            switch (dataType) {
+                case FUNCTION_1: // 练习曲目
+
+                    break;
+                case FUNCTION_2: // 评测曲目
+
+                    break;
+                default:
+                    break;
+            }
+        });
+
+        // 曲目统计信息
+
+        return wrapper;
+    }
+
+    /**
+     * 曲目统计信息查询
+     *
+     * @param page  IPage<MusicCompareWrapper.RecordInfo>
+     * @param query MusicCompareWrapper.StatQueryInfo
+     * @return IPage<MusicCompareWrapper.RecordInfo>
+     */
+    @Override
+    public IPage<MusicCompareWrapper.RecordInfo> findMusicCompareRecordPage(IPage<Object> page, MusicCompareWrapper.StatQueryInfo query) {
+
+
         return null;
     }
 }

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

@@ -5,6 +5,7 @@ import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.toolset.base.page.QueryInfo;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
+import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
@@ -20,6 +21,7 @@ public class MusicCompareWrapper {
      * 统计汇总查询条件
      */
     @Data
+    @Builder
     @NoArgsConstructor
     @AllArgsConstructor
     public static class StatQueryInfo extends QueryInfo {
@@ -39,12 +41,13 @@ public class MusicCompareWrapper {
      * 曲目统计汇总信息
      */
     @Data
+    @Builder
     @NoArgsConstructor
     @AllArgsConstructor
     public static class RecordStat implements Serializable {
 
-        @ApiModelProperty("曲目总数")
-        private Long musicNums;
+        @ApiModelProperty("练习曲目总数")
+        private Long trainMusicNums;
 
         @ApiModelProperty("使用时长")
         private Long trainDuration;
@@ -52,15 +55,15 @@ public class MusicCompareWrapper {
         @ApiModelProperty("使用次数")
         private Long trainFrequency;
 
+        @ApiModelProperty("评测曲目总数")
+        private Long evaluateMusicNums;
+
         @ApiModelProperty("评测时长")
         private Long evaluateDuration;
 
         @ApiModelProperty("评测次数")
         private Long evaluateFrequency;
 
-        @ApiModelProperty("最近使用时间")
-        private Long recentTime;
-
         private List<RecordInfo> recordInfos;
 
         public String jsonString() {
@@ -73,6 +76,7 @@ public class MusicCompareWrapper {
      * 曲目统计信息
      */
     @Data
+    @Builder
     @NoArgsConstructor
     @AllArgsConstructor
     public static class RecordInfo implements Serializable {