CanvasController.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <?php
  2. namespace App\Http\Controllers\Canvas;
  3. use App\Libs\ApiResponse;
  4. use App\Services\Canvas\CanvasService;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Routing\Controller as BaseController;
  7. /**
  8. * 画布模式控制器
  9. *
  10. * 画布:独立工作台,节点可复用全局资产库(mp_products)或动漫分集
  11. * (主体/场景/道具列表),节点之间无方向多对多关联。
  12. */
  13. class CanvasController extends BaseController
  14. {
  15. use ApiResponse;
  16. protected $CanvasService;
  17. public function __construct(CanvasService $CanvasService)
  18. {
  19. $this->CanvasService = $CanvasService;
  20. }
  21. // 画布列表
  22. public function canvasList(Request $request)
  23. {
  24. $data = $request->all();
  25. $result = $this->CanvasService->canvasList($data);
  26. return $this->success($result);
  27. }
  28. // 创建画布
  29. public function createCanvas(Request $request)
  30. {
  31. $data = $request->all();
  32. $result = $this->CanvasService->createCanvas($data);
  33. return $this->success($result);
  34. }
  35. // 保存画布完整文档;revision 冲突返回 409 和服务端当前 revision
  36. public function editCanvas(Request $request)
  37. {
  38. $data = $request->all();
  39. $result = $this->CanvasService->editCanvas($data);
  40. if (isset($result['revision_conflict']) && $result['revision_conflict']) {
  41. return response()->json([
  42. 'msg' => '画布已被其他会话修改,请拉取最新版本',
  43. 'code' => 409,
  44. 'data' => [
  45. 'canvas_id' => $result['canvas_id'],
  46. 'revision' => $result['revision']
  47. ]
  48. ], 409)->setEncodingOptions(JSON_UNESCAPED_UNICODE);
  49. }
  50. return $this->success($result);
  51. }
  52. // 删除画布
  53. public function delCanvas(Request $request)
  54. {
  55. $data = $request->all();
  56. $result = $this->CanvasService->delCanvas($data);
  57. return $this->success($result);
  58. }
  59. // 画布详情(画布信息 + 全部节点 + 全部关联)
  60. public function canvasDetail(Request $request)
  61. {
  62. $data = $request->all();
  63. $result = $this->CanvasService->canvasDetail($data);
  64. return $this->success($result);
  65. }
  66. // 保存节点(创建/更新,分镜节点同步分镜数据)
  67. public function saveNode(Request $request)
  68. {
  69. $data = $request->all();
  70. $result = $this->CanvasService->saveNode($data);
  71. return $this->success($result);
  72. }
  73. // 节点详情
  74. public function nodeInfo(Request $request)
  75. {
  76. $data = $request->all();
  77. $result = $this->CanvasService->nodeInfo($data);
  78. return $this->success($result);
  79. }
  80. // 删除节点
  81. public function delNode(Request $request)
  82. {
  83. $data = $request->all();
  84. $result = $this->CanvasService->delNode($data);
  85. return $this->success($result);
  86. }
  87. // 获取节点关联
  88. public function nodeRels(Request $request)
  89. {
  90. $data = $request->all();
  91. $result = $this->CanvasService->nodeRels($data);
  92. return $this->success($result);
  93. }
  94. // 保存节点关联(整体替换)
  95. public function saveRels(Request $request)
  96. {
  97. $data = $request->all();
  98. $result = $this->CanvasService->saveRels($data);
  99. return $this->success($result);
  100. }
  101. // 画布关系图(全部节点 + 全部关联)
  102. public function graph(Request $request)
  103. {
  104. $data = $request->all();
  105. $result = $this->CanvasService->graph($data);
  106. return $this->success($result);
  107. }
  108. }