diff --git a/product/product-application/src/main/java/cn/iocoder/mall/product/application/controller/users/UserFavoriteController.java b/product/product-application/src/main/java/cn/iocoder/mall/product/application/controller/users/UserFavoriteController.java
index 97642ad73..1fe9d33fc 100644
--- a/product/product-application/src/main/java/cn/iocoder/mall/product/application/controller/users/UserFavoriteController.java
+++ b/product/product-application/src/main/java/cn/iocoder/mall/product/application/controller/users/UserFavoriteController.java
@@ -2,8 +2,8 @@ package cn.iocoder.mall.product.application.controller.users;
import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.mall.product.api.UserProductSpuCollectionsService;
-import cn.iocoder.mall.user.api.bo.UserProductSpuCollectionsPageBO;
-import cn.iocoder.mall.user.api.dto.UserProductSpuCollectionsPageDTO;
+import cn.iocoder.mall.product.api.bo.UserProductSpuCollectionsPageBO;
+import cn.iocoder.mall.product.api.dto.UserProductSpuCollectionsPageDTO;
import cn.iocoder.mall.user.sdk.annotation.RequiresLogin;
import cn.iocoder.mall.user.sdk.context.UserSecurityContextHolder;
import io.swagger.annotations.Api;
diff --git a/product/product-service-api/src/main/java/cn/iocoder/mall/product/api/UserProductSpuCollectionsService.java b/product/product-service-api/src/main/java/cn/iocoder/mall/product/api/UserProductSpuCollectionsService.java
index 82be4816f..d1ee152cf 100644
--- a/product/product-service-api/src/main/java/cn/iocoder/mall/product/api/UserProductSpuCollectionsService.java
+++ b/product/product-service-api/src/main/java/cn/iocoder/mall/product/api/UserProductSpuCollectionsService.java
@@ -1,11 +1,11 @@
package cn.iocoder.mall.product.api;
import cn.iocoder.common.framework.vo.CommonResult;
-import cn.iocoder.mall.user.api.bo.UserProductSpuCollectionsBO;
-import cn.iocoder.mall.user.api.bo.UserProductSpuCollectionsPageBO;
-import cn.iocoder.mall.user.api.dto.UserProductSpuCollectionsAddDTO;
-import cn.iocoder.mall.user.api.dto.UserProductSpuCollectionsPageDTO;
-import cn.iocoder.mall.user.api.dto.UserProductSpuCollectionsUpdateDTO;
+import cn.iocoder.mall.product.api.bo.UserProductSpuCollectionsBO;
+import cn.iocoder.mall.product.api.bo.UserProductSpuCollectionsPageBO;
+import cn.iocoder.mall.product.api.dto.UserProductSpuCollectionsAddDTO;
+import cn.iocoder.mall.product.api.dto.UserProductSpuCollectionsPageDTO;
+import cn.iocoder.mall.product.api.dto.UserProductSpuCollectionsUpdateDTO;
/**
* UserProductSpuCollectionsService
diff --git a/user/user-service-api/src/main/java/cn/iocoder/mall/user/api/bo/UserProductSpuCollectionsBO.java b/product/product-service-api/src/main/java/cn/iocoder/mall/product/api/bo/UserProductSpuCollectionsBO.java
similarity index 96%
rename from user/user-service-api/src/main/java/cn/iocoder/mall/user/api/bo/UserProductSpuCollectionsBO.java
rename to product/product-service-api/src/main/java/cn/iocoder/mall/product/api/bo/UserProductSpuCollectionsBO.java
index d427a7fc6..bf6c1349a 100644
--- a/user/user-service-api/src/main/java/cn/iocoder/mall/user/api/bo/UserProductSpuCollectionsBO.java
+++ b/product/product-service-api/src/main/java/cn/iocoder/mall/product/api/bo/UserProductSpuCollectionsBO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.mall.user.api.bo;
+package cn.iocoder.mall.product.api.bo;
import lombok.Data;
import lombok.experimental.Accessors;
diff --git a/user/user-service-api/src/main/java/cn/iocoder/mall/user/api/bo/UserProductSpuCollectionsPageBO.java b/product/product-service-api/src/main/java/cn/iocoder/mall/product/api/bo/UserProductSpuCollectionsPageBO.java
similarity index 92%
rename from user/user-service-api/src/main/java/cn/iocoder/mall/user/api/bo/UserProductSpuCollectionsPageBO.java
rename to product/product-service-api/src/main/java/cn/iocoder/mall/product/api/bo/UserProductSpuCollectionsPageBO.java
index ccfeddf4e..228e8206a 100644
--- a/user/user-service-api/src/main/java/cn/iocoder/mall/user/api/bo/UserProductSpuCollectionsPageBO.java
+++ b/product/product-service-api/src/main/java/cn/iocoder/mall/product/api/bo/UserProductSpuCollectionsPageBO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.mall.user.api.bo;
+package cn.iocoder.mall.product.api.bo;
import lombok.Data;
import lombok.experimental.Accessors;
diff --git a/user/user-service-api/src/main/java/cn/iocoder/mall/user/api/dto/UserProductSpuCollectionsAddDTO.java b/product/product-service-api/src/main/java/cn/iocoder/mall/product/api/dto/UserProductSpuCollectionsAddDTO.java
similarity index 96%
rename from user/user-service-api/src/main/java/cn/iocoder/mall/user/api/dto/UserProductSpuCollectionsAddDTO.java
rename to product/product-service-api/src/main/java/cn/iocoder/mall/product/api/dto/UserProductSpuCollectionsAddDTO.java
index d2e86ae4f..b6b5fa8db 100644
--- a/user/user-service-api/src/main/java/cn/iocoder/mall/user/api/dto/UserProductSpuCollectionsAddDTO.java
+++ b/product/product-service-api/src/main/java/cn/iocoder/mall/product/api/dto/UserProductSpuCollectionsAddDTO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.mall.user.api.dto;
+package cn.iocoder.mall.product.api.dto;
import lombok.Data;
import lombok.experimental.Accessors;
diff --git a/user/user-service-api/src/main/java/cn/iocoder/mall/user/api/dto/UserProductSpuCollectionsPageDTO.java b/product/product-service-api/src/main/java/cn/iocoder/mall/product/api/dto/UserProductSpuCollectionsPageDTO.java
similarity index 93%
rename from user/user-service-api/src/main/java/cn/iocoder/mall/user/api/dto/UserProductSpuCollectionsPageDTO.java
rename to product/product-service-api/src/main/java/cn/iocoder/mall/product/api/dto/UserProductSpuCollectionsPageDTO.java
index 484234a88..8b67ed46b 100644
--- a/user/user-service-api/src/main/java/cn/iocoder/mall/user/api/dto/UserProductSpuCollectionsPageDTO.java
+++ b/product/product-service-api/src/main/java/cn/iocoder/mall/product/api/dto/UserProductSpuCollectionsPageDTO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.mall.user.api.dto;
+package cn.iocoder.mall.product.api.dto;
import lombok.Data;
import lombok.experimental.Accessors;
diff --git a/user/user-service-api/src/main/java/cn/iocoder/mall/user/api/dto/UserProductSpuCollectionsUpdateDTO.java b/product/product-service-api/src/main/java/cn/iocoder/mall/product/api/dto/UserProductSpuCollectionsUpdateDTO.java
similarity index 92%
rename from user/user-service-api/src/main/java/cn/iocoder/mall/user/api/dto/UserProductSpuCollectionsUpdateDTO.java
rename to product/product-service-api/src/main/java/cn/iocoder/mall/product/api/dto/UserProductSpuCollectionsUpdateDTO.java
index 7dfd501a3..c51b3bf09 100644
--- a/user/user-service-api/src/main/java/cn/iocoder/mall/user/api/dto/UserProductSpuCollectionsUpdateDTO.java
+++ b/product/product-service-api/src/main/java/cn/iocoder/mall/product/api/dto/UserProductSpuCollectionsUpdateDTO.java
@@ -1,4 +1,4 @@
-package cn.iocoder.mall.user.api.dto;
+package cn.iocoder.mall.product.api.dto;
import lombok.Data;
import lombok.experimental.Accessors;
diff --git a/product/product-service-impl/pom.xml b/product/product-service-impl/pom.xml
index 6fb079daa..6f9735b6c 100644
--- a/product/product-service-impl/pom.xml
+++ b/product/product-service-impl/pom.xml
@@ -18,6 +18,11 @@
product-service-api
1.0-SNAPSHOT
+
+ cn.iocoder.mall
+ user-service-api
+ 1.0-SNAPSHOT
+
diff --git a/product/product-service-impl/src/main/java/cn/iocoder/mall/product/convert/UserProductSpuCollectionsConvert.java b/product/product-service-impl/src/main/java/cn/iocoder/mall/product/convert/UserProductSpuCollectionsConvert.java
index fa89d2d2e..06f2ef460 100644
--- a/product/product-service-impl/src/main/java/cn/iocoder/mall/product/convert/UserProductSpuCollectionsConvert.java
+++ b/product/product-service-impl/src/main/java/cn/iocoder/mall/product/convert/UserProductSpuCollectionsConvert.java
@@ -1,10 +1,10 @@
package cn.iocoder.mall.product.convert;
+import cn.iocoder.mall.product.api.bo.UserProductSpuCollectionsBO;
+import cn.iocoder.mall.product.api.dto.UserProductSpuCollectionsAddDTO;
+import cn.iocoder.mall.product.api.dto.UserProductSpuCollectionsUpdateDTO;
import cn.iocoder.mall.product.api.message.ProductSpuCollectionMessage;
-import cn.iocoder.mall.user.api.bo.UserProductSpuCollectionsBO;
-import cn.iocoder.mall.user.api.dto.UserProductSpuCollectionsAddDTO;
-import cn.iocoder.mall.user.api.dto.UserProductSpuCollectionsUpdateDTO;
-import cn.iocoder.mall.user.biz.dataobject.UserProductSpuCollectionsDO;
+import cn.iocoder.mall.product.dataobject.UserProductSpuCollectionsDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
diff --git a/product/product-service-impl/src/main/java/cn/iocoder/mall/product/dao/UserProductSpuCollectionsMapper.java b/product/product-service-impl/src/main/java/cn/iocoder/mall/product/dao/UserProductSpuCollectionsMapper.java
index eba1f7aed..dca4610c8 100644
--- a/product/product-service-impl/src/main/java/cn/iocoder/mall/product/dao/UserProductSpuCollectionsMapper.java
+++ b/product/product-service-impl/src/main/java/cn/iocoder/mall/product/dao/UserProductSpuCollectionsMapper.java
@@ -1,6 +1,6 @@
package cn.iocoder.mall.product.dao;
-import cn.iocoder.mall.user.biz.dataobject.UserProductSpuCollectionsDO;
+import cn.iocoder.mall.product.dataobject.UserProductSpuCollectionsDO;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
@@ -24,7 +24,7 @@ public interface UserProductSpuCollectionsMapper extends BaseMapper query = new QueryWrapper()
.eq("user_id", userId).eq("spu_id", spuId);
return selectOne(query);
diff --git a/product/product-service-impl/src/main/java/cn/iocoder/mall/product/message/UserProductSpuCollectionsConsumer.java b/product/product-service-impl/src/main/java/cn/iocoder/mall/product/message/UserProductSpuCollectionsConsumer.java
index 70243dceb..664ca2e3a 100644
--- a/product/product-service-impl/src/main/java/cn/iocoder/mall/product/message/UserProductSpuCollectionsConsumer.java
+++ b/product/product-service-impl/src/main/java/cn/iocoder/mall/product/message/UserProductSpuCollectionsConsumer.java
@@ -2,16 +2,17 @@ package cn.iocoder.mall.product.message;
import cn.iocoder.common.framework.constant.DeletedStatusEnum;
import cn.iocoder.common.framework.util.ServiceExceptionUtil;
+import cn.iocoder.mall.product.api.UserProductSpuCollectionsService;
+import cn.iocoder.mall.product.api.bo.UserProductSpuCollectionsBO;
+import cn.iocoder.mall.product.api.dto.UserProductSpuCollectionsAddDTO;
+import cn.iocoder.mall.product.api.dto.UserProductSpuCollectionsUpdateDTO;
import cn.iocoder.mall.product.api.message.ProductSpuCollectionMessage;
-import cn.iocoder.mall.user.api.UserProductSpuCollectionsService;
+import cn.iocoder.mall.product.convert.UserProductSpuCollectionsConvert;
import cn.iocoder.mall.user.api.UserService;
import cn.iocoder.mall.user.api.bo.UserBO;
-import cn.iocoder.mall.user.api.bo.UserProductSpuCollectionsBO;
import cn.iocoder.mall.user.api.constant.UserErrorCodeEnum;
-import cn.iocoder.mall.user.api.dto.UserProductSpuCollectionsAddDTO;
-import cn.iocoder.mall.user.api.dto.UserProductSpuCollectionsUpdateDTO;
-import cn.iocoder.mall.user.biz.convert.UserProductSpuCollectionsConvert;
import org.apache.commons.lang3.StringUtils;
+import org.apache.dubbo.config.annotation.Reference;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.beans.factory.annotation.Autowired;
@@ -33,7 +34,7 @@ public class UserProductSpuCollectionsConsumer implements RocketMQListener
-
+
id, user_id, nickname, spu_id, spu_name,
@@ -8,7 +8,7 @@
deleted
-