SceneApiService.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. package com.fdkankan.ucenter.service.impl;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5. import com.fdkankan.common.exception.BusinessException;
  6. import com.fdkankan.common.util.FileUtils;
  7. import com.fdkankan.redis.constant.RedisKey;
  8. import com.fdkankan.redis.util.RedisUtil;
  9. import com.fdkankan.ucenter.common.PageInfo;
  10. import com.fdkankan.ucenter.common.Result;
  11. import com.fdkankan.ucenter.common.constants.ConstantFilePath;
  12. import com.fdkankan.ucenter.constant.CameraConstant;
  13. import com.fdkankan.ucenter.constant.LoginConstant;
  14. import com.fdkankan.ucenter.entity.*;
  15. import com.fdkankan.ucenter.httpClient.service.LaserService;
  16. import com.fdkankan.ucenter.service.*;
  17. import com.fdkankan.ucenter.util.DateUserUtil;
  18. import com.fdkankan.ucenter.vo.SceneBySnCodeVo;
  19. import com.fdkankan.ucenter.vo.request.SceneParam;
  20. import com.fdkankan.ucenter.vo.response.SceneVo;
  21. import org.apache.commons.lang3.StringUtils;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.stereotype.Service;
  24. import javax.servlet.http.HttpServletRequest;
  25. import java.util.*;
  26. @Service
  27. public class SceneApiService {
  28. @Autowired
  29. RedisUtil redisUtil;
  30. @Autowired
  31. ICameraService cameraService;
  32. @Autowired
  33. ICameraDetailService cameraDetailService;
  34. @Autowired
  35. ISceneService sceneService;
  36. @Autowired
  37. ISceneProService sceneProService;
  38. @Autowired
  39. IScenePlusService scenePlusService;
  40. @Autowired
  41. ISceneEditInfoService sceneEditInfoService;
  42. @Autowired
  43. IScenePlusExtService scenePlusExtService;
  44. @Autowired
  45. ISceneProEditService sceneProEditService;
  46. @Autowired
  47. LaserService laserService;
  48. @Autowired
  49. IUserService userService;
  50. public Result getScenesBySnCode(String snCode, String token) {
  51. User user = checkToken(token);
  52. if(StringUtils.isEmpty(snCode)){
  53. throw new BusinessException(LoginConstant.FAILURE_CODE_3001, LoginConstant.FAILURE_MSG_3001);
  54. }
  55. Camera cameraEntity = cameraService.getBySnCode(snCode);
  56. if(cameraEntity == null ){
  57. throw new BusinessException(CameraConstant.FAILURE_CODE_6018, CameraConstant.FAILURE_MSG_6018);
  58. }
  59. CameraDetail cameraDetailEntity = cameraDetailService.getByCameraId(cameraEntity.getId());
  60. if(cameraDetailEntity == null ){
  61. throw new BusinessException(CameraConstant.FAILURE_CODE_6018, CameraConstant.FAILURE_MSG_6018);
  62. }
  63. if(!cameraDetailEntity.getUserId().equals(user.getId())){
  64. return Result.success();
  65. }
  66. if(cameraDetailEntity.getType() == 10 ){ //激光场景
  67. List<SceneBySnCodeVo> scenesBySnCode = laserService.getScenesBySnCode(snCode, token);
  68. return Result.success(scenesBySnCode);
  69. }
  70. List<SceneBySnCodeVo> sceneVo = new ArrayList<>();
  71. LambdaQueryWrapper<ScenePro> proWr = new LambdaQueryWrapper<>();
  72. proWr.eq(ScenePro::getCameraId,cameraEntity.getId());
  73. proWr.eq(ScenePro::getIsUpgrade,0);
  74. proWr.eq(ScenePro::getUserId,user.getId());
  75. proWr.ne(ScenePro::getSceneSource,11);
  76. List<ScenePro> list = sceneProService.list(proWr);
  77. for (ScenePro scenePro : list) {
  78. SceneBySnCodeVo sceneBySnCodeVo = new SceneBySnCodeVo();
  79. sceneBySnCodeVo.setSceneNum(scenePro.getNum());
  80. sceneBySnCodeVo.setSceneName(scenePro.getSceneName());
  81. sceneVo.add(sceneBySnCodeVo);
  82. }
  83. LambdaQueryWrapper<ScenePlus> pluWr = new LambdaQueryWrapper<>();
  84. pluWr.eq(ScenePlus::getCameraId,cameraEntity.getId());
  85. pluWr.eq(ScenePlus::getUserId,user.getId());
  86. pluWr.ne(ScenePlus::getSceneSource,11);
  87. List<ScenePlus> list1 = scenePlusService.list(pluWr);
  88. for (ScenePlus scenePlus : list1) {
  89. SceneBySnCodeVo sceneBySnCodeVo = new SceneBySnCodeVo();
  90. sceneBySnCodeVo.setSceneNum(scenePlus.getNum());
  91. sceneBySnCodeVo.setSceneName(scenePlus.getTitle());
  92. sceneVo.add(sceneBySnCodeVo);
  93. }
  94. return Result.success(sceneVo);
  95. }
  96. private User checkToken (String token){
  97. if(StringUtils.isEmpty(token)){
  98. throw new BusinessException(3004, "无token参数");
  99. }
  100. String redisKey = String.format(RedisKey.TOKEN_V3,token);
  101. if( !redisUtil.hasKey(redisKey)){
  102. throw new BusinessException(3004, "token参数不正确");
  103. }
  104. User user = userService.getByToken(token);
  105. if(user == null){
  106. throw new BusinessException(LoginConstant.FAILURE_CODE_3001, LoginConstant.FAILURE_MSG_3001);
  107. }
  108. return user;
  109. }
  110. public PageInfo siweiSceneList(HttpServletRequest request, String token) {
  111. User user = checkToken(token);
  112. String pageNumStr = request.getParameter("pageNum");
  113. String pageSizeStr = request.getParameter("pageSize");
  114. String sceneName = request.getParameter("sceneName");
  115. String snCode = request.getParameter("snCode");
  116. String startDate = request.getParameter("startDate");
  117. String endDate = request.getParameter("endDate");
  118. String num = request.getParameter("num");
  119. Integer pageNum = 1;
  120. Integer pageSize = 10;
  121. if(StringUtils.isNotEmpty(pageNumStr)){
  122. pageNum = Integer.valueOf(pageNumStr);
  123. }
  124. if(StringUtils.isNotEmpty(pageSizeStr)){
  125. pageSize = Integer.valueOf(pageSizeStr);
  126. }
  127. SceneParam param = new SceneParam();
  128. param.setHasFolder(0);
  129. param.setPageNum(pageNum);
  130. param.setPageSize(pageSize);
  131. param.setSnCode(snCode);
  132. param.setStartTime(startDate);
  133. param.setEndTime(endDate);
  134. param.setUserId(user.getId());
  135. Page<SceneVo> sceneVoPage = sceneProService.pageListAndFolder(new Page<>(param.getPageNum(),param.getPageSize()),param);
  136. List<Map<String, Object>> list = new ArrayList<>();
  137. for (SceneVo sceneVo : sceneVoPage.getRecords()) {
  138. HashMap<String,Object> map = new HashMap<>();
  139. map.put("num", sceneVo.getNum());
  140. map.put("sceneName", sceneVo.getSceneName());
  141. Camera cameraEntity = cameraService.getById(sceneVo.getCameraId());
  142. if(cameraEntity != null){
  143. map.put("snCode", cameraEntity.getSnCode());
  144. }
  145. map.put("webSite", sceneVo.getWebSite());
  146. map.put("createDate", DateUserUtil.getDate(sceneVo.getCreateTime()).getTime());
  147. map.put("createTime", sceneVo.getCreateTime());
  148. map.put("thumb", sceneVo.getThumb());
  149. map.put("isUpgrade", sceneVo.getIsUpgrade());
  150. if(sceneVo.getIsUpgrade() == 0){
  151. ScenePro scenePro = sceneProService.getById(sceneVo.getId());
  152. if(scenePro!= null){
  153. map.put("shootCount", scenePro.getShootCount());
  154. SceneProEdit sceneProEdit = sceneProEditService.getByProId(scenePro.getId());
  155. map.put("version", sceneProEdit.getVersion());
  156. }
  157. }
  158. if(sceneVo.getIsUpgrade() == 1){
  159. ScenePlus scenePlus = scenePlusService.getById(sceneVo.getId());
  160. if(scenePlus!= null){
  161. ScenePlusExt ext = scenePlusExtService.getByPlusId(scenePlus.getId());
  162. map.put("shootCount", ext.getShootCount());
  163. SceneEditInfo editInfo = sceneEditInfoService.getByScenePlusId(scenePlus.getId());
  164. map.put("version", editInfo.getVersion());
  165. }
  166. }
  167. list.add(map);
  168. }
  169. Page<Map<String, Object>> page = new Page<Map<String, Object>>(pageNum, pageSize);
  170. page.setTotal(sceneVoPage.getTotal());
  171. page.setRecords(list);
  172. return PageInfo.PageInfo(page);
  173. }
  174. public PageInfo loadAllScene(JSONObject param) {
  175. String searchKey = param.getString("searchKey");
  176. Integer pageNum = param.getInteger("pageNum") == null ?1 : param.getInteger("pageNum");
  177. Integer pageSize = param.getInteger("pageSize")== null ?10 : param.getInteger("pageSize");
  178. if(param.getInteger("sceneScheme") == 4){
  179. LambdaQueryWrapper<ScenePro> wrapper = new LambdaQueryWrapper<>();
  180. wrapper.in(ScenePro::getStatus, Arrays.asList(1,-2));
  181. if(StringUtils.isNotEmpty(searchKey)){
  182. wrapper.like(ScenePro::getSceneName,searchKey);
  183. wrapper.or().like(ScenePro::getNum,searchKey);
  184. }
  185. wrapper.orderByDesc(ScenePro::getCreateTime);
  186. Page<ScenePro> proPage = sceneProService.page(new Page<>(pageNum,pageSize),wrapper);
  187. return PageInfo.PageInfo(proPage);
  188. }
  189. LambdaQueryWrapper<Scene> wrapper = new LambdaQueryWrapper<>();
  190. wrapper.in(Scene::getStatus, Arrays.asList(1,-2));
  191. if(StringUtils.isNotEmpty(searchKey)){
  192. wrapper.like(Scene::getSceneName,searchKey);
  193. wrapper.or().like(Scene::getNum,searchKey);
  194. }
  195. wrapper.orderByDesc(Scene::getCreateTime);
  196. Page<Scene> proPage = sceneService.page(new Page<>(pageNum,pageSize),wrapper);
  197. return PageInfo.PageInfo(proPage);
  198. }
  199. public void addDownloadNum(String sceneNum) {
  200. if(StringUtils.isEmpty(sceneNum)){
  201. throw new BusinessException(LoginConstant.FAILURE_CODE_3001, LoginConstant.FAILURE_MSG_3001);
  202. }
  203. ScenePro scenePro = sceneProService.getByNum(sceneNum);
  204. if(scenePro != null){
  205. SceneProEdit sceneProEditEntity = sceneProEditService.getByProId(scenePro.getId());
  206. if(sceneProEditEntity.getDownloadNum() == null){
  207. sceneProEditEntity.setDownloadNum(1);
  208. }else{
  209. sceneProEditEntity.setDownloadNum(sceneProEditEntity.getDownloadNum() + 1);
  210. }
  211. sceneProEditService.updateById(sceneProEditEntity);
  212. }
  213. }
  214. public List<String> getEditDataUrl(String num) {
  215. if(StringUtils.isEmpty(num)){
  216. throw new BusinessException(LoginConstant.FAILURE_CODE_3001, LoginConstant.FAILURE_MSG_3001);
  217. }
  218. List<String> result = new ArrayList<>();
  219. ScenePro scenePro = sceneProService.getByNum(num);
  220. if(scenePro != null){
  221. List<String> urlList = new ArrayList<>();
  222. FileUtils.readfilePath(ConstantFilePath.SCENE_PATH + "data/data" + num, urlList);
  223. FileUtils.readfilePath(ConstantFilePath.SCENE_PATH + "images/images" + num, urlList);
  224. FileUtils.readfilePath(ConstantFilePath.SCENE_PATH + "voice/voice" + num, urlList);
  225. if(urlList.size() > 0){
  226. for(String url : urlList){
  227. result.add(url.replace(ConstantFilePath.BASE_PATH + "/", ""));
  228. }
  229. }
  230. }else {
  231. ScenePlus plus = scenePlusService.getByNum(num);
  232. if(plus != null){
  233. List<String> urlList = new ArrayList<>();
  234. FileUtils.readfilePath(ConstantFilePath.SCENE_V4_PATH + num, urlList);
  235. if(urlList.size() > 0){
  236. for(String url : urlList){
  237. result.add(url.replace(ConstantFilePath.SCENE_V4_PATH , "scene_edit_data/"));
  238. }
  239. }
  240. }
  241. }
  242. return result;
  243. }
  244. }