123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342 |
- package com.fdkankan.ucenter.service.impl;
- import cn.hutool.core.util.HexUtil;
- import cn.hutool.core.util.StrUtil;
- import cn.hutool.crypto.SecureUtil;
- import cn.hutool.crypto.SmUtil;
- import cn.hutool.crypto.asymmetric.KeyType;
- import cn.hutool.crypto.asymmetric.SM2;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONObject;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.fdkankan.common.constant.ErrorCode;
- import com.fdkankan.common.exception.BusinessException;
- import com.fdkankan.common.util.JwtUtil;
- import com.fdkankan.common.util.SecurityUtil;
- 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.constant.LoginConstant;
- import com.fdkankan.ucenter.entity.*;
- import com.fdkankan.ucenter.service.*;
- import com.fdkankan.ucenter.vo.RelicsSceneInitQueueDTO;
- import com.fdkankan.ucenter.vo.request.SceneParam;
- import com.fdkankan.ucenter.util.RsaUtils;
- import com.fdkankan.ucenter.vo.response.LaserSceneInfoVo;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang3.ObjectUtils;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.io.File;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.security.KeyPair;
- import java.security.PrivateKey;
- import java.util.Date;
- import java.util.Objects;
- import java.util.stream.Collectors;
- /**
- * <p>
- * TODO
- * </p>
- *
- * @author dengsixing
- * @since 2022/9/27
- **/
- @Slf4j
- @Service
- public class InnerServiceImpl implements IInnerService {
- @Autowired
- private ISceneProService sceneProService;
- @Autowired
- private ISceneProEditService sceneProEditService;
- @Autowired
- private IScenePlusService scenePlusService;
- @Autowired
- private IScenePlusExtService scenePlusExtService;
- @Autowired
- private ISceneEditInfoService sceneEditInfoService;
- @Autowired
- private IUserService userService;
- @Autowired
- private RedisUtil redisUtil;
- @Autowired
- private ICameraDetailService cameraDetailService;
- @Autowired
- private ICameraService cameraService;
- @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());
- vo.setStatus(scenepro.getStatus());
- vo.setPayStatus(scenepro.getPayStatus());
- vo.setTitle(scenepro.getSceneName());
- SceneProEdit sceneProEdit = sceneProEditService.getByProId(scenepro.getId());
- if(sceneProEdit != null){
- vo.setImgVersion(sceneProEdit.getImagesVersion());
- }
- 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());
- vo.setStatus(plus.getSceneStatus());
- vo.setPayStatus(plus.getPayStatus());
- vo.setTitle(plus.getTitle());
- SceneEditInfo sceneEditInfo = sceneEditInfoService.getByScenePlusId(plus.getId());
- if(sceneEditInfo != null){
- vo.setImgVersion(sceneEditInfo.getImgVersion());
- }
- return vo;
- }
- }
- throw new BusinessException(ResultCode.FAILURE_CODE_400002,ResultCode.FAILURE_MSG_400002);
- }
- @Override
- public Object getCameraDetail(String snCode) {
- Camera camera = cameraService.getBySnCode(snCode);
- if(camera == null){
- throw new BusinessException(-1,"相机不存在");
- }
- return cameraDetailService.getByCameraId(camera.getId());
- }
- @Override
- public Boolean checkSign(String sign) {
- try {
- if(StringUtils.isBlank(sign)){
- return false;
- }
- String deTxt = RsaUtils.decipher(sign, RsaUtils.privateKey);
- if(StringUtils.isBlank(deTxt)){
- return false;
- }
- JSONObject jsonObject = JSONObject.parseObject(deTxt);
- String appId = jsonObject.getString("appId");
- Long timestamp = jsonObject.getLong("timestamp");
- if(StringUtils.isBlank(appId) || timestamp == null){
- return false;
- }
- if(!appId.equals("ucenter")){
- return false;
- }
- Long time = new Date().getTime();
- if(time -timestamp >1000 * 30){
- return false;
- }
- return true;
- }catch (Exception e){
- log.info("checkSign-error:{}",sign,e);
- return false;
- }
- }
- public static void main(String[] args) {
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("appId","ucenter");
- jsonObject.put("timestamp",new Date().getTime());
- System.out.println(jsonObject);
- }
- @Override
- public Object getSceneBySnCode(SceneParam param) {
- Camera camera = cameraService.getBySnCode(param.getSnCode());
- if(camera == null ){
- throw new BusinessException(ResultCode.FAILURE_CODE_400017,ResultCode.FAILURE_MSG_400017);
- }
- CameraDetail cameraDetail = cameraDetailService.getByCameraId(camera.getId());
- if(cameraDetail == null ){
- throw new BusinessException(ResultCode.FAILURE_CODE_400017,ResultCode.FAILURE_MSG_400017);
- }
- LambdaQueryWrapper<ScenePlus> wrapper = new LambdaQueryWrapper<>();
- wrapper.eq(ScenePlus::getCameraId,camera.getId());
- if(param.getSceneSource() != null){
- wrapper.eq(ScenePlus::getSceneSource,param.getSceneSource());
- }
- List<ScenePlus> list = scenePlusService.list(wrapper);
- if(list.isEmpty()){
- return new ArrayList<>();
- }
- List<Long> plusIds = list.stream().map(ScenePlus::getId).collect(Collectors.toList());
- List<Long> userIds = list.stream().map(ScenePlus::getUserId).collect(Collectors.toList());
- LambdaQueryWrapper<ScenePlusExt> wrapper1 = new LambdaQueryWrapper<>();
- wrapper1.in(ScenePlusExt::getPlusId,plusIds);
- if(param.getLocation() != null){
- wrapper1.eq(ScenePlusExt::getLocation,param.getLocation());
- }
- HashMap<Long,ScenePlus> map = new HashMap<>();
- HashMap<Long, User> userMap = userService.getByIds(userIds);
- list.forEach(e ->map.put(e.getId(),e) );
- List<ScenePlusExt> extList = scenePlusExtService.list(wrapper1);
- List<RelicsSceneInitQueueDTO> voList = new ArrayList<>(extList.size());
- for (ScenePlusExt scenePlusExt : extList) {
- ScenePlus scenePlus = map.get(scenePlusExt.getPlusId());
- if(scenePlus == null){
- continue;
- }
- User user = userMap.get(scenePlus.getUserId());
- RelicsSceneInitQueueDTO dto = getRelicsSceneInitQueueDTO(param, scenePlusExt, scenePlus,user);
- voList.add(dto);
- }
- return voList;
- }
- private RelicsSceneInitQueueDTO getRelicsSceneInitQueueDTO(SceneParam param, ScenePlusExt scenePlusExt, ScenePlus scenePlus,User user) {
- RelicsSceneInitQueueDTO dto = new RelicsSceneInitQueueDTO();
- dto.setSceneCode(scenePlus.getNum());
- dto.setLocation(scenePlusExt.getLocation());
- dto.setSceneSource(scenePlus.getSceneSource());
- dto.setAlgorithmTime(scenePlusExt.getAlgorithmTime());
- dto.setCreateTime(scenePlus.getCreateTime());
- if(user!=null){
- dto.setPhoneNum(user.getUserName());
- }
- dto.setUserId(scenePlus.getUserId());
- dto.setSnCode(param.getSnCode());
- dto.setStatus(scenePlus.getSceneStatus());
- if(scenePlus.getSceneStatus() ==-2){
- dto.setStatus(1);
- }
- dto.setSceneName(scenePlus.getTitle());
- dto.setShootCount(scenePlusExt.getShootCount());
- return dto;
- }
- }
|