From 34a86db0f5132552b420f5c3476442c90ce9b478 Mon Sep 17 00:00:00 2001 From: quyixiao <2621048238@qq.com> Date: Sun, 26 Oct 2025 22:02:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/dao/vv/VvCategoryPropertyDao.java | 2 + .../dao/vv/VvCategoryPropertyValueDao.java | 2 + .../heyu/api/oss/OssFileUploadService.java | 2 +- .../api/oss/OssFileUploadServiceImpl.java | 33 +++++++ .../java/com/heyu/api}/utils/ChartUtil.java | 64 +++++++++++++- .../mm/AdminCategoryPropertyController.java | 86 +++++++++---------- .../api/controller/vv/AppTestController.java | 24 +++++- ...SendDingDingQueueSimpleRabbitListener.java | 2 +- .../src/test/java/com/api/test/Test3.java | 19 ++++ pom.xml | 15 ++++ 10 files changed, 200 insertions(+), 49 deletions(-) rename {api-mapper/src/main/java/com/heyu/api/data => api-third/src/main/java/com/heyu/api}/utils/ChartUtil.java (92%) create mode 100644 api-web/api-interface/src/test/java/com/api/test/Test3.java diff --git a/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvCategoryPropertyDao.java b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvCategoryPropertyDao.java index f1320af..22f1fa9 100644 --- a/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvCategoryPropertyDao.java +++ b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvCategoryPropertyDao.java @@ -38,6 +38,8 @@ public interface VvCategoryPropertyDao extends BaseMapper> uploadImages(MultipartFile[] files); - + OssUploadResult uploadImageToOss(InputStream inputStream,String oss_buccket, String fileName, int fileSize); } diff --git a/api-third/src/main/java/com/heyu/api/oss/OssFileUploadServiceImpl.java b/api-third/src/main/java/com/heyu/api/oss/OssFileUploadServiceImpl.java index 7ec1210..2030f09 100644 --- a/api-third/src/main/java/com/heyu/api/oss/OssFileUploadServiceImpl.java +++ b/api-third/src/main/java/com/heyu/api/oss/OssFileUploadServiceImpl.java @@ -124,6 +124,39 @@ public class OssFileUploadServiceImpl implements OssFileUploadService { return result; } + + @Override + public OssUploadResult uploadImageToOss(InputStream inputStream,String buccket, String fileName, int fileSize) { + OssUploadResult result = new OssUploadResult(); + try { + String path = env + "/"; + ObjectMetadata metadata = new ObjectMetadata(); + metadata.setContentLength(fileSize); + metadata.setContentType(this.getImageFileContentType(fileName)); + PutObjectResult pubResult = ossClient.putObject(buccket, path + fileName, inputStream, metadata); + + if (pubResult == null || StringUtils.isBlank(pubResult.getETag())) { + log.error("upload to oss error, put object result is null or etag is empty, fileName {}", fileName); + result.setSuccess(false); + result.setMsg("upload to oss error, put object result is null or etag is empty"); + return result; + } + result.setSuccess(true); + result.setMsg("upload inputStream to oss succeed"); + result.setFileMd5(pubResult.getETag()); + result.setUrl(oss_url + path + fileName); + } catch (Exception e) { + log.error("upload inputStream to oss error", e); + result.setSuccess(false); + result.setMsg("upload inputStream to oss error, message is " + e.getMessage()); + } + return result; + } + + + + + @Override public OssUploadResult uploadImageToOssAsync(InputStream inputStream, String fileName, int fileSize) { return this.uploadImageToOss(inputStream, fileName, fileSize); diff --git a/api-mapper/src/main/java/com/heyu/api/data/utils/ChartUtil.java b/api-third/src/main/java/com/heyu/api/utils/ChartUtil.java similarity index 92% rename from api-mapper/src/main/java/com/heyu/api/data/utils/ChartUtil.java rename to api-third/src/main/java/com/heyu/api/utils/ChartUtil.java index c577b27..ed1da65 100644 --- a/api-mapper/src/main/java/com/heyu/api/data/utils/ChartUtil.java +++ b/api-third/src/main/java/com/heyu/api/utils/ChartUtil.java @@ -1,5 +1,15 @@ -package com.heyu.api.data.utils; +package com.heyu.api.utils; +import com.google.zxing.BarcodeFormat; +import com.google.zxing.EncodeHintType; +import com.google.zxing.WriterException; +import com.google.zxing.client.j2se.MatrixToImageWriter; +import com.google.zxing.common.BitMatrix; +import com.google.zxing.qrcode.QRCodeWriter; +import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; +import com.heyu.api.data.utils.LineChartDTO; +import com.heyu.api.oss.OssFileUploadService; +import com.heyu.api.oss.OssUploadResult; import com.lz.mybatis.plugin.utils.OsUtil; import lombok.extern.slf4j.Slf4j; import org.jfree.chart.ChartFactory; @@ -23,11 +33,13 @@ import org.jfree.data.category.CategoryDataset; import org.jfree.data.general.DatasetUtilities; import org.jfree.data.general.DefaultPieDataset; import org.jfree.data.general.PieDataset; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.awt.*; -import java.io.File; -import java.io.FileOutputStream; +import java.io.*; +import java.nio.file.FileSystems; +import java.nio.file.Path; import java.text.DecimalFormat; import java.text.NumberFormat; import java.util.*; @@ -55,6 +67,16 @@ public class ChartUtil { } } + + + @Autowired + private OssFileUploadService ossFileUploadService; + + + + + + public static void main(String[] args) { ChartUtil pm = new ChartUtil(); // // 生成饼状图 @@ -117,6 +139,42 @@ public class ChartUtil { createTimeXYChar("七日同比还款数据", "16点", "repay percent %", dataset, "/repayChart.jpg"); } + public static String generateQRCodeImage(String text, int width, int height, String fileName) throws WriterException, IOException { + QRCodeWriter qrCodeWriter = new QRCodeWriter(); + Map hints = new HashMap<>(); + hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L); // 设置纠错等级,L、M、Q、H + hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); // 设置编码格式为UTF-8 + BitMatrix bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, width, height, hints); + String filePath = CHART_PATH + "/" + fileName; + Path path = FileSystems.getDefault().getPath(filePath); + MatrixToImageWriter.writeToPath(bitMatrix, "jpeg", path); // 输出图片格式为PNG,也可以改为JPG等其他格式 + return filePath; + } + + + public String generateQRCodeUp2Oss(String text) { + try { + String filePath = ChartUtil.generateQRCodeImage(text, 300, 300, System.currentTimeMillis() + ".png"); // 生成二维码并保存到文件系统 + + File file1 = new File(filePath); + + String picUrl = "/qrcode" + System.currentTimeMillis() + ".jpg"; + + InputStream inputStream = new FileInputStream(file1); + + OssUploadResult ossUploadResult = ossFileUploadService.uploadImageToOss(inputStream, picUrl, Integer.parseInt(String.valueOf(file1.length()))); + + //file1.delete(); + + String url = ossUploadResult.getUrl(); + return url; + } catch (Exception e) { + + e.printStackTrace(); + } + return null; + } + public String makeLineAndShapeChart2(String headerName, String xName, String yName, List list) { Set setName = new LinkedHashSet<>(); diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminCategoryPropertyController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminCategoryPropertyController.java index 916a1bd..4bc1414 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminCategoryPropertyController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminCategoryPropertyController.java @@ -1,9 +1,10 @@ package com.heyu.api.controller.mm; -import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.heyu.api.alibaba.request.mm.*; +import com.heyu.api.alibaba.request.mm.VvCategoryPropertyRequest; +import com.heyu.api.alibaba.request.mm.VvCategoryPropertySortRequest; +import com.heyu.api.alibaba.request.mm.VvCategoryPropertyValueSortRequest; import com.heyu.api.data.dao.vv.VvCategoryPropertyDao; import com.heyu.api.data.dao.vv.VvCategoryPropertyValueDao; import com.heyu.api.data.dto.vv.VvCategoryPropertyDTO; @@ -13,7 +14,6 @@ import com.heyu.api.data.utils.R; import com.heyu.api.utils.ISelect; import com.heyu.api.utils.PPageUtils; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestBody; @@ -72,29 +72,51 @@ public class AdminCategoryPropertyController { /*** * 插入或更新 * - * @return + * /mm/category/property/insertOrUpdate */ @RequestMapping("/insertOrUpdate") - public R insert(@RequestBody List vvPropertyInsertOrUpdateRequestList) { - for(VvPropertyInsertOrUpdateRequest vvPropertyInsertOrUpdateRequest : vvPropertyInsertOrUpdateRequestList){ - VvCategoryPropertyEntity vvPropertyEntity = new VvCategoryPropertyEntity(); - BeanUtils.copyProperties(vvPropertyInsertOrUpdateRequest, vvPropertyEntity); - vvCategoryPropertyDao.insertOrUpdateVvCategoryProperty(vvPropertyEntity); - - if (CollectionUtils.isNotEmpty(vvPropertyInsertOrUpdateRequest.getVvCategoryPropertyValueEntities())) { - int i = 1; - for (VvCategoryPropertyValueEntity vvPropertyValueEntity : vvPropertyInsertOrUpdateRequest.getVvCategoryPropertyValueEntities()) { - vvPropertyValueEntity.setCategoryPropertyId(vvPropertyEntity.getId()); - vvPropertyValueEntity.setDefaultSort(i); - vvCategoryPropertyValueDao.insertOrUpdateVvCategoryPropertyValue(vvPropertyValueEntity); - i ++ ; - } - } - } - return R.ok().setData("保存成功"); + public R insert(@RequestBody VvCategoryPropertyEntity vvCategoryProperty) { + vvCategoryPropertyDao.insertOrUpdateVvCategoryProperty(vvCategoryProperty); + return R.ok().setData(vvCategoryProperty); } + /*** + * 插入或更新 + * + * @return + */ + @RequestMapping("/delete") + public R delete(@RequestBody VvCategoryPropertyEntity vvCategoryProperty) { + vvCategoryPropertyDao.deleteVvCategoryPropertyById(vvCategoryProperty.getId()); + return R.ok(); + } + + + /*** + * 插入或更新 + * + * @return + */ + @RequestMapping("/value/insertOrUpdate") + public R insert(@RequestBody VvCategoryPropertyValueEntity vvCategoryPropertyValueEntity) { + vvCategoryPropertyValueDao.insertOrUpdateVvCategoryPropertyValue(vvCategoryPropertyValueEntity); + return R.ok().setData(vvCategoryPropertyValueEntity); + } + + + + /*** + * 插入或更新 + * + * @return + */ + @RequestMapping("/value/delete") + public R delete(@RequestBody VvCategoryPropertyValueEntity vvCategoryProperty) { + vvCategoryPropertyValueDao.deleteVvCategoryPropertyValueById(vvCategoryProperty.getId()); + return R.ok(); + } + /*** * 排序 @@ -123,28 +145,6 @@ public class AdminCategoryPropertyController { return R.ok().setData("保存成功"); } - /*** - * 排序 - */ - @RequestMapping("/update/sort/index") - public R updateSortIndex(@RequestBody VvCategoryPropertyIndexSortRequest vvCategorySortRequest) { - VvCategoryPropertyEntity vvPropertyEntity = vvCategoryPropertyDao.selectVvCategoryPropertyById(vvCategorySortRequest.getCategoryPropertyId()); - vvPropertyEntity.setDefaultSort(vvCategorySortRequest.getDefaultSort()); - vvCategoryPropertyDao.insertOrUpdateVvCategoryProperty(vvPropertyEntity); - return R.ok().setData("保存成功"); - } - - - /*** - * 排序 - */ - @RequestMapping("/update/value/sort/index") - public R updateSortIndex(@RequestBody VvCategoryPropertyIndexValueSortRequest vvCategorySortRequest) { - VvCategoryPropertyValueEntity vvPropertyValue = vvCategoryPropertyValueDao.selectVvCategoryPropertyValueById(vvCategorySortRequest.getCategoryPropertyValueId()); - vvPropertyValue.setDefaultSort(vvCategorySortRequest.getDefaultSort()); - vvCategoryPropertyValueDao.insertOrUpdateVvCategoryPropertyValue(vvPropertyValue); - return R.ok().setData("保存成功"); - } } diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppTestController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppTestController.java index adcec4b..2bcad6b 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppTestController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppTestController.java @@ -10,7 +10,7 @@ import com.heyu.api.data.dto.PackageDelivedDelayDTO; import com.heyu.api.data.dto.VvCreateDataConfigDTO; import com.heyu.api.data.entity.vv.VvChartConfigEntity; import com.heyu.api.data.entity.vv.VvCreateDataConfigEntity; -import com.heyu.api.data.utils.ChartUtil; +import com.heyu.api.utils.ChartUtil; import com.heyu.api.data.utils.DateUtils; import com.heyu.api.data.utils.R; import com.heyu.api.oss.OssFileUploadService; @@ -126,6 +126,28 @@ public class AppTestController { return R.ok(); } + + + + // /app/test/qrcode + @Describe("测试延迟队列") + @RequestMapping("/qrcode") + public R qrcode(@RequestBody AppOrderRequest vvOrderRequest) throws Exception { + + String url = chartUtil.generateQRCodeUp2Oss("9983989832983"); + log.info("url:",url); + + return R.ok(); + + } + + + + + + + + public static void main(String[] args) { System.out.println(System.currentTimeMillis()); } diff --git a/api-web/api-interface/src/main/java/com/heyu/api/listener/SendDingDingQueueSimpleRabbitListener.java b/api-web/api-interface/src/main/java/com/heyu/api/listener/SendDingDingQueueSimpleRabbitListener.java index 84d0b33..1499133 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/listener/SendDingDingQueueSimpleRabbitListener.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/listener/SendDingDingQueueSimpleRabbitListener.java @@ -5,7 +5,7 @@ import com.alibaba.fastjson.JSONObject; import com.heyu.api.data.dao.vv.VvAllDataDao; import com.heyu.api.data.entity.vv.VvAllDataEntity; import com.heyu.api.data.entity.vv.VvChartConfigEntity; -import com.heyu.api.data.utils.ChartUtil; +import com.heyu.api.utils.ChartUtil; import com.heyu.api.data.utils.ExpressionParse; import com.heyu.api.data.utils.GouDeZhaoDDUtils; import com.heyu.api.data.utils.LineChartDTO; diff --git a/api-web/api-interface/src/test/java/com/api/test/Test3.java b/api-web/api-interface/src/test/java/com/api/test/Test3.java new file mode 100644 index 0000000..05f70bd --- /dev/null +++ b/api-web/api-interface/src/test/java/com/api/test/Test3.java @@ -0,0 +1,19 @@ +package com.api.test; + +import com.google.zxing.WriterException; +import com.heyu.api.utils.ChartUtil; + +import java.io.IOException; + +public class Test3 { + + + public static void main(String[] args) { + try { + ChartUtil.generateQRCodeImage("Hello World!", 300, 300, "qrcode1.png"); // 生成二维码并保存到文件系统 + } catch (WriterException | IOException e) { + e.printStackTrace(); + } + } + +} diff --git a/pom.xml b/pom.xml index 41dd9cf..d689690 100644 --- a/pom.xml +++ b/pom.xml @@ -359,6 +359,21 @@ + + + com.google.zxing + core + 3.4.1 + + + com.google.zxing + javase + 3.4.1 + + + + +