|
@@ -44,6 +44,7 @@ import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 二手商品服务实现类
|
|
* 二手商品服务实现类
|
|
|
|
|
+ * 提供二手商品的增删改查、审核、上下架、风控等相关业务逻辑处理
|
|
|
*/
|
|
*/
|
|
|
@Slf4j
|
|
@Slf4j
|
|
|
@Service
|
|
@Service
|
|
@@ -51,104 +52,130 @@ import java.util.stream.Collectors;
|
|
|
public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, SecondGoods> implements SecondGoodsService {
|
|
public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, SecondGoods> implements SecondGoodsService {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 视频审核功能是否启用的配置项
|
|
|
|
|
+ */
|
|
|
@Value("${video.moderation.enabled}")
|
|
@Value("${video.moderation.enabled}")
|
|
|
private boolean videoModerationEnabled;
|
|
private boolean videoModerationEnabled;
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 视频审核失败时是否阻塞商品发布的配置项
|
|
|
|
|
+ */
|
|
|
@Value("${video.moderation.block-on-failure}")
|
|
@Value("${video.moderation.block-on-failure}")
|
|
|
private boolean videoModerationBlockOnFailure;
|
|
private boolean videoModerationBlockOnFailure;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 视频审核服务
|
|
|
|
|
|
|
+ * 视频审核服务,用于处理商品中视频内容的审核
|
|
|
*/
|
|
*/
|
|
|
private final VideoModerationService videoModerationService;
|
|
private final VideoModerationService videoModerationService;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 视频工具类
|
|
|
|
|
|
|
+ * 视频工具类,提供视频相关操作功能
|
|
|
*/
|
|
*/
|
|
|
private final VideoUtils videoUtils;
|
|
private final VideoUtils videoUtils;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 文本审核工具
|
|
|
|
|
|
|
+ * 文本审核工具,用于审核商品标题、描述等文本内容
|
|
|
*/
|
|
*/
|
|
|
private final TextModerationUtil textModerationUtil;
|
|
private final TextModerationUtil textModerationUtil;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 图片审核工具
|
|
|
|
|
|
|
+ * 图片审核工具,用于审核商品图片内容
|
|
|
*/
|
|
*/
|
|
|
private final ImageModerationUtil imageModerationUtil;
|
|
private final ImageModerationUtil imageModerationUtil;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 二手商品Mapper
|
|
|
|
|
|
|
+ * 二手商品Mapper,用于操作二手商品数据表
|
|
|
*/
|
|
*/
|
|
|
private final SecondGoodsMapper secondGoodsMapper;
|
|
private final SecondGoodsMapper secondGoodsMapper;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 二手商品审核Mapper
|
|
|
|
|
|
|
+ * 二手商品审核Mapper,用于操作二手商品审核记录表
|
|
|
*/
|
|
*/
|
|
|
private final SecondGoodsAuditMapper secondGoodsAuditMapper;
|
|
private final SecondGoodsAuditMapper secondGoodsAuditMapper;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 用户信息Mapper
|
|
|
|
|
|
|
+ * 用户信息Mapper,用于操作用户信息表
|
|
|
*/
|
|
*/
|
|
|
private final LifeUserMapper lifeUserMapper;
|
|
private final LifeUserMapper lifeUserMapper;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 公告Mapper
|
|
|
|
|
|
|
+ * 公告Mapper,用于操作公告信息表
|
|
|
*/
|
|
*/
|
|
|
private final LifeNoticeMapper lifeNoticeMapper;
|
|
private final LifeNoticeMapper lifeNoticeMapper;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 店铺信息Mapper
|
|
|
|
|
|
|
+ * 店铺图片Mapper,用于操作图片信息表
|
|
|
*/
|
|
*/
|
|
|
private final StoreImgMapper storeImgMapper;
|
|
private final StoreImgMapper storeImgMapper;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 黑名单Mapper
|
|
|
|
|
|
|
+ * 黑名单Mapper,用于操作用户黑名单表
|
|
|
*/
|
|
*/
|
|
|
private final LifeBlacklistMapper lifeBlacklistMapper;
|
|
private final LifeBlacklistMapper lifeBlacklistMapper;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 点赞记录Mapper
|
|
|
|
|
|
|
+ * 点赞记录Mapper,用于操作点赞记录表
|
|
|
*/
|
|
*/
|
|
|
private final LifeLikeRecordMapper lifeLikeRecordMapper;
|
|
private final LifeLikeRecordMapper lifeLikeRecordMapper;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 收藏Mapper
|
|
|
|
|
|
|
+ * 收藏Mapper,用于操作收藏记录表
|
|
|
*/
|
|
*/
|
|
|
private final LifeCollectMapper lifeCollectMapper;
|
|
private final LifeCollectMapper lifeCollectMapper;
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 店铺服务Feign接口,用于跨服务调用
|
|
|
|
|
+ */
|
|
|
private final AlienStoreFeign alienStoreFeign;
|
|
private final AlienStoreFeign alienStoreFeign;
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
- * 商品操作历史记录Mapper
|
|
|
|
|
|
|
+ * 商品操作历史记录Mapper,用于操作商品操作记录表
|
|
|
*/
|
|
*/
|
|
|
private final SecondGoodsRecordMapper secondGoodsRecordMapper;
|
|
private final SecondGoodsRecordMapper secondGoodsRecordMapper;
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 二手交易记录Mapper,用于操作二手交易记录表
|
|
|
|
|
+ */
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private SecondTradeRecordMapper secondTradeRecordMapper;
|
|
private SecondTradeRecordMapper secondTradeRecordMapper;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 举报信息Mapper
|
|
|
|
|
|
|
+ * 用户违规举报Mapper,用于操作用户举报记录表
|
|
|
*/
|
|
*/
|
|
|
private final LifeUserViolationMapper lifeUserViolationMapper;
|
|
private final LifeUserViolationMapper lifeUserViolationMapper;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 字典Mapper
|
|
|
|
|
|
|
+ * 字典Mapper,用于操作数据字典表
|
|
|
*/
|
|
*/
|
|
|
private final StoreDictionaryMapper storeDictionaryMapper;
|
|
private final StoreDictionaryMapper storeDictionaryMapper;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 交易记录服务
|
|
|
|
|
|
|
+ * 平台二手交易服务,提供二手交易相关业务逻辑
|
|
|
*/
|
|
*/
|
|
|
private final PlatformSecondTradeService platformSecondTradeService;
|
|
private final PlatformSecondTradeService platformSecondTradeService;
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 风控配置属性,包含各种风控规则的配置参数
|
|
|
|
|
+ */
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private RiskControlProperties riskControlProperties;
|
|
private RiskControlProperties riskControlProperties;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 风控服务
|
|
|
|
|
|
|
+ * 风控服务,提供风控相关业务逻辑处理
|
|
|
*/
|
|
*/
|
|
|
private final RiskControlService riskControlService;
|
|
private final RiskControlService riskControlService;
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 获取商品操作记录详情(管理后台使用)
|
|
|
|
|
+ * @param recordId 商品操作记录ID
|
|
|
|
|
+ * @return 商品操作记录详情VO对象
|
|
|
|
|
+ */
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 获取商品操作记录详情(管理后台使用)
|
|
|
|
|
+ * @param recordId 商品操作记录ID
|
|
|
|
|
+ * @return 商品操作记录详情VO对象
|
|
|
|
|
+ */
|
|
|
@Override
|
|
@Override
|
|
|
public SecondGoodsRecordDetailVo getAdminGoodsRecordDetail(Integer recordId) {
|
|
public SecondGoodsRecordDetailVo getAdminGoodsRecordDetail(Integer recordId) {
|
|
|
// 1. 获取商品操作记录基本信息
|
|
// 1. 获取商品操作记录基本信息
|
|
@@ -198,6 +225,18 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
|
|
|
return detailVo;
|
|
return detailVo;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 获取商品详情(管理后台使用)
|
|
|
|
|
+ * @param goodsId 商品ID
|
|
|
|
|
+ * @return 商品详情VO对象
|
|
|
|
|
+ * @throws Exception 处理过程中可能抛出的异常
|
|
|
|
|
+ */
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 获取商品详情(管理后台使用)
|
|
|
|
|
+ * @param goodsId 商品ID
|
|
|
|
|
+ * @return 商品详情VO对象
|
|
|
|
|
+ * @throws Exception 处理过程中可能抛出的异常
|
|
|
|
|
+ */
|
|
|
@Override
|
|
@Override
|
|
|
public SecondGoodsDetailVo getAdminGoodsDetail(Integer goodsId) throws Exception {
|
|
public SecondGoodsDetailVo getAdminGoodsDetail(Integer goodsId) throws Exception {
|
|
|
// 基本信息
|
|
// 基本信息
|
|
@@ -251,6 +290,11 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
|
|
|
return detailVo;
|
|
return detailVo;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 处理商品信息(管理后台使用)
|
|
|
|
|
+ * @param goodsId 商品ID
|
|
|
|
|
+ * @return 商品详情VO对象
|
|
|
|
|
+ */
|
|
|
@Override
|
|
@Override
|
|
|
public SecondGoodsDetailVo dealSecondGoodsInfo(Integer goodsId) {
|
|
public SecondGoodsDetailVo dealSecondGoodsInfo(Integer goodsId) {
|
|
|
SecondGoodsDetailVo SecondGoodsDetailVo = new SecondGoodsDetailVo();
|
|
SecondGoodsDetailVo SecondGoodsDetailVo = new SecondGoodsDetailVo();
|
|
@@ -281,6 +325,11 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
|
|
|
return SecondGoodsDetailVo;
|
|
return SecondGoodsDetailVo;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 处理商品记录信息
|
|
|
|
|
+ * @param goodsId 商品ID
|
|
|
|
|
+ * @return 商品VO对象
|
|
|
|
|
+ */
|
|
|
@Override
|
|
@Override
|
|
|
public SecondGoodsVo dealSecondGoodsRecordInfo(Integer goodsId) {
|
|
public SecondGoodsVo dealSecondGoodsRecordInfo(Integer goodsId) {
|
|
|
QueryWrapper<SecondGoodsVo> goodsVoQueryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<SecondGoodsVo> goodsVoQueryWrapper = new QueryWrapper<>();
|
|
@@ -311,6 +360,7 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
|
|
|
/**
|
|
/**
|
|
|
* 记录商品操作历史
|
|
* 记录商品操作历史
|
|
|
* @param goods 商品信息
|
|
* @param goods 商品信息
|
|
|
|
|
+ * @param operationName 操作名称
|
|
|
*/
|
|
*/
|
|
|
@Override
|
|
@Override
|
|
|
public void recordGoodsOperation(SecondGoods goods,String operationName) {
|
|
public void recordGoodsOperation(SecondGoods goods,String operationName) {
|
|
@@ -368,6 +418,11 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
|
|
|
*
|
|
*
|
|
|
* @param record 保存后的商品记录
|
|
* @param record 保存后的商品记录
|
|
|
*/
|
|
*/
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 保存二手商品记录图片类型信息
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param record 保存后的商品记录
|
|
|
|
|
+ */
|
|
|
private void saveRecordGoodsImages(SecondGoodsRecord record ) {
|
|
private void saveRecordGoodsImages(SecondGoodsRecord record ) {
|
|
|
|
|
|
|
|
log.info("创建操作历图片史开始: {} ", record);
|
|
log.info("创建操作历图片史开始: {} ", record);
|
|
@@ -400,6 +455,11 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
|
|
|
* @param reports 举报信息列表
|
|
* @param reports 举报信息列表
|
|
|
* @return SecondReportingVo列表
|
|
* @return SecondReportingVo列表
|
|
|
*/
|
|
*/
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 批量转换举报信息为SecondReportingVo对象
|
|
|
|
|
+ * @param reports 举报信息列表
|
|
|
|
|
+ * @return SecondReportingVo列表
|
|
|
|
|
+ */
|
|
|
private List<SecondReportingVo> convertReportsToVos(List<LifeUserViolation> reports) {
|
|
private List<SecondReportingVo> convertReportsToVos(List<LifeUserViolation> reports) {
|
|
|
List<SecondReportingVo> reportingVos = new ArrayList<>();
|
|
List<SecondReportingVo> reportingVos = new ArrayList<>();
|
|
|
|
|
|
|
@@ -443,6 +503,9 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
|
|
|
|
|
|
|
|
// 基本信息
|
|
// 基本信息
|
|
|
reportingVo.setId(report.getId());
|
|
reportingVo.setId(report.getId());
|
|
|
|
|
+ // 处理状态
|
|
|
|
|
+ reportingVo.setProcessingStatus(report.getProcessingStatus());
|
|
|
|
|
+
|
|
|
// 举报时间
|
|
// 举报时间
|
|
|
reportingVo.setReportingTime(report.getCreatedTime());
|
|
reportingVo.setReportingTime(report.getCreatedTime());
|
|
|
// 举报内容补充
|
|
// 举报内容补充
|
|
@@ -489,6 +552,12 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
|
|
|
* @param type 类型 1-举报 2-商品
|
|
* @param type 类型 1-举报 2-商品
|
|
|
* @return 图片列表
|
|
* @return 图片列表
|
|
|
*/
|
|
*/
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 处理举报凭证图片
|
|
|
|
|
+ * @param imageList 图片URL集合
|
|
|
|
|
+ * @param type 类型 1-举报 2-商品
|
|
|
|
|
+ * @return 图片列表
|
|
|
|
|
+ */
|
|
|
private List<Map<String, Object>> processReportImages(List<StoreImg> imageList, Integer type) {
|
|
private List<Map<String, Object>> processReportImages(List<StoreImg> imageList, Integer type) {
|
|
|
List<Map<String, Object>> list = new ArrayList<>();
|
|
List<Map<String, Object>> list = new ArrayList<>();
|
|
|
List<String> videoFileType = Arrays.asList("mp4", "avi", "flv", "mkv", "rmvb", "wmv", "3gp", "mov");
|
|
List<String> videoFileType = Arrays.asList("mp4", "avi", "flv", "mkv", "rmvb", "wmv", "3gp", "mov");
|
|
@@ -541,6 +610,13 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 创建商品基本信息
|
|
|
|
|
+ * @param goodsDTO 商品信息DTO
|
|
|
|
|
+ * @param editFlag 编辑标识 1-编辑 0-新增
|
|
|
|
|
+ * @return 是否创建成功
|
|
|
|
|
+ * @throws Exception 处理过程中可能抛出的异常
|
|
|
|
|
+ */
|
|
|
@Override
|
|
@Override
|
|
|
public boolean createBasicInfo(SecondGoodsVo goodsDTO,Integer editFlag) throws Exception {
|
|
public boolean createBasicInfo(SecondGoodsVo goodsDTO,Integer editFlag) throws Exception {
|
|
|
try {
|
|
try {
|
|
@@ -591,6 +667,11 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
|
|
|
* @param goods 用户ID,商品ID
|
|
* @param goods 用户ID,商品ID
|
|
|
* @return 是否未超过限制
|
|
* @return 是否未超过限制
|
|
|
*/
|
|
*/
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 检查用户在24小时内 频繁修改发布商品的数量是否超过限制
|
|
|
|
|
+ * @param goods 用户ID,商品ID
|
|
|
|
|
+ * @return 是否未超过限制
|
|
|
|
|
+ */
|
|
|
private boolean checkUserPublishLimit(SecondGoods goods) {
|
|
private boolean checkUserPublishLimit(SecondGoods goods) {
|
|
|
// 获取配置的阈值
|
|
// 获取配置的阈值
|
|
|
int publishLimit = riskControlProperties.getTradeFraud().getPublishCount24h();
|
|
int publishLimit = riskControlProperties.getTradeFraud().getPublishCount24h();
|
|
@@ -630,6 +711,11 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
|
|
|
* @param goods 商品信息
|
|
* @param goods 商品信息
|
|
|
* @return 是否未超过限制
|
|
* @return 是否未超过限制
|
|
|
*/
|
|
*/
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 检查用户在指定时间窗口内发布同类商品的数量是否超过限制
|
|
|
|
|
+ * @param goods 商品信息
|
|
|
|
|
+ * @return 是否未超过限制
|
|
|
|
|
+ */
|
|
|
private boolean checkUserPublishSameCategoryLimit(SecondGoods goods) {
|
|
private boolean checkUserPublishSameCategoryLimit(SecondGoods goods) {
|
|
|
// 获取配置的阈值
|
|
// 获取配置的阈值
|
|
|
int sameCategoryLimit = riskControlProperties.getAbnormalPublish().getSameCategoryCount24h();
|
|
int sameCategoryLimit = riskControlProperties.getAbnormalPublish().getSameCategoryCount24h();
|
|
@@ -1082,6 +1168,11 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
|
|
|
sendNotice("user_"+ phone, lifeNotice);
|
|
sendNotice("user_"+ phone, lifeNotice);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 发送通知消息
|
|
|
|
|
+ * @param receiverId 接收者ID
|
|
|
|
|
+ * @param lifeNotice 通知内容
|
|
|
|
|
+ */
|
|
|
private void sendNotice(String receiverId, LifeNotice lifeNotice) {
|
|
private void sendNotice(String receiverId, LifeNotice lifeNotice) {
|
|
|
try {
|
|
try {
|
|
|
WebSocketVo webSocketVo = new WebSocketVo();
|
|
WebSocketVo webSocketVo = new WebSocketVo();
|
|
@@ -1182,19 +1273,31 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 获取热销商品列表(前10)
|
|
|
|
|
- * @return 热销商品列表
|
|
|
|
|
|
|
+ * 获取收藏商品列表(前10)
|
|
|
|
|
+ * @return 收藏商品列表
|
|
|
*/
|
|
*/
|
|
|
@Override
|
|
@Override
|
|
|
public List<SecondGoods> getCollectTop10() {
|
|
public List<SecondGoods> getCollectTop10() {
|
|
|
return secondGoodsMapper.getCollectTop10();
|
|
return secondGoodsMapper.getCollectTop10();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 获取热销商品分页列表
|
|
|
|
|
+ * @param page 分页参数
|
|
|
|
|
+ * @return 热销商品分页列表
|
|
|
|
|
+ */
|
|
|
@Override
|
|
@Override
|
|
|
public IPage<SecondGoods> getHotSellingRanking(IPage<SecondGoods> page) {
|
|
public IPage<SecondGoods> getHotSellingRanking(IPage<SecondGoods> page) {
|
|
|
return secondGoodsMapper.getHotSellingRanking(page);
|
|
return secondGoodsMapper.getHotSellingRanking(page);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 根据屏蔽类型获取屏蔽商品列表
|
|
|
|
|
+ * @param page 分页参数
|
|
|
|
|
+ * @param userId 用户ID
|
|
|
|
|
+ * @param shieldType 屏蔽类型
|
|
|
|
|
+ * @return 屏蔽商品分页列表
|
|
|
|
|
+ */
|
|
|
@Override
|
|
@Override
|
|
|
public IPage<SecondGoods> getShieldedGoodsListByType(IPage<SecondGoods> page, Integer userId, Integer shieldType) {
|
|
public IPage<SecondGoods> getShieldedGoodsListByType(IPage<SecondGoods> page, Integer userId, Integer shieldType) {
|
|
|
return secondGoodsMapper.getShieldedGoodsListByType(page, userId, shieldType);
|
|
return secondGoodsMapper.getShieldedGoodsListByType(page, userId, shieldType);
|
|
@@ -1383,6 +1486,12 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
|
|
|
return secondGoods;
|
|
return secondGoods;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 获取屏蔽商品分页列表
|
|
|
|
|
+ * @param page 分页参数
|
|
|
|
|
+ * @param userId 用户ID
|
|
|
|
|
+ * @return 屏蔽商品分页列表
|
|
|
|
|
+ */
|
|
|
@Override
|
|
@Override
|
|
|
public IPage<SecondGoodsVo> getShieldedGoodsPage(IPage<SecondGoodsVo> page, Integer userId) {
|
|
public IPage<SecondGoodsVo> getShieldedGoodsPage(IPage<SecondGoodsVo> page, Integer userId) {
|
|
|
QueryWrapper<SecondGoodsVo> queryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<SecondGoodsVo> queryWrapper = new QueryWrapper<>();
|
|
@@ -1549,6 +1658,12 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
|
|
|
return result;
|
|
return result;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 根据用户ID和商品状态获取商品列表
|
|
|
|
|
+ * @param userId 用户ID
|
|
|
|
|
+ * @param goodsStatus 商品状态
|
|
|
|
|
+ * @return 商品列表
|
|
|
|
|
+ */
|
|
|
@Override
|
|
@Override
|
|
|
public List<SecondGoods> getGoodsListByUserId(Integer userId, Integer goodsStatus) {
|
|
public List<SecondGoods> getGoodsListByUserId(Integer userId, Integer goodsStatus) {
|
|
|
// 获取商品屏蔽列表
|
|
// 获取商品屏蔽列表
|
|
@@ -1848,6 +1963,12 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 获取管理后台商品列表
|
|
|
|
|
+ * @param page 分页参数
|
|
|
|
|
+ * @param queryDTO 查询参数DTO
|
|
|
|
|
+ * @return 商品列表
|
|
|
|
|
+ */
|
|
|
@Override
|
|
@Override
|
|
|
public IPage<SecondGoodsVo> getAdminGoodsList(IPage<SecondGoodsVo> page, SecondGoodsAdminQueryDTO queryDTO) {
|
|
public IPage<SecondGoodsVo> getAdminGoodsList(IPage<SecondGoodsVo> page, SecondGoodsAdminQueryDTO queryDTO) {
|
|
|
// 构建查询条件
|
|
// 构建查询条件
|
|
@@ -2017,6 +2138,11 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 发送下架通知
|
|
|
|
|
+ * @param receiverId 接收者ID
|
|
|
|
|
+ * @param lifeNotice 通知内容
|
|
|
|
|
+ */
|
|
|
private void sendShelveNotice(String receiverId, LifeNotice lifeNotice) {
|
|
private void sendShelveNotice(String receiverId, LifeNotice lifeNotice) {
|
|
|
try {
|
|
try {
|
|
|
WebSocketVo webSocketVo = new WebSocketVo();
|
|
WebSocketVo webSocketVo = new WebSocketVo();
|