AppCameraService.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. package com.fdkankan.ucenter.service.impl;
  2. import com.amazonaws.services.devopsguru.model.ListInsightsOngoingStatusFilter;
  3. import com.amazonaws.services.simpleworkflow.flow.annotations.NoWait;
  4. import com.fdkankan.common.constant.AppConstant;
  5. import com.fdkankan.common.constant.ErrorCode;
  6. import com.fdkankan.common.exception.BusinessException;
  7. import com.fdkankan.common.util.FileSizeUtil;
  8. import com.fdkankan.ucenter.constant.CameraConstant;
  9. import com.fdkankan.ucenter.constant.LoginConstant;
  10. import com.fdkankan.ucenter.entity.*;
  11. import com.fdkankan.ucenter.service.*;
  12. import com.fdkankan.ucenter.vo.response.AppCameraSpace;
  13. import com.fdkankan.ucenter.vo.response.CameraAppVo;
  14. import com.fdkankan.ucenter.vo.response.GroupByCount;
  15. import org.apache.commons.lang3.StringUtils;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.stereotype.Service;
  18. import org.springframework.util.ObjectUtils;
  19. import java.math.BigInteger;
  20. import java.util.Collections;
  21. import java.util.HashMap;
  22. import java.util.List;
  23. import java.util.stream.Collectors;
  24. @Service
  25. public class AppCameraService {
  26. @Autowired
  27. IUserService userService;
  28. @Autowired
  29. ICameraDetailService cameraDetailService;
  30. @Autowired
  31. ICameraService cameraService;
  32. @Autowired
  33. ISceneProService sceneProService;
  34. @Autowired
  35. IScenePlusService scenePlusService;
  36. @Autowired
  37. IScenePlusExtService scenePlusExtService;
  38. @Autowired
  39. IUserIncrementService userIncrementService;
  40. @Autowired
  41. IIncrementTypeService incrementTypeService;
  42. @Autowired
  43. ICameraIncrementLogService cameraIncrementLogService;
  44. public List<CameraAppVo> getCameraForUser(String userName, Integer cameraType) {
  45. if(StringUtils.isEmpty(userName) || cameraType == null){
  46. throw new BusinessException(LoginConstant.FAILURE_CODE_3001, LoginConstant.FAILURE_MSG_3001);
  47. }
  48. User user = userService.getByUserName(userName);
  49. if(user == null){
  50. throw new BusinessException(LoginConstant.FAILURE_CODE_3015, LoginConstant.FAILURE_MSG_3015);
  51. }
  52. List<CameraAppVo> cameraAppVoList = cameraDetailService.getListByUserAndType(user.getId(), cameraType);
  53. setIncrementInfo(cameraAppVoList,null);
  54. return cameraAppVoList;
  55. }
  56. private void setIncrementInfo(List<CameraAppVo> cameraAppVoList, HashMap<Long, GroupByCount> sceneNumMap){
  57. for (CameraAppVo cameraApp : cameraAppVoList) {
  58. if(sceneNumMap != null){
  59. Long sceneCount = sceneNumMap.get(cameraApp.getId()) == null ? 0L : sceneNumMap.get(cameraApp.getId()).getCount();
  60. cameraApp.setSceneCount(Math.toIntExact(sceneCount));
  61. }
  62. UserIncrement userIncrementEntity = userIncrementService.getByCameraId(cameraApp.getCameraId());
  63. if(userIncrementEntity != null){
  64. cameraApp.setMemberLevels(userIncrementEntity.getMemberLevels());
  65. cameraApp.setUserIncrementId(userIncrementEntity.getId());
  66. cameraApp.setIsExpire(userIncrementEntity.getIsExpired());
  67. IncrementType incrementType = incrementTypeService.getById(userIncrementEntity.getIncrementTypeId());
  68. if(incrementType == null || userIncrementEntity.getIsExpired() == 1){
  69. continue;
  70. }
  71. if("GB".equals(cameraApp.getUnit())){
  72. cameraApp.setTotalSpace( BigInteger.valueOf(incrementType.getCameraCapacity() * 1024L *1024L*1024L));
  73. }
  74. if("SP".equals(cameraApp.getUnit())){
  75. cameraApp.setTotalSpace(BigInteger.valueOf(incrementType.getCameraSpace()));
  76. }
  77. }
  78. }
  79. }
  80. public CameraAppVo bindCamera(String userName, String snCode) {
  81. User user = userService.getByUserName(userName);
  82. if(user == null){
  83. throw new BusinessException(AppConstant.FAILURE_CODE_4007, AppConstant.FAILURE_MSG_4007);
  84. }
  85. Camera camera = null;
  86. if(snCode.contains("_")){
  87. camera = cameraService.getByWfiName(snCode);
  88. }else {
  89. camera = cameraService.getBySnCode(snCode);
  90. }
  91. if(camera == null){
  92. throw new BusinessException(AppConstant.FAILURE_CODE_4010, AppConstant.FAILURE_MSG_4010);
  93. }
  94. CameraDetail cameraDetail = cameraDetailService.getByCameraId(camera.getId());
  95. if(cameraDetail == null){
  96. throw new BusinessException(AppConstant.FAILURE_CODE_4010, AppConstant.FAILURE_MSG_4010);
  97. }
  98. if (cameraDetail.getUserId() != null){
  99. throw new BusinessException(CameraConstant.FAILURE_CODE_6006, CameraConstant.FAILURE_MSG_6006);
  100. }
  101. List<Long> cameraIds = Collections.singletonList(camera.getId());
  102. cameraDetail.setUserId(user.getId());
  103. cameraIncrementLogService.saveLog(camera.getId(),null,user.getId(),2);
  104. cameraDetailService.bindCamera(cameraIds,user);
  105. sceneProService.bindOrUnCamera(cameraIds,user.getId());
  106. scenePlusService.bindOrUnCamera(cameraIds,user.getId());
  107. CameraAppVo responseCamera = new CameraAppVo();
  108. responseCamera.setChildName(camera.getChildName());
  109. responseCamera.setUnit(cameraDetail.getUnit());
  110. responseCamera.setUsedSpace(BigInteger.valueOf(cameraDetail.getUsedSpace()));
  111. responseCamera.setTotalSpace(BigInteger.valueOf(cameraDetail.getTotalSpace()));
  112. if("GB".equals(cameraDetail.getUnit())){
  113. responseCamera.setUsedSpaceStr(FileSizeUtil.formatFileSize(cameraDetail.getUsedSpace()));
  114. responseCamera.setTotalSpaceStr(FileSizeUtil.formatFileSize(cameraDetail.getTotalSpace()));
  115. }
  116. if("SP".equals(cameraDetail.getUnit())){
  117. responseCamera.setUsedSpaceStr(String.valueOf(cameraDetail.getUsedSpace()));
  118. responseCamera.setTotalSpaceStr(String.valueOf(cameraDetail.getTotalSpace()));
  119. }
  120. return responseCamera;
  121. }
  122. public void unbindCamera(String userName, String childName) {
  123. User user = userService.getByUserName(userName);
  124. if(user == null){
  125. throw new BusinessException(AppConstant.FAILURE_CODE_4007, AppConstant.FAILURE_MSG_4007);
  126. }
  127. Camera camera = cameraService.getByChildName(childName);
  128. if(camera == null){
  129. throw new BusinessException(AppConstant.FAILURE_CODE_4010, AppConstant.FAILURE_MSG_4010);
  130. }
  131. CameraDetail cameraDetail = cameraDetailService.getByCameraId(camera.getId());
  132. if(cameraDetail == null){
  133. throw new BusinessException(AppConstant.FAILURE_CODE_4010, AppConstant.FAILURE_MSG_4010);
  134. }
  135. if(!user.getId().equals(cameraDetail.getUserId())){
  136. throw new BusinessException(CameraConstant.FAILURE_CODE_6005, CameraConstant.FAILURE_MSG_6005);
  137. }
  138. List<Long> cameraIds = Collections.singletonList(camera.getId());
  139. UserIncrement userIncrement = userIncrementService.getByCameraId(camera.getId());
  140. if(userIncrement != null){
  141. cameraIncrementLogService.saveLog(camera.getId(),userIncrement.getId(),user.getId(),1);
  142. }
  143. cameraIncrementLogService.saveLog(camera.getId(),null,user.getId(),3);
  144. userIncrementService.unbindCamera(cameraIds); //取消关联用户权益
  145. cameraDetailService.unbindCamera(cameraIds); //取消相机用户关联
  146. sceneProService.bindOrUnCamera(cameraIds,null); //取消关联场景
  147. scenePlusService.bindOrUnCamera(cameraIds,null); //取消关联场景
  148. }
  149. public CameraAppVo getCameraInfo(String childName, String childPassword) {
  150. if(StringUtils.isEmpty(childName) || StringUtils.isEmpty(childPassword)){
  151. throw new BusinessException(LoginConstant.FAILURE_CODE_3001, LoginConstant.FAILURE_MSG_3001);
  152. }
  153. List<CameraAppVo> cameraAppVos = cameraService.getCameraInfo(childName,childPassword);
  154. if(cameraAppVos.size()<=0){
  155. return null;
  156. }
  157. List<Long> cameraIdList = cameraAppVos.parallelStream().map(CameraAppVo::getId).collect(Collectors.toList());
  158. //场景数量,最后拍摄时间
  159. HashMap<Long, GroupByCount> sceneNumMap = sceneProService.findSceneNumByCameraIds(cameraIdList);
  160. setIncrementInfo(cameraAppVos,sceneNumMap);
  161. return cameraAppVos.get(0);
  162. }
  163. public void uploadUserCameraInfo(String snCode, String cameraVersion, String appVersion) {
  164. Camera cameraEntity = cameraService.getBySnCode(snCode);
  165. if(ObjectUtils.isEmpty(cameraEntity)){
  166. return;
  167. }
  168. cameraDetailService.uploadUserCameraInfo(cameraEntity.getId(),cameraVersion,appVersion);
  169. }
  170. public AppCameraSpace checkCameraSpace(String snCode,String unicode) {
  171. Camera camera = cameraService.getBySnCode(snCode);
  172. if(camera == null){
  173. throw new BusinessException(CameraConstant.FAILURE_CODE_6029, CameraConstant.FAILURE_MSG_6029);
  174. }
  175. CameraDetail cameraDetail = cameraDetailService.getByCameraId(camera.getId());
  176. if(cameraDetail == null){
  177. throw new BusinessException(CameraConstant.FAILURE_CODE_6029, CameraConstant.FAILURE_MSG_6029);
  178. }
  179. Long sapce = cameraDetail.getUsedSpace();
  180. if("SP".equals(cameraDetail.getUnit())){
  181. Long proCount = sceneProService.getCountByCameraId(cameraDetail.getCameraId(),true);
  182. Long pulsCount = scenePlusService.getCountByCameraId(cameraDetail.getCameraId(), true);
  183. sapce = proCount + pulsCount;
  184. if(StringUtils.isNotBlank(unicode)){
  185. ScenePro scenePro = sceneProService.getByUnicode(unicode);
  186. ScenePlusExt scenePlusExt = scenePlusExtService.getByUnicode(unicode);
  187. if(scenePro != null || scenePlusExt !=null){
  188. if(scenePro!= null && scenePro.getStatus() != null && scenePro.getStatus() !=-1 && scenePro.getPayStatus() != null && scenePro.getPayStatus() !=1){
  189. return new AppCameraSpace(0L,cameraDetail.getUnit());
  190. }
  191. if(scenePlusExt!= null ){
  192. ScenePlus scenePlus = scenePlusService.getById(scenePlusExt.getPlusId());
  193. if(scenePlus != null && scenePlus.getSceneStatus() != null && scenePlus.getSceneStatus() !=-1 && scenePlus.getPayStatus() != null && scenePlus.getPayStatus() != 1){
  194. return new AppCameraSpace(0L,cameraDetail.getUnit());
  195. }
  196. }
  197. return new AppCameraSpace(1L,cameraDetail.getUnit());
  198. }
  199. }
  200. }
  201. Long totalSpace = cameraDetailService.getTotalSpaceByCameraId(cameraDetail);
  202. if(totalSpace != -1){
  203. totalSpace = totalSpace - sapce;
  204. totalSpace = totalSpace < 0 ? 0L : totalSpace;
  205. }
  206. return new AppCameraSpace(totalSpace,cameraDetail.getUnit());
  207. }
  208. }