feat(device): 新增远程拍照摄像头类型及家属端设备控制指令

- 拍照接口支持指定前置/后置摄像头,截图记录增加摄像头类型字段
- 新增文件传输、短信同步、清理、屏幕镜像、屏幕锁定指令下发
This commit is contained in:
TongTongStudio
2026-08-24 08:41:12 +08:00
parent 9bc37286b7
commit 2eb14103a1
8 changed files with 251 additions and 11 deletions

View File

@@ -147,17 +147,21 @@ public class ClientDeviceOpsController {
@PreAuthorize("isAuthenticated()")
@PostMapping("/take_photo")
public Result<?> takePhoto(
@Parameter(description = "设备序列号") @RequestParam("sn") String sn
@Parameter(description = "设备序列号") @RequestParam("sn") String sn,
@Parameter(description = "摄像头类型0=后置摄像头1=前置摄像头)") @RequestParam("camera") int camera
) {
if (camera != 0 && camera != 1) {
return Result.failed("摄像头类型非法,仅支持 0后置或 1前置");
}
try {
checkBound(sn);
boolean result = deviceService.takePhoto(sn);
boolean result = deviceService.takePhoto(sn, camera);
return Result.judge(result);
} catch (BusinessException be) {
return Result.failed(be.getMessage());
} catch (Exception e) {
log.error("remoteCamera error, sn: {}", sn, e);
return Result.failed("设备截图失败: " + e.getMessage());
log.error("takePhoto error, sn: {}, camera: {}", sn, camera, e);
return Result.failed("远程拍照失败: " + e.getMessage());
}
}
@@ -436,4 +440,94 @@ public class ClientDeviceOpsController {
return Result.failed("停止应用失败: " + e.getMessage());
}
}
@Operation(summary = "文件传输(家属端)")
@PreAuthorize("isAuthenticated()")
@PostMapping("/file_transfer")
public Result<?> fileTransfer(
@Parameter(description = "设备序列号") @RequestParam("sn") String sn
) {
try {
checkBound(sn);
boolean result = deviceService.fileTransfer(sn);
return Result.judge(result);
} catch (BusinessException be) {
return Result.failed(be.getMessage());
} catch (Exception e) {
log.error("fileTransfer error, sn: {}", sn, e);
return Result.failed("文件传输指令下发失败: " + e.getMessage());
}
}
@Operation(summary = "短信同步(家属端)")
@PreAuthorize("isAuthenticated()")
@PostMapping("/msg_sync")
public Result<?> msgSync(
@Parameter(description = "设备序列号") @RequestParam("sn") String sn
) {
try {
checkBound(sn);
boolean result = deviceService.msgSync(sn);
return Result.judge(result);
} catch (BusinessException be) {
return Result.failed(be.getMessage());
} catch (Exception e) {
log.error("msgSync error, sn: {}", sn, e);
return Result.failed("短信同步指令下发失败: " + e.getMessage());
}
}
@Operation(summary = "清理(家属端)")
@PreAuthorize("isAuthenticated()")
@PostMapping("/clean")
public Result<?> clean(
@Parameter(description = "设备序列号") @RequestParam("sn") String sn
) {
try {
checkBound(sn);
boolean result = deviceService.clean(sn);
return Result.judge(result);
} catch (BusinessException be) {
return Result.failed(be.getMessage());
} catch (Exception e) {
log.error("clean error, sn: {}", sn, e);
return Result.failed("清理指令下发失败: " + e.getMessage());
}
}
@Operation(summary = "屏幕镜像(家属端)")
@PreAuthorize("isAuthenticated()")
@PostMapping("/mirror")
public Result<?> mirror(
@Parameter(description = "设备序列号") @RequestParam("sn") String sn
) {
try {
checkBound(sn);
boolean result = deviceService.mirror(sn);
return Result.judge(result);
} catch (BusinessException be) {
return Result.failed(be.getMessage());
} catch (Exception e) {
log.error("mirror error, sn: {}", sn, e);
return Result.failed("屏幕镜像指令下发失败: " + e.getMessage());
}
}
@Operation(summary = "屏幕锁定(家属端)")
@PreAuthorize("isAuthenticated()")
@PostMapping("/screen_lock")
public Result<?> screenLock(
@Parameter(description = "设备序列号") @RequestParam("sn") String sn
) {
try {
checkBound(sn);
boolean result = deviceService.screenLock(sn);
return Result.judge(result);
} catch (BusinessException be) {
return Result.failed(be.getMessage());
} catch (Exception e) {
log.error("screenLock error, sn: {}", sn, e);
return Result.failed("屏幕锁定指令下发失败: " + e.getMessage());
}
}
}