Explorar o código

Merge remote-tracking branch 'origin/master'

周箭河 %!s(int64=5) %!d(string=hai) anos
pai
achega
57b5c0b1b7

+ 5 - 24
mec-auth/mec-auth-server/src/main/resources/logback-spring.xml

@@ -27,29 +27,10 @@
 		</encoder>
 	</appender>
 
-	<logger name="com.ym.mec" level="INFO" />
-
-	<!--开发环境:打印控制台 -->
-	<springProfile name="dev">
-		<root level="INFO">
-			<appender-ref ref="stdout" />
-			<appender-ref ref="file" />
-		</root>
-	</springProfile>
-	
-	<springProfile name="test">
-		<root level="INFO">
-			<appender-ref ref="stdout" />
-			<appender-ref ref="file" />
-		</root>
-	</springProfile>
-
-	<!--生产环境:输出到文件 -->
-	<springProfile name="prod">
-		<root level="WARN">
-			<appender-ref ref="stdout" />
-			<appender-ref ref="file" />
-		</root>
-	</springProfile>
+	<logger name="com.ym.mec" level="DEBUG" />
+	<root level="DEBUG">
+		<appender-ref ref="stdout" />
+		<appender-ref ref="file" />
+	</root>
 
 </configuration>

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleStudentPaymentDao.java

@@ -306,4 +306,12 @@ public interface CourseScheduleStudentPaymentDao extends BaseDAO<Long, CourseSch
      */
     List<Map<String, BigDecimal>> findGroupCoursesUnitPrice(@Param("groupType") GroupType groupType,
                                                             @Param("groupIds") List<String> groupIds);
+
+    /**
+     * 获取未进入教室的学员列表
+     * @param roomId
+     * @param courseScheduleId
+     * @return
+     */
+    List<RongyunBasicUserDto> queryNoJoinStu(@Param("roomId") String roomId, @Param("courseScheduleId") String courseScheduleId);
 }

+ 33 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/RongyunBasicUserDto.java

@@ -0,0 +1,33 @@
+package com.ym.mec.biz.dal.dto;
+
+public class RongyunBasicUserDto {
+    private Integer userId;
+
+    private String userName;
+
+    private String headUrl;
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getHeadUrl() {
+        return headUrl;
+    }
+
+    public void setHeadUrl(String headUrl) {
+        this.headUrl = headUrl;
+    }
+}

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

@@ -47,9 +47,20 @@ public class SporadicChargeInfo {
 	@ApiModelProperty(value = "操作人", required = true)
 	private String operatorName;
 
+	@ApiModelProperty(value = "是否关闭", required = true)
+	private Integer openFlag;
+
 	@ApiModelProperty(value = "是否删除", required = true)
 	private Integer delFlag;
 
+	public Integer getOpenFlag() {
+		return openFlag;
+	}
+
+	public void setOpenFlag(Integer openFlag) {
+		this.openFlag = openFlag;
+	}
+
 	public String getUserName() {
 		return userName;
 	}

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/SporadicChargeInfoQueryInfo.java

@@ -17,6 +17,17 @@ public class SporadicChargeInfoQueryInfo extends QueryInfo {
 
     private boolean isExport = false;
 
+    @ApiModelProperty(value = "是否关闭", required = true)
+    private Integer openFlag;
+
+    public Integer getOpenFlag() {
+        return openFlag;
+    }
+
+    public void setOpenFlag(Integer openFlag) {
+        this.openFlag = openFlag;
+    }
+
     public boolean getIsExport() {
         return isExport;
     }

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SporadicChargeInfoService.java

@@ -29,4 +29,11 @@ public interface SporadicChargeInfoService extends BaseService<Integer, Sporadic
     SporadicChargeInfo getDetail(Integer id);
 
     SporadicChargeInfo findByOrganIdAndType(Integer organId,Integer type);
+
+    /**
+     * 开启/关闭缴费
+     * @param sporadicId
+     * @param openFlag
+     */
+    void updateOpenFlag(Integer sporadicId, Integer openFlag);
 }

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SporadicChargeInfoImpl.java

@@ -182,4 +182,13 @@ public class SporadicChargeInfoImpl extends BaseServiceImpl<Integer, SporadicCha
     public SporadicChargeInfo findByOrganIdAndType(Integer organId, Integer type) {
         return sporadicChargeInfoDao.findByOrganIdAndType(organId, type);
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateOpenFlag(Integer sporadicId, Integer openFlag) {
+        SporadicChargeInfo sporadicChargeInfo = sporadicChargeInfoDao.get(sporadicId);
+        sporadicChargeInfo.setOpenFlag(openFlag);
+        sporadicChargeInfo.setUpdateTime(new Date());
+        sporadicChargeInfoDao.update(sporadicChargeInfo);
+    }
 }

+ 13 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml

@@ -480,4 +480,17 @@
 		GROUP BY
 			music_group_id_;
 	</select>
+    <resultMap id="RongyunBasicUserDto" type="com.ym.mec.biz.dal.dto.RongyunBasicUserDto">
+        <result property="userName" column="username_"/>
+        <result property="userId" column="user_id_"/>
+        <result property="headUrl" column="avatar_"/>
+    </resultMap>
+    <select id="queryNoJoinStu" resultMap="RongyunBasicUserDto">
+		SELECT CASE WHEN su.username_ IS NULL THEN su.real_name_ ELSE su.username_ END username_,
+		su.avatar_,cssp.user_id_
+		FROM course_schedule_student_payment cssp
+		LEFT JOIN sys_user su ON su.id_ = cssp.user_id_
+		WHERE cssp.course_schedule_id_ = #{courseScheduleId}
+		AND NOT EXISTS (SELECT * FROM rongyun_room_member rrm WHERE rrm.rid = #{roomId} AND rrm.uid = cssp.user_id_)
+	</select>
 </mapper>

+ 7 - 0
mec-biz/src/main/resources/config/mybatis/SporadicChargeInfo.xml

@@ -15,6 +15,7 @@
 		<result column="update_time_" property="updateTime" />
 		<result column="operator_id_" property="operatorId" />
 		<result column="del_flag_" property="delFlag" />
+		<result column="open_flag_" property="openFlag" />
 		<result column="organ_name_" property="organName" />
 		<result column="user_id_" property="userId" />
 	</resultMap>
@@ -45,6 +46,9 @@
 			<if test="title != null">
 				title_ = #{title},
 			</if>
+			<if test="openFlag != null">
+				open_flag_ = #{openFlag},
+			</if>
 			<if test="chargeType != null">
 				charge_type_ = #{chargeType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
 			</if>
@@ -102,6 +106,9 @@
 			<if test="type == 'common'">
 				AND sci.user_id_ IS NULL
 			</if>
+			<if test="openFlag != null">
+				AND sci.open_flag_ = #{openFlag}
+			</if>
 			<if test="search != null">
 				AND (sci.title_ LIKE CONCAT('%',#{search},'%') OR su.username_ LIKE CONCAT('%',#{search},'%'))
 			</if>

+ 7 - 3
mec-im/src/main/java/com/ym/controller/RoomController.java

@@ -5,12 +5,9 @@ import com.ym.common.ApiException;
 import com.ym.common.BaseResponse;
 import com.ym.common.ErrorEnum;
 import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.common.exception.BizException;
 import com.ym.pojo.*;
 import com.ym.service.MessageService;
 import com.ym.service.RoomService;
-import io.rong.models.message.GroupMessage;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -38,6 +35,11 @@ public class RoomController{
         return new BaseResponse<>(roomResult);
     }
 
+    @RequestMapping(value = "/queryNoJoinStu", method = RequestMethod.GET)
+    public Object queryNoJoinStu(String roomId){
+        return new BaseResponse<>(roomService.queryNoJoinStu(roomId));
+    }
+
     @RequestMapping(value = "/signIn", method = RequestMethod.POST)
     public Object signIn(Long roomId){
         roomService.signIn(roomId);
@@ -172,6 +174,8 @@ public class RoomController{
             result = roomService.syncDeviceState(data.getRoomId(), DeviceTypeEnum.Microphone, data.getMicrophoneOn());
         } else if (data.getMusicModeOn() != null) {
             result = roomService.syncDeviceState(data.getRoomId(), DeviceTypeEnum.MusicMode, data.getMusicModeOn());
+        }  else if (data.getHandUpOn() != null) {
+            result = roomService.syncDeviceState(data.getRoomId(), DeviceTypeEnum.HandUp, data.getHandUpOn());
         } else {
             throw new ApiException(ErrorEnum.ERR_REQUEST_PARA_ERR);
         }

+ 2 - 2
mec-im/src/main/java/com/ym/dao/RoomMemberDao.java

@@ -64,8 +64,8 @@ public interface RoomMemberDao extends JpaRepository<RoomMember, Long> {
 
     @Transactional
     @Modifying
-    @Query(value = "update rongyun_room_member set mic=?3 where rid=?1 and uid=?2", nativeQuery = true)
-    public int updateHandByRidAndUid(String rid, String uid, boolean mic);
+    @Query(value = "update rongyun_room_member set hand=?3 where rid=?1 and uid=?2", nativeQuery = true)
+    public int updateHandByRidAndUid(String rid, String uid, boolean hand);
 
     @Transactional
     @Modifying

+ 1 - 0
mec-im/src/main/java/com/ym/pojo/RoomMember.java

@@ -18,6 +18,7 @@ public class RoomMember {
 
     private @Getter @Setter String uid;
     private @Getter @Setter String rid;
+    private @Getter @Setter String headUrl;
     private @Getter @Setter int role;
     private @Getter @Setter Date joinDt;
     private @Getter @Setter String name;

+ 2 - 0
mec-im/src/main/java/com/ym/pojo/RoomResult.java

@@ -28,6 +28,7 @@ public class RoomResult {
     public static class MemberResult {
         String userId;
         String userName;
+        String headUrl;
         int role;
         Date joinTime;
         boolean camera;
@@ -53,6 +54,7 @@ public class RoomResult {
             result.setCamera(member.isCamera());
             result.setUserName(member.getName());
             result.setHandUp(member.isHand());
+            result.setHeadUrl(member.getHeadUrl());
             result.setPlayMidiJson(JSONObject.parseObject(midiMap.get(Integer.parseInt(member.getUid())),CustomMessage.class));
             members.add(result);
         }

+ 24 - 12
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -14,6 +14,8 @@ import com.ym.job.ScheduleManager;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.dto.BasicUserDto;
+import com.ym.mec.biz.dal.dto.RongyunBasicUserDto;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.StudentAttendance;
 import com.ym.mec.biz.dal.entity.Teacher;
@@ -24,6 +26,7 @@ import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
 import com.ym.mec.biz.service.StudentAttendanceService;
 import com.ym.mec.biz.service.SysConfigService;
 import com.ym.mec.biz.service.TeacherAttendanceService;
+import com.ym.mec.common.entity.ImPlayMidiMessage;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.im.IMHelper;
 import com.ym.mec.im.message.*;
@@ -185,7 +188,7 @@ public class RoomServiceImpl implements RoomService {
             }else {
                 roleEnum = RoleEnum.RoleStudent;
             }
-            saveRoomMember(userId, userName, roomId, roleEnum.getValue(), !isDisableCamera,!isMusicMode, curTime);
+            saveRoomMember(userId,sysUser.getAvatar(), userName, roomId, roleEnum.getValue(), !isDisableCamera,!isMusicMode, curTime);
             IMApiResultInfo resultInfo = imHelper.joinGroup(new String[]{userId}, roomId, roomId);
             if (!resultInfo.isSuccess()) {
                 throw new ApiException(ErrorEnum.ERR_CREATE_ROOM_ERROR, resultInfo.getErrorMessage());
@@ -355,7 +358,7 @@ public class RoomServiceImpl implements RoomService {
         }
     }
 
-    private void saveRoomMember(String userId, String userName, String roomId, int role, boolean cameraOn,boolean musicModeOn, Date joinTime) {
+    private void saveRoomMember(String userId, String headUrl, String userName, String roomId, int role, boolean cameraOn,boolean musicModeOn, Date joinTime) {
         RoomMember roomMember = new RoomMember();
         roomMember.setUid(userId);
         roomMember.setName(userName);
@@ -364,6 +367,7 @@ public class RoomServiceImpl implements RoomService {
         roomMember.setCamera(cameraOn);
         roomMember.setJoinDt(joinTime);
         roomMember.setMusicMode(musicModeOn);
+        roomMember.setHeadUrl(headUrl);
         roomMemberDao.save(roomMember);
     }
 
@@ -785,9 +789,6 @@ public class RoomServiceImpl implements RoomService {
             msg.setType(taskInfo.getTypeEnum().ordinal());
             msg.setOpUserId(authUser.getId().toString());
             msg.setOpUserName(authUser.getUsername());
-            if (typeEnum.equals(DeviceTypeEnum.HandUp)){
-                userId = authUser.getId().toString();
-            }
             imHelper.publishMessage(authUser.getId().toString(), userId, roomId, msg);
         } else {
             if (typeEnum.equals(DeviceTypeEnum.Camera)) {
@@ -901,6 +902,9 @@ public class RoomServiceImpl implements RoomService {
         } else if (type.equals(DeviceTypeEnum.Microphone)){
             result = roomMemberDao.updateMicByRidAndUid(roomId, userId, enable);
             deviceResourceMessage = new DeviceStateChangedMessage(type.ordinal(), enable);
+        } else if (type.equals(DeviceTypeEnum.HandUp)){
+            result = roomMemberDao.updateHandByRidAndUid(roomId, userId, enable);
+            deviceResourceMessage = new DeviceStateChangedMessage(type.ordinal(), enable);
         }else {
             result = roomMemberDao.updateMusicByRidAndUid(roomId, userId, enable);
             deviceResourceMessage = new DeviceStateChangedMessage(type.ordinal(), enable);
@@ -1410,17 +1414,20 @@ public class RoomServiceImpl implements RoomService {
             throw new BizException("用户信息获取失败");
         }
 //        roomService.sendImPlayMidiMessage(playMidiMessageData);
-        GroupMessage groupMessage = new GroupMessage();
+//        GroupMessage groupMessage = new GroupMessage();
         String content = playMidiMessageData.getContent();
         String roomId = playMidiMessageData.getRoomId();
         CustomMessage customMessage = JSONObject.parseObject(content,CustomMessage.class);
-        groupMessage.setContent(customMessage);
-        groupMessage.setTargetId(roomId.split(","));
-        groupMessage.setSenderId(sysUser.getId().toString());
-        groupMessage.setObjectName("DY:PlayMidiMessage");
-        messageService.groupSend(groupMessage);
+//        groupMessage.setContent(customMessage);
+//        groupMessage.setTargetId(roomId.split(","));
+//        groupMessage.setSenderId(sysUser.getId().toString());
+//        groupMessage.setObjectName("DY:PlayMidiMessage");
+        String userId = sysUser.getId().toString();
+        MetronomeMessageMessage displayMessage = new MetronomeMessageMessage(customMessage);
+        imHelper.publishMessage(userId, roomId, displayMessage, 1);
+//        messageService.groupSend(groupMessage);
         //记录节拍器消息
-        String userId = playMidiMessageData.getUserId();
+
 //        long courseId = Long.parseLong(roomId.substring(1));
         courseScheduleStudentPaymentDao.adjustPlayMidi(Long.parseLong(roomId.substring(1)),userId,content);
         /*if(StringUtils.isEmpty(userId)){
@@ -1436,6 +1443,11 @@ public class RoomServiceImpl implements RoomService {
         }*/
     }
 
+    @Override
+    public List<RongyunBasicUserDto> queryNoJoinStu(String roomId) {
+        return courseScheduleStudentPaymentDao.queryNoJoinStu(roomId,roomId.substring(1));
+    }
+
     /*@Override
     public void sendImPlayMidiMessage(PlayMidiMessageData playMidiMessageData) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();

+ 8 - 0
mec-im/src/main/java/com/ym/service/RoomService.java

@@ -1,6 +1,8 @@
 package com.ym.service;
 
 import com.ym.common.ApiException;
+import com.ym.mec.biz.dal.dto.BasicUserDto;
+import com.ym.mec.biz.dal.dto.RongyunBasicUserDto;
 import com.ym.pojo.*;
 
 import java.util.List;
@@ -74,6 +76,12 @@ public interface RoomService {
     void sendImPlayMidiMessage(PlayMidiMessageData playMidiMessageData) throws Exception;
 
     /**
+     * 获取未进入教室的学员列表
+     * @return
+     */
+    List<RongyunBasicUserDto> queryNoJoinStu(String roomId);
+
+    /**
      * 发送节拍器自定义消息
      */
 //    void sendImPlayMidiMessage(PlayMidiMessageData playMidiMessageData);

+ 8 - 0
mec-web/src/main/java/com/ym/mec/web/controller/SporadicChargeInfoController.java

@@ -107,6 +107,14 @@ public class SporadicChargeInfoController extends BaseController {
 		return succeed(sporadicChargeInfoService.update(sporadicChargeInfo));
 	}
 
+	@ApiOperation(value = "开启/关闭缴费")
+	@PostMapping("/updateOpenFlag")
+	@PreAuthorize("@pcs.hasPermissions('sporadicChargeInfo/updateOpenFlag')")
+	public Object updateOpenFlag(Integer sporadicId,Integer openFlag) {
+		sporadicChargeInfoService.updateOpenFlag(sporadicId,openFlag);
+		return succeed();
+	}
+
 	@ApiOperation(value = "删除")
 	@PostMapping("/delete")
 	@PreAuthorize("@pcs.hasPermissions('sporadicChargeInfo/delete')")