diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/OSSController.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/OSSController.java new file mode 100644 index 00000000..cf705e2f --- /dev/null +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/OSSController.java @@ -0,0 +1,48 @@ +package cc.hiver.mall.controller; + +import cc.hiver.core.common.utils.ResultUtil; +import cc.hiver.core.common.vo.Result; +import cc.hiver.mall.utils.OssUtil; +import com.aliyun.oss.OSS; +import com.aliyun.oss.OSSClient; +import com.aliyun.oss.model.OSSObject; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.ByteArrayResource; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.util.ObjectUtils; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; + +/** + * @类描述 OSS文件传输接口 + * @作者 冯彬 + * @时间 2023/10/1-下午11:19 + */ +@Slf4j +@RestController +@Api(tags = "文件传输接口") +@RequestMapping(value = "/hiver/mall/oss/") +public class OSSController { + + @Autowired + private OssUtil ossUtil; + + @PostMapping("/upload") + public Result uploadFile(@RequestParam("file") MultipartFile file) throws Exception { + if (ObjectUtils.isEmpty(file)){ + return ResultUtil.error("上传失败,文件为空。"); + } + String objectName = file.getOriginalFilename(); // 文件名作为对象名称 + InputStream inputStream = file.getInputStream(); + String path = ossUtil.uploadFile(objectName,inputStream); // 上传文件并返回文件URL + return ResultUtil.success(path); + } + +} diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/PurchaseController.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/PurchaseController.java index 30301000..f9671ea0 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/PurchaseController.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/PurchaseController.java @@ -21,6 +21,7 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import java.util.List; +import java.util.Random; @Slf4j @RestController @@ -40,6 +41,16 @@ public class PurchaseController { public Result save(PurchaseVo purchaseVo) { Purchase purchase = purchaseVo.getPurchase(); List purchaseDetails = purchaseVo.getPurchaseDetails(); + Random random = new Random(); + for (PurchaseDetail purchaseDetail : purchaseDetails) { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < 20; i++) { + int randomNum = random.nextInt(10); + sb.append(randomNum); + } + String barcode = sb.toString(); + purchaseDetail.setBarcode(barcode); + } boolean result = purchaseService.save(purchase); if(result) { boolean saveBatch = purchaseDetailService.saveBatch(purchaseDetails); @@ -96,6 +107,21 @@ public class PurchaseController { } + @RequestMapping(value = "/getPurchaseDetailByBarcode", method = RequestMethod.GET) + @ApiOperation(value = "根据二维码查询采购单明细") + public Result getPurchaseDetailByBarcode(String barcode) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (!ObjectUtils.isEmpty(barcode)){ + queryWrapper.eq("barcode",barcode ); + List list = purchaseDetailService.list(queryWrapper); + if (list != null && list.size() > 0){ + PurchaseDetail purchaseDetail = list.get(0); + return new ResultUtil().setData(purchaseDetail); + } + } + return ResultUtil.error("无数据"); + } + @RequestMapping(value = "/debt", method = RequestMethod.GET) @ApiOperation(value = "根据商铺id查询上游欠款供应商列表") public Result debt(String shopId) { diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/utils/OssUtil.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/utils/OssUtil.java new file mode 100644 index 00000000..a7e933bf --- /dev/null +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/utils/OssUtil.java @@ -0,0 +1,53 @@ +package cc.hiver.mall.utils; + +import com.aliyun.oss.ClientException; +import com.aliyun.oss.OSS; +import com.aliyun.oss.OSSClientBuilder; +import com.aliyun.oss.OSSException; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.io.File; +import java.io.InputStream; +import java.net.URL; +import java.util.Calendar; +import java.util.Date; + +/** + * @类描述 + * @作者 冯彬 + * @时间 2023/10/1-下午11:45 + */ + +@Component +public class OssUtil { + @Value("${aliyun.oss.endpoint}") + private String endpoint; + @Value("${aliyun.oss.accessKeyId}") + private String accessKeyId; + @Value("${aliyun.oss.accessKeySecret}") + private String accessKeySecret; + @Value("${aliyun.oss.bucketName}") + private String bucketName; + + public OSS getOssClient() { + return new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); + } + + public String uploadFile(String objectName, InputStream file) throws ClientException, OSSException { + OSS ossClient = getOssClient(); + ossClient.putObject(bucketName, objectName, file); + ossClient.shutdown(); + Date currentDate = new Date(); + // 创建Calendar对象并设置为当前日期 + Calendar calendar = Calendar.getInstance(); + calendar.setTime(currentDate); + // 添加10000天 + calendar.add(Calendar.DAY_OF_MONTH, 10000); + // 获取10000天后的日期 + Date expirationDate = calendar.getTime(); + URL url = ossClient.generatePresignedUrl(bucketName, objectName, expirationDate); + String path = url.getPath(); + return path; + } +}