admin
2020-07-03 651a15c78f668bef3859d9ed1bb7ad0b669d3600
fanli/src/main/java/com/yeshi/fanli/service/impl/user/cloud/UserCloudServiceImpl.java
@@ -8,13 +8,15 @@
import javax.annotation.Resource;
import com.yeshi.fanli.entity.SystemEnum;
import com.yeshi.fanli.exception.taobao.TaoBaoConvertLinkException;
import com.yeshi.fanli.service.manger.goods.TaoBaoLinkManager;
import org.springframework.core.task.TaskExecutor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.yeshi.utils.BigDecimalUtil;
import org.yeshi.utils.taobao.TbImgUtil;
import com.alibaba.druid.support.logging.Log;
import com.aliyun.openservices.ons.api.Message;
import com.aliyun.openservices.ons.api.Producer;
import com.yeshi.fanli.dao.mybatis.user.cloud.UserCloudMapper;
@@ -74,6 +76,7 @@
import com.yeshi.fanli.service.inter.user.cloud.UserCloudService;
import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService;
import com.yeshi.fanli.service.manger.goods.ConvertLinkManager;
import com.yeshi.fanli.service.manger.msg.RocketMQManager;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.ImageToBase64;
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
@@ -135,23 +138,13 @@
   @Resource
   private PinDuoDuoCacheUtil pinDuoDuoCacheUtil;
   @Resource
   private QrCodeService qrCodeService;
   @Resource
   private RedisManager redisManager;
   @Resource
   private OrderHongBaoMoneyComputeService orderHongBaoMoneyComputeService;
   @Resource
   private HongBaoManageService hongBaoManageService;
   @Resource
   private ShareGoodsTextTemplateService shareGoodsTextTemplateService;
   @Resource
   private CommonGoodsService commonGoodsService;
   @Resource
   private UserCloudSendRecordService userCloudSendRecordService;
@@ -162,8 +155,8 @@
   @Resource
   private UserCloudManageService userCloudManageService;
   @Resource(name = "producer")
   private Producer producer;
   @Resource
   private RocketMQManager rocketMQManager;
   @Resource
   private UserOtherMsgNotificationService userOtherMsgNotificationService;
@@ -171,11 +164,11 @@
   @Resource
   private PushService pushService;
   @Resource
   private UserSystemMsgService userSystemMsgService;
   @Resource(name = "taskExecutor")
   private TaskExecutor executor;
   @Resource
   private TaoBaoLinkManager taoBaoLinkManager;
   @Override
   public UserCloud getValidByUid(Long uid) {
@@ -532,7 +525,18 @@
      if (!hasToken)
         throw new UserCloudException(1, "该内容包含可转链口令或链接");
      // 异步执行发送
      executor.execute(new Runnable() {
         @Override
         public void run() {
            sendEvaluate(uid, evaluate, way, userCloud, listOpen, listComment);
         }
      });
   }
   private void sendEvaluate(Long uid, GoodsEvaluate evaluate, int way, UserCloud userCloud,
         List<UserCloudGroup> listOpen, List<String> listComment) {
      ImgInfo imgVideo = null;
      List<String> listImg = new ArrayList<>();
@@ -546,15 +550,15 @@
            listImg.add(imgInfo.getUrl());
         }
      }
      long time7= java.lang.System.currentTimeMillis();
      LogHelper.test("sendCircleByDynamic发圈内容组织转链:" + (time7 - time6));
      String wxId = userCloud.getWxId();
      Integer robotId = userCloud.getRobotId();
      // 保存发送记录
      UserCloudSendRecord sendRecord = new UserCloudSendRecord();
      sendRecord.setUid(uid);
      sendRecord.setSendId(id);
      sendRecord.setSendId(evaluate.getId());
      sendRecord.setSendWay(way);
      sendRecord.setWxId(wxId);
      sendRecord.setRobotId(robotId);
@@ -563,9 +567,6 @@
      UserCloudSendRecord result = userCloudSendRecordService.save(sendRecord);
      String pid = result.getId();
      long time8= java.lang.System.currentTimeMillis();
      LogHelper.test("sendCircleByDynamic保存发圈记录:" + (time8 - time7));
      
      for (UserCloudGroup cloudGroup : listOpen) {
         String title = evaluate.getTitle();
@@ -624,10 +625,10 @@
               if (macsend)
                  sendContent.setTitle(title);
            }
            SystemEnum system=userInfoService.getUserSystem(uid);
            // 发送图片
            int num = 1;
            String picNum = configService.get(ConfigKeyEnum.robotCloudGroupPictureNum.getKey());
            String picNum = configService.getValue(ConfigKeyEnum.robotCloudGroupPictureNum.getKey(),system);
            if (!StringUtil.isNullOrEmpty(picNum)) {
               num = Integer.parseInt(picNum);
            }
@@ -658,12 +659,10 @@
         }
         userCloudSendContentService.save(sendContent);
      }
      long time9= java.lang.System.currentTimeMillis();
      LogHelper.test("sendCircleByDynamic执行发圈耗时:" + (time9 - time8));
   }
   @Override
   @Transactional(rollbackFor = Exception.class)
   public void sendCustomGoods(Long uid, Long goodsId, Integer goodsType, Long sellerId) throws UserCloudException {
@@ -865,7 +864,6 @@
    * 淘宝商品信息处理
    * 
    * @param user
    * @param inviteCode
    * @param robotId
    * @param wxId
    * @param goodsId
@@ -877,8 +875,8 @@
         List<UserCloudGroup> listOpen, String pid) throws UserCloudException {
      TaoBaoLink taoBaoLink = null;
      try {
         taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(user.getId(), goodsId, relationId);
      } catch (ShareGoodsException e) {
         taoBaoLink = taoBaoLinkManager.getTaoBaoLinkForShare(user.getId(), goodsId, relationId,null);
      } catch (TaoBaoConvertLinkException e) {
         LogHelper.errorDetailInfo(e);
         throw new UserCloudException(1, "该商品已下架");
      }
@@ -901,15 +899,22 @@
      }
      String sales = TaoBaoUtil.getSaleCount(goods.getBiz30day());
      SystemEnum system=userInfoService.getUserSystem(user.getId());
      // 获取推荐语
      String recommendText = shareGoodsTextTemplateService.getRecommendText(coupon, goods.getTitle(), sales,
            couponAmount, description);
            couponAmount, description,system);
      // 获取评论语
      String commentText = shareGoodsTextTemplateService.getCommentTextByTaoToken(coupon, taoBaoLink.getTaoToken(),
            goods.getZkPrice().toString(), quanPrice);
            goods.getZkPrice().toString(), quanPrice,system);
      // 云发单
      sendGoods(robotId, wxId, listOpen, recommendText, commentText, goods.getImgList(), user.getId(), pid);
      // 异步执行发送
      executor.execute(new Runnable() {
         @Override
         public void run() {
            sendGoods(robotId, wxId, listOpen, recommendText, commentText, goods.getImgList(), user.getId(), pid);
         }
      });
   }
   /**
@@ -952,9 +957,11 @@
      String sales = JDUtil.getSaleCount(jdGoods.getInOrderCount30Days());
      SystemEnum system=userInfoService.getUserSystem(user.getId());
      // 获取推荐语
      String recommendText = shareGoodsTextTemplateService.getRecommendText(coupon, jdGoods.getSkuName(), sales,
            couponAmount, null);
            couponAmount, null,system);
      // 获取评论语
      BigDecimal price = jdGoods.getPrice();
@@ -964,10 +971,16 @@
      }
      String zkPrice = BigDecimalUtil.getWithNoZera(price).toString();
      String commentText = shareGoodsTextTemplateService.getCommentTextByLink(coupon, jumpLink, zkPrice, quanPrice,
            ConfigKeyEnum.quickShareJDCommentText);
            ConfigKeyEnum.quickShareJDCommentText,system);
      // 云发单
      sendGoods(robotId, wxId, listOpen, recommendText, commentText, jdGoods.getImageList(), user.getId(), pid);
      // 异步执行发送
      executor.execute(new Runnable() {
         @Override
         public void run() {
            sendGoods(robotId, wxId, listOpen, recommendText, commentText, jdGoods.getImageList(), user.getId(), pid);
         }
      });
   }
   /**
@@ -1008,23 +1021,33 @@
         sales = "0";
      }
      SystemEnum system=userInfoService.getUserSystem(user.getId());
      // 获取推荐语
      String recommendText = shareGoodsTextTemplateService.getRecommendText(coupon, goods.getGoodsName(), sales,
            couponAmount, null);
            couponAmount, null,system);
      // 获取评论语
      String zkPrice = MoneyBigDecimalUtil.div(new BigDecimal(goods.getMinGroupPrice()), new BigDecimal(100))
            .setScale(2).toString();
      String commentText = shareGoodsTextTemplateService.getCommentTextByLink(coupon, jumpLink, zkPrice, quanPrice,
            ConfigKeyEnum.quickSharePDDCommentText);
            ConfigKeyEnum.quickSharePDDCommentText,system);
      List<String> list = null;
      String[] goodsGalleryUrls = goods.getGoodsGalleryUrls();
      if (goodsGalleryUrls != null && goodsGalleryUrls.length > 0) {
         list = Arrays.asList(goodsGalleryUrls);
      }
      // 云发单
      sendGoods(robotId, wxId, listOpen, recommendText, commentText, list, user.getId(), pid);
      List<String> list2 = list;
      // 异步执行发送
      executor.execute(new Runnable() {
         @Override
         public void run() {
            sendGoods(robotId, wxId, listOpen, recommendText, commentText, list2, user.getId(), pid);
         }
      });
   }
   /**
@@ -1052,16 +1075,22 @@
      boolean coupon = false;
      String quanPrice = "";
      String couponAmount = "";
        SystemEnum system=userInfoService.getUserSystem(user.getId());
      // 获取推荐语
      String recommendText = shareGoodsTextTemplateService.getRecommendText(coupon, goods.getGoodsName(), null,
            couponAmount, null);
            couponAmount, null,system);
      // 获取评论语
      String commentText = shareGoodsTextTemplateService.getCommentTextByLink(coupon, jumpLink,
            goods.getMarketPrice(), quanPrice, ConfigKeyEnum.quickShareVIPCommentText);
            goods.getMarketPrice(), quanPrice, ConfigKeyEnum.quickShareVIPCommentText,system);
      // 云发单
      sendGoods(robotId, wxId, listOpen, recommendText, commentText, goods.getGoodsDetailPictures(), user.getId(),
            pid);
      // 异步执行发送
      executor.execute(new Runnable() {
         @Override
         public void run() {
            sendGoods(robotId, wxId, listOpen, recommendText, commentText, goods.getGoodsDetailPictures(), user.getId(),
                  pid);
         }
      });
   }
   /**
@@ -1093,21 +1122,28 @@
         coupon = true;
      }
      SystemEnum system=userInfoService.getUserSystem(user.getId());
      // 获取推荐语
      String recommendText = shareGoodsTextTemplateService.getRecommendText(coupon,
            goods.getCommodityInfo().getCommodityName(), sales, couponAmount, null);
            goods.getCommodityInfo().getCommodityName(), sales, couponAmount, null,system);
      // 生成快捷分享内容
      String template = configService.get(ConfigKeyEnum.quickShareSuNingCommentText.getKey());
      String template = configService.getValue(ConfigKeyEnum.quickShareSuNingCommentText.getKey(),system);
      String commentText = shareGoodsTextTemplateService.createQuickShareTextSuNing(template, goods, jumpLink);
      List<String> imgList = new ArrayList<>();
      for (SuningGoodsImg img : goods.getCommodityInfo().getPictureUrl()) {
         imgList.add(img.getPicUrl());
      }
      // 云发单
      sendGoods(robotId, wxId, listOpen, recommendText, commentText, imgList, user.getId(), pid);
      executor.execute(new Runnable() {
         @Override
         public void run() {
            // 云发单
            sendGoods(robotId, wxId, listOpen, recommendText, commentText, imgList, user.getId(), pid);
         }
      });
   }
   /**
@@ -1165,10 +1201,10 @@
               if (macsend)
                  sendContent.setTitle(title);
            }
            SystemEnum system=userInfoService.getUserSystem(uid);
            // 发送图片
            int num = 1;
            String picNum = configService.get(ConfigKeyEnum.robotCloudGroupPictureNum.getKey());
            String picNum = configService.getValue(ConfigKeyEnum.robotCloudGroupPictureNum.getKey(),system);
            if (!StringUtil.isNullOrEmpty(picNum)) {
               num = Integer.parseInt(picNum);
            }
@@ -1258,7 +1294,7 @@
                  UserCloudMQMsg msg = new UserCloudMQMsg(uid, evaluateId, UserCloudMQMsg.TYPE_EVALUATE);
                  Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.userCloud,
                        msg);
                  producer.send(message);
                  rocketMQManager.sendNormalMsg(message, null);
               }
            } catch (Exception e) {
               LogHelper.errorDetailInfo(e);
@@ -1292,7 +1328,7 @@
         UserCloudMQMsg msg = new UserCloudMQMsg(uid, UserCloudMQMsg.TYPE_PUSH);
         Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.userCloud, msg);
         message.setStartDeliverTime(java.lang.System.currentTimeMillis() + 1000 * 60 * 10);
         producer.send(message);
         rocketMQManager.sendNormalMsg(message, null);
      }
      // 更新已提醒