admin
2025-02-25 30d8e227e8d823b6c38c3b9c90ac2df03b63befe
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/DynamicController.java
@@ -1,227 +1,239 @@
package com.yeshi.fanli.controller.client.v1;
import java.io.PrintWriter;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.yeshi.utils.JsonUtil;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.bus.clazz.GoodsClass;
import com.yeshi.fanli.entity.dynamic.DynamicInfo;
import com.yeshi.fanli.service.inter.common.JumpDetailV2Service;
import com.yeshi.fanli.service.inter.dynamic.DynamicInfoService;
import com.yeshi.fanli.service.inter.goods.TaoBaoGoodsBriefService;
import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.taobao.DaTaoKeUtil;
import net.sf.json.JSONObject;
/**
 * 动态
 *
 * @author Administrator
 *
 */
@Controller
@RequestMapping("api/v1/dynamic")
public class DynamicController {
   @Resource
   private HongBaoManageService hongBaoManageService;
   @Resource
   private TaoBaoGoodsBriefService taoBaoGoodsBriefService;
   @Resource
   private JumpDetailV2Service jumpDetailV2Service;
   @Resource
   private DynamicInfoService dynamicInfoService;
   /**
    * 查询顶部分类
    *
    * @param acceptData
    * @param page
    * @param cid
    * @param out
    */
   @RequestMapping(value = "getClass", method = RequestMethod.POST)
   public void getClass(AcceptData acceptData, Integer cid, PrintWriter out) {
      // ios 只返回子集分类
      if (cid != null) {
         List<GoodsClass> list = new ArrayList<GoodsClass>();
         switch (cid) {
         case 1:
            list.add(new GoodsClass(0L, "今日单品"));
            list.addAll(DaTaoKeUtil.goodsClasses);
            break;
         case 2:
            break;
         case 3:
            break;
         case 4:
            break;
         default:
            break;
         }
         JSONObject data = new JSONObject();
         data.put("list", JsonUtil.getApiCommonGson().toJson(list));
         out.print(JsonUtil.loadTrueResult(data));
         return;
      }
      // Android 返回分类以及顶部数据
      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>());
      List<GoodsClass> list = new ArrayList<GoodsClass>();
      list.add(menu1);
      list.add(menu2);
      list.add(menu3);
      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;
      }
      long count = 0;
      List<DynamicInfo> list = dynamicInfoService.query((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 id
    * @param uid
    * @param out
    */
   @RequestMapping(value = "shareRecord", method = RequestMethod.POST)
   public void shareRecord(AcceptData acceptData, String id, Long uid, PrintWriter out) {
      DynamicInfo dynamicInfo = dynamicInfoService.getById(id);
      if (dynamicInfo == null) {
         out.print(JsonUtil.loadFalseResult("该动态信息已不存在"));
         return;
      }
      Integer shareCount = dynamicInfo.getShareCount();
      dynamicInfo.setShareCount(shareCount + 1);
      dynamicInfoService.updateShareCount(dynamicInfo);
      JSONObject data = new JSONObject();
      data.put("shareCount", shareCount + 1);
      out.print(JsonUtil.loadTrueResult(data));
   }
   /**
    * 时间处理
    * @return
    */
   private Gson getGson() {
      GsonBuilder gb = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder());
      gb.excludeFieldsWithoutExposeAnnotation();
      gb.registerTypeAdapter(Date.class, new JsonSerializer<Date>() {
         @Override
         public JsonElement serialize(Date value, Type theType, JsonSerializationContext context) {
            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);//获取年中第几天
               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);//获取年中第几天
               long old = value.getTime();
               long now = nowDate.getTime();
               long oldDay = old/ (1000 * 60 * 60 * 24L);
               long nowDay = now / (1000 * 60 * 60 * 24L);
               if (y1 == y2 && d1 == d2) {//判断是不是同一年的同一天
                  long cha = now - old;
                  if (cha < 1000 * 60 * 2L)
                     desc = "刚刚";
                  else if (cha < 1000 * 60 * 60L)
                     desc = (cha / (1000 * 60)) + "分钟前";
                  else
                     desc = (cha / (1000 * 60 * 60)) + "小时前";
               } else if (nowDay - oldDay == 1) {
                  desc = "昨天";
               } else {
                  desc = (nowDay - oldDay) + "天前";
               }
               return new JsonPrimitive(desc);
            }
            return new JsonPrimitive("");
         }
      });
      Gson gson = gb.create();
      return gson;
   }
}
package com.yeshi.fanli.controller.client.v1;
import java.io.PrintWriter;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.yeshi.utils.JsonUtil;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.bus.clazz.GoodsClass;
import com.yeshi.fanli.entity.dynamic.DynamicInfo;
import com.yeshi.fanli.service.inter.common.JumpDetailV2Service;
import com.yeshi.fanli.service.inter.dynamic.DynamicInfoService;
import com.yeshi.fanli.service.inter.goods.TaoBaoGoodsBriefService;
import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.taobao.DaTaoKeUtil;
import net.sf.json.JSONObject;
/**
 * 动态
 *
 * @author Administrator
 *
 */
@Controller
@RequestMapping("api/v1/dynamic")
public class DynamicController {
   @Resource
   private HongBaoManageService hongBaoManageService;
   @Resource
   private TaoBaoGoodsBriefService taoBaoGoodsBriefService;
   @Resource
   private JumpDetailV2Service jumpDetailV2Service;
   @Resource
   private DynamicInfoService dynamicInfoService;
   /**
    * 查询顶部分类
    *
    * @param acceptData
    * @param page
    * @param cid
    * @param out
    */
   @RequestMapping(value = "getClass", method = RequestMethod.POST)
   public void getClass(AcceptData acceptData, Integer cid, PrintWriter out) {
      // ios 只返回子集分类
      if (cid != null) {
         List<GoodsClass> list = new ArrayList<GoodsClass>();
         switch (cid) {
         case 1:
            list.add(new GoodsClass(0L, "今日单品"));
            list.addAll(DaTaoKeUtil.goodsClasses);
            break;
         case 2:
            break;
         case 3:
            break;
         case 4:
            break;
         default:
            break;
         }
         JSONObject data = new JSONObject();
         data.put("list", JsonUtil.getApiCommonGson().toJson(list));
         out.print(JsonUtil.loadTrueResult(data));
         return;
      }
      // Android 返回分类以及顶部数据
      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>());
      List<GoodsClass> list = new ArrayList<GoodsClass>();
      list.add(menu1);
      list.add(menu2);
      list.add(menu3);
      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;
      }
      long count = 0;
      List<DynamicInfo> list = dynamicInfoService.query((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 id
    * @param uid
    * @param out
    */
   @RequestMapping(value = "shareRecord", method = RequestMethod.POST)
   public void shareRecord(AcceptData acceptData, String id, Long uid, PrintWriter out) {
      DynamicInfo dynamicInfo = dynamicInfoService.getById(id);
      if (dynamicInfo == null) {
         out.print(JsonUtil.loadFalseResult("该动态信息已不存在"));
         return;
      }
      Integer shareCount = dynamicInfo.getShareCount();
      dynamicInfo.setShareCount(shareCount + 1);
      dynamicInfoService.updateShareCount(dynamicInfo);
      JSONObject data = new JSONObject();
      data.put("shareCount", shareCount + 1);
      out.print(JsonUtil.loadTrueResult(data));
   }
   /**
    * 时间处理
    * @return
    */
   private Gson getGson() {
      GsonBuilder gb = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder());
      gb.excludeFieldsWithoutExposeAnnotation();
      gb.registerTypeAdapter(Date.class, new JsonSerializer<Date>() {
         @Override
         public JsonElement serialize(Date value, Type theType, JsonSerializationContext context) {
            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);//获取年中第几天
               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);//获取年中第几天
               long old = value.getTime();
               long now = nowDate.getTime();
               if (y1 == y2) {
                  if (d1 == d2) {
                     long cha = now - old;
                     if (cha < 1000 * 60 * 2L) {
                        desc = "刚刚";
                     }else if (cha < 1000 * 60 * 60L) {
                        desc = (cha / (1000 * 60)) + "分钟前";
                     }else {
                        desc = (cha / (1000 * 60 * 60)) + "小时前";
                     }
                  } else if (d2 - d1 == 1) {
                     desc = "昨天";
                  } else {
                     desc = (d2 - d1) + "天前";
                  }
               } else {
                  int timeDistance = 0;
                  for (int i = y1; i < y2; i++) {
                     if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {
                        timeDistance += 366; // 闰年
                     } else {
                        timeDistance += 365; // 不是闰年
                     }
                  }
                  desc = timeDistance + (d2 - d1) + "天前";
               }
               return new JsonPrimitive(desc);
            }
            return new JsonPrimitive("");
         }
      });
      Gson gson = gb.create();
      return gson;
   }
}