admin
2020-06-16 5f13dcc8eaac7cd26c0ec41bd1b3efbb70a08180
fanli/src/main/java/com/yeshi/fanli/service/impl/user/cloud/UserCloudServiceImpl.java
@@ -15,6 +15,7 @@
import com.aliyun.openservices.ons.api.Message;
import com.aliyun.openservices.ons.api.Producer;
import com.yeshi.fanli.dao.mybatis.user.cloud.UserCloudMapper;
import com.yeshi.fanli.dto.aitaoker.RobotInfoDTO;
import com.yeshi.fanli.dto.aitaoker.WeiXinGroupDTO;
import com.yeshi.fanli.dto.jd.JDCouponInfo;
import com.yeshi.fanli.dto.jd.JDPingouInfo;
@@ -216,7 +217,6 @@
   }
   @Override
   @Transactional(rollbackFor = Exception.class)
   public void openCloud(Long uid, Long orderId, CloudOrderMenuEnum menuEnum) throws UserCloudException {
      UserCloud existCloud = userCloudMapper.getByOrderId(orderId);
      if (existCloud != null) {
@@ -230,62 +230,60 @@
         if (userCloud.getEndTime().getTime() > java.lang.System.currentTimeMillis())
            renew = true;
         // 验证套餐是否相同
         if (renew && userCloud.getRobotType() != menuEnum.getType()) {
         if (renew && userCloud.getRobotType() != menuEnum.getRobotType()) {
            LogHelper.cloudInfo("方法openCloud: [uid=" + uid + "][订单ID=" + orderId + "]已有其他云发单套餐还未结束");
            throw new UserCloudException(1, "已有其他云发单套餐还未结束");
         }
      }
//      RobotInfoDTO dto = null;
//      if (renew) { // 续费
//         dto = AitaokerApiUtil.robotRenewals(userCloud.getRobotId(), menuEnum.getMonth());
//      } else { // 创建机器人
//         dto = AitaokerApiUtil.robotCreate(menuEnum.getMonth(), menuEnum.getType(), "wechatrobot", null);
//      }
//
//      if (dto == null) {
//         LogHelper.cloudInfo("方法openCloud: [uid=" + uid + "][订单ID=" + orderId + "]机器人失败: 返回空值");
//         throw new UserCloudException(1, "机器人获取失败");
//      }
//
//      String endTimeStr = dto.getEndTime();
//      if (StringUtil.isNullOrEmpty(endTimeStr)) {
//         LogHelper.cloudInfo("方法openCloud: [uid=" + uid + "][订单ID=" + orderId + "]机器人失败: 返回时间为空");
//         throw new UserCloudException(1, "机器人返回时间为空");
//      }
//
//      long endTime = 0;
//      try {
//         endTime = Long.parseLong(endTimeStr);
//      } catch (Exception e) {
//         LogHelper.cloudInfo("方法openCloud: [uid=" + uid + "][订单ID=" + orderId + "]机器人失败: 返回时间格式不正确");
//         throw new UserCloudException(1, "机器人返回时间格式不正确");
//      }
//
//      Integer robotId = dto.getId();
//      if (robotId == null) {
//         LogHelper.cloudInfo("方法openCloud: [uid=" + uid + "][订单ID=" + orderId + "]机器人失败: 机器人ID返回为空");
//         throw new UserCloudException(1, "机器人ID返回为空");
//      }
//
//      Integer groupNum = dto.getGroupNum();
//      if (groupNum == null) {
//         LogHelper.cloudInfo("方法openCloud: [uid=" + uid + "][订单ID=" + orderId + "]机器人失败: groupNum返回为空");
//         throw new UserCloudException(1, "groupNum返回为空");
//      }
      RobotInfoDTO dto = null;
      if (renew) { // 续费
         dto = AitaokerApiUtil.robotRenewals(userCloud.getRobotId(), menuEnum.getMonth());
      } else { // 创建机器人
         dto = AitaokerApiUtil.robotCreate(menuEnum.getMonth(), menuEnum.getRobotType(), "wechatrobot", null);
      }
      if (dto == null) {
         LogHelper.cloudInfo("方法openCloud: [uid=" + uid + "][订单ID=" + orderId + "]机器人失败: 机器人创建失败");
      }
      Integer robotId = dto.getId();
      if (robotId == null) {
         LogHelper.cloudInfo("方法openCloud: [uid=" + uid + "][订单ID=" + orderId + "]机器人失败: 机器人ID返回为空");
      }
      String endTimeStr = dto.getEndTime();
      if (StringUtil.isNullOrEmpty(endTimeStr)) {
         LogHelper.cloudInfo("方法openCloud: [uid=" + uid + "][订单ID=" + orderId + "]机器人失败: 返回时间为空");
      }
      long endTime = 0;
      try {
         endTime = Long.parseLong(endTimeStr);
      } catch (Exception e) {
         LogHelper.cloudInfo("方法openCloud: [uid=" + uid + "][订单ID=" + orderId + "]机器人失败: 返回时间格式不正确");
      }
      Integer groupNum = dto.getGroupNum();
      if (groupNum == null) {
         LogHelper.cloudInfo("方法openCloud: [uid=" + uid + "][订单ID=" + orderId + "]机器人失败: groupNum返回为空");
      }
      UserCloud newCloud = new UserCloud();
      newCloud.setUid(uid);
      newCloud.setOrderId(orderId);
//      newCloud.setGroupNum(groupNum);
//      newCloud.setRobotId(robotId);
      newCloud.setRobotType(menuEnum.getType());
//      if (renew) {
//         newCloud.setStartTime(userCloud.getStartTime());
//      } else {
//         newCloud.setStartTime(new Date());
//      }
//      newCloud.setEndTime(new Date(endTime * 1000)); // Unix 转换 普通时间
      newCloud.setGroupNum(groupNum);
      newCloud.setRobotId(robotId);
      newCloud.setRobotType(menuEnum.getRobotType());
      if (renew) {
         newCloud.setWxId(userCloud.getWxId());
         newCloud.setWxName(userCloud.getWxName());
         newCloud.setWxPortrait(userCloud.getPortrait());
         newCloud.setStartTime(userCloud.getStartTime());
      } else {
         newCloud.setStartTime(new Date());
      }
      newCloud.setEndTime(new Date(endTime * 1000)); // Unix 转换 普通时间
      newCloud.setCreateTime(new Date());
      userCloudMapper.insertSelective(newCloud);
      
@@ -1109,43 +1107,58 @@
      }
   }
   @Override
   public void fixedTimeSend(String id) {
      if (StringUtil.isNullOrEmpty(id))
   public void fixedTimeSend(List<GoodsEvaluate> listActivity, List<GoodsEvaluate> listGoods) {
      if (listGoods == null && listActivity == null)
         return;
      // 一个小时之前
      long time = java.lang.System.currentTimeMillis() -  1000 * 60 * 60 ;
      Date lastTime =  new Date(time);
      Date lastTime = new Date(java.lang.System.currentTimeMillis() - 1000 * 60 * 60);
      for (int i = 0; i < 1000; i ++) {
         // 查询哪些用户开通
         List<Long> list = userCloudMapper.listValidUid(i*1000, 1000);
         if (list == null || list.size() == 0) {
         List<Long> listUser = userCloudMapper.listValidUid(i*1000, 1000);
         if (listUser == null || listUser.size() == 0) {
            break;
         }
         
         for (Long uid: list) {
            try {
               // 判断是否该 内容已发
               UserCloudSendRecord record = userCloudSendRecordService.getByUidAndSendId(uid, id);
               if (record != null)
         // 遍历用户
         for (Long uid: listUser) {
            try {// 判断是否开通官方采集
               UserCloudManage cloudManage = userCloudManageService.selectByPrimaryKey(uid);
               if (cloudManage == null || cloudManage.getOfficial() == null || !cloudManage.getOfficial()) {
                  continue;
               }
               // 是否在一个小时内已发送过
               UserCloudSendRecord last = userCloudSendRecordService.getLastByUid(uid, lastTime);
               if (last != null)
                  continue;
               
               boolean official = false;
               UserCloudManage cloudManage = userCloudManageService.selectByPrimaryKey(uid);
               if (cloudManage != null) {
                  if (cloudManage.getOfficial() != null)
                     official = cloudManage.getOfficial();
               String evaluateId = null;
               // 活动
               if (listActivity != null && listActivity.size() > 0) {
                  for (GoodsEvaluate evaluate: listActivity) {
                     UserCloudSendRecord record = userCloudSendRecordService.getByUidAndSendId(uid, evaluate.getId());
                     if (record != null)
                        continue;
                     evaluateId = evaluate.getId();
                     break;
                  }
               }
               if (!Constant.IS_TEST && official) {
                  UserCloudMQMsg msg = new UserCloudMQMsg(uid, id, UserCloudMQMsg.TYPE_EVALUATE);
               // 单品
               if (StringUtil.isNullOrEmpty(evaluateId) && listGoods != null && listGoods.size() > 0) {
                  for (GoodsEvaluate evaluate: listGoods) {
                     UserCloudSendRecord record = userCloudSendRecordService.getByUidAndSendId(uid, evaluate.getId());
                     if (record != null)
                        continue;
                     evaluateId = evaluate.getId();
                     break;
                  }
               }
               if(!StringUtil.isNullOrEmpty(evaluateId)) {
                  UserCloudMQMsg msg = new UserCloudMQMsg(uid, evaluateId, UserCloudMQMsg.TYPE_EVALUATE);
                  Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.userCloud, msg);
                  producer.send(message);
               }