zhubaomin
2025-04-07 e67870fff62635cd14beb0d5988f08aeef4b22fa
pipIrr-platform/pipIrr-web/pipIrr-web-file/src/main/java/com/dy/pipIrrWebFile/fm/RestHashDeal.java
New file
@@ -0,0 +1,95 @@
package com.dy.pipIrrWebFile.fm;
import com.dy.common.util.MurmurHash;
public class RestHashDeal {
   /**
    * 文件名称计算转换
    * @param fileName
    * @param rvo
    * @return
    * @throws Exception
    */
   public FileRestVo fileTransRest(String fileName, FileRestVo rvo) throws Exception{
      if(fileName != null
            && !fileName.trim().equals("")
            && rvo != null){
         if(DyFmListener.dyFileGroup == null
               || DyFmListener.dyFileGroup.list == null
               || DyFmListener.dyFileGroup.list.size() == 0){
            throw new Exception("严重错误,文件服务器restful未配置!") ;
         }else{
            DyFileSvConf.Vo confVo = null ;
            Integer hash = null ;
            if(DyFmListener.dyFileGroup.list.size() == 1){
               confVo = DyFmListener.dyFileGroup.list.get(0) ;
            }else{
               hash = new MurmurHash().hash16_plus(fileName) ;
               for(DyFileSvConf.Vo lvo : DyFmListener.dyFileGroup.list){
                  if(hash >= lvo.hashStart.intValue()
                        && hash <= lvo.hashEnd.intValue()){
                     confVo = lvo ;
                     break ;
                  }
               }
            }
            if(confVo != null){
               rvo.fileSysId = confVo.id;
               rvo.fileNameHash = hash;
               rvo.fileSysAbsolutePath = confVo.fileSysAbsolutePath;
               rvo.fileSysRelativePath = confVo.fileSysRelativePath;
               rvo.fileSysRestUrl = confVo.restUrl;
               rvo.fileWebUrl = confVo.webUrl ;
               rvo.fileWebDownloadPath = confVo.webDownloadPath ;
            }
         }
      }
      return rvo ;
   }
   /**
    * 哈希值计算转换
    * @param hashcode
    * @param rvo
    * @return
    * @throws Exception
    */
   public FileRestVo fileTransRest(Integer hashcode, FileRestVo rvo) throws Exception{
      if(hashcode != null
            && rvo != null){
         if(DyFmListener.dyFileGroup == null
               || DyFmListener.dyFileGroup.list == null
               || DyFmListener.dyFileGroup.list.size() == 0){
            throw new Exception("严重错误,文件服务器restful未配置!") ;
         }else{
            DyFileSvConf.Vo confVo = null ;
            Integer hash = hashcode ;
            if(DyFmListener.dyFileGroup.list.size() == 1){
               confVo = DyFmListener.dyFileGroup.list.get(0) ;
            }else{
               for(DyFileSvConf.Vo lvo : DyFmListener.dyFileGroup.list){
                  if(hash >= lvo.hashStart.intValue()
                        && hash <= lvo.hashEnd.intValue()){
                     confVo = lvo ;
                     break ;
                  }
               }
            }
            if(confVo != null){
               rvo.fileSysId = confVo.id;
               rvo.fileNameHash = hash;
               rvo.fileSysAbsolutePath = confVo.fileSysAbsolutePath;
               rvo.fileSysRelativePath = confVo.fileSysRelativePath;
               rvo.fileSysRestUrl = confVo.restUrl;
               rvo.fileWebUrl = confVo.webUrl ;
               rvo.fileWebDownloadPath = confVo.webDownloadPath ;
            }
         }
      }
      return rvo ;
   }
}