yujian
2020-06-08 7912a94e5de72b628bde39b16e6c7b21172910eb
fanli/src/main/java/com/yeshi/fanli/service/impl/user/cloud/UserCloudGoodsServiceImpl.java
@@ -2,7 +2,6 @@
import java.util.Date;
import java.util.List;
import java.util.Set;
import javax.annotation.Resource;
@@ -26,6 +25,7 @@
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.goods.CommonGoodsService;
import com.yeshi.fanli.service.inter.user.cloud.UserCloudGoodsService;
import com.yeshi.fanli.service.inter.user.cloud.UserCloudManageService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.cache.JDGoodsCacheUtil;
@@ -34,9 +34,7 @@
import com.yeshi.fanli.util.rocketmq.MQMsgBodyFactory;
import com.yeshi.fanli.util.rocketmq.MQTopicName;
import com.yeshi.fanli.util.suning.SuningApiUtil;
import com.yeshi.fanli.util.suning.SuningUtil;
import com.yeshi.fanli.util.vipshop.VipShopApiUtil;
@Service
public class UserCloudGoodsServiceImpl implements UserCloudGoodsService {
@@ -56,9 +54,11 @@
   @Resource
   private CommonGoodsService commonGoodsService;
   
   @Resource
   private UserCloudManageService userCloudManageService;
   @Resource(name = "producer")
   private Producer producer;
   
   @Override
   public void deleteByPrimaryKeyAndUid(Long id, Long uid) {
@@ -75,6 +75,15 @@
      userCloudGoodsMapper.updateByPrimaryKeySelective(record);
   }
   
   @Override
   public List<UserCloudGoods> query(int page, int pageSize, String key) {
      return userCloudGoodsMapper.query((page - 1) * pageSize, pageSize, key);
   }
   @Override
   public long count(String key) {
      return userCloudGoodsMapper.count(key);
   }
   
   @Override
   public List<UserCloudGoods> listByUid(long start, int count, Long uid) {
@@ -86,12 +95,10 @@
      return userCloudGoodsMapper.listByNotShare(uid);
   }
   @Override
   public long countByUid(Long uid) {
      return userCloudGoodsMapper.countByUid(uid);
   }
   
   @Override
   public UserCloudGoods getByUidAndGoods(Long uid, Long goodsId, Integer goodsType) {
@@ -99,42 +106,37 @@
   }
   @Override
   public void addGoods(Long uid, Set<String> set, Integer goodsType) throws UserCloudGoodsException {
      if (uid == null) {
   public UserCloudGoods addGoods(Long uid, Long goodsId, Integer goodsType, Long sellerId) throws UserCloudGoodsException {
      if (uid == null)
         throw new UserCloudGoodsException(1, "用户尚未登录");
      }
      if (set == null || set.size() == 0 || goodsType == null) {
      if (goodsId == null || goodsType == null)
         throw new UserCloudGoodsException(1, "系统参数不正确");
      }
      for (String goodsId : set) {
         CommonGoods commonGoods = null;
         if (goodsType == Constant.SOURCE_TYPE_TAOBAO)  { // 淘宝
            try {
               TaoBaoGoodsBrief goodsBrief = redisManager.getTaoBaoGoodsBrief(Long.parseLong(goodsId));
            TaoBaoGoodsBrief goodsBrief = redisManager.getTaoBaoGoodsBrief(goodsId);
               commonGoods = CommonGoodsFactory.create(goodsBrief);
            } catch (TaobaoGoodsDownException e) {
               throw new UserCloudGoodsException(1, goodsId + "商品已下架");
            }
         } else if (goodsType == Constant.SOURCE_TYPE_JD) { // 京东
            JDGoods goods = jdGoodsCacheUtil.getGoodsInfo(Long.parseLong(goodsId));
         JDGoods goods = jdGoodsCacheUtil.getGoodsInfo(goodsId);
            if (goods == null)
               throw new UserCloudGoodsException(1, goodsId + "未找到商品信息");
            commonGoods = CommonGoodsFactory.create(goods);
         } else if (goodsType == Constant.SOURCE_TYPE_PDD) { // 拼多多
            PDDGoodsDetail goods = pinDuoDuoCacheUtil.getGoodsInfo(Long.parseLong(goodsId));
         PDDGoodsDetail goods = pinDuoDuoCacheUtil.getGoodsInfo(goodsId);
            if (goods == null)
               throw new UserCloudGoodsException(1, goodsId + "未找到商品信息");
            commonGoods = CommonGoodsFactory.create(goods);
         } else if (goodsType == Constant.SOURCE_TYPE_VIP) { // 唯品会
            VIPGoodsInfo goods = VipShopApiUtil.getGoodsDetail(goodsId);
         VIPGoodsInfo goods = VipShopApiUtil.getGoodsDetail(goodsId +"");
            if (goods == null)
               throw new UserCloudGoodsException(1, goodsId + "未找到商品信息");
            commonGoods = CommonGoodsFactory.create(goods);
         } else if (goodsType == Constant.SOURCE_TYPE_SUNING) { // 苏宁
            String[] ids = SuningUtil.getGoodsIdDetail(goodsId);
            SuningGoodsInfo goods = SuningApiUtil.getGoodsDetail(ids[1], ids[0]);
         SuningGoodsInfo goods = SuningApiUtil.getGoodsDetail(goodsId +"", sellerId + "");
            if (goods == null)
               throw new UserCloudGoodsException(1, goodsId + "未找到商品信息");
            commonGoods = CommonGoodsFactory.create(goods);
@@ -142,7 +144,7 @@
         if (commonGoods == null) {
            LogHelper.test("云发单未找到商品详情,id=" + goodsId + "type=" + goodsType);
            continue;
         throw new UserCloudGoodsException(1, "商品信息获取失败");
         }
            
         try {
@@ -152,8 +154,11 @@
            throw new UserCloudGoodsException(1, "商品信息更新失败");
         }
      UserCloudGoods result = null;
         UserCloudGoods cloudGoods = userCloudGoodsMapper.getByUidAndCommonGoodsId(uid, commonGoods.getId());
         if (cloudGoods != null) {
         result = cloudGoods;
            UserCloudGoods update = new UserCloudGoods();
            update.setId(cloudGoods.getId());
            update.setState(UserCloudGoods.STATE_NORMAL);
@@ -167,18 +172,32 @@
            cloudGoods.setCreateTime(new Date());
            cloudGoods.setUpdateTime(new Date());
            userCloudGoodsMapper.insertSelective(cloudGoods);
         result = cloudGoods;
      }
      return result;
         }
         
         if (cloudGoods.getId() != null) {
            if (!Constant.IS_TEST) {
   @Override
   public void sendGoodsMQMsg(Long uid) {
      if (Constant.IS_TEST) {
         return;
      }
      List<UserCloudGoods> list = userCloudGoodsMapper.listByNotShare(uid);
      if (list == null || list.size() == 0) {
         return;
      }
      long deliverTime = java.lang.System.currentTimeMillis();
      for (UserCloudGoods cloudGoods : list) {
               UserCloudMQMsg msg = new UserCloudMQMsg(uid, cloudGoods.getId() +"", UserCloudMQMsg.TYPE_STORE);
               Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.userCloud, msg);
         message.setStartDeliverTime(deliverTime);
               producer.send(message);
         // 每5分钟查询一次
         deliverTime = deliverTime + 1000 * 60 * 5;
            }
         }
      }
   }
    
}