From 744594ef1a2f530fc3e86ea9dc48b62247f79420 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 19 五月 2020 17:13:23 +0800 Subject: [PATCH] 饿了么绘图,添加口碑 --- fanli/src/main/java/com/yeshi/fanli/controller/client/v1/PushController.java | 324 +++++++++++++++++++++++++++++++++++------------------ 1 files changed, 213 insertions(+), 111 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/v1/PushController.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/v1/PushController.java index 9c055d3..e6ef213 100644 --- a/fanli/src/main/java/com/yeshi/fanli/controller/client/v1/PushController.java +++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/v1/PushController.java @@ -1,11 +1,13 @@ package com.yeshi.fanli.controller.client.v1; import java.io.PrintWriter; +import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.annotation.Resource; +import org.apache.commons.beanutils.PropertyUtils; import org.springframework.core.task.TaskExecutor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @@ -13,8 +15,13 @@ import org.yeshi.utils.JsonUtil; import org.yeshi.utils.taobao.TbImgUtil; +import com.google.gson.GsonBuilder; import com.yeshi.fanli.entity.accept.AcceptData; +import com.yeshi.fanli.entity.bus.activity.ActivityUser; import com.yeshi.fanli.entity.common.JumpDetailV2; +import com.yeshi.fanli.entity.dynamic.GoodsEvaluate; +import com.yeshi.fanli.entity.dynamic.ImgInfo; +import com.yeshi.fanli.entity.dynamic.ImgInfo.ImgEnum; import com.yeshi.fanli.entity.goods.CommonGoods; import com.yeshi.fanli.entity.push.DeviceActive; import com.yeshi.fanli.entity.push.DeviceTokenOPPO; @@ -29,6 +36,7 @@ import com.yeshi.fanli.service.inter.common.JumpDetailV2Service; import com.yeshi.fanli.service.inter.config.BusinessSystemService; import com.yeshi.fanli.service.inter.config.ConfigService; +import com.yeshi.fanli.service.inter.dynamic.GoodsEvaluateService; import com.yeshi.fanli.service.inter.push.DeviceActiveService; import com.yeshi.fanli.service.inter.push.DeviceTokenHWService; import com.yeshi.fanli.service.inter.push.DeviceTokenOPPOService; @@ -42,8 +50,11 @@ import com.yeshi.fanli.service.inter.push.PushService; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.StringUtil; +import com.yeshi.fanli.util.TimeUtil; import com.yeshi.fanli.util.annotation.RequestSerializableByKey; import com.yeshi.fanli.util.factory.JumpDetailParamsFactory; +import com.yeshi.fanli.vo.msg.ClientTextStyleVO; +import com.yeshi.fanli.vo.push.PushRecommendVO; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @@ -95,6 +106,10 @@ @Resource private DeviceTokenXMService deviceTokenXMService; + + @Resource + private GoodsEvaluateService goodsEvaluateService; + @RequestMapping(value = "callback", method = RequestMethod.POST) public void callback(AcceptData acceptData, String pushId, PrintWriter out) { @@ -199,127 +214,138 @@ */ @RequestMapping(value = "/gethistory", method = RequestMethod.POST) public void getHistory(AcceptData acceptData, Long uid, String deviceToken, int page, PrintWriter out) { - long count = 0; - List<PushGoods> list = null; JSONArray resultList = new JSONArray(); - DeviceActive deviceActive = deviceActiveService.getDeviceByDeviceAndPlatform(acceptData.getDevice(), deviceToken, acceptData.getPlatform()); - if (deviceActive != null) { - - // 璁惧娉ㄥ唽鏃堕棿 - Date createTime = deviceActive.getCreateTime(); - count = pushGoodsService.countHistoryByPushTime(uid, createTime); - - int pageSize = Constant.PAGE_SIZE; - - list = pushGoodsService.listHistoryByPushTime((page - 1) * pageSize, pageSize, uid, createTime); - if (list != null && list.size() > 0) { - for (PushGoods pushGoods : list) { - JSONObject result = new JSONObject(); - - Long pushId = pushGoods.getId(); - String picture = pushGoods.getPicture(); - String alertContent = pushGoods.getAlertContent(); - Date pushTime = pushGoods.getPushTime(); - - result.put("content", alertContent); - result.put("pushtime", pushTime.getTime()); - - // 缁熻鍟嗗搧鏁伴噺 - long totalgoods = 0; - // 鍟嗗搧id - CommonGoods commonGoods = null; - - if (StringUtil.isNullOrEmpty(picture)) { - try { - List<PushGoodsGroup> listGroup = pushGoodsGroupService.getAllInfoByPushId(pushId); - - if (listGroup != null && listGroup.size() > 0) { - - totalgoods = listGroup.size(); - - PushGoodsGroup pushGoodsGroup = listGroup.get(0); - if (pushGoodsGroup != null) { - commonGoods = pushGoodsGroup.getCommonGoods(); - if (commonGoods != null) { - picture = commonGoods.getPicture(); - } - } - } - } catch (PushGoodsGroupException e) { - e.printStackTrace(); - } - } - - result.put("picture", TbImgUtil.getTBSize320Img(picture)); - - String fontColor1 = "#666666"; - String fontColor2 = "#E5005C"; - JSONArray array = new JSONArray(); - - JSONObject contentJson1 = new JSONObject(); - contentJson1.put("color", fontColor1); - contentJson1.put("content", "鏈鎺ㄨ崘鍏�"); - - JSONObject contentJson2 = new JSONObject(); - contentJson2.put("color", fontColor2); - contentJson2.put("content", totalgoods); - - JSONObject contentJson3 = new JSONObject(); - contentJson3.put("color", fontColor1); - contentJson3.put("content", "涓晢鍝�"); - - array.add(contentJson1); - array.add(contentJson2); - array.add(contentJson3); - - result.put("totalwords", array); - - String params = ""; - - JumpDetailV2 jumpDetail = null; - if (totalgoods == 1) { - params = JumpDetailParamsFactory.createGoodsParams(commonGoods.getGoodsId(), - commonGoods.getGoodsType()); - // 鍗曚釜鍟嗗搧璺宠浆鍟嗗搧璇︽儏 - jumpDetail = jumpDetailV2Service.getByTypeCache("goodsdetail", - Constant.getPlatformCode(acceptData.getPlatform()), - Integer.parseInt(acceptData.getVersion())); - - } else { - String url = configService.get(ConfigKeyEnum.pushGoodsDetails.getKey()); - if (url == null) { - url = ""; - } - url = url + "?id=" + pushId; - - params = JumpDetailParamsFactory.createWEBParams(url); - - // 璺宠浆鎺ㄨ崘璇︽儏 - jumpDetail = jumpDetailV2Service.getByTypeCache("web", - Constant.getPlatformCode(acceptData.getPlatform()), - Integer.parseInt(acceptData.getVersion())); - } - result.put("params", params); - result.put("jumpDetail", jumpDetail); - - resultList.add(result); - } - } + if (deviceActive == null) { + JSONObject resultJson = new JSONObject(); + resultJson.put("count", count); + resultJson.put("result_list", resultList); + out.print(JsonUtil.loadTrueResult(resultJson)); + return; } + // 璁惧娉ㄥ唽鏃堕棿 + Date createTime = deviceActive.getCreateTime(); + count = pushGoodsService.countHistoryByPushTime(uid, createTime); + + int pageSize = Constant.PAGE_SIZE; + List<PushGoods> list = pushGoodsService.listHistoryByPushTime((page - 1) * pageSize, pageSize, uid, createTime); + if (list == null) + list = new ArrayList<>(); + + for (PushGoods pushGoods : list) { + Long id = pushGoods.getId(); + + PushRecommendVO vo = new PushRecommendVO(); + vo.setTitle(pushGoods.getTitle()); + vo.setContent(pushGoods.getContent()); + vo.setPicture(pushGoods.getPicture()); + vo.setPushtime(pushGoods.getPushTime().getTime()); + + Integer scanNum = pushGoods.getScanNum(); + if (scanNum == null) { +// vo.setScanNum("0"); + } else if (scanNum >= 10000) { + double num = scanNum; + String numMidea = String.format("%.1f", num / 10000); + vo.setScanNum(numMidea + "涓�"); + } else { + vo.setScanNum(scanNum +""); + } + + + String params = ""; + String nickName = ""; + JumpDetailV2 jumpDetail = null; + List<ClientTextStyleVO> totalwords = new ArrayList<ClientTextStyleVO>(); + + Integer type = pushGoods.getType(); + if (type == null || type == PushGoods.TYPE_GOODS) { + long totalgoods = 0; + CommonGoods goods = null; + try { + List<PushGoodsGroup> listGroup = pushGoodsGroupService.getAllInfoByPushId(id); + if (listGroup != null && listGroup.size() > 0) { + totalgoods = listGroup.size(); + PushGoodsGroup pushGoodsGroup = listGroup.get(0); + if (pushGoodsGroup != null) { + goods = pushGoodsGroup.getCommonGoods(); + } + } + } catch (PushGoodsGroupException e) { + e.printStackTrace(); + } + + if (goods != null && StringUtil.isNullOrEmpty(vo.getPicture())) { + vo.setPicture(TbImgUtil.getTBSize320Img(goods.getPicture())); + } + + if (totalgoods == 1) { + params = JumpDetailParamsFactory.createGoodsParams(goods.getGoodsId(), goods.getGoodsType()); + jumpDetail = jumpDetailV2Service.getByTypeCache("goodsdetail",Constant.getPlatformCode(acceptData.getPlatform()), + Integer.parseInt(acceptData.getVersion())); + } else { + String url = configService.get(ConfigKeyEnum.pushGoodsDetails.getKey()); + if (url == null) { + url = ""; + } + url = url + "?id=" + id; + + params = JumpDetailParamsFactory.createWEBParams(url); + jumpDetail = jumpDetailV2Service.getByTypeCache("web",Constant.getPlatformCode(acceptData.getPlatform()), + Integer.parseInt(acceptData.getVersion())); + } + + totalwords.add(new ClientTextStyleVO("鏈鎺ㄨ崘鍏�", "#666666")); + totalwords.add(new ClientTextStyleVO(totalgoods + "", "#E5005C")); + totalwords.add(new ClientTextStyleVO("涓晢鍝�", "#666666")); + } else if (type == PushGoods.TYPE_ACTIVITY) { + GoodsEvaluate goodsEvaluate = goodsEvaluateService.getById(pushGoods.getOtherId()); + if (goodsEvaluate == null) { + continue; + } + ActivityUser user = goodsEvaluate.getUser(); + if (user != null) { + nickName = user.getNickName(); + } + + if (StringUtil.isNullOrEmpty(vo.getPicture()) && goodsEvaluate.getImgList() != null && + goodsEvaluate.getImgList().size() > 0) { + for (ImgInfo tmgInfo: goodsEvaluate.getImgList()) { + if (tmgInfo.getType() == ImgEnum.img || tmgInfo.getType() == ImgEnum.activity) { + vo.setPicture(tmgInfo.getUrl()); + } + } + } + + String url = configService.get(ConfigKeyEnum.pushActivityLink.getKey()); + if (url == null) { + url = ""; + } + url = url + "?id=" + id; + params = JumpDetailParamsFactory.createWEBParams(url); + jumpDetail = jumpDetailV2Service.getByTypeCache("web", + Constant.getPlatformCode(acceptData.getPlatform()), Integer.parseInt(acceptData.getVersion())); + } else { + continue; + } + vo.setNickName(nickName); + vo.setParams(params); + vo.setJumpDetail(jumpDetail); + vo.setTotalwords(totalwords); + resultList.add(vo); + } + JSONObject resultJson = new JSONObject(); resultJson.put("count", count); resultJson.put("result_list", resultList); - out.print(JsonUtil.loadTrueResult(resultJson)); - // 鍒楄〃鍙傛暟銆佽澶囧弬鏁颁俊鎭笉涓虹┖ - if (list != null && list.size() > 0 && deviceActive != null) { + if (list != null && list.size() > 0 && deviceActive != null) { final List<PushGoods> listPush = list; // 璁板綍璁块棶淇℃伅 executor.execute(new Runnable() { @@ -327,7 +353,6 @@ public void run() { try { Long deviceId = deviceActive.getId(); - for (PushGoods pushGoods : listPush) { List<PushGoodsRecord> listRecord = pushGoodsRecordService .listByPushIdAndDeviceId(pushGoods.getId(), deviceId); @@ -342,11 +367,9 @@ pushGoodsRecord.setDeviceActive(deviceActive); pushGoodsRecordService.insert(pushGoodsRecord); } - } catch (Exception e) { e.printStackTrace(); } - } }); } @@ -391,4 +414,83 @@ out.print(JsonUtil.loadTrueResult("")); } + /** + * 鑾峰彇鎺ㄩ�佹椿鍔ㄨ鎯� + * @param callback + * @param acceptData + * @param uid + * @param id + * @param out + */ + @RequestMapping("getPushDetail") + public void getPushDetail(String callback, AcceptData acceptData, Long uid, Long id, PrintWriter out) { + if (uid == null || id == null) { + JsonUtil.printMode(out, callback,JsonUtil.loadFalseResult("鍙傛暟涓嶅畬鏁�")); + return; + } + + PushGoods pushGoods = pushGoodsService.selectByPrimaryKey(id); + if (pushGoods == null || StringUtil.isNullOrEmpty(pushGoods.getOtherId())) { + JsonUtil.printMode(out, callback,JsonUtil.loadFalseResult("璇ユ椿鍔ㄥ凡涓嬫灦")); + return; + } + + GoodsEvaluate goodsEvaluate = goodsEvaluateService.getById(pushGoods.getOtherId()); + if (goodsEvaluate == null) { + JsonUtil.printMode(out, callback,JsonUtil.loadFalseResult("璇ユ椿鍔ㄥ凡涓嬫灦")); + return; + } + + String scanResult = null; + Integer scanNum = pushGoods.getScanNum(); + if (scanNum == null) { + } else if (scanNum >= 10000) { + double num = scanNum; + String numMidea = String.format("%.1f", num / 10000); + scanResult = numMidea + "涓�"; + } else { + scanResult = scanNum +""; + } + + String jumpLink = configService.get(ConfigKeyEnum.activityDetailLink.getKey()) + "?type=%s&id=%s"; + jumpLink = String.format(jumpLink, "circle", goodsEvaluate.getId()); + if (!StringUtil.isNullOrEmpty(goodsEvaluate.getJumpLink())) { + goodsEvaluate.setJumpLink(jumpLink); + } + + List<ImgInfo> imgListNew = new ArrayList<>(); + List<ImgInfo> imgList = goodsEvaluate.getImgList(); + if (imgList != null && imgList.size() > 0) { + for (ImgInfo imgInfo: imgList) { + if (imgInfo.getType() != ImgEnum.img || imgInfo.getType() == ImgEnum.activity) { + ImgInfo imgInfoNew = new ImgInfo(); + try { + PropertyUtils.copyProperties(imgInfoNew, imgInfo); + } catch (Exception e) { + e.printStackTrace(); + continue; + } + + if (!StringUtil.isNullOrEmpty(imgInfoNew.getActivityUrl())) { + imgInfoNew.setActivityUrl(jumpLink); + } + + imgListNew.add(imgInfoNew); + continue; + } + imgListNew.add(imgInfo); + } + } + goodsEvaluate.setImgList(imgListNew); + + GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation(); + + JSONObject json = new JSONObject(); + json.put("title", pushGoods.getTitle()); + json.put("content", pushGoods.getContent()); + json.put("pushTime", TimeUtil.formatDate(pushGoods.getPushTime())); + json.put("scanNum", scanResult); + json.put("detailInfo", gsonBuilder.create().toJson(goodsEvaluate)); + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(json)); + } } -- Gitblit v1.8.0