Browse Source

点赞数

liujunchi 2 years ago
parent
commit
b6d5d0b395

+ 1 - 1
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/filter/UsernameAuthenticationFilter.java

@@ -78,7 +78,7 @@ public class UsernameAuthenticationFilter extends AbstractAuthenticationProcessi
 				clientId = "SYSTEM";
 			}
 			if (!userInfo.getSysUser().getUserType().contains(clientId)) {
-				throw new LockedException("用户不存在,请联系教务老师");
+				throw new LockedException("用户不存在,请联系乐团主管");
 			}
 		}
 		

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

@@ -179,6 +179,6 @@ public interface ImLiveBroadcastRoomService extends IService<ImLiveBroadcastRoom
      *
      * @param roomUid 直播间uid
      */
-    void syncLikeCount(String roomUid);
+    int syncLikeCount(String roomUid);
 }
 

+ 33 - 10
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java

@@ -754,9 +754,9 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
 
         //获取直播点赞
         int like = 0;
+        like = syncLikeCount(roomUid);
         RBucket<Object> likeCache = redissonClient.getBucket(LIVE_ROOM_LIKE.replace(ROOM_UID, roomUid));
         if (likeCache.isExists()) {
-            like = (int) likeCache.get();
             //删除房间点赞数据
             likeCache.delete();
         }
@@ -1709,6 +1709,12 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
             //生成主讲人信息到缓存
             SysUser sysUser = getSysUser(room.getSpeakerId());
 
+            // 判断直播间时间
+            Date endTime = DateUtil.addMinutes(new Date(), PRE_LIVE_TIME_MINUTE);
+
+            if (room.getLiveStartTime().compareTo(endTime)> 0) {
+                throw new BizException("直播间时间未到");
+            }
 
             //记录用户当前房间uid
             RLock lock = redissonClient.getLock(SPEAKER_ROOM_ING_INFO_LOCK.replace(USER_ID, room.getSpeakerId().toString()));
@@ -1968,6 +1974,9 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         if (Objects.isNull(like)) {
             like = 0;
         }
+
+        like = syncLikeCount(roomVo.getRoomUid());
+
         roomVo.setLikeNum((int) like);
         //累计总用户数量
         // roomVo.setTotalLookNum(getNum.apply(this::getTotalUserCache, roomVo.getRoomUid()));
@@ -2466,21 +2475,27 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
      * 同步直播间点赞数
      *
      * @param roomUid 直播间uid
+     * @return
      */
     @Override
     @Transactional
-    public void syncLikeCount(String roomUid) {
+    public int syncLikeCount(String roomUid) {
         ImLiveBroadcastRoom room = getById(roomUid);
         if (room == null) {
-            return;
+            return 0;
         }
         ImLiveBroadcastRoomDetailVo imLiveBroadcastRoomDetailVo = liveBroadcastRoomDataService.getDao()
                                                                                               .queryByRoomUid(roomUid);
         if (imLiveBroadcastRoomDetailVo == null) {
-            return;
+            return 0;
         }
         if (room.getServiceProvider().equals(RongCloudLivePlugin.PLUGIN_NAME)) {
-            return;
+            //点赞数
+            Object like = redissonClient.getBucket(LIVE_ROOM_LIKE.replace(ROOM_UID, roomUid)).get();
+            if (Objects.isNull(like)) {
+                like = 0;
+            }
+            return (int) like;
         }
         LivePluginService pluginService = livePluginContext.getPluginService(room.getServiceProvider());
         List<TencentWrapper.ChatRoomGroupCounter> chatRoomGroupCounters = null;
@@ -2491,13 +2506,21 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
             log.error("同步直播间点赞数失败", e);
         }
         if (CollectionUtils.isEmpty(chatRoomGroupCounters)) {
-            return;
+            return 0;
         }
-        chatRoomGroupCounters.stream().filter(a -> a.getKey().equals(EGroupDefinedDataType.LIKES.getCode()))
-            .findFirst().ifPresent(a -> {
-                                 imLiveBroadcastRoomDetailVo.setTotalLikeNum(Integer.parseInt(a.getValue()));
+        Optional<TencentWrapper.ChatRoomGroupCounter> first = chatRoomGroupCounters.stream()
+                                                                                   .filter(a -> a.getKey()
+                                                                                                 .equals(
+                                                                                                     EGroupDefinedDataType.LIKES.getCode()))
+                                                                                   .findFirst();
+
+        if (first.isPresent()) {
+            int i = Integer.parseInt(first.get().getValue());
+            imLiveBroadcastRoomDetailVo.setTotalLikeNum(i);
             updateById(room);
-        });
+            return i;
+        }
+        return 0;
     }
 
 

+ 18 - 0
mec-im/src/main/java/com/ym/config/ResourceServerConfig.java

@@ -1,13 +1,24 @@
 package com.ym.config;
 
+import com.ym.mec.common.security.BaseAccessDeniedHandler;
+import com.ym.mec.common.security.BaseAuthenticationEntryPoint;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
 import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer;
 import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter;
+import org.springframework.security.oauth2.config.annotation.web.configurers.ResourceServerSecurityConfigurer;
 
 @Configuration
 @EnableResourceServer
 public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
+
+    @Autowired
+    private BaseAccessDeniedHandler baseAccessDeniedHandler;
+
+    @Autowired
+    private BaseAuthenticationEntryPoint baseAuthenticationEntryPoint;
+
     @Override
     public void configure(HttpSecurity http) throws Exception {
         http.authorizeRequests().antMatchers("/v2/api-docs", "/user/register",
@@ -20,4 +31,11 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
                         "/liveRoom/addUserUnableSpeak","/liveRoom/removeUserUnableSpeak","/liveRoom/syncChatRoomStatus","/liveRoom/tencentImCallback")
                 .permitAll().anyRequest().authenticated().and().csrf().disable();
     }
+
+
+    @Override
+    public void configure(ResourceServerSecurityConfigurer resources) throws Exception {
+        resources.authenticationEntryPoint(baseAuthenticationEntryPoint).accessDeniedHandler(baseAccessDeniedHandler);
+    }
+
 }

+ 1 - 0
mec-im/src/main/java/com/ym/controller/UserController.java

@@ -10,6 +10,7 @@ import com.ym.mec.biz.dal.dto.TencentData;
 import com.ym.mec.biz.dal.dto.TencentImCallbackResult;
 import com.ym.mec.biz.dal.enums.ETencentImCallbackCommand;
 import com.ym.mec.biz.service.ImLiveBroadcastRoomService;
+import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.entity.ImUserState;
 import com.ym.service.LiveRoomService;
 import com.ym.service.UserService;