diff --git a/pom.xml b/pom.xml
index 4a0ea15..8271620 100644
--- a/pom.xml
+++ b/pom.xml
@@ -100,9 +100,39 @@
2.6.0
+
+
+ com.google.auth
+ google-auth-library-oauth2-http
+ 1.38.0
+
+
+
+ com.squareup.okhttp3
+ okhttp
+ 4.12.0
+
+
+
+ cn.hutool
+ hutool-all
+ 5.8.25
+
+
+
+ com.alibaba
+ fastjson
+ 2.0.43
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-data-redis
+
@@ -131,15 +161,11 @@
org.apache.maven.plugins
maven-compiler-plugin
- 3.12.1
+ 3.11.0
21
21
- 21
UTF-8
-
- --enable-preview
-
diff --git a/src/main/java/com/aida/lanecarford/common/CommonConstant.java b/src/main/java/com/aida/lanecarford/common/CommonConstant.java
new file mode 100644
index 0000000..34f2d79
--- /dev/null
+++ b/src/main/java/com/aida/lanecarford/common/CommonConstant.java
@@ -0,0 +1,15 @@
+package com.aida.lanecarford.common;
+
+public class CommonConstant {
+ // 单位 秒 10分钟过期
+// public static final Long TASK_EXPIRE_TIME = 24 * 60 * 60L;
+ public static final Long TASK_EXPIRE_TIME = 10 * 60L;
+ // 单位 秒 两天过期
+ public static final Long CREDITS_EXPIRE_TIME = 2 * 24 * 60 * 60L;
+ // 单位 分钟
+ public static final Integer MINIO_IMAGE_EXPIRE_TIME = 24 * 60;
+ // 单位 秒 一天过期 in redis
+ public static final Long GENERATE_RESULT_EXPIRE_TIME = 24 * 60 * 60L;
+ // 单位 秒 7天过期
+ public static final Long REDIS_SET_EXPIRE_TIME = 24 * 60 * 60 * 7L;
+}
\ No newline at end of file
diff --git a/src/main/java/com/aida/lanecarford/controller/CustomerPhotoController.java b/src/main/java/com/aida/lanecarford/controller/CustomerPhotoController.java
index a8bcf2e..b020b24 100644
--- a/src/main/java/com/aida/lanecarford/controller/CustomerPhotoController.java
+++ b/src/main/java/com/aida/lanecarford/controller/CustomerPhotoController.java
@@ -1,7 +1,12 @@
package com.aida.lanecarford.controller;
+import com.aida.lanecarford.common.ApiResponse;
+import com.aida.lanecarford.dto.CustomerPhotoDto;
+import com.aida.lanecarford.entity.CustomerPhoto;
import com.aida.lanecarford.service.CustomerPhotoService;
import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -18,4 +23,10 @@ public class CustomerPhotoController {
private final CustomerPhotoService customerPhotoService;
+ @PostMapping("/upload")
+ public ApiResponse upload(@RequestBody CustomerPhotoDto customerPhotoDto) {
+ CustomerPhoto customerPhoto = customerPhotoService.upload(customerPhotoDto);
+ return ApiResponse.success(customerPhoto);
+ }
+
}
\ No newline at end of file
diff --git a/src/main/java/com/aida/lanecarford/controller/TryOnEffectController.java b/src/main/java/com/aida/lanecarford/controller/TryOnEffectController.java
index 049c878..bccbca5 100644
--- a/src/main/java/com/aida/lanecarford/controller/TryOnEffectController.java
+++ b/src/main/java/com/aida/lanecarford/controller/TryOnEffectController.java
@@ -3,15 +3,15 @@ package com.aida.lanecarford.controller;
import com.aida.lanecarford.common.ApiResponse;
import com.aida.lanecarford.entity.TryOnEffect;
import com.aida.lanecarford.service.TryOnEffectService;
+import com.aida.lanecarford.vo.TryOnResultVo;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
/**
* 试穿效果控制器
@@ -36,4 +36,45 @@ public class TryOnEffectController {
return ApiResponse.success(taskId);
}
+ @Operation(summary = "获取收藏的试穿效果", description = "获取指定进店记录的收藏的试穿效果")
+ @GetMapping("/favorites/{visitRecordId}")
+ public ApiResponse> getFavoriteTryOnEffects(
+ @Parameter(description = "进店记录ID", required = true)
+ @PathVariable Long visitRecordId) {
+ List tryOnResultVos = tryOnEffectService.getFavoriteTryOnEffects(visitRecordId);
+ return ApiResponse.success(tryOnResultVos);
+ }
+
+ @GetMapping("/style/{styleId}")
+ @Operation(summary = "获取某套服装的所有生成结果", description = "获取某套服装的所有生成结果")
+ public ApiResponse> getTryOnEffectsByStyleId(
+ @Parameter(description = "服装ID", required = true)
+ @PathVariable Long styleId) {
+ List tryOnResultVos = tryOnEffectService.getTryOnEffectsByStyleId(styleId);
+ return ApiResponse.success(tryOnResultVos);
+ }
+
+ /**
+ * 设置喜欢的试穿效果
+ */
+ @Operation(summary = "设置喜欢的试穿效果", description = "将指定试穿效果设置为收藏")
+ @PostMapping("/set-favorite/{tryOnId}")
+ public ApiResponse setFavoriteTryOnEffect(
+ @Parameter(description = "试穿效果ID", required = true)
+ @PathVariable Long tryOnId) {
+ tryOnEffectService.setFavoriteTryOnEffect(tryOnId);
+ return ApiResponse.success();
+ }
+
+ /**
+ * 取消喜欢的试穿效果
+ */
+ @Operation(summary = "取消喜欢的试穿效果", description = "取消指定试穿效果的收藏")
+ @PostMapping("/cancel-favorite/{tryOnId}")
+ public ApiResponse cancelFavoriteTryOnEffect(
+ @Parameter(description = "试穿效果ID", required = true)
+ @PathVariable Long tryOnId) {
+ tryOnEffectService.cancelFavoriteTryOnEffect(tryOnId);
+ return ApiResponse.success();
+ }
}
\ No newline at end of file
diff --git a/src/main/java/com/aida/lanecarford/controller/VisitRecordController.java b/src/main/java/com/aida/lanecarford/controller/VisitRecordController.java
index 14be7d4..bd55c49 100644
--- a/src/main/java/com/aida/lanecarford/controller/VisitRecordController.java
+++ b/src/main/java/com/aida/lanecarford/controller/VisitRecordController.java
@@ -1,9 +1,15 @@
package com.aida.lanecarford.controller;
+import com.aida.lanecarford.common.ApiResponse;
+import com.aida.lanecarford.entity.VisitRecord;
import com.aida.lanecarford.service.VisitRecordService;
+import com.aida.lanecarford.vo.LibraryVo;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.RequiredArgsConstructor;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
/**
* 进店记录控制器
@@ -11,6 +17,7 @@ import org.springframework.web.bind.annotation.RestController;
* @author AI Assistant
* @since 2024-01-01
*/
+@Slf4j
@RestController
@RequestMapping("/api/visit-records")
@RequiredArgsConstructor
@@ -18,4 +25,40 @@ public class VisitRecordController {
private final VisitRecordService visitRecordService;
+ /**
+ * 根据ID删除进店记录(逻辑删除)
+ *
+ * @param id 进店记录ID
+ * @return 删除结果
+ */
+ @DeleteMapping("/{id}")
+ public ApiResponse deleteById(@PathVariable Long id) {
+ log.info("开始删除进店记录,ID: {}", id);
+
+ Boolean result = visitRecordService.delete(id);
+
+ if (result) {
+ log.info("进店记录删除成功,ID: {}", id);
+ return ApiResponse.success("Visit record deleted successfully");
+ } else {
+ log.warn("进店记录删除失败,ID: {}", id);
+ return ApiResponse.error("Failed to delete visit record");
+ }
+ }
+ //根据顾客ID查询所有进店记录
+ @GetMapping("/customer/{customerId}")
+ public ApiResponse> getByCustomerId(@PathVariable Long customerId) {
+ log.info("开始查询顾客ID为{}的进店记录", customerId);
+
+ List result = visitRecordService.getByCustomerId(customerId);
+
+ if (result != null && !result.isEmpty()) {
+ log.info("查询成功,顾客ID为{}的进店记录为:{}", customerId, result);
+ return ApiResponse.success(result);
+ } else {
+ log.warn("没有找到顾客ID为{}的进店记录", customerId);
+ return ApiResponse.error("No visit records found for customer ID: " + customerId);
+ }
+ }
+
}
\ No newline at end of file
diff --git a/src/main/java/com/aida/lanecarford/dto/CustomerPhotoDto.java b/src/main/java/com/aida/lanecarford/dto/CustomerPhotoDto.java
new file mode 100644
index 0000000..a532a0e
--- /dev/null
+++ b/src/main/java/com/aida/lanecarford/dto/CustomerPhotoDto.java
@@ -0,0 +1,12 @@
+package com.aida.lanecarford.dto;
+
+import com.aida.lanecarford.entity.CustomerPhoto;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+import org.springframework.web.multipart.MultipartFile;
+
+@Data
+public class CustomerPhotoDto extends CustomerPhoto {
+ @NotNull(message = "file.cannot.be.empty")
+ private MultipartFile file;
+}
diff --git a/src/main/java/com/aida/lanecarford/entity/Customer.java b/src/main/java/com/aida/lanecarford/entity/Customer.java
index 851f381..0b73113 100644
--- a/src/main/java/com/aida/lanecarford/entity/Customer.java
+++ b/src/main/java/com/aida/lanecarford/entity/Customer.java
@@ -19,15 +19,9 @@ import java.time.LocalDateTime;
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
-@EqualsAndHashCode(callSuper = false)
+@EqualsAndHashCode(callSuper = true)
@TableName("customers")
-public class Customer {
-
- /**
- * 顾客ID
- */
- @TableId(value = "id", type = IdType.AUTO)
- private Long id;
+public class Customer extends BaseEntity {
/**
* 顾客姓名
@@ -58,16 +52,4 @@ public class Customer {
*/
@TableField("age_range")
private String ageRange;
-
- /**
- * 创建时间
- */
- @TableField(value = "created_time", fill = FieldFill.INSERT)
- private LocalDateTime createdTime;
-
- /**
- * 更新时间
- */
- @TableField(value = "updated_time", fill = FieldFill.INSERT_UPDATE)
- private LocalDateTime updatedTime;
}
\ No newline at end of file
diff --git a/src/main/java/com/aida/lanecarford/entity/CustomerPhoto.java b/src/main/java/com/aida/lanecarford/entity/CustomerPhoto.java
index d25620b..2ed8f96 100644
--- a/src/main/java/com/aida/lanecarford/entity/CustomerPhoto.java
+++ b/src/main/java/com/aida/lanecarford/entity/CustomerPhoto.java
@@ -19,15 +19,9 @@ import java.time.LocalDateTime;
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
-@EqualsAndHashCode(callSuper = false)
+@EqualsAndHashCode(callSuper = true)
@TableName("customer_photos")
-public class CustomerPhoto {
-
- /**
- * 顾客照片ID
- */
- @TableId(value = "id", type = IdType.AUTO)
- private Long id;
+public class CustomerPhoto extends BaseEntity {
/**
* 顾客ID
@@ -53,21 +47,5 @@ public class CustomerPhoto {
@TableField("is_primary")
private Integer isPrimary;
- /**
- * 上传时间
- */
- @TableField("upload_time")
- private LocalDateTime uploadTime;
-
- /**
- * 创建时间
- */
- @TableField(value = "created_time", fill = FieldFill.INSERT)
- private LocalDateTime createdTime;
-
- /**
- * 更新时间
- */
- @TableField(value = "updated_time", fill = FieldFill.INSERT_UPDATE)
- private LocalDateTime updatedTime;
+ // 注意:uploadTime、createdTime、updatedTime 字段已在 BaseEntity 中定义
}
\ No newline at end of file
diff --git a/src/main/java/com/aida/lanecarford/entity/ModelPhoto.java b/src/main/java/com/aida/lanecarford/entity/ModelPhoto.java
index 92d39cc..9ad1c36 100644
--- a/src/main/java/com/aida/lanecarford/entity/ModelPhoto.java
+++ b/src/main/java/com/aida/lanecarford/entity/ModelPhoto.java
@@ -19,15 +19,9 @@ import java.time.LocalDateTime;
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
-@EqualsAndHashCode(callSuper = false)
+@EqualsAndHashCode(callSuper = true)
@TableName("model_photos")
-public class ModelPhoto {
-
- /**
- * 模特照片ID
- */
- @TableId(value = "id", type = IdType.AUTO)
- private Long id;
+public class ModelPhoto extends BaseEntity {
/**
* 模特照片URL
@@ -59,15 +53,5 @@ public class ModelPhoto {
@TableField("sort_order")
private Integer sortOrder;
- /**
- * 创建时间
- */
- @TableField(value = "created_time", fill = FieldFill.INSERT)
- private LocalDateTime createdTime;
-
- /**
- * 更新时间
- */
- @TableField(value = "updated_time", fill = FieldFill.INSERT_UPDATE)
- private LocalDateTime updatedTime;
+ // 注意:createdTime、updatedTime 字段已在 BaseEntity 中定义
}
\ No newline at end of file
diff --git a/src/main/java/com/aida/lanecarford/entity/Sales.java b/src/main/java/com/aida/lanecarford/entity/Sales.java
index cf61be6..8c46ea8 100644
--- a/src/main/java/com/aida/lanecarford/entity/Sales.java
+++ b/src/main/java/com/aida/lanecarford/entity/Sales.java
@@ -19,15 +19,9 @@ import java.time.LocalDateTime;
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
-@EqualsAndHashCode(callSuper = false)
+@EqualsAndHashCode(callSuper = true)
@TableName("sales")
-public class Sales {
-
- /**
- * 导购ID
- */
- @TableId(value = "id", type = IdType.AUTO)
- private Long id;
+public class Sales extends BaseEntity {
/**
* 用户名
@@ -83,15 +77,5 @@ public class Sales {
@TableField("is_active")
private Integer isActive;
- /**
- * 创建时间
- */
- @TableField(value = "created_time", fill = FieldFill.INSERT)
- private LocalDateTime createdTime;
-
- /**
- * 更新时间
- */
- @TableField(value = "updated_time", fill = FieldFill.INSERT_UPDATE)
- private LocalDateTime updatedTime;
+ // 注意:createdTime、updatedTime 字段已在 BaseEntity 中定义
}
\ No newline at end of file
diff --git a/src/main/java/com/aida/lanecarford/entity/Style.java b/src/main/java/com/aida/lanecarford/entity/Style.java
index e57f640..d88919d 100644
--- a/src/main/java/com/aida/lanecarford/entity/Style.java
+++ b/src/main/java/com/aida/lanecarford/entity/Style.java
@@ -19,15 +19,9 @@ import java.time.LocalDateTime;
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
-@EqualsAndHashCode(callSuper = false)
+@EqualsAndHashCode(callSuper = true)
@TableName("styles")
-public class Style {
-
- /**
- * 风格配置ID
- */
- @TableId(value = "id", type = IdType.AUTO)
- private Long id;
+public class Style extends BaseEntity {
/**
* 顾客ID
@@ -71,15 +65,5 @@ public class Style {
@TableField("error_message")
private String errorMessage;
- /**
- * 创建时间
- */
- @TableField(value = "created_time", fill = FieldFill.INSERT)
- private LocalDateTime createdTime;
-
- /**
- * 更新时间
- */
- @TableField(value = "updated_time", fill = FieldFill.INSERT_UPDATE)
- private LocalDateTime updatedTime;
+ // 注意:createdTime、updatedTime 字段已在 BaseEntity 中定义
}
\ No newline at end of file
diff --git a/src/main/java/com/aida/lanecarford/entity/TryOnEffect.java b/src/main/java/com/aida/lanecarford/entity/TryOnEffect.java
index 77c4d53..16f851d 100644
--- a/src/main/java/com/aida/lanecarford/entity/TryOnEffect.java
+++ b/src/main/java/com/aida/lanecarford/entity/TryOnEffect.java
@@ -19,15 +19,9 @@ import java.time.LocalDateTime;
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
-@EqualsAndHashCode(callSuper = false)
+@EqualsAndHashCode(callSuper = true)
@TableName("try_on_effects")
-public class TryOnEffect {
-
- /**
- * 试穿效果ID
- */
- @TableId(value = "id", type = IdType.AUTO)
- private Long id;
+public class TryOnEffect extends BaseEntity {
/**
* 顾客ID
@@ -60,7 +54,7 @@ public class TryOnEffect {
private Long modelPhotoId;
/**
- * 提示词
+ * 提示词,当is_regenerated为1时才会有值
*/
@TableField("prompt")
private String prompt;
@@ -107,15 +101,5 @@ public class TryOnEffect {
@TableField("is_favorite")
private Integer isFavorite;
- /**
- * 创建时间
- */
- @TableField(value = "created_time", fill = FieldFill.INSERT)
- private LocalDateTime createdTime;
-
- /**
- * 更新时间
- */
- @TableField(value = "updated_time", fill = FieldFill.INSERT_UPDATE)
- private LocalDateTime updatedTime;
+ // 注意:createdTime、updatedTime 字段已在 BaseEntity 中定义
}
\ No newline at end of file
diff --git a/src/main/java/com/aida/lanecarford/entity/VisitRecord.java b/src/main/java/com/aida/lanecarford/entity/VisitRecord.java
index dd087e2..024f62d 100644
--- a/src/main/java/com/aida/lanecarford/entity/VisitRecord.java
+++ b/src/main/java/com/aida/lanecarford/entity/VisitRecord.java
@@ -20,15 +20,9 @@ import java.time.LocalDateTime;
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
-@EqualsAndHashCode(callSuper = false)
+@EqualsAndHashCode(callSuper = true)
@TableName("visit_records")
-public class VisitRecord {
-
- /**
- * 进店记录ID
- */
- @TableId(value = "id", type = IdType.AUTO)
- private Long id;
+public class VisitRecord extends BaseEntity {
/**
* 顾客ID
@@ -54,17 +48,6 @@ public class VisitRecord {
@TableField("visit_time")
private LocalDateTime visitTime;
- /**
- * 会话ID
- */
- @TableField("session_id")
- private String sessionId;
-
- /**
- * 状态(0-已结束,1-进行中)
- */
- @TableField("status")
- private Integer status;
/**
* 备注
@@ -72,15 +55,5 @@ public class VisitRecord {
@TableField("notes")
private String notes;
- /**
- * 创建时间
- */
- @TableField(value = "created_time", fill = FieldFill.INSERT)
- private LocalDateTime createdTime;
-
- /**
- * 更新时间
- */
- @TableField(value = "updated_time", fill = FieldFill.INSERT_UPDATE)
- private LocalDateTime updatedTime;
+ // 注意:createdTime、updatedTime 字段已在 BaseEntity 中定义
}
\ No newline at end of file
diff --git a/src/main/java/com/aida/lanecarford/service/CustomerPhotoService.java b/src/main/java/com/aida/lanecarford/service/CustomerPhotoService.java
index 5a992c8..b5afc77 100644
--- a/src/main/java/com/aida/lanecarford/service/CustomerPhotoService.java
+++ b/src/main/java/com/aida/lanecarford/service/CustomerPhotoService.java
@@ -1,5 +1,6 @@
package com.aida.lanecarford.service;
+import com.aida.lanecarford.dto.CustomerPhotoDto;
import com.aida.lanecarford.entity.CustomerPhoto;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -11,4 +12,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface CustomerPhotoService extends IService {
+ CustomerPhoto upload(CustomerPhotoDto customerPhotoDto);
}
\ No newline at end of file
diff --git a/src/main/java/com/aida/lanecarford/service/TryOnEffectService.java b/src/main/java/com/aida/lanecarford/service/TryOnEffectService.java
index 8986803..89c33e7 100644
--- a/src/main/java/com/aida/lanecarford/service/TryOnEffectService.java
+++ b/src/main/java/com/aida/lanecarford/service/TryOnEffectService.java
@@ -1,9 +1,12 @@
package com.aida.lanecarford.service;
import com.aida.lanecarford.entity.TryOnEffect;
+import com.aida.lanecarford.vo.TryOnResultVo;
import com.baomidou.mybatisplus.extension.service.IService;
import jakarta.validation.Valid;
+import java.util.List;
+
/**
* 试穿效果服务接口
*
@@ -13,4 +16,20 @@ import jakarta.validation.Valid;
public interface TryOnEffectService extends IService {
String generateTryOnEffect(@Valid TryOnEffect tryOnEffectDto);
+
+ List getFavoriteTryOnEffects(Long visitRecordId);
+
+ /**
+ * 设置试穿效果为收藏
+ * @param tryOnId 试穿效果ID
+ */
+ void setFavoriteTryOnEffect(Long tryOnId);
+
+ /**
+ * 取消试穿效果的收藏
+ * @param tryOnId 试穿效果ID
+ */
+ void cancelFavoriteTryOnEffect(Long tryOnId);
+
+ List getTryOnEffectsByStyleId(Long styleId);
}
\ No newline at end of file
diff --git a/src/main/java/com/aida/lanecarford/service/VisitRecordService.java b/src/main/java/com/aida/lanecarford/service/VisitRecordService.java
index 4c2c0de..b84e0e2 100644
--- a/src/main/java/com/aida/lanecarford/service/VisitRecordService.java
+++ b/src/main/java/com/aida/lanecarford/service/VisitRecordService.java
@@ -1,8 +1,11 @@
package com.aida.lanecarford.service;
import com.aida.lanecarford.entity.VisitRecord;
+import com.aida.lanecarford.vo.LibraryVo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
* 进店记录服务接口
*
@@ -11,4 +14,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface VisitRecordService extends IService {
+ Boolean delete(Long id);
+
+ List getByCustomerId(Long customerId);
}
\ No newline at end of file
diff --git a/src/main/java/com/aida/lanecarford/service/impl/CustomerPhotoServiceImpl.java b/src/main/java/com/aida/lanecarford/service/impl/CustomerPhotoServiceImpl.java
index 84830a5..02b22c3 100644
--- a/src/main/java/com/aida/lanecarford/service/impl/CustomerPhotoServiceImpl.java
+++ b/src/main/java/com/aida/lanecarford/service/impl/CustomerPhotoServiceImpl.java
@@ -1,8 +1,11 @@
package com.aida.lanecarford.service.impl;
+import com.aida.lanecarford.dto.CustomerPhotoDto;
import com.aida.lanecarford.entity.CustomerPhoto;
import com.aida.lanecarford.mapper.CustomerPhotoMapper;
import com.aida.lanecarford.service.CustomerPhotoService;
+import com.aida.lanecarford.util.CopyUtil;
+import com.aida.lanecarford.util.MinioUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@@ -16,5 +19,18 @@ import org.springframework.stereotype.Service;
@Service
@RequiredArgsConstructor
public class CustomerPhotoServiceImpl extends ServiceImpl implements CustomerPhotoService {
+ private final MinioUtil minioUtil;
+ @Override
+ public CustomerPhoto upload(CustomerPhotoDto customerPhotoDto) {
+ //TODO:设置桶名
+ String url = minioUtil.uploadFile(customerPhotoDto.getFile());
+
+ CustomerPhoto customerPhoto = CopyUtil.copyObject(customerPhotoDto, CustomerPhoto.class);
+ customerPhoto.setPhotoUrl(url);
+ this.save(customerPhoto);
+
+
+ return customerPhoto;
+ }
}
\ No newline at end of file
diff --git a/src/main/java/com/aida/lanecarford/service/impl/TryOnEffectServiceImpl.java b/src/main/java/com/aida/lanecarford/service/impl/TryOnEffectServiceImpl.java
index 4dcd80d..861797e 100644
--- a/src/main/java/com/aida/lanecarford/service/impl/TryOnEffectServiceImpl.java
+++ b/src/main/java/com/aida/lanecarford/service/impl/TryOnEffectServiceImpl.java
@@ -1,22 +1,39 @@
package com.aida.lanecarford.service.impl;
+import cn.hutool.json.JSONObject;
+import com.aida.lanecarford.common.CommonConstant;
+import com.aida.lanecarford.common.response.ResultEnum;
import com.aida.lanecarford.entity.CustomerPhoto;
import com.aida.lanecarford.entity.ModelPhoto;
import com.aida.lanecarford.entity.Style;
import com.aida.lanecarford.entity.TryOnEffect;
+import com.aida.lanecarford.exception.BusinessException;
import com.aida.lanecarford.mapper.TryOnEffectMapper;
import com.aida.lanecarford.service.CustomerPhotoService;
import com.aida.lanecarford.service.ImageCompositionService;
import com.aida.lanecarford.service.ModelPhotoService;
import com.aida.lanecarford.service.StyleService;
import com.aida.lanecarford.service.TryOnEffectService;
+import com.aida.lanecarford.util.MinioUtil;
+import com.aida.lanecarford.vo.TryOnResultVo;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.auth.oauth2.GoogleCredentials;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import okhttp3.*;
import org.springframework.stereotype.Service;
+import java.io.IOException;
+import java.io.InputStream;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
+import java.util.UUID;
+import java.util.concurrent.TimeUnit;
/**
* 试穿效果服务实现类
@@ -31,34 +48,43 @@ public class TryOnEffectServiceImpl extends ServiceImpl imageUrls = new ArrayList<>();
if (isRegenerated == 1) {
- String prompt = tryOnEffectDto.getPrompt();
+ prompt = tryOnEffectDto.getPrompt();
Long originalTryOnId = tryOnEffectDto.getOriginalTryOnId();
// 验证originalTryOnId不能为空
if (originalTryOnId == null) {
throw new RuntimeException("originalTryOnId cannot be null");
}
- TryOnEffect originalTryOn = tryOnEffectService.getById(originalTryOnId);
+ TryOnEffect originalTryOn = this.getById(originalTryOnId);
String resultImageUrl = originalTryOn.getResultImageUrl();
imageUrls.add(resultImageUrl);
+
+ Long customerPhotoId = tryOnEffectDto.getCustomerPhotoId();
+ if (customerPhotoId != null) {
+ //根据id查到对应customerurl
+ CustomerPhoto customerPhoto = customerPhotoService.getById(customerPhotoId);
+ String customerPhotoUrl = customerPhoto.getPhotoUrl();
+ if (customerPhotoUrl != null && !customerPhotoUrl.trim().isEmpty()) {
+ imageUrls.add(customerPhotoUrl);
+ }
+ }
} else {
Long styleId = tryOnEffectDto.getStyleId();
// 验证styleId不能为空
if (styleId == null) {
throw new RuntimeException("styleId cannot be null");
}
-
-
-
//根据id查到对应styleurl
Style style = styleService.getById(styleId);
String styleImageUrl = style.getStyleImageUrl();
@@ -75,17 +101,7 @@ public class TryOnEffectServiceImpl extends ServiceImpl getFavoriteTryOnEffects(Long visitRecordId) {
+ List tryOnEffects = this.list(new LambdaQueryWrapper()
+ .eq(TryOnEffect::getVisitRecordId, visitRecordId)
+ .eq(TryOnEffect::getIsFavorite, 1));
+ List tryOnResultVos = new ArrayList<>();
+ for (TryOnEffect tryOnEffect : tryOnEffects) {
+ TryOnResultVo tryOnResultVo = new TryOnResultVo();
+ tryOnResultVo.setTryOnId(tryOnEffect.getId());
+ tryOnResultVo.setTryOnUrl(minioUtil.getPresignedUrl(
+ tryOnEffect.getResultImageUrl(),
+ CommonConstant.MINIO_IMAGE_EXPIRE_TIME
+ ));
+ // 如果是原始效果,则获取对应的style图片
+ if (tryOnEffect.getIsRegenerated()==0){
+ LambdaQueryWrapper