|
@@ -0,0 +1,156 @@
|
|
|
+package shop.alien.second.service.impl;
|
|
|
+
|
|
|
+import cn.hutool.core.collection.CollectionUtil;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import shop.alien.entity.second.SecondGoods;
|
|
|
+import shop.alien.entity.store.StoreImg;
|
|
|
+import shop.alien.second.entity.SecondGoodsDTO;
|
|
|
+import shop.alien.second.mapper.SecondGoodsMapper;
|
|
|
+import shop.alien.second.service.SecondGoodsService;
|
|
|
+import shop.alien.util.common.netease.ImageCheckUtil;
|
|
|
+import shop.alien.util.common.netease.TextCheckUtil;
|
|
|
+
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 二手商品服务实现类
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, SecondGoods> implements SecondGoodsService {
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 保存商品为草稿状态
|
|
|
+ * @param goods 商品实体
|
|
|
+ * @return 是否成功保存
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public boolean saveAsDraft(SecondGoods goods) {
|
|
|
+ // 设置商品状态为草稿
|
|
|
+ goods.setGoodsStatus(0); // TODO: 使用常量或枚举代替硬编码
|
|
|
+ return save(goods);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean createBasicInfo(SecondGoodsDTO goodsDTO) {
|
|
|
+ // 实现基本信息保存逻辑
|
|
|
+ SecondGoods goods = new SecondGoods();
|
|
|
+ BeanUtils.copyProperties(goods, goodsDTO);
|
|
|
+
|
|
|
+ // 保存商品基本信息
|
|
|
+ if (!save(goods)) {
|
|
|
+ return false; // 保存失败直接返回
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取保存后的商品ID,用于后续业务处理
|
|
|
+ Integer savedGoodsId = goods.getId();
|
|
|
+ if (savedGoodsId == null) {
|
|
|
+ return false; // 如果获取不到ID,视为操作失败
|
|
|
+ }
|
|
|
+
|
|
|
+ // 保存商品图片信息
|
|
|
+ if (!saveStoreImages(savedGoodsId, goodsDTO.getImgUrl())) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 执行内容审核(图片和文本)
|
|
|
+ if (!performContentReviews(goods, goodsDTO)) {
|
|
|
+ return true; // 审核不通过时已设置状态,返回成功但标记为审核失败
|
|
|
+ }
|
|
|
+
|
|
|
+ // 如果所有审核都通过,设置为上架状态
|
|
|
+ goods.setGoodsStatus(3); // 上架
|
|
|
+ updateById(goods);
|
|
|
+
|
|
|
+ // 发送消息
|
|
|
+ sendMessage(goods);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 执行内容审核(图片和文本)
|
|
|
+ * @param goods 商品信息
|
|
|
+ * @param goodsDTO 商品DTO信息
|
|
|
+ * @return 审核结果
|
|
|
+ */
|
|
|
+ private boolean performContentReviews(SecondGoods goods, SecondGoodsDTO goodsDTO) {
|
|
|
+ // 文本审核
|
|
|
+ Map<String, String> textCheckResult = TextCheckUtil.check(goodsDTO.getDescribe());
|
|
|
+ if (!"200".equals(textCheckResult.get("code"))) {
|
|
|
+ // 文本审核不通过
|
|
|
+ goods.setGoodsStatus(2); // 审核失败
|
|
|
+ goods.setFailedReason("文本审核不通过:" + textCheckResult.get("msg"));
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 图片审核(循环处理)
|
|
|
+ List<String> imageUrls = goodsDTO.getImgUrl();
|
|
|
+ if (imageUrls != null && !imageUrls.isEmpty()) {
|
|
|
+ StringBuilder failReasonBuilder = new StringBuilder();
|
|
|
+ for (String imageUrl : imageUrls) {
|
|
|
+ Map<String, String> imageCheckResult = ImageCheckUtil.check(imageUrl, 2);
|
|
|
+ if (!"200".equals(imageCheckResult.get("code"))) {
|
|
|
+ // 任一图片审核不通过则整体不通过
|
|
|
+ goods.setGoodsStatus(2); // 审核失败
|
|
|
+ failReasonBuilder.append("图片审核不通过:").append(imageUrl).append(" 原因:").append(imageCheckResult.get("msg")).append("; ");
|
|
|
+ goods.setFailedReason(failReasonBuilder.toString());
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 所有审核通过
|
|
|
+ goods.setGoodsStatus(3); // 上架
|
|
|
+ goods.setFailedReason("");
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 保存商品图片信息
|
|
|
+ * @param savedGoodsId 保存后的商品ID
|
|
|
+ * @param imgUrl 图片URL列表
|
|
|
+ * @return 保存结果
|
|
|
+ */
|
|
|
+ private boolean saveStoreImages(Integer savedGoodsId, List<String> imgUrl) {
|
|
|
+ if (CollectionUtil.isEmpty(imgUrl)) {
|
|
|
+ return true; // 如果没有图片,则返回成功
|
|
|
+ }
|
|
|
+ for(int i = 0; i < imgUrl.size(); i++){
|
|
|
+ StoreImg storeImg = new StoreImg();
|
|
|
+ storeImg.setStoreId(savedGoodsId);
|
|
|
+ storeImg.setImgType(15);
|
|
|
+ storeImg.setImgSort(i);
|
|
|
+ storeImg.setImgDescription("商品图片");
|
|
|
+ storeImg.setDeleteFlag(0);
|
|
|
+ storeImg.setCreatedTime(new Date());
|
|
|
+ storeImg.setUpdatedTime(new Date());
|
|
|
+ storeImg.setCreatedUserId(1);
|
|
|
+ storeImg.setUpdatedUserId(1);
|
|
|
+ storeImg.setImgUrl(imgUrl.get(i));
|
|
|
+ // 调取feign接口 保存图片 插入store_img数据库
|
|
|
+// storeImgMapper.insert(storeImg);
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 发送消息
|
|
|
+ * @param goods 商品信息
|
|
|
+ */
|
|
|
+ private void sendMessage(SecondGoods goods) {
|
|
|
+ // 调取feign接口 发送消息 life_notice表
|
|
|
+// MessageService messageService = FeignClient.create(MessageService.class);
|
|
|
+// messageService.sendMessage(message);
|
|
|
+// message.setType(1);
|
|
|
+// message.setCreatedTime(new Date());
|
|
|
+// message.setUpdatedTime(new Date());
|
|
|
+// messageMapper.insert(message);
|
|
|
+ }
|
|
|
+
|
|
|
+}
|