lyhzzz 2 лет назад
Родитель
Сommit
1a78bd7e89

+ 52 - 12
src/main/java/com/fdkankan/fusion/common/util/ShellUtil.java

@@ -31,20 +31,11 @@ public class ShellUtil {
             // 执行命令, 返回一个子进程对象(命令在子进程中执行)
             log.info("执行cmd:{}",cmd);
             process = Runtime.getRuntime().exec(cmd);
+            // 获取命令执行结果, 有两个结果: 正常的输出 和 错误的输出(PS: 子进程的输出就是主进程的输入)
+            //处理InputStream的线程
+            threadRun(process);
             // 方法阻塞, 等待命令执行完成(成功会返回0)
             process.waitFor();
-            // 获取命令执行结果, 有两个结果: 正常的输出 和 错误的输出(PS: 子进程的输出就是主进程的输入)
-            bufrIn = new BufferedReader(new InputStreamReader(process.getInputStream(), StandardCharsets.UTF_8));
-            bufrError = new BufferedReader(new InputStreamReader(process.getErrorStream(), StandardCharsets.UTF_8));
-            // 读取输出
-//            String line = null;
-//            while ((line = bufrIn.readLine()) != null) {
-//                result.append(line).append('\n');
-//            }
-//            while ((line = bufrError.readLine()) != null) {
-//                result.append(line).append('\n');
-//            }
-
         }catch (Exception e){
             e.printStackTrace();
         }finally {
@@ -59,6 +50,55 @@ public class ShellUtil {
         log.info("执行cmd:{},结果:{},耗时:{}", cmd,result.toString(),System.currentTimeMillis() -startTime);
     }
 
+    private static void threadRun(Process process) {
+        new Thread() {
+            @Override
+            public void run() {
+                BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
+                String line = null;
+                try {
+                    while((line = in.readLine()) != null) {
+                       log.info("output: " + line);
+                    }
+                }
+                catch (IOException e) {
+                    e.printStackTrace();
+                }
+                finally {
+                    try {
+                        in.close();
+                    }
+                    catch (IOException e) {
+                        e.printStackTrace();
+                    }
+                }
+            }
+        }.start();
+        new Thread() {
+            @Override
+            public void run() {
+                BufferedReader err = new BufferedReader(new InputStreamReader(process.getErrorStream()));
+                String line = null;
+                try {
+                    while((line = err.readLine()) != null) {
+                        log.info("err: " + line);
+                    }
+                }
+                catch (IOException e) {
+                    e.printStackTrace();
+                }
+                finally {
+                    try {
+                        err.close();
+                    }
+                    catch (IOException e) {
+                        e.printStackTrace();
+                    }
+                }
+            }
+        }.start();
+    }
+
     private static void closeStream(Closeable stream) {
         if (stream != null) {
             try {

+ 31 - 0
src/main/java/com/fdkankan/fusion/controller/BaseController.java

@@ -0,0 +1,31 @@
+package com.fdkankan.fusion.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.propertyeditors.StringTrimmerEditor;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.domain.Sort.Direction;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.WebDataBinder;
+import org.springframework.web.bind.annotation.InitBinder;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.swing.*;
+import java.io.*;
+import java.util.Date;
+
+public class BaseController {
+
+    @Autowired
+    protected HttpServletRequest request;
+
+    @Autowired
+    protected HttpServletResponse response;
+
+
+    protected String getToken(){
+        return request.getHeader("token");
+    }
+
+}

+ 11 - 10
src/main/java/com/fdkankan/fusion/controller/CaseController.java

@@ -17,33 +17,34 @@ import org.springframework.web.bind.annotation.*;
  */
 @RestController
 @RequestMapping("/case")
-public class CaseController {
+public class CaseController extends BaseController{
 
     @Autowired
     ICaseService caseService;
 
     @PostMapping("/list")
-    public ResultData list(@RequestBody CaseParam param, @RequestHeader String token ){
-
-        return ResultData.ok(caseService.pageList(param,token));
+    public ResultData list(@RequestBody CaseParam param ){
+        return ResultData.ok(caseService.pageList(param,getToken()));
     }
 
     /**
      * 案件关联场景数据
      */
-    @PostMapping("/sceneList")
-    public ResultData sceneList(@RequestBody CaseParam param, @RequestHeader String token ){
-        return ResultData.ok(caseService.sceneList(param,token));
+    @GetMapping("/sceneList")
+    public ResultData sceneList(@RequestParam(required = false) Integer caseId ){
+        CaseParam param = new CaseParam();
+        param.setCaseId(caseId);
+        return ResultData.ok(caseService.sceneList(param,getToken()));
     }
 
     @PostMapping("/addOrUpdate")
-    public ResultData addOrUpdate(@RequestBody CaseParam param, @RequestHeader String token){
-        caseService.addOrUpdate(param,token);
+    public ResultData addOrUpdate(@RequestBody CaseParam param){
+        caseService.addOrUpdate(param,getToken());
         return ResultData.ok();
     }
 
     @PostMapping("/delete")
-    public ResultData delete(@RequestBody CaseParam param, @RequestHeader String token){
+    public ResultData delete(@RequestBody CaseParam param){
         caseService.delete(param.getCaseId());
         return ResultData.ok();
     }

+ 5 - 7
src/main/java/com/fdkankan/fusion/controller/CaseFusionController.java

@@ -27,7 +27,7 @@ import java.util.List;
  */
 @RestController
 @RequestMapping("/caseFusion")
-public class CaseFusionController {
+public class CaseFusionController extends BaseController{
 
     @Autowired
     ICaseFusionService caseFusionService;
@@ -37,15 +37,13 @@ public class CaseFusionController {
     IFusionMeterService fusionMeterService;
 
     @GetMapping("/list")
-    public ResultData allList(@RequestParam(required = false) Integer caseId,
-                              @RequestHeader String token){
-        return ResultData.ok(fusionNumService.getListByCaseId(caseId,null,token));
+    public ResultData allList(@RequestParam(required = false) Integer caseId){
+        return ResultData.ok(fusionNumService.getListByCaseId(caseId,null,getToken()));
     }
 
     @PostMapping("/add")
-    public ResultData add(@RequestBody FusionParam param,
-                          @RequestHeader String token){
-        param.setToken(token);
+    public ResultData add(@RequestBody FusionParam param){
+        param.setToken(getToken());
         return ResultData.ok(fusionNumService.add(param));
     }
 

+ 5 - 6
src/main/java/com/fdkankan/fusion/controller/HotIconController.java

@@ -27,7 +27,7 @@ import java.util.List;
  */
 @RestController
 @RequestMapping("/edit/hotIcon")
-public class HotIconController {
+public class HotIconController extends BaseController{
 
     @Autowired
     IHotIconService hotIconService;
@@ -37,22 +37,21 @@ public class HotIconController {
     UploadService uploadService;
 
     @GetMapping("/list")
-    public ResultData list(@RequestHeader String token){
-        String username = JwtUtil.getUsername(token);
+    public ResultData list(){
+        String username = JwtUtil.getUsername(getToken());
         return ResultData.ok(hotIconService.getListByUserName(username));
     }
 
     @PostMapping("/add")
     public ResultData add(@RequestParam(required = false) MultipartFile file,
-                          @RequestParam(required = false) String iconTitle,
-                          @RequestHeader String token) throws IOException {
+                          @RequestParam(required = false) String iconTitle) throws IOException {
         if(file==null || StringUtils.isEmpty(iconTitle)){
             throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
         }
 
         String iconUrl = uploadService.uploadFile(file, true, "fusion/icon/",null);
 
-        String username = JwtUtil.getUsername(token);
+        String username = JwtUtil.getUsername(getToken());
         HotIcon hotIcon = new HotIcon();
         hotIcon.setIconTitle(iconTitle);
         hotIcon.setIconUrl(iconUrl);

+ 4 - 3
src/main/java/com/fdkankan/fusion/controller/LoginController.java

@@ -7,6 +7,7 @@ import com.fdkankan.fusion.httpClient.client.FdKKClient;
 import com.fdkankan.fusion.httpClient.request.FdkkLoginRequest;
 import com.fdkankan.fusion.httpClient.response.FdkkLoginVo;
 import com.fdkankan.fusion.httpClient.response.FdkkResponse;
+import com.fdkankan.redis.constant.RedisKey;
 import com.fdkankan.redis.util.RedisUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -15,7 +16,7 @@ import javax.annotation.Resource;
 
 @RestController
 @RequestMapping
-public class LoginController {
+public class LoginController extends BaseController{
 
 
     @Resource
@@ -35,13 +36,13 @@ public class LoginController {
     }
 
     @PostMapping("/fdLogout")
-    public ResultData fdLogout(@RequestHeader String token){
+    public ResultData fdLogout(){
 //        FdkkResponse<FdkkLoginVo> fdkkLoginVo = fdKKClient.fdkkLogout(token);
 //        if(fdkkLoginVo.getCode() == 0){
 //            return ResultData.ok(fdkkLoginVo.getData());
 //        }
 //        return ResultData.error(fdkkLoginVo.getCode(),fdkkLoginVo.getMsg());
-        redisUtil.del(token);
+        redisUtil.del(RedisKeyUtil.loginToken +getToken());
         return ResultData.ok();
     }
 }

+ 6 - 7
src/main/java/com/fdkankan/fusion/controller/ModelController.java

@@ -30,7 +30,7 @@ import org.springframework.web.multipart.MultipartFile;
  */
 @RestController
 @RequestMapping("/model")
-public class ModelController {
+public class ModelController extends BaseController{
 
     @Autowired
     IModelService modelService;
@@ -39,16 +39,15 @@ public class ModelController {
 
 
     @PostMapping("/uploadObj")
-    public ResultData uploadObj(@RequestParam(required = false) MultipartFile file,
-                                @RequestHeader String token) throws Exception {
-        String username = JwtUtil.getUsername(token);
+    public ResultData uploadObj(@RequestParam(required = false) MultipartFile file) throws Exception {
+        String username = JwtUtil.getUsername(getToken());
         modelService.uploadObj(file,username);
         return ResultData.ok();
     }
 
     @PostMapping("/list")
-    public ResultData list(@RequestBody ModelPram param,@RequestHeader String token){
-        return ResultData.ok(modelService.pageList(param,token));
+    public ResultData list(@RequestBody ModelPram param){
+        return ResultData.ok(modelService.pageList(param,getToken()));
     }
 
     @GetMapping("/getInfo")
@@ -57,7 +56,7 @@ public class ModelController {
     }
 
     @PostMapping("/delete")
-    public ResultData delete(@RequestBody ModelPram param,@RequestHeader String token){
+    public ResultData delete(@RequestBody ModelPram param){
         if(param.getModelId() == null){
             throw  new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
         }

+ 3 - 3
src/main/java/com/fdkankan/fusion/controller/SceneController.java

@@ -8,13 +8,13 @@ import org.springframework.web.bind.annotation.*;
 
 @RestController
 @RequestMapping("/scene")
-public class SceneController {
+public class SceneController extends BaseController{
 
     @Autowired
     ISceneService sceneService;
 
     @PostMapping("/list")
-    public ResultData list(@RequestBody ScenePram param, @RequestHeader String token){
-        return ResultData.ok(sceneService.pageList(param,token));
+    public ResultData list(@RequestBody ScenePram param){
+        return ResultData.ok(sceneService.pageList(param,getToken()));
     }
 }

+ 5 - 0
src/main/java/com/fdkankan/fusion/httpClient/client/FdKKClient.java

@@ -38,5 +38,10 @@ public interface FdKKClient {
      */
     @Post("/api/fusion/scene/list")
     FdkkResponse sceneList(@JSONBody ScenePram param, @Header("token") String token);
+    /**
+     * 获取v4场景数据
+     */
+    @Post("/api/fusion/scene/list")
+    FdkkResponse sceneList(@JSONBody ScenePram param);
 
 }

+ 5 - 0
src/main/java/com/fdkankan/fusion/httpClient/client/LaserClient.java

@@ -20,4 +20,9 @@ public interface LaserClient {
      */
     @Post("/laser/4dage/sceneList")
     FdkkResponse sceneList(@JSONBody LaserSceneParam param, @Header("fdToken") String token);
+    /**
+     * 获取深时场景数据
+     */
+    @Post("/laser/4dage/managerSceneList")
+    FdkkResponse sceneList(@JSONBody LaserSceneParam param);
 }

+ 31 - 0
src/main/java/com/fdkankan/fusion/interceptor/TokenInterceptor.java

@@ -9,13 +9,17 @@ import com.fdkankan.redis.constant.RedisKey;
 import com.fdkankan.redis.util.RedisUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.tomcat.util.http.MimeHeaders;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.web.servlet.HandlerInterceptor;
 
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
+import java.lang.reflect.Field;
+import java.util.Enumeration;
 
 @Component
 @Slf4j
@@ -29,6 +33,10 @@ public class TokenInterceptor implements HandlerInterceptor {
 		response.setContentType("text/html;charset=UTF-8");
 		String token = request.getHeader("token");
 		if(StringUtils.isEmpty(token)){
+			String share = request.getHeader("share");
+			if(StringUtils.isNotBlank(share) && "1".equals(share) && request.getMethod().equals("GET")){
+				return true;
+			}
 			this.needLogin(request,response);
 			return false;
 		}
@@ -57,5 +65,28 @@ public class TokenInterceptor implements HandlerInterceptor {
 		}
 	}
 
+
+	/**
+	 * 修改header信息,key-value键值对儿加入到header中
+	 */
+	private void reflectSetparam(HttpServletRequest request,String key,String value){
+		Class<? extends HttpServletRequest> requestClass = request.getClass();
+		System.out.println("request实现类="+requestClass.getName());
+		try {
+			Field request1 = requestClass.getDeclaredField("request");
+			request1.setAccessible(true);
+			Object o = request1.get(request);
+			Field coyoteRequest = o.getClass().getDeclaredField("coyoteRequest");
+			coyoteRequest.setAccessible(true);
+			Object o1 = coyoteRequest.get(o);
+			System.out.println("coyoteRequest实现类="+o1.getClass().getName());
+			Field headers = o1.getClass().getDeclaredField("headers");
+			headers.setAccessible(true);
+			MimeHeaders o2 = (MimeHeaders)headers.get(o1);
+			o2.addValue(key).setString(value);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
 }
 

+ 2 - 0
src/main/java/com/fdkankan/fusion/response/SceneVo.java

@@ -19,4 +19,6 @@ public class SceneVo extends Model {
     private Integer viewCount;
     private Boolean isLaser;
     private Integer type;       // 0 四维看看,1看见场景,2 深时场景,3 三维模型
+
+    private String phone;
 }

+ 3 - 0
src/main/java/com/fdkankan/fusion/service/impl/CaseServiceImpl.java

@@ -95,6 +95,9 @@ public class CaseServiceImpl extends ServiceImpl<ICaseMapper, CaseEntity> implem
             for (SceneVo sceneVo : listAll) {
                 String createTime = sceneVo.getCreateTime();
                 Model model = map.get(sceneVo.getNum());
+                if(model == null){
+                    continue;
+                }
                 BeanUtils.copyProperties(model,sceneVo);
                 sceneVo.setCreateTime(createTime);
             }

+ 8 - 1
src/main/java/com/fdkankan/fusion/service/impl/FusionNumServiceImpl.java

@@ -89,11 +89,18 @@ public class FusionNumServiceImpl extends ServiceImpl<IFusionNumMapper, FusionNu
 
         List<FusionNumVo> numVoList = new ArrayList<>();
         for (FusionNum fusionNum : fusionNumList) {
+            SceneVo sceneVo = sceneMap.get(fusionNum.getModelId());
+            if(sceneVo == null ){
+                continue;
+            }
+            if(sceneVo.getStatus() == null){
+                sceneVo.setStatus(2);
+            }
             FusionNumVo fusionNumVo = new FusionNumVo();
             BeanUtils.copyProperties(fusionNum,fusionNumVo);
             Transform transform = JSONObject.parseObject(fusionNum.getTransform(), Transform.class);
             fusionNumVo.setTransform(transform);
-            fusionNumVo.setSceneData(sceneMap.get(fusionNum.getModelId()));
+            fusionNumVo.setSceneData(sceneVo);
             numVoList.add(fusionNumVo);
         }
         return numVoList;

+ 25 - 4
src/main/java/com/fdkankan/fusion/service/impl/SceneService.java

@@ -47,7 +47,12 @@ public class SceneService implements ISceneService {
         long total = 0;
         if(param.getType() == 0 || param.getType() == 1){      //看看,看见
             //获取四维(看看,看见)场景数据
-            FdkkResponse fdkkResponse = fdKKClient.sceneList(param,token);
+            FdkkResponse fdkkResponse = null;
+            if(StringUtils.isNotBlank(token)){
+                fdkkResponse = fdKKClient.sceneList(param,token);
+            }else {
+                fdkkResponse = fdKKClient.sceneList(param);
+            }
             if(fdkkResponse.getCode() !=0){
                 throw new BusinessException(fdkkResponse.getCode(),fdkkResponse.getMsg());
             }
@@ -69,16 +74,29 @@ public class SceneService implements ISceneService {
             if(param.getNumList() != null && param.getNumList().size() >0){
                 laserSceneParam.setSceneCodes(param.getNumList());
             }
-            FdkkResponse fdkkResponse = laserClient.sceneList(laserSceneParam, token);
+            FdkkResponse fdkkResponse = null;
+            if(StringUtils.isNotBlank(token)){
+                fdkkResponse = laserClient.sceneList(laserSceneParam, token);
+            }else {
+                fdkkResponse = laserClient.sceneList(laserSceneParam);
+            }
             if(fdkkResponse.getCode() !=200){
                 throw new BusinessException(fdkkResponse.getCode(),fdkkResponse.getMsg());
             }
-            JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(fdkkResponse.getData())).getJSONObject("pageInfo");
+            JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(fdkkResponse.getData()));
             total = jsonObject.getLong("total");
-            JSONArray list = jsonObject.getJSONArray("list");
+            JSONArray list = null;
+            if(StringUtils.isNotBlank(token)){
+                list = jsonObject.getJSONObject("pageInfo").getJSONArray("list");
+            }else {
+                list = jsonObject.getJSONArray("list");
+            }
             for (Object o : list) {
                 String res = JSONObject.toJSONString(o);
                 SceneVo vo = JSONObject.parseObject(res,SceneVo.class);
+                if(StringUtils.isEmpty(token) && StringUtils.isEmpty(vo.getPhone())){
+                    continue;
+                }
                 vo.setType(2);
                 sceneVoList.add(vo);
             }
@@ -97,6 +115,9 @@ public class SceneService implements ISceneService {
         for (Object obj : list) {
             String res = JSONObject.toJSONString(obj);
             SceneProEntityVo fdkkScenePlusVo = JSONObject.parseObject(res, SceneProEntityVo.class);
+            if(fdkkScenePlusVo.getUserId()== null ){
+                continue;
+            }
             SceneVo sceneVo = new SceneVo();
             sceneVo.setId(fdkkScenePlusVo.getId());
             sceneVo.setBuildObjStatus(0);

+ 8 - 6
src/main/resources/application.yaml

@@ -24,14 +24,16 @@ mybatis-plus:
 4dkk:
   laserService:
     #深时(激光)地址 生产环境:https://laser.4dkankan.com/
-    basePath: http://uat-laser.4dkankan.com
-    port: 80
+    #basePath: http://uat-laser.4dkankan.com
+    #port: 80
+    basePath: http://192.168.0.152:8080
+    port: 8080
   fdService:
     #官网生产环境:https://www.4dkankan.com      http://test.4dkankan.com
-    basePath: http://test.4dkankan.com
-    port: 80
-    #basePath: http://192.168.0.38/4dkankan_v2
-    #port: 8080
+    #basePath: http://test.4dkankan.com
+    #port: 80
+    basePath: http://192.168.0.38/4dkankan_v2
+    port: 8080
   newFdService:
     #官网生产环境:https://www.4dkankan.com
     basePath: http://v4-test.4dkankan.com