package com.fdkankan.scene.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.exceptions.ExceptionUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.fdkankan.common.constant.CommonStatus; import com.fdkankan.common.constant.ConstantFilePath; import com.fdkankan.common.constant.ErrorCode; import com.fdkankan.common.constant.UploadFilePath; import com.fdkankan.common.response.ResultData; import com.fdkankan.common.util.FileUtil; import com.fdkankan.common.util.FileUtils; import com.fdkankan.common.util.MatrixToImageWriterUtil; import com.fdkankan.fyun.oss.UploadToOssUtil; import com.fdkankan.rabbitmq.util.RabbitMqProducer; import com.fdkankan.redis.constant.RedisKey; import com.fdkankan.redis.constant.RedisLockKey; import com.fdkankan.redis.util.RedisLockUtil; import com.fdkankan.redis.util.RedisUtil; import com.fdkankan.scene.bean.SceneJsonBean; import com.fdkankan.scene.entity.SceneEditControls; import com.fdkankan.scene.entity.SceneEditInfo; import com.fdkankan.scene.entity.SceneEditInfoExt; import com.fdkankan.scene.entity.ScenePlusExt; import com.fdkankan.scene.entity.ScenePro; import com.fdkankan.scene.entity.SceneProEdit; import com.fdkankan.scene.entity.SceneProEditExt; import com.fdkankan.scene.entity.SceneProEditV3; import com.fdkankan.scene.entity.SceneProExt; import com.fdkankan.scene.entity.SceneProV3; import com.fdkankan.scene.entity.SceneRepairLog; import com.fdkankan.scene.mapper.ISceneUpgradeMapper; import com.fdkankan.scene.service.ISceneEditControlsService; import com.fdkankan.scene.service.ISceneEditInfoExtService; import com.fdkankan.scene.service.ISceneEditInfoService; import com.fdkankan.scene.service.IScenePlusExtService; import com.fdkankan.scene.service.ISceneProEditExtService; import com.fdkankan.scene.service.ISceneProEditService; import com.fdkankan.scene.service.ISceneProEditV3Service; import com.fdkankan.scene.service.ISceneProExtService; import com.fdkankan.scene.service.ISceneProService; import com.fdkankan.scene.service.ISceneProV3Service; import com.fdkankan.scene.service.ISceneRepairLogService; import com.fdkankan.scene.service.ISceneUpgradeToV4Service; import com.fdkankan.scene.vo.SceneEditControlsVO; import com.fdkankan.scene.vo.UpgradeToV4ParamVO; import java.io.File; import java.util.Calendar; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Objects; import java.util.Set; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; /** *
* TODO *
* * @author dengsixing * @since 2022/4/21 **/ @Slf4j @Service public class SceneUpgradeToV4Service implements ISceneUpgradeToV4Service { @Value("${queue.scene.upgrade-to-v4}") private String upgradeToV4; @Autowired private ISceneProV3Service sceneProV3Service; @Autowired private ISceneProEditV3Service sceneProEditV3Service; @Autowired private ISceneUpgradeMapper sceneUpgradeMapper; @Autowired private RedisLockUtil redisLockUtil; @Autowired private ISceneRepairLogService sceneRepairLogService; @Autowired private RabbitMqProducer rabbitMqProducer; @Autowired private RedisUtil redisUtil; @Override public ResultData upgradeToV4(UpgradeToV4ParamVO param) { SceneProV3 sceneProV3 = JSON.parseObject(param.getScenePro(), SceneProV3.class); SceneProEditV3 sceneProEditV3 = JSON.parseObject(param.getSceneProEdit(), SceneProEditV3.class); //加锁 String lockKey = String.format(RedisLockKey.LOCK_SCENE_UPGRADE_V4, sceneProV3.getNum()); boolean lock = redisLockUtil.lock(lockKey,RedisKey.EXPIRE_TIME_2_HOUR); if(!lock){ return ResultData.error(ErrorCode.FAILURE_CODE_7019); } try { //查询升级日志,如果已经升级成功,不允许重复升级 SceneRepairLog sceneRepairLog = sceneRepairLogService.getOne( new LambdaQueryWrapper