yujian
2020-01-18 f4a0f2acc63d7785eab108419a4e16f5f688cb95
fanli/src/main/java/com/yeshi/fanli/service/impl/homemodule/SpecialServiceImpl.java
@@ -5,7 +5,9 @@
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.UUID;
import javax.annotation.Resource;
@@ -25,6 +27,8 @@
import com.yeshi.fanli.entity.bus.homemodule.AdActivityVersionControl.AdActivityType;
import com.yeshi.fanli.entity.bus.homemodule.Special;
import com.yeshi.fanli.entity.common.JumpDetailV2;
import com.yeshi.fanli.entity.system.ConfigKeyEnum;
import com.yeshi.fanli.exception.banner.SwiperPictureException;
import com.yeshi.fanli.exception.homemodule.HomeNavbarException;
import com.yeshi.fanli.exception.homemodule.SpecialException;
import com.yeshi.fanli.service.inter.common.JumpDetailV2Service;
@@ -35,6 +39,7 @@
import com.yeshi.fanli.service.inter.homemodule.SpecialPlaceService;
import com.yeshi.fanli.service.inter.homemodule.SpecialService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.FilePathEnum;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.VersionUtil;
@@ -93,6 +98,8 @@
         record.setParams(null);
      } else if (!StringUtil.isJson(params)) {
         throw new SpecialException(1, "跳转参数非JSON格式");
      } else {
         record.setParams(params.trim());
      }
      String startTime_str = record.getStartTime_str();
@@ -262,7 +269,7 @@
      String type = contentType.substring(contentType.indexOf("/") + 1);
      // 文件路径
      String filePath = "/img/special/" + UUID.randomUUID().toString().replace("-", "") + "." + type;
      String filePath =FilePathEnum.special.getPath() + UUID.randomUUID().toString().replace("-", "") + "." + type;
      // 执行上传
      String fileLink = COSManager.getInstance().uploadFile(inputStream, filePath).getUrl();
@@ -282,7 +289,7 @@
   }
   @Override
   @Transactional
   @Transactional(rollbackFor=Exception.class)
   public void updateOrder(Long id, Integer moveType, Integer sex) throws SpecialException {
      if (id == null || moveType == null || (!moveType.equals(1) && !moveType.equals(-1)) || sex == null) {
@@ -334,7 +341,7 @@
   }
   @Override
   @Transactional
   @Transactional(rollbackFor = Exception.class)
   public int deleteBatchByPrimaryKey(List<Long> list) throws Exception {
      List<Special> listSpecial = specialMapper.queryByListPrimaryKey(list);
      for (Special special : listSpecial) {
@@ -348,6 +355,15 @@
            COSManager.getInstance().deleteFile(subPicture);
         }
      }
      if (listSpecial != null)
         for (Special special : listSpecial) {
            List<AdActivityVersionControl> versionList = adActivityVersionControlService
                  .listByTypeAndSourceId(AdActivityType.special, special.getId());
            if (versionList != null)
               for (AdActivityVersionControl control : versionList)
                  adActivityVersionControlService.deleteByPrimaryKey(control.getId());
         }
      return specialMapper.deleteBatchByPrimaryKey(list);
   }
@@ -445,8 +461,41 @@
   @Override
   @Cacheable(value = "specialCache", key = "'listByVersion-'+#start+'-'+#count+'-'+#card+'-'+#platform+'-'+#versionCode")
   public List<Special> listByVersion(long start, int count, String card, Integer platform, Integer versionCode) {
      return specialMapper.listByVersion(start, count, card, platform, versionCode);
   public List<Special> listByVersion(long start, int count, String card, String platform, Integer versionCode) {
      List<Special> specialList = specialMapper.listByPlaceKey(card, null, null, null);
      filterSpecial(specialList, platform, versionCode);
      return specialList;
   }
   /**
    * 专题版本过滤
    *
    * @param list
    * @param platform
    * @param versionCode
    */
   private void filterSpecial(List<Special> list, String platform, int versionCode) {
      if (list == null || list.size() == 0)
         return;
      AppVersionInfo app = appVersionService.getClientVersion(platform, versionCode);
      if (app == null) {
         list.clear();
         return;
      }
      List<Long> versionIdList = new ArrayList<>();
      versionIdList.add(app.getId());
      List<Long> sourceIdList = new ArrayList<>();
      for (Special special : list) {
         sourceIdList.add(special.getId());
      }
      Set<Long> sourceIds = adActivityVersionControlService.filterSourceIdByVersion(sourceIdList,
            AdActivityType.special, versionIdList);
      for (int i = 0; i < list.size(); i++) {
         if (!sourceIds.contains(list.get(i).getId())) {
            list.remove(i--);
         }
      }
   }
   @Override
@@ -466,10 +515,12 @@
      else if (VersionUtil.greaterThan_1_5_60(acceptData.getPlatform(), acceptData.getVersion()))
         indexArc = "index_arc_1.5.6";
      int platformCode = Constant.getPlatformCode(acceptData.getPlatform());
      String platform = acceptData.getPlatform();
      int platformCode = Constant.getPlatformCode(platform);
      int version = Integer.parseInt(acceptData.getVersion());
      List<Special> listArc = specialMapper.listByPlaceKey(indexArc, sex, platformCode, version);
      filterSpecial(listArc, platform, version);
      if (listArc == null) {
         listArc = new ArrayList<Special>();
      } else if (listArc.size() > 0) {
@@ -495,7 +546,7 @@
               if (hour < 6) {// 0-6点之间不进入自购立减的页面
                  s.setJumpDetail(jumpDetailV2Service.getByTypeCache("web"));
                  JSONObject params = new JSONObject();
                  params.put("url", configService.get("tlj_own_buy_nogoods"));
                  params.put("url", configService.get(ConfigKeyEnum.tljOwnBuyNogoods.getKey()));
                  s.setParams(params.toString());
               } else {
                  // 查询专题详情
@@ -520,6 +571,8 @@
         listActivity = specialMapper.listByPlaceKey("index_activity", null, platformCode, version);
      }
      filterSpecial(listActivity, platform, version);
      if (listActivity == null) {
         listActivity = new ArrayList<Special>();
      } else if (listActivity.size() > 0) {
@@ -541,6 +594,7 @@
      JSONObject blockJsonMap = new JSONObject();
      List<Special> listBlock = specialMapper.listByPlaceKey(indexBlock, sex, platformCode, version);
      filterSpecial(listBlock, platform, version);
      if (listBlock == null) {
         listBlock = new ArrayList<Special>();
      } else if (listBlock.size() > 0) {
@@ -621,20 +675,45 @@
      if (special == null) {
         throw new Exception("专题不存在");
      }
      Set<Long> oldSet = new HashSet<>();
      List<AdActivityVersionControl> versionList = adActivityVersionControlService
            .listByTypeAndSourceId(AdActivityType.special, special.getId());
            .listByTypeAndSourceId(AdActivityType.special, specialId);
      if (versionList != null) {
         for (AdActivityVersionControl control : versionList)
            adActivityVersionControlService.deleteByPrimaryKey(control.getId());
            oldSet.add(control.getVersion().getId());
      }
      Set<Long> newSet = new HashSet<>();
      for (Long version : versions) {
         newSet.add(version);
      }
      Set<Long> delSet = new HashSet<>();
      delSet.addAll(oldSet);
      delSet.removeAll(newSet);
      for (Long versionId : delSet) {
         adActivityVersionControlService.deleteBySourceAndVersion(specialId, AdActivityType.special, versionId);
      }
      Set<Long> addSet = new HashSet<>();
      addSet.addAll(newSet);
      addSet.removeAll(oldSet);
      // 添加映射
      for (Long versionId : versions) {
      for (Long versionId : addSet) {
         AdActivityVersionControl control = new AdActivityVersionControl();
         control.setCreateTime(new Date());
         control.setSourceId(special.getId());
         control.setType(AdActivityType.special);
         control.setVersion(new AppVersionInfo(versionId));
         adActivityVersionControlService.addVersionControl(control);
         try {
            adActivityVersionControlService.addVersionControl(control);
         } catch (Exception e) {
            throw new SwiperPictureException(2, e.getMessage());
         }
      }
   }
}