From 554de444b87aab5f93cb1593a8095612cf9479a7 Mon Sep 17 00:00:00 2001 From: yujian <yujian@163.com> Date: 星期二, 09 六月 2020 17:34:30 +0800 Subject: [PATCH] 订单 --- fanli/src/main/java/com/yeshi/fanli/controller/client/v2/DynamicControllerV2.java | 2115 +++++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 1,635 insertions(+), 480 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/DynamicControllerV2.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/DynamicControllerV2.java index d557dad..91839a7 100644 --- a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/DynamicControllerV2.java +++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/DynamicControllerV2.java @@ -1,480 +1,1635 @@ -package com.yeshi.fanli.controller.client.v2; - -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.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; - -/** - * 鍔ㄦ�� - * - * @author Administrator - * - */ -@Controller -@RequestMapping("api/v2/dynamic") -public class DynamicControllerV2 { - - @Resource - private HongBaoManageService hongBaoManageService; - - @Resource - private TaoBaoGoodsBriefService taoBaoGoodsBriefService; - - @Resource - private JumpDetailV2Service jumpDetailV2Service; - - @Resource - private DynamicInfoService dynamicInfoService; - - @Resource - private SpecialService specialService; - - @Resource - private ArticleOfficialService articleOfficialService; - - @Resource - private SwiperPictureService swiperPictureService; - - @Resource - private ConfigService configService; - - - /** - * 鏌ヨ椤堕儴鍒嗙被 - * - * @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; - 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; - } - 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>()); - - GoodsClass menu5 = new GoodsClass(5L, "娲诲姩"); - List<GoodsClass> sub5 = new ArrayList<GoodsClass>(); - sub5.add(new GoodsClass(0L, "鍏ㄩ儴")); - sub5.add(new GoodsClass(1L, "娣樺疂")); - 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); - - // 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("涓诲垎绫籭d涓嶈兘涓虹┖")); - 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() { - 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; - } - - /** - * 娲诲姩鍒楄〃 - * - * @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)); - } - -} +package com.yeshi.fanli.controller.client.v2; + +import java.io.IOException; +import java.io.InputStream; +import java.io.PrintWriter; +import java.lang.reflect.Type; +import java.math.BigDecimal; +import java.net.MalformedURLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +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; +import org.springframework.web.bind.annotation.RequestMethod; +import org.yeshi.utils.HttpUtil; +import org.yeshi.utils.JsonUtil; +import org.yeshi.utils.QRCodeUtil; +import org.yeshi.utils.entity.FileUploadResult; +import org.yeshi.utils.tencentcloud.COSManager; + +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.dto.jd.JDCouponInfo; +import com.yeshi.fanli.entity.accept.AcceptData; +import com.yeshi.fanli.entity.bus.clazz.GoodsClass; +import com.yeshi.fanli.entity.bus.homemodule.CommonShareInfo; +import com.yeshi.fanli.entity.bus.homemodule.CommonShareInfo.CommonShareInfoEnum; +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.bus.user.UserExtraTaoBaoInfo; +import com.yeshi.fanli.entity.bus.user.UserInfo; +import com.yeshi.fanli.entity.common.JumpDetailV2; +import com.yeshi.fanli.entity.dynamic.CommentInfo; +import com.yeshi.fanli.entity.dynamic.DynamicInfo; +import com.yeshi.fanli.entity.dynamic.GoodsEvaluate; +import com.yeshi.fanli.entity.dynamic.GoodsEvaluate.EvaluateEnum; +import com.yeshi.fanli.entity.dynamic.ImgInfo; +import com.yeshi.fanli.entity.dynamic.ImgInfo.ImgEnum; +import com.yeshi.fanli.entity.jd.JDGoods; +import com.yeshi.fanli.entity.system.ConfigKeyEnum; +import com.yeshi.fanli.entity.taobao.TaoBaoLink; +import com.yeshi.fanli.exception.goods.ConvertLinkExceptionException; +import com.yeshi.fanli.exception.share.ShareGoodsException; +import com.yeshi.fanli.log.LogHelper; +import com.yeshi.fanli.service.inter.common.JumpDetailV2Service; +import com.yeshi.fanli.service.inter.config.ConfigService; +import com.yeshi.fanli.service.inter.count.DailyCountMomentsService; +import com.yeshi.fanli.service.inter.dynamic.ArticleOfficialService; +import com.yeshi.fanli.service.inter.dynamic.DynamicInfoService; +import com.yeshi.fanli.service.inter.dynamic.GoodsEvaluateService; +import com.yeshi.fanli.service.inter.goods.ShareGoodsService; +import com.yeshi.fanli.service.inter.goods.TaoBaoGoodsBriefService; +import com.yeshi.fanli.service.inter.homemodule.CommonShareInfoService; +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.service.inter.user.QrCodeService; +import com.yeshi.fanli.service.inter.user.UserInfoExtraService; +import com.yeshi.fanli.service.inter.user.UserInfoService; +import com.yeshi.fanli.service.inter.user.cloud.UserCloudService; +import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService; +import com.yeshi.fanli.service.manger.goods.ConvertLinkManager; +import com.yeshi.fanli.util.Constant; +import com.yeshi.fanli.util.FilePathEnum; +import com.yeshi.fanli.util.ImageUtil; +import com.yeshi.fanli.util.MoneyBigDecimalUtil; +import com.yeshi.fanli.util.StringUtil; +import com.yeshi.fanli.util.TimeUtil; +import com.yeshi.fanli.util.VersionUtil; +import com.yeshi.fanli.util.cache.JDGoodsCacheUtil; +import com.yeshi.fanli.util.jd.JDApiUtil; +import com.yeshi.fanli.util.jd.JDUtil; +import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil; +import com.yeshi.fanli.util.pinduoduo.PinDuoDuoUtil; +import com.yeshi.fanli.util.taobao.DaTaoKeUtil; +import com.yeshi.fanli.util.taobao.TaoBaoUtil; +import com.yeshi.fanli.vo.dynamic.ArticleVO; +import com.yeshi.fanli.vo.goods.GoodsDetailVO; +import com.yeshi.fanli.vo.homemodule.BannerVO; +import com.yeshi.fanli.vo.homemodule.SpecialVO; +import com.yeshi.fanli.vo.msg.ClientTextStyleVO; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +/** + * 鍔ㄦ�� + * + * @author Administrator + * + */ +@Controller +@RequestMapping("api/v2/dynamic") +public class DynamicControllerV2 { + + @Resource + private HongBaoManageService hongBaoManageService; + + @Resource + private TaoBaoGoodsBriefService taoBaoGoodsBriefService; + + @Resource + private JumpDetailV2Service jumpDetailV2Service; + + @Resource + private DynamicInfoService dynamicInfoService; + + @Resource + private SpecialService specialService; + + @Resource + private ArticleOfficialService articleOfficialService; + + @Resource + private SwiperPictureService swiperPictureService; + + @Resource + private ConfigService configService; + + @Resource + private GoodsEvaluateService goodsEvaluateService; + + @Resource + private UserInfoService userInfoService; + @Resource + private UserInfoExtraService userInfoExtraService; + + @Resource + private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService; + + @Resource + private JDGoodsCacheUtil jdGoodsCacheUtil; + + @Resource + private QrCodeService qrCodeService; + + @Resource + private ConvertLinkManager convertLinkManager; + + @Resource + private ShareGoodsService shareGoodsService; + + @Resource + private DailyCountMomentsService dailyCountMomentsService; + + @Resource + private CommonShareInfoService commonShareInfoService; + + @Resource + private UserCloudService userCloudService; + + @Resource(name = "taskExecutor") + private TaskExecutor executor; + + private final static long TYPE_REXIAO = 1;// 鐑攢 + private final static long TYPE_TUIJIAN = 2;// 鎺ㄨ崘 + private final static long TYPE_HAODIAN = 3;// 濂藉簵 + private final static long TYPE_YAOQING = 4;// 閭�璇� + private final static long TYPE_HUODONG = 5;// 娲诲姩 + private final static long TYPE_XUEYUAN = 6;// 瀛﹂櫌 + private final static long TYPE_FAQUAN = 7;// 鍙戝湀 + private final static long TYPE_SUCAI = 8;// 绱犳潗 + + private static Map<Long, GoodsClass> classMap = null; + + private Map<Long, GoodsClass> getAllDynamicClass() { + if (classMap != null && classMap.size() > 0) + return classMap; + classMap = new HashMap<Long, GoodsClass>(); + List<GoodsClass> listSub = new ArrayList<GoodsClass>(); + listSub.add(new GoodsClass(0L, "浠婃棩鍗曞搧")); + listSub.addAll(DaTaoKeUtil.goodsClasses); + + GoodsClass menu = new GoodsClass(TYPE_REXIAO, "鐑攢"); + menu.setListSub(listSub); + classMap.put(TYPE_REXIAO, menu); + + menu = new GoodsClass(TYPE_TUIJIAN, "鎺ㄨ崘"); + menu.setListSub(new ArrayList<GoodsClass>()); + classMap.put(TYPE_TUIJIAN, menu); + + menu = new GoodsClass(TYPE_HAODIAN, "濂藉簵"); + menu.setListSub(new ArrayList<GoodsClass>()); + classMap.put(TYPE_HAODIAN, menu); + + menu = new GoodsClass(TYPE_YAOQING, "閭�璇�"); + menu.setListSub(new ArrayList<GoodsClass>()); + classMap.put(TYPE_YAOQING, menu); + + menu = new GoodsClass(TYPE_HUODONG, "娲诲姩"); + List<GoodsClass> sub5 = new ArrayList<GoodsClass>(); + sub5.add(new GoodsClass(0L, "鍏ㄩ儴")); + sub5.add(new GoodsClass(1L, "娣樺疂")); + sub5.add(new GoodsClass(2L, "浜笢")); + sub5.add(new GoodsClass(3L, "鎷煎澶�")); + menu.setListSub(sub5); + classMap.put(TYPE_HUODONG, menu); + + menu = new GoodsClass(TYPE_XUEYUAN, "瀛﹂櫌"); + menu.setListSub(new ArrayList<GoodsClass>()); + classMap.put(TYPE_XUEYUAN, menu); + + menu = new GoodsClass(TYPE_FAQUAN, "鍙戝湀"); + menu.setListSub(new ArrayList<GoodsClass>()); + classMap.put(TYPE_FAQUAN, menu); + + menu = new GoodsClass(TYPE_SUCAI, "绱犳潗"); + menu.setListSub(new ArrayList<GoodsClass>()); + classMap.put(TYPE_SUCAI, menu); + return classMap; + } + + /** + * 鏌ヨ椤堕儴鍒嗙被 + * + * @param acceptData + * @param page + * @param cid + * @param out + */ + @RequestMapping(value = "getClass", method = RequestMethod.POST) + public void getClass(AcceptData acceptData, Long cid, PrintWriter out) { + // ios 鍙繑鍥炲瓙闆嗗垎绫� + if (cid != null) { + Map<Long, GoodsClass> map = getAllDynamicClass(); + JSONObject data = new JSONObject(); + data.put("list", JsonUtil.getApiCommonGson().toJson(map.get(cid).getListSub())); + 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>()); + + GoodsClass menu5 = new GoodsClass(5L, "娲诲姩"); + List<GoodsClass> sub5 = new ArrayList<GoodsClass>(); + sub5.add(new GoodsClass(0L, "鍏ㄩ儴")); + sub5.add(new GoodsClass(1L, "娣樺疂")); + 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>(); + + Map<Long, GoodsClass> map = getAllDynamicClass(); + + if (VersionUtil.greaterThan_2_0_7(acceptData.getPlatform(), acceptData.getVersion())) { + // 2.0.7杩斿洖鍙戝湀+娲诲姩+瀛﹂櫌+绱犳潗 + list.add(map.get(TYPE_FAQUAN)); + list.add(map.get(TYPE_HUODONG)); + // list.add(map.get(TYPE_XUEYUAN)); + list.add(map.get(TYPE_SUCAI)); + } else if (VersionUtil.greaterThan_2_0_6(acceptData.getPlatform(), acceptData.getVersion())) { + // 2.0.6杩斿洖鐑攢+娲诲姩+鎺ㄨ崘+瀛﹂櫌+閭�璇� + list.add(map.get(TYPE_REXIAO)); + list.add(map.get(TYPE_HUODONG)); + list.add(map.get(TYPE_TUIJIAN)); + // list.add(map.get(TYPE_XUEYUAN)); + list.add(map.get(TYPE_YAOQING)); + } else if (VersionUtil.greaterThan_2_0_5(acceptData.getPlatform(), acceptData.getVersion())) { + // 2.0.5杩斿洖鐑攢+娲诲姩+鎺ㄨ崘+閭�璇� + list.add(map.get(TYPE_REXIAO)); + list.add(map.get(TYPE_HUODONG)); + list.add(map.get(TYPE_TUIJIAN)); + list.add(map.get(TYPE_YAOQING)); + } else { + // 2.0.5浠ュ墠鐨勭増鏈繑鍥炵儹閿�+娲诲姩+鎺ㄨ崘+濂藉簵+閭�璇� + list.add(map.get(TYPE_REXIAO)); + list.add(map.get(TYPE_HUODONG)); + list.add(map.get(TYPE_TUIJIAN)); + list.add(map.get(TYPE_HAODIAN)); + list.add(map.get(TYPE_YAOQING)); + } + + 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("涓诲垎绫籭d涓嶈兘涓虹┖")); + 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<SpecialVO> 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) { + continue; + } + + // 鏄惁娲诲姩宸茶繃鏈� + if (special.getStartTime() != null && special.getEndTime() != null) { + if (time < special.getStartTime().getTime() || time > special.getEndTime().getTime()) { + continue; + } else { + special.setTimeTask(true); + 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() { + 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; + } + + /** + * 娲诲姩鍒楄〃 + * + * @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<BannerVO> banners = swiperPictureService.getByBannerCardAndVersion("article_banners", + acceptData.getPlatform(), Integer.parseInt(acceptData.getVersion())); + if (banners == null) + banners = new ArrayList<>(); + data.put("banners", gson.toJson(banners)); + + List<SpecialVO> listSpecial = specialService.listByVersion(0, Integer.MAX_VALUE, "article_specials", + acceptData.getPlatform(), Integer.parseInt(acceptData.getVersion())); + if (listSpecial == null) + listSpecial = new ArrayList<>(); + + for (SpecialVO 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(ConfigKeyEnum.articleHotWords.getKey())); + out.print(JsonUtil.loadTrueResult(data)); + } + + /** + * 2.0.7鐗堟湰鍚庤皟鐢� 鍔ㄦ�佸垪琛紙閫傜敤浜庡彂鍦堜笌绱犳潗锛� + * + * @param acceptData + * @param page + * @param cid + * @param subId + * @param out + */ + @RequestMapping(value = "getDynamicList", method = RequestMethod.POST) + public void getDynamicListNew(AcceptData acceptData, Integer page, Long cid, String subId, PrintWriter out) { + try { + int type = 1; + if (cid == TYPE_FAQUAN) { + type = 1; + } else if (cid == TYPE_SUCAI) { + type = 2; + } + List<GoodsEvaluate> listNew = new ArrayList<GoodsEvaluate>(); + + List<GoodsEvaluate> list = goodsEvaluateService.queryMaterialsCache((page - 1) * Constant.PAGE_SIZE, + Constant.PAGE_SIZE, type); + + if (!VersionUtil.greaterThan_2_1_1(acceptData.getPlatform(), acceptData.getVersion())) { + listNew.addAll(list); + } else if (list.size() > 0) { // 娲诲姩鍥剧墖涓嶅厑璁歌烦杞� + + // 浜戝彂鍗曟槸鍚﹀紑鍚� + String cloudState = configService.getByVersion(ConfigKeyEnum.robotCloudOpen.getKey(), acceptData.getPlatform(), + Integer.parseInt(acceptData.getVersion())); + boolean cloudOpen = false; + if (!StringUtil.isNullOrEmpty(cloudState) && "1".equals(cloudState)) { + cloudOpen = true; + } + + for (GoodsEvaluate goodsEvaluate : list) { + EvaluateEnum evaluateEnum = goodsEvaluate.getType(); + // 鍗曞搧 娲诲姩鍙互涓�閿簯鍙戝崟 + if (cloudOpen && evaluateEnum == EvaluateEnum.activity || evaluateEnum == EvaluateEnum.single ) { + goodsEvaluate.setCloud(true); + } + + if (evaluateEnum != EvaluateEnum.activity) { + listNew.add(goodsEvaluate); + continue; + } + + GoodsEvaluate evaluateNew = new GoodsEvaluate(); + try { + PropertyUtils.copyProperties(evaluateNew, goodsEvaluate); + } catch (Exception e) { + e.printStackTrace(); + continue; + } + // 璺宠浆杩囨浮椤� + // String jumpLink = + // configService.get(ConfigKeyEnum.activityDetailLink.getKey()) + // + "?type=%s&id=%s"; + // jumpLink = String.format(jumpLink, "circle", + // evaluateNew.getId()); + // evaluateNew.setJumpLink(jumpLink); + + // 鍥剧墖鏁伴噺 + if (evaluateNew.getImgList() != null && evaluateNew.getImgList().size() > 0) { + int size = evaluateNew.getImgList().size(); + List<ImgInfo> listInfoNew = new ArrayList<ImgInfo>(); + + for (ImgInfo imgInfo : goodsEvaluate.getImgList()) { + if (imgInfo.getType() != ImgEnum.activity) { + listInfoNew.add(imgInfo); + continue; + } + ImgInfo infoNew = new ImgInfo(); + try { + PropertyUtils.copyProperties(infoNew, imgInfo); + } catch (Exception e) { + e.printStackTrace(); + continue; + } + infoNew.setType(ImgEnum.img); + // 鍥剧墖澶т簬涓�寮犳椂 鏄剧ず涔濆鏍煎浘 + if (size > 1) { + infoNew.setW(1); + infoNew.setH(1); + } + listInfoNew.add(infoNew); + } + evaluateNew.setImgList(listInfoNew); + } + listNew.add(evaluateNew); + } + } + + GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation(); + gsonBuilder.registerTypeAdapter(ImgEnum.class, new JsonSerializer<ImgEnum>() { + @Override + public JsonElement serialize(ImgEnum value, Type theType, JsonSerializationContext context) { + if (value == null) { + return new JsonPrimitive(""); + } else { + return new JsonPrimitive(value.getVlaue()); + } + } + }).registerTypeAdapter(BigDecimal.class, new JsonSerializer<BigDecimal>() { + @Override + public JsonElement serialize(BigDecimal value, Type theType, JsonSerializationContext context) { + if (value == null) { + return new JsonPrimitive(""); + } else { + // 淇濈暀2浣嶅皬鏁� + return new JsonPrimitive(MoneyBigDecimalUtil.getWithNoZera(value) + ""); + } + } + }).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 = gsonBuilder.create(); + long count = goodsEvaluateService.countValidMaterials(type); + + JSONArray jsonArray = new JSONArray(); + + String listStr = gson.toJson(listNew); + JSONArray array = JSONArray.fromObject(listStr); + for (int i = 0; i < array.size(); i++) { + Object object = array.get(i); + JSONObject json = JSONObject.fromObject(object); + Object shareNum = json.get("shareNum"); + if (shareNum != null) { + int num = Integer.parseInt(shareNum.toString()); + + if (num >= 100000000) { + double sales = num; + String salesCountMidea = String.format("%.1f", sales / 100000000); + json.put("shareNum", salesCountMidea + "浜�"); + } else if (num >= 10000) { + double sales = num; + String salesCountMidea = String.format("%.1f", sales / 10000); + json.put("shareNum", salesCountMidea + "涓�"); + } + } + jsonArray.add(json); + } + + JSONObject data = new JSONObject(); + data.put("count", count); + data.put("list", jsonArray); + out.print(JsonUtil.loadTrueResult(data)); + } catch (Exception e) { + e.printStackTrace(); + out.print(JsonUtil.loadFalseResult(1, "鏌ヨ淇℃伅澶辫触")); + LogHelper.errorDetailInfo(e); + } + + } + + /** + * + * @param acceptData + * @param uid + * @param id + * @param type + * 1-鏀惧ぇ 2-淇濆瓨 3-鍒嗕韩 + * @param goodsId + * @param goodsType + * @param out + */ + @RequestMapping(value = "evaluateShare", method = RequestMethod.POST) + public void evaluateShare(AcceptData acceptData, Long uid, String id, Integer type, String goodsId, + Integer goodsType, PrintWriter out) { + try { + if (uid == null) { + out.print(JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�")); + return; + } + + if (StringUtil.isNullOrEmpty(id) || type == null) { + out.print(JsonUtil.loadFalseResult("浼犻�掑弬鏁颁笉鑳戒负绌�")); + return; + } + + if (type == 1 && (StringUtil.isNullOrEmpty(goodsId) || goodsType == null)) { + out.print(JsonUtil.loadFalseResult("鍟嗗搧鍙傛暟涓嶈兘涓虹┖")); + return; + } + + GoodsEvaluate goodsEvaluate = goodsEvaluateService.getById(id); + if (goodsEvaluate == null) { + out.print(JsonUtil.loadFalseResult("璇ュ唴瀹瑰凡涓嶅瓨鍦�")); + return; + } + + UserInfo user = userInfoService.getUserByIdWithMybatis(uid); + if (user == null) { + out.print(JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�")); + return; + } + + if (user != null && user.getState() != UserInfo.STATE_NORMAL) { + out.print(JsonUtil.loadFalseResult(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC)); + return; + } + + UserExtraTaoBaoInfo taoBaoInfo = userExtraTaoBaoInfoService.getByUid(uid); + String relationId = null; + if (taoBaoInfo != null && taoBaoInfo.getRelationId() != null && taoBaoInfo.getRelationValid() != null + && taoBaoInfo.getRelationValid() == true) + relationId = taoBaoInfo.getRelationId(); + + if (StringUtil.isNullOrEmpty(relationId)) { + out.print(JsonUtil.loadFalseResult(2, "娣樺疂鏈巿鏉冿紝璇峰墠寰�\"鎴戠殑\"缁戝畾娣樺疂璐﹀彿")); + return; + } + + String inviteCode = userInfoExtraService.getInviteCodeByUid(uid); + if (StringUtil.isNullOrEmpty(inviteCode)) { + out.print(JsonUtil.loadFalseResult(1, "閭�璇风爜鏈縺娲�")); + return; + } + + List<ImgInfo> imgs = goodsEvaluate.getImgList(); + if (imgs == null) { + out.print(JsonUtil.loadFalseResult("璇ュ浘鐗囧唴瀹瑰凡涓嶅瓨鍦�")); + return; + } + + List<String> list = new ArrayList<>(); + Integer dynamicType = goodsEvaluate.getDynamicType(); + if (dynamicType == null || dynamicType.intValue() == 2) { + for (ImgInfo imgInfo : imgs) { + if (imgInfo.getType() == ImgEnum.goods || imgInfo.getType() == ImgEnum.video) + continue; + if (imgInfo.getType() == ImgEnum.img) + list.add(StringUtil.isNullOrEmpty(imgInfo.getUrlHD()) ? imgInfo.getUrl() : imgInfo.getUrlHD()); + else if (imgInfo.getType() == ImgEnum.activity) + if (!StringUtil.isNullOrEmpty(imgInfo.getActivityPic())) { + list.add(imgInfo.getActivityPic()); + } + } + } else { + // 鍗曞搧 + if (goodsEvaluate.getType() == EvaluateEnum.single) { + for (ImgInfo imgInfo : imgs) { + if (imgInfo.getType() == ImgEnum.video) + continue; + + GoodsDetailVO goodsVO = imgInfo.getGoodsVO(); + if (goodsVO == null) { + list.add(StringUtil.isNullOrEmpty(imgInfo.getUrlHD()) ? imgInfo.getUrl() + : imgInfo.getUrlHD()); + continue; + } + + String jumpLink = getJumpLink(goodsVO, user, relationId, inviteCode, imgInfo.getUrl()); + if (!StringUtil.isNullOrEmpty(jumpLink)) { + list.add(jumpLink); + } + } + + } else if (goodsEvaluate.getType() == EvaluateEnum.multiple) { + if (type == 1) { + for (ImgInfo imgInfo : imgs) { + if (imgInfo.getGoodsVO() != null) + if (imgInfo.getGoodsVO().getGoodsId().equalsIgnoreCase(goodsId) + && imgInfo.getGoodsVO().getGoodsType() == goodsType.intValue()) { + String jumpLink = getJumpLink(imgInfo.getGoodsVO(), user, relationId, inviteCode, + imgInfo.getUrl()); + if (!StringUtil.isNullOrEmpty(jumpLink)) { + list.add(jumpLink); + } + break; + } + } + } else if (type == 2 || type == 3) { + for (ImgInfo imgInfo : imgs) { + if (imgInfo.getGoodsVO() != null) { + String jumpLink = getJumpLink(imgInfo.getGoodsVO(), user, relationId, inviteCode, + imgInfo.getUrl()); + if (!StringUtil.isNullOrEmpty(jumpLink)) { + list.add(jumpLink); + } + } + } + } + + } else if (goodsEvaluate.getType() == EvaluateEnum.activity) { + for (ImgInfo imgInfo : imgs) { + if (imgInfo.getType() == ImgEnum.goods || imgInfo.getType() == ImgEnum.video) + continue; + if (imgInfo.getType() == ImgEnum.img) + list.add(StringUtil.isNullOrEmpty(imgInfo.getUrlHD()) ? imgInfo.getUrl() + : imgInfo.getUrlHD()); + else if (imgInfo.getType() == ImgEnum.activity) + if (!StringUtil.isNullOrEmpty(imgInfo.getActivityPic())) { + list.add(imgInfo.getActivityPic()); + } else if (!StringUtil.isNullOrEmpty(imgInfo.getUrl())) { + list.add(imgInfo.getUrl()); + } + } + } + } + + Integer shareCount = goodsEvaluate.getShareNum(); + if (shareCount == null) { + shareCount = 0; + } + + if (type == 3) { + shareCount++; + goodsEvaluateService.addShareNum(id); + + executor.execute(new Runnable() { + @Override + public void run() { // 娣诲姞姣忔棩缁熻 + dailyCountMomentsService.addShareClick(); + } + }); + } + + if (list.size() == 0) { + out.print(JsonUtil.loadFalseResult("璇ヤ俊鎭凡涓嬫灦")); + return; + } + + JSONObject data = new JSONObject(); + data.put("count", shareCount); + data.put("list", list); + out.print(JsonUtil.loadTrueResult(data)); + } catch (Exception e) { + out.print(JsonUtil.loadFalseResult("鍒嗕韩鍥剧敓鎴愬け璐�")); + return; + } + } + + private String getJumpLink(GoodsDetailVO goodsVO, UserInfo user, String relationId, String inviteCode, + String mainPic) { + String jumpLink = null; + if (goodsVO.getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) { + TaoBaoLink taoBaoLink = null; + try { + taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(user.getId(), Long.parseLong(goodsVO.getGoodsId()), + relationId); + } catch (ShareGoodsException e) { + e.printStackTrace(); + } + jumpLink = ShareControllerV2.getERCodeContentNew( + configService.get(ConfigKeyEnum.taobaoShareQrcodeText.getKey()), taoBaoLink.getGoods(), + TaoBaoUtil.filterTaoToken(taoBaoLink.getTaoToken())); + } else if (goodsVO.getGoodsType() == Constant.SOURCE_TYPE_JD) { + JDGoods jdGoods = jdGoodsCacheUtil.getGoodsInfo(Long.parseLong(goodsVO.getGoodsId())); + if (jdGoods == null) { + return null; + } + + String couponUrl = null; + JDCouponInfo couponInfo = JDUtil.getShowCouponInfo(jdGoods); + if (couponInfo != null) { + couponUrl = couponInfo.getLink(); + } + String materialId = "https://item.jd.com/" + goodsVO.getGoodsId() + ".html"; + jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, JDApiUtil.POSITION_SHARE + "", + user.getId() + ""); + } else if (goodsVO.getGoodsType() == Constant.SOURCE_TYPE_PDD) { + jumpLink = PinDuoDuoApiUtil.getPromotionUrl(Long.parseLong(goodsVO.getGoodsId()), + PinDuoDuoApiUtil.PID_SHARE + "", user.getId() + ""); + } + + FileUploadResult uploadResult = qrCodeService.drawDynamicGoodsPoster(jumpLink, user.getPortrait(), inviteCode, + mainPic, goodsVO); + if (uploadResult != null) { + return uploadResult.getUrl(); + } + return null; + } + + /** + * 璇勮澶嶅埗-H5 + * + * @param acceptData + * @param id + * @param cid + * 璇勮id + * @param out + */ + @RequestMapping(value = "evaluateComment", method = RequestMethod.POST) + public void evaluateComment(AcceptData acceptData, Long uid, String id, String cid, PrintWriter out) { + if (StringUtil.isNullOrEmpty(id)) { + out.print(JsonUtil.loadFalseResult("id涓嶈兘涓虹┖")); + return; + } + + GoodsEvaluate goodsEvaluate = goodsEvaluateService.getById(id); + if (goodsEvaluate == null) { + out.print(JsonUtil.loadFalseResult("璇ュ唴瀹瑰凡涓嶅瓨鍦�")); + return; + } + + UserInfo user = userInfoService.getUserByIdWithMybatis(uid); + if (user == null) { + out.print(JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�")); + return; + } + + if (user != null && user.getState() != UserInfo.STATE_NORMAL) { + out.print(JsonUtil.loadFalseResult(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC)); + return; + } + + UserExtraTaoBaoInfo taoBaoInfo = userExtraTaoBaoInfoService.getByUid(uid); + String relationId = null; + if (taoBaoInfo != null && taoBaoInfo.getRelationId() != null && taoBaoInfo.getRelationValid() != null + && taoBaoInfo.getRelationValid() == true) + relationId = taoBaoInfo.getRelationId(); + + if (StringUtil.isNullOrEmpty(relationId)) { + out.print(JsonUtil.loadFalseResult(2, "娣樺疂鏈巿鏉冿紝璇峰墠寰�\"鎴戠殑\"缁戝畾娣樺疂璐﹀彿")); + return; + } + + String text = ""; + CommentInfo comment = null; + List<CommentInfo> comments = goodsEvaluate.getComments(); + if (comments != null) { + for (CommentInfo commentInfo : comments) { + if (cid.equals(commentInfo.getId())) { + text = commentInfo.getContent(); + comment = commentInfo; + break; + } + } + } + + String newText = text; // 闈為�氱敤鍒搁渶瑕侀獙璇� + if (comment != null && (comment.getNeedSpin() == null || comment.getNeedSpin())) { + try { + newText = convertLinkManager.convertLinkFromText(text, uid, true); + } catch (ConvertLinkExceptionException e) { + if (e.getCode() != ConvertLinkExceptionException.CODE_NONE) { + out.print(JsonUtil.loadFalseResult("璇勮鐢熸垚澶辫触")); + return; + } + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + out.print(JsonUtil.loadFalseResult("璇勮鐢熸垚澶辫触")); + return; + } + } + + // 鏇挎崲浠锋牸 + if (goodsEvaluate.getType() == EvaluateEnum.single) { + GoodsDetailVO goods = goodsEvaluate.getGoods(); + newText = newText.replace("[鍘熶环]", MoneyBigDecimalUtil.getWithNoZera(goods.getZkPrice()) + ""); + if (!goods.isHasCoupon()) { + newText = newText.replace("棰嗗埜鎶㈣喘", "鎶㈣喘"); + newText = newText.replace("銆愬埜鍚庝环銆慬鍒稿悗浠穄鍏�", ""); + } else { + newText = newText.replace("[鍒稿悗浠穄", MoneyBigDecimalUtil.getWithNoZera(goods.getCouponPrice()) + ""); + } + newText = newText.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n"); + } + + JSONObject data = new JSONObject(); + data.put("text", newText); + out.print(JsonUtil.loadTrueResult(data)); + + executor.execute(new Runnable() { + @Override + public void run() { // 娣诲姞姣忔棩缁熻 + dailyCountMomentsService.addCopyComment(); + } + }); + } + + /** + * 璇勮澶嶅埗-涓撻 + * + * @param acceptData + * @param id + * @param out + */ + @RequestMapping(value = "copySpecialComment", method = RequestMethod.POST) + public void copySpecialComment(AcceptData acceptData, Long uid, Long id, PrintWriter out) { + if (uid == null || id == null) { + out.print(JsonUtil.loadFalseResult("鍙傛暟涓嶈兘涓虹┖")); + return; + } + + CommonShareInfo shareInfo = commonShareInfoService.getByPidAndType(id, CommonShareInfoEnum.special.name()); + if (shareInfo == null || StringUtil.isNullOrEmpty(shareInfo.getComment())) { + out.print(JsonUtil.loadFalseResult("璇ュ唴瀹瑰凡涓嶅瓨鍦�")); + return; + } + + UserInfo user = userInfoService.getUserByIdWithMybatis(uid); + if (user == null) { + out.print(JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�")); + return; + } + + if (user != null && user.getState() != UserInfo.STATE_NORMAL) { + out.print(JsonUtil.loadFalseResult(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC)); + return; + } + + UserExtraTaoBaoInfo taoBaoInfo = userExtraTaoBaoInfoService.getByUid(uid); + String relationId = null; + if (taoBaoInfo != null && taoBaoInfo.getRelationId() != null && taoBaoInfo.getRelationValid() != null + && taoBaoInfo.getRelationValid() == true) + relationId = taoBaoInfo.getRelationId(); + + if (StringUtil.isNullOrEmpty(relationId)) { + out.print(JsonUtil.loadFalseResult(2, "娣樺疂鏈巿鏉冿紝璇峰墠寰�\"鎴戠殑\"缁戝畾娣樺疂璐﹀彿")); + return; + } + + String text = shareInfo.getComment(); + String newText = text; + if (shareInfo.getNeedSpin() != null && shareInfo.getNeedSpin()) { + try { + newText = convertLinkManager.convertLinkFromText(text, uid, true); + } catch (ConvertLinkExceptionException e) { + if (e.getCode() != ConvertLinkExceptionException.CODE_NONE) { + out.print(JsonUtil.loadFalseResult("璇勮鐢熸垚澶辫触")); + return; + } + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + out.print(JsonUtil.loadFalseResult("璇勮鐢熸垚澶辫触")); + return; + } + } + + JSONObject data = new JSONObject(); + data.put("text", newText); + out.print(JsonUtil.loadTrueResult(data)); + } + + @RequestMapping(value = "getActivityDetail") + public void getActivityDetail(String callback, AcceptData acceptData, Long uid, String type, String id, + PrintWriter out) { + if (uid == null || StringUtil.isNullOrEmpty(id) || StringUtil.isNullOrEmpty(type)) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鍙傛暟涓嶈兘涓虹┖")); + return; + } + + String title = ""; + String comment = ""; + String params = ""; + String desc = ""; + Date startTime = null; + Date endTime = null; + JumpDetailV2 jumpDetail = null; + List<String> imgs = new ArrayList<>(); + if ("circle".equalsIgnoreCase(type)) { // 鍙戝湀娲诲姩 + GoodsEvaluate evaluate = goodsEvaluateService.getById(id); + if (evaluate == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璇ユ椿鍔ㄥ凡涓嬫灦")); + return; + } + + title = evaluate.getTitle(); + List<CommentInfo> comments = evaluate.getComments(); + if (comments != null && comments.size() > 0) { + comment = comments.get(0).getContent(); + } + + String jumpLink = null; + if (!StringUtil.isNullOrEmpty(evaluate.getJumpLink())) { + jumpLink = evaluate.getJumpLink(); + } + + List<ImgInfo> imgList = evaluate.getImgList(); + if (imgList != null && imgList.size() > 0) { + for (ImgInfo imgInfo : imgList) { + if (!StringUtil.isNullOrEmpty(imgInfo.getUrl()) + && (imgInfo.getType() == ImgEnum.img || imgInfo.getType() == ImgEnum.activity)) { + imgs.add(imgInfo.getUrl()); + } + + if (imgInfo.getType() == ImgEnum.img || imgInfo.getType() == ImgEnum.activity) { + if (StringUtil.isNullOrEmpty(jumpLink) && !StringUtil.isNullOrEmpty(imgInfo.getActivityUrl())) { + jumpLink = imgInfo.getActivityUrl(); + } + } + } + } + + int platformCode = Constant.getPlatformCode(acceptData.getPlatform()); + jumpDetail = jumpDetailV2Service.getByTypeCache("web", platformCode, + Integer.parseInt(acceptData.getVersion())); + JSONObject inner = new JSONObject(); + inner.put("url", jumpLink); + params = inner.toString(); + } else { + long pid = Long.parseLong(id); + if (CommonShareInfoEnum.special.name().equalsIgnoreCase(type)) { + Special special = specialService.selectByPrimaryKey(pid); + if (special == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璇ユ椿鍔ㄥ凡涓嬫灦")); + return; + } + + params = special.getParams(); + jumpDetail = special.getJumpDetail(); + if (!StringUtil.isNullOrEmpty(special.getPicture())) { + imgs.add(special.getPicture()); + } + + title = special.getName(); + + desc = special.getRemark(); + startTime = special.getStartTime(); + endTime = special.getEndTime(); + } else if (CommonShareInfoEnum.banner.name().equalsIgnoreCase(type)) { + SwiperPicture swiper = swiperPictureService.selectByPrimaryKey(pid); + if (swiper == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璇ユ椿鍔ㄥ凡涓嬫灦")); + return; + } + params = swiper.getParams(); + jumpDetail = swiper.getJumpDetail(); + if (!StringUtil.isNullOrEmpty(swiper.getSrc())) { + imgs.add(swiper.getSrc()); + } + + title = swiper.getTitle(); + desc = swiper.getDesc(); + startTime = swiper.getStartTime(); + endTime = swiper.getEndTime(); + } + CommonShareInfo shareInfo = commonShareInfoService.getByPidAndType(pid, type); + if (shareInfo != null && !StringUtil.isNullOrEmpty(shareInfo.getComment())) { + comment = shareInfo.getComment(); + } + } + + if (!StringUtil.isNullOrEmpty(comment)) { // 鏇挎崲娣樺疂瀹樻柟娲诲姩 + List<String> activityIdList = convertLinkManager.getTaoBaoOfficialActivityId(comment); + for (String st : activityIdList) + comment = comment.replace(st, ""); + } + + JSONObject data = new JSONObject(); + data.put("title", title); + data.put("desc", desc); + data.put("comment", comment); + data.put("params", params); + data.put("jumpDetail", jumpDetail); + data.put("imgs", imgs); + if (startTime != null) { + data.put("startTime", TimeUtil.getGernalTime(startTime.getTime(), "yyyy.MM.dd")); + } + + if (endTime != null) { + data.put("endTime", TimeUtil.getGernalTime(endTime.getTime(), "yyyy.MM.dd")); + } + + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); + } + + /** + * 璇勮澶嶅埗-涓撻 + * + * @param acceptData + * @param id + * @param out + */ + @RequestMapping(value = "copyShareComment") + public void copyShareComment(String callback, AcceptData acceptData, Long uid, String id, String type, + PrintWriter out) { + if (uid == null || StringUtil.isNullOrEmpty(id) || StringUtil.isNullOrEmpty(type)) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鍙傛暟涓嶈兘涓虹┖")); + return; + } + + if ("circle".equalsIgnoreCase(type)) { // 鍙戝湀娲诲姩 + copyActivityComment(callback, acceptData, uid, id, out); + return; + } + + long pid = Long.parseLong(id); + CommonShareInfo shareInfo = commonShareInfoService.getByPidAndType(pid, type); + if (shareInfo == null || StringUtil.isNullOrEmpty(shareInfo.getComment())) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璇ュ唴瀹瑰凡涓嶅瓨鍦�")); + return; + } + + UserInfo user = userInfoService.getUserByIdWithMybatis(uid); + if (user == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�")); + return; + } + + if (user != null && user.getState() != UserInfo.STATE_NORMAL) { + JsonUtil.printMode(out, callback, + JsonUtil.loadFalseResult(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC)); + return; + } + + UserExtraTaoBaoInfo taoBaoInfo = userExtraTaoBaoInfoService.getByUid(uid); + String relationId = null; + if (taoBaoInfo != null && taoBaoInfo.getRelationId() != null && taoBaoInfo.getRelationValid() != null + && taoBaoInfo.getRelationValid() == true) + relationId = taoBaoInfo.getRelationId(); + + if (StringUtil.isNullOrEmpty(relationId)) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(2, "娣樺疂鏈巿鏉冿紝璇峰墠寰�\"鎴戠殑\"缁戝畾娣樺疂璐﹀彿")); + return; + } + + String text = shareInfo.getComment(); + String newText = text; + if (shareInfo.getNeedSpin() != null && shareInfo.getNeedSpin()) { + try { + newText = convertLinkManager.convertLinkFromText(text, uid, true); + } catch (ConvertLinkExceptionException e) { + if (e.getCode() != ConvertLinkExceptionException.CODE_NONE) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璇勮鐢熸垚澶辫触")); + return; + } + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璇勮鐢熸垚澶辫触")); + return; + } + } + + JSONObject data = new JSONObject(); + data.put("text", newText); + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); + } + + /** + * 娲诲姩鍒嗕韩缁樺浘 + * @Title: createActivityShareImg + * @Description: + * @param title + * @param desc + * @param imgUrl + * @param erCodeContent + * @return + * String 杩斿洖绫诲瀷 + * @throws + */ + private String createActivityShareImg(String type, String id, String erCodeContent) { + + String title = ""; + String desc = ""; + String img = ""; + if ("circle".equalsIgnoreCase(type)) { + + } else if ("banner".equalsIgnoreCase(type)) { + SwiperPicture picture = swiperPictureService.selectByPrimaryKey(Long.parseLong(id)); + title = picture.getTitle(); + desc = picture.getDesc(); + img = picture.getSrc(); + } else if ("special".equalsIgnoreCase(type)) { + Special special = specialService.selectByPrimaryKey(Long.parseLong(id)); + title = special.getName(); + desc = special.getRemark(); + img = special.getPicture(); + } + + try { + InputStream erCodeInputStream = null; + erCodeInputStream = QRCodeUtil.getInstance(250).encode(erCodeContent); + int[] size = new int[2]; + try { + size = ImageUtil.getImgWidthAndHeight(img); + } catch (MalformedURLException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + InputStream resultInputStream = ImageUtil.drawActivityShareImg(HttpUtil.getAsInputStream(img), + (float) size[0] / size[1], title, desc, erCodeInputStream); + if (resultInputStream != null) { + String filePath = FilePathEnum.activityShare.getPath() + UUID.randomUUID().toString().replace("-", "") + + ".png"; + FileUploadResult result = COSManager.getInstance().uploadFile(resultInputStream, filePath); + if (result != null) + return result.getUrl(); + } + } catch (Exception e1) { + e1.printStackTrace(); + } + + return null; + } + + /** + * 璇勮澶嶅埗-涓撻 + * + * @param acceptData + * @param id + * @param out + */ + @RequestMapping(value = "getActivityShareImg") + public void getActivityShareImg(String callback, AcceptData acceptData, Long uid, String id, String type, + PrintWriter out) { + if (uid == null || StringUtil.isNullOrEmpty(id) || StringUtil.isNullOrEmpty(type)) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鍙傛暟涓嶈兘涓虹┖")); + return; + } + + if ("circle".equalsIgnoreCase(type)) { // 鍙戝湀娲诲姩 + // copyActivityComment(callback, acceptData, uid, id, out); + // TODO 鍒嗕韩鍙戝湀鐨勫浘 + return; + } + + long pid = Long.parseLong(id); + CommonShareInfo shareInfo = commonShareInfoService.getByPidAndType(pid, type); + if (shareInfo == null || StringUtil.isNullOrEmpty(shareInfo.getComment())) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璇ュ唴瀹瑰凡涓嶅瓨鍦�")); + return; + } + + UserInfo user = userInfoService.getUserByIdWithMybatis(uid); + if (user == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�")); + return; + } + + if (user != null && user.getState() != UserInfo.STATE_NORMAL) { + JsonUtil.printMode(out, callback, + JsonUtil.loadFalseResult(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC)); + return; + } + + UserExtraTaoBaoInfo taoBaoInfo = userExtraTaoBaoInfoService.getByUid(uid); + String relationId = null; + if (taoBaoInfo != null && taoBaoInfo.getRelationId() != null && taoBaoInfo.getRelationValid() != null + && taoBaoInfo.getRelationValid() == true) + relationId = taoBaoInfo.getRelationId(); + + if (StringUtil.isNullOrEmpty(relationId)) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(2, "娣樺疂鏈巿鏉冿紝璇峰墠寰�\"鎴戠殑\"缁戝畾娣樺疂璐﹀彿")); + return; + } + + String text = shareInfo.getComment(); + String newText = text; + String imgUrl = null; + if (shareInfo.getNeedSpin() != null && shareInfo.getNeedSpin()) { + try { + String erCodeContent = ""; + newText = convertLinkManager.convertLinkFromText(text, uid, true); + // 鑾峰彇鍙d护 + List<String> tokenList = TaoBaoUtil.getTokenListFromTextWithKuoHao(newText); + if (tokenList != null && tokenList.size() > 0) { + // 鏋勯�犲垎浜摼鎺� + erCodeContent = ShareControllerV2.getTaoBaoActiivtyERCodeContentNew( + configService.get(ConfigKeyEnum.taobaoShareQrcodeText.getKey()), tokenList.get(0)); + } else { + // 鑾峰彇閾炬帴 + List<String> urlList = JDUtil.getJDShortLinksFromText(newText); + if (urlList != null && urlList.size() > 0) { + erCodeContent = urlList.get(0); + } else { + urlList = PinDuoDuoUtil.getPDDShortLinksFromText(newText); + if (urlList != null && urlList.size() > 0) { + erCodeContent = urlList.get(0); + } + } + } + + imgUrl = createActivityShareImg(type, id, erCodeContent); + } catch (ConvertLinkExceptionException e) { + if (e.getCode() != ConvertLinkExceptionException.CODE_NONE) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璇勮鐢熸垚澶辫触")); + return; + } + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璇勮鐢熸垚澶辫触")); + return; + } + } + + if (StringUtil.isNullOrEmpty(imgUrl)) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鍒嗕韩鍥剧敓鎴愬け璐�")); + } else { + JSONObject data = new JSONObject(); + data.put("text", newText); + data.put("img", imgUrl); + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); + } + } + + /** + * 璇勮澶嶅埗 + * + * @param acceptData + * @param id + * @param out + */ + private void copyActivityComment(String callback, AcceptData acceptData, Long uid, String id, PrintWriter out) { + if (StringUtil.isNullOrEmpty(id)) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("id涓嶈兘涓虹┖")); + return; + } + + GoodsEvaluate goodsEvaluate = goodsEvaluateService.getById(id); + if (goodsEvaluate == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璇ュ唴瀹瑰凡涓嶅瓨鍦�")); + return; + } + + UserInfo user = userInfoService.getUserByIdWithMybatis(uid); + if (user == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�")); + return; + } + + if (user != null && user.getState() != UserInfo.STATE_NORMAL) { + JsonUtil.printMode(out, callback, + JsonUtil.loadFalseResult(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC)); + return; + } + + UserExtraTaoBaoInfo taoBaoInfo = userExtraTaoBaoInfoService.getByUid(uid); + String relationId = null; + if (taoBaoInfo != null && taoBaoInfo.getRelationId() != null && taoBaoInfo.getRelationValid() != null + && taoBaoInfo.getRelationValid() == true) + relationId = taoBaoInfo.getRelationId(); + + if (StringUtil.isNullOrEmpty(relationId)) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(2, "娣樺疂鏈巿鏉冿紝璇峰墠寰�\"鎴戠殑\"缁戝畾娣樺疂璐﹀彿")); + return; + } + + String text = ""; + CommentInfo comment = null; + List<CommentInfo> comments = goodsEvaluate.getComments(); + if (comments != null && comments.size() > 0) { + CommentInfo info = comments.get(0); + text = info.getContent(); + comment = info; + } + + String newText = text; // 闈為�氱敤鍒搁渶瑕侀獙璇� + if (comment != null && (comment.getNeedSpin() == null || comment.getNeedSpin())) { + try { + newText = convertLinkManager.convertLinkFromText(text, uid, true); + } catch (ConvertLinkExceptionException e) { + if (e.getCode() != ConvertLinkExceptionException.CODE_NONE) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璇勮鐢熸垚澶辫触")); + return; + } + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璇勮鐢熸垚澶辫触")); + return; + } + } + JSONObject data = new JSONObject(); + data.put("text", newText); + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); + + executor.execute(new Runnable() { + @Override + public void run() { // 娣诲姞姣忔棩缁熻 + dailyCountMomentsService.addCopyComment(); + } + }); + } + +} -- Gitblit v1.8.0