소스 검색

Merge branch 'system_fee_update' of http://git.dayaedu.com/yonge/mec

 Conflicts:
	mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysMusicCompareRecordDao.java
	mec-biz/src/main/resources/config/mybatis/SysMusicCompareRecordMapper.xml
zouxuan 3 년 전
부모
커밋
7d91fb804d

+ 16 - 5
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysMusicCompareRecordDao.java

@@ -1,9 +1,6 @@
 package com.ym.mec.biz.dal.dao;
 
-import com.ym.mec.biz.dal.dto.EduOrganStudentListDto;
-import com.ym.mec.biz.dal.dto.MusicCompareRankingDto;
-import com.ym.mec.biz.dal.dto.StudentTrainChartDto;
-import com.ym.mec.biz.dal.dto.StudentTrainOverviewDto;
+import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.biz.dal.entity.SysMusicCompareRecord;
 import org.apache.ibatis.annotations.Param;
@@ -60,5 +57,19 @@ public interface SysMusicCompareRecordDao extends BaseDAO<Long, SysMusicCompareR
      */
     int getOrganNewCloudStudyNum(@Param("organId") Integer organId);
     List<Map<Integer, Integer>> getOrgansNewCloudStudyNum(@Param("organIds") List<Integer> organIds);
-	
+
+
+    /**
+     * 老师端首页学员训练统计
+     * @param params
+     * @return
+     */
+    int countStudentTrain(Map<String, Object> params);
+
+    /**
+     * 老师端首页学员训练统计
+     * @param params
+     * @return
+     */
+    List<CountStudentTrainDataDto> queryStudentTrain(Map<String, Object> params);
 }

+ 73 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CountStudentTrainDataDto.java

@@ -0,0 +1,73 @@
+package com.ym.mec.biz.dal.dto;
+
+public class CountStudentTrainDataDto {
+    private Integer userId;
+
+    private String avatar;
+
+    private String phone;
+
+    private String username;
+
+    private Integer totalPlayTime;
+
+    private Integer trainDay;
+
+    private Integer trainNum;
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public String getAvatar() {
+        return avatar;
+    }
+
+    public void setAvatar(String avatar) {
+        this.avatar = avatar;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    public Integer getTotalPlayTime() {
+        return totalPlayTime;
+    }
+
+    public void setTotalPlayTime(Integer totalPlayTime) {
+        this.totalPlayTime = totalPlayTime;
+    }
+
+    public Integer getTrainDay() {
+        return trainDay;
+    }
+
+    public void setTrainDay(Integer trainDay) {
+        this.trainDay = trainDay;
+    }
+
+    public Integer getTrainNum() {
+        return trainNum;
+    }
+
+    public void setTrainNum(Integer trainNum) {
+        this.trainNum = trainNum;
+    }
+}

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MemberRankSetting.java

@@ -26,6 +26,9 @@ public class MemberRankSetting {
 	
 	/**  */
 	private String icon;
+
+	/** 试用会员图片 */
+	private String experienceIcon;
 	
 	private Boolean isDefault;
 
@@ -44,6 +47,14 @@ public class MemberRankSetting {
 	
 	private MemberFeeSetting memberFeeSetting;
 
+	public String getExperienceIcon() {
+		return experienceIcon;
+	}
+
+	public void setExperienceIcon(String experienceIcon) {
+		this.experienceIcon = experienceIcon;
+	}
+
 	public Integer getOperator() {
 		return operator;
 	}

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/MusicGroupStudentQueryInfo.java

@@ -49,6 +49,7 @@ public class MusicGroupStudentQueryInfo extends QueryInfo {
 
   private boolean isExport = false;
   //是否有会员
+  @ApiModelProperty(value = "0否1是2未生效")
   private Integer hasMember;
 
   public Integer getHasMember() {

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/SysMusicCompareRecordQueryInfo.java

@@ -12,6 +12,8 @@ public class SysMusicCompareRecordQueryInfo extends QueryInfo {
 
     private Integer userId;
 
+    private Integer teacherId;
+
     private String startTime;
 
     private String endTime;
@@ -21,6 +23,14 @@ public class SysMusicCompareRecordQueryInfo extends QueryInfo {
     @ApiModelProperty("排序字段:TRAINDAYS(训练天数);TRAINTIME(训练时长);TRAINNUM(训练次数)")
     private String sortField = "TRAINDAYS";
 
+    public Integer getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Integer teacherId) {
+        this.teacherId = teacherId;
+    }
+
     public Integer getUserId() {
         return userId;
     }

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysMusicCompareRecordService.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service;
 
+import com.ym.mec.biz.dal.dto.CountStudentTrainDataDto;
 import com.ym.mec.biz.dal.dto.MusicCompareRankingDto;
 import com.ym.mec.biz.dal.dto.SoundCompareHelper;
 import com.ym.mec.biz.dal.dto.StatDto;
@@ -58,4 +59,11 @@ public interface SysMusicCompareRecordService extends BaseService<Long, SysMusic
      * @return com.ym.mec.common.page.PageInfo<com.ym.mec.biz.dal.entity.SysMusicCompareRecord>
      */
     PageInfo<SysMusicCompareRecord> queryStudentTrainData(SysMusicCompareRecordQueryInfo queryInfo);
+
+    /**
+     * 老师端首页学员训练统计
+     * @param queryInfo
+     * @return
+     */
+    PageInfo<CountStudentTrainDataDto> countStudentTrain(SysMusicCompareRecordQueryInfo queryInfo);
 }

+ 17 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMusicCompareRecordServiceImpl.java

@@ -183,4 +183,21 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
 		pageInfo.setRows(dataList);
 		return pageInfo;
 	}
+
+    @Override
+    public PageInfo<CountStudentTrainDataDto> countStudentTrain(SysMusicCompareRecordQueryInfo queryInfo) {
+		PageInfo<CountStudentTrainDataDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+		Map<String, Object> params = new HashMap<String, Object>();
+		MapUtil.populateMap(params, queryInfo);
+
+		List<CountStudentTrainDataDto> dataList = new ArrayList<>();
+		int count = sysMusicCompareRecordDao.countStudentTrain(params);
+		if (count > 0) {
+			pageInfo.setTotal(count);
+			params.put("offset", pageInfo.getOffset());
+			dataList =sysMusicCompareRecordDao.queryStudentTrain(params);
+		}
+		pageInfo.setRows(dataList);
+		return pageInfo;
+    }
 }

+ 6 - 2
mec-biz/src/main/resources/config/mybatis/MemberRankSettingMapper.xml

@@ -11,6 +11,7 @@
 		<result column="name_" property="name" />
 		<result column="intro_" property="intro" />
 		<result column="icon_" property="icon" />
+		<result column="experience_icon_" property="experienceIcon" />
 		<result column="is_default_" property="isDefault" javaType="java.lang.Boolean" />
 		<result column="create_time_" property="createTime" />
 		<result column="update_time_" property="updateTime" />
@@ -34,13 +35,16 @@
 	
 	<!-- 向数据库增加一条记录 -->
 	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.MemberRankSetting" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		INSERT INTO member_rank_setting (name_,intro_,icon_,is_default_,create_time_,update_time_,operator_)
-		VALUES(#{name},#{intro},#{icon},#{isDefault},NOW(),NOW(),#{operator})
+		INSERT INTO member_rank_setting (name_,intro_,icon_,is_default_,create_time_,update_time_,operator_,experience_icon_)
+		VALUES(#{name},#{intro},#{icon},#{isDefault},NOW(),NOW(),#{operator},#{experienceIcon})
 	</insert>
 
 	<update id="update" parameterType="com.ym.mec.biz.dal.entity.MemberRankSetting">
 		UPDATE member_rank_setting
 		<set>
+		<if test="experienceIcon != null">
+			experience_icon_ = #{experienceIcon},
+		</if>
 		<if test="operator != null">
 			operator_ = #{operator},
 		</if>

+ 26 - 0
mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml

@@ -179,6 +179,11 @@
 		LEFT JOIN `subject` sub ON sub.id_ = s.`subject_id_list_`
 		LEFT JOIN sys_user_tsign sut ON sut.user_id_ = s.user_id_
         LEFT JOIN cooperation_organ co ON s.cooperation_organ_id_=co.id_
+        <if test="hasMember != null">
+            <if test="hasMember == 2">
+                LEFT JOIN cloud_teacher_order cto ON cto.student_id_ = s.user_id_
+            </if>
+        </if>
         <include refid="findStudentsByOrganIdSql"/>
         ORDER BY su.create_time_ DESC
         <include refid="global.limit"/>
@@ -219,6 +224,9 @@
                 <if test="hasMember == 1">
                     AND s.member_rank_setting_id_ IS NOT NULL
                 </if>
+                <if test="hasMember == 2">
+                    AND cto.status_ = 1
+                </if>
             </if>
             <if test="teacherId != null">
                 AND s.teacher_id_ = #{teacherId}
@@ -244,6 +252,11 @@
     <select id="countStudentByOrganId" resultType="java.lang.Integer">
         SELECT COUNT(DISTINCT su.id_)
         FROM `student` s LEFT JOIN `sys_user` su on s.`user_id_` = su.`id_`
+        <if test="hasMember != null">
+            <if test="hasMember == 2">
+                LEFT JOIN cloud_teacher_order cto ON cto.student_id_ = s.user_id_
+            </if>
+        </if>
        <include refid="findStudentsByOrganIdSql"/>
     </select>
     <select id="findStudentBaseInfoByUserID" resultMap="studentManageListDto">
@@ -474,6 +487,9 @@
                 <if test="hasMember == 1">
                     AND s.member_rank_setting_id_ IS NOT NULL
                 </if>
+                <if test="hasMember == 2">
+                    AND cto.status_ = 1
+                </if>
             </if>
             <if test="search != null and search != ''">
                 AND (su.id_ = #{search} OR su.username_ LIKE CONCAT("%",#{search},"%") OR su.phone_ LIKE CONCAT("%",#{search},"%"))
@@ -570,6 +586,11 @@
         <if test="classGroupId != null">
             LEFT JOIN class_group_student_mapper cgsm ON cgsm.music_group_id_ = sr.music_group_id_
         </if>
+        <if test="hasMember != null">
+            <if test="hasMember == 2">
+                LEFT JOIN cloud_teacher_order cto ON cto.student_id_ = sr.user_id_
+            </if>
+        </if>
         <include refid="queryMusicGroupStudentSql"/>
         ORDER BY sr.id_ DESC
         <include refid="global.limit"/>
@@ -587,6 +608,11 @@
         <if test="carePackage != null or comeOnPackage != null">
             LEFT JOIN student stu ON sr.user_id_ = stu.user_id_
         </if>
+        <if test="hasMember != null">
+            <if test="hasMember == 2">
+                LEFT JOIN cloud_teacher_order cto ON cto.student_id_ = sr.user_id_
+            </if>
+        </if>
         <include refid="queryMusicGroupStudentSql"/>
     </select>
 

+ 2 - 2
mec-biz/src/main/resources/config/mybatis/StudentMapper.xml

@@ -983,11 +983,11 @@
         </foreach>
     </update>
     <update id="cleanStudentMember">
-        UPDATE student SET member_rank_setting_id_ = NULL,membership_start_time_ = NULL,membership_end_time_ = NULL
+        UPDATE student SET member_rank_setting_id_ = NULL
         WHERE DATEDIFF(NOW(),membership_end_time_) > 0
     </update>
     <update id="cleanExperienceStudentMember">
-        UPDATE student SET experience_member_rank_setting_id_ = NULL,experience_membership_start_time_ = NULL,experience_membership_end_time_ = NULL
+        UPDATE student SET experience_member_rank_setting_id_ = NULL
         WHERE DATEDIFF(NOW(),experience_membership_end_time_) > 0
     </update>
     <update id="cleanMember">

+ 38 - 0
mec-biz/src/main/resources/config/mybatis/SysMusicCompareRecordMapper.xml

@@ -286,4 +286,42 @@
 							   DATE( smcr.create_time_ ))= CURDATE()) t
 		GROUP BY t.organ_id_
 	</select>
+    <select id="countStudentTrain" resultType="java.lang.Integer">
+		SELECT COUNT(DISTINCT s.user_id_)
+		FROM teacher t
+				 LEFT JOIN student s ON t.id_ = s.teacher_id_
+				 LEFT JOIN sys_user su ON su.id_ = s.user_id_
+				 LEFT JOIN sys_music_compare_record mcr ON mcr.user_id_ = s.user_id_
+		WHERE s.teacher_id_ = #{teacherId}
+		<if test="startTime != null and startTime != ''">
+			AND (mcr.create_time_ BETWEEN #{startTime} AND #{endTime} OR mcr.id_ IS NULL)
+		</if>
+		GROUP BY mcr.user_id_
+		ORDER BY total_play_time_ DESC
+	</select>
+	<resultMap id="CountStudentTrainDataDto" type="com.ym.mec.biz.dal.dto.CountStudentTrainDataDto">
+		<result property="trainNum" column="train_num_"/>
+		<result property="avatar" column="avatar_"/>
+		<result property="userId" column="user_id_"/>
+		<result property="username" column="username_"/>
+		<result property="phone" column="phone_"/>
+		<result property="totalPlayTime" column="total_play_time_"/>
+		<result property="trainDay" column="train_day_"/>
+	</resultMap>
+	<select id="queryStudentTrain" resultMap="CountStudentTrainDataDto">
+		SELECT s.user_id_,su.avatar_,su.phone_,su.username_,ROUND(SUM(mcr.play_time_) / 60) total_play_time_,
+			   COUNT(DISTINCT DATE_FORMAT(mcr.create_time_,"%Y-%m-%d")) train_day_,
+			   COUNT(DISTINCT mcr.behavior_id_) train_num_
+		FROM teacher t
+				 LEFT JOIN student s ON t.id_ = s.teacher_id_
+				 LEFT JOIN sys_user su ON su.id_ = s.user_id_
+				 LEFT JOIN sys_music_compare_record mcr ON mcr.user_id_ = s.user_id_
+		WHERE s.teacher_id_ = #{teacherId}
+		<if test="startTime != null and startTime != ''">
+			AND (mcr.create_time_ BETWEEN #{startTime} AND #{endTime} OR mcr.id_ IS NULL)
+		</if>
+		GROUP BY mcr.user_id_
+		ORDER BY total_play_time_ DESC
+		<include refid="global.limit"/>
+	</select>
 </mapper>

+ 8 - 7
mec-student/src/main/java/com/ym/mec/student/controller/StudentManageController.java

@@ -145,13 +145,6 @@ public class StudentManageController extends BaseController {
 		student.setRealName(user.getRealName());
 		student.setIdCardNo(user.getIdCardNo());
 		student.setImToken(user.getImToken());
-		if (student != null) {
-			// 获取会员等级图标
-			MemberRankSetting memberRankSetting = memberRankSettingService.get(student.getMemberRankSettingId());
-			if (memberRankSetting != null) {
-				student.setMemberRankImg(memberRankSetting.getIcon());
-			}
-		}
 
 		Map<String, Object> datas = new HashMap<String, Object>();
 		datas.put("student", student);
@@ -180,6 +173,11 @@ public class StudentManageController extends BaseController {
 		} else {
 			datas.put("homeworkOpenFlag", Integer.parseInt(sysConfig.getParanValue()));
 		}
+        // 获取会员等级图标
+        MemberRankSetting memberRankSetting = memberRankSettingService.get(student.getMemberRankSettingId());
+        if (memberRankSetting != null) {
+            student.setMemberRankImg(memberRankSetting.getIcon());
+        }
         //是否是试用会员
 		if(student.getExperienceMemberRankSettingId() == null){
             datas.put("isExperience", 0);
@@ -189,6 +187,9 @@ public class StudentManageController extends BaseController {
                 datas.put("isExperience", 0);
             }else {
                 datas.put("isExperience", 1);
+                if (memberRankSetting != null) {
+                    student.setMemberRankImg(memberRankSetting.getExperienceIcon());
+                }
             }
         }
 		return succeed(datas);

+ 13 - 1
mec-teacher/src/main/java/com/ym/mec/teacher/controller/CloudStudyController.java

@@ -2,15 +2,16 @@ package com.ym.mec.teacher.controller;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dto.CountStudentTrainDataDto;
 import com.ym.mec.biz.dal.dto.MusicCompareRankingDto;
 import com.ym.mec.biz.dal.entity.SysMusicCompareRecord;
 import com.ym.mec.biz.dal.page.SysMusicCompareRecordQueryInfo;
 import com.ym.mec.biz.service.SysMusicCompareRecordService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -43,4 +44,15 @@ public class CloudStudyController extends BaseController {
         return succeed(sysMusicCompareRecordService.queryStudentTrainData(queryInfo));
     }
 
+    @ApiOperation("学员训练统计")
+    @GetMapping("countStudentTrain")
+    public HttpResponseResult<PageInfo<CountStudentTrainDataDto>> countStudentTrain(SysMusicCompareRecordQueryInfo queryInfo){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser == null){
+            throw new BizException("请登录");
+        }
+        queryInfo.setTeacherId(sysUser.getId());
+        return succeed(sysMusicCompareRecordService.countStudentTrain(queryInfo));
+    }
+
 }