From be05279bfbc10defc002d7718f46a49f3c96d05e Mon Sep 17 00:00:00 2001 From: admin <2780501319@qq.com> Date: 星期四, 27 二月 2020 16:45:01 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/div' into div --- fanli/src/main/java/com/yeshi/fanli/controller/client/v2/ShareControllerV2.java | 3272 +++++++++++++++++++++++++++++++---------------------------- 1 files changed, 1,717 insertions(+), 1,555 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/ShareControllerV2.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/ShareControllerV2.java index 5cc9e93..40ded30 100644 --- a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/ShareControllerV2.java +++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/ShareControllerV2.java @@ -1,1555 +1,1717 @@ -package com.yeshi.fanli.controller.client.v2; - -import java.io.PrintWriter; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.List; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; - -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.DateUtil; -import org.yeshi.utils.HttpUtil; -import org.yeshi.utils.JsonUtil; -import org.yeshi.utils.taobao.TbImgUtil; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.yeshi.fanli.dto.ConfigParamsDTO; -import com.yeshi.fanli.dto.jd.JDCouponInfo; -import com.yeshi.fanli.dto.pdd.PDDGoodsDetail; -import com.yeshi.fanli.dto.share.ShareGoodsRecordDTO; -import com.yeshi.fanli.entity.accept.AcceptData; -import com.yeshi.fanli.entity.bus.share.UserShareGoodsGroup; -import com.yeshi.fanli.entity.bus.share.UserShareGoodsHistory; -import com.yeshi.fanli.entity.bus.share.UserShareGoodsRecord; -import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinRecord; -import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo; -import com.yeshi.fanli.entity.bus.user.UserInfo; -import com.yeshi.fanli.entity.bus.user.UserInfoExtra; -import com.yeshi.fanli.entity.goods.CommonGoods; -import com.yeshi.fanli.entity.goods.ShareGoodsTextTemplate; -import com.yeshi.fanli.entity.jd.JDGoods; -import com.yeshi.fanli.entity.system.ConfigKeyEnum; -import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; -import com.yeshi.fanli.entity.taobao.TaoBaoLink; -import com.yeshi.fanli.entity.taobao.TaoKeAppInfo; -import com.yeshi.fanli.exception.goods.ShareGoodsTextTemplateException; -import com.yeshi.fanli.exception.share.ShareGoodsException; -import com.yeshi.fanli.exception.taobao.TaoKeApiException; -import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException; -import com.yeshi.fanli.exception.tlj.UserTaoLiJinRecordException; -import com.yeshi.fanli.log.LogHelper; -import com.yeshi.fanli.service.inter.config.ConfigService; -import com.yeshi.fanli.service.inter.config.SystemClientParamsService; -import com.yeshi.fanli.service.inter.dynamic.DynamicInfoService; -import com.yeshi.fanli.service.inter.goods.CommonGoodsService; -import com.yeshi.fanli.service.inter.goods.ShareGoodsService; -import com.yeshi.fanli.service.inter.goods.ShareGoodsTextTemplateService; -import com.yeshi.fanli.service.inter.monitor.BusinessEmergent110Service; -import com.yeshi.fanli.service.inter.monitor.MonitorService; -import com.yeshi.fanli.service.inter.order.config.HongBaoManageService; -import com.yeshi.fanli.service.inter.tlj.ConfigTaoLiJinService; -import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinRecordService; -import com.yeshi.fanli.service.inter.user.SpreadUserImgService; -import com.yeshi.fanli.service.inter.user.UserInfoExtraService; -import com.yeshi.fanli.service.inter.user.UserInfoService; -import com.yeshi.fanli.service.inter.user.UserShareGoodsGroupService; -import com.yeshi.fanli.service.inter.user.UserShareGoodsRecordService; -import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService; -import com.yeshi.fanli.util.AESUtil; -import com.yeshi.fanli.util.Constant; -import com.yeshi.fanli.util.MoneyBigDecimalUtil; -import com.yeshi.fanli.util.RedisManager; -import com.yeshi.fanli.util.StringUtil; -import com.yeshi.fanli.util.TaoBaoConstant; -import com.yeshi.fanli.util.VersionUtil; -import com.yeshi.fanli.util.cache.JDGoodsCacheUtil; -import com.yeshi.fanli.util.cache.PinDuoDuoCacheUtil; -import com.yeshi.fanli.util.cache.TaoBaoGoodsCacheUtil; -import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory; -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.TaoBaoUtil; -import com.yeshi.fanli.util.taobao.TaoKeApiUtil; -import com.yeshi.fanli.util.taobao.TaoLiJinUtil; -import com.yeshi.fanli.vo.goods.GoodsDetailVO; -import com.yeshi.fanli.vo.goods.ShareGoodsCommentChoiceInfo; -import com.yeshi.fanli.vo.goods.ShareInfoVO; - -import net.sf.json.JSONArray; -import net.sf.json.JSONObject; - -@Controller -@RequestMapping("api/v2/share") -public class ShareControllerV2 { - - @Resource(name = "taskExecutor") - private TaskExecutor executor; - - @Resource - private ShareGoodsService shareGoodsService; - - @Resource - private ConfigService configService; - - @Resource - private HongBaoManageService hongBaoManageService; - - @Resource - private MonitorService monitorService; - - @Resource - private UserShareGoodsRecordService userShareGoodsRecordService; - - @Resource - private UserShareGoodsGroupService userShareGoodsGroupService; - - @Resource - private CommonGoodsService commonGoodsService; - - @Resource - private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService; - - @Resource - private UserInfoService userInfoService; - - @Resource - private TaoBaoGoodsCacheUtil taoBaoGoodsCacheUtil; - - @Resource - private JDGoodsCacheUtil jdGoodsCacheUtil; - - @Resource - private PinDuoDuoCacheUtil pinDuoDuoCacheUtil; - - @Resource - private RedisManager redisManager; - - @Resource - private ShareGoodsTextTemplateService shareGoodsTextTemplateService; - - @Resource - private SystemClientParamsService systemClientParamsService; - - @Resource - private DynamicInfoService dynamicInfoService; - - @Resource - private UserInfoExtraService userInfoExtraService; - - @Resource - private SpreadUserImgService spreadUserImgService; - - @Resource - private BusinessEmergent110Service businessEmergent110Service; - - @Resource - private ConfigTaoLiJinService configTaoLiJinService; - - @Resource - private UserTaoLiJinRecordService userTaoLiJinRecordService; - - private List<ShareGoodsCommentChoiceInfo> getCommentChoiceList(String token, String link, String inviteCode, - BigDecimal fanliMoney) { - List<ShareGoodsCommentChoiceInfo> list = new ArrayList<>(); - if (!StringUtil.isNullOrEmpty(token)) - list.add(new ShareGoodsCommentChoiceInfo(ShareGoodsCommentChoiceInfo.TYPE_TOKEN, "娣樺彛浠�", - String.format("寰╄=杩欐潯%s\n杩涘叆銆怲ao瀹濄�戝嵆鍙姠璐�", token), true, false)); - if (!StringUtil.isNullOrEmpty(link)) { - list.add(new ShareGoodsCommentChoiceInfo(ShareGoodsCommentChoiceInfo.TYPE_LINK, "閾炬帴", link, true, false)); - } - if (!StringUtil.isNullOrEmpty(inviteCode)) { - list.add(new ShareGoodsCommentChoiceInfo(ShareGoodsCommentChoiceInfo.TYPE_INVITE_CODE, "閭�璇风爜", - "閭�璇风爜锛�" + inviteCode, false, true)); - } - - list.add(new ShareGoodsCommentChoiceInfo(ShareGoodsCommentChoiceInfo.TYPE_DOWNLOAD_LINK, "涓嬭浇閾炬帴", - "涓嬭浇閾炬帴锛�" + Constant.YINGYONGBAO_LINK, false, true)); - - list.add(new ShareGoodsCommentChoiceInfo(ShareGoodsCommentChoiceInfo.TYPE_FANLI_MONEY, "杩斿埄閲戦", - "杩斿埄閲戦锛毬� " + fanliMoney, false, true)); - - return list; - } - - /** - * - * @param acceptData - * @param uid - * -鐢ㄦ埛ID - * @param goodsId-鍟嗗搧ID - * @param source - * @param totalNum - * @param goodsType - * @param needGoods - * -鏄惁闇�瑕佸晢鍝佷俊鎭� - * @param request - * @param out - */ - @RequestMapping(value = "createShareInfo") - public void createShareInfo(AcceptData acceptData, Long uid, Long goodsId, String source, Integer totalNum, - Integer goodsType, Boolean needGoods, HttpServletRequest request, PrintWriter out) { - if (uid == null || uid <= 0) { - out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛ID涓嶈兘涓虹┖")); - return; - } - - if (needGoods == null) - needGoods = false; - try { - // 鏃ュ織璁板綍 - String info = String.format("type=share&uid=%s&goodsId=%s&source=%s&goodsType=%s", uid, goodsId, source, - goodsType); - LogHelper.orderInfo(info); - } catch (Exception e) { - } - - UserInfo user = userInfoService.getUserByIdWithMybatis(uid); - if (user != null && user.getState() != UserInfo.STATE_NORMAL) { - out.print(JsonUtil.loadFalseResult(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC)); - return; - } - - if (goodsId == null || goodsId <= 0) { - out.print(JsonUtil.loadFalseResult(2, "鍟嗗搧ID涓嶈兘涓虹┖")); - return; - } - - // 娣樺疂 - if (goodsType == null || goodsType == Constant.SOURCE_TYPE_TAOBAO) { - createTaoBaoShare(acceptData, uid, goodsId, totalNum, source, needGoods, request, out); - return; - } - - // 浜笢 - if (goodsType == Constant.SOURCE_TYPE_JD) { - createJDShare(acceptData, uid, goodsId, source, needGoods, out); - return; - } - - // 鎷煎澶� - if (goodsType == Constant.SOURCE_TYPE_PDD) { - createPDDShare(acceptData, uid, goodsId, source, needGoods, out); - return; - } - } - - public static String getERCodeContent(String template, TaoBaoGoodsBrief goods, String token) { - return template.replace("[娣樺彛浠", token); - } - - /** - * 鍒涘缓娣樺疂鍒嗕韩淇℃伅 - * - * @param acceptData - * @param uid - * @param goodsId - * @param totalNum - * @param source - * @param request - * @param out - */ - public void createTaoBaoShare(AcceptData acceptData, Long uid, Long goodsId, Integer totalNum, String source, - Boolean needGoods, HttpServletRequest request, PrintWriter out) { - if (needGoods == null) - needGoods = false; - - UserExtraTaoBaoInfo extraInfo = userExtraTaoBaoInfoService.getByUid(uid); - UserInfoExtra userExtraInfo = userInfoExtraService.getUserInfoExtra(uid); - String inviteCode = null; - if (userExtraInfo != null) { - if (!StringUtil.isNullOrEmpty(userExtraInfo.getInviteCodeVip())) { - inviteCode = userExtraInfo.getInviteCodeVip(); - } else { - inviteCode = userExtraInfo.getInviteCode(); - } - } - String relationId = null; - if (extraInfo != null && extraInfo.getRelationId() != null && extraInfo.getRelationValid() != null - && extraInfo.getRelationValid() == true) - relationId = extraInfo.getRelationId(); - - if (StringUtil.isNullOrEmpty(relationId)) { - out.print(JsonUtil.loadFalseResult(3, "娣樺疂鏈巿鏉冿紝璇峰墠寰�\"鎴戠殑\"缁戝畾娣樺疂璐﹀彿")); - return; - } - - // 娣樼ぜ閲戝垱寤哄垎浜� - if (source != null && "taolijin".equals(source)) {// 娣樼ぜ閲戝垎浜垱寤� - createTaoLijin(uid, goodsId, totalNum, relationId, request, out); - return; - } else {// 鏅�氬垎浜垱寤� - createCommonTaoBaoShare(acceptData.getPlatform(), acceptData.getVersion(), goodsId, inviteCode, uid, - needGoods, relationId, out); - return; - } - - } - - /** - * 娣樼ぜ閲戝垱寤哄垎浜� - * - * @param uid - * @param auctionId - * @param totalNum - * @param relationId - * @param request - * @param out - */ - public void createTaoLijin(Long uid, Long auctionId, int totalNum, String relationId, HttpServletRequest request, - PrintWriter out) { - try { - TaoBaoGoodsBrief goods = null; - try { - goods = TaoKeApiUtil.searchGoodsDetail(auctionId); - } catch (TaobaoGoodsDownException e2) { - e2.printStackTrace(); - } - - if (goods == null) { - out.print(JsonUtil.loadFalseResult("鍟嗗搧宸蹭笅鏋�")); - return; - } - - if (goods.getTkRate() == null || goods.getTkRate().compareTo(new BigDecimal(0)) <= 0) { - // TaoKeApiUtil.specialConvertCoupon(auctionId, app); - - } - - // 璁$畻鎺ㄥ箍绾㈠寘 - String warningRate = configTaoLiJinService.getValueByKey("warning_value", new Date()); - LogHelper.error("鎺ㄥ箍绾㈠寘姣斾緥:" + warningRate); - BigDecimal spreadMoney = TaoLiJinUtil.getSpreadMoney(warningRate, goods); - LogHelper.error("鎺ㄥ箍绾㈠寘:" + spreadMoney); - // 鎺ㄥ箍绾㈠寘 涓嶈兘灏忎簬1 - if (spreadMoney.compareTo(new BigDecimal(1.1)) < 0) { - out.print(JsonUtil.loadFalseResult(1, "璇ュ晢鍝佹窐绀奸噾涓嶈冻")); - return; - } - - ShareInfoVO shareInfo = new ShareInfoVO(); - shareInfo.setSpreadMoney(" 楼" + spreadMoney.toString()); - - String taoLiJinLink = null; - Long tljId = null; - try { - UserTaoLiJinRecord record = userTaoLiJinRecordService.createShareTaoLiJin(uid, totalNum, goods); - tljId = record.getId(); - taoLiJinLink = record.getSendUrl(); - shareInfo.setTljId(tljId.toString()); - shareInfo.setSurplusMoney(record.getSurplusMoney().toString()); - } catch (UserTaoLiJinRecordException e) { - out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg())); - return; - } - - String url = String.format("http://%s%s?uid=%s&id=%s&appType=flq&tid=%s", configService.getH5Host(), - Constant.systemCommonConfig.getShareGoodsPagePath(), AESUtil.encrypt(uid + "", Constant.UIDAESKEY), - auctionId + "", AESUtil.encrypt(tljId + "", Constant.UIDAESKEY)); - String shortLink = HttpUtil.getShortLink(url); - if (!StringUtil.isNullOrEmpty(shortLink)) { - url = shortLink; - } - shareInfo.setClickUrl(url); - - TaoBaoLink taoBaoLink = new TaoBaoLink(); - taoBaoLink.setCouponLink(taoLiJinLink); - taoBaoLink.setClickUrl(taoLiJinLink); - - // 鍒涘缓娣樺彛浠� - if (!StringUtil.isNullOrEmpty(taoLiJinLink)) {// 閫氳繃绔嬪嵆鎺ㄥ箍鏂瑰紡鑾峰彇娣樺彛浠ゆ垚鍔� - String quanToken = TaoKeApiUtil.getTKToken(goods.getPictUrl(), goods.getTitle(), taoLiJinLink); - if (!StringUtil.isNullOrEmpty(quanToken)) { - taoBaoLink.setTaoToken(quanToken); - } - } - shareInfo.setToken(TaoBaoUtil.filterTaoToken(taoBaoLink.getTaoToken())); - shareInfo.setRule(configService.get(ConfigKeyEnum.shareSingleGoodsRule.getKey())); - shareInfo.setPictUrl(TbImgUtil.getTBSizeImg(goods.getPictUrl(), 500)); - - // 鏃犲埜 - String shopType = goods.getUserType() == 0 ? TaoBaoConstant.SHARE_PRICE_TAOBAO - : TaoBaoConstant.SHARE_PRICE_TM; - String shareText = ""; - - if (StringUtil.isNullOrEmpty(goods.getCouponInfo())) { - String text = shareGoodsTextTemplateService.getCommonTemplate(uid); - if (StringUtil.isNullOrEmpty(text)) - text = configService.get(ConfigKeyEnum.goodsShareTextNoCoupon.getKey()); - shareText = text.replace("{鏍囬}", goods.getTitle()).replace("{鍟嗗搧鍘熶环}", - MoneyBigDecimalUtil.getWithNoZera(goods.getZkPrice()) + ""); - } else// 鏈夊埜 - { - String text = shareGoodsTextTemplateService.getTaoLiJinTemplate(uid); - if (StringUtil.isNullOrEmpty(text)) - text = configTaoLiJinService.getValueByKey("goods_share_text", new Date()); - - shareText = text.replace("{鏍囬}", goods.getTitle()) - .replace("{鍟嗗搧鍘熶环}", MoneyBigDecimalUtil.getWithNoZera(goods.getZkPrice()) + "") - .replace("{浼樻儬鍒搁潰棰潁", MoneyBigDecimalUtil.getWithNoZera(goods.getCouponAmount()).toString()) - .replace("{娣樼ぜ閲戦潰棰潁", MoneyBigDecimalUtil.getWithNoZera(spreadMoney).toString()) - .replace("{浼樻儬鍒镐环}", TaoBaoUtil.getAfterUseCouplePrice(goods) + ""); - } - - shareText = shareText.replace("{搴楅摵绫诲瀷}", shopType) - .replace("{鏈堥攢閲弣", TaoBaoUtil.getSaleCount(goods.getBiz30day())).replace("{棰嗗埜鐭摼}", shortLink) - .replace("{娣樺彛浠", TaoBaoUtil.filterTaoToken(taoBaoLink.getTaoToken())); - shareInfo.setShareText(shareText); - - String descText = shareText.replace(goods.getTitle(), "").trim(); - if (descText.startsWith("\\r\\n")) - descText = descText.substring(0); - - shareInfo.setDescText(descText); - - String imgs = configService.get(ConfigKeyEnum.goodsShareNotifyImgs.getKey()); - JSONArray array = JSONArray.fromObject(imgs); - shareInfo.setNotifyPicture(array.optString(0)); - - // 2.0.7鐗堟湰鍚庣殑鎻愮ず鍥剧墖 - imgs = configService.get(ConfigKeyEnum.goodsShareNotifyImgs207.getKey()); - array = JSONArray.fromObject(imgs); - shareInfo.setNotifyPictureNew(array.optString(0)); - - shareInfo.setNotifyDesc(configService.get(ConfigKeyEnum.goodsShareNotify.getKey())); - - // 娣诲姞鍒嗕韩璁板綍 - BigDecimal rate = hongBaoManageService.getShareRate(); - BigDecimal shareMoney = TaoBaoUtil.getShareGoodsHongBaoInfo(goods, rate); - shareInfo.setShareMoney("楼" + shareMoney.toString()); - try { - ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordGoodsDetail(uid, auctionId, - Constant.SOURCE_TYPE_TAOBAO, true); - shareInfo.setShareId(shareRecord.getRedisKey()); - } catch (Exception e) { - try { - LogHelper.errorDetailInfo(e); - } catch (Exception e1) { - e1.printStackTrace(); - } - } - out.print(JsonUtil.loadTrueResult(JsonUtil.getSimpleGson().toJson(shareInfo))); - - final TaoBaoLink taobaoLink = taoBaoLink; - final TaoBaoGoodsBrief finalGoods = goods; - // 寮傛鎿嶄綔 - com.yeshi.fanli.util.ThreadUtil.run(new Runnable() { - @Override - public void run() { - // 寮傛鎿嶄綔 娣诲姞鍒嗕韩璁板綍 - UserShareGoodsHistory history = new UserShareGoodsHistory(); - history.setUser(new UserInfo(uid)); - history.setHongbao(shareMoney); - history.setCreateTime(new Date()); - history.setGoodsType(UserShareGoodsHistory.TYPE_TAOBAO); - history.setTkCode(TaoBaoUtil.filterTaoToken(taobaoLink.getTaoToken())); - history.setLink(taobaoLink.getClickUrl()); - history.setQuanLink(taobaoLink.getCouponLink()); - history.setGoodsId(finalGoods.getAuctionId()); - history.setPostPicture(finalGoods.getPictUrl()); - history.setShareImg(taobaoLink.getClickUrl()); - List<String> imgList = finalGoods.getImgList(); - if (imgList == null) { - imgList = new ArrayList<>(); - } - history.setPictures(JsonUtil.getGson().toJson(imgList)); - shareGoodsService.addShareGoodsHistory(history); - } - }); - return; - } catch (Exception e) { - LogHelper.errorDetailInfo(e, "鍒嗕韩鍑洪敊:uid:" + uid + "auctionId:" + auctionId, ""); - out.print(JsonUtil.loadFalseResult("鍒涘缓鍒嗕韩鍑洪敊")); - businessEmergent110Service.shareTaoBaoGoodsError(StringUtil.Md5(auctionId + "")); - } - } - - public void createCommonTaoBaoShare(String platform, String version, Long goodsId, String inviteCode, Long uid, - boolean needGoods, String relationId, PrintWriter out) { - try { - ShareInfoVO shareInfo = new ShareInfoVO(); - - TaoBaoLink taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(uid, goodsId, relationId); - - if (taoBaoLink != null && taoBaoLink.getGoods() != null && needGoods) { - ConfigParamsDTO dto = hongBaoManageService.getShowComputeRate(platform, version); - GoodsDetailVO goodsInfo = GoodsDetailVOFactory.convertTaoBao(taoBaoLink.getGoods(), dto); - shareInfo.setGoodsInfo(goodsInfo); - } - - String url = String.format("http://%s%s?uid=%s&id=%s&appType=flq", configService.getH5Host(), - Constant.systemCommonConfig.getShareGoodsPagePath(), AESUtil.encrypt(uid + "", Constant.UIDAESKEY), - goodsId + ""); - - String shortLink = HttpUtil.getShortLink(url); - if (!StringUtil.isNullOrEmpty(shortLink)) { - url = shortLink; - } - - shareInfo.setClickUrl(url); - shareInfo.setToken(TaoBaoUtil.filterTaoToken(taoBaoLink.getTaoToken())); - shareInfo.setRule(configService.get(ConfigKeyEnum.shareSingleGoodsRule.getKey())); - shareInfo.setPictUrl(TbImgUtil.getTBSizeImg(taoBaoLink.getGoods().getPictUrl(), 500)); - - String commentTextStr = configService.get(ConfigKeyEnum.shareSingleGoodsCommentText.getKey()); - List<String> commentTexts = new ArrayList<>(); - if (!StringUtil.isNullOrEmpty(commentTextStr)) { - JSONArray array = JSONArray.fromObject(commentTextStr); - for (int i = 0; i < array.size(); i++) { - if (StringUtil.isNullOrEmpty(inviteCode)) { - if (array.optString(i).contains("[閭�璇风爜]")) { - continue; - } - } - if (StringUtil.isNullOrEmpty(inviteCode)) - commentTexts.add(array.optString(i).replace("[涓嬭浇閾炬帴]", Constant.YINGYONGBAO_LINK) - .replace("[娣樺彛浠", shareInfo.getToken())); - else - commentTexts.add(array.optString(i).replace("[涓嬭浇閾炬帴]", Constant.YINGYONGBAO_LINK) - .replace("[閭�璇风爜]", inviteCode).replace("[娣樺彛浠", shareInfo.getToken())); - } - } - shareInfo.setCommentTexts(commentTexts); - - String shareText = ""; - // 鏃犲埜 - String shopType = taoBaoLink.getGoods().getUserType() == 0 ? TaoBaoConstant.SHARE_PRICE_TAOBAO - : TaoBaoConstant.SHARE_PRICE_TM; - - if (StringUtil.isNullOrEmpty(taoBaoLink.getGoods().getCouponInfo())) { - String text = shareGoodsTextTemplateService.getCommonTemplate(uid); - if (StringUtil.isNullOrEmpty(text)) - text = configService.get(ConfigKeyEnum.goodsShareTextNoCoupon.getKey()); - shareText = text.replace("{鏍囬}", taoBaoLink.getGoods().getTitle()).replace("{鍟嗗搧鍘熶环}", - MoneyBigDecimalUtil.getWithNoZera(taoBaoLink.getGoods().getZkPrice()) + ""); - } else// 鏈夊埜 - { - String text = shareGoodsTextTemplateService.geteCouponTemplate(uid); - if (StringUtil.isNullOrEmpty(text)) - text = configService.get(ConfigKeyEnum.goodsShareTextCoupon.getKey()); - - shareText = text.replace("{鏍囬}", taoBaoLink.getGoods().getTitle()) - .replace("{鍟嗗搧鍘熶环}", MoneyBigDecimalUtil.getWithNoZera(taoBaoLink.getGoods().getZkPrice()) + "") - .replace("{浼樻儬鍒搁潰棰潁", - MoneyBigDecimalUtil.getWithNoZera(taoBaoLink.getGoods().getCouponAmount()).toString()) - .replace("{浼樻儬鍒镐环}", TaoBaoUtil.getAfterUseCouplePrice(taoBaoLink.getGoods()) + ""); - } - - shareText = shareText.replace("{搴楅摵绫诲瀷}", shopType) - .replace("{鏈堥攢閲弣", TaoBaoUtil.getSaleCount(taoBaoLink.getGoods().getBiz30day())) - .replace("{棰嗗埜鐭摼}", shortLink).replace("{娣樺彛浠", TaoBaoUtil.filterTaoToken(taoBaoLink.getTaoToken())); - - shareInfo.setShareText(shareText); - - String descText = shareText.replace(taoBaoLink.getGoods().getTitle(), "").trim(); - if (descText.startsWith("\\r\\n")) { - descText = descText.substring(0); - } - shareInfo.setDescText(descText); - // 娴嬭瘯 - // 2.0.2涔嬪墠 - if (!VersionUtil.greaterThan_2_0_2(platform, version)) - shareInfo.setClickUrl(getERCodeContent(configService.get(ConfigKeyEnum.taobaoShareQrcodeText.getKey()), - taoBaoLink.getGoods(), shareInfo.getToken())); - - shareInfo.setWxErCode(getERCodeContent(configService.get(ConfigKeyEnum.taobaoShareQrcodeText.getKey()), - taoBaoLink.getGoods(), shareInfo.getToken())); - - // 鎻愮ず鍥炬枃鍐呭 - String imgs = configService.get(ConfigKeyEnum.goodsShareNotifyImgs.getKey()); - JSONArray array = JSONArray.fromObject(imgs); - - shareInfo.setNotifyPicture(array.optString(0)); - - // 2.0.7鐗堟湰鍚庣殑鎻愮ず鍥剧墖 - imgs = configService.get(ConfigKeyEnum.goodsShareNotifyImgs207.getKey()); - array = JSONArray.fromObject(imgs); - shareInfo.setNotifyPictureNew(array.optString(0)); - - shareInfo.setNotifyDesc(configService.get(ConfigKeyEnum.goodsShareNotify.getKey())); - - // 鍒嗕韩閲戦 - BigDecimal rate = hongBaoManageService.getShareRate(); - BigDecimal shareMoney = TaoBaoUtil.getShareGoodsHongBaoInfo(taoBaoLink.getGoods(), rate); - shareInfo.setShareMoney("楼" + shareMoney.toString()); - - // 鍒嗕韩id - try { - ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordGoodsDetail(uid, goodsId, - Constant.SOURCE_TYPE_TAOBAO, false); - shareInfo.setShareId(shareRecord.getRedisKey()); - } catch (Exception e) { - try { - LogHelper.errorDetailInfo(e); - } catch (Exception e1) { - e1.printStackTrace(); - } - } - - // 璁剧疆璇勮鏂囨湰閫夐」 - shareInfo.setCommentTextChoiceList(getCommentChoiceList(shareInfo.getShareText(), null, inviteCode, - TaoBaoUtil.getGoodsHongBaoMoney(taoBaoLink.getGoods(), hongBaoManageService.getFanLiRate()))); - shareInfo.setCommentText(shareInfo.getShareText()); - - if (VersionUtil.greaterThan_2_0_7(platform, version)) { - String recommend = taoBaoLink.getGoods().getTitle(); - if (!StringUtil.isNullOrEmpty(taoBaoLink.getGoods().getDescription())) - recommend += "\n\r" + taoBaoLink.getGoods().getDescription(); - shareInfo.setRecommendText(recommend); - } else - shareInfo.setRecommendText(shareInfo.getDescText()); - - out.print(JsonUtil.loadTrueResult( - JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()).create().toJson(shareInfo))); - - final TaoBaoLink taobaoLink = taoBaoLink; - // 寮傛鎿嶄綔 - com.yeshi.fanli.util.ThreadUtil.run(new Runnable() { - @Override - public void run() { - // 寮傛鎿嶄綔 娣诲姞鍒嗕韩璁板綍 - UserShareGoodsHistory history = new UserShareGoodsHistory(); - history.setUser(new UserInfo(uid)); - history.setHongbao(shareMoney); - history.setCreateTime(new Date()); - history.setGoodsType(UserShareGoodsHistory.TYPE_TAOBAO); - history.setTkCode(TaoBaoUtil.filterTaoToken(taobaoLink.getTaoToken())); - history.setLink(taobaoLink.getClickUrl()); - history.setQuanLink(taobaoLink.getCouponLink()); - history.setGoodsId(taobaoLink.getGoods().getAuctionId()); - history.setPostPicture(taobaoLink.getGoods().getPictUrl()); - List<String> imgList = taobaoLink.getGoods().getImgList(); - if (imgList == null) { - imgList = new ArrayList<>(); - } - history.setPictures(JsonUtil.getGson().toJson(imgList)); - shareGoodsService.addShareGoodsHistory(history); - } - }); - return; - } catch (ShareGoodsException e) { - LogHelper.errorDetailInfo(e, "鍒嗕韩鍑洪敊:uid:" + uid + " goodsId:" + goodsId, ""); - out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMessage())); - businessEmergent110Service.shareTaoBaoGoodsError(StringUtil.Md5(goodsId + "")); - } - } - - /** - * 浜笢鍒涘缓鍒嗕韩 - * - * @param acceptData - * @param uid - * @param goodsId - * @param source - * @param goodsType - * @param request - * @param out - */ - public void createJDShare(AcceptData acceptData, Long uid, Long goodsId, String source, boolean needGoods, - PrintWriter out) { - JDGoods jdGoods = jdGoodsCacheUtil.getGoodsInfo(goodsId); - if (jdGoods == null) { - out.print(JsonUtil.loadFalseResult(1, "璇ュ晢鍝佸凡涓嬫灦")); - return; - } - - // String url = String.format("http://%s%s?uid=%s&id=%s", - // configService.getH5Host(), - // Constant.systemCommonConfig.getShareGoodsPagePathJD(), - // AESUtil.encrypt(uid + "", Constant.UIDAESKEY), - // goodsId + ""); - - String couponUrl = null; - JDCouponInfo couponInfo = JDUtil.getShowCouponInfo(jdGoods); - if (couponInfo != null) { - couponUrl = couponInfo.getLink(); - } - String materialId = "https://item.jd.com/" + goodsId + ".html"; - String jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, JDApiUtil.POSITION_SHARE + "", - uid + ""); - - ShareInfoVO shareInfo = new ShareInfoVO(); - shareInfo.setClickUrl(jumpLink); - shareInfo.setWxErCode(jumpLink); - shareInfo.setRule(configService.get(ConfigKeyEnum.shareRuleLinkJD.getKey())); - shareInfo.setPictUrl(jdGoods.getPicUrl()); - shareInfo.setCommentTexts(new ArrayList<>()); - - if (needGoods) - shareInfo.setGoodsInfo(GoodsDetailVOFactory.convertJDGoods(jdGoods, - hongBaoManageService.getShowComputeRate(acceptData.getPlatform(), acceptData.getVersion()))); - - String shareText = ""; - boolean hasCoupon = false; - - // 鍒嗕韩妯℃澘 - ShareGoodsTextTemplate textTemplate = shareGoodsTextTemplateService.getShareGoodsTextTemplate(uid); - if (couponInfo == null) { // 鏃犲埜妯℃澘 - if (textTemplate != null) - shareText = textTemplate.getShareJDTextTemplate(); - - if (StringUtil.isNullOrEmpty(shareText)) - shareText = configService.get(ConfigKeyEnum.goodsShareTextNoCouponJD.getKey()); - } else { // 鏈夊埜妯℃澘 - hasCoupon = true; - if (textTemplate != null) - shareText = textTemplate.getShareJDTextTemplateCoupon(); - - if (StringUtil.isNullOrEmpty(shareText)) - shareText = configService.get(ConfigKeyEnum.goodsShareTextCouponJD.getKey()); - } - shareText = shareGoodsTextTemplateService.createContentByTemplateJD(shareText, uid, jdGoods, jumpLink, - hasCoupon); - shareInfo.setShareText(shareText); - - String descText = shareText.replace(jdGoods.getSkuName(), "").trim(); - if (descText.startsWith("\\r\\n")) { - descText = descText.substring(0); - } - shareInfo.setDescText(descText); - - String imgs = configService.getByVersion(ConfigKeyEnum.goodsShareNotifyImgs.getKey(), acceptData.getPlatform(), - Integer.parseInt(acceptData.getVersion())); - JSONArray array = JSONArray.fromObject(imgs); - - shareInfo.setNotifyPicture(array.size() > 1 ? array.optString(1) : array.optString(0)); - - // 2.0.7鐗堟湰鍚庣殑鎻愮ず鍥剧墖 - imgs = configService.get(ConfigKeyEnum.goodsShareNotifyImgs207.getKey()); - array = JSONArray.fromObject(imgs); - shareInfo.setNotifyPictureNew(array.size() > 1 ? array.optString(1) : array.optString(0)); - - shareInfo.setNotifyDesc(configService.get(ConfigKeyEnum.goodsShareNotifyJD.getKey())); - - // 娣诲姞鍒嗕韩璁板綍 - BigDecimal shareRate = hongBaoManageService.getShareRate(); - BigDecimal shareMoney = JDUtil.getGoodsFanLiMoney(jdGoods, shareRate); - shareInfo.setShareMoney("楼" + shareMoney.toString()); - try { - ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordGoodsDetail(uid, goodsId, - Constant.SOURCE_TYPE_JD, false); - shareInfo.setShareId(shareRecord.getRedisKey()); - } catch (Exception e) { - try { - LogHelper.errorDetailInfo(e); - } catch (Exception e1) { - e1.printStackTrace(); - } - } - - String inviteCode = userInfoExtraService.getInviteCodeByUid(uid); - - // 璁剧疆璇勮鏂囨湰閫夐」 - shareInfo.setCommentTextChoiceList(getCommentChoiceList(null, shareInfo.getShareText(), inviteCode, - JDUtil.getGoodsFanLiMoney(jdGoods, hongBaoManageService.getFanLiRate()))); - - shareInfo.setCommentText(shareInfo.getShareText()); - if (VersionUtil.greaterThan_2_0_7(acceptData.getPlatform(), acceptData.getVersion())) - shareInfo.setRecommendText(jdGoods.getSkuName()); - else - shareInfo.setRecommendText(shareInfo.getDescText()); - - out.print(JsonUtil.loadTrueResult( - JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()).create().toJson(shareInfo))); - - // 寮傛鎿嶄綔 - final JDGoods goods = jdGoods; - com.yeshi.fanli.util.ThreadUtil.run(new Runnable() { - @Override - public void run() { - // 寮傛鎿嶄綔 娣诲姞鍒嗕韩璁板綍 - UserShareGoodsHistory history = new UserShareGoodsHistory(); - history.setUser(new UserInfo(uid)); - history.setHongbao(shareMoney); - history.setCreateTime(new Date()); - history.setGoodsType(Constant.SOURCE_TYPE_JD); - history.setTkCode(null); - history.setLink(null); - history.setQuanLink(null); - history.setGoodsId(goodsId); - history.setPostPicture(goods.getPicUrl()); - history.setShareImg(jumpLink); - - List<String> imgList = goods.getImageList(); - if (imgList == null) { - imgList = new ArrayList<>(); - } - history.setPictures(JsonUtil.getGson().toJson(imgList)); - shareGoodsService.addShareGoodsHistory(history); - } - }); - } - - /** - * 鎷煎澶氬垎浜� - * - * @param acceptData - * @param uid - * @param goodsId - * @param source - * @param out - */ - public void createPDDShare(AcceptData acceptData, Long uid, Long goodsId, String source, boolean needGoods, - PrintWriter out) { - PDDGoodsDetail goods = pinDuoDuoCacheUtil.getGoodsInfo(goodsId); - if (goods == null) { - out.print(JsonUtil.loadFalseResult(1, "璇ュ晢鍝佸凡涓嬫灦")); - return; - } - - // String url = String.format("http://%s%s?uid=%s&id=%s", - // configService.getH5Host(), - // Constant.systemCommonConfig.getShareGoodsPagePathPDD(), - // AESUtil.encrypt(uid + "", Constant.UIDAESKEY), - // goodsId + ""); - - String jumpLink = PinDuoDuoApiUtil.getPromotionUrl(goodsId, PinDuoDuoApiUtil.PID_SHARE + "", uid + ""); - - ShareInfoVO shareInfo = new ShareInfoVO(); - shareInfo.setClickUrl(jumpLink); - shareInfo.setWxErCode(jumpLink); - shareInfo.setCommentTexts(new ArrayList<>()); - shareInfo.setRule(configService.get(ConfigKeyEnum.shareRuleLinkPDD.getKey())); - shareInfo.setPictUrl(goods.getGoodsImageUrl()); - if (needGoods) { - shareInfo - .setGoodsInfo(GoodsDetailVOFactory.convertPDDGoods(goods, - new ConfigParamsDTO(hongBaoManageService.getFanLiRate(), - hongBaoManageService.getShareRate(), Constant.MAX_REWARD_RATE, - hongBaoManageService.getVIPFanLiRate()))); - } - - String template = ""; - boolean hasCoupon = false; - ShareGoodsTextTemplate textTemplate = shareGoodsTextTemplateService.getShareGoodsTextTemplate(uid); - if (goods.getHasCoupon() == null || !goods.getHasCoupon()) { - if (textTemplate != null) - template = textTemplate.getSharePDDTextTemplate(); - - if (StringUtil.isNullOrEmpty(template)) - template = configService.get(ConfigKeyEnum.goodsShareTextNocouponPDD.getKey()); - } else { - hasCoupon = true; - if (textTemplate != null) - template = textTemplate.getSharePDDTextTemplateCoupon(); - - if (StringUtil.isNullOrEmpty(template)) - template = configService.get(ConfigKeyEnum.goodsShareTextCouponPDD.getKey()); - } - - // 鍒涘缓鍙d护 - String token = PinDuoDuoApiUtil.createGenerate(goodsId); - - // 鐢熸垚鍒嗕韩鍐呭 - String shareText = shareGoodsTextTemplateService.createContentByTemplatePDD(template, uid, goods, jumpLink, - hasCoupon, token); - shareInfo.setShareText(shareText); - - String descText = shareText.replace(goods.getGoodsName(), "").trim(); - if (descText.startsWith("\\r\\n")) { - descText = descText.substring(0); - } - shareInfo.setDescText(descText); - - // - String imgs = configService.getByVersion(ConfigKeyEnum.goodsShareNotifyImgs.getKey(), acceptData.getPlatform(), - Integer.parseInt(acceptData.getVersion())); - JSONArray array = JSONArray.fromObject(imgs); - - shareInfo.setNotifyPicture(array.size() > 1 ? array.optString(1) : array.optString(0)); - - // 2.0.7鐗堟湰鍚庣殑鎻愮ず鍥剧墖 - imgs = configService.get(ConfigKeyEnum.goodsShareNotifyImgs207.getKey()); - array = JSONArray.fromObject(imgs); - shareInfo.setNotifyPictureNew(array.size() > 1 ? array.optString(1) : array.optString(0)); - - shareInfo.setNotifyDesc(configService.get(ConfigKeyEnum.goodsShareNotifyPDD.getKey())); - - // 娣诲姞鍒嗕韩璁板綍 - BigDecimal shareRate = hongBaoManageService.getShareRate(); - BigDecimal shareMoney = PinDuoDuoUtil.getGoodsFanLiMoney(goods, shareRate); - shareInfo.setShareMoney("楼" + shareMoney.toString()); - - try { - ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordGoodsDetail(uid, goodsId, - Constant.SOURCE_TYPE_PDD, false); - shareInfo.setShareId(shareRecord.getRedisKey()); - } catch (Exception e) { - try { - LogHelper.errorDetailInfo(e); - } catch (Exception e1) { - e1.printStackTrace(); - } - } - - String inviteCode = userInfoExtraService.getInviteCodeByUid(uid); - - // 璁剧疆璇勮鏂囨湰閫夐」 - shareInfo.setCommentTextChoiceList(getCommentChoiceList(null, shareInfo.getShareText(), inviteCode, - PinDuoDuoUtil.getGoodsFanLiMoney(goods, hongBaoManageService.getFanLiRate()))); - - shareInfo.setCommentText(shareInfo.getShareText()); - if (VersionUtil.greaterThan_2_0_7(acceptData.getPlatform(), acceptData.getVersion())) - shareInfo.setRecommendText(goods.getGoodsName()); - else - shareInfo.setRecommendText(shareInfo.getDescText()); - - out.print(JsonUtil.loadTrueResult( - JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()).create().toJson(shareInfo))); - - // 寮傛鎿嶄綔 - com.yeshi.fanli.util.ThreadUtil.run(new Runnable() { - @Override - public void run() { - // 寮傛鎿嶄綔 娣诲姞鍒嗕韩璁板綍 - UserShareGoodsHistory history = new UserShareGoodsHistory(); - history.setUser(new UserInfo(uid)); - history.setHongbao(shareMoney); - history.setCreateTime(new Date()); - history.setGoodsType(Constant.SOURCE_TYPE_PDD); - history.setTkCode(null); - history.setLink(null); - history.setQuanLink(null); - history.setGoodsId(goodsId); - history.setPostPicture(goods.getGoodsImageUrl()); - history.setShareImg(jumpLink); - List<String> imgList = null; - String[] goodsGalleryUrls = goods.getGoodsGalleryUrls(); - if (goodsGalleryUrls != null) { - imgList = Arrays.asList(goodsGalleryUrls); - } - if (imgList == null) { - imgList = new ArrayList<>(); - } - history.setPictures(JsonUtil.getGson().toJson(imgList)); - shareGoodsService.addShareGoodsHistory(history); - } - }); - } - - /** - * 棰勮鍒嗕韩妯℃澘 - * - * @param acceptData - * @param uid - * @param template - * @param goodsId - * @param hasCoupon - * @param out - */ - @RequestMapping(value = "viewShareTextTemplate", method = RequestMethod.POST) - public void viewShareTextTemplate(AcceptData acceptData, Long uid, String template, Integer goodsType, Long goodsId, - Long tljId, Boolean hasCoupon, PrintWriter out) { - if (uid == null) { - out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); - return; - } - - if (goodsId == null) { - out.print(JsonUtil.loadFalseResult(3, "鍟嗗搧ID涓嶈兘涓虹┖")); - return; - } - - if (goodsType == null || goodsType > 3 || goodsType < 1) { - out.print(JsonUtil.loadFalseResult(3, "骞冲彴绫诲瀷涓嶆纭�")); - return; - } - - if (goodsType == Constant.SOURCE_TYPE_TAOBAO) { - createTaoBaoViewText(goodsType, uid, template, goodsId, tljId, hasCoupon, out); - return; - } - - if (goodsType == Constant.SOURCE_TYPE_JD) { - createJDViewText(goodsType, uid, template, goodsId, hasCoupon, out); - return; - } - - if (goodsType == Constant.SOURCE_TYPE_PDD) { - createPDDViewText(goodsType, uid, template, goodsId, hasCoupon, out); - return; - } - } - - /** - * 鍒涘缓娣樺疂鍒嗕韩妯℃澘 - * - * @param uid - * @param template - * @param goodsType - * @param goodsId - * @param tljId - * @param hasCoupon - * @param out - */ - public void createTaoBaoViewText(Integer goodsType, Long uid, String template, Long goodsId, Long tljId, - Boolean hasCoupon, PrintWriter out) { - TaoBaoGoodsBrief goods = taoBaoGoodsCacheUtil.getCommonTaoBaoGoodsInfo(goodsId); - if (goods == null) - try { - goods = redisManager.getTaoBaoGoodsBrief(goodsId); - } catch (TaobaoGoodsDownException e) { - goods = null; - } - - if (goods == null) { - out.print(JsonUtil.loadFalseResult(4, "鍟嗗搧宸蹭笅鏋�")); - return; - } - - if (StringUtil.isNullOrEmpty(template)) { - template = getShareTemplate(goodsType, uid, hasCoupon, tljId); - } - - // 鏍¢獙鍒告ā鏉挎槸鍚︽纭� - if (hasCoupon) { - // 鏈夊埜鍟嗗搧 - if (tljId != null) { - try { - shareGoodsTextTemplateService.isTaoLiJinTemplateRight(template); - } catch (ShareGoodsTextTemplateException e) { - out.print(JsonUtil.loadFalseResult(5, e.getMsg())); - return; - } - } else { - try { - shareGoodsTextTemplateService.isCouponTemplateRight(template); - } catch (ShareGoodsTextTemplateException e) { - out.print(JsonUtil.loadFalseResult(5, e.getMsg())); - return; - } - } - } else { - // 鏅�氬晢鍝� - try { - shareGoodsTextTemplateService.isCommonTemplateRight(template); - } catch (ShareGoodsTextTemplateException e) { - out.print(JsonUtil.loadFalseResult(5, e.getMsg())); - return; - } - } - - String url = null; - if (tljId != null) { - UserTaoLiJinRecord userTaoLiJinRecord = userTaoLiJinRecordService.selectByPrimaryKey(tljId); - if (userTaoLiJinRecord == null) { - out.print(JsonUtil.loadFalseResult(5, "娣樼ぜ閲戦鍙栭摼鎺ヤ笉瀛樺湪")); - return; - } - url = userTaoLiJinRecord.getSendUrl(); - } else { - url = String.format("http://%s%s?uid=%s&id=%s&appType=flq", configService.getH5Host(), - Constant.systemCommonConfig.getShareGoodsPagePath(), AESUtil.encrypt(uid + "", Constant.UIDAESKEY), - goods.getAuctionId() + ""); - } - - String shortLink = HttpUtil.getShortLink(url); - - // 鏌ヨ鏄惁鏈夊垎浜� - UserShareGoodsHistory userShareHistory = shareGoodsService.getShareGoodsHistory(uid, goods.getAuctionId()); - String token = ""; - if (userShareHistory != null) { - token = userShareHistory.getTkCode(); - } - - if (StringUtil.isNullOrEmpty(token)) { - TaoKeAppInfo app = new TaoKeAppInfo(); - app.setAdzoneId(TaoBaoConstant.TAOBAO_RELATION_PID_DEFAULT.split("_")[3]); - app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY); - app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET); - app.setPid(TaoBaoConstant.TAOBAO_RELATION_PID_DEFAULT); - TaoBaoGoodsBrief goodsLink = TaoKeApiUtil.specialConvertCoupon(goods.getAuctionId(), app); - if (goodsLink != null) - token = TaoKeApiUtil.getTKToken(goods.getPictUrl(), goods.getTitle(), - StringUtil.isNullOrEmpty(goodsLink.getCouponLink()) ? goodsLink.getAuctionUrl() - : goodsLink.getCouponLink()); - } - String content = shareGoodsTextTemplateService.createContentByTemplate(template, uid, goods, token, shortLink, - hasCoupon, tljId); - JSONObject data = new JSONObject(); - data.put("content", content); - out.print(JsonUtil.loadTrueResult(data)); - } - - /** - * 鍒涘缓浜笢鍒嗕韩妯℃澘 - * - * @param uid - * @param template - * @param goodsType - * @param goodsId - * @param tljId - * @param hasCoupon - * @param out - */ - public void createJDViewText(Integer goodsType, Long uid, String template, Long goodsId, Boolean hasCoupon, - PrintWriter out) { - JDGoods goods = jdGoodsCacheUtil.getGoodsInfo(goodsId); - if (goods == null) { - out.print(JsonUtil.loadFalseResult(4, "鍟嗗搧宸蹭笅鏋�")); - return; - } - - if (StringUtil.isNullOrEmpty(template)) { - template = getShareTemplate(goodsType, uid, hasCoupon, null); - } - - // 鏍¢獙鍒告ā鏉挎槸鍚︽纭� - if (hasCoupon) { - // 鏈夊埜鍟嗗搧 - try { - shareGoodsTextTemplateService.isCouponTemplateRightJD(template); - } catch (ShareGoodsTextTemplateException e) { - out.print(JsonUtil.loadFalseResult(5, e.getMsg())); - return; - } - - } else { - // 鏅�氬晢鍝� - try { - shareGoodsTextTemplateService.isCommonTemplateRightJD(template); - } catch (ShareGoodsTextTemplateException e) { - out.print(JsonUtil.loadFalseResult(5, e.getMsg())); - return; - } - } - - String couponUrl = null; - JDCouponInfo couponInfo = JDUtil.getShowCouponInfo(goods); - if (couponInfo != null) { - couponUrl = couponInfo.getLink(); - } - String materialId = "https://item.jd.com/" + goodsId + ".html"; - String shortLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, JDApiUtil.POSITION_SHARE + "", - uid + ""); - - String content = shareGoodsTextTemplateService.createContentByTemplateJD(template, uid, goods, shortLink, - hasCoupon); - JSONObject data = new JSONObject(); - data.put("content", content); - out.print(JsonUtil.loadTrueResult(data)); - } - - /** - * 鍒涘缓鎷煎澶氬垎浜ā鏉� - * - * @param uid - * @param template - * @param goodsType - * @param goodsId - * @param tljId - * @param hasCoupon - * @param out - */ - public void createPDDViewText(Integer goodsType, Long uid, String template, Long goodsId, Boolean hasCoupon, - PrintWriter out) { - PDDGoodsDetail goods = pinDuoDuoCacheUtil.getGoodsInfo(goodsId); - if (goods == null) { - out.print(JsonUtil.loadFalseResult(4, "鍟嗗搧宸蹭笅鏋�")); - return; - } - - if (StringUtil.isNullOrEmpty(template)) { - template = getShareTemplate(goodsType, uid, hasCoupon, null); - } - - // 鏍¢獙鍒告ā鏉挎槸鍚︽纭� - if (hasCoupon) { - // 鏈夊埜鍟嗗搧 - try { - shareGoodsTextTemplateService.isCouponTemplateRightPDD(template); - } catch (ShareGoodsTextTemplateException e) { - out.print(JsonUtil.loadFalseResult(5, e.getMsg())); - return; - } - - } else { - // 鏅�氬晢鍝� - try { - shareGoodsTextTemplateService.isCommonTemplateRightPDD(template); - } catch (ShareGoodsTextTemplateException e) { - out.print(JsonUtil.loadFalseResult(5, e.getMsg())); - return; - } - } - - // // 鍒涘缓h5杩炴帴 - // String url = String.format("http://%s%s?uid=%s&id=%s&appType=flq", - // configService.getH5Host(), - // Constant.systemCommonConfig.getShareGoodsPagePath(), - // AESUtil.encrypt(uid + "", Constant.UIDAESKEY), - // goodsId + ""); - // String shortLink = HttpUtil.getShortLink(url); - - String shortLink = PinDuoDuoApiUtil.getPromotionUrl(goodsId, PinDuoDuoApiUtil.PID_SHARE + "", uid + ""); - - // 鍒涘缓鍙d护 - String token = PinDuoDuoApiUtil.createGenerate(goodsId); - - // 鐢熸垚鍒嗕韩鍐呭 - String content = shareGoodsTextTemplateService.createContentByTemplatePDD(template, uid, goods, shortLink, - hasCoupon, token); - - JSONObject data = new JSONObject(); - data.put("content", content); - out.print(JsonUtil.loadTrueResult(data)); - } - - /** - * 鑾峰彇鍒嗕韩妯℃澘 - * - * @param uid - * @param hasCoupon - * @param tljId - * @return - */ - private String getShareTemplate(int goodsType, Long uid, boolean hasCoupon, Long tljId) { - String template = ""; - if (goodsType == Constant.SOURCE_TYPE_TAOBAO) { - if (hasCoupon) { - if (tljId != null) { - template = shareGoodsTextTemplateService.getTaoLiJinTemplate(uid); - if (StringUtil.isNullOrEmpty(template)) - template = configTaoLiJinService.getValueByKey("goods_share_text", new Date()); - } else { - template = shareGoodsTextTemplateService.geteCouponTemplate(uid); - if (StringUtil.isNullOrEmpty(template)) - template = configService.get(ConfigKeyEnum.goodsShareTextCoupon.getKey()); - } - - } else { - template = shareGoodsTextTemplateService.getCommonTemplate(uid); - if (StringUtil.isNullOrEmpty(template)) - template = configService.get(ConfigKeyEnum.goodsShareTextNoCoupon.getKey()); - } - } else if (goodsType == Constant.SOURCE_TYPE_JD) { - ShareGoodsTextTemplate textTemplate = shareGoodsTextTemplateService.getShareGoodsTextTemplate(uid); - if (hasCoupon) { - if (textTemplate != null) { - template = textTemplate.getShareJDTextTemplateCoupon(); - } - if (StringUtil.isNullOrEmpty(template)) { - template = configService.get(ConfigKeyEnum.goodsShareTextCouponJD.getKey()); - } - } else { - if (textTemplate != null) { - template = textTemplate.getShareJDTextTemplate(); - } - - if (StringUtil.isNullOrEmpty(template)) { - template = configService.get(ConfigKeyEnum.goodsShareTextNoCouponJD.getKey()); - } - } - } else if (goodsType == Constant.SOURCE_TYPE_PDD) { - ShareGoodsTextTemplate textTemplate = shareGoodsTextTemplateService.getShareGoodsTextTemplate(uid); - if (hasCoupon) { - if (textTemplate != null) { - template = textTemplate.getSharePDDTextTemplateCoupon(); - } - if (StringUtil.isNullOrEmpty(template)) { - template = configService.get(ConfigKeyEnum.goodsShareTextCouponPDD.getKey()); - } - } else { - if (textTemplate != null) { - template = textTemplate.getSharePDDTextTemplate(); - } - - if (StringUtil.isNullOrEmpty(template)) { - template = configService.get(ConfigKeyEnum.goodsShareTextNocouponPDD.getKey()); - } - } - } - return template; - } - - /** - * 鑾峰彇鍒嗕韩妯℃澘 - * - * @param acceptData - * @param uid - * @param hasCoupon - * @param out - */ - @RequestMapping(value = "getShareTextTemplate", method = RequestMethod.POST) - public void getShareTextTemplate(AcceptData acceptData, Integer goodsType, Long uid, Long tljId, Boolean hasCoupon, - PrintWriter out) { - if (uid == null) { - out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); - return; - } - - if (hasCoupon == null) { - out.print(JsonUtil.loadFalseResult(1, "鏄惁鏈夊埜瀛楁涓虹┖")); - return; - } - - JSONObject data = new JSONObject(); - data.put("template", getShareTemplate(goodsType, uid, hasCoupon, tljId)); - out.print(JsonUtil.loadTrueResult(data)); - } - - /** - * 鑾峰彇鍒嗕韩妯℃澘缂栬緫瑙勫垯 - * - * @param acceptData - * @param out - */ - @RequestMapping(value = "getShareTextTemplateRules", method = RequestMethod.POST) - public void getShareTextTemplateRules(AcceptData acceptData, Integer goodsType, Long tljId, PrintWriter out) { - if (goodsType == null || goodsType > 3 || goodsType < 1) { - out.print(JsonUtil.loadFalseResult(3, "骞冲彴绫诲瀷涓嶆纭�")); - return; - } - - if (goodsType == Constant.SOURCE_TYPE_TAOBAO) { - if (tljId != null) { - out.print( - JsonUtil.loadTrueResult(configTaoLiJinService.getValueByKey("share_goods_rules", new Date()))); - } else { - out.print(JsonUtil.loadTrueResult(configService.get(ConfigKeyEnum.shareGoodsTemplateRules.getKey()))); - } - } else if (goodsType == Constant.SOURCE_TYPE_JD) { - out.print(JsonUtil.loadTrueResult(configService.get(ConfigKeyEnum.shareGoodsTemplateRulesJD.getKey()))); - } else if (goodsType == Constant.SOURCE_TYPE_PDD) { - out.print(JsonUtil.loadTrueResult(configService.get(ConfigKeyEnum.shareGoodsTemplateRulesPDD.getKey()))); - } - } - - /** - * 淇濆瓨妯℃澘 - * - * @param acceptData - * @param uid - * @param hasCoupon - * @param template - * @param out - */ - @RequestMapping(value = "saveShareTextTemplate", method = RequestMethod.POST) - public void saveShareTextTemplate(AcceptData acceptData, Integer goodsType, Long uid, Long tljId, Boolean hasCoupon, - String template, PrintWriter out) { - if (StringUtil.isNullOrEmpty(template)) { - out.print(JsonUtil.loadFalseResult(1, "鍒嗕韩妯℃澘涓虹┖")); - return; - } - - if (goodsType == null || goodsType > 3 || goodsType < 1) { - out.print(JsonUtil.loadFalseResult(3, "骞冲彴绫诲瀷涓嶆纭�")); - return; - } - - try { - if (goodsType == Constant.SOURCE_TYPE_TAOBAO) { - // 鏍¢獙鍒告ā鏉挎槸鍚︽纭� - if (hasCoupon) { - // 鏈夊埜鍟嗗搧 - if (tljId != null) { - shareGoodsTextTemplateService.isTaoLiJinTemplateRight(template); - shareGoodsTextTemplateService.saveTaoLiJinTemplate(uid, template); - } else { - shareGoodsTextTemplateService.isCouponTemplateRight(template); - shareGoodsTextTemplateService.saveCouponTemplate(uid, template); - } - } else { - // 鏅�氬晢鍝� - shareGoodsTextTemplateService.isCommonTemplateRight(template); - shareGoodsTextTemplateService.saveCommonTemplate(uid, template); - } - } else if (goodsType == Constant.SOURCE_TYPE_JD) { - if (hasCoupon) { - shareGoodsTextTemplateService.isCouponTemplateRightJD(template); - shareGoodsTextTemplateService.saveCouponTemplateJD(uid, template); - } else { - shareGoodsTextTemplateService.isCommonTemplateRightJD(template); - shareGoodsTextTemplateService.saveCommonTemplateJD(uid, template); - out.print(JsonUtil.loadTrueResult("")); - } - } else if (goodsType == Constant.SOURCE_TYPE_PDD) { - if (hasCoupon) { - shareGoodsTextTemplateService.isCouponTemplateRightPDD(template); - shareGoodsTextTemplateService.saveCouponTemplatePDD(uid, template); - } else { - shareGoodsTextTemplateService.isCommonTemplateRightPDD(template); - shareGoodsTextTemplateService.saveCommonTemplatePDD(uid, template); - out.print(JsonUtil.loadTrueResult("")); - } - } - } catch (ShareGoodsTextTemplateException e) { - out.print(JsonUtil.loadFalseResult(5, e.getMsg())); - return; - } - out.print(JsonUtil.loadTrueResult("")); - } - - /** - * 杩樺師妯℃澘 - * - * @param acceptData - * @param uid - * @param hasCoupon - * -鏄惁鏈夊埜 - * @param out - */ - @RequestMapping(value = "resetShareTextTemplate", method = RequestMethod.POST) - public void resetShareTextTemplate(AcceptData acceptData, Long uid, Long goodsId, Long tljId, Boolean hasCoupon, - Integer goodsType, PrintWriter out) { - if (uid == null) { - out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); - return; - } - - if (goodsType == null || goodsType > 3 || goodsType < 1) { - out.print(JsonUtil.loadFalseResult(3, "骞冲彴绫诲瀷涓嶆纭�")); - return; - } - - if (goodsType == Constant.SOURCE_TYPE_TAOBAO) { - if (hasCoupon) { - if (tljId != null) { - shareGoodsTextTemplateService.resetTaoLijinTemplate(uid); - } else { - shareGoodsTextTemplateService.resetCouponTemplate(uid); - } - } else { - shareGoodsTextTemplateService.resetCommonTemplate(uid); - } - } else if (goodsType == Constant.SOURCE_TYPE_JD) { - if (hasCoupon) { - shareGoodsTextTemplateService.resetCouponTemplateJD(uid); - } else { - shareGoodsTextTemplateService.resetCommonTemplateJD(uid); - } - } else if (goodsType == Constant.SOURCE_TYPE_PDD) { - if (hasCoupon) { - shareGoodsTextTemplateService.resetCouponTemplatePDD(uid); - } else { - shareGoodsTextTemplateService.resetCommonTemplatePDD(uid); - } - } - - if (goodsId != null) { - viewShareTextTemplate(acceptData, uid, null, goodsType, goodsId, tljId, hasCoupon, out); - return; - } - out.print(JsonUtil.loadTrueResult("")); - } - - /** - * 鑾峰彇鍒嗕韩璁板綍涓殑鍟嗗搧 鍒嗕韩淇℃伅 - * - * @param acceptData - * @param recordId - * @param out - */ - @RequestMapping(value = "getShareGoods") - public void getShareGoods(AcceptData acceptData, Long recordId, PrintWriter out) { - - if (recordId == null) { - out.print(JsonUtil.loadFalseResult("鍙傛暟涓嶆纭�")); - return; - } - - JSONArray array = new JSONArray(); - JSONObject data = new JSONObject(); - - List<UserShareGoodsGroup> list = userShareGoodsGroupService.listByRecordId(recordId); - if (list == null || list.size() == 0) { - data.put("title", "鍒嗕韩鍟嗗搧"); - data.put("count", 0); - data.put("result_list", array); - out.print(JsonUtil.loadTrueResult(data)); - return; - } - - // API缃戠粶鎺ュ彛楠岃瘉鏄惁鍦ㄥ敭 - List<TaoBaoGoodsBrief> listTaoKeGoods = null; - List<Long> listGid = new ArrayList<Long>(); - for (UserShareGoodsGroup goodsGroup : list) { - CommonGoods commonGoods = goodsGroup.getCommonGoods(); - Integer goodsType = commonGoods.getGoodsType(); - if (commonGoods == null || goodsType == null || goodsType != Constant.SOURCE_TYPE_TAOBAO) { - continue; - } - listGid.add(commonGoods.getGoodsId()); - } - - if (listGid.size() > 0) { - try { - listTaoKeGoods = TaoKeApiUtil.getBatchGoodsInfo(listGid); - } catch (TaoKeApiException e) { - e.printStackTrace(); - } catch (TaobaoGoodsDownException e) { - e.printStackTrace(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - ConfigParamsDTO paramsDTO = hongBaoManageService.getShowComputeRate(acceptData.getPlatform(), - acceptData.getVersion()); - - Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) - .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create(); - - for (UserShareGoodsGroup goodsGroup : list) { - CommonGoods commonGoods = goodsGroup.getCommonGoods(); - if (commonGoods == null) { - continue; - } - - // 楠岃瘉娣樺疂鍟嗗搧鏄惁鍦ㄥ敭 - Integer goodsType = commonGoods.getGoodsType(); - if (listTaoKeGoods != null && listTaoKeGoods.size() > 0 && goodsType != null - && goodsType == Constant.SOURCE_TYPE_TAOBAO) { - int state = 1; // 榛樿鍋滃敭 - Long goodsId = commonGoods.getGoodsId(); - for (TaoBaoGoodsBrief taoKeGoods : listTaoKeGoods) { - Long auctionId = taoKeGoods.getAuctionId(); - if (goodsId == auctionId || goodsId.equals(auctionId)) { - state = 0; // 鍦ㄥ敭 - break; - } - } - commonGoods.setState(state); - } - - // 浠婃棩娴忚璁板綍澶勭悊 - Date date = new Date(); - Date browseTime = goodsGroup.getBrowseTime(); - if (!DateUtil.isSameDay(browseTime, date)) { - goodsGroup.setTodayBrowse(0); // 涓嶆槸鍚屼竴澶╂祻瑙堣褰曡缃�0 - } - - JSONObject dataObject = new JSONObject(); - dataObject.put("todayBrowse", goodsGroup.getTodayBrowse()); - dataObject.put("totalBrowse", goodsGroup.getTotalBrowse()); - dataObject.put("totalOrder", goodsGroup.getTotalOrder()); - dataObject.put("totalMoney", "楼" + goodsGroup.getTotalMoney()); - - GoodsDetailVO detailVO = GoodsDetailVOFactory.convertCommonGoods(commonGoods, paramsDTO); - detailVO.setId(commonGoods.getId()); - dataObject.put("goods", gson.toJson(detailVO)); - array.add(dataObject); - } - - String title = ""; - UserShareGoodsRecord userShareGoodsRecord = userShareGoodsRecordService.selectByPrimaryKey(recordId); - if (userShareGoodsRecord != null) { - title = userShareGoodsRecord.getTitle(); - } - - data.put("title", title); - data.put("count", list.size()); - data.put("result_list", array); - out.print(JsonUtil.loadTrueResult(data)); - } - -} +package com.yeshi.fanli.controller.client.v2; + +import java.io.PrintWriter; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +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.BigDecimalUtil; +import org.yeshi.utils.DateUtil; +import org.yeshi.utils.HttpUtil; +import org.yeshi.utils.JsonUtil; +import org.yeshi.utils.taobao.TbImgUtil; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.yeshi.fanli.dto.ConfigParamsDTO; +import com.yeshi.fanli.dto.jd.JDCouponInfo; +import com.yeshi.fanli.dto.pdd.PDDGoodsDetail; +import com.yeshi.fanli.dto.share.ShareGoodsRecordDTO; +import com.yeshi.fanli.entity.accept.AcceptData; +import com.yeshi.fanli.entity.bus.share.UserShareGoodsGroup; +import com.yeshi.fanli.entity.bus.share.UserShareGoodsHistory; +import com.yeshi.fanli.entity.bus.share.UserShareGoodsRecord; +import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinRecord; +import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo; +import com.yeshi.fanli.entity.bus.user.UserInfo; +import com.yeshi.fanli.entity.bus.user.UserInfoExtra; +import com.yeshi.fanli.entity.goods.CommonGoods; +import com.yeshi.fanli.entity.goods.ShareGoodsTextTemplate; +import com.yeshi.fanli.entity.jd.JDGoods; +import com.yeshi.fanli.entity.system.ConfigKeyEnum; +import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; +import com.yeshi.fanli.entity.taobao.TaoBaoLink; +import com.yeshi.fanli.entity.taobao.TaoKeAppInfo; +import com.yeshi.fanli.exception.goods.ShareGoodsTextTemplateException; +import com.yeshi.fanli.exception.share.ShareGoodsException; +import com.yeshi.fanli.exception.taobao.TaoKeApiException; +import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException; +import com.yeshi.fanli.exception.tlj.UserTaoLiJinRecordException; +import com.yeshi.fanli.log.LogHelper; +import com.yeshi.fanli.service.inter.config.ConfigService; +import com.yeshi.fanli.service.inter.config.SystemClientParamsService; +import com.yeshi.fanli.service.inter.dynamic.DynamicInfoService; +import com.yeshi.fanli.service.inter.goods.CommonGoodsService; +import com.yeshi.fanli.service.inter.goods.ShareGoodsService; +import com.yeshi.fanli.service.inter.goods.ShareGoodsTextTemplateService; +import com.yeshi.fanli.service.inter.monitor.BusinessEmergent110Service; +import com.yeshi.fanli.service.inter.monitor.MonitorService; +import com.yeshi.fanli.service.inter.order.config.HongBaoManageService; +import com.yeshi.fanli.service.inter.tlj.ConfigTaoLiJinService; +import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinRecordService; +import com.yeshi.fanli.service.inter.user.SpreadUserImgService; +import com.yeshi.fanli.service.inter.user.UserInfoExtraService; +import com.yeshi.fanli.service.inter.user.UserInfoService; +import com.yeshi.fanli.service.inter.user.UserShareGoodsGroupService; +import com.yeshi.fanli.service.inter.user.UserShareGoodsRecordService; +import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService; +import com.yeshi.fanli.util.AESUtil; +import com.yeshi.fanli.util.Constant; +import com.yeshi.fanli.util.MoneyBigDecimalUtil; +import com.yeshi.fanli.util.RedisManager; +import com.yeshi.fanli.util.StringUtil; +import com.yeshi.fanli.util.TaoBaoConstant; +import com.yeshi.fanli.util.VersionUtil; +import com.yeshi.fanli.util.cache.JDGoodsCacheUtil; +import com.yeshi.fanli.util.cache.PinDuoDuoCacheUtil; +import com.yeshi.fanli.util.cache.TaoBaoGoodsCacheUtil; +import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory; +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.TaoBaoUtil; +import com.yeshi.fanli.util.taobao.TaoKeApiUtil; +import com.yeshi.fanli.util.taobao.TaoLiJinUtil; +import com.yeshi.fanli.vo.goods.GoodsDetailVO; +import com.yeshi.fanli.vo.goods.ShareGoodsCommentChoiceInfo; +import com.yeshi.fanli.vo.goods.ShareInfoVO; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +@Controller +@RequestMapping("api/v2/share") +public class ShareControllerV2 { + + @Resource(name = "taskExecutor") + private TaskExecutor executor; + + @Resource + private ShareGoodsService shareGoodsService; + + @Resource + private ConfigService configService; + + @Resource + private HongBaoManageService hongBaoManageService; + + @Resource + private MonitorService monitorService; + + @Resource + private UserShareGoodsRecordService userShareGoodsRecordService; + + @Resource + private UserShareGoodsGroupService userShareGoodsGroupService; + + @Resource + private CommonGoodsService commonGoodsService; + + @Resource + private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService; + + @Resource + private UserInfoService userInfoService; + + @Resource + private TaoBaoGoodsCacheUtil taoBaoGoodsCacheUtil; + + @Resource + private JDGoodsCacheUtil jdGoodsCacheUtil; + + @Resource + private PinDuoDuoCacheUtil pinDuoDuoCacheUtil; + + @Resource + private RedisManager redisManager; + + @Resource + private ShareGoodsTextTemplateService shareGoodsTextTemplateService; + + @Resource + private SystemClientParamsService systemClientParamsService; + + @Resource + private DynamicInfoService dynamicInfoService; + + @Resource + private UserInfoExtraService userInfoExtraService; + + @Resource + private SpreadUserImgService spreadUserImgService; + + @Resource + private BusinessEmergent110Service businessEmergent110Service; + + @Resource + private ConfigTaoLiJinService configTaoLiJinService; + + @Resource + private UserTaoLiJinRecordService userTaoLiJinRecordService; + + private List<ShareGoodsCommentChoiceInfo> getCommentChoiceList(String token, String link, String inviteCode, + BigDecimal fanliMoney) { + List<ShareGoodsCommentChoiceInfo> list = new ArrayList<>(); + if (!StringUtil.isNullOrEmpty(token)) + list.add( + new ShareGoodsCommentChoiceInfo(ShareGoodsCommentChoiceInfo.TYPE_TOKEN, "娣樺彛浠�", token, true, false)); + if (!StringUtil.isNullOrEmpty(link)) { + list.add(new ShareGoodsCommentChoiceInfo(ShareGoodsCommentChoiceInfo.TYPE_LINK, "閾炬帴", link, true, false)); + } + if (!StringUtil.isNullOrEmpty(inviteCode)) { + list.add(new ShareGoodsCommentChoiceInfo(ShareGoodsCommentChoiceInfo.TYPE_INVITE_CODE, "閭�璇风爜", + "閭�璇风爜锛�" + inviteCode, false, true)); + } + + list.add(new ShareGoodsCommentChoiceInfo(ShareGoodsCommentChoiceInfo.TYPE_DOWNLOAD_LINK, "涓嬭浇閾炬帴", + "涓嬭浇閾炬帴锛�" + Constant.YINGYONGBAO_LINK, false, true)); + + list.add(new ShareGoodsCommentChoiceInfo(ShareGoodsCommentChoiceInfo.TYPE_FANLI_MONEY, "杩斿埄閲戦", + "杩斿埄閲戦锛毬� " + fanliMoney, false, true)); + + return list; + } + + /** + * + * @param acceptData + * @param uid + * -鐢ㄦ埛ID + * @param goodsId-鍟嗗搧ID + * @param source + * @param totalNum + * @param goodsType + * @param needGoods + * -鏄惁闇�瑕佸晢鍝佷俊鎭� + * @param request + * @param out + */ + @RequestMapping(value = "createShareInfo") + public void createShareInfo(AcceptData acceptData, Long uid, Long goodsId, String source, Integer totalNum, + Integer goodsType, Boolean needGoods, HttpServletRequest request, PrintWriter out) { + if (uid == null || uid <= 0) { + out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛ID涓嶈兘涓虹┖")); + return; + } + + if (needGoods == null) + needGoods = false; + try { + // 鏃ュ織璁板綍 + String info = String.format("type=share&uid=%s&goodsId=%s&source=%s&goodsType=%s", uid, goodsId, source, + goodsType); + LogHelper.orderInfo(info); + } catch (Exception e) { + } + + UserInfo user = userInfoService.getUserByIdWithMybatis(uid); + if (user != null && user.getState() != UserInfo.STATE_NORMAL) { + out.print(JsonUtil.loadFalseResult(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC)); + return; + } + + if (goodsId == null || goodsId <= 0) { + out.print(JsonUtil.loadFalseResult(2, "鍟嗗搧ID涓嶈兘涓虹┖")); + return; + } + + // 娣樺疂 + if (goodsType == null || goodsType == Constant.SOURCE_TYPE_TAOBAO) { + createTaoBaoShare(acceptData, uid, goodsId, totalNum, source, needGoods, request, out); + return; + } + + // 浜笢 + if (goodsType == Constant.SOURCE_TYPE_JD) { + createJDShare(acceptData, uid, goodsId, source, needGoods, out); + return; + } + + // 鎷煎澶� + if (goodsType == Constant.SOURCE_TYPE_PDD) { + createPDDShare(acceptData, uid, goodsId, source, needGoods, out); + return; + } + } + + public static String getERCodeContent(String template, TaoBaoGoodsBrief goods, String token) { + // return template.replace("[娣樺彛浠", token); + String commentText = template.replace("[鍘熶环]", goods.getZkPrice().toString()); + commentText = commentText.replace("[鍙d护]", token); + if (StringUtil.isNullOrEmpty(goods.getCouponInfo())) { + commentText = commentText.replace("棰嗗埜鎶㈣喘", "鎶㈣喘"); + commentText = commentText.replace("銆愬埜鍚庝环銆慬鍒稿悗浠穄鍏�", ""); + } else { + commentText = commentText.replace("[鍒稿悗浠穄", TaoBaoUtil.getAfterUseCouplePrice(goods) + ""); + } + return commentText; + } + + /** + * 鍒涘缓娣樺疂鍒嗕韩淇℃伅 + * + * @param acceptData + * @param uid + * @param goodsId + * @param totalNum + * @param source + * @param request + * @param out + */ + public void createTaoBaoShare(AcceptData acceptData, Long uid, Long goodsId, Integer totalNum, String source, + Boolean needGoods, HttpServletRequest request, PrintWriter out) { + if (needGoods == null) + needGoods = false; + + UserExtraTaoBaoInfo extraInfo = userExtraTaoBaoInfoService.getByUid(uid); + UserInfoExtra userExtraInfo = userInfoExtraService.getUserInfoExtra(uid); + String inviteCode = null; + if (userExtraInfo != null) { + if (!StringUtil.isNullOrEmpty(userExtraInfo.getInviteCodeVip())) { + inviteCode = userExtraInfo.getInviteCodeVip(); + } else { + inviteCode = userExtraInfo.getInviteCode(); + } + } + String relationId = null; + if (extraInfo != null && extraInfo.getRelationId() != null && extraInfo.getRelationValid() != null + && extraInfo.getRelationValid() == true) + relationId = extraInfo.getRelationId(); + + if (StringUtil.isNullOrEmpty(relationId)) { + out.print(JsonUtil.loadFalseResult(3, "娣樺疂鏈巿鏉冿紝璇峰墠寰�\"鎴戠殑\"缁戝畾娣樺疂璐﹀彿")); + return; + } + + // 娣樼ぜ閲戝垱寤哄垎浜� + if (source != null && "taolijin".equals(source)) {// 娣樼ぜ閲戝垎浜垱寤� + createTaoLijin(uid, goodsId, totalNum, relationId, request, out); + return; + } else {// 鏅�氬垎浜垱寤� + createCommonTaoBaoShare(acceptData.getPlatform(), acceptData.getVersion(), goodsId, inviteCode, uid, + needGoods, relationId, out); + return; + } + + } + + /** + * 娣樼ぜ閲戝垱寤哄垎浜� + * + * @param uid + * @param auctionId + * @param totalNum + * @param relationId + * @param request + * @param out + */ + public void createTaoLijin(Long uid, Long auctionId, int totalNum, String relationId, HttpServletRequest request, + PrintWriter out) { + try { + TaoBaoGoodsBrief goods = null; + try { + goods = TaoKeApiUtil.searchGoodsDetail(auctionId); + } catch (TaobaoGoodsDownException e2) { + e2.printStackTrace(); + } + + if (goods == null) { + out.print(JsonUtil.loadFalseResult("鍟嗗搧宸蹭笅鏋�")); + return; + } + + if (goods.getTkRate() == null || goods.getTkRate().compareTo(new BigDecimal(0)) <= 0) { + // TaoKeApiUtil.specialConvertCoupon(auctionId, app); + + } + + // 璁$畻鎺ㄥ箍绾㈠寘 + String warningRate = configTaoLiJinService.getValueByKey("warning_value", new Date()); + LogHelper.error("鎺ㄥ箍绾㈠寘姣斾緥:" + warningRate); + BigDecimal spreadMoney = TaoLiJinUtil.getSpreadMoney(warningRate, goods); + LogHelper.error("鎺ㄥ箍绾㈠寘:" + spreadMoney); + // 鎺ㄥ箍绾㈠寘 涓嶈兘灏忎簬1 + if (spreadMoney.compareTo(new BigDecimal(1.1)) < 0) { + out.print(JsonUtil.loadFalseResult(1, "璇ュ晢鍝佹窐绀奸噾涓嶈冻")); + return; + } + + ShareInfoVO shareInfo = new ShareInfoVO(); + shareInfo.setSpreadMoney(" 楼" + spreadMoney.toString()); + + String taoLiJinLink = null; + Long tljId = null; + try { + UserTaoLiJinRecord record = userTaoLiJinRecordService.createShareTaoLiJin(uid, totalNum, goods); + tljId = record.getId(); + taoLiJinLink = record.getSendUrl(); + shareInfo.setTljId(tljId.toString()); + shareInfo.setSurplusMoney(record.getSurplusMoney().toString()); + } catch (UserTaoLiJinRecordException e) { + out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg())); + return; + } + + String url = String.format("http://%s%s?uid=%s&id=%s&appType=flq&tid=%s", configService.getH5Host(), + Constant.systemCommonConfig.getShareGoodsPagePath(), AESUtil.encrypt(uid + "", Constant.UIDAESKEY), + auctionId + "", AESUtil.encrypt(tljId + "", Constant.UIDAESKEY)); + String shortLink = HttpUtil.getShortLink(url); + if (!StringUtil.isNullOrEmpty(shortLink)) { + url = shortLink; + } + shareInfo.setClickUrl(url); + + TaoBaoLink taoBaoLink = new TaoBaoLink(); + taoBaoLink.setCouponLink(taoLiJinLink); + taoBaoLink.setClickUrl(taoLiJinLink); + + // 鍒涘缓娣樺彛浠� + if (!StringUtil.isNullOrEmpty(taoLiJinLink)) {// 閫氳繃绔嬪嵆鎺ㄥ箍鏂瑰紡鑾峰彇娣樺彛浠ゆ垚鍔� + String quanToken = TaoKeApiUtil.getTKToken(goods.getPictUrl(), goods.getTitle(), taoLiJinLink); + if (!StringUtil.isNullOrEmpty(quanToken)) { + taoBaoLink.setTaoToken(quanToken); + } + } + shareInfo.setToken(TaoBaoUtil.filterTaoToken(taoBaoLink.getTaoToken())); + shareInfo.setRule(configService.get(ConfigKeyEnum.shareSingleGoodsRule.getKey())); + shareInfo.setPictUrl(TbImgUtil.getTBSizeImg(goods.getPictUrl(), 500)); + + // 鏃犲埜 + String shopType = goods.getUserType() == 0 ? TaoBaoConstant.SHARE_PRICE_TAOBAO + : TaoBaoConstant.SHARE_PRICE_TM; + String shareText = ""; + + if (StringUtil.isNullOrEmpty(goods.getCouponInfo())) { + String text = shareGoodsTextTemplateService.getCommonTemplate(uid); + if (StringUtil.isNullOrEmpty(text)) + text = configService.get(ConfigKeyEnum.goodsShareTextNoCoupon.getKey()); + shareText = text.replace("{鏍囬}", goods.getTitle()).replace("{鍟嗗搧鍘熶环}", + MoneyBigDecimalUtil.getWithNoZera(goods.getZkPrice()) + ""); + } else// 鏈夊埜 + { + String text = shareGoodsTextTemplateService.getTaoLiJinTemplate(uid); + if (StringUtil.isNullOrEmpty(text)) + text = configTaoLiJinService.getValueByKey("goods_share_text", new Date()); + + shareText = text.replace("{鏍囬}", goods.getTitle()) + .replace("{鍟嗗搧鍘熶环}", MoneyBigDecimalUtil.getWithNoZera(goods.getZkPrice()) + "") + .replace("{浼樻儬鍒搁潰棰潁", MoneyBigDecimalUtil.getWithNoZera(goods.getCouponAmount()).toString()) + .replace("{娣樼ぜ閲戦潰棰潁", MoneyBigDecimalUtil.getWithNoZera(spreadMoney).toString()) + .replace("{浼樻儬鍒镐环}", TaoBaoUtil.getAfterUseCouplePrice(goods) + ""); + } + + shareText = shareText.replace("{搴楅摵绫诲瀷}", shopType) + .replace("{鏈堥攢閲弣", TaoBaoUtil.getSaleCount(goods.getBiz30day())).replace("{棰嗗埜鐭摼}", shortLink) + .replace("{娣樺彛浠", TaoBaoUtil.filterTaoToken(taoBaoLink.getTaoToken())); + shareInfo.setShareText(shareText); + + String descText = shareText.replace(goods.getTitle(), "").trim(); + if (descText.startsWith("\\r\\n")) + descText = descText.substring(0); + + shareInfo.setDescText(descText); + + String imgs = configService.get(ConfigKeyEnum.goodsShareNotifyImgs.getKey()); + JSONArray array = JSONArray.fromObject(imgs); + shareInfo.setNotifyPicture(array.optString(0)); + + // 2.0.7鐗堟湰鍚庣殑鎻愮ず鍥剧墖 + imgs = configService.get(ConfigKeyEnum.goodsShareNotifyImgs207.getKey()); + array = JSONArray.fromObject(imgs); + shareInfo.setNotifyPictureNew(array.optString(0)); + + shareInfo.setNotifyDesc(configService.get(ConfigKeyEnum.goodsShareNotify.getKey())); + + // 娣诲姞鍒嗕韩璁板綍 + BigDecimal rate = hongBaoManageService.getShareRate(); + BigDecimal shareMoney = TaoBaoUtil.getShareGoodsHongBaoInfo(goods, rate); + shareInfo.setShareMoney("楼" + shareMoney.toString()); + try { + ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordGoodsDetail(uid, auctionId, + Constant.SOURCE_TYPE_TAOBAO, true); + shareInfo.setShareId(shareRecord.getRedisKey()); + } catch (Exception e) { + try { + LogHelper.errorDetailInfo(e); + } catch (Exception e1) { + e1.printStackTrace(); + } + } + out.print(JsonUtil.loadTrueResult(JsonUtil.getSimpleGson().toJson(shareInfo))); + + final TaoBaoLink taobaoLink = taoBaoLink; + final TaoBaoGoodsBrief finalGoods = goods; + // 寮傛鎿嶄綔 + com.yeshi.fanli.util.ThreadUtil.run(new Runnable() { + @Override + public void run() { + // 寮傛鎿嶄綔 娣诲姞鍒嗕韩璁板綍 + UserShareGoodsHistory history = new UserShareGoodsHistory(); + history.setUser(new UserInfo(uid)); + history.setHongbao(shareMoney); + history.setCreateTime(new Date()); + history.setGoodsType(UserShareGoodsHistory.TYPE_TAOBAO); + history.setTkCode(TaoBaoUtil.filterTaoToken(taobaoLink.getTaoToken())); + history.setLink(taobaoLink.getClickUrl()); + history.setQuanLink(taobaoLink.getCouponLink()); + history.setGoodsId(finalGoods.getAuctionId()); + history.setPostPicture(finalGoods.getPictUrl()); + history.setShareImg(taobaoLink.getClickUrl()); + List<String> imgList = finalGoods.getImgList(); + if (imgList == null) { + imgList = new ArrayList<>(); + } + history.setPictures(JsonUtil.getGson().toJson(imgList)); + shareGoodsService.addShareGoodsHistory(history); + } + }); + return; + } catch (Exception e) { + LogHelper.errorDetailInfo(e, "鍒嗕韩鍑洪敊:uid:" + uid + "auctionId:" + auctionId, ""); + out.print(JsonUtil.loadFalseResult("鍒涘缓鍒嗕韩鍑洪敊")); + businessEmergent110Service.shareTaoBaoGoodsError(StringUtil.Md5(auctionId + "")); + } + } + + public void createCommonTaoBaoShare(String platform, String version, Long goodsId, String inviteCode, Long uid, + boolean needGoods, String relationId, PrintWriter out) { + try { + ShareInfoVO shareInfo = new ShareInfoVO(); + + TaoBaoLink taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(uid, goodsId, relationId); + + if (taoBaoLink != null && taoBaoLink.getGoods() != null && needGoods) { + ConfigParamsDTO dto = hongBaoManageService.getShowComputeRate(platform, version); + GoodsDetailVO goodsInfo = GoodsDetailVOFactory.convertTaoBao(taoBaoLink.getGoods(), dto); + shareInfo.setGoodsInfo(goodsInfo); + } + + String url = String.format("http://%s%s?uid=%s&id=%s&appType=flq", configService.getH5Host(), + Constant.systemCommonConfig.getShareGoodsPagePath(), AESUtil.encrypt(uid + "", Constant.UIDAESKEY), + goodsId + ""); + + String shortLink = HttpUtil.getShortLink(url); + if (!StringUtil.isNullOrEmpty(shortLink)) { + url = shortLink; + } + + shareInfo.setClickUrl(url); + shareInfo.setToken(TaoBaoUtil.filterTaoToken(taoBaoLink.getTaoToken())); + shareInfo.setRule(configService.get(ConfigKeyEnum.shareSingleGoodsRule.getKey())); + shareInfo.setPictUrl(TbImgUtil.getTBSizeImg(taoBaoLink.getGoods().getPictUrl(), 500)); + + String commentTextStr = configService.get(ConfigKeyEnum.shareSingleGoodsCommentText.getKey()); + List<String> commentTexts = new ArrayList<>(); + if (!StringUtil.isNullOrEmpty(commentTextStr)) { + JSONArray array = JSONArray.fromObject(commentTextStr); + for (int i = 0; i < array.size(); i++) { + if (StringUtil.isNullOrEmpty(inviteCode)) { + if (array.optString(i).contains("[閭�璇风爜]")) { + continue; + } + } + if (StringUtil.isNullOrEmpty(inviteCode)) + commentTexts.add(array.optString(i).replace("[涓嬭浇閾炬帴]", Constant.YINGYONGBAO_LINK) + .replace("[娣樺彛浠", shareInfo.getToken())); + else + commentTexts.add(array.optString(i).replace("[涓嬭浇閾炬帴]", Constant.YINGYONGBAO_LINK) + .replace("[閭�璇风爜]", inviteCode).replace("[娣樺彛浠", shareInfo.getToken())); + } + } + shareInfo.setCommentTexts(commentTexts); + + String shareText = ""; + // 鏃犲埜 + String shopType = taoBaoLink.getGoods().getUserType() == 0 ? TaoBaoConstant.SHARE_PRICE_TAOBAO + : TaoBaoConstant.SHARE_PRICE_TM; + + if (StringUtil.isNullOrEmpty(taoBaoLink.getGoods().getCouponInfo())) { + String text = shareGoodsTextTemplateService.getCommonTemplate(uid); + if (StringUtil.isNullOrEmpty(text)) + text = configService.get(ConfigKeyEnum.goodsShareTextNoCoupon.getKey()); + shareText = text.replace("{鏍囬}", taoBaoLink.getGoods().getTitle()).replace("{鍟嗗搧鍘熶环}", + MoneyBigDecimalUtil.getWithNoZera(taoBaoLink.getGoods().getZkPrice()) + ""); + } else// 鏈夊埜 + { + String text = shareGoodsTextTemplateService.geteCouponTemplate(uid); + if (StringUtil.isNullOrEmpty(text)) + text = configService.get(ConfigKeyEnum.goodsShareTextCoupon.getKey()); + + shareText = text.replace("{鏍囬}", taoBaoLink.getGoods().getTitle()) + .replace("{鍟嗗搧鍘熶环}", MoneyBigDecimalUtil.getWithNoZera(taoBaoLink.getGoods().getZkPrice()) + "") + .replace("{浼樻儬鍒搁潰棰潁", + MoneyBigDecimalUtil.getWithNoZera(taoBaoLink.getGoods().getCouponAmount()).toString()) + .replace("{浼樻儬鍒镐环}", TaoBaoUtil.getAfterUseCouplePrice(taoBaoLink.getGoods()) + ""); + } + + shareText = shareText.replace("{搴楅摵绫诲瀷}", shopType) + .replace("{鏈堥攢閲弣", TaoBaoUtil.getSaleCount(taoBaoLink.getGoods().getBiz30day())) + .replace("{棰嗗埜鐭摼}", shortLink).replace("{娣樺彛浠", TaoBaoUtil.filterTaoToken(taoBaoLink.getTaoToken())); + + shareInfo.setShareText(shareText); + + String descText = shareText.replace(taoBaoLink.getGoods().getTitle(), "").trim(); + if (descText.startsWith("\\r\\n")) { + descText = descText.substring(0); + } + shareInfo.setDescText(descText); + // 娴嬭瘯 + // 2.0.2涔嬪墠 + if (!VersionUtil.greaterThan_2_0_2(platform, version)) + shareInfo.setClickUrl(getERCodeContent(configService.get(ConfigKeyEnum.taobaoShareQrcodeText.getKey()), + taoBaoLink.getGoods(), shareInfo.getToken())); + + shareInfo.setWxErCode(getERCodeContent(configService.get(ConfigKeyEnum.taobaoShareQrcodeText.getKey()), + taoBaoLink.getGoods(), shareInfo.getToken())); + + // 鎻愮ず鍥炬枃鍐呭 + String imgs = configService.getByVersion(ConfigKeyEnum.goodsShareNotifyImgs.getKey(), platform, + Integer.parseInt(version)); + JSONArray array = JSONArray.fromObject(imgs); + + shareInfo.setNotifyPicture(array.optString(0)); + + // 2.0.7鐗堟湰鍚庣殑鎻愮ず鍥剧墖 + imgs = configService.get(ConfigKeyEnum.goodsShareNotifyImgs207.getKey()); + array = JSONArray.fromObject(imgs); + shareInfo.setNotifyPictureNew(array.optString(0)); + + shareInfo.setNotifyDesc(configService.get(ConfigKeyEnum.goodsShareNotify.getKey())); + + // 鍒嗕韩閲戦 + BigDecimal rate = hongBaoManageService.getShareRate(); + BigDecimal shareMoney = TaoBaoUtil.getShareGoodsHongBaoInfo(taoBaoLink.getGoods(), rate); + shareInfo.setShareMoney("楼" + shareMoney.toString()); + + // 鍒嗕韩id + try { + ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordGoodsDetail(uid, goodsId, + Constant.SOURCE_TYPE_TAOBAO, false); + shareInfo.setShareId(shareRecord.getRedisKey()); + } catch (Exception e) { + try { + LogHelper.errorDetailInfo(e); + } catch (Exception e1) { + e1.printStackTrace(); + } + } + + String commentText = ""; + String recommendText = ""; + if (VersionUtil.greaterThan_2_0_7(platform, version)) { + TaoBaoGoodsBrief goods = taoBaoLink.getGoods(); + String template = configService.get(ConfigKeyEnum.quickShareGoodsText.getKey()); + recommendText = template.replace("[鍟嗗搧鏍囬]", goods.getTitle()).replace("[閿�閲廬", + TaoBaoUtil.getSaleCount(taoBaoLink.getGoods().getBiz30day())); + if (StringUtil.isNullOrEmpty(goods.getDescription())) { + recommendText = recommendText.replace("鎺ㄨ崘璇�:[鎺ㄨ崘璇璢", ""); + } else { + recommendText = recommendText.replace("[鎺ㄨ崘璇璢", goods.getDescription()); + } + + String quickCommentText = configService.get(ConfigKeyEnum.quickShareTBCommentText.getKey()); + commentText = quickCommentText.replace("[鍘熶环]", goods.getZkPrice().toString()); + commentText = commentText.replace("[鍙d护]", TaoBaoUtil.filterTaoToken(taoBaoLink.getTaoToken())); + if (StringUtil.isNullOrEmpty(taoBaoLink.getGoods().getCouponInfo())) { + commentText = commentText.replace("棰嗗埜鎶㈣喘", "鎶㈣喘"); + commentText = commentText.replace("銆愬埜鍚庝环銆慬鍒稿悗浠穄鍏�", ""); + recommendText = recommendText.replace("浼樻儬鍒�:[鍒搁潰棰漖", ""); + } else { + commentText = commentText.replace("[鍒稿悗浠穄", + TaoBaoUtil.getAfterUseCouplePrice(taoBaoLink.getGoods()) + ""); + recommendText = recommendText.replace("[鍒搁潰棰漖", + MoneyBigDecimalUtil.getWithNoZera(taoBaoLink.getGoods().getCouponAmount()).toString()); + } + } else { + recommendText = shareInfo.getDescText(); + commentText = shareInfo.getShareText(); + } + shareInfo.setCommentText(deleteBlankLine(commentText)); + shareInfo.setRecommendText(deleteBlankLine(recommendText)); + + // 璁剧疆璇勮鏂囨湰閫夐」 + shareInfo.setCommentTextChoiceList(getCommentChoiceList(shareInfo.getCommentText(), null, inviteCode, + TaoBaoUtil.getGoodsHongBaoMoney(taoBaoLink.getGoods(), hongBaoManageService.getFanLiRate()))); + + out.print(JsonUtil.loadTrueResult( + JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()).create().toJson(shareInfo))); + + final TaoBaoLink taobaoLink = taoBaoLink; + // 寮傛鎿嶄綔 + com.yeshi.fanli.util.ThreadUtil.run(new Runnable() { + @Override + public void run() { + // 寮傛鎿嶄綔 娣诲姞鍒嗕韩璁板綍 + UserShareGoodsHistory history = new UserShareGoodsHistory(); + history.setUser(new UserInfo(uid)); + history.setHongbao(shareMoney); + history.setCreateTime(new Date()); + history.setGoodsType(UserShareGoodsHistory.TYPE_TAOBAO); + history.setTkCode(TaoBaoUtil.filterTaoToken(taobaoLink.getTaoToken())); + history.setLink(taobaoLink.getClickUrl()); + history.setQuanLink(taobaoLink.getCouponLink()); + history.setGoodsId(taobaoLink.getGoods().getAuctionId()); + history.setPostPicture(taobaoLink.getGoods().getPictUrl()); + List<String> imgList = taobaoLink.getGoods().getImgList(); + if (imgList == null) { + imgList = new ArrayList<>(); + } + history.setPictures(JsonUtil.getGson().toJson(imgList)); + shareGoodsService.addShareGoodsHistory(history); + } + }); + return; + } catch (ShareGoodsException e) { + LogHelper.errorDetailInfo(e, "鍒嗕韩鍑洪敊:uid:" + uid + " goodsId:" + goodsId, ""); + out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMessage())); + businessEmergent110Service.shareTaoBaoGoodsError(StringUtil.Md5(goodsId + "")); + } + } + + /** + * 浜笢鍒涘缓鍒嗕韩 + * + * @param acceptData + * @param uid + * @param goodsId + * @param source + * @param goodsType + * @param request + * @param out + */ + public void createJDShare(AcceptData acceptData, Long uid, Long goodsId, String source, boolean needGoods, + PrintWriter out) { + JDGoods jdGoods = jdGoodsCacheUtil.getGoodsInfo(goodsId); + if (jdGoods == null) { + out.print(JsonUtil.loadFalseResult(1, "璇ュ晢鍝佸凡涓嬫灦")); + return; + } + + // String url = String.format("http://%s%s?uid=%s&id=%s", + // configService.getH5Host(), + // Constant.systemCommonConfig.getShareGoodsPagePathJD(), + // AESUtil.encrypt(uid + "", Constant.UIDAESKEY), + // goodsId + ""); + + String couponUrl = null; + JDCouponInfo couponInfo = JDUtil.getShowCouponInfo(jdGoods); + if (couponInfo != null) { + couponUrl = couponInfo.getLink(); + } + String materialId = "https://item.jd.com/" + goodsId + ".html"; + String jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, JDApiUtil.POSITION_SHARE + "", + uid + ""); + + ShareInfoVO shareInfo = new ShareInfoVO(); + shareInfo.setClickUrl(jumpLink); + shareInfo.setWxErCode(jumpLink); + shareInfo.setRule(configService.get(ConfigKeyEnum.shareRuleLinkJD.getKey())); + shareInfo.setPictUrl(jdGoods.getPicUrl()); + shareInfo.setCommentTexts(new ArrayList<>()); + + if (needGoods) + shareInfo.setGoodsInfo(GoodsDetailVOFactory.convertJDGoods(jdGoods, + hongBaoManageService.getShowComputeRate(acceptData.getPlatform(), acceptData.getVersion()))); + + String shareText = ""; + boolean hasCoupon = false; + + // 鍒嗕韩妯℃澘 + ShareGoodsTextTemplate textTemplate = shareGoodsTextTemplateService.getShareGoodsTextTemplate(uid); + if (couponInfo == null) { // 鏃犲埜妯℃澘 + if (textTemplate != null) + shareText = textTemplate.getShareJDTextTemplate(); + + if (StringUtil.isNullOrEmpty(shareText)) + shareText = configService.get(ConfigKeyEnum.goodsShareTextNoCouponJD.getKey()); + } else { // 鏈夊埜妯℃澘 + hasCoupon = true; + if (textTemplate != null) + shareText = textTemplate.getShareJDTextTemplateCoupon(); + + if (StringUtil.isNullOrEmpty(shareText)) + shareText = configService.get(ConfigKeyEnum.goodsShareTextCouponJD.getKey()); + } + shareText = shareGoodsTextTemplateService.createContentByTemplateJD(shareText, uid, jdGoods, jumpLink, + hasCoupon); + shareInfo.setShareText(shareText); + + String descText = shareText.replace(jdGoods.getSkuName(), "").trim(); + if (descText.startsWith("\\r\\n")) { + descText = descText.substring(0); + } + shareInfo.setDescText(descText); + + String imgs = configService.getByVersion(ConfigKeyEnum.goodsShareNotifyImgs.getKey(), acceptData.getPlatform(), + Integer.parseInt(acceptData.getVersion())); + JSONArray array = JSONArray.fromObject(imgs); + + shareInfo.setNotifyPicture(array.size() > 1 ? array.optString(1) : array.optString(0)); + + // 2.0.7鐗堟湰鍚庣殑鎻愮ず鍥剧墖 + imgs = configService.get(ConfigKeyEnum.goodsShareNotifyImgs207.getKey()); + array = JSONArray.fromObject(imgs); + shareInfo.setNotifyPictureNew(array.size() > 1 ? array.optString(1) : array.optString(0)); + + shareInfo.setNotifyDesc(configService.get(ConfigKeyEnum.goodsShareNotifyJD.getKey())); + + // 娣诲姞鍒嗕韩璁板綍 + BigDecimal shareRate = hongBaoManageService.getShareRate(); + BigDecimal shareMoney = JDUtil.getGoodsFanLiMoney(jdGoods, shareRate); + shareInfo.setShareMoney("楼" + shareMoney.toString()); + try { + ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordGoodsDetail(uid, goodsId, + Constant.SOURCE_TYPE_JD, false); + shareInfo.setShareId(shareRecord.getRedisKey()); + } catch (Exception e) { + try { + LogHelper.errorDetailInfo(e); + } catch (Exception e1) { + e1.printStackTrace(); + } + } + + String inviteCode = userInfoExtraService.getInviteCodeByUid(uid); + + String commentText = ""; + String recommendText = ""; + if (VersionUtil.greaterThan_2_0_7(acceptData.getPlatform(), acceptData.getVersion())) { + String template = configService.get(ConfigKeyEnum.quickShareGoodsText.getKey()); + recommendText = template.replace("[鍟嗗搧鏍囬]", jdGoods.getSkuName()).replace("[閿�閲廬", + JDUtil.getSaleCount(jdGoods.getInOrderCount30Days())); + // 鏃犳帹鑽愯 + recommendText = recommendText.replace("鎺ㄨ崘璇�:[鎺ㄨ崘璇璢", ""); + + String quickCommentText = configService.get(ConfigKeyEnum.quickShareJDCommentText.getKey()); + commentText = quickCommentText.replace("[鍘熶环]", jdGoods.getPrice().toString()); + commentText = commentText.replace("[閾炬帴]", jumpLink); + if (couponInfo == null) { + commentText = commentText.replace("棰嗗埜鎶㈣喘", "鎶㈣喘"); + commentText = commentText.replace("銆愬埜鍚庝环銆慬鍒稿悗浠穄鍏�", ""); + recommendText = recommendText.replace("浼樻儬鍒�:[鍒搁潰棰漖", ""); + } else { + commentText = commentText.replace("[鍒稿悗浠穄", + BigDecimalUtil.getWithNoZera(JDUtil.getQuanPrice(jdGoods)).toString()); + recommendText = recommendText.replace("[鍒搁潰棰漖", + BigDecimalUtil.getWithNoZera(JDUtil.getShowCouponInfo(jdGoods).getDiscount()).toString()); + } + } else { + commentText = shareInfo.getShareText(); + recommendText = shareInfo.getDescText(); + } + shareInfo.setCommentText(deleteBlankLine(commentText)); + shareInfo.setRecommendText(deleteBlankLine(recommendText)); + + // 璁剧疆璇勮鏂囨湰閫夐」 + shareInfo.setCommentTextChoiceList(getCommentChoiceList(null, shareInfo.getCommentText(), inviteCode, + JDUtil.getGoodsFanLiMoney(jdGoods, hongBaoManageService.getFanLiRate()))); + + out.print(JsonUtil.loadTrueResult( + JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()).create().toJson(shareInfo))); + + // 寮傛鎿嶄綔 + final JDGoods goods = jdGoods; + com.yeshi.fanli.util.ThreadUtil.run(new Runnable() { + @Override + public void run() { + // 寮傛鎿嶄綔 娣诲姞鍒嗕韩璁板綍 + UserShareGoodsHistory history = new UserShareGoodsHistory(); + history.setUser(new UserInfo(uid)); + history.setHongbao(shareMoney); + history.setCreateTime(new Date()); + history.setGoodsType(Constant.SOURCE_TYPE_JD); + history.setTkCode(null); + history.setLink(null); + history.setQuanLink(null); + history.setGoodsId(goodsId); + history.setPostPicture(goods.getPicUrl()); + history.setShareImg(jumpLink); + + List<String> imgList = goods.getImageList(); + if (imgList == null) { + imgList = new ArrayList<>(); + } + history.setPictures(JsonUtil.getGson().toJson(imgList)); + shareGoodsService.addShareGoodsHistory(history); + } + }); + } + + + private String deleteBlankLine(String st){ + return st.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n"); + } + + + /** + * 鎷煎澶氬垎浜� + * + * @param acceptData + * @param uid + * @param goodsId + * @param source + * @param out + */ + public void createPDDShare(AcceptData acceptData, Long uid, Long goodsId, String source, boolean needGoods, + PrintWriter out) { + PDDGoodsDetail goods = pinDuoDuoCacheUtil.getGoodsInfo(goodsId); + if (goods == null) { + out.print(JsonUtil.loadFalseResult(1, "璇ュ晢鍝佸凡涓嬫灦")); + return; + } + + // String url = String.format("http://%s%s?uid=%s&id=%s", + // configService.getH5Host(), + // Constant.systemCommonConfig.getShareGoodsPagePathPDD(), + // AESUtil.encrypt(uid + "", Constant.UIDAESKEY), + // goodsId + ""); + + String jumpLink = PinDuoDuoApiUtil.getPromotionUrl(goodsId, PinDuoDuoApiUtil.PID_SHARE + "", uid + ""); + + ShareInfoVO shareInfo = new ShareInfoVO(); + shareInfo.setClickUrl(jumpLink); + shareInfo.setWxErCode(jumpLink); + shareInfo.setCommentTexts(new ArrayList<>()); + shareInfo.setRule(configService.get(ConfigKeyEnum.shareRuleLinkPDD.getKey())); + shareInfo.setPictUrl(goods.getGoodsImageUrl()); + if (needGoods) { + shareInfo + .setGoodsInfo(GoodsDetailVOFactory.convertPDDGoods(goods, + new ConfigParamsDTO(hongBaoManageService.getFanLiRate(), + hongBaoManageService.getShareRate(), Constant.MAX_REWARD_RATE, + hongBaoManageService.getVIPFanLiRate()))); + } + + String template = ""; + boolean hasCoupon = false; + ShareGoodsTextTemplate textTemplate = shareGoodsTextTemplateService.getShareGoodsTextTemplate(uid); + if (goods.getHasCoupon() == null || !goods.getHasCoupon()) { + if (textTemplate != null) + template = textTemplate.getSharePDDTextTemplate(); + + if (StringUtil.isNullOrEmpty(template)) + template = configService.get(ConfigKeyEnum.goodsShareTextNocouponPDD.getKey()); + } else { + hasCoupon = true; + if (textTemplate != null) + template = textTemplate.getSharePDDTextTemplateCoupon(); + + if (StringUtil.isNullOrEmpty(template)) + template = configService.get(ConfigKeyEnum.goodsShareTextCouponPDD.getKey()); + } + + // 鍒涘缓鍙d护 + String token = PinDuoDuoApiUtil.createGenerate(goodsId); + + // 鐢熸垚鍒嗕韩鍐呭 + String shareText = shareGoodsTextTemplateService.createContentByTemplatePDD(template, uid, goods, jumpLink, + hasCoupon, token); + shareInfo.setShareText(shareText); + + String descText = shareText.replace(goods.getGoodsName(), "").trim(); + if (descText.startsWith("\\r\\n")) { + descText = descText.substring(0); + } + shareInfo.setDescText(descText); + + // + String imgs = configService.getByVersion(ConfigKeyEnum.goodsShareNotifyImgs.getKey(), acceptData.getPlatform(), + Integer.parseInt(acceptData.getVersion())); + JSONArray array = JSONArray.fromObject(imgs); + + shareInfo.setNotifyPicture(array.size() > 1 ? array.optString(1) : array.optString(0)); + + // 2.0.7鐗堟湰鍚庣殑鎻愮ず鍥剧墖 + imgs = configService.get(ConfigKeyEnum.goodsShareNotifyImgs207.getKey()); + array = JSONArray.fromObject(imgs); + shareInfo.setNotifyPictureNew(array.size() > 1 ? array.optString(1) : array.optString(0)); + + shareInfo.setNotifyDesc(configService.get(ConfigKeyEnum.goodsShareNotifyPDD.getKey())); + + // 娣诲姞鍒嗕韩璁板綍 + BigDecimal shareRate = hongBaoManageService.getShareRate(); + BigDecimal shareMoney = PinDuoDuoUtil.getGoodsFanLiMoney(goods, shareRate); + shareInfo.setShareMoney("楼" + shareMoney.toString()); + + try { + ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordGoodsDetail(uid, goodsId, + Constant.SOURCE_TYPE_PDD, false); + shareInfo.setShareId(shareRecord.getRedisKey()); + } catch (Exception e) { + try { + LogHelper.errorDetailInfo(e); + } catch (Exception e1) { + e1.printStackTrace(); + } + } + + String inviteCode = userInfoExtraService.getInviteCodeByUid(uid); + + String commentText = ""; + String recommendText = ""; + if (VersionUtil.greaterThan_2_0_7(acceptData.getPlatform(), acceptData.getVersion())) { + String qtemplate = configService.get(ConfigKeyEnum.quickShareGoodsText.getKey()); + recommendText = qtemplate.replace("[鍟嗗搧鏍囬]", goods.getGoodsName()); + + // 鎬婚攢閲� + String salesTip = goods.getSalesTip(); + if (StringUtil.isNullOrEmpty(salesTip)) { + salesTip = "0"; + } + recommendText = recommendText.replace("[閿�閲廬", salesTip); + recommendText = recommendText.replace("鎺ㄨ崘璇�:[鎺ㄨ崘璇璢", ""); + + String quickCommentText = configService.get(ConfigKeyEnum.quickSharePDDCommentText.getKey()); + commentText = quickCommentText.replace("[鍘熶环]", MoneyBigDecimalUtil + .div(new BigDecimal(goods.getMinGroupPrice()), new BigDecimal(100)).setScale(2).toString()); + commentText = commentText.replace("[閾炬帴]", jumpLink); + if (!hasCoupon) { + commentText = commentText.replace("棰嗗埜鎶㈣喘", "鎶㈣喘"); + commentText = commentText.replace("銆愬埜鍚庝环銆慬鍒稿悗浠穄鍏�", ""); + recommendText = recommendText.replace("浼樻儬鍒�:[鍒搁潰棰漖", ""); + } else { + commentText = commentText.replace("[鍒稿悗浠穄", + BigDecimalUtil.getWithNoZera(PinDuoDuoUtil.getQuanPrice(goods)).toString()); + + BigDecimal hundred = new BigDecimal(100); + BigDecimal amount = MoneyBigDecimalUtil.div(new BigDecimal(goods.getCouponDiscount()), hundred); + recommendText = recommendText.replace("[鍒搁潰棰漖", BigDecimalUtil.getWithNoZera(amount).toString()); + } + } else { + commentText = shareInfo.getShareText(); + recommendText = shareInfo.getDescText(); + } + shareInfo.setRecommendText(deleteBlankLine(recommendText)); + shareInfo.setCommentText(deleteBlankLine(commentText)); + + // 璁剧疆璇勮鏂囨湰閫夐」 + shareInfo.setCommentTextChoiceList(getCommentChoiceList(null,shareInfo.getCommentText(), inviteCode, + PinDuoDuoUtil.getGoodsFanLiMoney(goods, hongBaoManageService.getFanLiRate()))); + + out.print(JsonUtil.loadTrueResult( + JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()).create().toJson(shareInfo))); + + // 寮傛鎿嶄綔 + com.yeshi.fanli.util.ThreadUtil.run(new Runnable() { + @Override + public void run() { + // 寮傛鎿嶄綔 娣诲姞鍒嗕韩璁板綍 + UserShareGoodsHistory history = new UserShareGoodsHistory(); + history.setUser(new UserInfo(uid)); + history.setHongbao(shareMoney); + history.setCreateTime(new Date()); + history.setGoodsType(Constant.SOURCE_TYPE_PDD); + history.setTkCode(null); + history.setLink(null); + history.setQuanLink(null); + history.setGoodsId(goodsId); + history.setPostPicture(goods.getGoodsImageUrl()); + history.setShareImg(jumpLink); + List<String> imgList = null; + String[] goodsGalleryUrls = goods.getGoodsGalleryUrls(); + if (goodsGalleryUrls != null) { + imgList = Arrays.asList(goodsGalleryUrls); + } + if (imgList == null) { + imgList = new ArrayList<>(); + } + history.setPictures(JsonUtil.getGson().toJson(imgList)); + shareGoodsService.addShareGoodsHistory(history); + } + }); + } + + /** + * 棰勮鍒嗕韩妯℃澘 + * + * @param acceptData + * @param uid + * @param template + * @param goodsId + * @param hasCoupon + * @param out + */ + @RequestMapping(value = "viewShareTextTemplate", method = RequestMethod.POST) + public void viewShareTextTemplate(AcceptData acceptData, Long uid, String template, Integer goodsType, Long goodsId, + Long tljId, Boolean hasCoupon, PrintWriter out) { + if (uid == null) { + out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); + return; + } + + if (goodsId == null) { + out.print(JsonUtil.loadFalseResult(3, "鍟嗗搧ID涓嶈兘涓虹┖")); + return; + } + + if (goodsType == null || goodsType > 3 || goodsType < 1) { + out.print(JsonUtil.loadFalseResult(3, "骞冲彴绫诲瀷涓嶆纭�")); + return; + } + + if (goodsType == Constant.SOURCE_TYPE_TAOBAO) { + createTaoBaoViewText(goodsType, uid, template, goodsId, tljId, hasCoupon, out); + return; + } + + if (goodsType == Constant.SOURCE_TYPE_JD) { + createJDViewText(goodsType, uid, template, goodsId, hasCoupon, out); + return; + } + + if (goodsType == Constant.SOURCE_TYPE_PDD) { + createPDDViewText(goodsType, uid, template, goodsId, hasCoupon, out); + return; + } + } + + /** + * 鍒涘缓娣樺疂鍒嗕韩妯℃澘 + * + * @param uid + * @param template + * @param goodsType + * @param goodsId + * @param tljId + * @param hasCoupon + * @param out + */ + public void createTaoBaoViewText(Integer goodsType, Long uid, String template, Long goodsId, Long tljId, + Boolean hasCoupon, PrintWriter out) { + TaoBaoGoodsBrief goods = taoBaoGoodsCacheUtil.getCommonTaoBaoGoodsInfo(goodsId); + if (goods == null) + try { + goods = redisManager.getTaoBaoGoodsBrief(goodsId); + } catch (TaobaoGoodsDownException e) { + goods = null; + } + + if (goods == null) { + out.print(JsonUtil.loadFalseResult(4, "鍟嗗搧宸蹭笅鏋�")); + return; + } + + if (StringUtil.isNullOrEmpty(template)) { + template = getShareTemplate(goodsType, uid, hasCoupon, tljId); + } + + // 鏍¢獙鍒告ā鏉挎槸鍚︽纭� + if (hasCoupon) { + // 鏈夊埜鍟嗗搧 + if (tljId != null) { + try { + shareGoodsTextTemplateService.isTaoLiJinTemplateRight(template); + } catch (ShareGoodsTextTemplateException e) { + out.print(JsonUtil.loadFalseResult(5, e.getMsg())); + return; + } + } else { + try { + shareGoodsTextTemplateService.isCouponTemplateRight(template); + } catch (ShareGoodsTextTemplateException e) { + out.print(JsonUtil.loadFalseResult(5, e.getMsg())); + return; + } + } + } else { + // 鏅�氬晢鍝� + try { + shareGoodsTextTemplateService.isCommonTemplateRight(template); + } catch (ShareGoodsTextTemplateException e) { + out.print(JsonUtil.loadFalseResult(5, e.getMsg())); + return; + } + } + + String url = null; + if (tljId != null) { + UserTaoLiJinRecord userTaoLiJinRecord = userTaoLiJinRecordService.selectByPrimaryKey(tljId); + if (userTaoLiJinRecord == null) { + out.print(JsonUtil.loadFalseResult(5, "娣樼ぜ閲戦鍙栭摼鎺ヤ笉瀛樺湪")); + return; + } + url = userTaoLiJinRecord.getSendUrl(); + } else { + url = String.format("http://%s%s?uid=%s&id=%s&appType=flq", configService.getH5Host(), + Constant.systemCommonConfig.getShareGoodsPagePath(), AESUtil.encrypt(uid + "", Constant.UIDAESKEY), + goods.getAuctionId() + ""); + } + + String shortLink = HttpUtil.getShortLink(url); + + // 鏌ヨ鏄惁鏈夊垎浜� + UserShareGoodsHistory userShareHistory = shareGoodsService.getShareGoodsHistory(uid, goods.getAuctionId()); + String token = ""; + if (userShareHistory != null) { + token = userShareHistory.getTkCode(); + } + + if (StringUtil.isNullOrEmpty(token)) { + TaoKeAppInfo app = new TaoKeAppInfo(); + app.setAdzoneId(TaoBaoConstant.TAOBAO_RELATION_PID_DEFAULT.split("_")[3]); + app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY); + app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET); + app.setPid(TaoBaoConstant.TAOBAO_RELATION_PID_DEFAULT); + TaoBaoGoodsBrief goodsLink = TaoKeApiUtil.specialConvertCoupon(goods.getAuctionId(), app); + if (goodsLink != null) + token = TaoKeApiUtil.getTKToken(goods.getPictUrl(), goods.getTitle(), + StringUtil.isNullOrEmpty(goodsLink.getCouponLink()) ? goodsLink.getAuctionUrl() + : goodsLink.getCouponLink()); + } + String content = shareGoodsTextTemplateService.createContentByTemplate(template, uid, goods, token, shortLink, + hasCoupon, tljId); + JSONObject data = new JSONObject(); + data.put("content", content); + out.print(JsonUtil.loadTrueResult(data)); + } + + /** + * 鍒涘缓浜笢鍒嗕韩妯℃澘 + * + * @param uid + * @param template + * @param goodsType + * @param goodsId + * @param tljId + * @param hasCoupon + * @param out + */ + public void createJDViewText(Integer goodsType, Long uid, String template, Long goodsId, Boolean hasCoupon, + PrintWriter out) { + JDGoods goods = jdGoodsCacheUtil.getGoodsInfo(goodsId); + if (goods == null) { + out.print(JsonUtil.loadFalseResult(4, "鍟嗗搧宸蹭笅鏋�")); + return; + } + + if (StringUtil.isNullOrEmpty(template)) { + template = getShareTemplate(goodsType, uid, hasCoupon, null); + } + + // 鏍¢獙鍒告ā鏉挎槸鍚︽纭� + if (hasCoupon) { + // 鏈夊埜鍟嗗搧 + try { + shareGoodsTextTemplateService.isCouponTemplateRightJD(template); + } catch (ShareGoodsTextTemplateException e) { + out.print(JsonUtil.loadFalseResult(5, e.getMsg())); + return; + } + + } else { + // 鏅�氬晢鍝� + try { + shareGoodsTextTemplateService.isCommonTemplateRightJD(template); + } catch (ShareGoodsTextTemplateException e) { + out.print(JsonUtil.loadFalseResult(5, e.getMsg())); + return; + } + } + + String couponUrl = null; + JDCouponInfo couponInfo = JDUtil.getShowCouponInfo(goods); + if (couponInfo != null) { + couponUrl = couponInfo.getLink(); + } + String materialId = "https://item.jd.com/" + goodsId + ".html"; + String shortLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, JDApiUtil.POSITION_SHARE + "", + uid + ""); + + String content = shareGoodsTextTemplateService.createContentByTemplateJD(template, uid, goods, shortLink, + hasCoupon); + JSONObject data = new JSONObject(); + data.put("content", content); + out.print(JsonUtil.loadTrueResult(data)); + } + + /** + * 鍒涘缓鎷煎澶氬垎浜ā鏉� + * + * @param uid + * @param template + * @param goodsType + * @param goodsId + * @param tljId + * @param hasCoupon + * @param out + */ + public void createPDDViewText(Integer goodsType, Long uid, String template, Long goodsId, Boolean hasCoupon, + PrintWriter out) { + PDDGoodsDetail goods = pinDuoDuoCacheUtil.getGoodsInfo(goodsId); + if (goods == null) { + out.print(JsonUtil.loadFalseResult(4, "鍟嗗搧宸蹭笅鏋�")); + return; + } + + if (StringUtil.isNullOrEmpty(template)) { + template = getShareTemplate(goodsType, uid, hasCoupon, null); + } + + // 鏍¢獙鍒告ā鏉挎槸鍚︽纭� + if (hasCoupon) { + // 鏈夊埜鍟嗗搧 + try { + shareGoodsTextTemplateService.isCouponTemplateRightPDD(template); + } catch (ShareGoodsTextTemplateException e) { + out.print(JsonUtil.loadFalseResult(5, e.getMsg())); + return; + } + + } else { + // 鏅�氬晢鍝� + try { + shareGoodsTextTemplateService.isCommonTemplateRightPDD(template); + } catch (ShareGoodsTextTemplateException e) { + out.print(JsonUtil.loadFalseResult(5, e.getMsg())); + return; + } + } + + // // 鍒涘缓h5杩炴帴 + // String url = String.format("http://%s%s?uid=%s&id=%s&appType=flq", + // configService.getH5Host(), + // Constant.systemCommonConfig.getShareGoodsPagePath(), + // AESUtil.encrypt(uid + "", Constant.UIDAESKEY), + // goodsId + ""); + // String shortLink = HttpUtil.getShortLink(url); + + String shortLink = PinDuoDuoApiUtil.getPromotionUrl(goodsId, PinDuoDuoApiUtil.PID_SHARE + "", uid + ""); + + // 鍒涘缓鍙d护 + String token = PinDuoDuoApiUtil.createGenerate(goodsId); + + // 鐢熸垚鍒嗕韩鍐呭 + String content = shareGoodsTextTemplateService.createContentByTemplatePDD(template, uid, goods, shortLink, + hasCoupon, token); + + JSONObject data = new JSONObject(); + data.put("content", content); + out.print(JsonUtil.loadTrueResult(data)); + } + + /** + * 鑾峰彇鍒嗕韩妯℃澘 + * + * @param uid + * @param hasCoupon + * @param tljId + * @return + */ + private String getShareTemplate(int goodsType, Long uid, boolean hasCoupon, Long tljId) { + String template = ""; + if (goodsType == Constant.SOURCE_TYPE_TAOBAO) { + if (hasCoupon) { + if (tljId != null) { + template = shareGoodsTextTemplateService.getTaoLiJinTemplate(uid); + if (StringUtil.isNullOrEmpty(template)) + template = configTaoLiJinService.getValueByKey("goods_share_text", new Date()); + } else { + template = shareGoodsTextTemplateService.geteCouponTemplate(uid); + if (StringUtil.isNullOrEmpty(template)) + template = configService.get(ConfigKeyEnum.goodsShareTextCoupon.getKey()); + } + + } else { + template = shareGoodsTextTemplateService.getCommonTemplate(uid); + if (StringUtil.isNullOrEmpty(template)) + template = configService.get(ConfigKeyEnum.goodsShareTextNoCoupon.getKey()); + } + } else if (goodsType == Constant.SOURCE_TYPE_JD) { + ShareGoodsTextTemplate textTemplate = shareGoodsTextTemplateService.getShareGoodsTextTemplate(uid); + if (hasCoupon) { + if (textTemplate != null) { + template = textTemplate.getShareJDTextTemplateCoupon(); + } + if (StringUtil.isNullOrEmpty(template)) { + template = configService.get(ConfigKeyEnum.goodsShareTextCouponJD.getKey()); + } + } else { + if (textTemplate != null) { + template = textTemplate.getShareJDTextTemplate(); + } + + if (StringUtil.isNullOrEmpty(template)) { + template = configService.get(ConfigKeyEnum.goodsShareTextNoCouponJD.getKey()); + } + } + } else if (goodsType == Constant.SOURCE_TYPE_PDD) { + ShareGoodsTextTemplate textTemplate = shareGoodsTextTemplateService.getShareGoodsTextTemplate(uid); + if (hasCoupon) { + if (textTemplate != null) { + template = textTemplate.getSharePDDTextTemplateCoupon(); + } + if (StringUtil.isNullOrEmpty(template)) { + template = configService.get(ConfigKeyEnum.goodsShareTextCouponPDD.getKey()); + } + } else { + if (textTemplate != null) { + template = textTemplate.getSharePDDTextTemplate(); + } + + if (StringUtil.isNullOrEmpty(template)) { + template = configService.get(ConfigKeyEnum.goodsShareTextNocouponPDD.getKey()); + } + } + } + return template; + } + + /** + * 鑾峰彇鍒嗕韩妯℃澘 + * + * @param acceptData + * @param uid + * @param hasCoupon + * @param out + */ + @RequestMapping(value = "getShareTextTemplate", method = RequestMethod.POST) + public void getShareTextTemplate(AcceptData acceptData, Integer goodsType, Long uid, Long tljId, Boolean hasCoupon, + PrintWriter out) { + if (uid == null) { + out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); + return; + } + + if (hasCoupon == null) { + out.print(JsonUtil.loadFalseResult(1, "鏄惁鏈夊埜瀛楁涓虹┖")); + return; + } + + JSONObject data = new JSONObject(); + data.put("template", getShareTemplate(goodsType, uid, hasCoupon, tljId)); + out.print(JsonUtil.loadTrueResult(data)); + } + + /** + * 鑾峰彇鍒嗕韩妯℃澘缂栬緫瑙勫垯 + * + * @param acceptData + * @param out + */ + @RequestMapping(value = "getShareTextTemplateRules", method = RequestMethod.POST) + public void getShareTextTemplateRules(AcceptData acceptData, Integer goodsType, Long tljId, PrintWriter out) { + if (goodsType == null || goodsType > 3 || goodsType < 1) { + out.print(JsonUtil.loadFalseResult(3, "骞冲彴绫诲瀷涓嶆纭�")); + return; + } + + if (goodsType == Constant.SOURCE_TYPE_TAOBAO) { + if (tljId != null) { + out.print( + JsonUtil.loadTrueResult(configTaoLiJinService.getValueByKey("share_goods_rules", new Date()))); + } else { + out.print(JsonUtil.loadTrueResult(configService.get(ConfigKeyEnum.shareGoodsTemplateRules.getKey()))); + } + } else if (goodsType == Constant.SOURCE_TYPE_JD) { + out.print(JsonUtil.loadTrueResult(configService.get(ConfigKeyEnum.shareGoodsTemplateRulesJD.getKey()))); + } else if (goodsType == Constant.SOURCE_TYPE_PDD) { + out.print(JsonUtil.loadTrueResult(configService.get(ConfigKeyEnum.shareGoodsTemplateRulesPDD.getKey()))); + } + } + + /** + * 淇濆瓨妯℃澘 + * + * @param acceptData + * @param uid + * @param hasCoupon + * @param template + * @param out + */ + @RequestMapping(value = "saveShareTextTemplate", method = RequestMethod.POST) + public void saveShareTextTemplate(AcceptData acceptData, Integer goodsType, Long uid, Long tljId, Boolean hasCoupon, + String template, PrintWriter out) { + if (StringUtil.isNullOrEmpty(template)) { + out.print(JsonUtil.loadFalseResult(1, "鍒嗕韩妯℃澘涓虹┖")); + return; + } + + if (goodsType == null || goodsType > 3 || goodsType < 1) { + out.print(JsonUtil.loadFalseResult(3, "骞冲彴绫诲瀷涓嶆纭�")); + return; + } + + try { + if (goodsType == Constant.SOURCE_TYPE_TAOBAO) { + // 鏍¢獙鍒告ā鏉挎槸鍚︽纭� + if (hasCoupon) { + // 鏈夊埜鍟嗗搧 + if (tljId != null) { + shareGoodsTextTemplateService.isTaoLiJinTemplateRight(template); + shareGoodsTextTemplateService.saveTaoLiJinTemplate(uid, template); + } else { + shareGoodsTextTemplateService.isCouponTemplateRight(template); + shareGoodsTextTemplateService.saveCouponTemplate(uid, template); + } + } else { + // 鏅�氬晢鍝� + shareGoodsTextTemplateService.isCommonTemplateRight(template); + shareGoodsTextTemplateService.saveCommonTemplate(uid, template); + } + } else if (goodsType == Constant.SOURCE_TYPE_JD) { + if (hasCoupon) { + shareGoodsTextTemplateService.isCouponTemplateRightJD(template); + shareGoodsTextTemplateService.saveCouponTemplateJD(uid, template); + } else { + shareGoodsTextTemplateService.isCommonTemplateRightJD(template); + shareGoodsTextTemplateService.saveCommonTemplateJD(uid, template); + out.print(JsonUtil.loadTrueResult("")); + } + } else if (goodsType == Constant.SOURCE_TYPE_PDD) { + if (hasCoupon) { + shareGoodsTextTemplateService.isCouponTemplateRightPDD(template); + shareGoodsTextTemplateService.saveCouponTemplatePDD(uid, template); + } else { + shareGoodsTextTemplateService.isCommonTemplateRightPDD(template); + shareGoodsTextTemplateService.saveCommonTemplatePDD(uid, template); + out.print(JsonUtil.loadTrueResult("")); + } + } + } catch (ShareGoodsTextTemplateException e) { + out.print(JsonUtil.loadFalseResult(5, e.getMsg())); + return; + } + out.print(JsonUtil.loadTrueResult("")); + } + + /** + * 杩樺師妯℃澘 + * + * @param acceptData + * @param uid + * @param hasCoupon + * -鏄惁鏈夊埜 + * @param out + */ + @RequestMapping(value = "resetShareTextTemplate", method = RequestMethod.POST) + public void resetShareTextTemplate(AcceptData acceptData, Long uid, Long goodsId, Long tljId, Boolean hasCoupon, + Integer goodsType, PrintWriter out) { + if (uid == null) { + out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); + return; + } + + if (goodsType == null || goodsType > 3 || goodsType < 1) { + out.print(JsonUtil.loadFalseResult(3, "骞冲彴绫诲瀷涓嶆纭�")); + return; + } + + if (goodsType == Constant.SOURCE_TYPE_TAOBAO) { + if (hasCoupon) { + if (tljId != null) { + shareGoodsTextTemplateService.resetTaoLijinTemplate(uid); + } else { + shareGoodsTextTemplateService.resetCouponTemplate(uid); + } + } else { + shareGoodsTextTemplateService.resetCommonTemplate(uid); + } + } else if (goodsType == Constant.SOURCE_TYPE_JD) { + if (hasCoupon) { + shareGoodsTextTemplateService.resetCouponTemplateJD(uid); + } else { + shareGoodsTextTemplateService.resetCommonTemplateJD(uid); + } + } else if (goodsType == Constant.SOURCE_TYPE_PDD) { + if (hasCoupon) { + shareGoodsTextTemplateService.resetCouponTemplatePDD(uid); + } else { + shareGoodsTextTemplateService.resetCommonTemplatePDD(uid); + } + } + + if (goodsId != null) { + viewShareTextTemplate(acceptData, uid, null, goodsType, goodsId, tljId, hasCoupon, out); + return; + } + out.print(JsonUtil.loadTrueResult("")); + } + + /** + * 鑾峰彇鍒嗕韩璁板綍涓殑鍟嗗搧 鍒嗕韩淇℃伅 + * + * @param acceptData + * @param recordId + * @param out + */ + @RequestMapping(value = "getShareGoods") + public void getShareGoods(AcceptData acceptData, Long recordId, PrintWriter out) { + + if (recordId == null) { + out.print(JsonUtil.loadFalseResult("鍙傛暟涓嶆纭�")); + return; + } + + JSONArray array = new JSONArray(); + JSONObject data = new JSONObject(); + + List<UserShareGoodsGroup> list = userShareGoodsGroupService.listByRecordId(recordId); + if (list == null || list.size() == 0) { + data.put("title", "鍒嗕韩鍟嗗搧"); + data.put("count", 0); + data.put("result_list", array); + out.print(JsonUtil.loadTrueResult(data)); + return; + } + + // API缃戠粶鎺ュ彛楠岃瘉鏄惁鍦ㄥ敭 + List<TaoBaoGoodsBrief> listTaoKeGoods = null; + List<Long> listGid = new ArrayList<Long>(); + for (UserShareGoodsGroup goodsGroup : list) { + CommonGoods commonGoods = goodsGroup.getCommonGoods(); + Integer goodsType = commonGoods.getGoodsType(); + if (commonGoods == null || goodsType == null || goodsType != Constant.SOURCE_TYPE_TAOBAO) { + continue; + } + listGid.add(commonGoods.getGoodsId()); + } + + if (listGid.size() > 0) { + try { + listTaoKeGoods = TaoKeApiUtil.getBatchGoodsInfo(listGid); + } catch (TaoKeApiException e) { + e.printStackTrace(); + } catch (TaobaoGoodsDownException e) { + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + ConfigParamsDTO paramsDTO = hongBaoManageService.getShowComputeRate(acceptData.getPlatform(), + acceptData.getVersion()); + + Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) + .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create(); + + for (UserShareGoodsGroup goodsGroup : list) { + CommonGoods commonGoods = goodsGroup.getCommonGoods(); + if (commonGoods == null) { + continue; + } + + // 楠岃瘉娣樺疂鍟嗗搧鏄惁鍦ㄥ敭 + Integer goodsType = commonGoods.getGoodsType(); + if (listTaoKeGoods != null && listTaoKeGoods.size() > 0 && goodsType != null + && goodsType == Constant.SOURCE_TYPE_TAOBAO) { + int state = 1; // 榛樿鍋滃敭 + Long goodsId = commonGoods.getGoodsId(); + for (TaoBaoGoodsBrief taoKeGoods : listTaoKeGoods) { + Long auctionId = taoKeGoods.getAuctionId(); + if (goodsId == auctionId || goodsId.equals(auctionId)) { + state = 0; // 鍦ㄥ敭 + break; + } + } + commonGoods.setState(state); + } + + // 浠婃棩娴忚璁板綍澶勭悊 + Date date = new Date(); + Date browseTime = goodsGroup.getBrowseTime(); + if (!DateUtil.isSameDay(browseTime, date)) { + goodsGroup.setTodayBrowse(0); // 涓嶆槸鍚屼竴澶╂祻瑙堣褰曡缃�0 + } + + JSONObject dataObject = new JSONObject(); + dataObject.put("todayBrowse", goodsGroup.getTodayBrowse()); + dataObject.put("totalBrowse", goodsGroup.getTotalBrowse()); + dataObject.put("totalOrder", goodsGroup.getTotalOrder()); + dataObject.put("totalMoney", "楼" + goodsGroup.getTotalMoney()); + + GoodsDetailVO detailVO = GoodsDetailVOFactory.convertCommonGoods(commonGoods, paramsDTO); + detailVO.setId(commonGoods.getId()); + dataObject.put("goods", gson.toJson(detailVO)); + array.add(dataObject); + } + + String title = ""; + UserShareGoodsRecord userShareGoodsRecord = userShareGoodsRecordService.selectByPrimaryKey(recordId); + if (userShareGoodsRecord != null) { + title = userShareGoodsRecord.getTitle(); + } + + data.put("title", title); + data.put("count", list.size()); + data.put("result_list", array); + out.print(JsonUtil.loadTrueResult(data)); + } + + @RequestMapping(value = "getShareTextQuick", method = RequestMethod.POST) + public void getShareTextQuick(AcceptData acceptData, Long goodsId, Integer goodsType, Long uid, PrintWriter out) { + if (uid == null) { + out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); + return; + } + + if (goodsType == null || goodsId == null) { + out.print(JsonUtil.loadFalseResult(1, "璇蜂紶閫掓纭殑鍟嗗搧淇℃伅")); + return; + } + + GoodsDetailVO goodsDetail = null; + ConfigParamsDTO paramsDTO = hongBaoManageService.getShowComputeRate(acceptData.getPlatform(), + acceptData.getVersion()); + paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate()); + + if (goodsType == Constant.SOURCE_TYPE_TAOBAO) { + TaoBaoGoodsBrief goods = taoBaoGoodsCacheUtil.getCommonTaoBaoGoodsInfo(goodsId); + if (goods == null) { + try { + goods = redisManager.getTaoBaoGoodsBrief(goodsId); + } catch (TaobaoGoodsDownException e) { + goods = null; + } + } + if (goods != null) { + goodsDetail = GoodsDetailVOFactory.convertTaoBao(goods, paramsDTO); + } + } else if (goodsType == Constant.SOURCE_TYPE_JD) { + JDGoods goods = jdGoodsCacheUtil.getGoodsInfo(goodsId); + if (goods != null) { + goodsDetail = GoodsDetailVOFactory.convertJDGoods(goods, paramsDTO); + } + } else if (goodsType == Constant.SOURCE_TYPE_PDD) { + PDDGoodsDetail goods = pinDuoDuoCacheUtil.getGoodsInfo(goodsId); + if (goods != null) { + goodsDetail = GoodsDetailVOFactory.convertPDDGoods(goods, paramsDTO); + } + } + + if (goodsDetail == null) { + out.print(JsonUtil.loadFalseResult(1, "璇ュ晢鍝佸凡涓嬫灦")); + return; + } + + String template = configService.get(ConfigKeyEnum.quickShareGoodsText.getKey()); + template = template.replace("[鍟嗗搧鏍囬]", goodsDetail.getTitle()).replace("[閿�閲廬", goodsDetail.getSalesCount()); + if (StringUtil.isNullOrEmpty(goodsDetail.getDescription())) { + template = template.replace("[鎺ㄨ崘璇璢", goodsDetail.getDescription()); + } else { + template = template.replace("鎺ㄨ崘璇�:[鎺ㄨ崘璇璢", ""); + } + + if (goodsDetail.isHasCoupon()) { + template = template.replace("[鍒搁潰棰漖", + String.format("婊�%s鍏冨噺%s鍏�", + MoneyBigDecimalUtil.getWithNoZera(goodsDetail.getCouponInfo().getStartFee()).toString(), + MoneyBigDecimalUtil.getWithNoZera(goodsDetail.getCouponInfo().getAmount()).toString())); + } else { + template = template.replace("浼樻儬鍒�:[鍒搁潰棰漖", ""); + } + + JSONObject data = new JSONObject(); + data.put("description", template); + out.print(JsonUtil.loadTrueResult(data)); + } +} -- Gitblit v1.8.0