123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375 |
- package com.fdkankan.scene.controller;
- import cn.hutool.core.bean.BeanUtil;
- import cn.hutool.core.io.FileUtil;
- import cn.hutool.core.util.StrUtil;
- import cn.hutool.extra.qrcode.QrCodeUtil;
- import cn.hutool.extra.qrcode.QrConfig;
- import com.fdkankan.common.constant.ErrorCode;
- import com.fdkankan.common.constant.LoginType;
- import com.fdkankan.common.exception.BusinessException;
- import com.fdkankan.common.util.JwtUtil;
- import com.fdkankan.common.util.SecurityUtil;
- import com.fdkankan.model.constants.ConstantFilePath;
- import com.fdkankan.scene.bean.RequestScene;
- import com.fdkankan.scene.bean.ResponseSceneDataDownload;
- import com.fdkankan.scene.entity.Camera;
- import com.fdkankan.scene.entity.CameraDetail;
- import com.fdkankan.scene.entity.SceneCooperation;
- import com.fdkankan.scene.entity.SceneDataDownload;
- import com.fdkankan.scene.entity.SceneProEdit;
- import com.fdkankan.scene.entity.User;
- import com.fdkankan.scene.service.ICameraDetailService;
- import com.fdkankan.scene.service.ICameraService;
- import com.fdkankan.scene.service.ISceneCooperationService;
- import com.fdkankan.scene.service.ISceneDataDownloadService;
- import com.fdkankan.scene.service.ISceneProEditService;
- import com.fdkankan.scene.service.IUserService;
- import com.fdkankan.web.model.SSOUser;
- import com.fdkankan.web.response.Result;
- import com.fdkankan.web.response.ResultData;
- import com.fdkankan.scene.bean.RequestRebuildVedioScene;
- import com.fdkankan.scene.bean.RequestSceneCooperation;
- import com.fdkankan.scene.bean.ResponseVideoSceneProgress;
- import com.fdkankan.scene.entity.ScenePro;
- import com.fdkankan.scene.service.IPicSceneProgressService;
- import com.fdkankan.scene.service.ISceneProService;
- import com.fdkankan.scene.service.ISceneService;
- import com.fdkankan.scene.service.IVideoSceneProgressService;
- import com.fdkankan.web.controller.BaseController;
- import com.fdkankan.web.user.SSOLoginHelper;
- import java.io.File;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.beans.BeanUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.web.bind.annotation.GetMapping;
- import org.springframework.web.bind.annotation.PostMapping;
- import org.springframework.web.bind.annotation.RequestBody;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.bind.annotation.RequestParam;
- import org.springframework.web.bind.annotation.RestController;
- @Slf4j
- @RestController
- @RequestMapping("/service/scenev3")
- public class SceneController extends BaseController {
- @Autowired
- private ISceneService sceneService;
- @Autowired
- private ISceneProService sceneProService;
- @Autowired
- private IVideoSceneProgressService videoSceneProgressService;
- @Autowired
- private IPicSceneProgressService picSceneProgressService;
- @Autowired
- private ISceneProEditService sceneProEditService;
- @Autowired
- private ISceneDataDownloadService sceneDataDownloadService;
- @Autowired
- private ICameraService cameraService;
- @Autowired
- private ICameraDetailService cameraDetailService;
- @Autowired
- private SSOLoginHelper ssoLoginHelper;
- @Autowired
- private ISceneCooperationService sceneCooperationService;
- @Value("${scene.pro.url}")
- private String sceneProUrl;
- @Value("${scene.pro.v3.url}")
- private String sceneProV3Url;
- @Value("${scene.pro.new.url}")
- private String sceneProV4Url;
- @Value("${main.url}")
- private String mainUrl;
- @Autowired
- private IUserService userService;
- /**
- * 是否已登录
- * @return
- */
- @PostMapping(value = "/isLogin")
- public ResultData isLogin(@RequestParam("num") String num) throws Exception{
- return sceneService.isLogin(num, this.getSsoUser());
- }
- /**
- * 协作者根据场景码获取场景资源集合
- * @return
- */
- @RequestMapping(value = "/sceneResourceBySceneNum", method = RequestMethod.POST)
- public ResultData sceneResourceBySceneNum(@RequestBody RequestSceneCooperation cooperation) throws Exception{
- return sceneService.sceneResourceBySceneNum(cooperation, this.getSsoUserV3());
- }
- /**
- * app录音获取录音文件版本
- */
- @RequestMapping(value = "/getVoiceSound")
- public ResultData getVoiceSound(HttpServletRequest request) throws Exception {
- String sceneNum = request.getParameter("num");
- return sceneService.getVoiceSound(sceneNum);
- }
- /**
- * 获取场景详情
- */
- @RequestMapping(value = "/getInfo")
- public ResultData getInfo(HttpServletRequest request) throws Exception {
- String sceneNum = request.getParameter("num");
- return sceneProService.getInfo(sceneNum);
- }
- /**
- * 场景模型重新计算
- */
- @RequestMapping(value = "/rebuildVideoScene", method = RequestMethod.POST)
- public ResultData rebuildVideoScene(@RequestBody RequestRebuildVedioScene requestRebuildVedioScene) throws Exception {
- return sceneService.rebuildVideoScene(requestRebuildVedioScene);
- }
- /**
- * 场景视频重新计算进度
- */
- @RequestMapping(value = "/rebuildVideoSceneProgress", method = RequestMethod.POST)
- public ResultData rebuildVideoSceneProgress(@RequestBody RequestRebuildVedioScene requestRebuildVedioScene) throws Exception {
- if(StringUtils.isEmpty(requestRebuildVedioScene.getSceneNum())){
- throw new BusinessException(ErrorCode.FAILURE_CODE_3001);
- }
- ScenePro sceneProEntity = sceneProService.findBySceneNum(requestRebuildVedioScene.getSceneNum());
- if(null == sceneProEntity){
- throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
- }
- return ResultData.ok(videoSceneProgressService.findVideoSceneProgress(requestRebuildVedioScene));
- }
- /**
- * 场景图片重新计算
- */
- @RequestMapping(value = "/rebuildPicScene", method = RequestMethod.POST)
- public ResultData rebuildPicScene(@RequestBody RequestRebuildVedioScene requestRebuildVedioScene) throws Exception {
- return sceneService.rebuildPicScene(requestRebuildVedioScene);
- }
- /**
- * 场景图片重新计算进度
- */
- @RequestMapping(value = "/rebuildPicSceneProgress", method = RequestMethod.POST)
- public ResultData rebuildPicSceneProgress(@RequestBody RequestRebuildVedioScene requestRebuildVedioScene) throws Exception {
- if(StrUtil.isEmpty(requestRebuildVedioScene.getSceneNum())){
- throw new BusinessException(ErrorCode.FAILURE_CODE_3001);
- }
- ScenePro sceneProEntity = sceneProService.findBySceneNum(requestRebuildVedioScene.getSceneNum());
- if(null == sceneProEntity){
- throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
- }
- ResponseVideoSceneProgress picSceneProgress = picSceneProgressService.findPicSceneProgress(requestRebuildVedioScene);
- return ResultData.ok(picSceneProgress.getRebuildResult());
- }
- /**
- * 根据场景密码打开场景
- */
- @RequestMapping(value = "/openSceneBykey")
- public ResultData openSceneBykey(HttpServletRequest request) throws Exception {
- String sceneNum = request.getParameter("num");
- String sceneKey = request.getParameter("sceneKey");
- if (StringUtils.isEmpty(sceneNum) || StringUtils.isEmpty(sceneKey)) {
- throw new BusinessException(ErrorCode.FAILURE_CODE_3001);
- }
- ScenePro scenePro = sceneProService.findBySceneNum(sceneNum);
- if (scenePro == null) {
- throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
- }
- if (scenePro.getPayStatus() != 1) {
- throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
- }
- SceneProEdit editEntity = sceneProEditService.findBySceneProId(scenePro.getId());
- if (editEntity == null) {
- throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
- }
- if(!sceneKey.equals(editEntity.getSceneKey())){
- throw new BusinessException(ErrorCode.FAILURE_CODE_5021);
- }
- return ResultData.ok();
- }
- /**
- * 获取数据对接下载信息
- */
- @RequestMapping(value = "/downLoadZSData", method = RequestMethod.GET)
- public ResultData downLoadZSData(HttpServletRequest request) throws Exception{
- String sceneNum = request.getParameter("sceneNum");
- if(StrUtil.isEmpty(sceneNum)){
- throw new BusinessException(ErrorCode.FAILURE_CODE_3001);
- }
- ScenePro sceneProEntity = sceneProService.findBySceneNum(sceneNum);
- if(sceneProEntity == null){
- throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
- }
- SceneDataDownload sceneDataDownloadEntity = sceneDataDownloadService.findBySceneNum(sceneNum);
- if(sceneDataDownloadEntity == null){
- throw new BusinessException(ErrorCode.FAILURE_CODE_5025);
- }
- ResponseSceneDataDownload responseSceneDataDownload = new ResponseSceneDataDownload();
- BeanUtils.copyProperties(sceneDataDownloadEntity, responseSceneDataDownload);
- return ResultData.ok(responseSceneDataDownload);
- }
- /**
- * <p>
- 跳转到编辑页面
- * </p>
- * @author dengsixing
- * @date 2022/9/6
- * @param request
- * @param response
- **/
- @RequestMapping("goEditScenePage")
- public void goEditScenePage(HttpServletRequest request, HttpServletResponse response) throws Exception{
- String phoneNum = request.getParameter("phoneNum");
- String password = request.getParameter("password");
- String sceneNum = request.getParameter("sceneNum");
- String childName = request.getParameter("childName");
- String lang = request.getParameter("lang");
- String vlog = request.getParameter("vlog");
- ScenePro scene = sceneProService.findBySceneNum(sceneNum);
- if(scene == null) {
- throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
- }
- if(StrUtil.isNotEmpty(childName)){
- Camera cameraEntity = cameraService.findByChildName(childName);
- if(cameraEntity != null){
- CameraDetail cameraDetailEntity = cameraDetailService.findByCameraId(cameraEntity.getId());
- if(cameraDetailEntity != null && cameraDetailEntity.getCooperationUser() != null){
- throw new BusinessException(ErrorCode.FAILURE_CODE_5014);
- }
- SSOUser dbUser = new SSOUser();
- dbUser.setUserName(childName);
- dbUser.setId(scene.getUserId());
- if(dbUser.getId() == null){
- dbUser.setCameraLogin(1);
- dbUser.setCameraId(cameraEntity.getId());
- }
- String token = JwtUtil.createJWT(-1, childName, LoginType.USER.code());
- ssoLoginHelper.loginV3(token, dbUser);
- //登录成功
- if(scene.getWebSite().contains(sceneProUrl)){
- response.sendRedirect(mainUrl + "/" + sceneProUrl.replace("show", "edit").replace("PC", "Mobile") +
- sceneNum + "&t=" +System.currentTimeMillis() + "&token=" + token + "&app" +
- (lang == null ? "" : "&lang=" + lang) + (vlog == null ? "" : "&vlog=" + vlog));
- }
- if(scene.getIsUpgrade() != null && scene.getIsUpgrade() == 1){
- if(scene.getWebSite().contains(sceneProV4Url)){
- response.sendRedirect(mainUrl + "/" + sceneProV4Url.replace("s", "e") +
- sceneNum + "&t=" +System.currentTimeMillis() + "&token=" + token + "&app" +
- (lang == null ? "" : "&lang=" + lang) + (vlog == null ? "" : "&vlog=" + vlog));
- return;
- }
- }
- if(scene.getWebSite().contains(sceneProV3Url)){
- response.sendRedirect(mainUrl + "/" + sceneProV3Url.replace("s", "e") +
- sceneNum + "&t=" +System.currentTimeMillis() + "&token=" + token + "&app" +
- (lang == null ? "" : "&lang=" + lang) + (vlog == null ? "" : "&vlog=" + vlog));
- }
- return;
- }
- }
- if(StringUtils.isEmpty(phoneNum) || StringUtils.isEmpty(password)
- || StringUtils.isEmpty(sceneNum)){
- throw new BusinessException(ErrorCode.FAILURE_CODE_3001);
- }
- if(scene.getUserId()==null)
- throw new BusinessException(ErrorCode.FAILURE_CODE_5013);
- User user = userService.findByUserName(phoneNum);
- if(user == null){
- throw new BusinessException(ErrorCode.FAILURE_CODE_3015);
- }
- if(user.getId().longValue() != scene.getUserId().longValue()) {
- SceneCooperation sceneCooperationEntity = sceneCooperationService.getByNumAndUserId(sceneNum, user.getId());
- if(sceneCooperationEntity == null){
- throw new BusinessException(ErrorCode.FAILURE_CODE_5014);
- }
- }
- if(!SecurityUtil.MD5(password).equals(user.getPassword()))
- {
- throw new BusinessException(ErrorCode.FAILURE_CODE_3015);
- }
- String token = JwtUtil.createJWT(-1, user.getUserName(), LoginType.USER.code());
- ssoLoginHelper.loginV3(token, BeanUtil.copyProperties(user, SSOUser.class));
- //登录成功
- if(scene.getWebSite().contains(sceneProUrl)){
- response.sendRedirect(mainUrl + "/" + sceneProUrl.replace("show", "edit").replace("PC", "Mobile") +
- sceneNum + "&t=" +System.currentTimeMillis() + "&token=" + token + "&app" +
- (lang == null ? "" : "&lang=" + lang) + (vlog == null ? "" : "&vlog=" + vlog));
- }
- if(scene.getIsUpgrade() != null && scene.getIsUpgrade() == 1){
- if(scene.getWebSite().contains(sceneProV4Url)){
- response.sendRedirect(mainUrl + "/" + sceneProV4Url.replace("s", "e") +
- sceneNum + "&t=" +System.currentTimeMillis() + "&token=" + token + "&app" +
- (lang == null ? "" : "&lang=" + lang) + (vlog == null ? "" : "&vlog=" + vlog));
- return;
- }
- }
- if(scene.getWebSite().contains(sceneProV3Url)) {
- response.sendRedirect(mainUrl + "/" + sceneProV3Url.replace("s", "e") +
- sceneNum + "&t=" + System.currentTimeMillis() + "&token=" + token + "&app" +
- (lang == null ? "" : "&lang=" + lang) + (vlog == null ? "" : "&vlog=" + vlog));
- }
- }
- @PostMapping("/createScene")
- public Result createScene(@RequestBody RequestScene param) throws Exception{
- return sceneProService.createScene(param);
- }
- /**
- * 创建sketch场景分享二维码的logo
- */
- @GetMapping(value = "/createSketchQrLogo")
- public Result createSketchQrLogo(HttpServletRequest request) throws Exception{
- String sceneNum = request.getParameter("sceneNum");
- if(StringUtils.isEmpty(sceneNum)){
- throw new BusinessException(ErrorCode.FAILURE_CODE_3001);
- }
- //生成二维码
- QrCodeUtil.generate(mainUrl + "/" + sceneProV3Url + sceneNum, QrConfig.create(), FileUtil.file(ConstantFilePath.BASE_PATH + File.separator + "sceneQRcode/"+sceneNum+".png"));
- QrCodeUtil.generate(mainUrl + "/" + sceneProV3Url + sceneNum + "&lang=en", QrConfig.create(), FileUtil.file(ConstantFilePath.BASE_PATH + File.separator + "sceneQRcode/"+sceneNum+"_en.png"));
- return Result.success();
- }
- }
|