智慧保安后台管理-外网项目备份
zhongrj
2022-08-18 f288ed575764a898bb8df1eb06c9b3cba55f3e17
src/main/java/org/springblade/modules/licetuser/controller/LicetuserController.java
@@ -16,23 +16,43 @@
 */
package org.springblade.modules.licetuser.controller;
import io.minio.*;
import io.minio.errors.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import lombok.AllArgsConstructor;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import org.apache.commons.lang3.StringUtils;
import org.springblade.common.config.FileConfig;
import org.springblade.common.config.FtpConfig;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.modules.FTP.FtpUtil;
import org.springblade.modules.licet.entity.Licet;
import org.springblade.modules.licet.service.ILicetService;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.modules.licetuser.entity.Licetuser;
import org.springblade.modules.licetuser.vo.LicetuserVO;
import org.springblade.modules.licetuser.service.ILicetuserService;
import org.springblade.core.boot.ctrl.BladeController;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.*;
import java.util.stream.Collectors;
import static org.springblade.common.config.FtpConfig.*;
/**
 *  控制器
@@ -48,6 +68,8 @@
   private final ILicetuserService licetuserService;
   private final ILicetService licetService;
   /**
    * 详情
    */
@@ -60,18 +82,53 @@
   }
   @GetMapping("/liceUp")
   @PostMapping("/liceUp")
   @ApiOperationSupport(order = 1)
   public R<Licetuser> liceUp(Licetuser licetuser) {
      Licetuser detail = licetuserService.getOne(Condition.getQueryWrapper(licetuser));
      if (detail==null){
   public R liceUp(@Valid @RequestBody Licetuser licetuser) {
      Map map = licetuserService.liceIn(licetuser.getUserid(),licetuser.getPtype());
      if (map==null){
         licetuserService.save(licetuser);
         String url = "";
         String[] split = licetuser.getLinks().split(",");
         for (int i = 0; i < split.length; i++) {
            String s = split[i].substring(26, split[i].length());
            String[] splits = split[i].split("/");
            url += FtpConfig.ip +"/zhba/upload/picture/"+ splits[6] + ",";
         }
         String substring = url.substring(0, url.length() - 1);
         licetuser.setLinks(substring);
         //数据同步
         String s1 =
            "insert into sys_licetuser(id,userid,ptype,templateid,links) " +
               "values(" + "'" + licetuser.getId() + "'" + "," +
               "'" + licetuser.getUserid() + "'" + "," +
               "'" + licetuser.getPtype() + "'" + "," +
               "'" + licetuser.getTemplateid() + "'" + "," +
               "'" + licetuser.getLinks() + "'" + ")";
         FtpUtil.sqlFileUpload(s1);
      }
      else {
         String id = map.get("id").toString();
         Integer a= Integer.parseInt(id);
         licetuser.setId(a);
         licetuserService.updateById(licetuser);
         String url = "";
         String[] split = licetuser.getLinks().split(",");
         for (int i = 0; i < split.length; i++) {
            String s = split[i].substring(26, split[i].length());
            String[] splits = split[i].split("/");
            url += FtpConfig.ip +"/zhba/upload/picture/"+ splits[6] + ",";
         }
         String substring = url.substring(0, url.length() - 1);
         licetuser.setLinks(substring);
         String s1 = "update sys_licetuser set userid = " + "'" + licetuser.getUserid() + "'" +
            ",ptype = " + "'" + licetuser.getPtype() + "'" +
            ",templateid = " + "'" + licetuser.getTemplateid() + "'" +
            ",links = " + "'" + licetuser.getLinks() + "'" +
            " " + "where id = " + "'" + licetuser.getId() + "'";
         FtpUtil.sqlFileUpload(s1);
      }
      return R.data(detail);
      return R.data("成功");
   }
   /**
@@ -137,5 +194,137 @@
      return R.status(licetuserService.removeByIds(Func.toLongList(ids)));
   }
   /**
    * 许可审批备案文件上传(对接政务平台)
    * @param file 文件
    * @param licetId 附件材料id
    * @param ptype 类型
    * @param cardid 用户唯一id
    * @return
    */
   @PostMapping("/liceUpload")
   public R liceUpload(@RequestParam MultipartFile file, String licetId, String ptype, String cardid, HttpServletRequest request) throws IOException, InvalidResponseException, InvalidKeyException, NoSuchAlgorithmException, ServerException, ErrorResponseException, XmlParserException, InsufficientDataException, InternalException {
      String fieldNames = request.getHeader("_fieldNames");
      System.out.println("fieldNames = " + fieldNames);
      //文件上传
      String urls = putFile(file);
      String link = urls.split(",")[0];
      //内网
      String inlink = urls.split(",")[1];
      Licetuser licetuser = new Licetuser();
      licetuser.setPtype(ptype);
      Licet licet = new Licet();
      licet.setPtype(ptype);
      licetuser.setUserid(cardid);
      //查询上传的材料信息
      Licetuser licetuser1 = licetuserService.getOne(Condition.getQueryWrapper(licetuser));
      if (null==licetuser1){
         licetuser.setTemplateid(licetId);
         licetuser.setLinks(link);
         //新增
         licetuserService.save(licetuser);
         //数据同步
         String s1 =
            "insert into sys_licetuser(id,userid,ptype,templateid,links) " +
               "values(" + "'" + licetuser.getId() + "'" + "," +
               "'" + licetuser.getUserid() + "'" + "," +
               "'" + licetuser.getPtype() + "'" + "," +
               "'" + licetuser.getTemplateid() + "'" + "," +
               "'" + inlink + "'" + ")";
         FtpUtil.sqlFileUpload(s1);
      }else {
         //判断是否是重复上传
         List<String> asList = Arrays.asList(licetuser1.getTemplateid().split(","));
         List<String> linksList = Arrays.asList(licetuser1.getLinks().split(","));
         boolean status = asList.contains(licetId);
         if(status) {
            //重复上传
            int i = 0;
            for (int j = 0; j < asList.size(); j++) {
               if (asList.get(j).equals(licetId)){
                  i = j;
               }
            }
            //替换link
            linksList.set(i,link);
            licetuser1.setLinks(StringUtils.join(linksList.toArray(), ","));
         }else {
            //替换 下标集合,id集合,links
            licetuser1.setTemplateid(licetuser1.getTemplateid()+","+licetId);
            licetuser1.setLinks(licetuser1.getLinks()+","+link);
         }
         //修改
         licetuserService.updateById(licetuser1);
         //内网 links
         String url = "";
         String[] split = licetuser1.getLinks().split(",");
         for (int i = 0; i < split.length; i++) {
            String s = split[i].substring(26);
            String[] splits = split[i].split("/");
            url += FtpConfig.ip +"/zhba/upload/picture/"+ splits[6] + ",";
         }
         String inlinks = url.substring(0, url.length() - 1);
         //同步数据
         String s1 = "update sys_licetuser set userid = " + "'" + licetuser1.getUserid() + "'" +
            ",ptype = " + "'" + licetuser1.getPtype() + "'" +
            ",templateid = " + "'" + licetuser1.getTemplateid() + "'" +
            ",links = " + "'" + inlinks + "'" +
            " " + "where id = " + "'" + licetuser1.getId() + "'";
         FtpUtil.sqlFileUpload(s1);
      }
      return R.data("成功");
   }
   /**
    * 文件上传
    * @param file
    */
   private String putFile(MultipartFile file) throws IOException, InvalidKeyException, InvalidResponseException, InsufficientDataException, NoSuchAlgorithmException, ServerException, InternalException, XmlParserException, ErrorResponseException {
      String url = FileConfig.url;
      String access = FileConfig.access;
      String secret = FileConfig.secret;
      String bucket = FileConfig.bucket;
      MinioClient minioClient =
         MinioClient.builder()
            .endpoint(url)
            .credentials(access, secret)
            .build();
      // 检查存储桶是否已经存在
      boolean isExist = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucket).build());
      if (!isExist) {
         // 创建一个名为zip的存储桶,用于zip文件。
         minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucket).build());
         minioClient.setBucketPolicy(SetBucketPolicyArgs.builder().bucket(bucket).build());
      }
      String fileName = file.getOriginalFilename();
      String newName = "upload/picture/" + UUID.randomUUID().toString().replaceAll("-", "")
         + fileName.substring(fileName.lastIndexOf("."));
      InputStream in = file.getInputStream();
      String[] split = newName.split("/");
      //创建头部信息
      Map<String, String> headers = new HashMap<>(1 << 2);
      //添加自定义内容类型
      headers.put("Content-Type", "application/octet-stream");
      //上传
      minioClient.putObject(
         PutObjectArgs.builder().bucket(bucket).object(newName).stream(
            in, in.available(), -1)
            .headers(headers)
            .build());
      InputStream inputStream = file.getInputStream();
      FtpUtil.uploadFile(FtpConfig.ftpHost, ftpPort, FtpConfig.ftpUserName, ftpPassword, ftpPath, "/", split[2], inputStream);
      in.close();
      String urls = "http://61.131.136.25/zhba/" + newName;
      //内网
      String inUrl = FtpConfig.ip + "/zhba/" + newName;
      //返回url
      return urls+","+inUrl;
   }
}