Browse Source

小程序,首页机构人数统计、机构人数按天统计

zouxuan 2 years ago
parent
commit
eb966f0ace

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/SysMusicCompareRecordDao.java

@@ -57,4 +57,7 @@ public interface SysMusicCompareRecordDao extends BaseDAO<Long, SysMusicCompareR
 	int countStudentTrain(Map<String, Object> params);
 
 	SysMusicCompareRecordQueryInfo.StudentMusicCompareRecordStat studentMusicCompareRecordStat(@Param("query") SysMusicCompareRecordQueryInfo.StudentMusicCompareRecordQuery query);
+
+	//学生端训练统计
+	SysMusicCompareRecordQueryInfo.StudentMusicCompareRecordDto studentTrainStat(@Param("query") SysMusicCompareRecordQueryInfo.StudentMusicCompareRecordQuery query);
 }

+ 15 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/queryInfo/SysMusicCompareRecordQueryInfo.java

@@ -177,4 +177,19 @@ public class SysMusicCompareRecordQueryInfo {
         @ApiModelProperty("练习天数")
         private int trainDays;
     }
+    @Data
+    public static class StudentMusicCompareRecordDto{
+
+        @ApiModelProperty("平均练习时长(秒)")
+        private Integer avgTrainTime = 0;
+
+        @ApiModelProperty("练习时长(秒)")
+        private Integer trainTime = 0;
+
+        @ApiModelProperty("练习天数")
+        private Integer trainDays = 0;
+
+        @ApiModelProperty("练习次数")
+        private Integer trainNum = 0;
+    }
 }

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/SysMusicCompareRecordService.java

@@ -55,4 +55,7 @@ public interface SysMusicCompareRecordService extends BaseService<Long, SysMusic
 
     //学员训练统计以及基本信息查询
     SysMusicCompareRecordQueryInfo.StudentMusicCompareRecordStat studentMusicCompareRecordStat(SysMusicCompareRecordQueryInfo.StudentMusicCompareRecordQuery query);
+
+    //学生端,学员训练统计
+    SysMusicCompareRecordQueryInfo.StudentMusicCompareRecordDto studentTrainStat(SysMusicCompareRecordQueryInfo.StudentMusicCompareRecordQuery query);
 }

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

@@ -436,6 +436,15 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
 		return vo;
 	}
 
+	@Override
+	public SysMusicCompareRecordQueryInfo.StudentMusicCompareRecordDto studentTrainStat(SysMusicCompareRecordQueryInfo.StudentMusicCompareRecordQuery query) {
+		SysMusicCompareRecordQueryInfo.StudentMusicCompareRecordDto dto = sysMusicCompareRecordDao.studentTrainStat(query);
+		if(Objects.nonNull(dto) && dto.getTrainTime() > 0 && dto.getTrainDays() > 0){
+			dto.setAvgTrainTime((int)(dto.getTrainTime() / dto.getTrainDays().doubleValue() * 100));
+		}
+		return sysMusicCompareRecordDao.studentTrainStat(query);
+	}
+
 
 	private String getExpireTime() {
 

+ 24 - 4
cooleshow-user/user-biz/src/main/resources/config/mybatis/SysMusicCompareRecordMapper.xml

@@ -415,21 +415,41 @@
 			smcr.create_time_ as createTime
 		from sys_music_compare_record smcr
 		left join music_sheet ms ON ms.id_ = smcr.music_sheet_id_
-		where smcr.user_id_ = #{userId} and DATE_FORMAT(smcr.create_time_,'%Y-%m') = #{month} AND smcr.tenant_id_ = #{tenantId} AND smcr.score IS NOT NULL
+		where smcr.user_id_ = #{userId} and DATE_FORMAT(smcr.create_time_,'%Y-%m') = #{month} AND smcr.score IS NOT NULL
+		<if test="tenantId != null">
+			AND smcr.tenant_id_ = #{tenantId}
+		</if>
 		order by smcr.id_ DESC
 	</select>
 	<select id="countStudentTrain" resultType="java.lang.Integer">
 		select COUNT(smcr.id_)
 		from sys_music_compare_record smcr
-		where smcr.user_id_ = #{userId} and DATE_FORMAT(smcr.create_time_,'%Y-%m') = #{month} AND smcr.tenant_id_ = #{tenantId} AND smcr.score IS NOT NULL
+		where smcr.user_id_ = #{userId} and DATE_FORMAT(smcr.create_time_,'%Y-%m') = #{month}
+		AND smcr.score IS NOT NULL
+		<if test="tenantId != null">
+			AND smcr.tenant_id_ = #{tenantId}
+		</if>
 	</select>
 	<select id="studentMusicCompareRecordStat"
 			resultType="com.yonge.cooleshow.biz.dal.queryInfo.SysMusicCompareRecordQueryInfo$StudentMusicCompareRecordStat">
 		select smcr.user_id_ userId,su.avatar_ avatar,su.username_ username,SUM(smcr.play_time_) trainTime,
 		       COUNT(DISTINCT DATE_FORMAT(smcr.create_time_,'%Y-%m-%d')) trainDays
 		from sys_music_compare_record smcr
-				 left join sys_user su ON su.id_ = smcr.user_id_
-		where smcr.user_id_ = #{query.userId} and DATE_FORMAT(smcr.create_time_,'%Y-%m') = #{query.month} AND smcr.tenant_id_ = #{query.tenantId}
+		left join sys_user su ON su.id_ = smcr.user_id_
+		where smcr.user_id_ = #{query.userId} and DATE_FORMAT(smcr.create_time_,'%Y-%m') = #{query.month}
+		<if test="query.tenantId != null">
+			AND smcr.tenant_id_ = #{query.tenantId}
+		</if>
+		group by smcr.user_id_
+	</select>
+	<select id="studentTrainStat"
+			resultType="com.yonge.cooleshow.biz.dal.queryInfo.SysMusicCompareRecordQueryInfo$StudentMusicCompareRecordDto">
+		select SUM(smcr.play_time_) trainTime,COUNT(DISTINCT DATE_FORMAT(smcr.create_time_,'%Y-%m-%d')) trainDays,COUNT(smcr.id_) trainNum
+		from sys_music_compare_record smcr
+		where smcr.user_id_ = #{query.userId} and DATE_FORMAT(smcr.create_time_,'%Y-%m') = #{query.month}
+		<if test="query.tenantId != null">
+			AND smcr.tenant_id_ = #{query.tenantId}
+		</if>
 		group by smcr.user_id_
 	</select>
 	<!--曲目练习统计-->

+ 4 - 28
cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/IndexController.java

@@ -12,9 +12,10 @@ import com.yonge.toolset.base.page.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 @Api(tags = "首页统计")
 @RequestMapping("index")
@@ -69,29 +70,4 @@ public class IndexController extends BaseController {
         query.setTenantId(sysUser.getTenantId());
         return succeed(tenantPersonStatService.indexSum(query));
     }
-
-    @ApiOperation("学员练习记录")
-    @PostMapping("queryStudentTrain")
-    public HttpResponseResult<PageInfo<SysMusicCompareRecordQueryInfo.StudentMusicCompareRecord>>
-    queryStudentTrain(SysMusicCompareRecordQueryInfo.StudentMusicCompareRecordQuery query){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("获取用户信息失败");
-        }
-        query.setTenantId(sysUser.getTenantId());
-        return succeed(sysMusicCompareRecordService.queryStudentTrain(query));
-    }
-
-    @ApiOperation("学员训练统计以及基本信息查询")
-    @PostMapping("studentTrainStat")
-    public HttpResponseResult<SysMusicCompareRecordQueryInfo.StudentMusicCompareRecordStat>
-    studentMusicCompareRecordStat(SysMusicCompareRecordQueryInfo.StudentMusicCompareRecordQuery query){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("获取用户信息失败");
-        }
-        query.setTenantId(sysUser.getTenantId());
-        return succeed(sysMusicCompareRecordService.studentMusicCompareRecordStat(query));
-    }
-
 }

+ 52 - 0
cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/SysMusicCompareRecordController.java

@@ -0,0 +1,52 @@
+package com.yonge.cooleshow.tenant.controller;
+
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.queryInfo.SysMusicCompareRecordQueryInfo;
+import com.yonge.cooleshow.biz.dal.service.SysMusicCompareRecordService;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.toolset.base.page.PageInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@Api(tags = "学生端训练记录")
+@RequestMapping("studentMusicCompareRecord")
+@RestController
+public class SysMusicCompareRecordController extends BaseController {
+
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private SysMusicCompareRecordService sysMusicCompareRecordService;
+
+
+    @ApiOperation("学生端学员评测记录")
+    @PostMapping("queryStudentTrain")
+    public HttpResponseResult<PageInfo<SysMusicCompareRecordQueryInfo.StudentMusicCompareRecord>>
+    queryStudentTrain(SysMusicCompareRecordQueryInfo.StudentMusicCompareRecordQuery query){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("获取用户信息失败");
+        }
+        query.setUserId(sysUser.getId());
+        return succeed(sysMusicCompareRecordService.queryStudentTrain(query));
+    }
+
+    @ApiOperation("学员训练统计以及基本信息查询")
+    @PostMapping("studentTrainStat")
+    public HttpResponseResult<SysMusicCompareRecordQueryInfo.StudentMusicCompareRecordDto>
+    studentTrainStat(SysMusicCompareRecordQueryInfo.StudentMusicCompareRecordQuery query){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("获取用户信息失败");
+        }
+        query.setUserId(sysUser.getId());
+        return succeed(sysMusicCompareRecordService.studentTrainStat(query));
+    }
+
+}

+ 54 - 0
cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/WechatMusicCompareRecordController.java

@@ -0,0 +1,54 @@
+package com.yonge.cooleshow.tenant.controller;
+
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.queryInfo.SysMusicCompareRecordQueryInfo;
+import com.yonge.cooleshow.biz.dal.service.SysMusicCompareRecordService;
+import com.yonge.cooleshow.biz.dal.service.TenantPersonStatService;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.toolset.base.page.PageInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@Api(tags = "机构端训练记录")
+@RequestMapping("wechatMusicCompareRecord")
+@RestController
+public class WechatMusicCompareRecordController extends BaseController {
+
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private SysMusicCompareRecordService sysMusicCompareRecordService;
+
+
+    @ApiOperation("学员评测记录")
+    @PostMapping("queryStudentTrain")
+    public HttpResponseResult<PageInfo<SysMusicCompareRecordQueryInfo.StudentMusicCompareRecord>>
+    queryStudentTrain(SysMusicCompareRecordQueryInfo.StudentMusicCompareRecordQuery query){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("获取用户信息失败");
+        }
+        query.setTenantId(sysUser.getTenantId());
+        return succeed(sysMusicCompareRecordService.queryStudentTrain(query));
+    }
+
+
+    @ApiOperation("学员训练统计以及基本信息查询")
+    @PostMapping("studentTrainStat")
+    public HttpResponseResult<SysMusicCompareRecordQueryInfo.StudentMusicCompareRecordStat>
+    studentMusicCompareRecordStat(SysMusicCompareRecordQueryInfo.StudentMusicCompareRecordQuery query){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("获取用户信息失败");
+        }
+        query.setTenantId(sysUser.getTenantId());
+        return succeed(sysMusicCompareRecordService.studentMusicCompareRecordStat(query));
+    }
+
+}