From 13e13d59858f7159dabfa4981f62818405491e0d Mon Sep 17 00:00:00 2001 From: EricsHu <hrr145632> Date: 星期四, 15 六月 2023 16:40:16 +0800 Subject: [PATCH] 1 --- src/main/java/com/qxueyou/scc/user/service/IUserRoleService.java | 2 src/main/resources/application.properties | 1 src/main/java/com/qxueyou/scc/user/service/impl/UserService.java | 6 ++ src/main/java/com/qxueyou/scc/user/service/impl/UserRoleService.java | 1 src/main/java/com/qxueyou/scc/user/service/IUserService.java | 2 src/main/java/com/qxueyou/scc/controller/UserController.java | 8 ++ src/main/java/com/qxueyou/scc/teach/res/service/impl/HweiYunOBSServiceImpl.java | 114 ++++++++++++++++++++++++++++++++++++++ src/main/java/com/qxueyou/scc/controller/HweiYunOBSController.java | 20 ++++++ src/main/java/com/qxueyou/scc/teach/res/service/HweiYunOBSService.java | 3 + 9 files changed, 156 insertions(+), 1 deletions(-) diff --git a/src/main/java/com/qxueyou/scc/controller/HweiYunOBSController.java b/src/main/java/com/qxueyou/scc/controller/HweiYunOBSController.java index 27f0f4e..02cd660 100644 --- a/src/main/java/com/qxueyou/scc/controller/HweiYunOBSController.java +++ b/src/main/java/com/qxueyou/scc/controller/HweiYunOBSController.java @@ -23,6 +23,7 @@ import java.io.InputStream; import java.net.URLEncoder; import java.util.List; +import java.util.Map; /** * @ClassName: ObsController @@ -39,11 +40,12 @@ private HweiYunOBSService hweiYunOBSService; @RequestMapping(value = "upload", method = RequestMethod.POST) - public List<FileMeta> save(@RequestParam(value = "file", required = false) MultipartFile file) { + public List<FileMeta> save(@RequestParam(value = "file", required = false) MultipartFile file) throws IOException { if (ObjectUtils.isEmpty(file) || file.getSize() <= 0) { return null; } + // if (FileUtil.isEmpty(file)) { // return new Result(false,"鏂囦欢涓虹┖"); // } @@ -52,6 +54,22 @@ return test; } +// @RequestMapping(value = "fenpian", method = RequestMethod.POST) +// public Map<String, Object> fpsave(@RequestParam(value = "file", required = false) MultipartFile file) throws IOException { +// +// if (ObjectUtils.isEmpty(file) || file.getSize() <= 0) { +// return null; +// } +// +//// if (FileUtil.isEmpty(file)) { +//// return new Result(false,"鏂囦欢涓虹┖"); +//// } +//// final List<FileMeta> test = hweiYunOBSService.fileUpload(file, file.getOriginalFilename()); +// Map<String, Object> fnepian = hweiYunOBSService.fnepian(file, file.getOriginalFilename()); +//// return ResponseVO.ok("鎵ц鎴愬姛",test); +// return fnepian; +// } + @RequestMapping(value = "delete", method = RequestMethod.POST) public Result delete(@RequestParam(value = "fileName", required = false) String fileName) { if (StrUtil.isEmpty(fileName)) { diff --git a/src/main/java/com/qxueyou/scc/controller/UserController.java b/src/main/java/com/qxueyou/scc/controller/UserController.java index b1f8953..5bfc4b5 100644 --- a/src/main/java/com/qxueyou/scc/controller/UserController.java +++ b/src/main/java/com/qxueyou/scc/controller/UserController.java @@ -175,4 +175,12 @@ return userRoleService.addRole(name,String.valueOf(roleType)); } + + /** + * 缁熻浜烘暟 + */ +// @PostMapping(value = "countUser") +// public Result countUser() { +// return userRoleService.addRole(name,String.valueOf(roleType)); +// } } diff --git a/src/main/java/com/qxueyou/scc/teach/res/service/HweiYunOBSService.java b/src/main/java/com/qxueyou/scc/teach/res/service/HweiYunOBSService.java index 80d0dc5..3b2a896 100644 --- a/src/main/java/com/qxueyou/scc/teach/res/service/HweiYunOBSService.java +++ b/src/main/java/com/qxueyou/scc/teach/res/service/HweiYunOBSService.java @@ -4,8 +4,10 @@ import com.qxueyou.scc.base.model.FileMeta; import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.io.InputStream; import java.util.List; +import java.util.Map; /** * @Description 鍗庝负浜慜BS鏈嶅姟鎺ュ彛 @@ -42,6 +44,7 @@ */ List<FileMeta> fileUpload(MultipartFile uploadFile, String objectKey); + List<FileMeta> fnepian(MultipartFile uploadFile,String objectKey) throws IOException; /** * @Description 鏂囦欢涓嬭浇 * @author wuhuiju diff --git a/src/main/java/com/qxueyou/scc/teach/res/service/impl/HweiYunOBSServiceImpl.java b/src/main/java/com/qxueyou/scc/teach/res/service/impl/HweiYunOBSServiceImpl.java index 8589af1..3413b40 100644 --- a/src/main/java/com/qxueyou/scc/teach/res/service/impl/HweiYunOBSServiceImpl.java +++ b/src/main/java/com/qxueyou/scc/teach/res/service/impl/HweiYunOBSServiceImpl.java @@ -19,14 +19,19 @@ import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.aspectj.util.FileUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; +import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.*; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; /** * @ClassName: HweiYunOBSServiceImpl @@ -160,6 +165,115 @@ return null; } + @Override + public List<FileMeta> fnepian(MultipartFile uploadFile, String objectKey) throws IOException { + ObsClient obsClient = null; + List<FileMeta> files = new ArrayList<FileMeta>(2); + FileMeta fileMeta = null; + // 姣忎釜鍒嗙墖鐨勫ぇ灏忥紝鐢ㄤ簬璁$畻鏂囦欢鏈夊灏戜釜鍒嗙墖銆傚崟浣嶄负瀛楄妭銆� + final long partSize = 10 * 1024 * 1024L; //10 MB銆� + String bucketName = hweiOBSConfig.getBucketName(); + obsClient = hweiOBSConfig.getInstance(); + // objectName 鏄矾寰勶紝鍒嗙墖鏂囦欢鏈�缁堟暣鍚堢殑璺緞 + String objectName = "multipartUpload/"+objectKey; + // 鍒涘缓InitiateMultipartUploadRequest瀵硅薄銆� + InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(bucketName, objectName); + InitiateMultipartUploadResult prebuilt = obsClient.initiateMultipartUpload(request); + InputStream inputStream = uploadFile.getInputStream(); + // 鑾峰彇鍏ㄥ眬id + String uploadId = prebuilt.getUploadId(); + // 濡傛灉骞跺彂閲忓ぇ鐨勮瘽 鍒濆鍖栫嚎绋嬫睜 20绾跨▼鏁伴噺 + // ExecutorService executorService = Executors.newFixedThreadPool(20); + // partTags鏄疨artEtag鐨勯泦鍚堛�侾artEtag鐢卞垎鐗囩殑ETag鍜屽垎鐗囧彿缁勬垚銆� + List<PartEtag> partTags = new ArrayList<PartEtag>(); + File file = MultipartFileToFile(uploadFile); + // 璁$畻鏈夊灏戜釜鍒嗙墖 + int partCount = (int) (file.length() / partSize); + // 濡傛灉鍙栦綑鏁颁笉涓洪浂鍒欒拷鍔犱竴涓� + if (file.length() % partSize != 0) { + partCount++; + } + + try { + for (int i = 0; i < partCount; i++) { + long startPos = i * partSize; + long curPartSize = (i + 1 == partCount) ? (file.length() - startPos) : partSize; + // 璺宠繃宸茬粡涓婁紶鐨勫垎鐗囥�� + inputStream.skip(startPos); + UploadPartRequest uploadPartRequest = new UploadPartRequest(); + uploadPartRequest.setBucketName(bucketName); + uploadPartRequest.setObjectKey(objectName); + uploadPartRequest.setUploadId(uploadId); + uploadPartRequest.setInput(inputStream); + // 璁剧疆鍒嗙墖澶у皬銆傞櫎浜嗘渶鍚庝竴涓垎鐗囨病鏈夊ぇ灏忛檺鍒讹紝鍏朵粬鐨勫垎鐗囨渶灏忎负100 KB銆� + uploadPartRequest.setPartSize(curPartSize); + // 璁剧疆鍒嗙墖鍙枫�傛瘡涓�涓笂浼犵殑鍒嗙墖閮芥湁涓�涓垎鐗囧彿锛屽彇鍊艰寖鍥存槸1~10000锛屽鏋滆秴鍑烘鑼冨洿锛孫bs灏嗚繑鍥濱nvalidArgument閿欒鐮併�� + uploadPartRequest.setPartNumber( i + 1); + // 姣忎釜鍒嗙墖涓嶉渶瑕佹寜椤哄簭涓婁紶锛岀敋鑷冲彲浠ュ湪涓嶅悓瀹㈡埛绔笂浼狅紝obs浼氭寜鐓у垎鐗囧彿鎺掑簭缁勬垚瀹屾暣鐨勬枃浠躲�� + UploadPartResult uploadPartResult = obsClient.uploadPart(uploadPartRequest); + // 姣忔涓婁紶鍒嗙墖涔嬪悗锛孫bS鐨勮繑鍥炵粨鏋滃寘鍚玃artETag銆侾artETag灏嗚淇濆瓨鍦╬artTags涓�� + partTags.add(new PartEtag(uploadPartResult.getEtag(), uploadPartResult.getPartNumber())); + } + // 寮�濮嬬嚎绋嬫睜鏃跺�欎娇鐢細绛夊緟涓婁紶瀹屾垚 + /* executorService.shutdown(); + while (!executorService.isTerminated()) + { + try + { + executorService.awaitTermination(5, TimeUnit.SECONDS); + } + catch (InterruptedException e) + { + e.printStackTrace(); + } + }*/ + fileMeta = new FileMeta(); + // 鍚堝苟鍒嗙墖娈� + // 鍦ㄦ墽琛屽畬鎴愬垎鐗囦笂浼犳搷浣滄椂锛岄渶瑕佹彁渚涙墍鏈夋湁鏁堢殑partETags銆俹bs鏀跺埌鎻愪氦鐨刾artETags鍚庯紝浼氶�愪竴楠岃瘉姣忎釜鍒嗙墖鐨勬湁鏁堟�с�傚綋鎵�鏈夌殑鏁版嵁鍒嗙墖楠岃瘉閫氳繃鍚庯紝obs灏嗘妸杩欎簺鍒嗙墖缁勫悎鎴愪竴涓畬鏁寸殑鏂囦欢銆� + CompleteMultipartUploadRequest multipartUploadRequest = new CompleteMultipartUploadRequest(bucketName, objectName, uploadId, partTags); + // 瀹屾垚鍒嗙墖涓婁紶銆� + CompleteMultipartUploadResult completeMultipartUploadResult = obsClient.completeMultipartUpload(multipartUploadRequest); + // 杩斿洖鍏ㄥ眬id锛屾《鍚嶏紝瀵硅薄鍚嶇О 鐢ㄤ簬鍚庣画澶勭悊 姣斿鍙栨秷鍒嗙墖涓婁紶锛屾煡璇㈠垎鐗囦俊鎭瓑 + fileMeta.setPath(completeMultipartUploadResult.getObjectUrl()); + fileMeta.setFileSize(uploadFile.getSize() / 1024 + "kb"); + fileMeta.setFileType(uploadFile.getContentType()); + fileMeta.setFileName(objectKey); + files.add(fileMeta); + return files; + }catch (Exception e){ + log.error("鍒嗙墖寰幆涓婁紶澶辫触锛�"+e.getMessage()); + return null; + } + } + public static File MultipartFileToFile(MultipartFile multiFile) { + // 鑾峰彇鏂囦欢鍚� + String fileName = multiFile.getOriginalFilename(); + // 鑾峰彇鏂囦欢鍚庣紑 + String prefix = fileName.substring(fileName.lastIndexOf(".")); + // 鑻ラ』瑕侀槻姝㈢敓鎴愮殑涓存椂鏂囦欢閲嶅,鑳藉鍦ㄦ枃浠跺悕鍚庢坊鍔犻殢鏈虹爜 + + try { + File file = File.createTempFile(getFileNameNotPrefix(fileName), prefix); + multiFile.transferTo(file); + return file; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + /** + * 鑾峰彇鏂囦欢鍚嶄笉甯﹀悗缂� + * + * @param fileName + * @return + */ + public static String getFileNameNotPrefix(String fileName) { + String prefix = fileName.substring(fileName.indexOf(".")); + int num = prefix.length();//寰楀埌鍚庣紑鍚嶉暱搴� + String fileOtherName = fileName.substring(0, fileName.length() - num);//寰楀埌鏂囦欢鍚嶃�傚幓鎺変簡鍚庣紑 + return fileOtherName; + } + private String getDestPath(String name) { String fileType = getFileType(name); diff --git a/src/main/java/com/qxueyou/scc/user/service/IUserRoleService.java b/src/main/java/com/qxueyou/scc/user/service/IUserRoleService.java index b9e11ff..42f2477 100644 --- a/src/main/java/com/qxueyou/scc/user/service/IUserRoleService.java +++ b/src/main/java/com/qxueyou/scc/user/service/IUserRoleService.java @@ -96,4 +96,6 @@ * @return */ Result addTeachers(String teacherIds, String roleId); + + } diff --git a/src/main/java/com/qxueyou/scc/user/service/IUserService.java b/src/main/java/com/qxueyou/scc/user/service/IUserService.java index 56ada3b..34d792b 100644 --- a/src/main/java/com/qxueyou/scc/user/service/IUserService.java +++ b/src/main/java/com/qxueyou/scc/user/service/IUserService.java @@ -117,4 +117,6 @@ * @param userId */ boolean exists(String account); + + Result countUser(); } diff --git a/src/main/java/com/qxueyou/scc/user/service/impl/UserRoleService.java b/src/main/java/com/qxueyou/scc/user/service/impl/UserRoleService.java index 11b19a4..47ed924 100644 --- a/src/main/java/com/qxueyou/scc/user/service/impl/UserRoleService.java +++ b/src/main/java/com/qxueyou/scc/user/service/impl/UserRoleService.java @@ -172,4 +172,5 @@ return dao.addTeachers(teacherIds, roleId); } + } diff --git a/src/main/java/com/qxueyou/scc/user/service/impl/UserService.java b/src/main/java/com/qxueyou/scc/user/service/impl/UserService.java index 71fab0c..f994905 100644 --- a/src/main/java/com/qxueyou/scc/user/service/impl/UserService.java +++ b/src/main/java/com/qxueyou/scc/user/service/impl/UserService.java @@ -282,4 +282,10 @@ return findCount("from User where account = ?", CollectionUtils.newList(account)) > 0; } + @Override + public Result countUser() { + String hql = "from count User where sex=? and deleteFlag is false"; + return new Result(true,findCount(hql,CollectionUtils.newList(1))); + } + } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index a6dee7f..2d6ba1d 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -17,6 +17,7 @@ spring.http.multipart.maxFileSize=3000Mb spring.http.multipart.maxRequestSize=3000Mb + #mysqldb.datasource.url=jdbc:mysql://rds88t2of1fi184y4s5wo.mysql.rds.aliyuncs.com:3306/scc?useUnicode=true&characterEncoding=GBK&characterSetResults=GBK&zeroDateTimeBehavior=convertToNull #mysqldb.datasource.url=jdbc:mysql://10.1.80.52:3306/rsdb?useUnicode=true&characterEncoding=GBK&characterSetResults=GBK&zeroDateTimeBehavior=convertToNull mysqldb.datasource.url=jdbc:mysql://110.41.147.200:3306/scc?useUnicode=true&characterEncoding=GBK&characterSetResults=GBK&zeroDateTimeBehavior=convertToNull -- Gitblit v1.8.0