ScenePlusServiceImpl.java 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. package com.fdkankan.scene.service.impl;
  2. import cn.hutool.core.io.FileUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  5. import com.fdkankan.common.constant.ConstantFilePath;
  6. import com.fdkankan.common.constant.ErrorCode;
  7. import com.fdkankan.common.constant.PayStatus;
  8. import com.fdkankan.common.constant.UploadFilePath;
  9. import com.fdkankan.common.exception.BusinessException;
  10. import com.fdkankan.common.response.ResultData;
  11. import com.fdkankan.common.util.MatrixToImageWriterUtil;
  12. import com.fdkankan.fyun.oss.UploadToOssUtil;
  13. import com.fdkankan.platform.api.feign.PlatformGoodsClient;
  14. import com.fdkankan.scene.entity.SceneEditInfo;
  15. import com.fdkankan.scene.entity.ScenePlus;
  16. import com.fdkankan.scene.entity.ScenePlusExt;
  17. import com.fdkankan.scene.entity.ScenePro;
  18. import com.fdkankan.scene.entity.SceneProEdit;
  19. import com.fdkankan.scene.entity.SceneProExt;
  20. import com.fdkankan.scene.mapper.IScenePlusMapper;
  21. import com.fdkankan.scene.service.ISceneEditInfoService;
  22. import com.fdkankan.scene.service.IScenePlusExtService;
  23. import com.fdkankan.scene.service.IScenePlusService;
  24. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  25. import com.fdkankan.scene.vo.SceneCheckKeyParamVO;
  26. import java.io.File;
  27. import java.util.Calendar;
  28. import java.util.List;
  29. import java.util.Objects;
  30. import java.util.UUID;
  31. import lombok.extern.slf4j.Slf4j;
  32. import org.springframework.beans.factory.annotation.Autowired;
  33. import org.springframework.beans.factory.annotation.Value;
  34. import org.springframework.stereotype.Service;
  35. import org.springframework.web.multipart.MultipartFile;
  36. /**
  37. * <p>
  38. * 场景主表 服务实现类
  39. * </p>
  40. *
  41. * @author
  42. * @since 2022-03-16
  43. */
  44. @Slf4j
  45. @Service
  46. public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlus> implements IScenePlusService {
  47. @Value("${main.url}")
  48. private String mainUrl;
  49. @Value("${scene.pro.new.url}")
  50. private String sceneProNewUrl;
  51. @Autowired
  52. private IScenePlusExtService scenePlusExtService;
  53. @Autowired
  54. private PlatformGoodsClient platformGoodsClient;
  55. @Autowired
  56. private IScenePlusService scenePlusService;
  57. @Autowired
  58. private ISceneEditInfoService sceneEditInfoService;
  59. @Autowired
  60. private UploadToOssUtil uploadToOssUtil;
  61. @Override
  62. public ScenePlus getScenePlusByNum(String num) {
  63. return this.getOne(new LambdaQueryWrapper<ScenePlus>().eq(ScenePlus::getNum, num));
  64. }
  65. @Override
  66. public ResultData resetSpace(String num) throws Exception{
  67. ScenePlus scenePlus = this.getScenePlusByNum(num);
  68. ScenePlusExt scenePlusExt = scenePlusExtService.getScenePlusExtByPlusId(scenePlus.getId());
  69. if(Objects.isNull(scenePlus)){
  70. log.info("该场景不存在无法重置容量,场景码为:" + num);
  71. return ResultData.error(ErrorCode.FAILURE_CODE_5058);
  72. }
  73. if (scenePlusExt.getSceneScheme() < 4){
  74. log.info("该场景不属于八目相机无法重置容量,场景码为:" + num);
  75. return ResultData.error(ErrorCode.FAILURE_CODE_5057);
  76. }
  77. platformGoodsClient.updateCameraDetailByCameraIdAndSpace(scenePlus.getCameraId(), -scenePlusExt.getSpace());
  78. scenePlusExt.setSpace(Long.parseLong("0"));
  79. scenePlusExtService.updateById(scenePlusExt);
  80. return ResultData.ok();
  81. }
  82. @Override
  83. public ResultData checkKey(SceneCheckKeyParamVO param) throws Exception {
  84. // ScenePro scenePro = sceneProService.getOne(
  85. // new LambdaQueryWrapper<ScenePro>()
  86. // .eq(ScenePro::getNum, param.getNum())
  87. // .eq(ScenePro::getPayStatus, PayStatus.PAY.code()));
  88. ScenePlus scenePlus = scenePlusService.getOne(new LambdaQueryWrapper<ScenePlus>()
  89. .eq(ScenePlus::getNum, param.getNum())
  90. .eq(ScenePlus::getPayStatus, PayStatus.PAY.code()));
  91. if (Objects.isNull(scenePlus)) {
  92. throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
  93. }
  94. SceneEditInfo sceneEditInfo = sceneEditInfoService.getByScenePlusId(scenePlus.getId());
  95. if (Objects.isNull(sceneEditInfo)) {
  96. throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
  97. }
  98. if(!param.getPassword().equals(sceneEditInfo.getScenePassword())){
  99. throw new BusinessException(ErrorCode.FAILURE_CODE_5021);
  100. }
  101. return ResultData.ok();
  102. }
  103. @Override
  104. public ResultData updateScenePlusUserIdByCameraId(List<Long> cameraIdList, Long userId) {
  105. LambdaUpdateWrapper<ScenePlus> updateWrapper = new LambdaUpdateWrapper<ScenePlus>()
  106. .set(ScenePlus::getUserId, userId).in(ScenePlus::getCameraId, cameraIdList);
  107. this.update(updateWrapper);
  108. return ResultData.ok();
  109. }
  110. @Override
  111. public ResultData moveScene(List<String> numList, Long cameraId, Long userId) {
  112. LambdaUpdateWrapper<ScenePlus> updateWrapper =
  113. new LambdaUpdateWrapper<ScenePlus>()
  114. .set(ScenePlus::getUserId, userId)
  115. .set(ScenePlus::getCameraId, cameraId)
  116. .in(ScenePlus::getNum, numList);
  117. this.update(updateWrapper);
  118. return ResultData.ok();
  119. }
  120. @Override
  121. public ResultData uploadShareLogo(String num, MultipartFile file) throws Exception {
  122. ScenePlus scenePlus = this.getScenePlusByNum(num);
  123. if (Objects.isNull(scenePlus)) {
  124. return ResultData.error(ErrorCode.FAILURE_CODE_5005);
  125. }
  126. ScenePlusExt scenePlusExt = scenePlusExtService.getScenePlusExtByPlusId(scenePlus.getId());
  127. String fileName = file.getOriginalFilename();
  128. String extName = fileName.substring(fileName.lastIndexOf("."));
  129. File newFile = File.createTempFile(UUID.randomUUID().toString() ,extName);
  130. file.transferTo(newFile);
  131. String logoPah = newFile.getPath();
  132. String outPathZh = ConstantFilePath.BASE_PATH + File.separator + "sceneQRcode/"+num+".png";
  133. String outPathEn = ConstantFilePath.BASE_PATH + File.separator + "sceneQRcode/"+num+"_en.png";
  134. String webSize = mainUrl + "/" + sceneProNewUrl + num;
  135. //生成新的分享的二维码-中文版本
  136. MatrixToImageWriterUtil.createQRCode(webSize, outPathZh, true, logoPah);
  137. //生成新的分享的二维码-英文版本
  138. MatrixToImageWriterUtil.createQRCode(webSize + "&lang=en", outPathEn, true, logoPah);
  139. //上传二维码
  140. uploadToOssUtil.upload(outPathZh, String.format(UploadFilePath.DOWNLOADS_QRCODE, num) + num + ".png");
  141. uploadToOssUtil.upload(outPathEn, String.format(UploadFilePath.DOWNLOADS_QRCODE, num) + num + "_en.png");
  142. FileUtil.del(newFile);
  143. FileUtil.del(new File(outPathEn));
  144. FileUtil.del(new File(outPathZh));
  145. return ResultData.ok();
  146. }
  147. }