package com.fdkankan.ucenter.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.fdkankan.common.constant.ErrorCode; import com.fdkankan.common.exception.BusinessException; import com.fdkankan.common.util.JwtUtil; import com.fdkankan.fyun.face.FYunFileServiceInterface; import com.fdkankan.redis.constant.RedisKey; import com.fdkankan.redis.util.RedisUtil; import com.fdkankan.ucenter.common.Result; import com.fdkankan.ucenter.common.constants.ConstantFilePath; import com.fdkankan.ucenter.common.constants.ResultCode; import com.fdkankan.ucenter.entity.ScenePlus; import com.fdkankan.ucenter.entity.ScenePlusExt; import com.fdkankan.ucenter.entity.ScenePro; import com.fdkankan.ucenter.entity.User; import com.fdkankan.ucenter.service.*; import com.fdkankan.ucenter.vo.response.LaserSceneInfoVo; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.io.File; import java.util.Objects; /** *

* TODO *

* * @author dengsixing * @since 2022/9/27 **/ @Slf4j @Service public class InnerServiceImpl implements IInnerService { @Autowired private ISceneProService sceneProService; @Autowired private IScenePlusService scenePlusService; @Autowired private IScenePlusExtService scenePlusExtService; @Autowired private IUserService userService; @Autowired private RedisUtil redisUtil; @Autowired private FYunFileServiceInterface fYunFileService; @Override public Result createTokenByNum(String num) { Long userId = null; ScenePro scenePro = sceneProService.getByNum(num); if(Objects.nonNull(scenePro)){ userId = scenePro.getUserId(); }else{ ScenePlus scenePlus = scenePlusService.getByNum(num); if(Objects.isNull(scenePlus)){ return Result.failure("场景为空"); } userId = scenePlus.getUserId(); } User user = userService.getById(userId); String token = JwtUtil.createJWT(-1, user.getUserName(), "user"); String redisKey = String.format(RedisKey.TOKEN_V3,token); redisUtil.set(redisKey, JSON.toJSONString(user), RedisKey.EXPIRE_TIME_2_HOUR); JSONObject object = new JSONObject(); object.put("token", token); return Result.success(object); } @Override public String getSceneNumVersion(String num) { String version = null; ScenePro scenepro = sceneProService.getByNum(num); if(scenepro == null){ ScenePlus plus = scenePlusService.getByNum(num); if(plus != null){ version = "V4"; } }else { version = "V3"; } return version; } @Override public String querySceneDataSource(String num) { String dataSource = null; ScenePro scenePro = sceneProService.getByNum(num); if(Objects.isNull(scenePro)){ ScenePlus scenePlus = scenePlusService.getByNum(num); if(Objects.isNull(scenePlus)){ return Result.failure(ErrorCode.FAILURE_CODE_5005.code(), ErrorCode.FAILURE_CODE_5005.message()).toString(); } ScenePlusExt scenePlusExt = scenePlusExtService.getByPlusId(scenePlus.getId()); dataSource = scenePlusExt.getDataSource(); }else{ dataSource = scenePro.getDataSource(); } return dataSource; } @Override public Result downloadCapture(String num) { ScenePro scenePro = sceneProService.getByNum(num); ScenePlus scenePlus = scenePlusService.getByNum(num); if (ObjectUtils.isEmpty(scenePlus) && ObjectUtils.isEmpty(scenePro)) { return Result.failure("场景为空"); } String dataSource = null; if(!ObjectUtils.isEmpty(scenePlus)){ ScenePlusExt scenePlusExt = scenePlusExtService.getByPlusId(scenePlus.getId()); dataSource = scenePlusExt.getDataSource(); }else{ dataSource = scenePro.getDataSource(); } String ossPath = ConstantFilePath.OSS_PREFIX + dataSource.replace(ConstantFilePath.BUILD_MODEL_PATH, "") .replace(ConstantFilePath.BUILD_MODEL_LASER_PATH, ""); if (!ossPath.endsWith("/")) { ossPath = ossPath.concat("/"); } fYunFileService.downloadFileByCommand(dataSource + File.separator + "capture", ossPath); return Result.success(); } @Override public Result querySceneNum(String path) { ScenePro scenePro = sceneProService.findByFileId(path); if (!ObjectUtils.isEmpty(scenePro)) { return Result.success(scenePro.getNum()); } ScenePlusExt scenePlusExt = scenePlusExtService.getByUnicode(path); if (!ObjectUtils.isEmpty(scenePlusExt)) { return Result.success(scenePlusService.getById(scenePlusExt.getPlusId()).getNum()); } return null; } @Override public LaserSceneInfoVo getSceneInfo(String num) { LaserSceneInfoVo vo = new LaserSceneInfoVo(); ScenePro scenepro = sceneProService.getByNum(num); if(scenepro != null){ vo.setNum(scenepro.getNum()); vo.setVersion("V3"); vo.setSceneSource(scenepro.getSceneSource()); vo.setSceneScheme(scenepro.getSceneScheme()); vo.setSceneKind(null); vo.setSceneResolution(null); vo.setObjScenePath(scenepro.getWebSite()); vo.setIsObj(scenepro.getIsObj()); vo.setAlgorithmTime(scenepro.getCreateTime()); return vo; } ScenePlus plus = scenePlusService.getByNum(num); if(plus != null){ ScenePlusExt plusExt = scenePlusExtService.getByPlusId(plus.getId()); if(plusExt != null){ vo.setNum(plus.getNum()); vo.setVersion("V4"); vo.setSceneSource(plus.getSceneSource()); vo.setSceneScheme(plusExt.getSceneScheme()); vo.setSceneKind(plusExt.getSceneKind()); vo.setSceneResolution(plusExt.getSceneResolution()); vo.setObjScenePath(plusExt.getWebSite()); vo.setIsObj(plusExt.getIsObj()); vo.setAlgorithmTime(plusExt.getAlgorithmTime()); return vo; } } throw new BusinessException(ResultCode.FAILURE_CODE_400002,ResultCode.FAILURE_MSG_400002); } }