From 083b94232d46de6c421b7cb2146a4445e8ebe9db Mon Sep 17 00:00:00 2001 From: Diyu0904 <1819728964@qq.com> Date: Wed, 5 Mar 2025 18:30:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=94=B6=E8=97=8F=20?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=8A=A0=E5=AF=86=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resource/CollectController.java | 34 ++++ .../mcwl/web/controller/resource/Test.java | 180 ------------------ .../com/mcwl/resource/domain/Collect.java | 40 ++++ .../mcwl/resource/mapper/CollectMapper.java | 18 ++ .../mcwl/resource/service/CollectService.java | 15 ++ .../service/impl/CollectServiceImpl.java | 41 ++++ .../mapper/resource/CollectMapper.xml | 13 ++ 7 files changed, 161 insertions(+), 180 deletions(-) create mode 100644 mcwl-admin/src/main/java/com/mcwl/web/controller/resource/CollectController.java delete mode 100644 mcwl-admin/src/main/java/com/mcwl/web/controller/resource/Test.java create mode 100644 mcwl-resource/src/main/java/com/mcwl/resource/domain/Collect.java create mode 100644 mcwl-resource/src/main/java/com/mcwl/resource/mapper/CollectMapper.java create mode 100644 mcwl-resource/src/main/java/com/mcwl/resource/service/CollectService.java create mode 100644 mcwl-resource/src/main/java/com/mcwl/resource/service/impl/CollectServiceImpl.java create mode 100644 mcwl-resource/src/main/resources/mapper/resource/CollectMapper.xml diff --git a/mcwl-admin/src/main/java/com/mcwl/web/controller/resource/CollectController.java b/mcwl-admin/src/main/java/com/mcwl/web/controller/resource/CollectController.java new file mode 100644 index 0000000..a8d9d10 --- /dev/null +++ b/mcwl-admin/src/main/java/com/mcwl/web/controller/resource/CollectController.java @@ -0,0 +1,34 @@ +package com.mcwl.web.controller.resource; + +import com.mcwl.common.core.domain.R; +import com.mcwl.resource.domain.Collect; +import com.mcwl.resource.service.impl.CollectServiceImpl; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * 收藏 + * @author DaiZibo + * @date 2025/3/5 + * @apiNote + */ + +@Slf4j +@Api(tags = "收藏") +@RestController +@RequestMapping("/collect") +public class CollectController { + + @Autowired + private CollectServiceImpl collectService; + + @PostMapping("/addCollect") + public R addCollect(@RequestBody Collect collect){ + + return collectService.addCollect(collect); + } + + +} diff --git a/mcwl-admin/src/main/java/com/mcwl/web/controller/resource/Test.java b/mcwl-admin/src/main/java/com/mcwl/web/controller/resource/Test.java deleted file mode 100644 index d083da4..0000000 --- a/mcwl-admin/src/main/java/com/mcwl/web/controller/resource/Test.java +++ /dev/null @@ -1,180 +0,0 @@ -package com.mcwl.web.controller.resource; - -import com.mcwl.web.controller.common.OssUtil; -import org.springframework.mock.web.MockMultipartFile; - -import javax.crypto.Cipher; -import javax.crypto.CipherInputStream; -import javax.crypto.CipherOutputStream; -import javax.crypto.SecretKey; -import javax.crypto.spec.IvParameterSpec; -import javax.crypto.spec.SecretKeySpec; -import java.io.ByteArrayOutputStream; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.security.AlgorithmParameters; -import java.util.Base64; -import java.util.HashMap; -import java.util.Map; - -/** - * @author DaiZibo - * @date 2025/2/5 - * @apiNote - */ - -public class Test { - - - private static final String ALGORITHM = "AES/CBC/PKCS5Padding"; - private static final String TRANSFORMATION = "AES"; - private static final String KEY = "iamkeyeeddzasdfs"; - private static byte[] SAVED_IV; // 静态变量存储IV,确保解密时可访问 -// iv=gHauCGwTlX/mgXrvTUCifQ==, key=aWFta2V5ZWVkZHphc2Rmcw== - - public static void main(String[] args) throws Exception { - // 示例:加密文件并获取密钥 - // Map stringStringMap = encryptFile("D:\\ASE\\encryption\\测试文件1.txt", "D:\\ASE\\decode\\加密测试文件1.txt"); -// System.out.println("-------------------"+keyBase64); -// System.out.println("Encryption Key: " + keyBase64); -// -// // 使用上面得到的密钥解密文件 - decryptFile("C:\\Users\\Dzb\\Desktop\\a.enc", "D:\\ASE\\encryption\\解密测试文件3.txt","aWFta2V5ZWVkZHphc2Rmcw==","gHauCGwTlX/mgXrvTUCifQ=="); - -// Map stringStringMap = uploadEncryptedFileToOSS("D:\\ASE\\encryption\\测试文件1.txt", "encrypted-test-file1.enc"); -// System.out.println("-------------"+stringStringMap); - - } - - public static Map encryptFile(String sourcePath, String encryptedPath) throws Exception { - Cipher cipher = initCipher(Cipher.ENCRYPT_MODE); - try (FileInputStream fis = new FileInputStream(sourcePath); - FileOutputStream fos = new FileOutputStream(encryptedPath); - CipherOutputStream cos = new CipherOutputStream(fos, cipher)) { - byte[] buffer = new byte[1024]; - int read; - while ((read = fis.read(buffer)) != -1) { - cos.write(buffer, 0, read); - } - } - System.out.println("加密完成"); - - SecretKey secretKey = new SecretKeySpec(KEY.getBytes(), TRANSFORMATION); - Map result = new HashMap<>(); - result.put("key", Base64.getEncoder().encodeToString(secretKey.getEncoded())); - result.put("iv", Base64.getEncoder().encodeToString(SAVED_IV)); - return result; - } - -// public static void decryptFile(String encryptedPath, String decryptedPath, String keyBase64) throws Exception { -// byte[] keyBytes = Base64.getDecoder().decode(keyBase64); -// SecretKeySpec secretKeySpec = new SecretKeySpec(keyBytes, TRANSFORMATION); -// Cipher cipher = initCipher(Cipher.DECRYPT_MODE, secretKeySpec); -// -// try (FileInputStream fis = new FileInputStream(encryptedPath); -// CipherInputStream cis = new CipherInputStream(fis, cipher); -// FileOutputStream fos = new FileOutputStream(decryptedPath)) { -// byte[] buffer = new byte[1024]; -// int read; -// while ((read = cis.read(buffer)) != -1) { -// fos.write(buffer, 0, read); -// } -// } -// System.out.println("解密完成"); -// } - - - public static void decryptFile(String encryptedPath, String decryptedPath, String keyBase64, String ivBase64) throws Exception { - byte[] keyBytes = Base64.getDecoder().decode(keyBase64); - byte[] ivBytes = Base64.getDecoder().decode(ivBase64); - SecretKeySpec secretKeySpec = new SecretKeySpec(keyBytes, TRANSFORMATION); - IvParameterSpec ivParameterSpec = new IvParameterSpec(ivBytes); - Cipher cipher = initCipher(Cipher.DECRYPT_MODE, secretKeySpec, ivParameterSpec); - - try (FileInputStream fis = new FileInputStream(encryptedPath); - CipherInputStream cis = new CipherInputStream(fis, cipher); - FileOutputStream fos = new FileOutputStream(decryptedPath)) { - byte[] buffer = new byte[1024]; - int read; - while ((read = cis.read(buffer)) != -1) { - fos.write(buffer, 0, read); - } - } - System.out.println("解密完成"); - } - - -// private static Cipher initCipher(int mode) throws Exception { -//// return initCipher(mode, null); -//// } -//// -//// private static Cipher initCipher(int mode, SecretKeySpec secretKeySpec) throws Exception { -//// Cipher cipher = Cipher.getInstance(ALGORITHM); -//// if (secretKeySpec == null) { -//// secretKeySpec = new SecretKeySpec(KEY.getBytes(), TRANSFORMATION); -//// } -//// if (mode == Cipher.ENCRYPT_MODE && SAVED_IV == null) { -//// cipher.init(mode, secretKeySpec); -//// AlgorithmParameters params = cipher.getParameters(); -//// SAVED_IV = params.getParameterSpec(IvParameterSpec.class).getIV(); -//// System.out.println("Generated IV: " + Base64.getEncoder().encodeToString(SAVED_IV)); -//// } else { -//// cipher.init(mode, secretKeySpec, new IvParameterSpec(SAVED_IV)); -//// } -//// return cipher; -//// } - - - private static Cipher initCipher(int mode, SecretKeySpec secretKeySpec, IvParameterSpec ivParameterSpec) throws Exception { - Cipher cipher = Cipher.getInstance(ALGORITHM); - if (secretKeySpec == null){ - secretKeySpec = new SecretKeySpec(KEY.getBytes(), TRANSFORMATION); - } - if (mode == Cipher.ENCRYPT_MODE) { - cipher.init(mode, secretKeySpec); - AlgorithmParameters params = cipher.getParameters(); - SAVED_IV = params.getParameterSpec(IvParameterSpec.class).getIV(); - System.out.println("Generated IV: " + Base64.getEncoder().encodeToString(SAVED_IV)); - } else { - cipher.init(mode, secretKeySpec, ivParameterSpec); - } - return cipher; - } - - private static Cipher initCipher(int mode) throws Exception { - return initCipher(mode, null, null); - } - - private static Cipher initCipher(int mode, SecretKeySpec secretKeySpec) throws Exception { - return initCipher(mode, secretKeySpec, null); - } - - - public static Map uploadEncryptedFileToOSS(String sourcePath, String ossFileName) throws Exception { - Cipher cipher = initCipher(Cipher.ENCRYPT_MODE); - - ByteArrayOutputStream bos = new ByteArrayOutputStream(); - try (FileInputStream fis = new FileInputStream(sourcePath); - CipherInputStream cis = new CipherInputStream(fis, cipher)) { - byte[] buffer = new byte[1024]; - int read; - while ((read = cis.read(buffer)) != -1) { - bos.write(buffer, 0, read); - } - } - System.out.println("加密完成"); - - // 将加密后的字节数组转换为MultipartFile - MockMultipartFile multipartFile = new MockMultipartFile(ossFileName, ossFileName, "application/octet-stream", bos.toByteArray()); - // 调用上传方法 - String uploadedUrl = OssUtil.uploadMultipartFile(multipartFile); - - Map result = new HashMap<>(); - result.put("uploadedUrl", uploadedUrl); - SecretKey secretKey = new SecretKeySpec(KEY.getBytes(), TRANSFORMATION); - - result.put("key",Base64.getEncoder().encodeToString(secretKey.getEncoded())); - result.put("iv", Base64.getEncoder().encodeToString(SAVED_IV)); - return result; - } -} diff --git a/mcwl-resource/src/main/java/com/mcwl/resource/domain/Collect.java b/mcwl-resource/src/main/java/com/mcwl/resource/domain/Collect.java new file mode 100644 index 0000000..5308603 --- /dev/null +++ b/mcwl-resource/src/main/java/com/mcwl/resource/domain/Collect.java @@ -0,0 +1,40 @@ +package com.mcwl.resource.domain; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +/** + * 收藏表 + * + * @author DaiZibo + * @date 2025/3/5 + * @apiNote + */ + +@TableName("collect") +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Data +public class Collect { + + private Long id; + + private Long productId; + + private Long userId; + + private Long productType; + + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + +} diff --git a/mcwl-resource/src/main/java/com/mcwl/resource/mapper/CollectMapper.java b/mcwl-resource/src/main/java/com/mcwl/resource/mapper/CollectMapper.java new file mode 100644 index 0000000..40bedec --- /dev/null +++ b/mcwl-resource/src/main/java/com/mcwl/resource/mapper/CollectMapper.java @@ -0,0 +1,18 @@ +package com.mcwl.resource.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mcwl.resource.domain.Collect; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @author DaiZibo + * @date 2025/3/5 + * @apiNote + */ + +@Mapper +public interface CollectMapper extends BaseMapper { + Collect selectCollect(@Param("userId") Long userId, @Param("productId") Long productId, @Param("productType") Long productType); + +} diff --git a/mcwl-resource/src/main/java/com/mcwl/resource/service/CollectService.java b/mcwl-resource/src/main/java/com/mcwl/resource/service/CollectService.java new file mode 100644 index 0000000..9b4521c --- /dev/null +++ b/mcwl-resource/src/main/java/com/mcwl/resource/service/CollectService.java @@ -0,0 +1,15 @@ +package com.mcwl.resource.service; + +import com.mcwl.common.core.domain.R; +import com.mcwl.resource.domain.Collect; + +/** + * 收藏服务层 + * @author DaiZibo + * @date 2025/3/5 + * @apiNote + */ + +public interface CollectService { + R addCollect(Collect collect); +} diff --git a/mcwl-resource/src/main/java/com/mcwl/resource/service/impl/CollectServiceImpl.java b/mcwl-resource/src/main/java/com/mcwl/resource/service/impl/CollectServiceImpl.java new file mode 100644 index 0000000..e87d292 --- /dev/null +++ b/mcwl-resource/src/main/java/com/mcwl/resource/service/impl/CollectServiceImpl.java @@ -0,0 +1,41 @@ +package com.mcwl.resource.service.impl; + +import com.mcwl.common.core.domain.R; +import com.mcwl.common.utils.SecurityUtils; +import com.mcwl.resource.domain.Collect; +import com.mcwl.resource.mapper.CollectMapper; +import com.mcwl.resource.service.CollectService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * 收藏实现层 + * @author DaiZibo + * @date 2025/3/5 + * @apiNote + */ + +@Service +public class CollectServiceImpl implements CollectService { + + + @Autowired + private CollectMapper collectMapper; + + @Override + public R addCollect(Collect collect) { + + Collect collect1 = collectMapper.selectCollect(SecurityUtils.getUserId(),collect.getProductId(),collect.getProductType()); + + if (collect1 == null){ + //执行收藏 + collectMapper.insert(collect); + return R.ok(0); + } + + //执行删除/取消收藏 + collectMapper.deleteById(collect1.getId()); + return R.ok(1); + + } +} diff --git a/mcwl-resource/src/main/resources/mapper/resource/CollectMapper.xml b/mcwl-resource/src/main/resources/mapper/resource/CollectMapper.xml new file mode 100644 index 0000000..bda0de4 --- /dev/null +++ b/mcwl-resource/src/main/resources/mapper/resource/CollectMapper.xml @@ -0,0 +1,13 @@ + + + + + + +