admin
2020-01-07 6fdcc0c26dd33e87a024a69ed635d9aedb59cad6
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/DynamicControllerV2.java
@@ -23,14 +23,23 @@
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.bus.clazz.GoodsClass;
import com.yeshi.fanli.entity.bus.homemodule.Special;
import com.yeshi.fanli.entity.bus.homemodule.SpecialLabel;
import com.yeshi.fanli.entity.bus.homemodule.SwiperPicture;
import com.yeshi.fanli.entity.common.JumpDetailV2;
import com.yeshi.fanli.entity.dynamic.DynamicInfo;
import com.yeshi.fanli.service.inter.common.JumpDetailV2Service;
import com.yeshi.fanli.service.inter.config.ConfigService;
import com.yeshi.fanli.service.inter.dynamic.ArticleOfficialService;
import com.yeshi.fanli.service.inter.dynamic.DynamicInfoService;
import com.yeshi.fanli.service.inter.goods.TaoBaoGoodsBriefService;
import com.yeshi.fanli.service.inter.homemodule.SpecialService;
import com.yeshi.fanli.service.inter.homemodule.SwiperPictureService;
import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.VersionUtil;
import com.yeshi.fanli.util.taobao.DaTaoKeUtil;
import com.yeshi.fanli.vo.dynamic.ArticleVO;
import com.yeshi.fanli.vo.msg.ClientTextStyleVO;
import net.sf.json.JSONObject;
@@ -59,127 +68,17 @@
   @Resource
   private SpecialService specialService;
   @Resource
   private ArticleOfficialService articleOfficialService;
   @Resource
   private SwiperPictureService swiperPictureService;
   @Resource
   private ConfigService configService;
   
   /**
    * 动态商品列表
    * @param acceptData
    * @param page
    * @param cid
    * @param subId
    * @param out
    */
   @RequestMapping(value = "getList", method = RequestMethod.POST)
   public void getList(AcceptData acceptData, Integer page, Long cid, Long subId, PrintWriter out) {
      if (cid == null) {
         out.print(JsonUtil.loadFalseResult("主分类id不能为空"));
         return;
      }
      if (cid != null && cid == 5) {
         // 活动主题
         getSpecialList(acceptData, page, subId, out);
         return;
      }
      long count = 0;
      int platform = 1;
      if ("ios".equalsIgnoreCase(acceptData.getPlatform())) {
         platform = 2;
      }
      int version = Integer.parseInt(acceptData.getVersion());
      List<DynamicInfo> list = dynamicInfoService.queryV2(platform, version, (page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, cid,
            subId);
      if (list == null) {
         list = new ArrayList<DynamicInfo>();
      } else {
         count = dynamicInfoService.count(cid, subId);
      }
      JSONObject data = new JSONObject();
      data.put("count", count);
      data.put("list", getGson().toJson(list));
      out.print(JsonUtil.loadTrueResult(data));
   }
   /**
    *  活动列表
    * @param acceptData
    * @param out
    */
   private void getSpecialList(AcceptData acceptData, Integer page, Long subId, PrintWriter out) {
      if (subId == null) {
         out.print(JsonUtil.loadFalseResult("分类id不能为空"));
         return;
      }
      // 平台区分
      int platformCode = Constant.getPlatformCode(acceptData.getPlatform());
      List<String> listKey = new ArrayList<String>();
      if (subId == 1) { // 淘宝
         listKey.add("special_channel_tb");
      } else if (subId == 2) { // 京东
         listKey.add("special_channel_jd");
      } else if (subId == 3) { // 拼多多
         listKey.add("special_channel_pdd");
      } else { // 全部
         listKey.add("special_channel_tb");
         listKey.add("special_channel_jd");
         listKey.add("special_channel_pdd");
      }
      List<Special> list = specialService.listByPlaceKeyList((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, listKey, platformCode,
            Integer.parseInt(acceptData.getVersion()));
      long time = System.currentTimeMillis();
      // 删除尚未启用的过期的
      for (int i = 0; i < list.size(); i++) {
         Special special = list.get(i);
         if (special.getState() == 1L) {
            list.remove(i--);
         } else {
            if (special.getStartTime() != null && special.getEndTime() != null)
               special.setTimeTask(true);
            else
               special.setTimeTask(false);
            if (special.isTimeTask()) {
               if (time < special.getStartTime().getTime() || time > special.getEndTime().getTime()) {
                  list.remove(i--);
               } else// 设置倒计时
               {
                  special.setCountDownTime((special.getEndTime().getTime() - time) / 1000);
               }
            }
            if (Constant.IS_TEST) {// 测试标签
                List<ClientTextStyleVO> labels = new ArrayList<>();
                labels.add(new ClientTextStyleVO("文章标签", "#FE0014"));
                labels.add(new ClientTextStyleVO("标签内容", "#FE0014"));
                special.setLabels(labels);
            }
         }
      }
      long count = specialService.countByPlaceKeyList( listKey, platformCode,   Integer.parseInt(acceptData.getVersion()));
      GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation();
      Gson gson = gsonBuilder.create();
      JSONObject data = new JSONObject();
      data.put("count", count);
      data.put("list", gson.toJson(list));
      out.print(JsonUtil.loadTrueResult(data));
   }
   /**
    * 查询顶部分类
    * 
@@ -206,6 +105,10 @@
         case 4:
            break;
         case 5:
            list.add(new GoodsClass(0L, "全部"));
            list.add(new GoodsClass(1L, "淘宝"));
            list.add(new GoodsClass(2L, "京东"));
            list.add(new GoodsClass(3L, "拼多多"));
            break;
         default:
            break;
@@ -220,19 +123,19 @@
      List<GoodsClass> listSub = new ArrayList<GoodsClass>();
      listSub.add(new GoodsClass(0L, "今日单品"));
      listSub.addAll(DaTaoKeUtil.goodsClasses);
      GoodsClass menu1 = new GoodsClass(1L, "热销");
      menu1.setListSub(listSub);
      GoodsClass menu2 = new GoodsClass(2L, "推荐");
      menu2.setListSub(new ArrayList<GoodsClass>());
      GoodsClass menu3 = new GoodsClass(3L, "好店");
      menu3.setListSub(new ArrayList<GoodsClass>());
      GoodsClass menu4 = new GoodsClass(4L, "邀请");
      menu4.setListSub(new ArrayList<GoodsClass>());
      GoodsClass menu5 = new GoodsClass(5L, "活动");
      List<GoodsClass> sub5 = new ArrayList<GoodsClass>();
      sub5.add(new GoodsClass(0L, "全部"));
@@ -240,24 +143,160 @@
      sub5.add(new GoodsClass(2L, "京东"));
      sub5.add(new GoodsClass(3L, "拼多多"));
      menu5.setListSub(sub5);
      GoodsClass menu6 = new GoodsClass(6L, "学院");
      menu6.setListSub(new ArrayList<GoodsClass>());
      List<GoodsClass> list = new ArrayList<GoodsClass>();
      list.add(menu1);
      list.add(menu5);
      list.add(menu2);
      list.add(menu3);
      // 2.0.5版本隐藏 好店栏目
      if (!VersionUtil.greaterThan_2_0_5(acceptData.getPlatform(), acceptData.getVersion())) {
         list.add(menu3);
      }
      // 2.0.6版本增加 学院栏目
      if (VersionUtil.greaterThan_2_0_6(acceptData.getPlatform(), acceptData.getVersion())) {
         list.add(menu6);
      }
      list.add(menu4);
      JSONObject data = new JSONObject();
      data.put("list", JsonUtil.getApiCommonGson().toJson(list));
      out.print(JsonUtil.loadTrueResult(data));
   }
   /**
    * 动态商品列表
    *
    * @param acceptData
    * @param page
    * @param cid
    * @param subId
    * @param out
    */
   @RequestMapping(value = "getList", method = RequestMethod.POST)
   public void getList(AcceptData acceptData, Integer page, Long cid, Long subId, PrintWriter out) {
      if (cid == null) {
         out.print(JsonUtil.loadFalseResult("主分类id不能为空"));
         return;
      }
      if (cid != null) {
         if (cid == 5) { // 活动主题
            getSpecialList(acceptData, page, subId, out);
            return;
         } else if (cid == 6) { // 学院
            getArticleList(acceptData, page, null, false, out);
            return;
         }
      }
      long count = 0;
      int platform = 1;
      if ("ios".equalsIgnoreCase(acceptData.getPlatform())) {
         platform = 2;
      }
      int version = Integer.parseInt(acceptData.getVersion());
      List<DynamicInfo> list = dynamicInfoService.queryV2(platform, version, (page - 1) * Constant.PAGE_SIZE,
            Constant.PAGE_SIZE, cid, subId);
      if (list == null) {
         list = new ArrayList<DynamicInfo>();
      } else {
         count = dynamicInfoService.count(cid, subId);
      }
      JSONObject data = new JSONObject();
      data.put("count", count);
      data.put("list", getGson().toJson(list));
      out.print(JsonUtil.loadTrueResult(data));
   }
   /**
    * 活动列表
    *
    * @param acceptData
    * @param out
    */
   private void getSpecialList(AcceptData acceptData, Integer page, Long subId, PrintWriter out) {
      if (subId == null) {
         out.print(JsonUtil.loadFalseResult("分类id不能为空"));
         return;
      }
      // 平台区分
      int platformCode = Constant.getPlatformCode(acceptData.getPlatform());
      List<String> listKey = new ArrayList<String>();
      if (subId == 1) { // 淘宝
         listKey.add("special_channel_tb");
      } else if (subId == 2) { // 京东
         listKey.add("special_channel_jd");
      } else if (subId == 3) { // 拼多多
         listKey.add("special_channel_pdd");
      } else { // 全部
         listKey.add("special_channel_tb");
         listKey.add("special_channel_jd");
         listKey.add("special_channel_pdd");
      }
      List<Special> list = specialService.listByPlaceKeyHasLabel((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE,
            listKey, platformCode, Integer.parseInt(acceptData.getVersion()));
      long time = System.currentTimeMillis();
      // 删除尚未启用的过期的
      for (int i = 0; i < list.size(); i++) {
         Special special = list.get(i);
         if (special.getState() == 1L) {
            list.remove(i--);
         } else {
            if (special.getStartTime() != null && special.getEndTime() != null)
               special.setTimeTask(true);
            else
               special.setTimeTask(false);
            if (special.isTimeTask()) {
               if (time < special.getStartTime().getTime() || time > special.getEndTime().getTime()) {
                  list.remove(i--);
               } else// 设置倒计时
               {
                  special.setCountDownTime((special.getEndTime().getTime() - time) / 1000);
               }
            }
            List<SpecialLabel> listLabels = special.getListLabels();
            if (listLabels != null && !listLabels.isEmpty()) {
               List<ClientTextStyleVO> labels = new ArrayList<>();
               for (SpecialLabel specialLabel : listLabels) {
                  labels.add(new ClientTextStyleVO(specialLabel.getName(), specialLabel.getBgColor()));
               }
               special.setLabels(labels);
            }
         }
      }
      long count = specialService.countByPlaceKeyList(listKey, platformCode,
            Integer.parseInt(acceptData.getVersion()));
      GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation();
      Gson gson = gsonBuilder.create();
      JSONObject data = new JSONObject();
      data.put("count", count);
      data.put("list", gson.toJson(list));
      out.print(JsonUtil.loadTrueResult(data));
   }
   
   /**
    * 时间处理
    *
    * @return
    */
   private Gson getGson() {
@@ -269,18 +308,18 @@
            String desc = "";
            if (value != null) {
               // 判断是否是同一天
               Calendar calendar = Calendar.getInstance();
               calendar.setTime(value);
               int y1 = calendar.get(Calendar.YEAR);//获取年份
               int d1 = calendar.get(Calendar.DAY_OF_YEAR);//获取年中第几天
               int y1 = calendar.get(Calendar.YEAR);// 获取年份
               int d1 = calendar.get(Calendar.DAY_OF_YEAR);// 获取年中第几天
               Date nowDate = new Date();
               Calendar calendar2 = Calendar.getInstance();
               calendar2.setTime(nowDate);
               int y2 = calendar2.get(Calendar.YEAR);//获取年份
               int d2 = calendar2.get(Calendar.DAY_OF_YEAR);//获取年中第几天
               int y2 = calendar2.get(Calendar.YEAR);// 获取年份
               int d2 = calendar2.get(Calendar.DAY_OF_YEAR);// 获取年中第几天
               long old = value.getTime();
               long now = nowDate.getTime();
               if (y1 == y2) {
@@ -288,9 +327,9 @@
                     long cha = now - old;
                     if (cha < 1000 * 60 * 2L) {
                        desc = "刚刚";
                     }else if (cha < 1000 * 60 * 60L) {
                     } else if (cha < 1000 * 60 * 60L) {
                        desc = (cha / (1000 * 60)) + "分钟前";
                     }else {
                     } else {
                        desc = (cha / (1000 * 60 * 60)) + "小时前";
                     }
                  } else if (d2 - d1 == 1) {
@@ -320,4 +359,122 @@
      Gson gson = gb.create();
      return gson;
   }
   /**
    * 活动列表
    *
    * @param acceptData
    * @param out
    */
   private void getArticleList(AcceptData acceptData, Integer page, String key, boolean search, PrintWriter out) {
      List<ArticleVO> list = articleOfficialService.queryValid((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, key);
      if (list != null) {
         for (ArticleVO article: list) {
            String tags = article.getTags();
            if (StringUtil.isNullOrEmpty(tags)) {
               continue;
            }
            String[] arrayTags = tags.split("\\s+");
            if (arrayTags == null || arrayTags.length == 0) {
               continue;
            }
            String[] arrayTagsColour = null;
            String tagsColour = article.getTagsColour();
            if (!StringUtil.isNullOrEmpty(tagsColour)) {
               arrayTagsColour = tagsColour.split("\\s+");
            }
            String color = "#FE0014";
            List<ClientTextStyleVO> labels = new ArrayList<ClientTextStyleVO>();
            for (int i = 0; i < arrayTags.length;i ++) {
               String tag = arrayTags[i];
               if (arrayTagsColour != null && arrayTagsColour.length == arrayTags.length) {
                  color = arrayTagsColour[i];
               }
               ClientTextStyleVO styleVO = new ClientTextStyleVO();
               styleVO.setColor(color);
               styleVO.setContent(tag);
               labels.add(styleVO);
            }
            article.setLabels(labels);
         }
      }
      GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation();
      Gson gson = gsonBuilder.create();
      JSONObject data = new JSONObject();
      if (page == 1 && !search) {
         List<SwiperPicture> banners = swiperPictureService.getByBannerCardAndVersion("article_banners",acceptData.getPlatform(), Integer.parseInt(acceptData.getVersion()));
         if (banners == null)
            banners = new ArrayList<>();
         data.put("banners", gson.toJson(banners));
         List<Special> listSpecial = specialService.listByVersion(0, Integer.MAX_VALUE, "article_specials",
               acceptData.getPlatform(), Integer.parseInt(acceptData.getVersion()));
         if (listSpecial == null)
            listSpecial = new ArrayList<>();
         for (Special special : listSpecial) {
            boolean needLogin = special.isJumpLogin();
            JumpDetailV2 jumpDetail = special.getJumpDetail();
            if (jumpDetail != null) {
               jumpDetail.setNeedLogin(needLogin);
               special.setJumpDetail(jumpDetail);
            }
         }
         data.put("specials", gson.toJson(listSpecial));
      }
      data.put("count", articleOfficialService.countValid(key));
      data.put("list", gson.toJson(list));
      out.print(JsonUtil.loadTrueResult(data));
   }
   /**
    * 文章搜索
    * @param acceptData
    * @param page
    * @param key
    * @param out
    */
   @RequestMapping(value = "readArticle", method = RequestMethod.POST)
   public void readArticle(AcceptData acceptData, String id, PrintWriter out) {
      if(StringUtil.isNullOrEmpty(id)) {
         out.print(JsonUtil.loadFalseResult("id不能为空"));
         return;
      }
      articleOfficialService.updateReadNum(id);
      out.print(JsonUtil.loadTrueResult("操作成功"));
   }
   /**
    * 文章搜索
    * @param acceptData
    * @param page
    * @param key
    * @param out
    */
   @RequestMapping(value = "searchArticle", method = RequestMethod.POST)
   public void searchArticle(AcceptData acceptData, Integer page, String key, PrintWriter out) {
      getArticleList(acceptData, page, key, true, out);
   }
   /**
    * 文章搜索
    * @param acceptData
    * @param page
    * @param key
    * @param out
    */
   @RequestMapping(value = "getArticleHot", method = RequestMethod.POST)
   public void getArticleHot(AcceptData acceptData, PrintWriter out) {
      JSONObject data = new JSONObject();
      data.put("words", configService.get("article_hot_words"));
      out.print(JsonUtil.loadTrueResult(data));
   }
}