VaildCamerasServiceImpl.java 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. package com.fdkankan.ucenter.service.impl;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  5. import com.fdkankan.common.constant.SceneConstant;
  6. import com.fdkankan.common.exception.BusinessException;
  7. import com.fdkankan.common.util.AesUtil;
  8. import com.fdkankan.common.util.FileUtils;
  9. import com.fdkankan.ucenter.common.FileUtil;
  10. import com.fdkankan.ucenter.common.RSAEncrypt;
  11. import com.fdkankan.ucenter.common.Result;
  12. import com.fdkankan.ucenter.common.constants.ConstantFilePath;
  13. import com.fdkankan.ucenter.common.constants.NacosProperty;
  14. import com.fdkankan.ucenter.constant.CameraConstant;
  15. import com.fdkankan.ucenter.constant.LoginConstant;
  16. import com.fdkankan.ucenter.entity.VaildCameras;
  17. import com.fdkankan.ucenter.mapper.IVaildCamerasMapper;
  18. import com.fdkankan.ucenter.service.IVaildCamerasService;
  19. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  20. import org.springframework.beans.factory.annotation.Value;
  21. import org.springframework.stereotype.Service;
  22. import java.io.File;
  23. import java.util.HashMap;
  24. import java.util.List;
  25. import java.util.Map;
  26. import java.util.UUID;
  27. /**
  28. * <p>
  29. * 代理商可用相机表 服务实现类
  30. * </p>
  31. *
  32. * @author
  33. * @since 2022-11-02
  34. */
  35. @Service
  36. public class VaildCamerasServiceImpl extends ServiceImpl<IVaildCamerasMapper, VaildCameras> implements IVaildCamerasService {
  37. @Override
  38. public Result getVaildCameras(String file, String companyName) throws Exception {
  39. LambdaQueryWrapper<VaildCameras> wrapper = new LambdaQueryWrapper<>();
  40. wrapper.eq(VaildCameras::getCompanyName,companyName);
  41. List<VaildCameras> vaildCamerasEntityList = this.list(wrapper);
  42. if(vaildCamerasEntityList == null || vaildCamerasEntityList.size() <= 0){
  43. throw new BusinessException(CameraConstant.FAILURE_CODE_6011, CameraConstant.FAILURE_MSG_6011);
  44. }
  45. //生成需要加密的文件
  46. UUID uuid = UUID.randomUUID();
  47. String key = uuid.toString().replace("-","").substring(0,16);
  48. JSONArray array = new JSONArray();
  49. JSONObject object = null;
  50. for(VaildCameras vaildCamerasEntity: vaildCamerasEntityList){
  51. object = new JSONObject();
  52. object.put("Devicemac", vaildCamerasEntity.getDevicemac());
  53. array.add(object);
  54. }
  55. String aesData = AesUtil.encryptAES(array.toString(), key, key);
  56. String dataPath = ConstantFilePath.AGENT_PATH + companyName + File.separator + System.currentTimeMillis() + "_" + Math.random()*100 + "_key.txt";
  57. FileUtils.writeFile(dataPath, key);
  58. String secretPath = ConstantFilePath.AGENT_PATH + companyName + "/secret/";
  59. String fileName = System.currentTimeMillis() + "_public.pem";
  60. File targetFile = new File(secretPath + fileName);
  61. if(!targetFile.getParentFile().exists()){
  62. targetFile.getParentFile().mkdirs();
  63. }
  64. FileUtils.writeFile(secretPath + fileName, file);
  65. if(!new File(secretPath + fileName).exists()){
  66. throw new BusinessException(LoginConstant.FAILURE_CODE_3018, LoginConstant.FAILURE_MSG_3018);
  67. }
  68. byte[] data = RSAEncrypt.encrypt(RSAEncrypt.loadPublicKeyByStr(RSAEncrypt.loadPublicKeyByFile(secretPath + fileName)),
  69. FileUtil.toByteArray3(dataPath));
  70. //加密后的文件地址
  71. String resultPath = ConstantFilePath.AGENT_PATH + companyName + "/secretData/";
  72. String resultName = System.currentTimeMillis() + "_data.txt";
  73. FileUtils.writeFile(resultPath, resultName, data);
  74. Map map = new HashMap();
  75. map.put("aecData", aesData);
  76. map.put("keyUrl", NacosProperty.getMainUrl() + "agent/" + companyName + "/secretData/" + resultName);
  77. return Result.success(map);
  78. }
  79. @Override
  80. public Result addVaildCameras(String macId, String companyName, String wifiName) {
  81. String regex = "^[a-z0-9A-Z#]+$";
  82. if(!macId.matches(regex) || macId.length() != 25 || macId.indexOf("#") != 12){
  83. throw new BusinessException(SceneConstant.FAILURE_CODE_5012, SceneConstant.FAILURE_MSG_5012);
  84. }
  85. LambdaQueryWrapper<VaildCameras> wrapper = new LambdaQueryWrapper<>();
  86. wrapper.eq(VaildCameras::getCompanyName,companyName);
  87. wrapper.eq(VaildCameras::getDevicemac,macId);
  88. List<VaildCameras> vaildCamerasEntityList = this.list(wrapper);
  89. if(vaildCamerasEntityList.size()>0 ){
  90. throw new BusinessException(CameraConstant.FAILURE_CODE_6001, CameraConstant.FAILURE_MSG_6001);
  91. }
  92. VaildCameras vaildCameras = new VaildCameras();
  93. vaildCameras.setDevicemac(macId);
  94. vaildCameras.setWifiName(wifiName);
  95. vaildCameras.setCompanyName(companyName);
  96. this.save(vaildCameras);
  97. return Result.success();
  98. }
  99. @Override
  100. public Result deleteVaildCameras(String macId, String companyName) {
  101. LambdaQueryWrapper<VaildCameras> wrapper = new LambdaQueryWrapper<>();
  102. wrapper.eq(VaildCameras::getCompanyName,companyName);
  103. wrapper.eq(VaildCameras::getDevicemac,macId);
  104. this.remove(wrapper);
  105. return Result.success();
  106. }
  107. }