package com.yeshi.fanli.controller.client; import java.io.PrintWriter; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import com.mongodb.util.ThreadUtil; import com.yeshi.fanli.entity.accept.AcceptData; import com.yeshi.fanli.entity.bus.share.UserShareGoodsHistory; import com.yeshi.fanli.entity.bus.user.UserInfo; import com.yeshi.fanli.entity.taobao.TaoBaoLink; import com.yeshi.fanli.exception.ShareGoodsException; import com.yeshi.fanli.service.impl.goods.ShareGoodsServiceImpl; import com.yeshi.fanli.service.inter.config.ConfigService; import com.yeshi.fanli.service.inter.goods.ShareGoodsService; import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService; import com.yeshi.fanli.util.AESUtil; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.taobao.TaoBaoUtil; import org.yeshi.utils.HttpUtil; import org.yeshi.utils.JsonUtil; import org.yeshi.utils.taobao.TbImgUtil; import net.sf.json.JSONObject; @Controller(value = "ShareController1") @RequestMapping("api/v1/share") public class ShareController { @Resource private ShareGoodsService shareGoodsService; @Resource private ConfigService configService; @Resource private HongBaoManageService hongBaoManageService; // 获取商品分享链接 @RequestMapping(value = "getGoodsShareUrl") public void getGoodsShareUrl(AcceptData acceptData, long id, PrintWriter out) { out.print(JsonUtil .loadTrueResult(String.format("%s?id=" + id, Constant.systemCommonConfig.getAppShareInfoUrl()))); } /** * 获取淘宝的分享链接 * * @param acceptData * @param uid * -用户ID * @param auctionId-商品ID * @param out */ @RequestMapping(value = "gettaobaosharelink") public void getTaobaoShareLink(AcceptData acceptData, Long uid, Long auctionId, PrintWriter out) { if (uid == null || uid <= 0) { out.print(JsonUtil.loadFalseResult(1, "用户ID不能为空")); return; } if (auctionId == null || auctionId <= 0) { out.print(JsonUtil.loadFalseResult(2, "商品ID不能为空")); return; } try { TaoBaoLink taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(uid, auctionId); JSONObject data = new JSONObject(); String url = String.format("http://%s%s?uid=%s&id=%s", configService.getH5Host(), Constant.systemCommonConfig.getShareGoodsPagePath(), AESUtil.encrypt(uid + "", Constant.UIDAESKEY), auctionId + ""); String shortLink = HttpUtil.getShortLink(url); if (!StringUtil.isNullOrEmpty(shortLink)) { url = shortLink; } data.put("clickUrl", url); data.put("token", taoBaoLink.getTaoToken()); data.put("rule", "http://flq.yeshitv.com/fanli/client/html/help_item.html?id=8"); data.put("pictUrl", TbImgUtil.getTBSizeImg(taoBaoLink.getGoods().getPictUrl(), 500)); String shareText = ""; // 无券 String shopType = taoBaoLink.getGoods().getUserType() == 0 ? "淘宝价" : "天猫价"; if (StringUtil.isNullOrEmpty(taoBaoLink.getGoods().getCouponInfo())) { String text = configService.get("goods_share_text_nocoupon"); shareText = text.replace("[标题]", taoBaoLink.getGoods().getTitle()).replace("[在售价]", "¥" + taoBaoLink.getGoods().getZkPrice()); } else// 有券 { String text = configService.get("goods_share_text_coupon"); shareText = text.replace("[标题]", taoBaoLink.getGoods().getTitle()) .replace("[在售价]", "¥" + taoBaoLink.getGoods().getZkPrice()) .replace("[券后价]", "¥" + TaoBaoUtil.getAfterUseCouplePrice(taoBaoLink.getGoods())); } shareText = shareText.replace("[价格类型]", shopType); data.put("shareText", shareText); data.put("descText", shareText.replace(taoBaoLink.getGoods().getTitle(), "")); // 添加分享记录 BigDecimal rate = new BigDecimal(hongBaoManageService.get("hongbao_goods_proportion")); UserShareGoodsHistory history = new UserShareGoodsHistory(); history.setTkCode(taoBaoLink.getTaoToken()); history.setLink(taoBaoLink.getClickUrl()); history.setQuanLink(taoBaoLink.getCouponLink()); history.setCreateTime(new Date()); history.setGoodsId(taoBaoLink.getGoods().getAuctionId()); history.setGoodsType(UserShareGoodsHistory.TYPE_TAOBAO); history.setHongbao(TaoBaoUtil.getShareGoodsHongBaoInfo(taoBaoLink.getGoods(), rate)); List imgList = taoBaoLink.getGoods().getImgList(); if (imgList == null) { imgList = new ArrayList<>(); } history.setPictures(JsonUtil.getGson().toJson(imgList)); history.setUser(new UserInfo(uid)); history.setPostPicture(taoBaoLink.getGoods().getPictUrl()); out.print(JsonUtil.loadTrueResult(data)); // 异步操作 com.yeshi.fanli.util.ThreadUtil.run(new Runnable() { @Override public void run() { shareGoodsService.addShareGoodsHistory(history); } }); return; } catch (ShareGoodsException e) { out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMessage())); } } }