- 实现了本地IM缓存功能,支持会话、消息历史和草稿的存储 - 开发了聊天界面UI组件,包含消息列表、输入框和搜索功能 - 创建了聊天相关的ViewModel,处理消息收发和状态管理 - 构建了会话列表界面,支持置顶、免打扰和删除操作 - 集成了群组功能,实现群聊管理和群设置界面 - 添加了实时消息推送和会话状态同步机制
44 行
1.6 KiB
Java
44 行
1.6 KiB
Java
package com.xuqm.tenant.controller;
|
|
|
|
import com.xuqm.common.model.ApiResponse;
|
|
import com.xuqm.tenant.entity.AppEntity;
|
|
import com.xuqm.tenant.service.SdkAppProvisioningService;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.http.ResponseEntity;
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
import org.springframework.web.bind.annotation.PathVariable;
|
|
import org.springframework.web.bind.annotation.RequestHeader;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
import java.util.Map;
|
|
|
|
@RestController
|
|
@RequestMapping("/api/internal/sdk")
|
|
public class InternalSdkController {
|
|
|
|
private final SdkAppProvisioningService provisioningService;
|
|
|
|
@Value("${sdk.internal-token:xuqm-internal-token}")
|
|
private String internalToken;
|
|
|
|
public InternalSdkController(SdkAppProvisioningService provisioningService) {
|
|
this.provisioningService = provisioningService;
|
|
}
|
|
|
|
@GetMapping("/apps/{appId}/secret")
|
|
public ResponseEntity<ApiResponse<Map<String, String>>> getAppSecret(
|
|
@PathVariable String appId,
|
|
@RequestHeader(value = "X-Internal-Token", required = false) String token) {
|
|
if (token == null || !internalToken.equals(token)) {
|
|
return ResponseEntity.status(403)
|
|
.body(ApiResponse.error(403, "Forbidden"));
|
|
}
|
|
AppEntity app = provisioningService.resolveApp(appId);
|
|
return ResponseEntity.ok(ApiResponse.success(Map.of(
|
|
"appId", app.getAppKey(),
|
|
"appSecret", app.getAppSecret()
|
|
)));
|
|
}
|
|
}
|