@RequestMapping(value = "hunter/addressbooks/attachment/{id}", method = RequestMethod.GET) public Object getAttachments(@PathVariable Long id, @RequestParam String filename) { Addressbook book = addressbookService.getAttachment(id); int times = book.getDownloadtimes(); String today = DateFormatUtils.format(new Date(), "yyyy-MM-dd"); boolean isToday = today.equals(book.getDownloaddate()); if (isToday && times == 10) { try { String msg = new String("此目标公司通讯录今天下载次数已达10次,不能继续下载".getBytes("UTF-8"), "iso-8859-1"); return new ResponseEntity<>(msg, HttpStatus.OK); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } } boolean downloadStatus = false; Map<String, Object> map = new HashMap<String, Object>(); map.put("id", id); while (!isToday || (isToday && times <= 10)) { map.put("downloaddate", book.getDownloaddate()); map.put("downloadtimes", times); if (!isToday) { map.put("newdate", today); map.put("newtimes", 1); } else { map.put("newtimes", times + 1); } if (addressbookService.updateDownloadtimes(map) > 0) { downloadStatus = true; break; } book = addressbookService.getAttachment(id); times = book.getDownloadtimes(); isToday = today.equals(book.getDownloaddate()); } if (!downloadStatus) { try { String msg = new String("此目标公司通讯录今天下载次数已达10次,不能继续下载".getBytes("UTF-8"), "iso-8859-1"); return new ResponseEntity<>(msg, HttpStatus.OK); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } } addressbookService.insertDownloadLog(id, filename, book.getCompanyName()); String pathname = book.getAttachmentPath() + filename; File file = new File(pathname); HttpHeaders headers = new HttpHeaders(); try { String fileName = new String(filename.getBytes("UTF-8"), "iso-8859-1"); // 为了解决中文名称乱码问题 headers.setContentDispositionFormData("attachment", fileName); headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); return new ResponseEntity<byte[]>( FileUtils.readFileToByteArray(file), headers, HttpStatus.OK); } catch (IOException e) { throw new RuntimeException(e); } }