|
@@ -25,6 +25,7 @@ import com.fdkankan.repair.bean.RequestSceneProV4;
|
|
|
import com.fdkankan.repair.bean.SceneEditControlsBean;
|
|
|
import com.fdkankan.repair.bean.SceneJsonBean;
|
|
|
import com.fdkankan.repair.bean.SceneUpgradeProgressBean;
|
|
|
+import com.fdkankan.repair.bean.UpgradeBean;
|
|
|
import com.fdkankan.repair.callback.FdkkMiniReqErrorCallback;
|
|
|
import com.fdkankan.repair.callback.FdkkMiniReqSuccessCallback;
|
|
|
import com.fdkankan.repair.constant.ProgressStatus;
|
|
@@ -59,6 +60,7 @@ 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 java.util.concurrent.atomic.AtomicInteger;
|
|
|
import java.util.stream.Collectors;
|
|
@@ -123,7 +125,7 @@ public class SceneUpgradeToV4Service implements ISceneUpgradeToV4Service {
|
|
|
FdkankanMiniClient fdkankanMiniClient;
|
|
|
|
|
|
@Override
|
|
|
- public void upgrade(long sceneProId) throws Exception{
|
|
|
+ public void upgrade(long sceneProId, boolean reUpgrade) throws Exception{
|
|
|
|
|
|
ScenePro scenePro = sceneProService.getById(sceneProId);
|
|
|
//线程开始,正在执行线程数+1
|
|
@@ -140,19 +142,12 @@ public class SceneUpgradeToV4Service implements ISceneUpgradeToV4Service {
|
|
|
long startTime = Calendar.getInstance().getTimeInMillis();
|
|
|
SceneRepairLog sceneRepairLog = null;
|
|
|
try {
|
|
|
- sceneRepairLog = sceneRepairLogService.getOne(new LambdaQueryWrapper<SceneRepairLog>().eq(SceneRepairLog::getNum, num));
|
|
|
- if(sceneRepairLog == null){
|
|
|
- sceneRepairLog = SceneRepairLog.builder()
|
|
|
- .num(scenePro.getNum())
|
|
|
- .reason("")
|
|
|
- .state(0).build();
|
|
|
- }else{
|
|
|
- sceneRepairLog.setUpdateTime(Calendar.getInstance().getTime());
|
|
|
- sceneRepairLog.setReason("");
|
|
|
- sceneRepairLog.setState(0);
|
|
|
- }
|
|
|
- //写入日志
|
|
|
- sceneRepairLogService.saveOrUpdate(sceneRepairLog);
|
|
|
+ sceneRepairLog = sceneRepairLogService.getOne(
|
|
|
+ new LambdaQueryWrapper<SceneRepairLog>()
|
|
|
+ .eq(SceneRepairLog::getNum, num).eq(SceneRepairLog::getState, 0)
|
|
|
+ .orderByDesc(SceneRepairLog::getId)
|
|
|
+ .last("limit 1"));
|
|
|
+ this.upgradeLog(sceneRepairLog, num, 0, null, null);
|
|
|
|
|
|
SceneProExt sceneProExt = sceneProExtService.getOne(
|
|
|
new LambdaQueryWrapper<SceneProExt>()
|
|
@@ -383,7 +378,8 @@ public class SceneUpgradeToV4Service implements ISceneUpgradeToV4Service {
|
|
|
new LambdaQueryWrapper<ScenePlusExt>()
|
|
|
.eq(ScenePlusExt::getPlusId, scenePro.getId()));
|
|
|
if(StrUtil.isNotEmpty(scenePro.getThumb())
|
|
|
- && scenePro.getThumb().contains(imagePath)){
|
|
|
+ && scenePro.getThumb().contains(imagePath)
|
|
|
+ && !reUpgrade){
|
|
|
String thumbUrl = null;
|
|
|
if(scenePro.getThumb().contains("thumbSmallImg.jpg")){
|
|
|
uploadToOssUtil.copyFiles(imagePath + "thumbBigImg.jpg", editUsersPath + "thumb-1k.jpg");
|
|
@@ -454,15 +450,16 @@ public class SceneUpgradeToV4Service implements ISceneUpgradeToV4Service {
|
|
|
consumTime = Calendar.getInstance().getTimeInMillis() - startTime;
|
|
|
|
|
|
//记录日志
|
|
|
- sceneRepairLog.setUpdateTime(Calendar.getInstance().getTime());
|
|
|
- sceneRepairLog.setState(1);
|
|
|
- sceneRepairLog.setConsumTime(consumTime);
|
|
|
- sceneRepairLogService.updateById(sceneRepairLog);
|
|
|
+ this.upgradeLog(sceneRepairLog, num, 1, null, consumTime);
|
|
|
|
|
|
// 调用v3接口回写数据
|
|
|
String url = fkankanMiniHost + URL_UPGRADE_TO_V4_RESULT_SYNC;
|
|
|
fdkankanMiniClient.upgradeToV4ResultSync(url,
|
|
|
- RequestSceneProV4.builder().id(sceneProId).webSite(scenePro.getWebSite()).build(),
|
|
|
+ RequestSceneProV4.builder()
|
|
|
+ .id(sceneProId)
|
|
|
+ .webSite(scenePro.getWebSite())
|
|
|
+ .thumb(scenePlusExt.getThumb())
|
|
|
+ .build(),
|
|
|
new FdkkMiniReqSuccessCallback(), new FdkkMiniReqErrorCallback()
|
|
|
);
|
|
|
|
|
@@ -476,10 +473,7 @@ public class SceneUpgradeToV4Service implements ISceneUpgradeToV4Service {
|
|
|
|
|
|
//记录日志
|
|
|
consumTime = Calendar.getInstance().getTimeInMillis() - startTime;
|
|
|
- sceneRepairLog.setUpdateTime(Calendar.getInstance().getTime());
|
|
|
- sceneRepairLog.setState(2);
|
|
|
- sceneRepairLog.setReason(ExceptionUtil.stacktraceToString(e));
|
|
|
- sceneRepairLog.setConsumTime(consumTime);
|
|
|
+ this.upgradeLog(sceneRepairLog, num, 2, ExceptionUtil.stacktraceToString(e, 3000), consumTime);
|
|
|
sceneRepairLogService.updateById(sceneRepairLog);
|
|
|
} finally {
|
|
|
String lockKey = String.format(RedisLockKey.LOCK_SCENE_UPGRADE_V4, num);
|
|
@@ -606,4 +600,17 @@ public class SceneUpgradeToV4Service implements ISceneUpgradeToV4Service {
|
|
|
.num(num).status(status)
|
|
|
.progress(progress).build()));
|
|
|
}
|
|
|
+
|
|
|
+ private void upgradeLog(SceneRepairLog sceneRepairLog, String num, int status, String reason, Long consumTime){
|
|
|
+ //写入升级日志
|
|
|
+ if(Objects.isNull(sceneRepairLog)){
|
|
|
+ sceneRepairLog = new SceneRepairLog();
|
|
|
+ sceneRepairLog.setNum(num);
|
|
|
+ }
|
|
|
+ sceneRepairLog.setConsumTime(consumTime);
|
|
|
+ sceneRepairLog.setState(status);
|
|
|
+ sceneRepairLog.setReason(reason);
|
|
|
+ sceneRepairLog.setCreateTime(Calendar.getInstance().getTime());
|
|
|
+ sceneRepairLogService.saveOrUpdate(sceneRepairLog);
|
|
|
+ }
|
|
|
}
|