parent
416e64f859
commit
eeae4fb8ef
|
@ -42,11 +42,17 @@ public class CollectController {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询收藏列表
|
||||||
|
* @param pageVo
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@ApiOperation(value = "查询收藏列表")
|
||||||
|
@PostMapping("/selectCollect")
|
||||||
public R selectCollect(@RequestBody PageVo pageVo){
|
public R selectCollect(@RequestBody PageVo pageVo){
|
||||||
|
|
||||||
|
|
||||||
return R.ok();
|
return collectService.selectCollect(pageVo);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -171,6 +171,7 @@ public class FileController {
|
||||||
@RequestParam("uploadId") String uploadId) throws Exception {
|
@RequestParam("uploadId") String uploadId) throws Exception {
|
||||||
File file1 = multipartFileToFile(file);
|
File file1 = multipartFileToFile(file);
|
||||||
Map<String,String> map = uploadChunk(uploadId, file1, chunk, objectKey);
|
Map<String,String> map = uploadChunk(uploadId, file1, chunk, objectKey);
|
||||||
|
log.info("上传的文件大小:{}",file.getSize());
|
||||||
return R.ok(map);
|
return R.ok(map);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -224,6 +225,7 @@ public class FileController {
|
||||||
UploadPartResult result = obsClient.uploadPart(request);
|
UploadPartResult result = obsClient.uploadPart(request);
|
||||||
map.put("etag",result.getEtag());
|
map.put("etag",result.getEtag());
|
||||||
map.put("partNumber",String.valueOf(result.getPartNumber()));
|
map.put("partNumber",String.valueOf(result.getPartNumber()));
|
||||||
|
log.info("分段上传完成:{}",chunk);
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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<String, String> stringStringMap = encryptFile("D:\\ASE\\encryption\\十二女花神 -1-5月花神_十二花神-上1.safetensors", "D:\\ASE\\decode\\加密文件2.safetensors");
|
|
||||||
// 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<String, String> stringStringMap = uploadEncryptedFileToOSS("D:\\ASE\\encryption\\测试文件1.txt", "encrypted-test-file1.enc");
|
|
||||||
// System.out.println("-------------"+stringStringMap);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Map<String, String> 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<String, String> 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<String, String> 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<String, String> 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;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -2,6 +2,7 @@ package com.mcwl.resource.domain;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
@ -25,16 +26,24 @@ import java.util.Date;
|
||||||
@Data
|
@Data
|
||||||
public class Collect {
|
public class Collect {
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "主键ID")
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "作品ID")
|
||||||
private Long productId;
|
private Long productId;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "收藏人")
|
||||||
private Long userId;
|
private Long userId;
|
||||||
|
|
||||||
private Long productType;
|
@ApiModelProperty(value = "收藏类型 0模型 1工作流")
|
||||||
|
private Integer collectType;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "创建时间")
|
||||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||||
private Date createTime;
|
private Date createTime;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "作品的类型")
|
||||||
|
private Integer productType;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@ import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface CollectMapper extends BaseMapper<Collect> {
|
public interface CollectMapper extends BaseMapper<Collect> {
|
||||||
Collect selectCollect(@Param("userId") Long userId, @Param("productId") Long productId, @Param("productType") Long productType);
|
Collect selectCollect(@Param("userId") Long userId, @Param("productId") Long productId, @Param("collectType") Integer collectType);
|
||||||
|
|
||||||
Collect selectCollectById(@Param("modelId") Long modelId, @Param("userIdMax") Long userIdMax, @Param("type") Integer type);
|
Collect selectCollectById(@Param("modelId") Long modelId, @Param("userIdMax") Long userIdMax, @Param("type") Integer type);
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@ package com.mcwl.resource.service;
|
||||||
|
|
||||||
import com.mcwl.common.core.domain.R;
|
import com.mcwl.common.core.domain.R;
|
||||||
import com.mcwl.resource.domain.Collect;
|
import com.mcwl.resource.domain.Collect;
|
||||||
|
import com.mcwl.resource.domain.vo.PageVo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 收藏服务层
|
* 收藏服务层
|
||||||
|
@ -14,4 +15,6 @@ public interface CollectService {
|
||||||
R addCollect(Collect collect);
|
R addCollect(Collect collect);
|
||||||
|
|
||||||
Collect selectCollectById(Long modelId, Long userIdMax,Integer type);
|
Collect selectCollectById(Long modelId, Long userIdMax,Integer type);
|
||||||
|
|
||||||
|
R selectCollect(PageVo pageVo);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ package com.mcwl.resource.service.impl;
|
||||||
import com.mcwl.common.core.domain.R;
|
import com.mcwl.common.core.domain.R;
|
||||||
import com.mcwl.common.utils.SecurityUtils;
|
import com.mcwl.common.utils.SecurityUtils;
|
||||||
import com.mcwl.resource.domain.Collect;
|
import com.mcwl.resource.domain.Collect;
|
||||||
|
import com.mcwl.resource.domain.vo.PageVo;
|
||||||
import com.mcwl.resource.mapper.CollectMapper;
|
import com.mcwl.resource.mapper.CollectMapper;
|
||||||
import com.mcwl.resource.service.CollectService;
|
import com.mcwl.resource.service.CollectService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
@ -27,7 +28,7 @@ public class CollectServiceImpl implements CollectService {
|
||||||
@Override
|
@Override
|
||||||
public R addCollect(Collect collect) {
|
public R addCollect(Collect collect) {
|
||||||
|
|
||||||
Collect collect1 = collectMapper.selectCollect(SecurityUtils.getUserId(),collect.getProductId(),collect.getProductType());
|
Collect collect1 = collectMapper.selectCollect(SecurityUtils.getUserId(),collect.getProductId(),collect.getCollectType());
|
||||||
collect.setUserId(SecurityUtils.getUserId());
|
collect.setUserId(SecurityUtils.getUserId());
|
||||||
collect.setCreateTime(new Date());
|
collect.setCreateTime(new Date());
|
||||||
if (collect1 == null){
|
if (collect1 == null){
|
||||||
|
@ -47,4 +48,19 @@ public class CollectServiceImpl implements CollectService {
|
||||||
|
|
||||||
return collectMapper.selectCollectById(modelId,userIdMax,type);
|
return collectMapper.selectCollectById(modelId,userIdMax,type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public R selectCollect(PageVo pageVo) {
|
||||||
|
|
||||||
|
//查询个人收藏
|
||||||
|
Long userIdMax = SecurityUtils.getUserIdMax();
|
||||||
|
|
||||||
|
if (pageVo.getType() == 0){
|
||||||
|
//查询工作流
|
||||||
|
}
|
||||||
|
|
||||||
|
//查询模型
|
||||||
|
|
||||||
|
return R.ok();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<select id="selectCollect" resultType="com.mcwl.resource.domain.Collect">
|
<select id="selectCollect" resultType="com.mcwl.resource.domain.Collect">
|
||||||
select
|
select
|
||||||
id,product_id,user_id,product_type
|
id,product_id,user_id,product_type
|
||||||
FROM collect where product_id = #{productId} and user_id = #{userId} and product_type = #{productType}
|
FROM collect where product_id = #{productId} and user_id = #{userId} and collect_type = #{collectType}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="selectCollectById" resultType="com.mcwl.resource.domain.Collect">
|
<select id="selectCollectById" resultType="com.mcwl.resource.domain.Collect">
|
||||||
|
|
Loading…
Reference in New Issue