智慧保安后台管理-外网项目备份
Administrator
2021-11-11 7f3f23d57a92b4c1a79c2629562936c81beae8ca
src/main/java/org/springblade/modules/system/controller/UserController.java
@@ -23,6 +23,8 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.minio.*;
import io.minio.errors.*;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
@@ -36,6 +38,7 @@
import org.springblade.common.excel.CustomCellWriteHeightConfig;
import org.springblade.common.excel.CustomCellWriteWeightConfig;
import org.springblade.common.excel.RowWriteHandler;
import org.springblade.common.utils.ImageUtils;
import org.springblade.common.utils.arg;
import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.excel.util.ExcelUtil;
@@ -72,14 +75,21 @@
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import springfox.documentation.annotations.ApiIgnore;
import sun.misc.BASE64Decoder;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.*;
import static org.springblade.common.config.FtpConfig.*;
import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
import static org.springblade.core.cache.constant.CacheConstant.USER_CACHE;
@@ -194,6 +204,7 @@
         }
         user.setTenantId("000000");
         user.setStatus(1);
         user.setIsDeleted(0);
         user.setCreateTime(new Date());
         user.setUpdateTime(new Date());
         //判断是否为民警 code
@@ -262,9 +273,21 @@
   @PostMapping("/update")
   @ApiOperationSupport(order = 5)
   @ApiOperation(value = "修改", notes = "传入User")
   public R update(@Valid @RequestBody User user) {
   public R update(@Valid @RequestBody User user) throws Exception {
      CacheUtil.clear(USER_CACHE);
      User user1 = userService.getById(user.getId());
      String url = null;
      if (null!=user.getFingerprint() && !user.getFingerprint().equals("")) {
         if (user.getFingerprint().length()>100) {
            //指纹图片上传并返回url
            String s = uploadBase64String(user);
            String[] split = s.split(",");
            user.setFingerprint(split[0]);
            //内网指纹图片url
            url = split[1];
         }
      }
      user.setPassword(user1.getPassword());
      userService.updateById(user);
      String rtime;
@@ -272,14 +295,6 @@
         rtime = null;
      } else {
         rtime = new SimpleDateFormat("yyyy-MM-dd").format(user.getRtime());
      }
      String paperTime;
      //发证日期处理
      if (user.getPaperTime() == null) {
         paperTime = null;
      } else {
         paperTime = new SimpleDateFormat("yyyy-MM-dd").format(user.getPaperTime());
      }
      String s1 =
@@ -299,6 +314,8 @@
            + ",politicaloutlook = " + "'" + user.getPoliticaloutlook() + "'"
            + ",healstats = " + "'" + user.getHealstats() + "'"
            + ",height = " + "'" + user.getHeight() + "'"
            + ",fingerprint = " + "'" + url + "'"
            + ",my_picture = " + "'" + user.getMyPicture() + "'"
            + ",address = " + "'" + user.getAddress() + "'"
            + ",registered = " + "'" + user.getRegistered() + "'"
            + ",rtime = " + "'" + rtime + "'"
@@ -309,6 +326,64 @@
            + " " + "where id = " + "'" + user.getId() + "'";
      FtpUtil.sqlFileUpload(s1);
      return R.success("修改成功");
   }
   /**
    * 指纹图片上传
    * @return
    * @throws Exception
    */
   private String uploadBase64String (User user)throws Exception{
      //图片上传
      BASE64Decoder decoder = new BASE64Decoder();
      // 解密
      byte[] b = decoder.decodeBuffer(user.getFingerprint());
      // 处理数据
      for (int i = 0; i < b.length; ++i) {
         if (b[i] < 0) {
            b[i] += 256;
         }
      }
      //填写你文件上传的地址以及相应信息
      String url = "http://223.82.109.183:2081";
      String access = "zhbaadmin";
      String secret = "zhbapassword";
      String bucket = "zhba";
      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 newName = "upload/picture/" + UUID.randomUUID().toString().replaceAll("-", "")+".jpg";
      InputStream in = new ByteArrayInputStream(b);
      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 = new ByteArrayInputStream(b);
      FtpUtil.uploadFile(FtpConfig.ftpHost, ftpPort, FtpConfig.ftpUserName, ftpPassword, ftpPath, "/", split[2], inputStream);
      in.close();
      //外围url
      String urls = "http://223.82.109.183:2081/zhba/" + newName;
      //内网
      String inUrl = FtpConfig.ip + "/zhba/" + newName;
      //返回
      return urls+","+inUrl;
   }
@@ -655,7 +730,7 @@
    */
   @PostMapping("/securitySave")
   @Transactional(rollbackFor = Exception.class)
   public R securitySave(@Valid @RequestBody Map<String, Object> userMap) {
   public R securitySave(@Valid @RequestBody Map<String, Object> userMap) throws Exception {
      //获取user
      User user = JSON.parseObject(JSON.toJSONString(userMap.get("user")), User.class);
      //分配保安角色
@@ -670,6 +745,16 @@
      Integer userCount = userService.selectCount(user.getAccount());
      if (userCount > 0 && Func.isEmpty(user.getId())) {
         throw new ServiceException(StringUtil.format("当前用户 [{}] 已存在!", user.getAccount()));
      }
      String url = null;
      if (null!=user.getFingerprint() && !user.getFingerprint().equals("")) {
         if (user.getFingerprint().length()>100) {
            String s = uploadBase64String(user);
            String[] split = s.split(",");
            user.setFingerprint(split[0]);
            url = split[1];
         }
      }
//         }
      //未持证
@@ -708,11 +793,6 @@
         user.setAvatar(FtpConfig.ip + user.getAvatar().substring(26));
      }
      //指纹
      if (null!=user.getFingerprint() && !user.getFingerprint().equals("")) {
         user.setFingerprint(FtpConfig.ip + user.getFingerprint().substring(26));
      }
      String s = "insert into blade_user(" +
         "id,tenant_id,account,password,name,real_name,avatar,email,phone,sex," +
         "role_id,dept_id,cardid,nativePlace,nation,fingerprint,education," +
@@ -733,7 +813,7 @@
         "," + "'" + user.getCardid() + "'" +
         "," + "'" + user.getNativeplace() + "'" +
         "," + "'" + user.getNation() + "'" +
         "," + "'" + user.getFingerprint() + "'" +
         "," + "'" + url + "'" +
         "," + "'" + user.getEducation() + "'" +
         "," + "'" + user.getPoliticaloutlook() + "'" +
         "," + "'" + user.getHealstats() + "'"+
@@ -793,4 +873,22 @@
      return R.data(list);
   }
   /**
    * 用户详情
    * @param user
    * @return
    */
   @GetMapping("/details")
   public R details(User user) {
      User user1 = userService.getById(user.getId());
      if (null!=user1.getFingerprint() && !user1.getFingerprint().equals("")){
         //url 转base64
         String base64Url = ImageUtils.imageUrlToBase64(user1.getFingerprint());
         System.out.println("base64Url = " + base64Url);
         user1.setFingerprint(base64Url);
      }
      return R.data(user1);
   }
}