diff --git a/src/main/java/com/aida/lanecarford/common/constant/CommonConstants.java b/src/main/java/com/aida/lanecarford/common/constant/CommonConstants.java index ad084ad..137f1f1 100644 --- a/src/main/java/com/aida/lanecarford/common/constant/CommonConstants.java +++ b/src/main/java/com/aida/lanecarford/common/constant/CommonConstants.java @@ -10,5 +10,9 @@ public class CommonConstants { public static final int CONN_TIMEOUT = 30000; // (milliseconds) + public static final String OUTFIT = "Outfit"; + public static final String TRYON = "Try-on"; + public static final String GENAI = "Gen-AI"; + } diff --git a/src/main/java/com/aida/lanecarford/controller/StyleController.java b/src/main/java/com/aida/lanecarford/controller/StyleController.java index 16048be..4c975c6 100644 --- a/src/main/java/com/aida/lanecarford/controller/StyleController.java +++ b/src/main/java/com/aida/lanecarford/controller/StyleController.java @@ -78,6 +78,30 @@ public class StyleController { return ApiResponse.success(styleService.getOutfitResult(requestIDs)); } + /** + * 设置喜欢的风格 + */ + @Operation(summary = "设置喜欢的outfit", description = "将指定风格设置为收藏") + @PostMapping("/set-favorite/{styleId}") + public ApiResponse setFavoriteStyle( + @Parameter(description = "风格ID", required = true) + @PathVariable Long styleId) { + styleService.setFavoriteStyle(styleId); + return ApiResponse.success(); + } + + /** + * 取消喜欢的风格 + */ + @Operation(summary = "取消喜欢的outfit", description = "取消指定风格的收藏") + @PostMapping("/cancel-favorite/{styleId}") + public ApiResponse cancelFavoriteStyle( + @Parameter(description = "风格ID", required = true) + @PathVariable Long styleId) { + styleService.cancelFavoriteStyle(styleId); + return ApiResponse.success(); + } + @Operation( summary = "回溯历史对话,重新生成搭配图", description = "根据当前的穿搭结果,回溯历史穿搭请求数据及历史对话,重新生成搭配" diff --git a/src/main/java/com/aida/lanecarford/controller/TryOnEffectController.java b/src/main/java/com/aida/lanecarford/controller/TryOnEffectController.java index 9e86f39..5abdbd1 100644 --- a/src/main/java/com/aida/lanecarford/controller/TryOnEffectController.java +++ b/src/main/java/com/aida/lanecarford/controller/TryOnEffectController.java @@ -1,10 +1,14 @@ package com.aida.lanecarford.controller; import com.aida.lanecarford.common.ApiResponse; +import com.aida.lanecarford.common.constant.CommonConstants; +import com.aida.lanecarford.dto.HistoricalDTO; import com.aida.lanecarford.entity.Suggestion; import com.aida.lanecarford.entity.TryOnEffect; import com.aida.lanecarford.service.TryOnEffectService; -import com.aida.lanecarford.vo.TryOnResultVo; +import com.aida.lanecarford.vo.BaseVO; +import com.aida.lanecarford.vo.OutfitHisVO; +import com.aida.lanecarford.vo.TryOnResultVO; import io.netty.util.internal.StringUtil; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -32,29 +36,25 @@ public class TryOnEffectController { @Operation(summary = "生成试穿效果", description = "根据服装,模特照片生成试穿效果,其中styleId是必选,当二次生成时,要带上相关参数,比如顾客照片") @PostMapping("/generate") - public ApiResponse generateTryOnEffect( + public ApiResponse generateTryOnEffect( @Parameter(description = "试穿效果请求参数", required = true) @Valid @RequestBody TryOnEffect tryOnEffectDto) { - TryOnResultVo tryOnResultVo = tryOnEffectService.generateTryOnEffect(tryOnEffectDto); + TryOnResultVO tryOnResultVo = tryOnEffectService.generateTryOnEffect(tryOnEffectDto); return ApiResponse.success(tryOnResultVo); } - @Operation(summary = "获取收藏的试穿效果", description = "对应library页面点击details后的显示,参数为进店记录id") - @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 = "对应customize your look页面点击finish后的显示") - public ApiResponse> getTryOnEffectsByStyleId( + @Operation(summary = "获取历史生成记录", description = "根据type,进店记录id,是否收藏来决定返回的数据") + @GetMapping("/getHistoricals") + public ApiResponse> getHistoricals( @Parameter(description = "服装ID", required = true) - @PathVariable Long styleId) { - List tryOnResultVos = tryOnEffectService.getTryOnEffectsByStyleId(styleId); - return ApiResponse.success(tryOnResultVos); + @ModelAttribute HistoricalDTO historicalDTO) { + if (CommonConstants.OUTFIT.equals(historicalDTO.getType())){ + List outfitHisVOS = tryOnEffectService.getOutfitHistoricals(historicalDTO); + return ApiResponse.success(outfitHisVOS); + }else { + List tryOnResultVos = tryOnEffectService.getTryOnHistoricals(historicalDTO); + return ApiResponse.success(tryOnResultVos); + } } /** diff --git a/src/main/java/com/aida/lanecarford/dto/HistoricalDTO.java b/src/main/java/com/aida/lanecarford/dto/HistoricalDTO.java new file mode 100644 index 0000000..0dc9490 --- /dev/null +++ b/src/main/java/com/aida/lanecarford/dto/HistoricalDTO.java @@ -0,0 +1,21 @@ +package com.aida.lanecarford.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class HistoricalDTO { + + @Schema(description = "顾客ID",example = "1") + private Long customerId; + + @Schema(description = "进店记录ID",example = "1") + private Long visitRecordId; + + @Schema(description = "类型",example = "Outfit , Try-on , Gen-AI") + private String type; + + @Schema(description = "是否是收藏",example = "true") + private Boolean isLibrary; + +} diff --git a/src/main/java/com/aida/lanecarford/entity/Style.java b/src/main/java/com/aida/lanecarford/entity/Style.java index 3f170c8..4687adf 100644 --- a/src/main/java/com/aida/lanecarford/entity/Style.java +++ b/src/main/java/com/aida/lanecarford/entity/Style.java @@ -1,6 +1,7 @@ package com.aida.lanecarford.entity; import com.baomidou.mybatisplus.annotation.*; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; @@ -76,4 +77,11 @@ public class Style extends BaseEntity { private String errorMessage; // 注意:createdTime、updatedTime 字段已在 BaseEntity 中定义 + + /** + * 是否喜欢(0-否,1-是) + */ + @Schema(description = "是否喜欢(0-否,1-是)", example = "1", required = false) + @TableField("is_favorite") + private Integer isFavorite; } \ No newline at end of file diff --git a/src/main/java/com/aida/lanecarford/service/StyleService.java b/src/main/java/com/aida/lanecarford/service/StyleService.java index b5e696f..9760b8d 100644 --- a/src/main/java/com/aida/lanecarford/service/StyleService.java +++ b/src/main/java/com/aida/lanecarford/service/StyleService.java @@ -19,6 +19,18 @@ public interface StyleService extends IService