1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
|
@RestController @RequestMapping("/api/v1") public class MultiTenantController { @Autowired private TenantService tenantService; @Autowired private TenantContextResolver tenantContextResolver;
@GetMapping("/tenant/info") public ResponseEntity<Map<String, Object>> getTenantInfo() { try { TenantInfo tenantInfo = TenantContext.getTenantInfo(); Map<String, Object> response = new HashMap<>(); response.put("success", true); response.put("tenantInfo", tenantInfo); return ResponseEntity.ok(response); } catch (Exception e) { log.error("获取租户信息失败", e); Map<String, Object> response = new HashMap<>(); response.put("success", false); response.put("message", "获取租户信息失败: " + e.getMessage()); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(response); } }
@PostMapping("/tenant/switch") public ResponseEntity<Map<String, Object>> switchTenant(@RequestParam String tenantId) { try { if (tenantId == null || tenantId.isEmpty()) { Map<String, Object> response = new HashMap<>(); response.put("success", false); response.put("message", "租户ID不能为空"); return ResponseEntity.badRequest().body(response); } TenantInfo tenantInfo = tenantService.getTenantInfo(tenantId); if (tenantInfo == null) { Map<String, Object> response = new HashMap<>(); response.put("success", false); response.put("message", "租户不存在"); return ResponseEntity.badRequest().body(response); } TenantContext.setTenantId(tenantId); TenantContext.setTenantInfo(tenantInfo); Map<String, Object> response = new HashMap<>(); response.put("success", true); response.put("message", "租户切换成功"); response.put("tenantInfo", tenantInfo); return ResponseEntity.ok(response); } catch (Exception e) { log.error("切换租户失败: tenantId={}", tenantId, e); Map<String, Object> response = new HashMap<>(); response.put("success", false); response.put("message", "切换租户失败: " + e.getMessage()); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(response); } }
@GetMapping("/service/status") public ResponseEntity<Map<String, Object>> getServiceStatus() { try { Map<String, Object> status = new HashMap<>(); status.put("serviceName", "multi-tenant-service"); status.put("version", "1.0.0"); status.put("status", "UP"); status.put("timestamp", LocalDateTime.now()); status.put("tenantId", TenantContext.getTenantId()); Map<String, Object> response = new HashMap<>(); response.put("success", true); response.put("status", status); return ResponseEntity.ok(response); } catch (Exception e) { log.error("获取服务状态失败", e); Map<String, Object> response = new HashMap<>(); response.put("success", false); response.put("message", "获取服务状态失败: " + e.getMessage()); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(response); } } }
|