SceneController.java 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344
  1. package com.fdkankan.ucenter.controller;
  2. import cn.hutool.core.io.FileUtil;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.fdkankan.common.util.JwtUtil;
  5. import com.fdkankan.fyun.face.FYunFileServiceInterface;
  6. import com.fdkankan.ucenter.common.BaseController;
  7. import com.fdkankan.ucenter.common.DownloadStatusEnum;
  8. import com.fdkankan.ucenter.common.Result;
  9. import com.fdkankan.ucenter.common.constants.ConstantFilePath;
  10. import com.fdkankan.ucenter.common.constants.NacosProperty;
  11. import com.fdkankan.ucenter.common.constants.ResultCode;
  12. import com.fdkankan.ucenter.common.constants.ResultCodeMsg;
  13. import com.fdkankan.ucenter.entity.ScenePlus;
  14. import com.fdkankan.ucenter.entity.User;
  15. import com.fdkankan.ucenter.exception.BusinessException;
  16. import com.fdkankan.ucenter.httpClient.client.FdKKClient;
  17. import com.fdkankan.ucenter.httpClient.param.FdRoomVo;
  18. import com.fdkankan.ucenter.httpClient.param.UploadEditSceneParam;
  19. import com.fdkankan.ucenter.service.*;
  20. import com.fdkankan.ucenter.service.impl.TakeLookService;
  21. import com.fdkankan.ucenter.vo.request.RequestScene;
  22. import com.fdkankan.ucenter.vo.request.SceneParam;
  23. import com.fdkankan.ucenter.vo.response.DownloadProcessVo;
  24. import lombok.extern.slf4j.Slf4j;
  25. import org.apache.commons.codec.language.Nysiis;
  26. import org.springframework.beans.factory.annotation.Autowired;
  27. import org.springframework.beans.factory.annotation.Value;
  28. import org.springframework.web.bind.annotation.*;
  29. import org.springframework.web.multipart.MultipartFile;
  30. import java.io.File;
  31. import java.net.URL;
  32. import java.util.HashMap;
  33. import java.util.Objects;
  34. import java.util.UUID;
  35. /**
  36. * <p>
  37. * 场景表 前端控制器
  38. * </p>
  39. *
  40. * @author
  41. * @since 2022-07-04
  42. */
  43. @RestController
  44. @RequestMapping("/ucenter/user/scene")
  45. @Slf4j
  46. public class SceneController extends BaseController {
  47. @Autowired
  48. ISceneProService sceneProService;
  49. @Autowired
  50. IUserService userService;
  51. @Autowired
  52. IDownService downService;
  53. @Autowired
  54. ISceneUpgradeToV4Service sceneUpgradeToV4Service;
  55. @Autowired
  56. ISceneCooperationService sceneCooperationService;
  57. @Autowired
  58. ISceneService sceneService;
  59. @Autowired
  60. IScenePlusService scenePlusService;
  61. @Autowired
  62. TakeLookService takeLookService;
  63. @PostMapping("/findSceneNumber")
  64. public Result findSceneNumber(){
  65. return Result.success(sceneProService.findSceneNumber(getToken()));
  66. }
  67. @PostMapping("/getOldSceneList")
  68. public Result getOldSceneList(@RequestBody SceneParam param){
  69. User user = userService.getByToken(getToken());
  70. param.setUserId(user.getId());
  71. return Result.success(sceneService.pageList(param));
  72. }
  73. @PostMapping(value = "/list")
  74. public Result getScenes(@RequestBody RequestScene param) throws Exception {
  75. String username = JwtUtil.getUsername(getToken());
  76. return Result.success(sceneProService.getScenes(username, param));
  77. }
  78. @PostMapping("/newList")
  79. public Result newList(@RequestBody SceneParam param){
  80. String username = JwtUtil.getUsername(getToken());
  81. return Result.success(sceneProService.newList(param,username));
  82. }
  83. @PostMapping("/getOnlySceneList")
  84. public Result getOnlySceneList(@RequestBody SceneParam param){
  85. String username = JwtUtil.getUsername(getToken());
  86. param.setHasFolder(0);
  87. JSONObject jsonObject = sceneProService.newList(param, username);
  88. JSONObject pageInfo = jsonObject.getJSONObject("pageInfo");
  89. pageInfo.put("endRow",0);
  90. pageInfo.put("firstPage",param.getPageNum());
  91. pageInfo.put("hasNextPage",false);
  92. pageInfo.put("isLastPage",0);
  93. pageInfo.put("size",pageInfo.get("total"));
  94. Integer pages = pageInfo.getInteger("total") / param.getPageSize();
  95. pageInfo.put("pages",pageInfo.getInteger("total") % param.getPageSize() == 0 ? pages : pages + 1);
  96. return Result.success(pageInfo);
  97. }
  98. /**
  99. * 获取场景详情
  100. */
  101. @RequestMapping(value = "/detail", method = RequestMethod.POST)
  102. public Result getSceneDetail(@RequestBody SceneParam param) throws Exception {
  103. return Result.success(sceneProService.getSceneDetail(param.getSceneNum()));
  104. }
  105. @PostMapping("/copyScene")
  106. public Result copyScene(@RequestBody SceneParam param) throws Exception {
  107. String username = JwtUtil.getUsername(getToken());
  108. sceneProService.copyScene(param.getSceneNum(),username);
  109. return Result.success();
  110. }
  111. @PostMapping("/delete")
  112. public Result delete(@RequestBody SceneParam param) throws Exception {
  113. sceneProService.delete(param.getSceneNum(),getUserId(),param.getPlatform());
  114. return Result.success();
  115. }
  116. /**
  117. * 校验该场景有无下载资格
  118. */
  119. @PostMapping("/checkDownload")
  120. public Result checkDownload(@RequestBody SceneParam param) throws Exception {
  121. return Result.success( downService.checkDownLoad(param.getSceneNum(),param.getIsObj()) );
  122. }
  123. /**
  124. * 校验该场景有无下载资格
  125. * @param param
  126. * @return
  127. */
  128. @PostMapping("/downloadScene")
  129. public Result downloadScene(@RequestBody SceneParam param) throws Exception{
  130. String username = JwtUtil.getUsername(getToken());
  131. return Result.success(downService.down(param.getSceneNum(),username,param.getIsObj()));
  132. }
  133. /**
  134. * 获取下载进度
  135. * @param param
  136. * @return
  137. */
  138. @PostMapping("/downloadProcess")
  139. public Result downloadProcess(@RequestBody SceneParam param) throws Exception{
  140. User user = userService.getByUserName(JwtUtil.getUsername(this.getToken()));
  141. DownloadProcessVo downloadProcessVo = downService.downloadProcess(user.getId(), param.getSceneNum(),param.getIsObj());
  142. if(downloadProcessVo.getStatus() == DownloadStatusEnum.DOWNLOAD_FAILED_CODE){
  143. return Result.failure("下载失败!");
  144. }
  145. return Result.success(downloadProcessVo);
  146. }
  147. /**
  148. * 检查下载
  149. * num 场景码
  150. */
  151. @GetMapping("/checkDownLoadE57")
  152. public Result checkDownLoadE57(@RequestParam(required = false) String num){
  153. String username = JwtUtil.getUsername(getToken());
  154. return Result.success(downService.checkDownLoadE57(num,username));
  155. }
  156. /**
  157. * 下载场景
  158. * num 场景码
  159. */
  160. @GetMapping("/downSceneE57")
  161. public Result downSceneE57(@RequestParam(required = false) String num){
  162. String username = JwtUtil.getUsername(getToken());
  163. return Result.success(downService.downE57(num,username));
  164. }
  165. /**
  166. * 下载场景进度条
  167. * num 场景码
  168. */
  169. @GetMapping("/downloadProcessE57")
  170. public Result downloadProcessE57(@RequestParam(required = false) String num){
  171. String username = JwtUtil.getUsername(getToken());
  172. return Result.success(downService.downloadProcessE57(num,username));
  173. }
  174. /**
  175. *
  176. * 场景升级V4接口
  177. */
  178. @GetMapping("/upgradeToV4")
  179. public Result upgradeToV4(String num) throws Exception{
  180. return sceneUpgradeToV4Service.upgrade(num);
  181. }
  182. /**
  183. *
  184. * 场景升级进度查询接口
  185. */
  186. @GetMapping("/getUpgradeToV4Progress")
  187. public Result getUpgradeToV4Progress(String num) throws Exception{
  188. return sceneUpgradeToV4Service.getUpgradeToV4Progress(num);
  189. }
  190. /**
  191. *
  192. * 分页查询存在houseType文件的场景
  193. */
  194. @PostMapping("/pageSceneWithHouseType")
  195. public Result pageSceneWithHouseType(@RequestBody RequestScene param){
  196. return scenePlusService.pageSceneWithHouseType(param,this.getToken());
  197. }
  198. /**
  199. *
  200. * 根据场景码返回ar路径
  201. */
  202. @GetMapping("/getArPathByNum")
  203. public Result getArPathByNum(@RequestParam(value = "num") String num){
  204. return scenePlusService.getArPathByNum(num);
  205. }
  206. /**
  207. * 发起带看获取带看房间号
  208. */
  209. @GetMapping("/getTakeLookRoomId")
  210. public Result getTakeLookRoomId(@RequestParam(value = "num") String num){
  211. ScenePlus scenePlus = scenePlusService.getByNum(num);
  212. if(scenePlus == null){
  213. throw new BusinessException(ResultCodeMsg.FAILURE_CODE_400002, ResultCodeMsg.FAILURE_MSG_400002);
  214. }
  215. if(scenePlus.getSceneStatus() != -2){
  216. throw new BusinessException(ResultCodeMsg.FAILURE_CODE_400009, ResultCodeMsg.FAILURE_MSG_400009);
  217. }
  218. FdRoomVo fdRoomVo = takeLookService.getRoomIdByNum(num, scenePlus.getTitle(), getToken());
  219. takeLookService.openRoom(fdRoomVo.getRoomId(),getToken());
  220. return Result.success(fdRoomVo);
  221. }
  222. @GetMapping("/removePortrait")
  223. public Result removePortrait(@RequestParam(value = "num") String num){
  224. sceneProService.removePortrait(num);
  225. return Result.success();
  226. }
  227. @Autowired
  228. FYunFileServiceInterface fYunFileServiceInterface;
  229. @Autowired
  230. FdKKClient fdKKClient;
  231. @PostMapping("/uploadE57")
  232. public Result uploadE57(@RequestParam("file") MultipartFile file,
  233. @RequestParam(value = "isObj",required = false)Integer isObj,
  234. @RequestParam(value = "title",required = false)String title) {
  235. String originalFilename = file.getOriginalFilename();
  236. String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
  237. if(!suffix.equals(".e57")){
  238. throw new BusinessException(ResultCode.UPLOAD_ERROR2);
  239. }
  240. File targetFile = null;
  241. try {
  242. String newFileName = UUID.randomUUID().toString().replace("-","");
  243. String filePath = ConstantFilePath.MANAGE_PATH + "e57" + File.separator + newFileName +suffix;
  244. targetFile = new File(filePath);
  245. if(!targetFile.getParentFile().exists()){
  246. targetFile.getParentFile().mkdirs();
  247. }
  248. file.transferTo(targetFile);
  249. fYunFileServiceInterface.uploadFile(filePath,filePath.replace(ConstantFilePath.MANAGE_PATH,"ucenter/"));
  250. UploadEditSceneParam editSceneParam = new UploadEditSceneParam();
  251. editSceneParam.setTitle(title);
  252. editSceneParam.setUserId(getUser().getId());
  253. editSceneParam.setPath(filePath.replace(ConstantFilePath.MANAGE_PATH,"ucenter/"));
  254. editSceneParam.setIsObj(isObj);
  255. editSceneParam.setOtherType("E57_V4");
  256. JSONObject jsonObject = fdKKClient.reverseScene(editSceneParam);
  257. Integer code = jsonObject.getInteger("code");
  258. if(code != 0){
  259. log.info("调用失败-toFdCreateScene:{}",jsonObject);
  260. throw new BusinessException(ResultCode.UPLOAD_ERROR);
  261. }
  262. }catch (Exception e){
  263. log.info("调用失败-toFdCreateScene:",e);
  264. throw new BusinessException(ResultCode.UPLOAD_ERROR);
  265. }finally {
  266. if(targetFile != null){
  267. try {
  268. FileUtil.del(targetFile);
  269. }catch (Exception e){
  270. log.info("删除文件失败:{}",targetFile.getPath());
  271. }
  272. }
  273. }
  274. return Result.success();
  275. }
  276. @PostMapping("/getUploadUrl")
  277. public Result getUploadUrl( @RequestParam(value = "fileName",required = false)String fileName) {
  278. String newFileName = UUID.randomUUID().toString().replace("-","");
  279. String suffix = fileName.substring(fileName.lastIndexOf("."));
  280. URL presignedUrl = fYunFileServiceInterface.getPresignedUrl("ucenter/e57/" + newFileName + suffix);
  281. HashMap<String, Object> map = new HashMap<>();
  282. map.put("newFileName",newFileName + suffix);
  283. map.put("url",presignedUrl.toString().replace("-internal",""));
  284. return Result.success(map);
  285. }
  286. @PostMapping("/relevanceE57")
  287. public Result relevanceE57( @RequestParam(value = "isObj",required = false)Integer isObj,
  288. @RequestParam(value = "title",required = false)String title,
  289. @RequestParam(value = "newFileName",required = false)String newFileName ){
  290. UploadEditSceneParam editSceneParam = new UploadEditSceneParam();
  291. editSceneParam.setTitle(title);
  292. editSceneParam.setUserId(getUser().getId());
  293. editSceneParam.setPath("ucenter/e57/"+newFileName);
  294. editSceneParam.setIsObj(isObj);
  295. editSceneParam.setOtherType("E57_V4");
  296. JSONObject jsonObject = fdKKClient.reverseScene(editSceneParam);
  297. Integer code = jsonObject.getInteger("code");
  298. if(code != 0){
  299. log.info("调用失败-toFdCreateScene:{}",jsonObject);
  300. throw new BusinessException(ResultCode.UPLOAD_ERROR);
  301. }
  302. return Result.success();
  303. }
  304. }