package com.fdkankan.scene.service.impl; import cn.hutool.core.io.FileUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.fdkankan.common.constant.ConstantFilePath; import com.fdkankan.common.constant.ErrorCode; import com.fdkankan.common.constant.PayStatus; import com.fdkankan.common.constant.UploadFilePath; import com.fdkankan.common.exception.BusinessException; import com.fdkankan.common.response.ResultData; import com.fdkankan.common.util.MatrixToImageWriterUtil; import com.fdkankan.fyun.oss.UploadToOssUtil; import com.fdkankan.platform.api.feign.PlatformGoodsClient; import com.fdkankan.scene.entity.SceneEditInfo; import com.fdkankan.scene.entity.ScenePlus; import com.fdkankan.scene.entity.ScenePlusExt; import com.fdkankan.scene.entity.ScenePro; import com.fdkankan.scene.entity.SceneProEdit; import com.fdkankan.scene.entity.SceneProExt; import com.fdkankan.scene.mapper.IScenePlusMapper; import com.fdkankan.scene.service.ISceneEditInfoService; import com.fdkankan.scene.service.IScenePlusExtService; import com.fdkankan.scene.service.IScenePlusService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fdkankan.scene.vo.SceneCheckKeyParamVO; import java.io.File; import java.util.Calendar; import java.util.List; import java.util.Objects; import java.util.UUID; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; /** *

* 场景主表 服务实现类 *

* * @author * @since 2022-03-16 */ @Slf4j @Service public class ScenePlusServiceImpl extends ServiceImpl implements IScenePlusService { @Value("${main.url}") private String mainUrl; @Value("${scene.pro.new.url}") private String sceneProNewUrl; @Autowired private IScenePlusExtService scenePlusExtService; @Autowired private PlatformGoodsClient platformGoodsClient; @Autowired private IScenePlusService scenePlusService; @Autowired private ISceneEditInfoService sceneEditInfoService; @Autowired private UploadToOssUtil uploadToOssUtil; @Override public ScenePlus getScenePlusByNum(String num) { return this.getOne(new LambdaQueryWrapper().eq(ScenePlus::getNum, num)); } @Override public ResultData resetSpace(String num) throws Exception{ ScenePlus scenePlus = this.getScenePlusByNum(num); ScenePlusExt scenePlusExt = scenePlusExtService.getScenePlusExtByPlusId(scenePlus.getId()); if(Objects.isNull(scenePlus)){ log.info("该场景不存在无法重置容量,场景码为:" + num); return ResultData.error(ErrorCode.FAILURE_CODE_5058); } if (scenePlusExt.getSceneScheme() < 4){ log.info("该场景不属于八目相机无法重置容量,场景码为:" + num); return ResultData.error(ErrorCode.FAILURE_CODE_5057); } platformGoodsClient.updateCameraDetailByCameraIdAndSpace(scenePlus.getCameraId(), -scenePlusExt.getSpace()); scenePlusExt.setSpace(Long.parseLong("0")); scenePlusExtService.updateById(scenePlusExt); return ResultData.ok(); } @Override public ResultData checkKey(SceneCheckKeyParamVO param) throws Exception { // ScenePro scenePro = sceneProService.getOne( // new LambdaQueryWrapper() // .eq(ScenePro::getNum, param.getNum()) // .eq(ScenePro::getPayStatus, PayStatus.PAY.code())); ScenePlus scenePlus = scenePlusService.getOne(new LambdaQueryWrapper() .eq(ScenePlus::getNum, param.getNum()) .eq(ScenePlus::getPayStatus, PayStatus.PAY.code())); if (Objects.isNull(scenePlus)) { throw new BusinessException(ErrorCode.FAILURE_CODE_5005); } SceneEditInfo sceneEditInfo = sceneEditInfoService.getByScenePlusId(scenePlus.getId()); if (Objects.isNull(sceneEditInfo)) { throw new BusinessException(ErrorCode.FAILURE_CODE_5005); } if(!param.getPassword().equals(sceneEditInfo.getScenePassword())){ throw new BusinessException(ErrorCode.FAILURE_CODE_5021); } return ResultData.ok(); } @Override public ResultData updateScenePlusUserIdByCameraId(List cameraIdList, Long userId) { LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper() .set(ScenePlus::getUserId, userId).in(ScenePlus::getCameraId, cameraIdList); this.update(updateWrapper); return ResultData.ok(); } @Override public ResultData moveScene(List numList, Long cameraId, Long userId) { LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper() .set(ScenePlus::getUserId, userId) .set(ScenePlus::getCameraId, cameraId) .in(ScenePlus::getNum, numList); this.update(updateWrapper); return ResultData.ok(); } @Override public ResultData uploadShareLogo(String num, MultipartFile file) throws Exception { ScenePlus scenePlus = this.getScenePlusByNum(num); if (Objects.isNull(scenePlus)) { return ResultData.error(ErrorCode.FAILURE_CODE_5005); } ScenePlusExt scenePlusExt = scenePlusExtService.getScenePlusExtByPlusId(scenePlus.getId()); String fileName = file.getOriginalFilename(); String extName = fileName.substring(fileName.lastIndexOf(".")); File newFile = File.createTempFile(UUID.randomUUID().toString() ,extName); file.transferTo(newFile); String logoPah = newFile.getPath(); String outPathZh = ConstantFilePath.BASE_PATH + File.separator + "sceneQRcode/"+num+".png"; String outPathEn = ConstantFilePath.BASE_PATH + File.separator + "sceneQRcode/"+num+"_en.png"; String webSize = mainUrl + "/" + sceneProNewUrl + num; //生成新的分享的二维码-中文版本 MatrixToImageWriterUtil.createQRCode(webSize, outPathZh, true, logoPah); //生成新的分享的二维码-英文版本 MatrixToImageWriterUtil.createQRCode(webSize + "&lang=en", outPathEn, true, logoPah); //上传二维码 uploadToOssUtil.upload(outPathZh, String.format(UploadFilePath.DOWNLOADS_QRCODE, num) + num + ".png"); uploadToOssUtil.upload(outPathEn, String.format(UploadFilePath.DOWNLOADS_QRCODE, num) + num + "_en.png"); FileUtil.del(newFile); FileUtil.del(new File(outPathEn)); FileUtil.del(new File(outPathZh)); return ResultData.ok(); } }