Browse Source

Merge branch 'saas' of http://git.dayaedu.com/yonge/mec into zx_saas_cbs

zouxuan 1 year ago
parent
commit
e2d45d813f

+ 1 - 1
audio-analysis/src/main/java/com/yonge/netty/server/service/AudioCompareHandler.java

@@ -141,7 +141,7 @@ public class AudioCompareHandler implements MessageHandler {
 				sysMusicCompareRecord.setDeviceType(DeviceTypeEnum.valueOf(musicXmlBasicInfo.getPlatform()));
 				sysMusicCompareRecord.setSpeed(musicXmlBasicInfo.getSpeed());
 				sysMusicCompareRecord.setPartIndex(musicXmlBasicInfo.getPartIndex());
-				
+				sysMusicCompareRecord.setSubjectId(musicXmlBasicInfo.getSubjectId());
 				//SysUser sysUser = sysUserFeignService.queryUserById(sysMusicCompareRecord.getUserId());
 				sysMusicCompareRecord.setTenantId(musicXmlBasicInfo.getTenantId());
 				

+ 1 - 1
cms/src/main/java/com/ym/mec/cms/dal/dao/SysNewsInformationDao.java

@@ -31,7 +31,7 @@ public interface SysNewsInformationDao extends BaseDAO<Long, SysNewsInformation>
 	
 	SysNewsInformationDto queryById(Long id);
 
-	List<SysNewsInformation> queryBySubType(@Param("subType") Integer subType, @Param("memo") String memo, @Param("organIds") String organIds);
+	List<SysNewsInformation> queryBySubType(@Param("subType") Integer subType, @Param("memo") String memo, @Param("organIds") String organIds, @Param("excludeFunctionIds") String excludeFunctionIds);
 
     Boolean countStudentAttendanceError(@Param("startTime") String startTime, @Param("userId") Integer userId);
 

+ 18 - 7
cms/src/main/java/com/ym/mec/cms/service/impl/SysNewsTypeServiceImpl.java

@@ -1,5 +1,6 @@
 package com.ym.mec.cms.service.impl;
 
+import com.ym.mec.cms.dal.dao.SysConfigDao;
 import com.ym.mec.cms.dal.dao.SysNewsInformationDao;
 import com.ym.mec.cms.dal.dao.SysNewsTypeDao;
 import com.ym.mec.cms.dal.entity.SysNewsInformation;
@@ -17,6 +18,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
@@ -24,12 +26,14 @@ import java.util.stream.Collectors;
 
 @Service
 public class SysNewsTypeServiceImpl extends BaseServiceImpl<Integer, SysNewsType> implements SysNewsTypeService {
-    @Autowired
+    @Resource
     private SysNewsTypeDao sysNewsTypeDao;
-    @Autowired
+    @Resource
     private SysNewsInformationDao informationDao;
-    @Autowired
+    @Resource
     private WebFeignService webFeignService;
+    @Resource
+    private SysConfigDao sysConfigDao;
 
     @Override
     public BaseDAO<Integer, SysNewsType> getDAO() {
@@ -61,12 +65,19 @@ public class SysNewsTypeServiceImpl extends BaseServiceImpl<Integer, SysNewsType
 
     public List<SysNewsType> listWithTree(Integer id, String memo,Integer userId,String organIds) {
         SysNewsType newsType = sysNewsTypeDao.get(id);
+        //获取需要排除的用户编号
+        String excludeUserIds = sysConfigDao.findConfigValue("exclude_user_ids");
+        String excludeFunctionIds = null;
+        if(StringUtils.isNotEmpty(excludeUserIds) && excludeUserIds.contains(userId.toString())){
+            //获取需要排除的功能点编号
+            excludeFunctionIds = sysConfigDao.findConfigValue("exclude_function_ids");
+        }
         List<SysNewsType> all = sysNewsTypeDao.findAll(null);
         String startTime = DateUtil.format(DateUtil.getFirstDayOfMonth(DateUtil.addMonths(new Date(), -1)),DateUtil.ISO_EXPANDED_DATE_FORMAT);
-        all.forEach(e -> {
-            List<SysNewsInformation> list = informationDao.queryBySubType(e.getId(), memo,organIds);
+        for (SysNewsType e : all) {
+            List<SysNewsInformation> list = informationDao.queryBySubType(e.getId(), memo,organIds,excludeFunctionIds);
             if (CollectionUtils.isEmpty(list)) {
-            	list = informationDao.queryBySubType(e.getId(), null,organIds);
+            	list = informationDao.queryBySubType(e.getId(), null,organIds,excludeFunctionIds);
             }
             Iterator<SysNewsInformation> iterator = list.iterator();
 			SysNewsInformation sni = null;
@@ -86,7 +97,7 @@ public class SysNewsTypeServiceImpl extends BaseServiceImpl<Integer, SysNewsType
                 }
     		}
             e.setInformationList(list);
-        });
+        }
         List<SysNewsType> treeMenus = all.stream()
                 .filter((e) -> e.getParentId().equals(newsType.getParentId()))
                 .map((menu) -> menu.setChildren(getChildren(menu, all)))

+ 3 - 0
cms/src/main/resources/config/mybatis/SysNewsInformationMapper.xml

@@ -313,6 +313,9 @@
 		<if test="memo != null and memo !=''">
 			AND memo_ = #{memo}
 		</if>
+		<if test="excludeFunctionIds != null and excludeFunctionIds !=''">
+			AND NOT FIND_IN_SET(id_,#{excludeFunctionIds})
+		</if>
 		<if test="organIds != null and organIds !=''">
 			AND (INTE_ARRAY(#{organIds},organ_id_list_) OR organ_id_list_ IS NULL OR organ_id_list_ = '')
 		</if>

+ 3 - 1
mec-application/src/main/java/com/ym/mec/student/controller/CloudStudyController.java

@@ -13,6 +13,8 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.Map;
+
 /**
  * @Author Joburgess
  * @Date 2021/8/11 0011
@@ -38,7 +40,7 @@ public class CloudStudyController extends BaseController {
 
     @ApiOperation("学员训练数据统计")
     @GetMapping("studentTrainData")
-    public HttpResponseResult studentTrainData(SysMusicCompareRecordQueryInfo queryInfo){
+    public HttpResponseResult<Map<String, Object>> studentTrainData(SysMusicCompareRecordQueryInfo queryInfo){
         queryInfo.setUserId(sysUserService.getUserId());
         return succeed(sysMusicCompareRecordService.studentTrainData(queryInfo));
     }

+ 2 - 1
mec-application/src/main/java/com/ym/mec/student/controller/SysMusicCompareRecordController.java

@@ -1,5 +1,6 @@
 package com.ym.mec.student.controller;
 
+import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.biz.dal.entity.SysMusicCompareRecord;
 import com.ym.mec.biz.service.SysMusicCompareRecordService;
 import com.ym.mec.biz.service.SysUserService;
@@ -58,7 +59,7 @@ public class SysMusicCompareRecordController extends BaseController {
 
     @ApiOperation(value = "用户最后一次评测数据")
     @GetMapping("getLastEvaluationMusicalNotesPlayStats")
-    public HttpResponseResult getLastEvaluationMusicalNotesPlayStats(Long recordId){
+    public HttpResponseResult<JSONObject> getLastEvaluationMusicalNotesPlayStats(Long recordId){
         return succeed(sysMusicCompareRecordService.getLastEvaluationMusicalNotesPlayStats(sysUserService.getUserId(), recordId));
     }
 

+ 104 - 0
mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/entity/SysConfig.java

@@ -0,0 +1,104 @@
+package com.ym.mec.auth.api.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+/**
+ * 对应数据库表(sys_config):
+ */
+public class SysConfig {
+
+	/**  */
+	private Long id;
+	
+	/** 参数名称 */
+	@ApiModelProperty(value = "参数名称", required = true)
+	private String paramName;
+	
+	/** 参数值 */
+	@ApiModelProperty(value = "参数值", required = true)
+	private String paranValue;
+	
+	/** 描述 */
+	@ApiModelProperty(value = "描述", required = true)
+	private String description;
+	
+	/** 创建时间 */
+	private java.util.Date createOn;
+	
+	/** 修改时间 */
+	private java.util.Date modifyOn;
+	
+	@ApiModelProperty(value = "消息组", required = true)
+	private String group;
+	
+	public void setId(Long id){
+		this.id = id;
+	}
+	
+	public Long getId(){
+		return this.id;
+	}
+			
+	public void setParamName(String paramName){
+		this.paramName = paramName;
+	}
+	
+	public String getParamName(){
+		return this.paramName;
+	}
+			
+	public void setParanValue(String paranValue){
+		this.paranValue = paranValue;
+	}
+	
+	public String getParanValue(){
+		return this.paranValue;
+	}
+
+	public <T> T getParanValue(Class<T> cla){
+		try {
+			return cla.cast(cla.getMethod("valueOf", String.class).invoke(cla.getInterfaces(),this.paranValue));
+		} catch (Exception e) {
+			return (T)this.paranValue.getClass();
+		}
+	}
+			
+	public void setDescription(String description){
+		this.description = description;
+	}
+	
+	public String getDescription(){
+		return this.description;
+	}
+			
+	public void setCreateOn(java.util.Date createOn){
+		this.createOn = createOn;
+	}
+	
+	public java.util.Date getCreateOn(){
+		return this.createOn;
+	}
+			
+	public void setModifyOn(java.util.Date modifyOn){
+		this.modifyOn = modifyOn;
+	}
+	
+	public java.util.Date getModifyOn(){
+		return this.modifyOn;
+	}
+			
+	public String getGroup() {
+		return group;
+	}
+
+	public void setGroup(String group) {
+		this.group = group;
+	}
+
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

+ 24 - 0
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/dal/dao/SysConfigDao.java

@@ -0,0 +1,24 @@
+package com.ym.mec.auth.dal.dao;
+
+import com.ym.mec.auth.api.entity.SysConfig;
+import com.ym.mec.common.dal.BaseDAO;
+
+public interface SysConfigDao extends BaseDAO<Long, SysConfig> {
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/10/9
+     * @params [paramName]
+     * @return com.ym.mec.biz.dal.entity.SysConfig
+     * @describe 根据配置名称获取配置信息
+     */
+    SysConfig findByParamName(String paramName);
+
+    /**
+     * 获取value
+     * @param paramName
+     * @return
+     */
+    String findConfigValue(String paramName);
+	
+}

+ 9 - 0
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/CbsQrCodeScanServiceImpl.java

@@ -5,9 +5,11 @@ import com.dayaedu.cbs.openfeign.wrapper.qrcode.CbsQrCodeScanWrapper;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.core.service.CustomTokenServices;
+import com.ym.mec.auth.dal.dao.SysConfigDao;
 import com.ym.mec.auth.service.SysUserService;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.exception.BizException;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.http.HttpStatus;
 import org.springframework.security.oauth2.provider.OAuth2Authentication;
 import org.springframework.stereotype.Service;
@@ -25,6 +27,8 @@ public class CbsQrCodeScanServiceImpl{
     private SysUserService sysUserService;
     @Resource
     private SysUserFeignService sysUserFeignService;
+    @Resource
+    private SysConfigDao sysConfigDao;
 
     public CbsQrCodeScanWrapper.UserInfo userInfo(CbsQrCodeScanWrapper.QrCodeScanUserInfoReq req) {
         CbsQrCodeScanWrapper.UserInfo userInfo = new CbsQrCodeScanWrapper.UserInfo();
@@ -41,6 +45,11 @@ public class CbsQrCodeScanServiceImpl{
         if (sysUser == null) {
             throw new BizException(HttpStatus.UNAUTHORIZED.value(), "用户不存在");
         }
+        //获取需要排除的用户编号
+        String excludeUserIds = sysConfigDao.findConfigValue("exclude_user_ids");
+        if(StringUtils.isNotEmpty(excludeUserIds) && excludeUserIds.contains(sysUser.getId().toString())){
+            throw new BizException("扫码登陆失败: 用户已锁定");
+        }
         //调用登陆接口
         HttpResponseResult<Map<String,Object>> result = sysUserFeignService.smsLogin(phone, "qr_teacher", UUID.randomUUID().toString(), "qr_teacher");
         if (result != null){

+ 21 - 0
mec-auth/mec-auth-server/src/main/resources/config/mybatis/SysConfigMapper.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!-- 这个文件是自动生成的。 不要修改此文件。所有改动将在下次重新自动生成时丢失。 -->
+<mapper namespace="com.ym.mec.auth.dal.dao.SysConfigDao">
+
+	<resultMap type="com.ym.mec.auth.api.entity.SysConfig" id="SysConfig">
+		<result column="id_" property="id" />
+		<result column="param_name_" property="paramName" />
+		<result column="paran_value_" property="paranValue" />
+		<result column="description_" property="description" />
+		<result column="create_on_" property="createOn" />
+		<result column="modify_on_" property="modifyOn" />
+		<result column="group_" property="group" />
+	</resultMap>
+	<select id="findByParamName" resultMap="SysConfig">
+		SELECT * FROM sys_config WHERE param_name_ = #{paramName}
+	</select>
+    <select id="findConfigValue" resultType="java.lang.String">
+		SELECT paran_value_ FROM sys_config WHERE param_name_ = #{paramName}
+	</select>
+</mapper>

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysMusicCompareRecord.java

@@ -85,6 +85,8 @@ public class SysMusicCompareRecord extends BaseEntity {
 	//文件是否过期
 	private boolean expire;
 
+	private Integer subjectId;
+
 	public SysMusicCompareRecord(FeatureType feature) {
 		this.feature = feature;
 	}

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/SysMusicCompareRecordService.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service;
 
+import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.biz.dal.dao.SysMusicCompareRecordDao;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.SysMusicCompareRecord;
@@ -41,7 +42,7 @@ public interface SysMusicCompareRecordService extends BaseService<Long, SysMusic
      * @param userId:
      * @return java.util.List<com.ym.mec.biz.dal.dto.MusicalNotesPlayStatDto>
      */
-    Object getLastEvaluationMusicalNotesPlayStats(Integer userId, Long recordId);
+    JSONObject getLastEvaluationMusicalNotesPlayStats(Integer userId, Long recordId);
 
     /**
      * @describe 云教练排行榜

+ 5 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SoundCompareHandler.java

@@ -120,10 +120,13 @@ public class SoundCompareHandler implements WebSocketEventHandler {
                 if(bodyObject.containsKey("speed")){
                     userSoundInfoMap.get(phone).setSpeed(bodyObject.getIntValue("speed"));
                 }
-                List<Integer> subjectIds = sysMusicScoreAccompanimentDao.findSubjectByMusicScoreId(userSoundInfoMap.get(phone).getMusicScoreId(), null);
+                if(bodyObject.containsKey("subjectId")){
+                    userSoundInfoMap.get(phone).setSubjectId(bodyObject.getIntValue("subjectId"));
+                }
+                /*List<Integer> subjectIds = sysMusicScoreAccompanimentDao.findSubjectByMusicScoreId(userSoundInfoMap.get(phone).getMusicScoreId(), null);
                 if(!CollectionUtils.isEmpty(subjectIds)){
                     userSoundInfoMap.get(phone).setSubjectId(subjectIds.get(0));
-                }
+                }*/
                 userSoundInfoMap.get(phone).setMeasureXmlInfoMap(musicXmlInfos.stream().collect(Collectors.groupingBy(MusicPitchDetailDto::getMeasureIndex)));
                 musicXmlInfos.forEach(e->userSoundInfoMap.get(phone).getMusicalNotePitchMap().put(e.getMusicalNotesIndex(), e.getFrequency()));
                 for (Map.Entry<Integer, List<MusicPitchDetailDto>> userMeasureXmlInfoEntry : userSoundInfoMap.get(phone).getMeasureXmlInfoMap().entrySet()) {

+ 3 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMusicCompareRecordServiceImpl.java

@@ -108,6 +108,7 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
 			return;
 		}
 		SysMusicCompareRecord sysMusicCompareRecord = new SysMusicCompareRecord();
+		sysMusicCompareRecord.setSubjectId(soundCompareInfo.getSubjectId());
 		sysMusicCompareRecord.setUserId(user.getId());
 		sysMusicCompareRecord.setSysMusicScoreId(soundCompareInfo.getMusicScoreId());
 		sysMusicCompareRecord.setHeardLevel(soundCompareInfo.getHeardLevel());
@@ -165,7 +166,7 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
 	}
 
 	@Override
-	public Object getLastEvaluationMusicalNotesPlayStats(Integer userId, Long recordId) {
+	public JSONObject getLastEvaluationMusicalNotesPlayStats(Integer userId, Long recordId) {
 		SysMusicCompareRecord userLastEvaluationData;
 		if(Objects.nonNull(recordId)){
 			userLastEvaluationData = sysMusicCompareRecordDao.get(recordId);
@@ -181,6 +182,7 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
 
 		JSONObject jsonObject = JSON.parseObject(userLastEvaluationData.getScoreData());
 		jsonObject.put("recordId", userLastEvaluationData.getId());
+		jsonObject.put("subjectId", userLastEvaluationData.getSubjectId());
 		jsonObject.put("score", userLastEvaluationData.getScore());
 		jsonObject.put("cadence", userLastEvaluationData.getCadence());
 		jsonObject.put("intonation", userLastEvaluationData.getIntonation());

+ 12 - 4
mec-biz/src/main/resources/config/mybatis/SysMusicCompareRecordMapper.xml

@@ -31,6 +31,7 @@
 		<result column="create_time_" property="createTime" />
 		<result column="part_index_" property="partIndex" />
         <result column="tenant_id_" property="tenantId"/>
+        <result column="subject_id_" property="subjectId"/>
 	</resultMap>
 
 	<!-- 根据主键查询一条记录 -->
@@ -47,15 +48,16 @@
 	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.SysMusicCompareRecord" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
 		INSERT INTO sys_music_compare_record (id_,user_id_,sys_music_score_id_,heard_level_,behavior_id_,score_data_,score_,intonation_,cadence_,integrity_,
 		                                      record_file_path_,video_file_path_,device_type_,client_id_,play_time_,speed_,monday_,
-												source_time_,feature_,create_time_,create_date_,update_time_,part_index_,tenant_id_)
+												source_time_,feature_,create_time_,create_date_,update_time_,part_index_,tenant_id_,subject_id_)
 		VALUES(#{id},#{userId},#{sysMusicScoreId},#{heardLevel,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{behaviorId},#{scoreData},
 		       #{score},#{intonation},#{cadence},#{integrity},
 		       #{recordFilePath},#{videoFilePath},#{deviceType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{clientId},#{playTime},#{speed},#{monday},
-		       #{sourceTime},#{feature,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{createTime}, #{createDate}, NOW(),#{partIndex},#{tenantId})
+		       #{sourceTime},#{feature,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{createTime}, #{createDate}, NOW(),#{partIndex},#{tenantId},#{subjectId})
 	</insert>
 	<insert id="init">
 		insert into sys_music_compare_day_data (user_id_, day_, train_num_, train_time_, tenant_id_)
-		select smcr.user_id_,DATE_FORMAT(smcr.create_time_,'%Y-%m-%d'),COUNT(smcr.id_),SUM(smcr.play_time_),smcr.tenant_id_ from sys_music_compare_record smcr
+		select smcr.user_id_,DATE_FORMAT(smcr.create_time_,'%Y-%m-%d'),COUNT(smcr.id_),SUM(smcr.play_time_),smcr.tenant_id_
+		from sys_music_compare_record smcr
 		where smcr.create_date_ = #{date}
 		group by smcr.create_date_,smcr.user_id_;
 	</insert>
@@ -63,6 +65,9 @@
 	<!-- 根据主键查询一条记录 -->
 	<update id="update" parameterType="com.ym.mec.biz.dal.entity.SysMusicCompareRecord">
 		UPDATE sys_music_compare_record <set>
+		<if test="subjectId != null">
+			subject_id_ = #{subjectId},
+		</if>
 		<if test="userId != null">
 			user_id_ = #{userId},
 		</if>
@@ -138,6 +143,9 @@
 			<if test="userId!=null">
 				AND smcr.user_id_=#{userId}
 			</if>
+			<if test="subjectId != null">
+				AND smcr.subject_id_=#{subjectId}
+			</if>
 			<if test="featureType != null">
 				AND smcr.feature_ = #{featureType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 			</if>
@@ -157,7 +165,7 @@
 			LOCATE('musicalNotesPlayStats', smcr.score_data_) notes_data_index_,
 		       smcr.score_, smcr.intonation_, smcr.cadence_,
 		       smcr.integrity_, smcr.record_file_path_, smcr.video_file_path_, smcr.client_id_, smcr.device_type_, smcr.play_time_,
-		       smcr.monday_, smcr.create_time_,
+		       smcr.monday_, smcr.create_time_,smcr.subject_id_,
 			sms.name_ sys_music_score_name_
 		FROM sys_music_compare_record smcr
 		LEFT JOIN sys_music_score sms on smcr.sys_music_score_id_ = sms.id_