123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- 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;
- /**
- * <p>
- * 场景主表 服务实现类
- * </p>
- *
- * @author
- * @since 2022-03-16
- */
- @Slf4j
- @Service
- public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlus> 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<ScenePlus>().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<ScenePro>()
- // .eq(ScenePro::getNum, param.getNum())
- // .eq(ScenePro::getPayStatus, PayStatus.PAY.code()));
- ScenePlus scenePlus = scenePlusService.getOne(new LambdaQueryWrapper<ScenePlus>()
- .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<Long> cameraIdList, Long userId) {
- LambdaUpdateWrapper<ScenePlus> updateWrapper = new LambdaUpdateWrapper<ScenePlus>()
- .set(ScenePlus::getUserId, userId).in(ScenePlus::getCameraId, cameraIdList);
- this.update(updateWrapper);
- return ResultData.ok();
- }
- @Override
- public ResultData moveScene(List<String> numList, Long cameraId, Long userId) {
- LambdaUpdateWrapper<ScenePlus> updateWrapper =
- new LambdaUpdateWrapper<ScenePlus>()
- .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();
- }
- }
|