Răsfoiți Sursa

清楚缓存

sunkean 3 ani în urmă
părinte
comite
ee59eb7093

+ 8 - 0
src/main/java/com/izouma/meta/config/Constants.java

@@ -6,4 +6,12 @@ public interface Constants {
     String HEART_RECEIVE = "META_PING";
 
     String HEART_RETURN = "META_PONG";
+
+    interface MetaRestCode {
+
+        int success = 200;
+
+        int err = 400;
+
+    }
 }

+ 65 - 0
src/main/java/com/izouma/meta/dto/MetaRestResult.java

@@ -0,0 +1,65 @@
+package com.izouma.meta.dto;
+
+import com.izouma.meta.config.Constants;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel("元宇宙通用返回类")
+public class MetaRestResult<T> {
+
+    @ApiModelProperty("返回消息")
+    private String message;
+
+    @ApiModelProperty("返回状态")
+    private int code;
+
+    @ApiModelProperty("返回数据")
+    private T data;
+
+    public static <T> MetaRestResult<T> returnSuccess(String successMessage) {
+        MetaRestResult<T> result = returnResult(null);
+        result.setMessage(successMessage);
+        result.setCode(Constants.MetaRestCode.success);
+        return result;
+    }
+
+    public static <T> MetaRestResult<T> returnSuccess(T data) {
+        String successMsg = "请求成功";
+        return returnSuccess(successMsg, data);
+    }
+
+    public static <T> MetaRestResult<T> returnSuccess(String successMessage, T data) {
+        MetaRestResult<T> result = returnResult(data);
+        result.setMessage(successMessage);
+        result.setCode(Constants.MetaRestCode.success);
+        return result;
+    }
+
+    public static <T> MetaRestResult<T> returnError(String errorMessage) {
+        MetaRestResult<T> result = returnResult(null);
+        result.setMessage(errorMessage);
+        result.setCode(Constants.MetaRestCode.err);
+        return result;
+    }
+
+    public static <T> MetaRestResult<T> returnError(String errorMessage, T date) {
+        MetaRestResult<T> result = returnResult(date);
+        result.setMessage(errorMessage);
+        result.setCode(Constants.MetaRestCode.err);
+        return result;
+    }
+
+    private static <T> MetaRestResult<T> returnResult(T data) {
+        MetaRestResult<T> result = new MetaRestResult<>();
+        result.setData(data);
+        return result;
+    }
+
+
+}

+ 21 - 0
src/main/java/com/izouma/meta/web/MetaCacheable.java

@@ -0,0 +1,21 @@
+package com.izouma.meta.web;
+
+import com.izouma.meta.dto.MetaRestResult;
+import com.izouma.meta.websocket.WebSocket;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/metaCacheable")
+@AllArgsConstructor
+public class MetaCacheable {
+
+    private WebSocket webSocket;
+
+    @PostMapping("/clearMMO")
+    public MetaRestResult clearMMO(String userId, String regionId, String cityId) {
+        return webSocket.clearMMO(userId, regionId, cityId);
+    }
+}

+ 14 - 0
src/main/java/com/izouma/meta/websocket/WebSocket.java

@@ -6,6 +6,7 @@ import com.izouma.meta.config.Constants;
 import com.izouma.meta.domain.MetaMMOLoginInfo;
 import com.izouma.meta.dto.MMOMessage;
 import com.izouma.meta.dto.MMOSingleMessage;
+import com.izouma.meta.dto.MetaRestResult;
 import com.izouma.meta.dto.MetaServiceResult;
 import com.izouma.meta.repo.MetaMMOLoginInfoRepo;
 import com.izouma.meta.utils.ApplicationContextUtil;
@@ -399,4 +400,17 @@ public class WebSocket {
         }
         return otherUserIds;
     }
+
+    public MetaRestResult clearMMO(String userId, String regionId, String cityId) {
+        init();
+        if (clients.containsKey(REDIS_PREFIX.concat(userId))) {
+            String errMsg = String.format("userId[%S]用户mmo连接正常,无法清除缓存!", userId);
+            log.info(errMsg);
+            return MetaRestResult.returnError(errMsg);
+        }
+        String key = cityId.concat(":").concat(regionId);
+        redisTemplate.delete(REDIS_PREFIX.concat(userId));
+        redisTemplate.opsForList().remove(REDIS_PREFIX.concat(key), 0, REDIS_PREFIX.concat(userId));
+        return MetaRestResult.returnSuccess("清除成功");
+    }
 }