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 list = new ArrayList(); 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 listSub = new ArrayList(); 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 menu3 = new GoodsClass(3L, "好店"); menu3.setListSub(new ArrayList()); GoodsClass menu4 = new GoodsClass(4L, "邀请"); menu4.setListSub(new ArrayList()); List list = new ArrayList(); 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 list = dynamicInfoService.query((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, cid, subId); if (list == null) { list = new ArrayList(); } 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() { @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; } }