You've already forked FrameTour-BE
Compare commits
4 Commits
1727619b29
...
e8c645a3c0
Author | SHA1 | Date | |
---|---|---|---|
e8c645a3c0 | |||
fe8068b3d9 | |||
c689496130 | |||
7e16ad35e7 |
@@ -72,27 +72,14 @@ public class AppScenicController {
|
||||
public ApiResponse<ScenicConfigResp> getConfig(@PathVariable Long id){
|
||||
ScenicConfigManager scenicConfig = scenicRepository.getScenicConfigManager(id);
|
||||
ScenicConfigResp resp = new ScenicConfigResp();
|
||||
resp.setBookRoutine(scenicConfig.getInteger("book_routine"));
|
||||
resp.setForceFinishTime(scenicConfig.getInteger("force_finish_time"));
|
||||
resp.setTourTime(scenicConfig.getInteger("tour_time"));
|
||||
resp.setSampleStoreDay(scenicConfig.getInteger("sample_store_day"));
|
||||
resp.setFaceStoreDay(scenicConfig.getInteger("face_store_day"));
|
||||
resp.setVideoStoreDay(scenicConfig.getInteger("video_store_day"));
|
||||
resp.setAllFree(scenicConfig.getBoolean("all_free"));
|
||||
resp.setDisableSourceVideo(scenicConfig.getBoolean("disable_source_video"));
|
||||
resp.setDisableSourceImage(scenicConfig.getBoolean("disable_source_image"));
|
||||
resp.setAntiScreenRecordType(scenicConfig.getInteger("anti_screen_record_type"));
|
||||
resp.setVideoSourceStoreDay(scenicConfig.getInteger("video_source_store_day"));
|
||||
resp.setImageSourceStoreDay(scenicConfig.getInteger("image_source_store_day"));
|
||||
resp.setUserSourceExpireDay(scenicConfig.getInteger("user_source_expire_day"));
|
||||
resp.setBrokerDirectRate(scenicConfig.getBigDecimal("broker_direct_rate"));
|
||||
resp.setVideoSourcePackHint(scenicConfig.getString("video_source_pack_hint"));
|
||||
resp.setImageSourcePackHint(scenicConfig.getString("image_source_pack_hint"));
|
||||
resp.setVoucherEnable(scenicConfig.getBoolean("voucher_enable", false));
|
||||
resp.setEnableVoucher(scenicConfig.getBoolean("voucher_enable", false)); // compactible
|
||||
resp.setGroupingEnable(scenicConfig.getBoolean("grouping_enable", false));
|
||||
resp.setShowPhotoWhenWaiting(scenicConfig.getBoolean("show_photo_when_waiting", false));
|
||||
resp.setWatermarkUrl(scenicConfig.getString("watermark_url"));
|
||||
resp.setVideoStoreDay(scenicConfig.getInteger("video_store_day"));
|
||||
resp.setAntiScreenRecordType(scenicConfig.getInteger("anti_screen_record_type"));
|
||||
resp.setGroupingEnable(scenicConfig.getBoolean("grouping_enable", false));
|
||||
resp.setVoucherEnable(scenicConfig.getBoolean("voucher_enable", false));
|
||||
resp.setShowPhotoWhenWaiting(scenicConfig.getBoolean("show_photo_when_waiting", false));
|
||||
resp.setImageSourcePackHint(scenicConfig.getString("image_source_pack_hint"));
|
||||
resp.setVideoSourcePackHint(scenicConfig.getString("video_source_pack_hint"));
|
||||
return ApiResponse.success(resp);
|
||||
}
|
||||
|
||||
|
@@ -63,34 +63,6 @@ public class DeviceV2Controller {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设备V2带配置信息分页列表
|
||||
*/
|
||||
@GetMapping("/with-config")
|
||||
public ApiResponse<PageResponse<DeviceV2WithConfigDTO>> listDevicesWithConfig(@RequestParam(defaultValue = "1") Integer page,
|
||||
@RequestParam(defaultValue = "10") Integer pageSize,
|
||||
@RequestParam(required = false) String name,
|
||||
@RequestParam(required = false) String no,
|
||||
@RequestParam(required = false) String type,
|
||||
@RequestParam(required = false) Integer isActive,
|
||||
@RequestParam(required = false) Long scenicId) {
|
||||
log.info("分页查询设备带配置信息列表, page: {}, pageSize: {}, name: {}, no: {}, type: {}, isActive: {}, scenicId: {}",
|
||||
page, pageSize, name, no, type, isActive, scenicId);
|
||||
|
||||
// 参数验证:限制pageSize最大值为100
|
||||
if (pageSize > 100) {
|
||||
pageSize = 100;
|
||||
}
|
||||
|
||||
try {
|
||||
PageResponse<DeviceV2WithConfigDTO> response = deviceIntegrationService.listDevicesWithConfig(page, pageSize, name, no, type, isActive, scenicId);
|
||||
return ApiResponse.success(response);
|
||||
} catch (Exception e) {
|
||||
log.error("分页查询设备带配置信息列表失败", e);
|
||||
return ApiResponse.fail("分页查询设备带配置信息列表失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据ID获取设备信息
|
||||
*/
|
||||
@@ -105,20 +77,6 @@ public class DeviceV2Controller {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据ID获取设备带配置信息
|
||||
*/
|
||||
@GetMapping("/{id}/with-config")
|
||||
public ApiResponse<DeviceV2WithConfigDTO> getDeviceWithConfig(@PathVariable Long id) {
|
||||
try {
|
||||
DeviceV2WithConfigDTO device = deviceIntegrationService.getDeviceWithConfig(id);
|
||||
return ApiResponse.success(device);
|
||||
} catch (Exception e) {
|
||||
log.error("获取设备配置信息失败, id: {}", id, e);
|
||||
return ApiResponse.fail("获取设备配置信息失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据设备编号获取设备信息
|
||||
*/
|
||||
@@ -133,20 +91,6 @@ public class DeviceV2Controller {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据设备编号获取设备带配置信息
|
||||
*/
|
||||
@GetMapping("/no/{no}/with-config")
|
||||
public ApiResponse<DeviceV2WithConfigDTO> getDeviceWithConfigByNo(@PathVariable String no) {
|
||||
try {
|
||||
DeviceV2WithConfigDTO device = deviceIntegrationService.getDeviceWithConfigByNo(no);
|
||||
return ApiResponse.success(device);
|
||||
} catch (Exception e) {
|
||||
log.error("根据设备编号获取设备配置信息失败, no: {}", no, e);
|
||||
return ApiResponse.fail("根据设备编号获取设备配置信息失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据设备ID获取设备在线状态
|
||||
*/
|
||||
@@ -327,20 +271,6 @@ public class DeviceV2Controller {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取设备扁平化配置
|
||||
*/
|
||||
@GetMapping("/{id}/flat-config")
|
||||
public ApiResponse<Map<String, Object>> getDeviceFlatConfig(@PathVariable Long id) {
|
||||
try {
|
||||
Map<String, Object> config = deviceConfigIntegrationService.getDeviceFlatConfig(id);
|
||||
return ApiResponse.success(config);
|
||||
} catch (Exception e) {
|
||||
log.error("获取设备扁平化配置失败, deviceId: {}", id, e);
|
||||
return ApiResponse.fail("获取设备扁平化配置失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据配置键获取配置
|
||||
*/
|
||||
@@ -371,21 +301,6 @@ public class DeviceV2Controller {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据设备编号获取扁平化配置
|
||||
*/
|
||||
@GetMapping("/no/{no}/flat-config")
|
||||
public ApiResponse<Map<String, Object>> getDeviceFlatConfigByNo(@PathVariable String no) {
|
||||
log.info("根据设备编号获取扁平化配置, deviceNo: {}", no);
|
||||
try {
|
||||
Map<String, Object> config = deviceConfigIntegrationService.getDeviceFlatConfigByNo(no);
|
||||
return ApiResponse.success(config);
|
||||
} catch (Exception e) {
|
||||
log.error("根据设备编号获取扁平化配置失败, deviceNo: {}", no, e);
|
||||
return ApiResponse.fail("根据设备编号获取扁平化配置失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建设备配置
|
||||
*/
|
||||
|
@@ -71,30 +71,6 @@ public class ScenicV2Controller {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 景区V2带配置信息分页列表
|
||||
*/
|
||||
@GetMapping("/with-config")
|
||||
public ApiResponse<PageResponse<ScenicV2WithConfigDTO>> listScenicsWithConfig(@RequestParam(defaultValue = "1") Integer page,
|
||||
@RequestParam(defaultValue = "10") Integer pageSize,
|
||||
@RequestParam(required = false) Integer status,
|
||||
@RequestParam(required = false) String name) {
|
||||
log.info("分页查询景区带配置信息列表, page: {}, pageSize: {}, status: {}, name: {}", page, pageSize, status, name);
|
||||
|
||||
// 参数验证:限制pageSize最大值为100
|
||||
if (pageSize > 100) {
|
||||
pageSize = 100;
|
||||
}
|
||||
|
||||
try {
|
||||
PageResponse<ScenicV2WithConfigDTO> response = scenicIntegrationService.listScenicsWithConfig(page, pageSize, status, name);
|
||||
return ApiResponse.success(response);
|
||||
} catch (Exception e) {
|
||||
log.error("分页查询景区带配置信息列表失败", e);
|
||||
return ApiResponse.fail("分页查询景区带配置信息列表失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询单个景区详情
|
||||
*/
|
||||
@@ -192,36 +168,6 @@ public class ScenicV2Controller {
|
||||
|
||||
// ========== 景区配置管理 ==========
|
||||
|
||||
/**
|
||||
* 获取景区及其配置信息
|
||||
*/
|
||||
@GetMapping("/{scenicId}/with-config")
|
||||
public ApiResponse<ScenicV2WithConfigDTO> getScenicWithConfig(@PathVariable Long scenicId) {
|
||||
log.info("获取景区配置信息, scenicId: {}", scenicId);
|
||||
try {
|
||||
ScenicV2WithConfigDTO scenic = scenicIntegrationService.getScenicWithConfig(scenicId);
|
||||
return ApiResponse.success(scenic);
|
||||
} catch (Exception e) {
|
||||
log.error("获取景区配置信息失败, scenicId: {}", scenicId, e);
|
||||
return ApiResponse.fail("获取景区配置信息失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取景区扁平化配置
|
||||
*/
|
||||
@GetMapping("/{scenicId}/flat-config")
|
||||
public ApiResponse<Map<String, Object>> getScenicFlatConfig(@PathVariable Long scenicId) {
|
||||
log.info("获取景区扁平化配置, scenicId: {}", scenicId);
|
||||
try {
|
||||
Map<String, Object> config = scenicIntegrationService.getScenicFlatConfig(scenicId);
|
||||
return ApiResponse.success(config);
|
||||
} catch (Exception e) {
|
||||
log.error("获取景区扁平化配置失败, scenicId: {}", scenicId, e);
|
||||
return ApiResponse.fail("获取景区扁平化配置失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取景区配置列表
|
||||
*/
|
||||
@@ -316,20 +262,4 @@ public class ScenicV2Controller {
|
||||
return ApiResponse.fail("批量更新配置失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 扁平化批量更新景区配置
|
||||
*/
|
||||
@PutMapping("/{scenicId}/flat-config")
|
||||
public ApiResponse<BatchUpdateResponse> batchFlatUpdateConfigs(@PathVariable Long scenicId,
|
||||
@RequestBody Map<String, Object> configs) {
|
||||
log.info("扁平化批量更新景区配置, scenicId: {}, configs count: {}", scenicId, configs.size());
|
||||
try {
|
||||
BatchUpdateResponse response = scenicConfigIntegrationService.batchFlatUpdateConfigs(scenicId, configs);
|
||||
return ApiResponse.success(response);
|
||||
} catch (Exception e) {
|
||||
log.error("扁平化批量更新景区配置失败, scenicId: {}", scenicId, e);
|
||||
return ApiResponse.fail("扁平化批量更新配置失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
@@ -30,18 +30,6 @@ public interface DeviceConfigV2Client {
|
||||
CommonResponse<DeviceConfigV2DTO> getDeviceConfigByKey(@PathVariable("deviceId") Long deviceId,
|
||||
@PathVariable("configKey") String configKey);
|
||||
|
||||
/**
|
||||
* 获取设备扁平化配置
|
||||
*/
|
||||
@GetMapping("/{deviceId}/flat")
|
||||
CommonResponse<Map<String, Object>> getDeviceFlatConfig(@PathVariable("deviceId") Long deviceId);
|
||||
|
||||
/**
|
||||
* 根据设备编号获取设备扁平化配置
|
||||
*/
|
||||
@GetMapping("/no/{no}/flat")
|
||||
CommonResponse<Map<String, Object>> getDeviceFlatConfigByNo(@PathVariable("no") String no);
|
||||
|
||||
/**
|
||||
* 创建设备配置
|
||||
*/
|
||||
|
@@ -21,18 +21,6 @@ public interface DeviceV2Client {
|
||||
@GetMapping("/no/{no}")
|
||||
CommonResponse<DeviceV2DTO> getDeviceByNo(@PathVariable("no") String no);
|
||||
|
||||
/**
|
||||
* 获取设备详细信息(含配置)
|
||||
*/
|
||||
@GetMapping("/{id}/with-config")
|
||||
CommonResponse<DeviceV2WithConfigDTO> getDeviceWithConfig(@PathVariable("id") Long id);
|
||||
|
||||
/**
|
||||
* 根据设备编号获取设备详细信息(含配置)
|
||||
*/
|
||||
@GetMapping("/no/{no}/with-config")
|
||||
CommonResponse<DeviceV2WithConfigDTO> getDeviceByNoWithConfig(@PathVariable("no") String no);
|
||||
|
||||
/**
|
||||
* 创建设备
|
||||
*/
|
||||
@@ -65,19 +53,6 @@ public interface DeviceV2Client {
|
||||
@RequestParam(value = "isActive", required = false) Integer isActive,
|
||||
@RequestParam(value = "scenicId", required = false) Long scenicId);
|
||||
|
||||
/**
|
||||
* 分页获取设备列表(含配置)
|
||||
*/
|
||||
@GetMapping("/with-config")
|
||||
CommonResponse<PageResponse<DeviceV2WithConfigDTO>> listDevicesWithConfig(
|
||||
@RequestParam(value = "page", defaultValue = "1") Integer page,
|
||||
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
|
||||
@RequestParam(value = "name", required = false) String name,
|
||||
@RequestParam(value = "no", required = false) String no,
|
||||
@RequestParam(value = "type", required = false) String type,
|
||||
@RequestParam(value = "isActive", required = false) Integer isActive,
|
||||
@RequestParam(value = "scenicId", required = false) Long scenicId);
|
||||
|
||||
/**
|
||||
* 根据配置条件筛选设备
|
||||
*/
|
||||
|
@@ -42,10 +42,6 @@ public class DeviceIntegrationExample {
|
||||
DeviceV2DTO deviceByNo = deviceService.getDeviceByNo("CAM001");
|
||||
log.info("根据编号获取设备: {}", deviceByNo.getName());
|
||||
|
||||
// 获取设备详细信息(含配置)
|
||||
DeviceV2WithConfigDTO deviceWithConfig = deviceService.getDeviceWithConfig(ipcDevice.getId());
|
||||
log.info("获取设备配置: {}", deviceWithConfig.getName());
|
||||
|
||||
// 分页查询景区设备列表
|
||||
PageResponse<DeviceV2DTO> deviceList = deviceService.getScenicIpcDevices(1001L, 1, 10);
|
||||
log.info("景区设备列表: 总数={}", deviceList.getTotal());
|
||||
@@ -106,10 +102,6 @@ public class DeviceIntegrationExample {
|
||||
List<DeviceConfigV2DTO> configs = deviceConfigService.getDeviceConfigs(deviceId);
|
||||
log.info("设备配置数量: {}", configs.size());
|
||||
|
||||
// 获取扁平化配置
|
||||
Map<String, Object> flatConfig = deviceConfigService.getDeviceFlatConfig(deviceId);
|
||||
log.info("扁平化配置项数: {}", flatConfig.size());
|
||||
|
||||
// 使用批量配置API
|
||||
BatchDeviceConfigRequest builderRequest = deviceConfigService.createBatchConfigBuilder()
|
||||
.build();
|
||||
|
@@ -43,10 +43,6 @@ public class DeviceIntegrationFallbackExample {
|
||||
DeviceV2DTO deviceByNo = deviceService.getDeviceByNo(deviceNo);
|
||||
log.info("根据设备号获取设备成功: {}", deviceByNo.getName());
|
||||
|
||||
// 获取设备配置 - 自动降级
|
||||
DeviceV2WithConfigDTO deviceWithConfig = deviceService.getDeviceWithConfig(deviceId);
|
||||
log.info("获取设备配置成功,配置数量: {}", deviceWithConfig.getConfig().size());
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("所有降级策略失败", e);
|
||||
}
|
||||
@@ -83,14 +79,11 @@ public class DeviceIntegrationFallbackExample {
|
||||
log.info("=== 降级缓存管理示例 ===");
|
||||
|
||||
String deviceCacheKey = "device:1001";
|
||||
String configCacheKey = "device:flat:config:1001";
|
||||
|
||||
// 检查降级缓存状态
|
||||
boolean hasDeviceCache = fallbackService.hasFallbackCache(SERVICE_NAME, deviceCacheKey);
|
||||
boolean hasConfigCache = fallbackService.hasFallbackCache(SERVICE_NAME, configCacheKey);
|
||||
|
||||
log.info("设备降级缓存存在: {}", hasDeviceCache);
|
||||
log.info("配置降级缓存存在: {}", hasConfigCache);
|
||||
|
||||
// 清理特定的降级缓存
|
||||
if (hasDeviceCache) {
|
||||
|
@@ -39,31 +39,6 @@ public class DeviceConfigIntegrationService {
|
||||
return handleResponse(response, "根据键获取设备配置失败");
|
||||
}
|
||||
|
||||
public Map<String, Object> getDeviceFlatConfig(Long deviceId) {
|
||||
return fallbackService.executeWithFallback(
|
||||
SERVICE_NAME,
|
||||
"device:flat:config:" + deviceId,
|
||||
() -> {
|
||||
CommonResponse<Map<String, Object>> response = deviceConfigV2Client.getDeviceFlatConfig(deviceId);
|
||||
return handleResponse(response, "获取设备扁平化配置失败");
|
||||
},
|
||||
Map.class
|
||||
);
|
||||
}
|
||||
|
||||
public Map<String, Object> getDeviceFlatConfigByNo(String deviceNo) {
|
||||
log.debug("根据设备编号获取扁平化配置, deviceNo: {}", deviceNo);
|
||||
return fallbackService.executeWithFallback(
|
||||
SERVICE_NAME,
|
||||
"device:flat:config:no:" + deviceNo,
|
||||
() -> {
|
||||
CommonResponse<Map<String, Object>> response = deviceConfigV2Client.getDeviceFlatConfigByNo(deviceNo);
|
||||
return handleResponse(response, "根据设备编号获取扁平化配置失败");
|
||||
},
|
||||
Map.class
|
||||
);
|
||||
}
|
||||
|
||||
public DeviceConfigV2DTO createDeviceConfig(Long deviceId, CreateDeviceConfigRequest request) {
|
||||
log.debug("创建设备配置, deviceId: {}, configKey: {}", deviceId, request.getConfigKey());
|
||||
CommonResponse<DeviceConfigV2DTO> response = deviceConfigV2Client.createDeviceConfig(deviceId, request);
|
||||
|
@@ -48,32 +48,6 @@ public class DeviceIntegrationService {
|
||||
);
|
||||
}
|
||||
|
||||
public DeviceV2WithConfigDTO getDeviceWithConfig(Long deviceId) {
|
||||
log.debug("获取设备配置信息, deviceId: {}", deviceId);
|
||||
return fallbackService.executeWithFallback(
|
||||
SERVICE_NAME,
|
||||
"device:config:" + deviceId,
|
||||
() -> {
|
||||
CommonResponse<DeviceV2WithConfigDTO> response = deviceV2Client.getDeviceWithConfig(deviceId);
|
||||
return handleResponse(response, "获取设备配置信息失败");
|
||||
},
|
||||
DeviceV2WithConfigDTO.class
|
||||
);
|
||||
}
|
||||
|
||||
public DeviceV2WithConfigDTO getDeviceWithConfigByNo(String deviceNo) {
|
||||
log.debug("根据设备编号获取设备配置信息, deviceNo: {}", deviceNo);
|
||||
return fallbackService.executeWithFallback(
|
||||
SERVICE_NAME,
|
||||
"device:config:no:" + deviceNo,
|
||||
() -> {
|
||||
CommonResponse<DeviceV2WithConfigDTO> response = deviceV2Client.getDeviceByNoWithConfig(deviceNo);
|
||||
return handleResponse(response, "根据设备编号获取设备配置信息失败");
|
||||
},
|
||||
DeviceV2WithConfigDTO.class
|
||||
);
|
||||
}
|
||||
|
||||
public DeviceV2DTO createDevice(CreateDeviceRequest request) {
|
||||
log.debug("创建设备, name: {}, no: {}, type: {}", request.getName(), request.getNo(), request.getType());
|
||||
CommonResponse<DeviceV2DTO> response = deviceV2Client.createDevice(request);
|
||||
@@ -101,15 +75,6 @@ public class DeviceIntegrationService {
|
||||
return handleResponse(response, "分页查询设备列表失败");
|
||||
}
|
||||
|
||||
public PageResponse<DeviceV2WithConfigDTO> listDevicesWithConfig(Integer page, Integer pageSize, String name, String no,
|
||||
String type, Integer isActive, Long scenicId) {
|
||||
log.debug("分页查询设备带配置列表, page: {}, pageSize: {}, name: {}, no: {}, type: {}, isActive: {}, scenicId: {}",
|
||||
page, pageSize, name, no, type, isActive, scenicId);
|
||||
CommonResponse<PageResponse<DeviceV2WithConfigDTO>> response = deviceV2Client.listDevicesWithConfig(
|
||||
page, pageSize, name, no, type, isActive, scenicId);
|
||||
return handleResponse(response, "分页查询设备带配置列表失败");
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建IPC摄像头设备
|
||||
*/
|
||||
|
@@ -18,12 +18,6 @@ public interface RenderWorkerV2Client {
|
||||
@GetMapping("/{id}")
|
||||
CommonResponse<RenderWorkerV2DTO> getWorker(@PathVariable("id") Long id);
|
||||
|
||||
/**
|
||||
* 获取工作器含配置信息
|
||||
*/
|
||||
@GetMapping("/{id}/with-config")
|
||||
CommonResponse<RenderWorkerV2WithConfigDTO> getWorkerWithConfig(@PathVariable("id") Long id);
|
||||
|
||||
/**
|
||||
* 创建工作器
|
||||
*/
|
||||
@@ -52,25 +46,9 @@ public interface RenderWorkerV2Client {
|
||||
@RequestParam(required = false) Integer isEnabled,
|
||||
@RequestParam(required = false) String name);
|
||||
|
||||
/**
|
||||
* 分页查询工作器列表(含配置信息)
|
||||
*/
|
||||
@GetMapping("/with-config")
|
||||
CommonResponse<PageResponse<RenderWorkerV2WithConfigDTO>> listWorkersWithConfig(
|
||||
@RequestParam(defaultValue = "1") Integer page,
|
||||
@RequestParam(defaultValue = "10") Integer pageSize,
|
||||
@RequestParam(required = false) Integer isEnabled,
|
||||
@RequestParam(required = false) String name);
|
||||
|
||||
/**
|
||||
* 根据key获取工作器核心信息
|
||||
*/
|
||||
@GetMapping("/key/{key}")
|
||||
CommonResponse<RenderWorkerV2DTO> getWorkerByKey(@PathVariable("key") String key);
|
||||
|
||||
/**
|
||||
* 根据key获取工作器完整信息(含配置)
|
||||
*/
|
||||
@GetMapping("/key/{key}/with-config")
|
||||
CommonResponse<RenderWorkerV2WithConfigDTO> getWorkerWithConfigByKey(@PathVariable("key") String key);
|
||||
}
|
@@ -70,7 +70,7 @@ public class RenderWorkerConfigIntegrationService {
|
||||
log.debug("获取渲染工作器平铺配置, workerId: {}", workerId);
|
||||
return fallbackService.executeWithFallback(
|
||||
SERVICE_NAME,
|
||||
"worker:flat:config:" + workerId,
|
||||
"worker:config:" + workerId,
|
||||
() -> {
|
||||
List<RenderWorkerConfigV2DTO> configs = getWorkerConfigsInternal(workerId);
|
||||
return flattenConfigs(configs);
|
||||
|
@@ -42,22 +42,6 @@ public class RenderWorkerIntegrationService {
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取工作器详细信息(含配置)(带降级)
|
||||
*/
|
||||
public RenderWorkerV2WithConfigDTO getWorkerWithConfig(Long id) {
|
||||
log.debug("获取渲染工作器详细信息, id: {}", id);
|
||||
return fallbackService.executeWithFallback(
|
||||
SERVICE_NAME,
|
||||
"worker:config:" + id,
|
||||
() -> {
|
||||
CommonResponse<RenderWorkerV2WithConfigDTO> response = renderWorkerV2Client.getWorkerWithConfig(id);
|
||||
return handleResponse(response, "获取渲染工作器详细信息失败");
|
||||
},
|
||||
RenderWorkerV2WithConfigDTO.class
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建工作器(直接调用,不降级)
|
||||
*/
|
||||
@@ -96,18 +80,6 @@ public class RenderWorkerIntegrationService {
|
||||
return handleResponse(response, "查询渲染工作器列表失败");
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询工作器列表(含配置信息)(不降级)
|
||||
*/
|
||||
public PageResponse<RenderWorkerV2WithConfigDTO> listWorkersWithConfig(Integer page, Integer pageSize,
|
||||
Integer isEnabled, String name) {
|
||||
log.debug("分页查询渲染工作器列表(含配置), page: {}, pageSize: {}, isEnabled: {}, name: {}",
|
||||
page, pageSize, isEnabled, name);
|
||||
CommonResponse<PageResponse<RenderWorkerV2WithConfigDTO>> response =
|
||||
renderWorkerV2Client.listWorkersWithConfig(page, pageSize, isEnabled, name);
|
||||
return handleResponse(response, "查询渲染工作器列表(含配置)失败");
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据key获取工作器核心信息(带降级)
|
||||
*/
|
||||
@@ -124,22 +96,6 @@ public class RenderWorkerIntegrationService {
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据key获取工作器详细信息(含配置)(带降级)
|
||||
*/
|
||||
public RenderWorkerV2WithConfigDTO getWorkerWithConfigByKey(String key) {
|
||||
log.debug("根据key获取渲染工作器详细信息, key: {}", key);
|
||||
return fallbackService.executeWithFallback(
|
||||
SERVICE_NAME,
|
||||
"worker:key:config:" + key,
|
||||
() -> {
|
||||
CommonResponse<RenderWorkerV2WithConfigDTO> response = renderWorkerV2Client.getWorkerWithConfigByKey(key);
|
||||
return handleResponse(response, "根据key获取渲染工作器详细信息失败");
|
||||
},
|
||||
RenderWorkerV2WithConfigDTO.class
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理通用响应
|
||||
*/
|
||||
|
@@ -18,9 +18,6 @@ public interface ScenicConfigV2Client {
|
||||
CommonResponse<ScenicConfigV2DTO> getConfigByKey(@PathVariable("scenicId") Long scenicId,
|
||||
@PathVariable("configKey") String configKey);
|
||||
|
||||
@GetMapping("/{scenicId}/keys")
|
||||
CommonResponse<Map<String, Object>> getFlatConfigs(@PathVariable("scenicId") Long scenicId);
|
||||
|
||||
@PostMapping("/{scenicId}")
|
||||
CommonResponse<ScenicConfigV2DTO> createConfig(@PathVariable("scenicId") Long scenicId,
|
||||
@RequestBody CreateConfigRequest request);
|
||||
@@ -37,8 +34,4 @@ public interface ScenicConfigV2Client {
|
||||
@PostMapping("/{scenicId}/batch")
|
||||
CommonResponse<BatchUpdateResponse> batchUpdateConfigs(@PathVariable("scenicId") Long scenicId,
|
||||
@RequestBody BatchConfigRequest request);
|
||||
|
||||
@PostMapping("/{scenicId}/batchFlatUpdate")
|
||||
CommonResponse<BatchUpdateResponse> batchFlatUpdateConfigs(@PathVariable("scenicId") Long scenicId,
|
||||
@RequestBody Map<String, Object> configs);
|
||||
}
|
@@ -19,10 +19,6 @@ public interface ScenicV2Client {
|
||||
@GetMapping("/{scenicId}")
|
||||
CommonResponse<ScenicV2DTO> getScenic(@PathVariable("scenicId") Long scenicId);
|
||||
|
||||
@GetMapping("/{scenicId}/with-config")
|
||||
CommonResponse<ScenicV2WithConfigDTO> getScenicWithConfig(@PathVariable("scenicId") Long scenicId);
|
||||
|
||||
|
||||
@PostMapping("/")
|
||||
CommonResponse<ScenicV2DTO> createScenic(@RequestBody CreateScenicRequest request);
|
||||
|
||||
@@ -41,10 +37,4 @@ public interface ScenicV2Client {
|
||||
@RequestParam(defaultValue = "10") Integer pageSize,
|
||||
@RequestParam(required = false) Integer status,
|
||||
@RequestParam(required = false) String name);
|
||||
|
||||
@GetMapping("/with-config")
|
||||
CommonResponse<PageResponse<ScenicV2WithConfigDTO>> listScenicsWithConfig(@RequestParam(defaultValue = "1") Integer page,
|
||||
@RequestParam(defaultValue = "10") Integer pageSize,
|
||||
@RequestParam(required = false) Integer status,
|
||||
@RequestParam(required = false) String name);
|
||||
}
|
@@ -94,14 +94,6 @@ public class ScenicIntegrationExample {
|
||||
ScenicV2DTO scenic = scenicIntegrationService.getScenic(scenicId);
|
||||
log.info("获取景区成功: {}", scenic.getName());
|
||||
|
||||
// 获取景区配置信息 - 自动降级
|
||||
ScenicV2WithConfigDTO scenicWithConfig = scenicIntegrationService.getScenicWithConfig(scenicId);
|
||||
log.info("获取景区配置成功,配置数量: {}", scenicWithConfig.getConfig().size());
|
||||
|
||||
// 获取扁平化配置 - 自动降级
|
||||
Map<String, Object> flatConfig = scenicIntegrationService.getScenicFlatConfig(scenicId);
|
||||
log.info("获取扁平化配置成功,配置项数量: {}", flatConfig.size());
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("景区操作降级失败", e);
|
||||
}
|
||||
@@ -116,16 +108,22 @@ public class ScenicIntegrationExample {
|
||||
Long scenicId = 2001L;
|
||||
|
||||
try {
|
||||
// 获取扁平化配置 - 自动降级
|
||||
Map<String, Object> flatConfigs = scenicConfigIntegrationService.getFlatConfigs(scenicId);
|
||||
log.info("获取扁平化配置成功,配置项数量: {}", flatConfigs.size());
|
||||
// 获取配置列表 - 自动降级
|
||||
var configs = scenicConfigIntegrationService.listConfigs(scenicId);
|
||||
log.info("获取配置列表成功,配置项数量: {}", configs.size());
|
||||
|
||||
// 批量更新配置 - 直接操作,失败时抛出异常
|
||||
Map<String, Object> updates = new HashMap<>();
|
||||
updates.put("max_visitors", "5000");
|
||||
updates.put("opening_hours", "08:00-18:00");
|
||||
BatchConfigRequest batchRequest = new BatchConfigRequest();
|
||||
// 添加配置项示例
|
||||
BatchConfigRequest.BatchConfigItem item1 = new BatchConfigRequest.BatchConfigItem();
|
||||
item1.setConfigKey("max_visitors");
|
||||
item1.setConfigValue("5000");
|
||||
BatchConfigRequest.BatchConfigItem item2 = new BatchConfigRequest.BatchConfigItem();
|
||||
item2.setConfigKey("opening_hours");
|
||||
item2.setConfigValue("08:00-18:00");
|
||||
batchRequest.setConfigs(java.util.Arrays.asList(item1, item2));
|
||||
|
||||
BatchUpdateResponse result = scenicConfigIntegrationService.batchFlatUpdateConfigs(scenicId, updates);
|
||||
BatchUpdateResponse result = scenicConfigIntegrationService.batchUpdateConfigs(scenicId, batchRequest);
|
||||
log.info("批量更新配置完成: 成功 {}, 失败 {}", result.getSuccess(), result.getFailed());
|
||||
|
||||
} catch (Exception e) {
|
||||
@@ -140,14 +138,11 @@ public class ScenicIntegrationExample {
|
||||
log.info("=== 景区降级缓存管理示例 ===");
|
||||
|
||||
String scenicCacheKey = "scenic:2001";
|
||||
String configCacheKey = "scenic:flat:configs:2001";
|
||||
|
||||
// 检查降级缓存状态
|
||||
boolean hasScenicCache = fallbackService.hasFallbackCache(SERVICE_NAME, scenicCacheKey);
|
||||
boolean hasConfigCache = fallbackService.hasFallbackCache(SERVICE_NAME, configCacheKey);
|
||||
|
||||
log.info("景区降级缓存存在: {}", hasScenicCache);
|
||||
log.info("配置降级缓存存在: {}", hasConfigCache);
|
||||
|
||||
// 获取降级缓存统计信息
|
||||
IntegrationFallbackService.FallbackCacheStats stats = fallbackService.getFallbackCacheStats(SERVICE_NAME);
|
||||
|
@@ -48,19 +48,6 @@ public class ScenicConfigIntegrationService {
|
||||
);
|
||||
}
|
||||
|
||||
public Map<String, Object> getFlatConfigs(Long scenicId) {
|
||||
log.debug("获取景区扁平化配置, scenicId: {}", scenicId);
|
||||
return fallbackService.executeWithFallback(
|
||||
SERVICE_NAME,
|
||||
"scenic:flat:configs:" + scenicId,
|
||||
() -> {
|
||||
CommonResponse<Map<String, Object>> response = scenicConfigV2Client.getFlatConfigs(scenicId);
|
||||
return handleResponse(response, "获取景区扁平化配置失败");
|
||||
},
|
||||
Map.class
|
||||
);
|
||||
}
|
||||
|
||||
public ScenicConfigV2DTO createConfig(Long scenicId, CreateConfigRequest request) {
|
||||
log.debug("创建景区配置, scenicId: {}, configKey: {}", scenicId, request.getConfigKey());
|
||||
CommonResponse<ScenicConfigV2DTO> response = scenicConfigV2Client.createConfig(scenicId, request);
|
||||
@@ -85,12 +72,6 @@ public class ScenicConfigIntegrationService {
|
||||
return handleResponse(response, "批量更新景区配置失败");
|
||||
}
|
||||
|
||||
public BatchUpdateResponse batchFlatUpdateConfigs(Long scenicId, Map<String, Object> configs) {
|
||||
log.debug("扁平化批量更新景区配置, scenicId: {}, configs count: {}", scenicId, configs.size());
|
||||
CommonResponse<BatchUpdateResponse> response = scenicConfigV2Client.batchFlatUpdateConfigs(scenicId, configs);
|
||||
return handleResponse(response, "扁平化批量更新景区配置失败");
|
||||
}
|
||||
|
||||
|
||||
private <T> T handleResponse(CommonResponse<T> response, String errorMessage) {
|
||||
if (response == null || !response.isSuccess()) {
|
||||
|
@@ -42,32 +42,6 @@ public class ScenicIntegrationService {
|
||||
);
|
||||
}
|
||||
|
||||
public ScenicV2WithConfigDTO getScenicWithConfig(Long scenicId) {
|
||||
log.debug("获取景区配置信息, scenicId: {}", scenicId);
|
||||
return fallbackService.executeWithFallback(
|
||||
SERVICE_NAME,
|
||||
"scenic:config:" + scenicId,
|
||||
() -> {
|
||||
CommonResponse<ScenicV2WithConfigDTO> response = scenicV2Client.getScenicWithConfig(scenicId);
|
||||
return handleResponse(response, "获取景区配置信息失败");
|
||||
},
|
||||
ScenicV2WithConfigDTO.class
|
||||
);
|
||||
}
|
||||
|
||||
public Map<String, Object> getScenicFlatConfig(Long scenicId) {
|
||||
log.debug("获取景区扁平化配置, scenicId: {}", scenicId);
|
||||
return fallbackService.executeWithFallback(
|
||||
SERVICE_NAME,
|
||||
"scenic:flat:config:" + scenicId,
|
||||
() -> {
|
||||
CommonResponse<Map<String, Object>> response = scenicConfigV2Client.getFlatConfigs(scenicId);
|
||||
return handleResponse(response, "获取景区扁平化配置失败");
|
||||
},
|
||||
Map.class
|
||||
);
|
||||
}
|
||||
|
||||
public ScenicV2DTO createScenic(CreateScenicRequest request) {
|
||||
log.debug("创建景区, name: {}", request.getName());
|
||||
CommonResponse<ScenicV2DTO> response = scenicV2Client.createScenic(request);
|
||||
@@ -98,12 +72,6 @@ public class ScenicIntegrationService {
|
||||
return handleResponse(response, "分页查询景区列表失败");
|
||||
}
|
||||
|
||||
public PageResponse<ScenicV2WithConfigDTO> listScenicsWithConfig(Integer page, Integer pageSize, Integer status, String name) {
|
||||
log.debug("分页查询景区带配置列表, page: {}, pageSize: {}, status: {}, name: {}", page, pageSize, status, name);
|
||||
CommonResponse<PageResponse<ScenicV2WithConfigDTO>> response = scenicV2Client.listScenicsWithConfig(page, pageSize, status, name);
|
||||
return handleResponse(response, "分页查询景区带配置列表失败");
|
||||
}
|
||||
|
||||
private <T> T handleResponse(CommonResponse<T> response, String errorMessage) {
|
||||
if (response == null || !response.isSuccess()) {
|
||||
String msg = response != null && response.getMessage() != null
|
||||
|
@@ -1,16 +1,7 @@
|
||||
package com.ycwl.basic.model.pc.scenic.resp;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.ycwl.basic.facebody.enums.FaceBodyAdapterType;
|
||||
import com.ycwl.basic.pay.enums.PayAdapterType;
|
||||
import com.ycwl.basic.storage.enums.StorageType;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @Author:longbinbin
|
||||
* @Date:2024/12/2 10:53
|
||||
@@ -19,35 +10,49 @@ import java.util.Date;
|
||||
@Data
|
||||
public class ScenicConfigResp {
|
||||
|
||||
// ========== 基础配置 ==========
|
||||
|
||||
/**
|
||||
* 预约流程,1-预约,2-在线,3-全部
|
||||
* 水印URL
|
||||
*/
|
||||
private Integer bookRoutine;
|
||||
private Integer forceFinishTime;
|
||||
private Integer tourTime;
|
||||
private String watermarkUrl;
|
||||
|
||||
/**
|
||||
* 样本保存时间
|
||||
*/
|
||||
private Integer sampleStoreDay;
|
||||
private Integer faceStoreDay;
|
||||
/**
|
||||
* 视频保存时间
|
||||
* 视频存储天数
|
||||
*/
|
||||
private Integer videoStoreDay;
|
||||
private Boolean allFree;
|
||||
private Boolean disableSourceVideo;
|
||||
private Boolean disableSourceImage;
|
||||
private Integer antiScreenRecordType;
|
||||
private Integer videoSourceStoreDay;
|
||||
private Integer imageSourceStoreDay;
|
||||
private Integer userSourceExpireDay;
|
||||
private BigDecimal brokerDirectRate;
|
||||
|
||||
private String imageSourcePackHint = "";
|
||||
private String videoSourcePackHint = "";
|
||||
private Boolean voucherEnable;
|
||||
private Boolean enableVoucher;
|
||||
/**
|
||||
* 防录屏类型配置
|
||||
*/
|
||||
private Integer antiScreenRecordType;
|
||||
|
||||
// ========== 功能开关 ==========
|
||||
|
||||
/**
|
||||
* 分组功能开关
|
||||
*/
|
||||
private Boolean groupingEnable;
|
||||
|
||||
/**
|
||||
* 优惠券功能开关
|
||||
*/
|
||||
private Boolean voucherEnable;
|
||||
|
||||
/**
|
||||
* 等待时显示照片开关
|
||||
*/
|
||||
private Boolean showPhotoWhenWaiting;
|
||||
private String watermarkUrl;
|
||||
|
||||
// ========== 提示文案 ==========
|
||||
|
||||
/**
|
||||
* 图片素材包提示文案
|
||||
*/
|
||||
private String imageSourcePackHint = "";
|
||||
|
||||
/**
|
||||
* 视频素材包提示文案
|
||||
*/
|
||||
private String videoSourcePackHint = "";
|
||||
}
|
||||
|
@@ -52,8 +52,27 @@ public class ScenicRepository {
|
||||
}
|
||||
|
||||
public ScenicEntity getScenic(Long id) {
|
||||
ScenicV2WithConfigDTO scenicDTO = scenicIntegrationService.getScenicWithConfig(id);
|
||||
ScenicEntity scenicEntity = convertToScenicEntity(scenicDTO);
|
||||
// 分别获取景区基础信息和配置信息
|
||||
ScenicV2DTO scenicBasic = scenicIntegrationService.getScenic(id);
|
||||
List<ScenicConfigV2DTO> configList = scenicConfigIntegrationService.listConfigs(id);
|
||||
|
||||
// 将配置列表转换为Map
|
||||
Map<String, Object> configMap = new HashMap<>();
|
||||
if (configList != null) {
|
||||
for (ScenicConfigV2DTO config : configList) {
|
||||
configMap.put(config.getConfigKey(), config.getConfigValue());
|
||||
}
|
||||
}
|
||||
|
||||
// 手动组合成WithConfig对象用于转换
|
||||
ScenicV2WithConfigDTO scenicWithConfig = new ScenicV2WithConfigDTO();
|
||||
scenicWithConfig.setId(scenicBasic.getId());
|
||||
scenicWithConfig.setName(scenicBasic.getName());
|
||||
scenicWithConfig.setMpId(scenicBasic.getMpId());
|
||||
scenicWithConfig.setStatus(scenicBasic.getStatus());
|
||||
scenicWithConfig.setConfig(configMap);
|
||||
|
||||
ScenicEntity scenicEntity = convertToScenicEntity(scenicWithConfig);
|
||||
return scenicEntity;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user