yujian
2019-07-23 dc4c353aa5620e5624256be01cf967f82a980c18
创建分享兼容
6个文件已修改
193 ■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/TestController.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/ShareControllerV2.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/goods/ShareGoodsTextTemplateServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserGoodsStorageServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/jd/JDApiUtil.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/pinduoduo/PinDuoDuoApiUtil.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/TestController.java
@@ -32,9 +32,11 @@
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.yeshi.fanli.dao.mybatis.help.HelpCenterMapper;
import com.yeshi.fanli.dto.jd.JDSearchResult;
import com.yeshi.fanli.entity.bus.activity.ActivityShareResult;
import com.yeshi.fanli.entity.bus.activity.RecommendActivity;
import com.yeshi.fanli.entity.dynamic.InviteMaterial;
import com.yeshi.fanli.entity.jd.JDGoods;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.exception.ActivityException;
import com.yeshi.fanli.exception.share.UserShareGoodsRecordException;
@@ -45,11 +47,16 @@
import com.yeshi.fanli.service.inter.dynamic.DynamicInfoService;
import com.yeshi.fanli.service.inter.dynamic.InviteMaterialService;
import com.yeshi.fanli.service.inter.goods.TaoBaoGoodsBriefService;
import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
import com.yeshi.fanli.tag.PageEntity;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.FileUtil;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.db.MongoDBManager;
import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory;
import com.yeshi.fanli.util.jd.JDApiUtil;
import com.yeshi.fanli.vo.goods.GoodsDetailVO;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
@@ -84,6 +91,9 @@
    @Resource
    private ConfigService configService;
    @Resource
    private HongBaoManageService hongBaoManageService;
    
    @Resource
@@ -407,4 +417,44 @@
            e.printStackTrace();
        }
    }
    /**
     * 插入邀请素材
     * @param out
     */
    @RequestMapping(value = "getJingFenList")
    public void getJingFenList(PrintWriter out, int page, int eliteId) {
        try {
            JDSearchResult result = JDApiUtil.getJingFenGoods(page, eliteId);
            long count = 0;
            JSONObject data = new JSONObject();
            JSONArray array = new JSONArray();
            if (result != null) {
                PageEntity pageEntity = result.getPageEntity();
                if (pageEntity != null) {
                    count = pageEntity.getTotalCount();
                }
                List<JDGoods> goodsList = result.getGoodsList();
                if (goodsList != null && goodsList.size() > 0) {
                    BigDecimal fanLiRate = hongBaoManageService.getFanLiRate();
                    BigDecimal shareRate = hongBaoManageService.getShareRate();
                    Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
                            .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
                    for (JDGoods goods : goodsList) {
                        GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertJDGoods(goods, null, fanLiRate,
                                shareRate);
                        array.add(gson.toJson(goodsDetailVO));
                    }
                }
            }
            data.put("count", count);
            data.put("list", array);
            out.print(JsonUtil.loadTrueResult(data));
        } catch (Exception e) {
            JsonUtil.printMode(out, null, JsonUtil.loadFalseResult("操作失败"));
            e.printStackTrace();
        }
    }
}
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/ShareControllerV2.java
@@ -560,32 +560,25 @@
        shareInfo.setPictUrl(jdGoods.getPicUrl());
        String shareText = "";
        String shopType = "京东价";
        boolean hasCoupon = false;
        // 分享模板
        JDCouponInfo couponInfo = jdGoods.getCouponInfo();
        if (couponInfo == null) {
            String text = shareGoodsTextTemplateService.getCommonTemplate(uid);
            if (StringUtil.isNullOrEmpty(text)) {
                text = configService.get("goods_share_text_nocoupon");
            }
            shareText = text.replace("{标题}", jdGoods.getSkuName()).replace("{商品原价}",
                    MoneyBigDecimalUtil.getWithNoZera(jdGoods.getPrice()) + "");
        } else// 有券
        {
            String text = shareGoodsTextTemplateService.geteCouponTemplate(uid);
            if (StringUtil.isNullOrEmpty(text))
                text = configService.get("goods_share_text_coupon");
            shareText = text.replace("{标题}", jdGoods.getSkuName())
                    .replace("{商品原价}", MoneyBigDecimalUtil.getWithNoZera(jdGoods.getPrice()) + "")
                    .replace("{优惠券面额}", MoneyBigDecimalUtil.getWithNoZera(couponInfo.getDiscount()) + "")
                    .replace("{优惠券价}", JDUtil.getQuanPrice(jdGoods) + "");
        ShareGoodsTextTemplate textTemplate = shareGoodsTextTemplateService.getShareGoodsTextTemplate(uid);
        if (couponInfo == null) { // 无券模板
            if (textTemplate != null)
                shareText = textTemplate.getShareJDTextTemplate();
            if (StringUtil.isNullOrEmpty(shareText))
                shareText = configService.get("goods_share_text_nocoupon_jd");
        } else { // 有券模板
            hasCoupon = true;
            if (textTemplate != null)
                shareText = textTemplate.getShareJDTextTemplateCoupon();
            if (StringUtil.isNullOrEmpty(shareText))
                shareText = configService.get("goods_share_text_coupon_jd");
        }
        shareText = shareText.replace("{店铺类型}", shopType)
                .replace("{月销量}", JDUtil.getSaleCount(jdGoods.getInOrderCount30Days())).replace("{领券短链}", shortLink)
                .replace("{淘口令}", null);
        shareText = shareGoodsTextTemplateService.createContentByTemplateJD(shareText, uid, jdGoods, shortLink, hasCoupon);
        shareInfo.setShareText(shareText);
        String descText = shareText.replace(jdGoods.getSkuName(), "").trim();
@@ -594,7 +587,6 @@
        }
        shareInfo.setDescText(descText);
        //
        String imgs = configService.get("goods_share_notify_imgs");
        JSONArray array = JSONArray.fromObject(imgs);
        int p = (int) (array.size() * Math.random());
@@ -678,33 +670,30 @@
        shareInfo.setRule(configService.get("share_rule_link_pdd"));
        shareInfo.setPictUrl(goods.getGoodsImageUrl());
        String shareText = "";
        String shopType = "拼多多价";
        // 无券
        String template = "";
        boolean hasCoupon = false;
        ShareGoodsTextTemplate textTemplate = shareGoodsTextTemplateService.getShareGoodsTextTemplate(uid);
        if (goods.getHasCoupon() == null || !goods.getHasCoupon()) {
            String text = shareGoodsTextTemplateService.getCommonTemplate(uid);
            if (StringUtil.isNullOrEmpty(text))
                text = configService.get("goods_share_text_nocoupon");
            shareText = text.replace("{标题}", goods.getGoodsName()).replace("{商品原价}",
                    MoneyBigDecimalUtil.getWithNoZera(new BigDecimal(goods.getMinNormalPrice())) + "");
        } else// 有券
        {
            String text = shareGoodsTextTemplateService.geteCouponTemplate(uid);
            if (StringUtil.isNullOrEmpty(text))
                text = configService.get("goods_share_text_coupon");
            if (textTemplate != null)
                template = textTemplate.getSharePDDTextTemplate();
            shareText = text.replace("{标题}", goods.getGoodsName())
                    .replace("{商品原价}",
                            MoneyBigDecimalUtil.getWithNoZera(new BigDecimal(goods.getMinNormalPrice())) + "")
                    .replace("{优惠券面额}",
                            MoneyBigDecimalUtil.getWithNoZera(new BigDecimal(goods.getCouponDiscount())) + "")
                    .replace("{优惠券价}", PinDuoDuoUtil.getQuanPrice(goods) + "");
            if (StringUtil.isNullOrEmpty(template))
                template = configService.get("goods_share_text_nocoupon_pdd");
        } else {
            hasCoupon = true;
            if (textTemplate != null)
                template = textTemplate.getSharePDDTextTemplateCoupon();
            if (StringUtil.isNullOrEmpty(template))
                template = configService.get("goods_share_text_coupon_pdd");
        }
        shareText = shareText.replace("{店铺类型}", shopType)
                .replace("{月销量}", goods.getSalesTip()).replace("{领券短链}", shortLink)
                .replace("{淘口令}", null);
        // 创建口令
        String token = PinDuoDuoApiUtil.createGenerate(goodsId);
        // 生成分享内容
        String shareText = shareGoodsTextTemplateService.createContentByTemplatePDD(template, uid, goods, shortLink,
                        hasCoupon, token);
        shareInfo.setShareText(shareText);
        String descText = shareText.replace(goods.getGoodsName(), "").trim();
fanli/src/main/java/com/yeshi/fanli/service/impl/goods/ShareGoodsTextTemplateServiceImpl.java
@@ -18,6 +18,7 @@
import com.yeshi.fanli.service.inter.config.ConfigService;
import com.yeshi.fanli.service.inter.goods.ShareGoodsTextTemplateService;
import com.yeshi.fanli.service.inter.tlj.ConfigTaoLiJinService;
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.jd.JDUtil;
import com.yeshi.fanli.util.pinduoduo.PinDuoDuoUtil;
@@ -351,14 +352,17 @@
    @Override
    public String createContentByTemplatePDD(String template, Long uid, PDDGoodsDetail goods, 
            String shortLink, boolean hasCoupon, String token) {
        BigDecimal hundred = new BigDecimal(100);
        BigDecimal price =  MoneyBigDecimalUtil.div(new BigDecimal(goods.getMinGroupPrice()), hundred);
        if (!hasCoupon) {
            template = template.replace("{标题}", goods.getGoodsName()).replace("{商品原价}",  BigDecimalUtil.getWithNoZera(new BigDecimal(goods.getMinNormalPrice())).toString())
            template = template.replace("{标题}", goods.getGoodsName()).replace("{商品原价}",  BigDecimalUtil.getWithNoZera(price).toString())
                    .replace("{总销量}", goods.getSalesTip()).replace("{短链接}", shortLink);
        } else {
            template = template.replace("{标题}", goods.getGoodsName()).replace("{商品原价}", BigDecimalUtil.getWithNoZera(new BigDecimal(goods.getMinNormalPrice())).toString())
            BigDecimal amount =  MoneyBigDecimalUtil.div(new BigDecimal(goods.getCouponDiscount()), hundred);
            template = template.replace("{标题}", goods.getGoodsName()).replace("{商品原价}", BigDecimalUtil.getWithNoZera(price).toString())
                    .replace("{总销量}", goods.getSalesTip()).replace("{短链接}", shortLink)
                    .replace("{优惠券面额}", BigDecimalUtil.getWithNoZera(new BigDecimal(goods.getCouponDiscount())).toString())
                    .replace("{优惠券价}", BigDecimalUtil.getWithNoZera( PinDuoDuoUtil.getQuanPrice(goods)).toString());
                    .replace("{优惠券面额}", BigDecimalUtil.getWithNoZera(amount).toString())
                    .replace("{优惠券价}", BigDecimalUtil.getWithNoZera(PinDuoDuoUtil.getQuanPrice(goods)).toString());
        }
        
        if (StringUtil.isNullOrEmpty(token)) {
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserGoodsStorageServiceImpl.java
@@ -348,7 +348,7 @@
        }
        return state;
    }
    @Override
    public JSONObject shareGoods(Long uid, List<Long> listStorageID)  
            throws UserGoodsStorageException, UserShareGoodsRecordException {
fanli/src/main/java/com/yeshi/fanli/util/jd/JDApiUtil.java
@@ -499,6 +499,50 @@
        return goods;
    }
    public static JDSearchResult getJingFenGoods(int pageIndex, int eliteId) {
        JDSearchResult searchResult = new JDSearchResult();
        List<JDGoods> list = new ArrayList<>();
        JSONObject json = new JSONObject();
        json.put("pageIndex", pageIndex);
        json.put("pageSize", 20);
        json.put("sortName", "inOrderCount30DaysSku");
        json.put("sort", "desc");
        json.put("eliteId", eliteId);
        JSONObject jsonDTO = new JSONObject();
        jsonDTO.put("goodsReq", json);
        String result = baseRequest2("jd.union.open.goods.jingfen.query", null, jsonDTO);
        System.out.println(result);
        JSONObject resultJson = JSONObject.fromObject(result);
        resultJson = resultJson.optJSONObject("jd_union_open_goods_jingfen_query_response");
        if (resultJson.optInt("code") == 0) {
            result = resultJson.optString("result");
            resultJson = JSONObject.fromObject(result);
            String message = resultJson.optString("message");
            if ("SUCCESS".equalsIgnoreCase(message)) {
                JSONArray array = resultJson.optJSONArray("data");
                if (array != null) {
                    for (int i = 0; i < array.size(); i++) {
                        JDGoods goods = parseJDGoods(array.optJSONObject(i));
                        if (goods != null)
                            list.add(goods);
                    }
                }
            }
            long totalCount = resultJson.optLong("totalCount");
            PageEntity pageEntity = new PageEntity();
            pageEntity.setTotalCount(totalCount);
            searchResult.setPageEntity(pageEntity);
        }
        searchResult.setGoodsList(list);
        return searchResult;
    }
    public static JDGoods getGoodsDetail(Long skuId) {
        List<Long> skuIdList = new ArrayList<>();
fanli/src/main/java/com/yeshi/fanli/util/pinduoduo/PinDuoDuoApiUtil.java
@@ -118,7 +118,7 @@
        map.put("p_id", pid);
        map.put("multi_group", "true");
        map.put("generate_weapp_webview", "true");
        map.put("generate_weiboapp_webview", "true");
//        map.put("generate_weiboapp_webview", "true");
        JSONArray array = new JSONArray();
        array.add(goodsId);
        map.put("goods_id_list", array.toString());