SceneEditController.java 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592
  1. package com.fdkankan.scene.controller;
  2. import com.fdkankan.common.constant.ErrorCode;
  3. import com.fdkankan.common.constant.SceneInfoReqType;
  4. import com.fdkankan.web.controller.BaseController;
  5. import com.fdkankan.common.exception.BusinessException;
  6. import com.fdkankan.common.response.ResultData;
  7. import com.fdkankan.scene.annotation.CheckCooperationPermit;
  8. import com.fdkankan.scene.service.ISceneEditInfoService;
  9. import com.fdkankan.scene.service.ISceneEditService;
  10. import com.fdkankan.scene.service.ISceneProService;
  11. import com.fdkankan.scene.service.ISceneUploadService;
  12. import com.fdkankan.scene.vo.BallScreenVideoParamVO;
  13. import com.fdkankan.scene.vo.BaseDataParamVO;
  14. import com.fdkankan.scene.vo.BaseSceneParamVO;
  15. import com.fdkankan.scene.vo.DeleteFileParamVO;
  16. import com.fdkankan.scene.vo.DeleteHotIconParamVO;
  17. import com.fdkankan.scene.vo.DeleteHotParamVO;
  18. import com.fdkankan.scene.vo.DeleteSidParamVO;
  19. import com.fdkankan.scene.vo.DownloadVO;
  20. import com.fdkankan.scene.vo.FileNameAndDataParamVO;
  21. import com.fdkankan.scene.vo.FileParamVO;
  22. import com.fdkankan.scene.vo.LocalesParamVO;
  23. import com.fdkankan.scene.vo.RenameCadParamVO;
  24. import com.fdkankan.scene.vo.SaveTagsParamVO;
  25. import com.fdkankan.scene.vo.SaveTagsVisibleParamVO;
  26. import com.fdkankan.scene.vo.SaveUploadParamVO;
  27. import com.fdkankan.scene.vo.SceneAuthVO;
  28. import com.fdkankan.scene.vo.SceneEditInfoParamVO;
  29. import com.fdkankan.scene.vo.SceneEditInfoVO;
  30. import com.fdkankan.scene.vo.SceneInfoParamVO;
  31. import com.fdkankan.scene.vo.SceneInfoVO;
  32. import com.fdkankan.scene.vo.UploadContentParamVO;
  33. import java.io.IOException;
  34. import lombok.extern.log4j.Log4j2;
  35. import org.springframework.beans.factory.annotation.Autowired;
  36. import org.springframework.beans.factory.annotation.Value;
  37. import org.springframework.validation.annotation.Validated;
  38. import org.springframework.web.bind.annotation.GetMapping;
  39. import org.springframework.web.bind.annotation.PostMapping;
  40. import org.springframework.web.bind.annotation.RequestBody;
  41. import org.springframework.web.bind.annotation.RequestMapping;
  42. import org.springframework.web.bind.annotation.RequestMethod;
  43. import org.springframework.web.bind.annotation.RequestParam;
  44. import org.springframework.web.bind.annotation.RestController;
  45. import org.springframework.web.multipart.MultipartFile;
  46. /**
  47. * 场景编辑管理
  48. */
  49. @Log4j2
  50. @RestController
  51. @RequestMapping("/service/scene/edit")
  52. public class SceneEditController extends BaseController {
  53. @Autowired
  54. private ISceneProService sceneProService;
  55. @Autowired
  56. private ISceneEditInfoService sceneEditInfoService;
  57. @Autowired
  58. private ISceneUploadService sceneUploadService;
  59. @Autowired
  60. private ISceneEditService sceneEditService;
  61. @Value("${spring.profiles.active}")
  62. private String env;
  63. /**
  64. * <p>
  65. 保存场景编辑数据
  66. * </p>
  67. * @author dengsixing
  68. * @date 2022/1/12
  69. * @param param
  70. * @return com.fdkankan.common.response.ResultData
  71. **/
  72. @CheckCooperationPermit
  73. @PostMapping(value = "/base/save")
  74. public SceneEditInfoVO saveScene(@RequestBody @Validated SceneEditInfoParamVO param){
  75. return sceneEditInfoService.saveScene(param);
  76. }
  77. /**
  78. * <p>
  79. 发布场景数据
  80. * </p>
  81. * @author dengsixing
  82. * @date 2022/1/12
  83. * @param param
  84. * @return com.fdkankan.common.response.ResultData
  85. **/
  86. @CheckCooperationPermit
  87. @PostMapping(value = "/publicScene")
  88. public ResultData publicScene(@RequestBody @Validated SceneEditInfoParamVO param) throws Exception {
  89. return sceneEditInfoService.publicScene(param);
  90. }
  91. /**
  92. * <p>
  93. 保存初始页面
  94. * </p>
  95. * @author dengsixing
  96. * @date 2022/1/12
  97. * @param param
  98. * @return com.fdkankan.common.response.ResultData
  99. **/
  100. @CheckCooperationPermit
  101. @PostMapping(value = "/saveInitialPage")
  102. public ResultData saveInitialPage(@RequestBody @Validated FileNameAndDataParamVO param) throws Exception {
  103. return sceneProService.saveInitialPage(param);
  104. }
  105. /**
  106. * <p>
  107. 新增或修改场景热点
  108. * </p>
  109. * @author dengsixing
  110. * @date 2022/1/12
  111. * @param param
  112. * @return com.fdkankan.common.response.ResultData
  113. **/
  114. @CheckCooperationPermit
  115. @PostMapping(value = "/tag/save")
  116. public ResultData saveTag(@RequestBody @Validated SaveTagsParamVO param) throws Exception {
  117. return sceneProService.addOrUpdateTag(param);
  118. }
  119. /**
  120. * <p>
  121. 删除热点
  122. * </p>
  123. * @author dengsixing
  124. * @date 2022/2/16
  125. * @param param
  126. * @return com.fdkankan.common.response.ResultData
  127. **/
  128. @CheckCooperationPermit
  129. @PostMapping(value = "/tag/delete")
  130. public ResultData deleteTag(@RequestBody @Validated DeleteHotParamVO param) throws Exception {
  131. return sceneProService.deleteTag(param);
  132. }
  133. /**
  134. * <p>
  135. 热点列表
  136. * </p>
  137. * @author dengsixing
  138. * @date 2022/7/1
  139. * @param num
  140. * @return com.fdkankan.common.response.ResultData
  141. **/
  142. @PostMapping(value = "/tag/list")
  143. public ResultData listTags(@RequestParam(value = "num") String num) throws Exception {
  144. return sceneProService.listTags(num);
  145. }
  146. /**
  147. * <p>
  148. 删除热点
  149. * </p>
  150. * @author dengsixing
  151. * @date 2022/2/16
  152. * @param param
  153. * @return com.fdkankan.common.response.ResultData
  154. **/
  155. @CheckCooperationPermit
  156. @PostMapping(value = "/icons/delete")
  157. public ResultData deleteIcons(@RequestBody @Validated DeleteHotIconParamVO param) throws Exception {
  158. return sceneProService.deleteIcons(param);
  159. }
  160. /**
  161. * <p>
  162. 保存漫游可行
  163. * </p>
  164. * @author dengsixing
  165. * @date 2022/1/12
  166. * @param param
  167. * @return com.fdkankan.common.response.ResultData
  168. **/
  169. @CheckCooperationPermit
  170. @PostMapping(value = "/saveRoam")
  171. public ResultData saveRoam(@RequestBody @Validated BaseDataParamVO param) throws Exception {
  172. return sceneProService.saveRoam(param);
  173. }
  174. /**
  175. * <p>
  176. 保存热点可见性的数据
  177. * </p>
  178. * @author dengsixing
  179. * @date 2022/7/1
  180. * @param param
  181. * @return com.fdkankan.common.response.ResultData
  182. **/
  183. @CheckCooperationPermit
  184. @PostMapping(value = "/saveTagsVisible")
  185. public ResultData saveTagsVisible(@RequestBody @Validated SaveTagsVisibleParamVO param) throws Exception {
  186. return sceneProService.saveTagsVisible(param);
  187. }
  188. /**
  189. * <p>
  190. 模型下载
  191. * </p>
  192. * @author dengsixing
  193. * @date 2022/7/1
  194. * @param num
  195. * @return com.fdkankan.common.response.ResultData
  196. **/
  197. @CheckCooperationPermit
  198. @PostMapping(value = "/downloadModel")
  199. public ResultData downloadTexData(@RequestParam("num") String num) throws Exception {
  200. return sceneProService.downloadTexData(num);
  201. }
  202. /**
  203. * <p>
  204. 上传模型
  205. * </p>
  206. * @author dengsixing
  207. * @date 2022/7/1
  208. * @param num
  209. * @param file
  210. * @return com.fdkankan.common.response.ResultData
  211. **/
  212. @CheckCooperationPermit
  213. @PostMapping(value = "/uploadModel")
  214. public ResultData uploadObjAndImg(@RequestParam("num") String num, @RequestParam("file") MultipartFile file) throws Exception {
  215. return sceneProService.uploadObjAndImg(num, file);
  216. }
  217. // /**
  218. // * <p>
  219. // 上传后保存
  220. // * </p>
  221. // * @author dengsixing
  222. // * @date 2022/1/20
  223. // * @param param
  224. // * @return com.fdkankan.common.response.ResultData
  225. // **/
  226. // @PostMapping(value = "/saveUpload")
  227. // public ResultData saveUpload(@RequestBody @Validated SaveUploadParamVO param) throws Exception{
  228. // return sceneEditInfoService.saveUpload(param);
  229. // }
  230. /**
  231. * <p>
  232. 保存户型图
  233. * </p>
  234. * @author dengsixing
  235. * @date 2022/1/20
  236. * @param param
  237. * @return com.fdkankan.common.response.ResultData
  238. **/
  239. @CheckCooperationPermit
  240. @PostMapping(value = "/cad/save")
  241. public ResultData saveCad(@RequestBody @Validated BaseDataParamVO param) throws Exception{
  242. return sceneEditInfoService.saveCad(param);
  243. }
  244. /**
  245. * <p>
  246. 重置户型图
  247. * </p>
  248. * @author dengsixing
  249. * @date 2022/2/16
  250. * @param num
  251. * @return
  252. **/
  253. @CheckCooperationPermit
  254. @PostMapping(value = "/cad/reset")
  255. public ResultData resetCad(@RequestParam(value = "num") String num){
  256. return sceneEditInfoService.resetCad(num);
  257. }
  258. /**
  259. * <p>
  260. 楼层户型重命名
  261. * </p>
  262. * @author dengsixing
  263. * @date 2022/2/16
  264. * @return
  265. **/
  266. @CheckCooperationPermit
  267. @PostMapping(value = "/cad/rename")
  268. public ResultData renameCad(@RequestBody @Validated RenameCadParamVO param) throws IOException {
  269. return sceneEditInfoService.renameCad(param);
  270. }
  271. /**
  272. * <p>
  273. 获取场景详情
  274. * </p>
  275. * @author dengsixing
  276. * @date 2022/7/1
  277. * @param param
  278. * @return com.fdkankan.scene.vo.SceneInfoVO
  279. **/
  280. @GetMapping(value = "/getInfo")
  281. public SceneInfoVO getInfo(@Validated SceneInfoParamVO param) throws Exception{
  282. param.setReqType(SceneInfoReqType.EDIT.code());
  283. return sceneEditInfoService.getSceneInfo(param);
  284. }
  285. /**
  286. * <p>
  287. 上传全景图
  288. * </p>
  289. * @author dengsixing
  290. * @date 2022/2/16
  291. * @param num
  292. * @param file
  293. * @return java.util.List<java.lang.String>
  294. **/
  295. @CheckCooperationPermit
  296. @PostMapping(value = "/uploadPanorama")
  297. public ResultData uploadPanorama(@RequestParam(value = "num") String num,
  298. @RequestParam("file") MultipartFile file) throws Exception {
  299. return sceneEditInfoService.uploadPanorama(num, file);
  300. }
  301. /**
  302. * <p>
  303. 下载全景图
  304. * </p>
  305. * @author dengsixing
  306. * @date 2022/2/16
  307. * @return java.util.List<java.lang.String>
  308. **/
  309. @CheckCooperationPermit
  310. @PostMapping(value = "/downloadPanorama")
  311. public ResultData downloadPanorama(@RequestBody @Validated FileParamVO param) throws Exception {
  312. return sceneEditInfoService.downloadPanorama(param);
  313. }
  314. /**
  315. * <p>
  316. 保存视频盒子
  317. * </p>
  318. * @author dengsixing
  319. * @date 2022/2/18
  320. * @param param
  321. * @return com.fdkankan.common.response.ResultData
  322. **/
  323. @CheckCooperationPermit
  324. @PostMapping(value = "/video/box/save")
  325. public ResultData saveVideoBox(@RequestBody @Validated FileNameAndDataParamVO param) throws Exception {
  326. return sceneEditInfoService.saveVideoBox(param);
  327. }
  328. /**
  329. * <p>
  330. 删除视频盒子
  331. * </p>
  332. * @author dengsixing
  333. * @date 2022/2/18
  334. * @param param
  335. * @return com.fdkankan.common.response.ResultData
  336. **/
  337. @CheckCooperationPermit
  338. @PostMapping(value = "/video/box/delete")
  339. public ResultData deleteVideoBox(@RequestBody @Validated DeleteSidParamVO param) throws Exception {
  340. return sceneEditInfoService.deleteVideoBox(param);
  341. }
  342. /**
  343. * <p>
  344. 保存空间贴图
  345. * </p>
  346. * @author dengsixing
  347. * @date 2022/2/18
  348. * @param param
  349. * @return com.fdkankan.common.response.ResultData
  350. **/
  351. @CheckCooperationPermit
  352. @PostMapping(value = "/photo/box/save")
  353. public ResultData savePhotoBox(@RequestBody @Validated BaseDataParamVO param) throws Exception {
  354. return sceneEditInfoService.saveBoxPhoto(param);
  355. }
  356. /**
  357. * <p>
  358. 删除空间贴图
  359. * </p>
  360. * @author dengsixing
  361. * @date 2022/2/18
  362. * @param param
  363. * @return com.fdkankan.common.response.ResultData
  364. **/
  365. @CheckCooperationPermit
  366. @PostMapping(value = "/photo/box/delete")
  367. public ResultData deletePhotoBox(@RequestBody @Validated DeleteSidParamVO param) throws Exception {
  368. return sceneEditInfoService.deleteBoxPhoto(param);
  369. }
  370. /**
  371. * <p>
  372. 下载视频
  373. * </p>
  374. * @author dengsixing
  375. * @date 2022/2/23
  376. * @param param
  377. * @return com.fdkankan.scene.vo.DownloadVO
  378. **/
  379. @CheckCooperationPermit
  380. @PostMapping(value = "/downloadBallScreenVideo")
  381. public DownloadVO downloadBallScreenVideo(@RequestBody @Validated BallScreenVideoParamVO param){
  382. return sceneEditInfoService.downloadBallScreenVideo(param);
  383. }
  384. /**
  385. * <p>
  386. 上传视频
  387. * </p>
  388. * @author dengsixing
  389. * @date 2022/2/23
  390. * @param num
  391. * @param fileName
  392. * @param file
  393. * @return com.fdkankan.common.response.ResultData
  394. **/
  395. @CheckCooperationPermit
  396. @PostMapping(value = "/uploadBallScreenVideo")
  397. public ResultData uploadBallScreenVideo(
  398. @RequestParam("num") String num,
  399. @RequestParam("fileName") String fileName,
  400. @RequestParam("file") MultipartFile file) throws Exception {
  401. return sceneEditInfoService.uploadBallScreenVideo(num, fileName, file);
  402. }
  403. /**
  404. * <p>
  405. 上传图片到oss,base64
  406. * </p>
  407. * @author dengsixing
  408. * @date 2022/7/1
  409. * @param base64 图片base64
  410. * @param fileName 文件名称
  411. * @param bizType 业务类型
  412. * @param files 文件
  413. * @param num 场景码
  414. * @param type 操作类型 0添加,1替换
  415. * @param uploadPath 上传路径,此字段为扩展字段,前端可自定义上传路径,注意是完全的文件路径
  416. * @return java.lang.String
  417. **/
  418. @CheckCooperationPermit
  419. @RequestMapping(value = "/upload/files", method = RequestMethod.POST)
  420. public String uploads(@RequestParam(value = "base64",required = false) String base64,
  421. @RequestParam(value = "fileName",required = false) String fileName,
  422. @RequestParam(value = "bizType",required = false) String bizType,
  423. @RequestParam(value = "files",required = false) MultipartFile[] files,
  424. @RequestParam(value = "num",required = false) String num,
  425. @RequestParam(value = "type",required = false,defaultValue = "1") Integer type,
  426. @RequestParam(value = "uploadPath",required = false) String uploadPath) throws Exception {
  427. return sceneUploadService.uploads(base64,fileName,bizType,files,num,type,getToken(),uploadPath);
  428. }
  429. /**
  430. * <p>
  431. 用户自定义上传文本内容上传
  432. * </p>
  433. * @author dengsixing
  434. * @date 2022/7/1
  435. * @param param
  436. * @return java.lang.String
  437. **/
  438. @RequestMapping(value = "/upload/content", method = RequestMethod.POST)
  439. public String uploadContent(@RequestBody @Validated UploadContentParamVO param) throws Exception {
  440. return sceneUploadService.uploadContent(param);
  441. }
  442. /**
  443. * <p>
  444. 删除文件
  445. * </p>
  446. * @author dengsixing
  447. * @date 2022/2/23
  448. * @param paramVO
  449. * @return com.fdkankan.common.response.ResultData
  450. **/
  451. @CheckCooperationPermit
  452. @PostMapping("/delete/file")
  453. public ResultData delete(@RequestBody @Validated DeleteFileParamVO paramVO) throws Exception{
  454. return sceneUploadService.delete(paramVO);
  455. }
  456. /**
  457. * <p>
  458. 场景同步
  459. * </p>
  460. * @author dengsixing
  461. * @date 2022/7/1
  462. * @param num
  463. * @param type
  464. * @param floorPlanJson
  465. * @param ajkJson
  466. * @param cameraJson
  467. * @param files
  468. * @return com.fdkankan.common.response.ResultData
  469. **/
  470. @CheckCooperationPermit
  471. @PostMapping(value = "/sceneSync")
  472. public ResultData sceneSync(
  473. @RequestParam("num") String num,
  474. @RequestParam(value = "type", defaultValue = "ajk") String type,
  475. @RequestParam("floorPlanJson") String floorPlanJson,
  476. @RequestParam("ajkJson") String ajkJson,
  477. @RequestParam("cameraJson") String cameraJson,
  478. @RequestParam("files") MultipartFile[] files) throws Exception{
  479. return sceneEditInfoService.sceneSync(num, type, floorPlanJson, ajkJson, cameraJson, files);
  480. }
  481. /**
  482. * <p>
  483. 获取场景权限
  484. * </p>
  485. * @author dengsixing
  486. * @date 2022/7/1
  487. * @param num
  488. * @return com.fdkankan.scene.vo.SceneAuthVO
  489. **/
  490. @CheckCooperationPermit
  491. @PostMapping(value = "/getAuth")
  492. public SceneAuthVO getAuth(@RequestParam("num") String num) throws Exception{
  493. return sceneEditService.getAuth(num, this.getSsoUser());
  494. }
  495. /**
  496. * <p>
  497. 上传国际化文件
  498. * </p>
  499. * @author dengsixing
  500. * @date 2022/4/11
  501. * @param param
  502. * @return com.fdkankan.common.response.ResultData
  503. **/
  504. @PostMapping(value = "/locales")
  505. public ResultData locales(@RequestBody @Validated LocalesParamVO param) throws Exception {
  506. if("pro".equals(env)){
  507. throw new BusinessException(ErrorCode.HAVE_NO_RIGHT);
  508. }
  509. return sceneEditService.locales(param);
  510. }
  511. /**
  512. * <p>
  513. 保存导览
  514. * </p>
  515. * @author dengsixing
  516. * @date 2022/7/1
  517. * @param param
  518. * @return com.fdkankan.common.response.ResultData
  519. **/
  520. @CheckCooperationPermit
  521. @PostMapping(value = "/tour/save")
  522. public ResultData saveTour(@RequestBody @Validated BaseDataParamVO param) throws Exception{
  523. return sceneEditService.saveTour(param);
  524. }
  525. /**
  526. * <p>
  527. 删除导览
  528. * </p>
  529. * @author dengsixing
  530. * @date 2022/7/1
  531. * @param param
  532. * @return com.fdkankan.common.response.ResultData
  533. **/
  534. @CheckCooperationPermit
  535. @PostMapping(value = "/tour/delete")
  536. public ResultData deleteTour(@RequestBody @Validated BaseSceneParamVO param) throws Exception{
  537. return sceneEditService.deleteTour(param);
  538. }
  539. /**
  540. * <p>
  541. 添加马赛克
  542. * </p>
  543. * @author dengsixing
  544. * @date 2022/7/1
  545. * @param param
  546. * @return com.fdkankan.common.response.ResultData
  547. **/
  548. @CheckCooperationPermit
  549. @PostMapping(value = "/mosaics/add")
  550. public ResultData addMosaics(@RequestBody @Validated BaseDataParamVO param) throws Exception{
  551. return sceneEditInfoService.addMosaics(param);
  552. }
  553. }