SceneApiService.java 11 KB

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