admin
2022-11-17 af66f9797b42ae81f831d1fbf91a59463a569956
拼多多接口修改
8个文件已添加
52个文件已修改
1 文件已重命名
5038 ■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserAuthController.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/ConsumerControllerV2.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/DynamicControllerV2.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/GoodsControllerV2.java 255 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/SearchControllerV2.java 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/ShareControllerV2.java 235 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/dy/DYOrderDao.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dto/mq/order/body/CommonOrderMQMsg.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/dy/DYOrder.java 93 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/goods/CommonGoods.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/goods/ShareGoodsTextTemplate.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/order/SourceTypeEnum.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/system/ConfigKeyEnum.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/exception/dy/DYOrderException.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/job/order/dy/UpdateDYOrderJob.java 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/job/order/jd/UpdateJDOrderJob.java 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/job/order/pdd/UpdatePDDOrderJob.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/job/order/suning/UpdateSuningOrderJob.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/job/order/vipshop/UpdateVipShopOrderJob.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/lijin/manager/GoodsLijinMnager.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/GoodsEvaluateServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/goods/CollectionGoodsV2ServiceImpl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/goods/ScanHistoryV2ServiceImpl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/goods/ShareGoodsTextTemplateServiceImpl.java 1758 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/homemodule/HomeNavbarServiceImpl.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderMoneySettleServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/order/dy/DYOrderServiceImpl.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/dynamic/GoodsEvaluateService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/goods/CollectionGoodsV2Service.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/goods/ScanHistoryV2Service.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/goods/ShareGoodsTextTemplateService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/order/CommonOrderService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/order/OrderMoneySettleService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/order/OrderProcessService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/order/dy/DYOrderService.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/manger/ClipboardAnalysisManager.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/manger/JobManager.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/Constant.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/RedisKeyEnum.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/factory/CommonGoodsFactory.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/factory/CommonOrderGoodsFactory.java 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/factory/goods/CommonOrderFactory.java 485 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/factory/goods/GoodsDetailVOFactory.java 193 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/goods/GoodsJumpUtil.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/goods/douyin/CSJCPSApiUtil.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/goods/douyin/DYUtil.java 175 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/goods/douyin/vo/DYGoods.java 76 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/goods/douyin/vo/DYGoodsDetail.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/goods/douyin/vo/DYLiveInfo.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/goods/douyin/vo/DYOrderResult.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/mq/cmq/order/JDOrderCMQManager.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/mq/cmq/order/OrdersCMQManager.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/mq/cmq/order/PDDOrderCMQManager.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/mq/cmq/order/SuningOrderCMQManager.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/mq/cmq/order/VipShopOrderCMQManager.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/pinduoduo/PinDuoDuoApiUtil.java 83 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/pinduoduo/PinDuoDuoUtil.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/vo/pdd/PDDConvertLinkResultVO.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/resource/logback.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserAuthController.java
@@ -68,13 +68,14 @@
            return;
        }
        if(SystemInfoUtil.hasFunctions(acceptData.getSystem(), SystemFunction.threeSale)) {
            String inviteCode = userInfoExtraService.getInviteCodeByUid(uid);
            if (StringUtil.isNullOrEmpty(inviteCode)) {
                out.print(JsonUtil.loadFalseResult(3, "请激活邀请码"));
                return;
            }
        }
//      邀请码不必必须激活
//        if(SystemInfoUtil.hasFunctions(acceptData.getSystem(), SystemFunction.threeSale)) {
//            String inviteCode = userInfoExtraService.getInviteCodeByUid(uid);
//            if (StringUtil.isNullOrEmpty(inviteCode)) {
//                out.print(JsonUtil.loadFalseResult(3, "请激活邀请码"));
//                return;
//            }
//        }
        
        
        UserExtraTaoBaoInfo user = userExtraTaoBaoInfoService.getByUid(uid);
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/ConsumerControllerV2.java
@@ -10,6 +10,8 @@
import javax.annotation.Resource;
import com.yeshi.fanli.lijin.manager.GoodsLijinMnager;
import com.yeshi.fanli.util.goods.douyin.CSJCPSApiUtil;
import com.yeshi.fanli.util.goods.douyin.vo.DYGoodsDetail;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@@ -163,6 +165,13 @@
                    return;
                }
                collectionGoodsV2Service.addSuningCollection(uid, suningGoods);
            }else if (goodsType == Constant.SOURCE_TYPE_DY) {
                DYGoodsDetail goods = CSJCPSApiUtil.goodsDetail(Long.parseLong(id));
                if (goods == null) {
                    out.print(JsonUtil.loadFalseResult(1, "商品已下架"));
                    return;
                }
                collectionGoodsV2Service.addDYCollection(uid, goods);
            } else {
                try {
                    TaoBaoGoodsBrief taoBaoGoodsBrief = redisManager.getTaoBaoGoodsBrief(goodsId);
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/DynamicControllerV2.java
@@ -287,7 +287,8 @@
                list.add(map.get(TYPE_FAQUAN));
                list.add(map.get(TYPE_HUODONG));
                // list.add(map.get(TYPE_XUEYUAN));
                list.add(map.get(TYPE_SUCAI));
                // 不返回素材了
                // list.add(map.get(TYPE_SUCAI));
            } else {
                list.add(map.get(TYPE_FAQUAN));
            }
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/GoodsControllerV2.java
@@ -3,7 +3,6 @@
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.*;
@@ -21,6 +20,9 @@
import com.yeshi.fanli.service.manger.PIDManager;
import com.yeshi.fanli.util.*;
import com.yeshi.fanli.util.goods.GoodsJumpUtil;
import com.yeshi.fanli.util.goods.douyin.CSJCPSApiUtil;
import com.yeshi.fanli.util.goods.douyin.DYUtil;
import com.yeshi.fanli.util.goods.douyin.vo.*;
import com.yeshi.fanli.vo.common.WXXCXJumpInfoVO;
import com.yeshi.fanli.vo.pdd.PDDConvertLinkResultVO;
import com.yeshi.fanli.vo.goods.GoodsJumpLinkVO;
@@ -269,7 +271,7 @@
                    // result.getGoods().setCouponLink(link);
                    return result.getGoods();
                } else {
                    link = DaTaoKeApiUtil.convertLink(goods.getAuctionId(), dpid,false);
                    link = DaTaoKeApiUtil.convertLink(goods.getAuctionId(), dpid, false);
                    if (!StringUtil.isNullOrEmpty(link)) {
                        // result.getGoods().setCouponLink(link);
                        taoBaoGoodsCacheUtil.cacheBaseConvertLink(goods.getAuctionId(), dpid, link);
@@ -751,7 +753,7 @@
            return;
        }
        JDGoods jdGoods = JDApiUtil.queryGoodsDetail( id); // 高级接口
        JDGoods jdGoods = JDApiUtil.queryGoodsDetail(id); // 高级接口
        if (jdGoods == null) {
            jdGoods = JDUtil.getGoodsDetail(id); // 爬取网页
            // jdGoods = JDApiUtil.getGoodsDetail(id); // 普通接口
@@ -899,11 +901,11 @@
        if (uid != null) {
            // 是否加入收藏
            CollectionGoodsV2 collectionGoods = collectionGoodsV2Service.findByUidAndAuctionId(uid,  id+"",
            CollectionGoodsV2 collectionGoods = collectionGoodsV2Service.findByUidAndAuctionId(uid, id + "",
                    Constant.SOURCE_TYPE_JD);
            extraVO.setCollected(collectionGoods != null ? true : false);
            // 是否加入选品库
            extraVO.setStorage(userGoodsStorageService.isExistStorage(uid, id+"", Constant.SOURCE_TYPE_JD));
            extraVO.setStorage(userGoodsStorageService.isExistStorage(uid, id + "", Constant.SOURCE_TYPE_JD));
        }
        // 图文详情
@@ -1103,11 +1105,11 @@
        if (uid != null) {
            // 是否加入收藏
            CollectionGoodsV2 collectionGoods = collectionGoodsV2Service.findByUidAndAuctionId(uid, id+"",
            CollectionGoodsV2 collectionGoods = collectionGoodsV2Service.findByUidAndAuctionId(uid, id + "",
                    Constant.SOURCE_TYPE_PDD);
            extraVO.setCollected(collectionGoods != null ? true : false);
            // 是否加入选品库
            extraVO.setStorage(userGoodsStorageService.isExistStorage(uid, id+"", Constant.SOURCE_TYPE_PDD));
            extraVO.setStorage(userGoodsStorageService.isExistStorage(uid, id + "", Constant.SOURCE_TYPE_PDD));
        }
        extraVO.setIsNative(true);
@@ -1267,11 +1269,11 @@
        if (uid != null) {
            // 是否加入收藏
            CollectionGoodsV2 collectionGoods = collectionGoodsV2Service.findByUidAndAuctionId(uid, id+"",
            CollectionGoodsV2 collectionGoods = collectionGoodsV2Service.findByUidAndAuctionId(uid, id + "",
                    Constant.SOURCE_TYPE_VIP);
            extraVO.setCollected(collectionGoods != null ? true : false);
            // 是否加入选品库
            extraVO.setStorage(userGoodsStorageService.isExistStorage(uid, id+"", Constant.SOURCE_TYPE_VIP));
            extraVO.setStorage(userGoodsStorageService.isExistStorage(uid, id + "", Constant.SOURCE_TYPE_VIP));
        }
        extraVO.setIsNative(true);
@@ -1408,11 +1410,11 @@
        if (uid != null) {
            // 是否加入收藏
            CollectionGoodsV2 collectionGoods = collectionGoodsV2Service.findByUidAndAuctionId(uid,
                   (suningGoodsInfo.getCommodityInfo().getCommodityCode()), Constant.SOURCE_TYPE_SUNING);
                    (suningGoodsInfo.getCommodityInfo().getCommodityCode()), Constant.SOURCE_TYPE_SUNING);
            extraVO.setCollected(collectionGoods != null ? true : false);
            // 是否加入选品库
            extraVO.setStorage(userGoodsStorageService.isExistStorage(uid,
                 (suningGoodsInfo.getCommodityInfo().getCommodityCode()),
                    (suningGoodsInfo.getCommodityInfo().getCommodityCode()),
                    Constant.SOURCE_TYPE_SUNING));
        }
@@ -1472,6 +1474,145 @@
            }
        });
    }
    @RequestMapping(value = "getDetailDY", method = RequestMethod.POST)
    public void getDetailDY(AcceptData acceptData, Long id, Long uid, String from, PrintWriter out) {
        // 系统验证
        BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
                acceptData.getPackages(), acceptData.getSystem());
        if (system == null) {
            out.print(JsonUtil.loadFalseResult(1, "系统不存在"));
            return;
        }
        DYGoodsDetail dyGoodsDetail = CSJCPSApiUtil.goodsDetail(id);
        if (dyGoodsDetail == null) {
            out.print(JsonUtil.loadFalseResult(2, "商品不存在"));
            return;
        }
        GoodsMoneyConfigParamsDTO paramsDTO = getParamsDTO(acceptData.getPlatform(), acceptData.getVersion(), uid, acceptData.getSystem());
        paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate(acceptData.getSystem()));
        GoodsDetailVO goodsDetail = GoodsDetailVOFactory.convertDYGoods(dyGoodsDetail, paramsDTO);
        if (goodsDetail != null && goodsDetail.getMoneyInfo() != null && userVIPInfoService.isVIP(uid)) {
            goodsDetail.getMoneyInfo().setFanliMoney(goodsDetail.getMoneyInfo().getMaxMoney());
            goodsDetail.getMoneyInfo().setShareMoney("¥" + DYUtil.getGoodsFanLiMoney(dyGoodsDetail,
                    hongBaoManageService.getShareRate(UserLevelEnum.superVIP, acceptData.getSystem())));
            goodsDetail.getMoneyInfo().setRateInfo(goodsDetail.getMoneyInfo().getMaxRateInfo());
            goodsDetail.getMoneyInfo().setCompositionInfo(goodsDetail.getMoneyInfo().getMaxCompositionInfo());
        }
        goodsDetail.getMoneyInfo()
                .setRateInfoHelpUrl(configService.getValue(ConfigKeyEnum.goodsDetailFanliRateHelpUrl.getKey(), acceptData.getSystem()));
        // 附加信息
        OtherInfo otherInfo = new OtherInfo();
        RewardCouponVO rewardCoupon = new RewardCouponVO();
        rewardCoupon.setJumpDetail(jumpDetailV2Service.getByTypeCache("web", acceptData.getSystem()));
        JSONObject params1 = new JSONObject();
        if (!VersionUtil.greaterThan_2_0_5(acceptData.getPlatform(), acceptData.getVersion()))
            params1.put("url", configService.getValue(ConfigKeyEnum.specialGuideRewardCouponLink.getKey(), acceptData.getSystem()));
        else
            params1.put("url", userVipConfigService.getValueByKey("vip_link"));
        rewardCoupon.setMaxMoney(goodsDetail.getMoneyInfo().getMaxMoney());
        rewardCoupon.setDesc("返");
        params1.put("url", userVipConfigService.getValueByKey("vip_link"));
        rewardCoupon.getJumpDetail().setNeedLogin(true);
        rewardCoupon.setParams(params1.toString());
        otherInfo.setRewardCoupon(rewardCoupon);
        if ("ios".equalsIgnoreCase(acceptData.getPlatform())
                && configService.iosOnLining(Integer.parseInt(acceptData.getVersion()), acceptData.getSystem()))
            otherInfo.setRewardCoupon(null);
        goodsDetail.setOtherInfo(otherInfo);
        ShopInfoVO shopInfo = goodsDetail.getShopInfo();
        if (shopInfo != null) {
            if (shopInfo.getId() == null || shopInfo.getScoreGoods() == null || shopInfo.getScoreLogistics() == null
                    || shopInfo.getScoreSeller() == null) {
                goodsDetail.setShopInfo(null);
            }
        }
        GoodsDetailExtraVO extraVO = new GoodsDetailExtraVO();
        extraVO.setIsNative(false);
        // IOS是否正在上线
        if ("ios".equalsIgnoreCase(acceptData.getPlatform())) {
            String version = acceptData.getVersion();
            extraVO.setIosOnling(configService.iosOnLining(Integer.parseInt(version), acceptData.getSystem()));
        }
        // TODO 图文详情
        extraVO.setDetailUrl("");
        if (uid != null) {
            // 是否加入收藏
            CollectionGoodsV2 collectionGoods = collectionGoodsV2Service.findByUidAndAuctionId(uid, id + "",
                    Constant.SOURCE_TYPE_DY);
            extraVO.setCollected(collectionGoods != null ? true : false);
            // 是否加入选品库
            extraVO.setStorage(userGoodsStorageService.isExistStorage(uid, id + "", Constant.SOURCE_TYPE_DY));
        }
        extraVO.setIsNative(true);
        // 分享路径
        String h5Url = String.format("http://%s%s?uid=%s&id=%s", configService.getH5Host(acceptData.getSystem()),
                Constant.systemCommonConfig.getShareGoodsPagePathPDD(), "", id + "");
        // try {
        // extraVO.setH5Url(HttpUtil.getShortLink(h5Url));
        // } catch (Exception e) {
        extraVO.setH5Url(h5Url);
        // }
        String helpLink = null;
        extraVO.setFanliValid(true);
        extraVO.setShareValid(true);
        if (StringUtil.isNullOrEmpty(helpLink)) {
            helpLink = configService.getValue(ConfigKeyEnum.noRebateHelpLink.getKey(), acceptData.getSystem());
        }
        ShareVO shareInfoVO = new ShareVO();
        shareInfoVO.setHelpLink(helpLink);
        extraVO.setShare(shareInfoVO);
        if (extraVO.getListShareUser() == null) {
            extraVO.setListShareUser(new ArrayList<>());
        }
        if (extraVO.getListCouponUser() == null) {
            extraVO.setListCouponUser(new ArrayList<>());
        }
        // 云发单文案信息
        getCloudInfo(acceptData, uid, goodsDetail, extraVO);
        JSONObject object = new JSONObject();
        object.put("extra", JsonUtil.getApiCommonGson().toJson(extraVO));
        object.put("goods", JsonUtil.getApiCommonGson().toJson(goodsDetail));
        out.print(JsonUtil.loadTrueResult(object.toString()));
        ThreadUtil.run(new Runnable() {
            public void run() {
                // 添加浏览记录
                try {
                    scanHistoryV2Service.addDYScanHistory(uid, acceptData.getDevice(), dyGoodsDetail);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                try {
                    goodsEvaluateService.updateDYGoods(dyGoodsDetail);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
    /**
     * // 云发单文案信息
@@ -1554,7 +1695,7 @@
                List<JDGoods> list = JDUtil.getRecommendGoodsById(Long.parseLong(id));
                if (list == null) {
                    list = new ArrayList<JDGoods>();
                    list = new ArrayList<>();
                } else if (list.size() > 10) {
                    list = list.subList(0, 10);
                }
@@ -1653,13 +1794,45 @@
                return;
            }
            if (goodsType == Constant.SOURCE_TYPE_DY) {
                DYGoodsDetail goods = CSJCPSApiUtil.goodsDetail(Long.parseLong(id));
                //goods.getThird_cid()
                DYGoodsSearchFilter searchFilter = new DYGoodsSearchFilter();
                searchFilter.setPageSize(10);
                searchFilter.setPage(1);
                searchFilter.setThird_cids(Arrays.asList(new Integer[]{goods.getThird_cid()}));
                ListResult listResult = CSJCPSApiUtil.searchGoods(searchFilter);
                List<GoodsDetailVO> listDetailVO = new ArrayList<>();
                if (listResult != null) {
                    if (listResult.getDataList() != null && listResult.getDataList() .size() > 0) {
                        List<DYGoods> dyGoodsList=new ArrayList<>();
                        for(Object o:listResult.getDataList()){
                            dyGoodsList.add((DYGoods)o);
                        }
                        GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(),
                                acceptData.getVersion(), acceptData.getSystem());
                        listDetailVO = goodsLijinMnager.loadOtherMoneyInfo(acceptData.getSystem(), uid, dyGoodsList, paramsDTO);
                    }
                }
                JSONObject data = new JSONObject();
                data.put("listQuality", JsonUtil.getApiCommonGson().toJson(listDetailVO));
                data.put("listGuess", JsonUtil.getApiCommonGson().toJson(new ArrayList<GoodsDetailVO>()));
                out.print(JsonUtil.loadTrueResult(data));
                return;
            }
            List<TaoBaoGoodsBrief> goodsList = TaoKeApiUtil.guessLikeByAuctionId(id, 10);
            // 初始化
            if (goodsList == null) {
                goodsList = new ArrayList<>();
            }
            List<GoodsDetailVO> listExtra = new ArrayList<GoodsDetailVO>();
            List<GoodsDetailVO> listExtra = new ArrayList<>();
            GoodsMoneyConfigParamsDTO paramsDTO = getParamsDTO(acceptData.getPlatform(), acceptData.getVersion(), null, acceptData.getSystem());
            listExtra = goodsLijinMnager.loadTBMoneyInfo(acceptData.getSystem(), uid, goodsList, paramsDTO, false);
@@ -2088,6 +2261,60 @@
        integralGetService.addCouponRebate(uid);
    }
    @RequestMapping(value = "getDYLink")
    public void getDYLink(AcceptData acceptData, Long uid, String id, String source, PrintWriter out) {
        if (StringUtil.isNullOrEmpty(id)) {
            out.print(JsonUtil.loadFalseResult(1, "商品ID不能为空"));
            return;
        }
        if (!SystemInfoUtil.hasFunctions(acceptData.getSystem(), SystemFunction.fanli)) {
            uid = null;
        } else {
            if (uid == null) {
                uid = null;
            } else {
                if (uid == null || uid <= 0) {
                    out.print(JsonUtil.loadFalseResult(1, "用户ID不能为空"));
                    return;
                }
                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 (userFunctionsLimitService.isLimit(uid, SystemFunction.fanli, new Date())) {
                    out.print(JsonUtil.loadFalseResult(1, "该功能限制使用"));
                    return;
                }
            }
        }
        DYGoodsDetail goods = CSJCPSApiUtil.goodsDetail(Long.parseLong(id));
        if (goods == null) {
            out.print(JsonUtil.loadFalseResult(2, "商品已下架"));
            return;
        }
        DYConvertResult link = CSJCPSApiUtil.goodsConvert(goods.getDetail_url(), DYUtil.createFanLiExtraInfo(uid),
                "");
        GoodsJumpLinkVO vo = GoodsJumpUtil.getDYJumpInfo(link);
        JSONObject data = JSONObject.fromObject(new Gson().toJson(vo));
        data.put("native", vo.is_native());
        if (uid != null)
            data.put("userLevel", userLijinMnager.getUserLevelInfo(uid, acceptData.getSystem()));
        out.print(JsonUtil.loadTrueResult(data));
        // 获得金币
        integralGetService.addCouponRebate(uid);
    }
    /**
     * 是否在参与推广
     *
@@ -2195,7 +2422,7 @@
            if (cg.getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) {
                tbGoodsList.add(cg.getGoodsId());
            } else if (cg.getGoodsType() == Constant.SOURCE_TYPE_JD) {
                jdGoodsList.add(Long.parseLong( cg.getGoodsId()));
                jdGoodsList.add(Long.parseLong(cg.getGoodsId()));
            } else if (cg.getGoodsType() == Constant.SOURCE_TYPE_PDD) {
                pddGoodsList.add(Long.parseLong(cg.getGoodsId()));
            }
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/SearchControllerV2.java
@@ -21,6 +21,7 @@
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.bus.help.AppPageNotification;
import com.yeshi.fanli.entity.bus.search.HistorySearch;
import com.yeshi.fanli.entity.goods.BaseGoodsInfo;
import com.yeshi.fanli.entity.goods.CommonGoods;
import com.yeshi.fanli.entity.jd.JDGoods;
import com.yeshi.fanli.entity.system.ConfigKeyEnum;
@@ -54,6 +55,12 @@
import com.yeshi.fanli.util.cache.TaoBaoGoodsCacheUtil;
import com.yeshi.fanli.util.factory.CommonGoodsFactory;
import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory;
import com.yeshi.fanli.util.goods.douyin.CSJCPSApiUtil;
import com.yeshi.fanli.util.goods.douyin.DYUtil;
import com.yeshi.fanli.util.goods.douyin.vo.DYGoods;
import com.yeshi.fanli.util.goods.douyin.vo.DYGoodsDetail;
import com.yeshi.fanli.util.goods.douyin.vo.DYGoodsSearchFilter;
import com.yeshi.fanli.util.goods.douyin.vo.ListResult;
import com.yeshi.fanli.util.jd.JDApiUtil;
import com.yeshi.fanli.util.jd.JDUtil;
import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil;
@@ -282,7 +289,7 @@
                                        TaoBaoGoodsBrief goodsBrief = null;
                                        String specialId = userExtraTaoBaoInfoService.getSpecialIdByUid(uid);
                                        try {
                                            goodsBrief = TaoKeApiUtil.searchGoodsDetail(StringUtil.isNullOrEmpty(goods.getGoodsSign())? goods.getGoodsId():goods.getGoodsSign(), specialId, null);
                                            goodsBrief = TaoKeApiUtil.searchGoodsDetail(StringUtil.isNullOrEmpty(goods.getGoodsSign()) ? goods.getGoodsId() : goods.getGoodsSign(), specialId, null);
                                        } catch (TaobaoGoodsDownException e) {
                                            e.printStackTrace();
                                        }
@@ -422,7 +429,7 @@
        switch (goods.getGoodsType()) {
            case Constant.SOURCE_TYPE_TAOBAO:
                type = "goodsdetail";
                if(!StringUtil.isNullOrEmpty(goods.getGoodsSign())) {
                if (!StringUtil.isNullOrEmpty(goods.getGoodsSign())) {
                    params.put("id", goods.getGoodsSign() + "");
                }
                break;
@@ -437,6 +444,9 @@
                break;
            case Constant.SOURCE_TYPE_SUNING:
                type = "goodsdetail_suning";
                break;
            case Constant.SOURCE_TYPE_DY:
                type = "goodsdetail_dy";
                break;
        }
@@ -533,7 +543,7 @@
    public void searchGoods(AcceptData acceptData, Integer goodsType, String key, Integer page, String filter,
                            Integer order, Long uid, String notifyType, HttpSession session, HttpServletRequest request, PrintWriter out) {
        if (goodsType == null || goodsType < 1 || goodsType > 5) {
        if (goodsType == null || goodsType < 1 || goodsType > 7) {
            out.print(JsonUtil.loadFalseResult(1, "请传递正确平台参数"));
            return;
        }
@@ -629,6 +639,13 @@
            return;
        }
        /*-------- 抖音商品 ------*/
        if (goodsType.intValue() == Constant.SOURCE_TYPE_DY) {
            searchDYGoods(acceptData, uid, searchkey, page, filter, order, ap, out);
            return;
        }
        /*-------- 淘宝商品  -------*/
        searchTaoBaoGoods(acceptData, uid, searchkey, page, filter, order, ap, out);
@@ -711,6 +728,14 @@
            return;
        }
        /*-------- 抖音商品 ------*/
        if (goodsType.intValue() == Constant.SOURCE_TYPE_DY) {
            searchDYGoods(acceptData, uid, searchkey, page, filter, order, ap, out);
            return;
        }
        /*-------- 淘宝商品  -------*/
        searchTaoBaoGoods(acceptData, uid, searchkey, page, filter, order, ap, out);
@@ -741,14 +766,14 @@
                    goodsId = id;
                }
                if (goodsId == null) {
                try {
                    TaoKeApiUtil.TokenConvertResult result = TaoKeApiUtil.tokenConvert(key);
                    if (result != null) {
                        goodsId = result.getNum_iid();
                    try {
                        TaoKeApiUtil.TokenConvertResult result = TaoKeApiUtil.tokenConvert(key);
                        if (result != null) {
                            goodsId = result.getNum_iid();
                        }
                    } catch (TaoBaoTokenParseException e) {
                        e.printStackTrace();
                    }
                } catch (TaoBaoTokenParseException e) {
                    e.printStackTrace();
                }
                }
@@ -770,8 +795,8 @@
                    String[] ks = key.trim().split("  ");
                    if (ks.length > 1)
                        key = ks[1].trim();
                }else{
                    key=title;
                } else {
                    key = title;
                }
            }
        }
@@ -1280,7 +1305,7 @@
    }
    /**
     * 搜索唯品会商品
     * 搜索抖音商品
     *
     * @param acceptData
     * @param key
@@ -1292,6 +1317,107 @@
     * @Title: searchVIPGoods
     * @Description:
     */
    private void searchDYGoods(AcceptData acceptData, Long uid, String key, Integer page, String filter, Integer order,
                               AppPageNotification ap, PrintWriter out) {
        String goodsId = null;
        if (page == 1) {
            List<String> linkList = HttpUtil.getUrlListFromText(key);
            if (linkList != null && linkList.size() > 0) {
                String productId = DYUtil.parseProdectIdFromLink(linkList.get(0));
                if (!StringUtil.isNullOrEmpty(productId)) {
                    goodsId = productId;
                }
            }
        }
        long count = 0;
        List<BaseGoodsInfo> goodsList = new ArrayList<>();
        if (goodsId != null) {
            DYGoodsDetail goodsInfo = CSJCPSApiUtil.goodsDetail(Long.parseLong(goodsId));
            if (goodsInfo != null) {
                goodsList.add(goodsInfo);
                count = 1;
            }
        } else {
            DYGoodsSearchFilter searchFilter = new DYGoodsSearchFilter();
            searchFilter.setTitle(key);
            searchFilter.setPage(page);
            searchFilter.setPageSize(Constant.PAGE_SIZE);
            if (order != null) {
                int sort = order.intValue();
                switch (sort) {
                    case 1: // 销量 desc
                        searchFilter.setSearch_type(1);
                        searchFilter.setOrder_type(1);
                        break;
                    case 2: // 价格—desc
                        searchFilter.setSearch_type(2);
                        searchFilter.setOrder_type(1);
                        break;
                    case 3: // 价格—asc
                        searchFilter.setSearch_type(2);
                        searchFilter.setOrder_type(0);
                        break;
                    case 4: // 返利比
                        searchFilter.setSearch_type(4);
                        searchFilter.setOrder_type(1);
                        break;
                    default: // 综合排序
                        searchFilter.setSearch_type(0);
                        searchFilter.setOrder_type(0);
                        break;
                }
            }
            if (!StringUtil.isNullOrEmpty(filter)) {
                JSONObject jsonfilter = JSONObject.fromObject(filter);
                String minPrice = jsonfilter.optString("minPrice");
                if (!StringUtil.isNullOrEmpty(minPrice)) {
                    searchFilter.setPrice_min(new BigDecimal(minPrice).min(new BigDecimal(100)).intValue());
                }
                String maxPrice = jsonfilter.optString("maxPrice");
                if (!StringUtil.isNullOrEmpty(maxPrice)) {
                    searchFilter.setPrice_max(new BigDecimal(maxPrice).min(new BigDecimal(100)).intValue());
                }
            }
            ListResult result = CSJCPSApiUtil.searchGoods(searchFilter);
            if (result != null) {
                count = result.getCount();
                List<Object> tempList = result.getDataList();
                if (tempList != null) {
                    for (Object o : tempList) {
                        goodsList.add((DYGoods) o);
                    }
                }
            }
        }
        JSONObject data = new JSONObject();
        JSONArray array = new JSONArray();
        if (goodsList != null && goodsList.size() > 0) {
            Gson gson = JsonUtil.getApiCommonGson();
            GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(),
                    acceptData.getVersion(), acceptData.getSystem());
            List<GoodsDetailVO> voList = goodsLijinMnager.loadOtherMoneyInfo(acceptData.getSystem(), uid, goodsList, paramsDTO);
            for (GoodsDetailVO goodsDetailVO : voList) {
                array.add(gson.toJson(goodsDetailVO));
            }
        }
        data.put("result", array);
        data.put("count", count);
        out.print(JsonUtil.loadTrueResult(buildSearchResult(data, ap)));
    }
    private void searchVIPGoods(AcceptData acceptData, Long uid, String key, Integer page, String filter, Integer order,
                                AppPageNotification ap, PrintWriter out) {
        String goodsId = null;
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/ShareControllerV2.java
@@ -22,6 +22,10 @@
import com.yeshi.fanli.service.manger.goods.TaoBaoLinkManager;
import com.yeshi.fanli.util.*;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.goods.douyin.CSJCPSApiUtil;
import com.yeshi.fanli.util.goods.douyin.DYUtil;
import com.yeshi.fanli.util.goods.douyin.vo.DYConvertResult;
import com.yeshi.fanli.util.goods.douyin.vo.DYGoodsDetail;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
@@ -257,6 +261,12 @@
        // 苏宁
        if (goodsType == Constant.SOURCE_TYPE_SUNING) {
            createSuningShare(acceptData, uid, goodsId, source, needGoods, out);
            return;
        }
        // 抖音
        if (goodsType == Constant.SOURCE_TYPE_DY) {
            createDYShare(acceptData, uid,Long.parseLong( goodsId), source, needGoods, out);
            return;
        }
@@ -832,7 +842,7 @@
        BigDecimal shareMoney = JDUtil.getGoodsFanLiMoney(jdGoods, shareRate);
        shareInfo.setShareMoney("¥" + shareMoney.toString());
        try {
            ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordGoodsDetail(uid, goodsId+"",
            ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordGoodsDetail(uid, goodsId + "",
                    Constant.SOURCE_TYPE_JD, false);
            shareInfo.setShareId(shareRecord.getRedisKey());
        } catch (Exception e) {
@@ -908,7 +918,7 @@
                history.setTkCode(null);
                history.setLink(null);
                history.setQuanLink(null);
                history.setGoodsId(goodsId+"");
                history.setGoodsId(goodsId + "");
                history.setPostPicture(goods.getPicUrl());
                history.setShareImg(jumpLinkNew);
@@ -1022,7 +1032,7 @@
        shareInfo.setShareMoney("¥" + shareMoney.toString());
        try {
            ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordGoodsDetail(uid, goodsId+"",
            ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordGoodsDetail(uid, goodsId + "",
                    Constant.SOURCE_TYPE_PDD, false);
            shareInfo.setShareId(shareRecord.getRedisKey());
        } catch (Exception e) {
@@ -1097,7 +1107,7 @@
                history.setTkCode(null);
                history.setLink(null);
                history.setQuanLink(null);
                history.setGoodsId(goodsId+"");
                history.setGoodsId(goodsId + "");
                history.setPostPicture(goods.getGoodsImageUrl());
                history.setShareImg(jumpLink);
                List<String> imgList = null;
@@ -1177,7 +1187,7 @@
        shareInfo.setShareMoney("¥" + shareMoney.toString());
        try {
            ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordGoodsDetail(uid, goodsId+"",
            ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordGoodsDetail(uid, goodsId + "",
                    Constant.SOURCE_TYPE_VIP, false);
            shareInfo.setShareId(shareRecord.getRedisKey());
        } catch (Exception e) {
@@ -1226,7 +1236,7 @@
                history.setTkCode(null);
                history.setLink(null);
                history.setQuanLink(null);
                history.setGoodsId(goodsId+"");
                history.setGoodsId(goodsId + "");
                history.setPostPicture(goods.getGoodsThumbUrl());
                history.setShareImg(jumpLink.getUrl());
                List<String> imgList = goods.getGoodsDetailPictures();
@@ -1321,7 +1331,7 @@
        try {
            ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordGoodsDetail(uid,
                    Long.parseLong(sts[1])+"", Constant.SOURCE_TYPE_SUNING, false);
                    Long.parseLong(sts[1]) + "", Constant.SOURCE_TYPE_SUNING, false);
            shareInfo.setShareId(shareRecord.getRedisKey());
        } catch (Exception e) {
            try {
@@ -1407,7 +1417,7 @@
                history.setTkCode(null);
                history.setLink(null);
                history.setQuanLink(null);
                history.setGoodsId(Long.parseLong(sts[1])+"");
                history.setGoodsId(Long.parseLong(sts[1]) + "");
                if (goods.getCommodityInfo().getPictureUrl() != null
                        && goods.getCommodityInfo().getPictureUrl().size() > 0)
                    history.setPostPicture(goods.getCommodityInfo().getPictureUrl().get(0).getPicUrl());
@@ -1417,6 +1427,161 @@
                if (pictureList != null) {
                    for (SuningGoodsImg gi : pictureList)
                        imgList.add(gi.getPicUrl());
                }
                history.setPictures(JsonUtil.getGson().toJson(imgList));
                shareGoodsService.addShareGoodsHistory(history);
            }
        });
    }
    /**
     * 抖音分享
     *
     * @param acceptData
     * @param uid
     * @param goodsId
     * @param source
     * @param needGoods
     * @param out        void 返回类型
     * @throws
     * @Title: createSuningShare
     * @Description:
     */
    public void createDYShare(AcceptData acceptData, Long uid, Long goodsId, String source, boolean needGoods,
                              PrintWriter out) {
        DYGoodsDetail goods = CSJCPSApiUtil.goodsDetail(goodsId);
        if (goods == null) {
            out.print(JsonUtil.loadFalseResult(1, "该商品已下架"));
            return;
        }
        SystemEnum system = SystemInfoUtil.getSystem(acceptData);
        DYConvertResult convertResult = CSJCPSApiUtil.goodsConvert(goods.getDetail_url(), DYUtil.createShareExtraInfo(uid), "");
        ShareInfoVO shareInfo = new ShareInfoVO();
        shareInfo.setClickUrl(convertResult.getQrCode());
        shareInfo.setWxErCode(convertResult.getQrCode());
        shareInfo.setCommentTexts(new ArrayList<>());
        shareInfo.setRule(configService.getValue(ConfigKeyEnum.shareRuleLinkDY.getKey(), system));
        shareInfo.setPictUrl(goods.getCover());
        if (needGoods) {
            shareInfo
                    .setGoodsInfo(GoodsDetailVOFactory.convertDYGoods(goods,
                            new GoodsMoneyConfigParamsDTO(hongBaoManageService.getFanLiRate(acceptData.getSystem()),
                                    hongBaoManageService.getShareRate(acceptData.getSystem()), Constant.MAX_REWARD_RATE,
                                    hongBaoManageService.getFanLiRate(UserLevelEnum.superVIP, acceptData.getSystem()))));
        }
        String template = shareGoodsTextTemplateService.getTextTemplateBySuNing(uid);
        String shareText =  shareGoodsTextTemplateService.createCommonShareTextDY(template, goods, convertResult.getDeeplink());
        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.getByVersion(ConfigKeyEnum.goodsShareNotifyImgs.getKey(), acceptData.getPlatform(),
                Integer.parseInt(acceptData.getVersion()), system);
        JSONArray array = JSONArray.fromObject(imgs);
        shareInfo.setNotifyPicture(array.size() > 1 ? array.optString(1) : array.optString(0));
        // 2.0.7版本后的提示图片
        imgs = configService.getValue(ConfigKeyEnum.goodsShareNotifyImgs207.getKey(), system);
        array = JSONArray.fromObject(imgs);
        shareInfo.setNotifyPictureNew(array.size() > 1 ? array.optString(1) : array.optString(0));
        shareInfo.setNotifyDesc(configService.getValue(ConfigKeyEnum.goodsShareNotifyDY.getKey(), system));
        // 添加分享记录
        BigDecimal shareRate = hongBaoManageService.getShareRate(acceptData.getSystem());
        BigDecimal shareMoney = DYUtil.getGoodsFanLiMoney(goods, shareRate);
        shareInfo.setShareMoney("¥" + shareMoney.toString());
        try {
            ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordGoodsDetail(uid,
                    goodsId + "", Constant.SOURCE_TYPE_DY, 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 = "";
        String qtemplate = configService.getValue(ConfigKeyEnum.quickShareGoodsText.getKey(), system);
        recommendText = qtemplate.replace("[商品标题]", goods.getTitle());
        recommendText = recommendText.replace("推荐理由:[推荐语]", "");
        String quickCommentText = configService.getValue(ConfigKeyEnum.quickShareDYCommentText.getKey(), system);
        commentText = quickCommentText.replace("[原价]", BigDecimalUtil.getWithNoZera(DYUtil.getPrice(goods.getPrice())).toString());
        //commentText = commentText.replace("[链接]", jumpLink);
        commentText = commentText.replace("[口令]", convertResult.getPassword());
        String salesCountMidea = "";
        Integer count = goods.getSales();
        if (count < 10000) {
            salesCountMidea = count + "";
        } else {
            double sales = count;
            salesCountMidea = String.format("%.1f", sales / 10000);
            salesCountMidea = salesCountMidea + "万";
        }
        if (StringUtil.isNullOrEmpty(salesCountMidea) || salesCountMidea.equals("0")) {
            recommendText = recommendText.replace("销量:[销量]", "");
        } else {
            recommendText = recommendText.replace("[销量]", salesCountMidea.replace("万", "w"));
        }
        commentText = commentText.replace("领券抢购", "抢购").replace("【券后价】[券后价]元", "");
        recommendText = recommendText.replace("优惠券:[券面额]元", "");
        shareInfo.setRecommendText(deleteBlankLine(recommendText));
        shareInfo.setCommentText(deleteBlankLine(commentText));
        // 设置评论文本选项
        shareInfo.setCommentTextChoiceList(getCommentChoiceList(null, shareInfo.getCommentText(), inviteCode,
                DYUtil.getGoodsFanLiMoney(goods, hongBaoManageService.getFanLiRate(UserLevelEnum.superVIP, acceptData.getSystem()))));
        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_DY);
                history.setTkCode(null);
                history.setLink(null);
                history.setQuanLink(null);
                history.setGoodsId(goodsId + "");
                history.setPostPicture(goods.getCover());
                history.setShareImg(convertResult.getQrCode());
                List<String> imgList = new ArrayList<>();
                if (goods.getImgs() != null) {
                    for (String gi : goods.getImgs())
                        imgList.add(gi);
                }
                history.setPictures(JsonUtil.getGson().toJson(imgList));
                shareGoodsService.addShareGoodsHistory(history);
@@ -1469,6 +1634,11 @@
        if (goodsType == Constant.SOURCE_TYPE_SUNING) {
            createSuNingViewText(acceptData.getSystem(), goodsType, uid, template, goodsId, hasCoupon, out);
            return;
        }
        if (goodsType == Constant.SOURCE_TYPE_DY) {
            createDYViewText(acceptData.getSystem(), goodsType, uid, template, goodsId, hasCoupon, out);
            return;
        }
    }
@@ -1712,6 +1882,40 @@
        out.print(JsonUtil.loadTrueResult(data));
    }
    private void createDYViewText(SystemEnum system, Integer goodsType, Long uid, String template, String goodsId, Boolean hasCoupon,
                                      PrintWriter out) {
        DYGoodsDetail goods = CSJCPSApiUtil.goodsDetail(Long.parseLong(goodsId));
        if (goods == null) {
            out.print(JsonUtil.loadFalseResult(4, "商品已下架"));
            return;
        }
        if (StringUtil.isNullOrEmpty(template)) {
            template = getShareTemplate(goodsType, uid, hasCoupon, null);
        }
        // 校验券模板是否正确
        try {
            shareGoodsTextTemplateService.verifyRightDY(template);
        } catch (ShareGoodsTextTemplateException e) {
            out.print(JsonUtil.loadFalseResult(5, e.getMsg()));
            return;
        }
        DYConvertResult convertResult = CSJCPSApiUtil.goodsConvert(goods.getDetail_url(),DYUtil.createShareExtraInfo(uid),"");
        // 生成普通分享内容
        String content = shareGoodsTextTemplateService.createCommonShareTextDY(template, goods, convertResult.getPassword());
        JSONObject data = new JSONObject();
        data.put("content", content);
        out.print(JsonUtil.loadTrueResult(data));
    }
    /**
     * 获取分享模板
     *
@@ -1732,6 +1936,8 @@
            template = shareGoodsTextTemplateService.getTextTemplateByVIP(uid);
        } else if (goodsType == Constant.SOURCE_TYPE_SUNING) {
            template = shareGoodsTextTemplateService.getTextTemplateBySuNing(uid);
        }else if (goodsType == Constant.SOURCE_TYPE_DY) {
            template = shareGoodsTextTemplateService.getTextTemplateByDY(uid);
        }
        return template;
    }
@@ -1786,6 +1992,8 @@
            out.print(JsonUtil.loadTrueResult(configService.getValue(ConfigKeyEnum.shareGoodsTemplateRulesVIP.getKey(), system)));
        } else if (goodsType == Constant.SOURCE_TYPE_SUNING) {
            out.print(JsonUtil.loadTrueResult(configService.getValue(ConfigKeyEnum.shareGoodsTemplateRulesSuNing.getKey(), system)));
        }else if (goodsType == Constant.SOURCE_TYPE_DY) {
            out.print(JsonUtil.loadTrueResult(configService.getValue(ConfigKeyEnum.shareGoodsTemplateRulesDY.getKey(), system)));
        }
    }
@@ -1817,6 +2025,8 @@
                shareGoodsTextTemplateService.saveTemplateVIP(uid, template);
            } else if (goodsType == Constant.SOURCE_TYPE_SUNING) {
                shareGoodsTextTemplateService.saveTemplateSuNing(uid, template);
            } else if (goodsType == Constant.SOURCE_TYPE_DY) {
                shareGoodsTextTemplateService.saveTemplateDY(uid, template);
            }
        } catch (ShareGoodsTextTemplateException e) {
            out.print(JsonUtil.loadFalseResult(5, e.getMsg()));
@@ -1851,6 +2061,8 @@
            shareGoodsTextTemplateService.resetCommonTemplateVIP(uid);
        } else if (goodsType == Constant.SOURCE_TYPE_SUNING) {
            shareGoodsTextTemplateService.resetCommonTemplateSuNing(uid);
        }else if (goodsType == Constant.SOURCE_TYPE_DY) {
            shareGoodsTextTemplateService.resetCommonTemplateDY(uid);
        }
        if (goodsId != null) {
@@ -1935,7 +2147,7 @@
                String goodsId = commonGoods.getGoodsId();
                for (TaoBaoGoodsBrief taoKeGoods : listTaoKeGoods) {
                    String auctionId = taoKeGoods.getAuctionId();
                    if (TaoBaoUtil.isEqual(goodsId , auctionId)) {
                    if (TaoBaoUtil.isEqual(goodsId, auctionId)) {
                        state = 0; // 在售
                        break;
                    }
@@ -2025,6 +2237,11 @@
            if (goods != null) {
                goodsDetail = GoodsDetailVOFactory.convertSuningGoods(goods, paramsDTO);
            }
        }else if (goodsType == Constant.SOURCE_TYPE_DY) {
            DYGoodsDetail goods = CSJCPSApiUtil.goodsDetail(Long.parseLong(goodsId));
            if (goods != null) {
                goodsDetail = GoodsDetailVOFactory.convertDYGoods(goods, paramsDTO);
            }
        }
        if (goodsDetail == null) {
fanli/src/main/java/com/yeshi/fanli/dao/dy/DYOrderDao.java
New file
@@ -0,0 +1,98 @@
package com.yeshi.fanli.dao.dy;
import com.yeshi.common.MongodbBaseDao;
import com.yeshi.fanli.entity.bus.search.HistorySearch;
import com.yeshi.fanli.entity.dy.DYOrder;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public class DYOrderDao extends MongodbBaseDao<DYOrder> {
    public List<DYOrder> listByOrderId(String orderId) {
        Query query = new Query();
        query.addCriteria(Criteria.where("order_id").is(orderId));
        return findList(query);
    }
    public DYOrder selectByPrimaryKey(String id) {
        Query query = new Query();
        query.addCriteria(Criteria.where("_id").is(id));
        return findOne(query);
    }
    public void updateByPrimaryKey(DYOrder order) {
        if (order == null || order.getId() == null) {
            return;
        }
        Query query = new Query();
        query.addCriteria(Criteria.where("_id").is(order.getId()));
        Update update = new Update();
        if (order.getOrder_id() != null) {
            update.set("order_id", order.getOrder_id());
        }
        if (order.getAfter_sales_status() != null) {
            update.set("after_sales_status", order.getAfter_sales_status());
        }
        if (order.getFlow_point() != null) {
            update.set("flow_point", order.getFlow_point());
        }
        if (order.getProduct_id() != null) {
            update.set("product_id", order.getProduct_id());
        }
        if (order.getEstimated_commission() != null) {
            update.set("estimated_commission", order.getEstimated_commission());
        }
        if (order.getPay_success_time() != null) {
            update.set("pay_success_time", order.getPay_success_time());
        }
        if (order.getTotal_pay_amount() != null) {
            update.set("total_pay_amount", order.getTotal_pay_amount());
        }
        if (order.getApp_id() != null) {
            update.set("app_id", order.getApp_id());
        }
        if (order.getExternal_info() != null) {
            update.set("external_info", order.getExternal_info());
        }
        if (order.getPay_goods_amount() != null) {
            update.set("pay_goods_amount", order.getPay_goods_amount());
        }
        if (order.getProduct_img() != null) {
            update.set("product_img", order.getProduct_img());
        }
        if (order.getProduct_name() != null) {
            update.set("product_name", order.getProduct_name());
        }
        if (order.getSettle_time() != null) {
            update.set("settle_time", order.getSettle_time());
        }
        if (order.getConfirm_time() != null) {
            update.set("confirm_time", order.getConfirm_time());
        }
        if (order.getEstimated_tech_service_fee() != null) {
            update.set("estimated_tech_service_fee", order.getEstimated_tech_service_fee());
        }
        if (order.getRefund_time() != null) {
            update.set("refund_time", order.getRefund_time());
        }
        if (order.getSplit_rate() != null) {
            update.set("split_rate", order.getSplit_rate());
        }
        if (order.getUpdateTime() != null) {
            update.set("updateTime", order.getUpdateTime());
        }
        update(query, update);
    }
}
fanli/src/main/java/com/yeshi/fanli/dto/mq/order/body/CommonOrderMQMsg.java
New file
@@ -0,0 +1,33 @@
package com.yeshi.fanli.dto.mq.order.body;
/**
 * @author hxh
 * @title: CommonOrderMQMsg
 * @description: 订单消息
 * @date 2022/10/8 15:24
 */
public class CommonOrderMQMsg {
    private String orderId;
    private int sourceType;
    public CommonOrderMQMsg(String orderId, int sourceType) {
        this.orderId = orderId;
        this.sourceType = sourceType;
    }
    public String getOrderId() {
        return orderId;
    }
    public void setOrderId(String orderId) {
        this.orderId = orderId;
    }
    public int getSourceType() {
        return sourceType;
    }
    public void setSourceType(int sourceType) {
        this.sourceType = sourceType;
    }
}
fanli/src/main/java/com/yeshi/fanli/entity/dy/DYOrder.java
File was renamed from fanli/src/main/java/com/yeshi/fanli/util/goods/douyin/vo/DYOrder.java
@@ -1,4 +1,9 @@
package com.yeshi.fanli.util.goods.douyin.vo;
package com.yeshi.fanli.entity.dy;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import java.util.Date;
/**
 * @author hxh
@@ -6,21 +11,22 @@
 * @description: 抖音订单
 * @date 2022/9/30 16:00
 */
@Document(collection = "dy_order")
public class DYOrder {
    //支付成功
    public final static String FLOW_POINT_PAY_SUCCESS="PAY_SUCC";
    public final static String FLOW_POINT_PAY_SUCCESS = "PAY_SUCC";
    //退款
    public final static String FLOW_POINT_REFUND="REFUND";
    public final static String FLOW_POINT_REFUND = "REFUND";
    //结算。此状态代表商家确定会结算佣⾦
    public final static String FLOW_POINT_SETTLE="SETTLE";
    public final static String FLOW_POINT_SETTLE = "SETTLE";
    //确认收货
    public final static String FLOW_POINT_CONFIRM="CONFIRM";
    public final static String FLOW_POINT_CONFIRM = "CONFIRM";
     //正常状态
    public final static int AFTER_SALE_STATUS_NORMAL=0;
    //正常状态
    public final static int AFTER_SALE_STATUS_NORMAL = 0;
    //退款
    public final static int AFTER_SALE_STATUS_REFUND=2;
    public final static int AFTER_SALE_STATUS_REFUND = 2;
    /**
@@ -45,6 +51,10 @@
    /**
     * 订单id
     **/
    @Id
    private String id;
    private String order_id;
    /**
     * 应⽤id
@@ -65,7 +75,7 @@
    /**
     * 总付款⾦额,单位分
     **/
    private int total_pay_amount;
    private Integer total_pay_amount;
    /**
     * ⽀付成功时间 yyyy-MM-dd HH:mm:ss
     **/
@@ -78,19 +88,19 @@
     * 预估结算⾦额,单位分。如果有⽀付优惠,
     * pay_goods_amount会略⼤于total_pay_amount
     **/
    private int pay_goods_amount;
    private Integer pay_goods_amount;
    /**
     * 预估佣⾦收⼊,单位分
     **/
    private int estimated_commission;
    private Integer estimated_commission;
    /**
     * 推⼴费率,10代表推⼴费率为0.10
     **/
    private int split_rate;
    private Integer split_rate;
    /**
     * 售后状态,1-空,2-产⽣退款
     **/
    private int after_sales_status;
    private Integer after_sales_status;
    /**
     * PAY_SUCC:⽀付完成
     * REFUND:退款
@@ -114,7 +124,10 @@
     * 预估技术服务费,为pay_goods_amount*0.1。此字段
     * 当前不准,仅供参考。
     **/
    private int estimated_tech_service_fee;
    private Integer estimated_tech_service_fee;
    private Date createTime;
    private Date updateTime;
    public String getOrder_id() {
        return order_id;
@@ -156,11 +169,11 @@
        this.product_img = product_img;
    }
    public int getTotal_pay_amount() {
    public Integer getTotal_pay_amount() {
        return total_pay_amount;
    }
    public void setTotal_pay_amount(int total_pay_amount) {
    public void setTotal_pay_amount(Integer total_pay_amount) {
        this.total_pay_amount = total_pay_amount;
    }
@@ -180,35 +193,35 @@
        this.refund_time = refund_time;
    }
    public int getPay_goods_amount() {
    public Integer getPay_goods_amount() {
        return pay_goods_amount;
    }
    public void setPay_goods_amount(int pay_goods_amount) {
    public void setPay_goods_amount(Integer pay_goods_amount) {
        this.pay_goods_amount = pay_goods_amount;
    }
    public int getEstimated_commission() {
    public Integer getEstimated_commission() {
        return estimated_commission;
    }
    public void setEstimated_commission(int estimated_commission) {
    public void setEstimated_commission(Integer estimated_commission) {
        this.estimated_commission = estimated_commission;
    }
    public int getSplit_rate() {
    public Integer getSplit_rate() {
        return split_rate;
    }
    public void setSplit_rate(int split_rate) {
    public void setSplit_rate(Integer split_rate) {
        this.split_rate = split_rate;
    }
    public int getAfter_sales_status() {
    public Integer getAfter_sales_status() {
        return after_sales_status;
    }
    public void setAfter_sales_status(int after_sales_status) {
    public void setAfter_sales_status(Integer after_sales_status) {
        this.after_sales_status = after_sales_status;
    }
@@ -244,11 +257,39 @@
        this.confirm_time = confirm_time;
    }
    public int getEstimated_tech_service_fee() {
    public Integer getEstimated_tech_service_fee() {
        return estimated_tech_service_fee;
    }
    public void setEstimated_tech_service_fee(int estimated_tech_service_fee) {
    public void setEstimated_tech_service_fee(Integer estimated_tech_service_fee) {
        this.estimated_tech_service_fee = estimated_tech_service_fee;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public Date getUpdateTime() {
        return updateTime;
    }
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String toId() {
        return order_id + "-" + product_id;
    }
}
fanli/src/main/java/com/yeshi/fanli/entity/goods/CommonGoods.java
@@ -15,6 +15,8 @@
    public static int GOODS_TYPE_VIP = 4;// 唯品会
    public static int GOODS_TYPE_SUNING = 5;// 苏宁
    public static int GOODS_TYPE_DY = 7;// 抖音
    public static int SHOP_TYPE_TB = 1;// 淘宝
    public static int SHOP_TYPE_TM = 2;// 天猫
    public static int SHOP_TYPE_JD = 20;// 京东
@@ -24,6 +26,8 @@
    
    public static int SHOP_TYPE_SUNING = 50;//苏宁
    public static int SHOP_TYPE_SUNING_SELF = 51;//苏宁自营
    public static int SHOP_TYPE_DY = 70;//抖音
    
    public static int STATE_NORMAL = 0;// 正常
fanli/src/main/java/com/yeshi/fanli/entity/goods/ShareGoodsTextTemplate.java
@@ -40,6 +40,9 @@
    @Column(name = "st_share_suning_text_template_coupon")
    private String shareSuNingTextTemplateCoupon;// 苏宁有券分享模板
    @Column(name = "st_share_dy_text_template")
    private String shareDYTextTemplate;// 抖音无券分享模板
    public String getShareVIPTextTemplate() {
        return shareVIPTextTemplate;
    }
@@ -165,4 +168,11 @@
        this.shareSuNingTextTemplateCoupon = shareSuNingTextTemplateCoupon;
    }
    public String getShareDYTextTemplate() {
        return shareDYTextTemplate;
    }
    public void setShareDYTextTemplate(String shareDYTextTemplate) {
        this.shareDYTextTemplate = shareDYTextTemplate;
    }
}
fanli/src/main/java/com/yeshi/fanli/entity/order/SourceTypeEnum.java
@@ -11,7 +11,8 @@
    jingDong("京东","京东","#E42219","#E42219", "http://img.flqapp.com/resource/icon/source_type_jd.png"),
    pinDuoDuo("拼多多", "拼多多","#F51E25","#F51E25","http://img.flqapp.com/resource/icon/source_type_pdd.png"),
    vip("唯品会","唯品会","#E30085", "#E30085", "http://img.flqapp.com/resource/icon/source_type_vip.png"),
    suNing("苏宁","苏宁易购","#010101","#FFA600", "http://img.flqapp.com/resource/icon/source_type_suning.png");
    suNing("苏宁","苏宁易购","#010101","#FFA600", "http://img.flqapp.com/resource/icon/source_type_suning.png"),
    dy("抖音","抖音","#180b1a", "#180b1a", "http://img.flqapp.com/resource/icon/source_type_dy.png");
    private final String desc; // 数据存在名称
    private final String descShow; // 显示名称
fanli/src/main/java/com/yeshi/fanli/entity/system/ConfigKeyEnum.java
@@ -21,6 +21,7 @@
    shareRuleLinkPDD("share_rule_link_pdd", "拼多多分享规则(帮助中心)"),
    shareRuleLinkVIP("share_rule_link_vip", "唯品会分享规则(帮助中心)"),
    shareRuleLinkSuning("share_rule_link_suning", "苏宁分享规则(帮助中心)"),
    shareRuleLinkDY("share_rule_link_dy", "抖音分享规则(帮助中心)"),
    shareSingleGoodsRule("share_single_goods_rule", "单品分享规则"),
    shareGoodsTemplateRules("share_goods_template_rules", "分享模板规则"), // 存在2个相同
    // 内容不同、版本但一样
@@ -28,6 +29,7 @@
    shareGoodsTemplateRulesPDD("share_goods_template_rules_pdd", "拼多多模板规则"),
    shareGoodsTemplateRulesVIP("share_goods_template_rules_vip", "唯品会模板规则"),
    shareGoodsTemplateRulesSuNing("share_goods_template_rules_suning", "苏宁模板规则"),
    shareGoodsTemplateRulesDY("share_goods_template_rules_dy", "苏宁模板规则"),
    goodsShareNotifyImgs("goods_share_notify_imgs", "单个商品分享的券提示图片"),
    goodsShareMultipleNotify("goods_share_multiple_notify", "多个商品分享提醒"),
    goodsShareNotifyImgs207("goods_share_notify_imgs_207", "单个商品分享的券提示图片(2.0.7及以后)"),
@@ -35,8 +37,9 @@
    goodsShareNotify("goods_share_notify", "单个商品分享提醒"),
    goodsShareNotifyJD("goods_share_notify_jd", "京东分享提醒"),
    goodsShareNotifyPDD("goods_share_notify_pdd", "拼多多分享提醒"),
    goodsShareNotifyVIP("goods_share_notify_vip", "拼多多分享提醒"),
    goodsShareNotifySuning("goods_share_notify_Suning", "拼多多分享提醒"),
    goodsShareNotifyVIP("goods_share_notify_vip", "唯品会分享提醒"),
    goodsShareNotifySuning("goods_share_notify_suning", "苏宁分享提醒"),
    goodsShareNotifyDY("goods_share_notify_dy", "抖音分享提醒"),
    goodsShareTextCoupon("goods_share_text_coupon", "单个商品分享文案(有券)"),
    goodsShareTextCouponJD("goods_share_text_coupon_jd", "京东单个商品分享模板-有券"),
@@ -198,13 +201,14 @@
    quickSharePDDCommentText("quick_share_pdd_comment_text", "快捷分享商品文本"),
    quickShareVIPCommentText("quick_share_vip_comment_text", "快捷分享商品文本"),
    quickShareSuNingCommentText("quick_share_suning_comment_text", "快捷分享商品文本"),
    quickShareDYCommentText("quick_share_dy_comment_text", "快捷分享商品文本"),
    shareCommentTextTB("share_comment_text_tb", "淘宝单图多图分享商品文本"),
    shareCommentTextJD("share_comment_text_jd", "京东单图多图分享商品文本"),
    shareCommentTextPDD("share_comment_text_pdd", "拼多多单图多图分享商品文本"),
    shareCommentTextVIP("share_comment_text_vip", "唯品会单图多图分享商品文本"),
    shareCommentTextSuNing("share_comment_text_suning", "苏宁单图多图分享商品文本"),
    shareCommentTextDY("share_comment_text_dy", "抖音单图多图分享商品文本"),
    evaluateEmojis("evaluate_emojis", "发圈评论Emojis"),
fanli/src/main/java/com/yeshi/fanli/exception/dy/DYOrderException.java
New file
@@ -0,0 +1,16 @@
package com.yeshi.fanli.exception.dy;
import com.yeshi.fanli.exception.BaseException;
public class DYOrderException extends BaseException {
    private static final long serialVersionUID = 1L;
    public DYOrderException(int code, String msg) {
        super(code, msg);
    }
    public DYOrderException() {
        super();
    }
}
fanli/src/main/java/com/yeshi/fanli/job/order/dy/UpdateDYOrderJob.java
New file
@@ -0,0 +1,137 @@
package com.yeshi.fanli.job.order.dy;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
import com.yeshi.fanli.dto.mq.order.body.CommonOrderMQMsg;
import com.yeshi.fanli.entity.dy.DYOrder;
import com.yeshi.fanli.exception.dy.DYOrderException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.order.dy.DYOrderService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.RedisKeyEnum;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.goods.douyin.CSJCPSApiUtil;
import com.yeshi.fanli.util.goods.douyin.vo.DYOrderFilter;
import com.yeshi.fanli.util.goods.douyin.vo.DYOrderResult;
import com.yeshi.fanli.util.mq.cmq.order.OrdersCMQManager;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
//从抖音爬取订单更新
@Component
public class UpdateDYOrderJob {
    @Resource
    private DYOrderService dyOrderService;
    @Resource
    private RedisManager redisManager;
    /**
     * 保存订单
     *
     * @param dyOrderList
     */
    public void saveDYOrders(List<DYOrder> dyOrderList) {
        //5分钟不更新就报警
        try {
            redisManager.cacheCommonString(RedisKeyEnum.monitor.getKey() + Constant.SOURCE_TYPE_DY, "1", 60 * 5);
        } catch (Exception e) {
        }
        for (DYOrder order : dyOrderList) {
            LogHelper.orderInfo("抖音订单:" + order.getOrder_id() + "-" + order.getFlow_point());
            try {
                dyOrderService.addOrder(order);
                /**
                 * 做频率限制
                 */
                String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.DYOrder, order.getOrder_id() + "");
                String result = redisManager.getCommonString(key);
                // 判断
                if (StringUtil.isNullOrEmpty(result)) {
                    OrdersCMQManager.getInstance().addOrder(new CommonOrderMQMsg(order.getOrder_id() + "", Constant.SOURCE_TYPE_DY));
                    redisManager.cacheCommonString(key, "1", 60 * 60 * 2);// 2小时内不再更新
                }
            } catch (DYOrderException e) {
                e.printStackTrace();
            }
        }
    }
    /**
     * 快速订单更新(爬取本小时内的单,每分钟一次)
     */
    @XxlJob("updateDYOrderHandler")
    public ReturnT<String> updateDYOrder(String param) throws Exception {
        if ("1".equalsIgnoreCase(param)) {// 更新5分钟内的订单
            LogHelper.job("开始爬取抖音订单");
            DYOrderFilter filter = new DYOrderFilter();
            filter.setCursor("0");
            filter.setEnd_time(System.currentTimeMillis() / 1000);
            filter.setStart_time(filter.getEnd_time() - 60 * 5);
            //商品分销订单
            filter.setOrder_type(DYOrderFilter.ORDER_TYPE_GOODS);
            updateOrder(filter);
            //直播分销订单
            filter.setOrder_type(DYOrderFilter.ORDER_TYPE_LIVE);
            updateOrder(filter);
        } else if ("1hour".equalsIgnoreCase(param)) {// 更新1小时内的订单
            DYOrderFilter filter = new DYOrderFilter();
            filter.setCursor("0");
            filter.setEnd_time(System.currentTimeMillis() / 1000);
            filter.setStart_time(filter.getEnd_time() - 60 * 60);
            //商品分销订单
            filter.setOrder_type(DYOrderFilter.ORDER_TYPE_GOODS);
            updateOrder(filter);
            //直播分销订单
            filter.setOrder_type(DYOrderFilter.ORDER_TYPE_LIVE);
            updateOrder(filter);
        } else if ("1day".equalsIgnoreCase(param)) {// 更新1天内的订单
            DYOrderFilter filter = new DYOrderFilter();
            filter.setCursor("0");
            filter.setEnd_time(System.currentTimeMillis() / 1000);
            filter.setStart_time(filter.getEnd_time() - 60 * 60 * 24);
            //商品分销订单
            filter.setOrder_type(DYOrderFilter.ORDER_TYPE_GOODS);
            updateOrder(filter);
            //直播分销订单
            filter.setOrder_type(DYOrderFilter.ORDER_TYPE_LIVE);
            updateOrder(filter);
        } else if ("3day".equalsIgnoreCase(param)) {// 更新最近3天更新的数据
            DYOrderFilter filter = new DYOrderFilter();
            filter.setCursor("0");
            filter.setEnd_time(System.currentTimeMillis() / 1000);
            filter.setStart_time(filter.getEnd_time() - 60 * 60 * 24 * 10);
            //商品分销订单
            filter.setOrder_type(DYOrderFilter.ORDER_TYPE_GOODS);
            updateOrder(filter);
            //直播分销订单
            filter.setOrder_type(DYOrderFilter.ORDER_TYPE_LIVE);
            updateOrder(filter);
        }
        return ReturnT.SUCCESS;
    }
    private void updateOrder(DYOrderFilter filter) {
        if (filter.getSize() == null) {
            filter.setSize(50);
        }
        DYOrderResult result = CSJCPSApiUtil.orderList(filter);
        if (result != null && result.getOrders() != null) {
            saveDYOrders(result.getOrders());
        }
        if (result != null && !StringUtil.isNullOrEmpty(result.getCursor())) {
            filter.setCursor(result.getCursor());
            updateOrder(filter);
        }
    }
}
fanli/src/main/java/com/yeshi/fanli/job/order/jd/UpdateJDOrderJob.java
@@ -1,17 +1,18 @@
package com.yeshi.fanli.job.order.jd;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.*;
import javax.annotation.Resource;
import com.yeshi.fanli.dao.jd.JDOrderBackUpDao;
import com.yeshi.fanli.dto.jd.JDOrderForBackUpResult;
import com.yeshi.fanli.dto.mq.order.body.CommonOrderMQMsg;
import com.yeshi.fanli.entity.jd.JDBackUpOrder;
import com.yeshi.fanli.entity.order.CommonOrder;
import com.yeshi.fanli.service.inter.order.CommonOrderService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.annotation.JobMonitor;
import com.yeshi.fanli.util.mq.cmq.order.OrdersCMQManager;
import org.springframework.stereotype.Component;
import com.xxl.job.core.biz.model.ReturnT;
@@ -40,6 +41,9 @@
    @Resource
    private JDOrderBackUpDao jdOrderBackUpDao;
    @Resource
    private CommonOrderService commonOrderService;
    /**
@@ -74,7 +78,7 @@
                String result = redisManager.getCommonString(key);
                // 判断
                if (StringUtil.isNullOrEmpty(result)) {
                    JDOrderCMQManager.getInstance().addJDOrder(order.getOrderId() + "");
                    OrdersCMQManager.getInstance().addOrder(new CommonOrderMQMsg(order.getOrderId() + "", Constant.SOURCE_TYPE_JD));
                    redisManager.cacheCommonString(key, "1", 60 * 60 * 2);// 2小时内不再更新
                }
            } catch (JDOrderException e) {
@@ -223,6 +227,25 @@
        return ReturnT.SUCCESS;
    }
    //处理很久没处理的数据
    @JobMonitor(key = "", maxSpaceTime = 60 * 60 * 25)
    @XxlJob("order-jd-process-outdate")
    public ReturnT<String> processoutOfDate(String param) throws Exception {
        //查询 1个月到5个月处于已付款状态的数据
        long maxTime = System.currentTimeMillis() - 1000 * 60 * 60 * 24L * 30;
        long minTime = maxTime - 1000 * 60 * 60 * 24L * 120;
        List<CommonOrder> orderList = commonOrderService.listBySourceTypeAndStateAndThirdCrateTime(Constant.SOURCE_TYPE_JD, CommonOrder.STATE_FK, minTime, maxTime, 1, 200);
        Set<String> orderIds = new HashSet<>();
        for (CommonOrder co : orderList) {
            orderIds.add(co.getOrderNo());
        }
        for (String orderId : orderIds) {
            OrdersCMQManager.getInstance().addOrder(new CommonOrderMQMsg(orderId, Constant.SOURCE_TYPE_JD));
        }
        return ReturnT.SUCCESS;
    }
    private List<JDBackUpOrder> getBackUpOrders(Date hourDate) {
        List<JDBackUpOrder> jdOrderList = new ArrayList<>();
        int pageSize = 200;
fanli/src/main/java/com/yeshi/fanli/job/order/pdd/UpdatePDDOrderJob.java
@@ -6,7 +6,9 @@
import javax.annotation.Resource;
import com.yeshi.fanli.dto.mq.order.body.CommonOrderMQMsg;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.mq.cmq.order.OrdersCMQManager;
import org.springframework.stereotype.Component;
import com.xxl.job.core.biz.model.ReturnT;
@@ -33,7 +35,7 @@
    /**
     * 保存订单
     * 
     * @param jdOrderList
     * @param orderList
     */
    public void savePDDOrders(List<PDDOrder> orderList) {
        //5分钟不更新就报警
@@ -55,7 +57,8 @@
                String result = redisManager.getCommonString(key);
                // if (!StringUtil.isNullOrEmpty(result))
                // continue;
                PDDOrderCMQManager.getInstance().addPDDOrder(order.getOrderSn() + "");
                OrdersCMQManager.getInstance().addOrder(new CommonOrderMQMsg(order.getOrderSn() + "",Constant.SOURCE_TYPE_PDD));
                redisManager.cacheCommonString(key, "1", 60 * 60 * 2);// 2小时内不再更新
            } catch (PDDOrderException e) {
                e.printStackTrace();
@@ -97,8 +100,14 @@
     */
    // @Scheduled(cron = "0 0/30 * * * ? ")
    public void updateUpdateOrder() {
        long endTime = System.currentTimeMillis() - 1000 * 60 * 60L;
        long startTime = System.currentTimeMillis() - 1000 * 60 * 60 * 24L;
        long startTime = System.currentTimeMillis() - 1000 * 60 * 60 * 24L ;
        updateUpdateOrder(startTime,endTime);
    }
    public void updateUpdateOrder(long startTime,long endTime) {
        int page = 1;
        List<PDDOrder> pddOrderList = new ArrayList<>();
        PDDOrderResult result = PinDuoDuoApiUtil.getOrdersList(page++, 50, startTime, endTime);
fanli/src/main/java/com/yeshi/fanli/job/order/suning/UpdateSuningOrderJob.java
@@ -6,7 +6,9 @@
import javax.annotation.Resource;
import com.yeshi.fanli.dto.mq.order.body.CommonOrderMQMsg;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.mq.cmq.order.OrdersCMQManager;
import org.springframework.stereotype.Component;
import com.xxl.job.core.biz.model.ReturnT;
@@ -53,7 +55,7 @@
                String result = redisManager.getCommonString(key);
                // 判断
                if (StringUtil.isNullOrEmpty(result)) {
                    SuningOrderCMQManager.getInstance().addSuningOrder(order.getOrderCode() + "");
                    OrdersCMQManager.getInstance().addOrder(new CommonOrderMQMsg(order.getOrderCode() + "",Constant.SOURCE_TYPE_SUNING));
                    redisManager.cacheCommonString(key, "1", 60 * 60 * 2);// 2小时内不再更新
                }
            } catch (SuningOrderException e) {
fanli/src/main/java/com/yeshi/fanli/job/order/vipshop/UpdateVipShopOrderJob.java
@@ -5,9 +5,11 @@
import javax.annotation.Resource;
import com.yeshi.fanli.dao.mybatis.vipshop.VipShopOrderMapper;
import com.yeshi.fanli.dto.mq.order.body.CommonOrderMQMsg;
import com.yeshi.fanli.entity.order.CommonOrder;
import com.yeshi.fanli.service.inter.order.CommonOrderService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.mq.cmq.order.OrdersCMQManager;
import com.yeshi.fanli.util.vipshop.DingDanXiaApiUtil;
import org.springframework.stereotype.Component;
@@ -58,7 +60,7 @@
                String result = redisManager.getCommonString(key);
                // 判断
//                if (StringUtil.isNullOrEmpty(result)) {
                VipShopOrderCMQManager.getInstance().addVipShopOrder(order.getOrderSn() + "");
                OrdersCMQManager.getInstance().addOrder(new CommonOrderMQMsg(order.getOrderSn() + "",Constant.SOURCE_TYPE_VIP));
                redisManager.cacheCommonString(key, "1", 60 * 60 * 2);// 2小时内不再更新
                LogHelper.test("唯品会订单消息发送成功");
//                }else{
fanli/src/main/java/com/yeshi/fanli/lijin/manager/GoodsLijinMnager.java
@@ -32,6 +32,9 @@
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.SystemInfoUtil;
import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory;
import com.yeshi.fanli.util.goods.douyin.DYUtil;
import com.yeshi.fanli.util.goods.douyin.vo.DYGoods;
import com.yeshi.fanli.util.goods.douyin.vo.DYGoodsDetail;
import com.yeshi.fanli.util.jd.JDUtil;
import com.yeshi.fanli.util.pinduoduo.PinDuoDuoUtil;
import com.yeshi.fanli.util.suning.SuningUtil;
@@ -244,6 +247,18 @@
                    couponPrice = SuningUtil.getCouponPrice((SuningGoodsInfo) goods);
                    fanliMoney = SuningUtil.getGoodsFanLiMoney((SuningGoodsInfo) goods, fanliRate);
                }
            }else if (goods instanceof DYGoods) {
                detailVO = GoodsDetailVOFactory.convertDYGoods((DYGoods) goods, paramsDTO);
                if (fanliRate != null) {
                    couponPrice = DYUtil.getCouponPrice((DYGoods) goods);
                    fanliMoney = DYUtil.getGoodsFanLiMoney((DYGoods) goods, fanliRate);
                }
            }else if (goods instanceof DYGoodsDetail) {
                detailVO = GoodsDetailVOFactory.convertDYGoods((DYGoodsDetail) goods, paramsDTO);
                if (fanliRate != null) {
                    couponPrice = DYUtil.getCouponPrice((DYGoodsDetail) goods);
                    fanliMoney = DYUtil.getGoodsFanLiMoney((DYGoodsDetail) goods, fanliRate);
                }
            } else if (goods instanceof CommonGoods) {
                detailVO = GoodsDetailVOFactory.convertCommonGoods((CommonGoods) goods, paramsDTO);
                if (fanliRate != null) {
fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/GoodsEvaluateServiceImpl.java
@@ -45,6 +45,8 @@
import com.yeshi.fanli.util.cache.PinDuoDuoCacheUtil;
import com.yeshi.fanli.util.factory.CommonGoodsFactory;
import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory;
import com.yeshi.fanli.util.goods.douyin.vo.DYGoods;
import com.yeshi.fanli.util.goods.douyin.vo.DYGoodsDetail;
import com.yeshi.fanli.util.jd.JDApiUtil;
import com.yeshi.fanli.util.jd.JDUtil;
import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil;
@@ -2777,6 +2779,25 @@
    }
    @Override
    public void updateDYGoods(DYGoodsDetail goods) {
        if (goods == null) {
            return;
        }
        for (SystemEnum system : SystemEnum.values()) {
            List<GoodsEvaluate> queryExist = goodsEvaluateDao.queryExist(Constant.SOURCE_TYPE_DY,
                    goods.getProduct_id()+"", system);
            if (queryExist == null || queryExist.size() == 0) {
                continue;
            }
            GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55", system);
            paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate(system));
            GoodsDetailVO goodsNew = GoodsDetailVOFactory.convertDYGoods(goods, paramsDTO);
            updateGoods(queryExist, goodsNew);
        }
    }
    @Override
    public void updateSuningGoods(SuningGoodsInfo goods) {
        if (goods == null) {
            return;
fanli/src/main/java/com/yeshi/fanli/service/impl/goods/CollectionGoodsV2ServiceImpl.java
@@ -5,6 +5,7 @@
import javax.annotation.Resource;
import com.yeshi.fanli.util.goods.douyin.vo.DYGoodsDetail;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -98,6 +99,14 @@
    }
    @Override
    public void addDYCollection(Long uid, DYGoodsDetail goods) throws CollectionGoodsException {
        if (uid == null || uid == 0)
            throw new CollectionGoodsException(1, "无用户ID");
        CommonGoods commonGoods = CommonGoodsFactory.create(goods);
        addCollection(uid,commonGoods);
    }
    @Override
    public void addSuningCollection(Long uid, SuningGoodsInfo goods) throws CollectionGoodsException {
        if (uid == null || uid == 0)
            throw new CollectionGoodsException(1, "无用户ID");
fanli/src/main/java/com/yeshi/fanli/service/impl/goods/ScanHistoryV2ServiceImpl.java
@@ -5,6 +5,7 @@
import javax.annotation.Resource;
import com.yeshi.fanli.util.goods.douyin.vo.DYGoodsDetail;
import org.springframework.stereotype.Service;
import com.yeshi.fanli.dao.mybatis.goods.ScanHistoryV2Mapper;
@@ -53,6 +54,14 @@
        addScanHistory(commonGoods, device, uid);
    }
    @Override
    public void addDYScanHistory(Long uid, String device, DYGoodsDetail dyGoods) throws CommonGoodsException, ScanHistoryException {
        if (uid == null && StringUtil.isNullOrEmpty(device))
            throw new ScanHistoryException(1, "设备或用户信息缺失");
        CommonGoods commonGoods = CommonGoodsFactory.create(dyGoods);
        addScanHistory(commonGoods, device, uid);
    }
    private void addScanHistory(CommonGoods commonGoods, String device, Long uid)
            throws CommonGoodsException, ScanHistoryException {
        commonGoods = commonGoodsService.addOrUpdateCommonGoods(commonGoods);
fanli/src/main/java/com/yeshi/fanli/service/impl/goods/ShareGoodsTextTemplateServiceImpl.java
@@ -7,6 +7,8 @@
import com.yeshi.fanli.entity.SystemEnum;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.util.goods.douyin.DYUtil;
import com.yeshi.fanli.util.goods.douyin.vo.DYGoodsDetail;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.yeshi.utils.BigDecimalUtil;
@@ -34,927 +36,999 @@
/**
 * 分享商品模板
 *
 * @author Administrator
 *
 * @author Administrator
 */
@Service
public class ShareGoodsTextTemplateServiceImpl implements ShareGoodsTextTemplateService {
    @Resource
    private ShareGoodsTextTemplateMapper shareGoodsTextTemplateMapper;
    @Resource
    private ShareGoodsTextTemplateMapper shareGoodsTextTemplateMapper;
    @Resource
    private ConfigService configService;
    @Resource
    private ConfigService configService;
    @Resource
    private ConfigTaoLiJinService configTaoLiJinService;
    @Resource
    private ConfigTaoLiJinService configTaoLiJinService;
    @Resource
    private UserInfoService userInfoService;
    @Resource
    private UserInfoService userInfoService;
    @Override
    public void saveCommonTemplate(Long uid, String template) throws ShareGoodsTextTemplateException {
        isCommonTemplateRight(template);
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setShareTextTemplate(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setShareTextTemplate(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
    }
    @Override
    public void saveCommonTemplate(Long uid, String template) throws ShareGoodsTextTemplateException {
        isCommonTemplateRight(template);
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setShareTextTemplate(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setShareTextTemplate(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
    }
    @Override
    public void saveCommonTemplateJD(Long uid, String template) throws ShareGoodsTextTemplateException {
        isCommonTemplateRight(template);
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setShareJDTextTemplate(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setShareJDTextTemplate(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
    }
    @Override
    public void saveCommonTemplateJD(Long uid, String template) throws ShareGoodsTextTemplateException {
        isCommonTemplateRight(template);
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setShareJDTextTemplate(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setShareJDTextTemplate(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
    }
    @Override
    public void saveCommonTemplatePDD(Long uid, String template) throws ShareGoodsTextTemplateException {
        isCommonTemplateRight(template);
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setSharePDDTextTemplate(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setSharePDDTextTemplate(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
    }
    @Override
    public void saveCommonTemplatePDD(Long uid, String template) throws ShareGoodsTextTemplateException {
        isCommonTemplateRight(template);
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setSharePDDTextTemplate(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setSharePDDTextTemplate(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
    }
    @Override
    public String getCommonTemplate(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null)
            return template.getShareTextTemplate();
        return null;
    }
    @Override
    public String getCommonTemplate(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null)
            return template.getShareTextTemplate();
        return null;
    }
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void saveCouponTemplate(Long uid, String template) throws ShareGoodsTextTemplateException {
        // 格式验证
        isTaoLiJinTemplateRight(template);
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void saveCouponTemplate(Long uid, String template) throws ShareGoodsTextTemplateException {
        // 格式验证
        isTaoLiJinTemplateRight(template);
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setShareCouponTextTemplate(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setShareCouponTextTemplate(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
    }
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setShareCouponTextTemplate(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setShareCouponTextTemplate(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
    }
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void saveCouponTemplateJD(Long uid, String template) throws ShareGoodsTextTemplateException {
        // 格式验证
        isTaoLiJinTemplateRight(template);
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void saveCouponTemplateJD(Long uid, String template) throws ShareGoodsTextTemplateException {
        // 格式验证
        isTaoLiJinTemplateRight(template);
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setShareJDTextTemplateCoupon(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setShareJDTextTemplateCoupon(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
    }
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setShareJDTextTemplateCoupon(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setShareJDTextTemplateCoupon(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
    }
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void saveCouponTemplatePDD(Long uid, String template) throws ShareGoodsTextTemplateException {
        // 格式验证
        isTaoLiJinTemplateRight(template);
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void saveCouponTemplatePDD(Long uid, String template) throws ShareGoodsTextTemplateException {
        // 格式验证
        isTaoLiJinTemplateRight(template);
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setSharePDDTextTemplateCoupon(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setSharePDDTextTemplateCoupon(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
    }
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setSharePDDTextTemplateCoupon(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setSharePDDTextTemplateCoupon(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
    }
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void saveTaoLiJinTemplate(Long uid, String template) throws ShareGoodsTextTemplateException {
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void saveTaoLiJinTemplate(Long uid, String template) throws ShareGoodsTextTemplateException {
        isCouponTemplateRight(template);
        isCouponTemplateRight(template);
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setShareTaoLiJinTextTemplate(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setShareTaoLiJinTextTemplate(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setShareTaoLiJinTextTemplate(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setShareTaoLiJinTextTemplate(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
    }
    }
    @Override
    public String geteCouponTemplate(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null)
            return template.getShareCouponTextTemplate();
        return null;
    }
    @Override
    public String geteCouponTemplate(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null)
            return template.getShareCouponTextTemplate();
        return null;
    }
    @Override
    public String getTaoLiJinTemplate(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null)
            return template.getShareTaoLiJinTextTemplate();
        return null;
    }
    @Override
    public String getTaoLiJinTemplate(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null)
            return template.getShareTaoLiJinTextTemplate();
        return null;
    }
    @Override
    public ShareGoodsTextTemplate getShareGoodsTextTemplate(Long uid) {
        return shareGoodsTextTemplateMapper.selectByUid(uid);
    }
    @Override
    public ShareGoodsTextTemplate getShareGoodsTextTemplate(Long uid) {
        return shareGoodsTextTemplateMapper.selectByUid(uid);
    }
    @Override
    public String getTextTemplateByTB(Long uid) {
        String template = "";
        ShareGoodsTextTemplate objct = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (objct != null && !StringUtil.isNullOrEmpty(objct.getShareTextTemplate())) {
            template = objct.getShareTextTemplate();
            if (template.contains("{商品原价}") || template.contains("{优惠券面额}") || template.contains("{优惠券价}")
                    || template.contains("{月销量}")) {
                template = ""; // 老板分享
            }
        }
        SystemEnum system=userInfoService.getUserSystem(uid);
        if (StringUtil.isNullOrEmpty(template)) {
            template = configService.getValue(ConfigKeyEnum.shareCommentTextTB.getKey(),system);
        }
    @Override
    public String getTextTemplateByTB(Long uid) {
        String template = "";
        ShareGoodsTextTemplate objct = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (objct != null && !StringUtil.isNullOrEmpty(objct.getShareTextTemplate())) {
            template = objct.getShareTextTemplate();
            if (template.contains("{商品原价}") || template.contains("{优惠券面额}") || template.contains("{优惠券价}")
                    || template.contains("{月销量}")) {
                template = ""; // 老板分享
            }
        }
        SystemEnum system = userInfoService.getUserSystem(uid);
        if (StringUtil.isNullOrEmpty(template)) {
            template = configService.getValue(ConfigKeyEnum.shareCommentTextTB.getKey(), system);
        }
        return template;
    }
        return template;
    }
    @Override
    public String getTextTemplateByJD(Long uid) {
        String template = "";
        ShareGoodsTextTemplate objct = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (objct != null && !StringUtil.isNullOrEmpty(objct.getShareJDTextTemplate())) {
            template = objct.getShareJDTextTemplate();
            if (template.contains("{商品原价}") || template.contains("{月销量}") || template.contains("{短链接}")) {
                template = ""; // 老板分享
            }
        }
        if (StringUtil.isNullOrEmpty(template)) {
            SystemEnum system=userInfoService.getUserSystem(uid);
            template = configService.getValue(ConfigKeyEnum.shareCommentTextJD.getKey(),system);
        }
        return template;
    }
    @Override
    public String getTextTemplateByJD(Long uid) {
        String template = "";
        ShareGoodsTextTemplate objct = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (objct != null && !StringUtil.isNullOrEmpty(objct.getShareJDTextTemplate())) {
            template = objct.getShareJDTextTemplate();
            if (template.contains("{商品原价}") || template.contains("{月销量}") || template.contains("{短链接}")) {
                template = ""; // 老板分享
            }
        }
        if (StringUtil.isNullOrEmpty(template)) {
            SystemEnum system = userInfoService.getUserSystem(uid);
            template = configService.getValue(ConfigKeyEnum.shareCommentTextJD.getKey(), system);
        }
        return template;
    }
    @Override
    public String getTextTemplateByPDD(Long uid) {
        String template = "";
        ShareGoodsTextTemplate objct = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (objct != null && !StringUtil.isNullOrEmpty(objct.getSharePDDTextTemplate())) {
            template = objct.getSharePDDTextTemplate();
            if (template.contains("{商品原价}") || template.contains("{总销量}") || template.contains("{短链接}")) {
                template = ""; // 老板分享
            }
        }
        if (StringUtil.isNullOrEmpty(template)) {
            SystemEnum system=userInfoService.getUserSystem(uid);
            template = configService.getValue(ConfigKeyEnum.shareCommentTextPDD.getKey(),system);
        }
    @Override
    public String getTextTemplateByPDD(Long uid) {
        String template = "";
        ShareGoodsTextTemplate objct = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (objct != null && !StringUtil.isNullOrEmpty(objct.getSharePDDTextTemplate())) {
            template = objct.getSharePDDTextTemplate();
            if (template.contains("{商品原价}") || template.contains("{总销量}") || template.contains("{短链接}")) {
                template = ""; // 老板分享
            }
        }
        if (StringUtil.isNullOrEmpty(template)) {
            SystemEnum system = userInfoService.getUserSystem(uid);
            template = configService.getValue(ConfigKeyEnum.shareCommentTextPDD.getKey(), system);
        }
        return template;
    }
        return template;
    }
    @Override
    public String getTextTemplateByVIP(Long uid) {
        String template = "";
        ShareGoodsTextTemplate objct = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (objct != null && !StringUtil.isNullOrEmpty(objct.getShareVIPTextTemplate())) {
            template = objct.getShareVIPTextTemplate();
        }
        if (StringUtil.isNullOrEmpty(template)) {
            SystemEnum system=userInfoService.getUserSystem(uid);
            template = configService.getValue(ConfigKeyEnum.shareCommentTextVIP.getKey(),system);
        }
    @Override
    public String getTextTemplateByVIP(Long uid) {
        String template = "";
        ShareGoodsTextTemplate objct = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (objct != null && !StringUtil.isNullOrEmpty(objct.getShareVIPTextTemplate())) {
            template = objct.getShareVIPTextTemplate();
        }
        if (StringUtil.isNullOrEmpty(template)) {
            SystemEnum system = userInfoService.getUserSystem(uid);
            template = configService.getValue(ConfigKeyEnum.shareCommentTextVIP.getKey(), system);
        }
        return template;
    }
    @Override
    public String getTextTemplateBySuNing(Long uid) {
        String template = "";
        ShareGoodsTextTemplate objct = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (objct != null && !StringUtil.isNullOrEmpty(objct.getShareSuNingTextTemplate())) {
            template = objct.getShareSuNingTextTemplate();
        }
        if (StringUtil.isNullOrEmpty(template)) {
            SystemEnum system=userInfoService.getUserSystem(uid);
            template = configService.getValue(ConfigKeyEnum.shareCommentTextSuNing.getKey(),system);
        }
        return template;
    }
        return template;
    }
    @Override
    public void saveTemplateTB(Long uid, String template) throws ShareGoodsTextTemplateException {
        verifyRightTB(template);
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setShareTextTemplate(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setShareTextTemplate(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
    }
    @Override
    public String getTextTemplateBySuNing(Long uid) {
        String template = "";
        ShareGoodsTextTemplate objct = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (objct != null && !StringUtil.isNullOrEmpty(objct.getShareSuNingTextTemplate())) {
            template = objct.getShareSuNingTextTemplate();
        }
        if (StringUtil.isNullOrEmpty(template)) {
            SystemEnum system = userInfoService.getUserSystem(uid);
            template = configService.getValue(ConfigKeyEnum.shareCommentTextSuNing.getKey(), system);
        }
    @Override
    public void saveTemplateJD(Long uid, String template) throws ShareGoodsTextTemplateException {
        verifyRightJD(template);
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setShareJDTextTemplate(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setShareJDTextTemplate(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
    }
        return template;
    }
    @Override
    public void saveTemplatePDD(Long uid, String template) throws ShareGoodsTextTemplateException {
        verifyRightPDD(template);
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setSharePDDTextTemplate(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setSharePDDTextTemplate(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
    }
    @Override
    public void resetCommonTemplateDY(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(template.getId());
            update.setShareDYTextTemplate("");
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        }
    }
    @Override
    public void resetCouponTemplateDY(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(template.getId());
            update.setShareDYTextTemplate("");
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        }
    }
    @Override
    public String getTextTemplateByDY(Long uid) {
        String template = "";
        ShareGoodsTextTemplate objct = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (objct != null && !StringUtil.isNullOrEmpty(objct.getShareDYTextTemplate())) {
            template = objct.getShareDYTextTemplate();
        }
        if (StringUtil.isNullOrEmpty(template)) {
            SystemEnum system = userInfoService.getUserSystem(uid);
            template = configService.getValue(ConfigKeyEnum.shareCommentTextDY.getKey(), system);
        }
        return template;
    }
    @Override
    public void saveTemplateTB(Long uid, String template) throws ShareGoodsTextTemplateException {
        verifyRightTB(template);
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setShareTextTemplate(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setShareTextTemplate(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
    }
    @Override
    public void saveTemplateJD(Long uid, String template) throws ShareGoodsTextTemplateException {
        verifyRightJD(template);
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setShareJDTextTemplate(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setShareJDTextTemplate(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
    }
    @Override
    public void saveTemplatePDD(Long uid, String template) throws ShareGoodsTextTemplateException {
        verifyRightPDD(template);
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setSharePDDTextTemplate(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setSharePDDTextTemplate(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
    }
    @Override
    public void saveTemplateVIP(Long uid, String template) throws ShareGoodsTextTemplateException {
        verifyRightVIP(template);
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setShareVIPTextTemplate(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setShareVIPTextTemplate(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
    }
    @Override
    public void saveTemplateSuNing(Long uid, String template) throws ShareGoodsTextTemplateException {
        verifyRightSuNing(template);
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setShareSuNingTextTemplate(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setShareSuNingTextTemplate(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
    }
    @Override
    public void saveTemplateDY(Long uid, String template) throws ShareGoodsTextTemplateException {
        verifyRightDY(template);
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setShareDYTextTemplate(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setShareDYTextTemplate(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
    }
    @Override
    public void verifyRightTB(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[]{"{原价}", "{券后价}", "{淘口令}"};
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
    @Override
    public void verifyRightJD(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[]{"{原价}", "{券后价}", "{链接}"};
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
    @Override
    public void verifyRightPDD(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[]{"{原价}", "{券后价}", "{链接}"};
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
    @Override
    public void verifyRightVIP(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[]{"{在售价}", "{折扣价}", "{链接}"};
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
    @Override
    public void verifyRightSuNing(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[]{"{原价}", "{券后价}", "{链接}"};
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
    @Override
    public void verifyRightDY(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[]{"{原价}", "{券后价}", "{链接}"};
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
    @Override
    public String createContentTB(String template, TaoBaoGoodsBrief goods, String token, boolean coupon) {
        String commentText = template.replace("{原价}", goods.getZkPrice().toString());
        commentText = commentText.replace("{淘口令}", TaoBaoUtil.filterTaoToken(token));
        if (!coupon) {
            commentText = commentText.replace("领券抢购", "抢购");
            commentText = commentText.replace("【券后价】{券后价}元", "");
        } else {
            commentText = commentText.replace("{券后价}", TaoBaoUtil.getCouponPrice(goods) + "");
        }
        return deleteBlankLine(commentText);
    }
    @Override
    public String createContentJD(String template, JDGoods goods, String jumpLink, boolean coupon) {
        String commentText = template.replace("{原价}", goods.getPrice().toString());
        commentText = commentText.replace("{链接}", jumpLink);
        if (!coupon) {
            commentText = commentText.replace("领券抢购", "抢购");
            commentText = commentText.replace("【券后价】{券后价}元", "");
        } else {
            commentText = commentText.replace("{券后价}",
                    BigDecimalUtil.getWithNoZera(JDUtil.getCouponPrice(goods)).toString());
        }
        return deleteBlankLine(commentText);
    }
    @Override
    public String createContentPDD(String template, PDDGoodsDetail goods, String jumpLink, boolean coupon) {
        String commentText = template.replace("{原价}", MoneyBigDecimalUtil
                .div(new BigDecimal(goods.getMinGroupPrice()), new BigDecimal(100)).setScale(2).toString());
        commentText = commentText.replace("{链接}", jumpLink);
        if (!coupon) {
            commentText = commentText.replace("领券抢购", "抢购");
            commentText = commentText.replace("【券后价】{券后价}元", "");
        } else {
            commentText = commentText.replace("{券后价}",
                    BigDecimalUtil.getWithNoZera(PinDuoDuoUtil.getCouponPrice(goods)).toString());
        }
        return deleteBlankLine(commentText);
    }
    @Override
    public String createContentVIP(String template, VIPGoodsInfo goods, String jumpLink) {
        String commentText = template.replace("{在售价}", "" + BigDecimalUtil.getWithNoZera(new BigDecimal(goods.getMarketPrice())));
        commentText = commentText.replace("{链接}", jumpLink);
        commentText = commentText.replace("{折扣价}", "" + MoneyBigDecimalUtil.getWithNoZera(new BigDecimal(goods.getVipPrice())));
        return deleteBlankLine(commentText);
    }
    @Override
    public void isCommonTemplateRight(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[]{"{标题}", "{店铺类型}", "{商品原价}", "{月销量}", "{短链}", "{淘口令}"};
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
    @Override
    public void isCommonTemplateRightJD(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[]{"{标题}", "{京东价}", "{商品原价}", "{月销量}", "{短链接}"};
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
    @Override
    public void isCommonTemplateRightPDD(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[]{"{标题}", "{商品原价}", "{月销量}", "{短链接}"};
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
    @Override
    public void isCouponTemplateRight(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[]{"{标题}", "{店铺类型}", "{商品原价}", "{优惠券面额}", "{优惠券价}", "{月销量}", "{领券短链}", "{淘口令}"};
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
    @Override
    public void isCouponTemplateRightJD(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[]{"{标题}", "{京东价}", "{商品原价}", "{优惠券面额}", "{优惠券价}", "{月销量}", "{短链接}"};
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
    @Override
    public void isCouponTemplateRightPDD(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[]{"{标题}", "{商品原价}", "{优惠券面额}", "{优惠券价}", "{总销量}", "{短链接}"};
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
    @Override
    public void saveTemplateVIP(Long uid, String template) throws ShareGoodsTextTemplateException {
        verifyRightVIP(template);
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setShareVIPTextTemplate(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setShareVIPTextTemplate(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
    }
    @Override
    public void isTaoLiJinTemplateRight(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[]{"{标题}", "{店铺类型}", "{商品原价}", "{优惠券面额}", "{淘礼金面额}", "{优惠券价}", "{月销量}", "{领券短链}",
                "{淘口令}"};
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
    @Override
    public void saveTemplateSuNing(Long uid, String template) throws ShareGoodsTextTemplateException {
        verifyRightSuNing(template);
        ShareGoodsTextTemplate old = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (old != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(old.getId());
            update.setShareSuNingTextTemplate(template);
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        } else {
            ShareGoodsTextTemplate textTemplate = new ShareGoodsTextTemplate();
            textTemplate.setCreateTime(new Date());
            textTemplate.setShareSuNingTextTemplate(template);
            textTemplate.setUid(uid);
            shareGoodsTextTemplateMapper.insertSelective(textTemplate);
        }
    }
    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");
    }
    @Override
    public void verifyRightTB(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[] { "{原价}", "{券后价}", "{淘口令}" };
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
    @Override
    public String createContentByTemplate(String template, Long uid, TaoBaoGoodsBrief goods, String token,
                                          String shortLink, boolean hasCoupon, Long tljId) {
    @Override
    public void verifyRightJD(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[] { "{原价}", "{券后价}", "{链接}" };
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
        if (tljId != null) {
            // 计算推广红包
            String warningRate = configTaoLiJinService.getValueByKey("warning_value", new Date());
            BigDecimal spreadMoney = TaoLiJinUtil.getSpreadMoney(warningRate, goods);
    @Override
    public void verifyRightPDD(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[] { "{原价}", "{券后价}", "{链接}" };
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
            return template.replace("{标题}", goods.getTitle())
                    .replace("{商品原价}", BigDecimalUtil.getWithNoZera(goods.getZkPrice()).toString())
                    .replace("{月销量}", TaoBaoUtil.getSaleCount(goods.getBiz30day())).replace("{领券短链}", shortLink)
                    .replace("{淘口令}", token)
                    .replace("{优惠券面额}", BigDecimalUtil.getWithNoZera(goods.getCouponAmount()).toString())
                    .replace("{淘礼金面额}", BigDecimalUtil.getWithNoZera(spreadMoney).toString())
                    .replace("{优惠券价}",
                            BigDecimalUtil.getWithNoZera(TaoBaoUtil.getCouponPrice(goods)).toString())
                    .replace("{店铺类型}", goods.getUserType() == 1 ? TaoBaoConstant.SHARE_PRICE_TM
                            : TaoBaoConstant.SHARE_PRICE_TAOBAO);
        }
    @Override
    public void verifyRightVIP(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[] { "{在售价}", "{折扣价}", "{链接}" };
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
    @Override
    public void verifyRightSuNing(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[] { "{原价}", "{券后价}", "{链接}" };
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
    @Override
    public String createContentTB(String template, TaoBaoGoodsBrief goods, String token, boolean coupon) {
        String commentText = template.replace("{原价}", goods.getZkPrice().toString());
        commentText = commentText.replace("{淘口令}", TaoBaoUtil.filterTaoToken(token));
        if (!coupon) {
            commentText = commentText.replace("领券抢购", "抢购");
            commentText = commentText.replace("【券后价】{券后价}元", "");
        } else {
            commentText = commentText.replace("{券后价}", TaoBaoUtil.getCouponPrice(goods) + "");
        }
        return deleteBlankLine(commentText);
    }
        if (!hasCoupon) {
            return template.replace("{标题}", goods.getTitle())
                    .replace("{商品原价}", BigDecimalUtil.getWithNoZera(goods.getZkPrice()).toString())
                    .replace("{月销量}", TaoBaoUtil.getSaleCount(goods.getBiz30day())).replace("{领券短链}", shortLink)
                    .replace("{淘口令}", token).replace("{店铺类型}", goods.getUserType() == 1 ? TaoBaoConstant.SHARE_PRICE_TM
                            : TaoBaoConstant.SHARE_PRICE_TAOBAO);
        } else {
            return template.replace("{标题}", goods.getTitle())
                    .replace("{商品原价}", BigDecimalUtil.getWithNoZera(goods.getZkPrice()).toString())
                    .replace("{月销量}", TaoBaoUtil.getSaleCount(goods.getBiz30day())).replace("{领券短链}", shortLink)
                    .replace("{淘口令}", token)
                    .replace("{优惠券面额}", BigDecimalUtil.getWithNoZera(goods.getCouponAmount()).toString())
                    .replace("{优惠券价}",
                            BigDecimalUtil.getWithNoZera(TaoBaoUtil.getCouponPrice(goods)).toString())
                    .replace("{店铺类型}", goods.getUserType() == 1 ? TaoBaoConstant.SHARE_PRICE_TM
                            : TaoBaoConstant.SHARE_PRICE_TAOBAO);
        }
    }
    @Override
    public String createContentJD(String template, JDGoods goods, String jumpLink, boolean coupon) {
        String commentText = template.replace("{原价}", goods.getPrice().toString());
        commentText = commentText.replace("{链接}", jumpLink);
        if (!coupon) {
            commentText = commentText.replace("领券抢购", "抢购");
            commentText = commentText.replace("【券后价】{券后价}元", "");
        } else {
            commentText = commentText.replace("{券后价}",
                    BigDecimalUtil.getWithNoZera(JDUtil.getCouponPrice(goods)).toString());
        }
        return deleteBlankLine(commentText);
    }
    @Override
    public String createContentByTemplateJD(String template, Long uid, JDGoods goods, String shortLink,
                                            boolean hasCoupon) {
        BigDecimal price = goods.getPrice();
        JDPingouInfo pinGouInfo = goods.getPinGouInfo();
        if (pinGouInfo != null) {
            price = pinGouInfo.getPingouPrice();
        }
    @Override
    public String createContentPDD(String template, PDDGoodsDetail goods, String jumpLink, boolean coupon) {
        String commentText = template.replace("{原价}", MoneyBigDecimalUtil
                .div(new BigDecimal(goods.getMinGroupPrice()), new BigDecimal(100)).setScale(2).toString());
        commentText = commentText.replace("{链接}", jumpLink);
        if (!coupon) {
            commentText = commentText.replace("领券抢购", "抢购");
            commentText = commentText.replace("【券后价】{券后价}元", "");
        } else {
            commentText = commentText.replace("{券后价}",
                    BigDecimalUtil.getWithNoZera(PinDuoDuoUtil.getCouponPrice(goods)).toString());
        }
        return deleteBlankLine(commentText);
    }
        if (!hasCoupon) {
            template = template.replace("{标题}", goods.getSkuName())
                    .replace("{商品原价}", BigDecimalUtil.getWithNoZera(price).toString())
                    .replace("{月销量}", JDUtil.getSaleCount(goods.getInOrderCount30Days())).replace("{短链接}", shortLink);
        } else {
            template = template.replace("{标题}", goods.getSkuName())
                    .replace("{商品原价}", BigDecimalUtil.getWithNoZera(price).toString())
                    .replace("{月销量}", JDUtil.getSaleCount(goods.getInOrderCount30Days())).replace("{短链接}", shortLink)
                    .replace("{优惠券面额}",
                            BigDecimalUtil.getWithNoZera(JDUtil.getShowCouponInfo(goods).getDiscount()).toString())
                    .replace("{优惠券价}", BigDecimalUtil.getWithNoZera(JDUtil.getCouponPrice(goods)).toString());
        }
    @Override
    public String createContentVIP(String template, VIPGoodsInfo goods, String jumpLink) {
        String commentText = template.replace("{在售价}", ""+BigDecimalUtil.getWithNoZera(new BigDecimal(goods.getMarketPrice())));
        commentText = commentText.replace("{链接}", jumpLink);
        commentText = commentText.replace("{折扣价}", "" +MoneyBigDecimalUtil.getWithNoZera(new BigDecimal(goods.getVipPrice())));
        return deleteBlankLine(commentText);
    }
        if (pinGouInfo != null) {
            template = template.replace("{京东价}", "拼购价");
        } else {
            template = template.replace("{京东价}", "京东价");
        }
        return template;
    }
    @Override
    public void isCommonTemplateRight(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[] { "{标题}", "{店铺类型}", "{商品原价}", "{月销量}", "{短链}", "{淘口令}" };
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
    @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(price).toString())
                    .replace("{总销量}", goods.getSalesTip()).replace("{短链接}", shortLink);
            if (StringUtil.isNullOrEmpty(token)) {
                template = template.replace("复制本条信息,{多多口令}打开拼多多,立即购买", "点击链接,打开拼多多,立即购买");
            } else {
                template = template.replace("{多多口令}", token);
            }
        } else {
            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(amount).toString())
                    .replace("{优惠券价}", BigDecimalUtil.getWithNoZera(PinDuoDuoUtil.getCouponPrice(goods)).toString());
    @Override
    public void isCommonTemplateRightJD(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[] { "{标题}", "{京东价}", "{商品原价}", "{月销量}", "{短链接}" };
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
            if (StringUtil.isNullOrEmpty(token)) {
                template = template.replace("复制本条信息,{多多口令}打开拼多多,免费领券", "点击链接,打开拼多多,免费领券");
            } else {
                template = template.replace("{多多口令}", token);
            }
        }
    @Override
    public void isCommonTemplateRightPDD(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[] { "{标题}", "{商品原价}", "{月销量}", "{短链接}" };
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
        return template;
    }
    @Override
    public void isCouponTemplateRight(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[] { "{标题}", "{店铺类型}", "{商品原价}", "{优惠券面额}", "{优惠券价}", "{月销量}", "{领券短链}", "{淘口令}" };
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
    @Override
    public void resetCommonTemplate(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(template.getId());
            update.setShareTextTemplate("");
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        }
    @Override
    public void isCouponTemplateRightJD(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[] { "{标题}", "{京东价}", "{商品原价}", "{优惠券面额}", "{优惠券价}", "{月销量}", "{短链接}" };
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
    }
    @Override
    public void isCouponTemplateRightPDD(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[] { "{标题}", "{商品原价}", "{优惠券面额}", "{优惠券价}", "{总销量}", "{短链接}" };
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
    @Override
    public void resetCouponTemplate(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(template.getId());
            update.setShareCouponTextTemplate("");
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        }
    }
    @Override
    public void isTaoLiJinTemplateRight(String template) throws ShareGoodsTextTemplateException {
        String[] keys = new String[] { "{标题}", "{店铺类型}", "{商品原价}", "{优惠券面额}", "{淘礼金面额}", "{优惠券价}", "{月销量}", "{领券短链}",
                "{淘口令}" };
        int keysCount = 0;
        for (String key : keys)
            if (template != null && template.contains(key))
                keysCount++;
        if (keysCount == 0)
            throw new ShareGoodsTextTemplateException(1, "模板格式有误");
    }
    @Override
    public void resetCommonTemplateJD(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(template.getId());
            update.setShareJDTextTemplate("");
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        }
    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");
    }
    }
    @Override
    public String createContentByTemplate(String template, Long uid, TaoBaoGoodsBrief goods, String token,
            String shortLink, boolean hasCoupon, Long tljId) {
    @Override
    public void resetCouponTemplateJD(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(template.getId());
            update.setShareJDTextTemplateCoupon("");
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        }
    }
        if (tljId != null) {
            // 计算推广红包
            String warningRate = configTaoLiJinService.getValueByKey("warning_value", new Date());
            BigDecimal spreadMoney = TaoLiJinUtil.getSpreadMoney(warningRate, goods);
    @Override
    public void resetCommonTemplatePDD(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(template.getId());
            update.setSharePDDTextTemplate("");
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        }
            return template.replace("{标题}", goods.getTitle())
                    .replace("{商品原价}", BigDecimalUtil.getWithNoZera(goods.getZkPrice()).toString())
                    .replace("{月销量}", TaoBaoUtil.getSaleCount(goods.getBiz30day())).replace("{领券短链}", shortLink)
                    .replace("{淘口令}", token)
                    .replace("{优惠券面额}", BigDecimalUtil.getWithNoZera(goods.getCouponAmount()).toString())
                    .replace("{淘礼金面额}", BigDecimalUtil.getWithNoZera(spreadMoney).toString())
                    .replace("{优惠券价}",
                            BigDecimalUtil.getWithNoZera(TaoBaoUtil.getCouponPrice(goods)).toString())
                    .replace("{店铺类型}", goods.getUserType() == 1 ? TaoBaoConstant.SHARE_PRICE_TM
                            : TaoBaoConstant.SHARE_PRICE_TAOBAO);
        }
    }
        if (!hasCoupon) {
            return template.replace("{标题}", goods.getTitle())
                    .replace("{商品原价}", BigDecimalUtil.getWithNoZera(goods.getZkPrice()).toString())
                    .replace("{月销量}", TaoBaoUtil.getSaleCount(goods.getBiz30day())).replace("{领券短链}", shortLink)
                    .replace("{淘口令}", token).replace("{店铺类型}", goods.getUserType() == 1 ? TaoBaoConstant.SHARE_PRICE_TM
                            : TaoBaoConstant.SHARE_PRICE_TAOBAO);
        } else {
            return template.replace("{标题}", goods.getTitle())
                    .replace("{商品原价}", BigDecimalUtil.getWithNoZera(goods.getZkPrice()).toString())
                    .replace("{月销量}", TaoBaoUtil.getSaleCount(goods.getBiz30day())).replace("{领券短链}", shortLink)
                    .replace("{淘口令}", token)
                    .replace("{优惠券面额}", BigDecimalUtil.getWithNoZera(goods.getCouponAmount()).toString())
                    .replace("{优惠券价}",
                            BigDecimalUtil.getWithNoZera(TaoBaoUtil.getCouponPrice(goods)).toString())
                    .replace("{店铺类型}", goods.getUserType() == 1 ? TaoBaoConstant.SHARE_PRICE_TM
                            : TaoBaoConstant.SHARE_PRICE_TAOBAO);
        }
    }
    @Override
    public void resetCouponTemplatePDD(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(template.getId());
            update.setSharePDDTextTemplateCoupon("");
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        }
    }
    @Override
    public String createContentByTemplateJD(String template, Long uid, JDGoods goods, String shortLink,
            boolean hasCoupon) {
        BigDecimal price = goods.getPrice();
        JDPingouInfo pinGouInfo = goods.getPinGouInfo();
        if (pinGouInfo != null) {
            price = pinGouInfo.getPingouPrice();
        }
        if (!hasCoupon) {
            template = template.replace("{标题}", goods.getSkuName())
                    .replace("{商品原价}", BigDecimalUtil.getWithNoZera(price).toString())
                    .replace("{月销量}", JDUtil.getSaleCount(goods.getInOrderCount30Days())).replace("{短链接}", shortLink);
        } else {
            template = template.replace("{标题}", goods.getSkuName())
                    .replace("{商品原价}", BigDecimalUtil.getWithNoZera(price).toString())
                    .replace("{月销量}", JDUtil.getSaleCount(goods.getInOrderCount30Days())).replace("{短链接}", shortLink)
                    .replace("{优惠券面额}",
                            BigDecimalUtil.getWithNoZera(JDUtil.getShowCouponInfo(goods).getDiscount()).toString())
                    .replace("{优惠券价}", BigDecimalUtil.getWithNoZera(JDUtil.getCouponPrice(goods)).toString());
        }
    @Override
    public void resetCommonTemplateVIP(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(template.getId());
            update.setShareVIPTextTemplate("");
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        }
        if (pinGouInfo != null) {
            template = template.replace("{京东价}", "拼购价");
        } else {
            template = template.replace("{京东价}", "京东价");
        }
        return template;
    }
    }
    @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(price).toString())
                    .replace("{总销量}", goods.getSalesTip()).replace("{短链接}", shortLink);
            if (StringUtil.isNullOrEmpty(token)) {
                template = template.replace("复制本条信息,{多多口令}打开拼多多,立即购买", "点击链接,打开拼多多,立即购买");
            } else {
                template = template.replace("{多多口令}", token);
            }
        } else {
            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(amount).toString())
                    .replace("{优惠券价}", BigDecimalUtil.getWithNoZera(PinDuoDuoUtil.getCouponPrice(goods)).toString());
    @Override
    public void resetCouponTemplateVIP(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(template.getId());
            update.setShareVIPTextTemplateCoupon("");
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        }
    }
            if (StringUtil.isNullOrEmpty(token)) {
                template = template.replace("复制本条信息,{多多口令}打开拼多多,免费领券", "点击链接,打开拼多多,免费领券");
            } else {
                template = template.replace("{多多口令}", token);
            }
        }
        return template;
    }
    @Override
    public void resetCommonTemplateSuNing(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(template.getId());
            update.setShareSuNingTextTemplate("");
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        }
    @Override
    public void resetCommonTemplate(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(template.getId());
            update.setShareTextTemplate("");
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        }
    }
    }
    @Override
    public void resetCouponTemplateSuNing(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(template.getId());
            update.setShareSuNingTextTemplateCoupon("");
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        }
    }
    @Override
    public void resetCouponTemplate(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(template.getId());
            update.setShareCouponTextTemplate("");
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        }
    }
    @Override
    public void resetCommonTemplateJD(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(template.getId());
            update.setShareJDTextTemplate("");
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        }
    @Override
    public void resetTaoLijinTemplate(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(template.getId());
            update.setShareTaoLiJinTextTemplate("");
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        }
    }
    }
    @Override
    public String getRecommendText(boolean coupon, String title, String sales, String couponAmount, String description, SystemEnum system) {
        String template = configService.getValue(ConfigKeyEnum.quickShareGoodsText.getKey(), system);
        String recommendText = template.replace("[商品标题]", title);
        if (!coupon) {
            recommendText = recommendText.replace("推荐理由:[推荐语]", "");
            recommendText = recommendText.replace("优惠券:[券面额]元", "");
        } else {
            recommendText = recommendText.replace("[券面额]", couponAmount);
            if (!StringUtil.isNullOrEmpty(description)) {
                recommendText = recommendText.replace("[推荐语]", description);
            } else {
                recommendText = recommendText.replace("推荐理由:[推荐语]", "");
            }
        }
    @Override
    public void resetCouponTemplateJD(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(template.getId());
            update.setShareJDTextTemplateCoupon("");
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        }
    }
        if (StringUtil.isNullOrEmpty(sales) || sales.equals("0")) {
            recommendText = recommendText.replace("销量:[销量]", "");
        } else {
            recommendText = recommendText.replace("[销量]", sales.replace("万", "w"));
        }
        return recommendText.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n");
    }
    @Override
    public void resetCommonTemplatePDD(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(template.getId());
            update.setSharePDDTextTemplate("");
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        }
    }
    @Override
    public String getCommentTextByTaoToken(boolean coupon, String taoToken, String zkPrice, String quanPrice, SystemEnum system) {
        String quickCommentText = configService.getValue(ConfigKeyEnum.quickShareTBCommentText.getKey(), system);
        String commentText = quickCommentText.replace("[原价]", zkPrice);
        commentText = commentText.replace("[淘口令]", TaoBaoUtil.filterTaoToken(taoToken));
        if (!coupon) {
            commentText = commentText.replace("领券抢购", "抢购");
            commentText = commentText.replace("【券后价】[券后价]元", "");
        } else {
            commentText = commentText.replace("[券后价]", quanPrice);
        }
        return commentText.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n");
    }
    @Override
    public void resetCouponTemplatePDD(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(template.getId());
            update.setSharePDDTextTemplateCoupon("");
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        }
    }
    @Override
    public void resetCommonTemplateVIP(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(template.getId());
            update.setShareVIPTextTemplate("");
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        }
    @Override
    public String getCommentTextByLink(boolean coupon, String link, String zkPrice, String quanPrice, ConfigKeyEnum keyEnum, SystemEnum system) {
        String quickCommentText = configService.getValue(keyEnum.getKey(), system);
        String commentText = quickCommentText.replace("[原价]", zkPrice);
        commentText = commentText.replace("[链接]", link);
        if (!coupon) {
            commentText = commentText.replace("领券抢购", "抢购");
            commentText = commentText.replace("【券后价】[券后价]元", "");
        } else {
            commentText = commentText.replace("[券后价]", quanPrice);
        }
    }
        return commentText.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n");
    }
    @Override
    public void resetCouponTemplateVIP(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(template.getId());
            update.setShareVIPTextTemplateCoupon("");
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        }
    }
    @Override
    public void resetCommonTemplateSuNing(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(template.getId());
            update.setShareSuNingTextTemplate("");
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        }
    @Override
    public String createQuickShareTextSuNing(String template, SuningGoodsInfo goods, String jumpLink) {
        String commodityPrice = goods.getCommodityInfo().getCommodityPrice();
        if (StringUtil.isNullOrEmpty(commodityPrice)) {
            commodityPrice = goods.getCommodityInfo().getSnPrice();
        }
    }
        String commentText = template.replace("[原价]", BigDecimalUtil.getWithNoZera(new BigDecimal(commodityPrice)).toString());
        commentText = commentText.replace("[链接]", jumpLink);
        if (goods.getCouponInfo() != null && !StringUtil.isNullOrEmpty(goods.getCouponInfo().getCouponUrl())) {// 有券
            BigDecimal amount = new BigDecimal(goods.getCouponInfo().getCouponValue());
            BigDecimal startFee = new BigDecimal(goods.getCouponInfo().getBounsLimit());
            BigDecimal zkPrice = new BigDecimal(commodityPrice);
            if (zkPrice.compareTo(startFee) >= 0) {
                BigDecimal couponPrice = zkPrice.subtract(amount);
                commentText = commentText.replace("[券后价]", BigDecimalUtil.getWithNoZera(couponPrice).toString());
            } else {
                commentText = commentText.replace("[券后价]", BigDecimalUtil.getWithNoZera(new BigDecimal(commodityPrice)).toString());
    @Override
    public void resetCouponTemplateSuNing(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(template.getId());
            update.setShareSuNingTextTemplateCoupon("");
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        }
    }
    @Override
    public void resetTaoLijinTemplate(Long uid) {
        ShareGoodsTextTemplate template = shareGoodsTextTemplateMapper.selectByUid(uid);
        if (template != null) {
            ShareGoodsTextTemplate update = new ShareGoodsTextTemplate();
            update.setId(template.getId());
            update.setShareTaoLiJinTextTemplate("");
            update.setUpdateTime(new Date());
            shareGoodsTextTemplateMapper.updateByPrimaryKeySelective(update);
        }
    }
            }
        } else {
            commentText = commentText.replace("领券抢购", "抢购");
            commentText = commentText.replace("【券后价】[券后价]元", "");
        }
        return deleteBlankLine(commentText);
    }
    @Override
    public String getRecommendText(boolean coupon, String title, String sales, String couponAmount, String description, SystemEnum system) {
        String template = configService.getValue(ConfigKeyEnum.quickShareGoodsText.getKey(),system);
        String recommendText = template.replace("[商品标题]", title);
        if (!coupon) {
            recommendText = recommendText.replace("推荐理由:[推荐语]", "");
            recommendText = recommendText.replace("优惠券:[券面额]元", "");
        } else {
            recommendText = recommendText.replace("[券面额]", couponAmount);
            if (!StringUtil.isNullOrEmpty(description)) {
                recommendText = recommendText.replace("[推荐语]", description);
            } else {
                recommendText = recommendText.replace("推荐理由:[推荐语]", "");
            }
        }
        if (StringUtil.isNullOrEmpty(sales)|| sales.equals("0")) {
            recommendText = recommendText.replace("销量:[销量]", "");
        } else {
            recommendText = recommendText.replace("[销量]", sales.replace("万", "w"));
        }
        return recommendText.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n");
    }
    @Override
    public String getCommentTextByTaoToken(boolean coupon, String taoToken, String zkPrice, String quanPrice, SystemEnum system) {
        String quickCommentText = configService.getValue(ConfigKeyEnum.quickShareTBCommentText.getKey(),system);
        String commentText = quickCommentText.replace("[原价]", zkPrice);
        commentText = commentText.replace("[淘口令]", TaoBaoUtil.filterTaoToken(taoToken));
        if (!coupon) {
            commentText = commentText.replace("领券抢购", "抢购");
            commentText = commentText.replace("【券后价】[券后价]元", "");
        } else {
            commentText = commentText.replace("[券后价]", quanPrice);
        }
        return commentText.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n");
    }
    @Override
    public String getCommentTextByLink(boolean coupon, String link, String zkPrice, String quanPrice, ConfigKeyEnum keyEnum, SystemEnum system) {
        String quickCommentText = configService.getValue(keyEnum.getKey(),system);
        String commentText = quickCommentText.replace("[原价]", zkPrice);
        commentText = commentText.replace("[链接]", link);
        if (!coupon) {
            commentText = commentText.replace("领券抢购", "抢购");
            commentText = commentText.replace("【券后价】[券后价]元", "");
        } else {
            commentText = commentText.replace("[券后价]", quanPrice);
        }
        return commentText.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n");
    }
    @Override
    public String createQuickShareTextSuNing(String template, SuningGoodsInfo goods, String jumpLink) {
        String commodityPrice = goods.getCommodityInfo().getCommodityPrice();
        if (StringUtil.isNullOrEmpty(commodityPrice)) {
            commodityPrice = goods.getCommodityInfo().getSnPrice();
        }
        String commentText =  template.replace("[原价]", BigDecimalUtil.getWithNoZera(new BigDecimal(commodityPrice)).toString());
        commentText = commentText.replace("[链接]", jumpLink);
        if (goods.getCouponInfo() != null && !StringUtil.isNullOrEmpty(goods.getCouponInfo().getCouponUrl())) {// 有券
            BigDecimal amount = new BigDecimal(goods.getCouponInfo().getCouponValue());
            BigDecimal startFee = new BigDecimal(goods.getCouponInfo().getBounsLimit());
            BigDecimal zkPrice = new BigDecimal(commodityPrice);
            if (zkPrice.compareTo(startFee) >= 0) {
                BigDecimal couponPrice = zkPrice.subtract(amount);
                commentText = commentText.replace("[券后价]",BigDecimalUtil.getWithNoZera(couponPrice).toString());
            } else {
                commentText = commentText.replace("[券后价]", BigDecimalUtil.getWithNoZera(new BigDecimal(commodityPrice)).toString());
    @Override
    public String createCommonShareTextSuNing(String template, SuningGoodsInfo goods, String jumpLink) {
        String commodityPrice = goods.getCommodityInfo().getCommodityPrice();
        if (StringUtil.isNullOrEmpty(commodityPrice)) {
            commodityPrice = goods.getCommodityInfo().getSnPrice();
        }
        String commentText = template.replace("{原价}", BigDecimalUtil.getWithNoZera(new BigDecimal(commodityPrice)).toString());
        commentText = commentText.replace("{链接}", jumpLink);
        if (goods.getCouponInfo() != null && !StringUtil.isNullOrEmpty(goods.getCouponInfo().getCouponUrl())) {// 有券
            BigDecimal amount = new BigDecimal(goods.getCouponInfo().getCouponValue());
            BigDecimal startFee = new BigDecimal(goods.getCouponInfo().getBounsLimit());
            BigDecimal zkPrice = new BigDecimal(commodityPrice);
            BigDecimal couponPrice = zkPrice;
            if (zkPrice.compareTo(startFee) >= 0) {
                couponPrice = zkPrice.subtract(amount);
                commentText = commentText.replace("{券后价}", BigDecimalUtil.getWithNoZera(couponPrice).toString());
            } else {
                commentText = commentText.replace("{券后价}", BigDecimalUtil.getWithNoZera(new BigDecimal(commodityPrice)).toString());
            }
        } else {
            commentText = commentText.replace("领券抢购", "抢购");
            commentText = commentText.replace("【券后价】{券后价}元", "");
        }
        return deleteBlankLine(commentText);
    }
            }
        } else {
            commentText = commentText.replace("领券抢购", "抢购");
            commentText = commentText.replace("【券后价】[券后价]元", "");
        }
        return deleteBlankLine(commentText);
    }
    @Override
    public String createCommonShareTextDY(String template, DYGoodsDetail goods, String jumpLink) {
        String commentText = template.replace("{原价}", BigDecimalUtil.getWithNoZera(DYUtil.getPrice(goods.getPrice())).toString());
        commentText = commentText.replace("{链接}", jumpLink);
        commentText = commentText.replace("领券抢购", "抢购");
        commentText = commentText.replace("【券后价】{券后价}元", "");
        return deleteBlankLine(commentText);
    }
    @Override
    public String createCommonShareTextSuNing(String template, SuningGoodsInfo goods, String jumpLink) {
        String commodityPrice = goods.getCommodityInfo().getCommodityPrice();
        if (StringUtil.isNullOrEmpty(commodityPrice)) {
            commodityPrice = goods.getCommodityInfo().getSnPrice();
        }
        String commentText =  template.replace("{原价}", BigDecimalUtil.getWithNoZera(new BigDecimal(commodityPrice)).toString());
        commentText = commentText.replace("{链接}", jumpLink);
        if (goods.getCouponInfo() != null && !StringUtil.isNullOrEmpty(goods.getCouponInfo().getCouponUrl())) {// 有券
            BigDecimal amount = new BigDecimal(goods.getCouponInfo().getCouponValue());
            BigDecimal startFee = new BigDecimal(goods.getCouponInfo().getBounsLimit());
            BigDecimal zkPrice = new BigDecimal(commodityPrice);
            BigDecimal couponPrice  = zkPrice;
            if (zkPrice.compareTo(startFee) >= 0) {
                couponPrice = zkPrice.subtract(amount);
                commentText = commentText.replace("{券后价}",BigDecimalUtil.getWithNoZera(couponPrice).toString());
            } else {
                commentText = commentText.replace("{券后价}", BigDecimalUtil.getWithNoZera(new BigDecimal(commodityPrice)).toString());
            }
        } else {
            commentText = commentText.replace("领券抢购", "抢购");
            commentText = commentText.replace("【券后价】{券后价}元", "");
        }
        return deleteBlankLine(commentText);
    }
}
fanli/src/main/java/com/yeshi/fanli/service/impl/homemodule/HomeNavbarServiceImpl.java
@@ -160,7 +160,9 @@
            record.setOrderWoman(resultObj.getOrderWoman());
            record.setCreatetime(resultObj.getCreatetime());
            record.setUpdatetime(new Date());
            record.setIsFixed(false);//目前无固定项
            if(record.getIsFixed()==null) {
                record.setIsFixed(false);//目前无固定项
            }
            homeNavbarMapper.updateByPrimaryKey(record);
        }
    }
fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java
@@ -7,7 +7,10 @@
import javax.annotation.Resource;
import com.yeshi.fanli.entity.SystemEnum;
import com.yeshi.fanli.entity.dy.DYOrder;
import com.yeshi.fanli.service.inter.order.pdd.PDDOrderService;
import com.yeshi.fanli.util.goods.douyin.CSJCPSApiUtil;
import com.yeshi.fanli.util.goods.douyin.vo.DYGoodsDetail;
import org.apache.commons.beanutils.PropertyUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -1321,6 +1324,47 @@
        return commonOrderList;
    }
    @Override
    public List<CommonOrderAddResultDTO> addDYOrder(DYOrder order, Long uid) throws CommonOrderException {
        List<CommonOrderAddResultDTO> commonOrderList = new ArrayList<>();
            CommonOrder newCommonOrder = CommonOrderFactory.create(order);
            CommonOrderGoods cog = new CommonOrderGoods();
            cog.setGoodsId(order.getProduct_id());
            cog.setGoodsType(Constant.SOURCE_TYPE_DY);
            newCommonOrder.setCommonOrderGoods(cog);
            newCommonOrder.setStateWholeOrder(newCommonOrder.getState());
            // 订单商品插入
            List<CommonOrderGoods> commonGoodsList = commonOrderGoodsMapper.listByGoodsIdAndGoodsType(cog.getGoodsId(),
                    cog.getGoodsType());
            if (commonGoodsList.size() <= 0)// 不存在就插入商品
            {
                DYGoodsDetail goods = CSJCPSApiUtil.goodsDetail(Long.parseLong(order.getProduct_id()));
                if (goods == null) {
                    goods = new DYGoodsDetail();
                    goods.setTitle(order.getProduct_name());
                    goods.setPrice(0);
                    goods.setProduct_id(Long.parseLong(order.getProduct_id()));
                    goods.setCover(order.getProduct_img());
                }
                if (goods != null) {
                    cog = CommonOrderGoodsFactory.create(goods);
                }
                cog.setCreateTime(new Date());
                cog.setUpdateTime(new Date());
                commonOrderGoodsMapper.insertSelective(cog);
            } else {
            }
            newCommonOrder.setUserInfo(new UserInfo(uid));
            commonOrderList.add(addCommonOrder(newCommonOrder));
        addConfirmMQMsg(commonOrderList);
        return commonOrderList;
    }
    private boolean needUpdateCommonOrder(CommonOrder oldCommonOrder, CommonOrder newCommonOrder) {
        // 非京东已经结算,已经失效,状态未改变的订单不处理
        if ((oldCommonOrder.getState() == CommonOrder.STATE_JS
fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderMoneySettleServiceImpl.java
@@ -164,6 +164,13 @@
        inviteSettle(uid, sourceType, maxPregetTime);
    }
    @Override
    public void inviteSettleDY(Long uid, Date maxPregetTime) throws OrderMoneySettleException {
        // 查询UID的一二级邀请赚
        int sourceType = Constant.SOURCE_TYPE_DY;
        inviteSettle(uid, sourceType, maxPregetTime);
    }
    @Transactional(rollbackFor = Exception.class)
    @Override
@@ -347,6 +354,11 @@
        shareSettle(Constant.SOURCE_TYPE_SUNING, uid, maxPregetTime);
    }
    @Override
    public void shareSettleDY(Long uid, Date maxPregetTime) throws OrderMoneySettleException {
        shareSettle(Constant.SOURCE_TYPE_DY, uid, maxPregetTime);
    }
    private void shareSettle(int sourceType, Long uid, Date maxPregetTime) throws OrderMoneySettleException {
        /**
         * 处理分享赚
fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java
@@ -1,6 +1,7 @@
package com.yeshi.fanli.service.impl.order;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
@@ -15,8 +16,10 @@
import com.yeshi.fanli.entity.SystemEnum;
import com.yeshi.fanli.entity.SystemPIDInfo;
import com.yeshi.fanli.entity.dy.DYOrder;
import com.yeshi.fanli.service.manger.PIDManager;
import com.yeshi.fanli.service.manger.order.TeamRewardManager;
import com.yeshi.fanli.util.goods.douyin.DYUtil;
import com.yeshi.fanli.util.pinduoduo.PinDuoDuoUtil;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
@@ -752,6 +755,12 @@
        } catch (OrderMoneySettleException e) {
            e.printStackTrace();
        }
        try {
            orderMoneySettleService.inviteSettleDY(uid, maxPreGetTime);
        } catch (OrderMoneySettleException e) {
            e.printStackTrace();
        }
    }
    @Override
@@ -784,6 +793,12 @@
        try {
            orderMoneySettleService.shareSettleSuning(uid, maxPreGetTime);
        } catch (OrderMoneySettleException e) {
            e.printStackTrace();
        }
        try {
            orderMoneySettleService.shareSettleDY(uid, maxPreGetTime);
        } catch (OrderMoneySettleException e) {
            e.printStackTrace();
        }
@@ -976,10 +991,13 @@
    public void processJDOrder(JDOrder order) {
        if (order == null || order.getOrderItemList() == null || order.getOrderItemList().size() == 0)
            return;
        // 拆单的不做处理
        if (order.getValidCode() == 2)
            return;
        // 拆单且不在commonorder中的不做处理
        if (order.getValidCode() == 2) {
            List<CommonOrder> list=  commonOrderService.listBySourceTypeAndOrderId(Constant.SOURCE_TYPE_JD,order.getOrderId()+"");
            if(list==null||list.size()==0) {
                return;
            }
        }
        // 根据ext1与subUnionId跟单
        String uidStr = order.getExt1();
        if (StringUtil.isNullOrEmpty(uidStr))
@@ -1301,7 +1319,7 @@
    }
    /**
     * 处理京东返利订单
     * 处理唯品会返利订单
     *
     * @param vipShopOrder
     * @param uid
@@ -1437,8 +1455,10 @@
        }
    }
    /**
     * 处理拼多多自购返利订单
     * 处理苏宁自购返利订单
     *
     * @param suningOrder
     * @param uid
@@ -1514,7 +1534,7 @@
    }
    /**
     * 处理拼多多分享订单
     * 处理苏宁分享订单
     *
     * @param suningOrder
     * @param uid
@@ -1546,6 +1566,130 @@
        }
    }
    @Override
    public void processDYOrder(DYOrder order) {
        if (order == null)
            return;
        // 根据ext1与subUnionId跟单
        String extra_info = order.getExternal_info();
        Long uid = DYUtil.getUid(extra_info);
        String type = DYUtil.getTypeFromExtraInfo(extra_info);
        if ("buy".equalsIgnoreCase(type))// 返利订单
        {
            processFanLiDYOrder(order, uid);
            lostOrderService.processSuceess(order.getOrder_id() + "", Constant.SOURCE_TYPE_DY);
        } else if ("share".equalsIgnoreCase(type)) {// 分享订单
            if (uid == null)// 分享订单不允许找回
                return;
            processShareDYOrder(order, uid);
        } else {// 处理是否有订单找回的状态
            processFanLiDYOrder(order, null);
        }
    }
    /**
     * 处理抖音返利订单
     *
     * @param dyOrder
     * @param uid
     */
    private void processFanLiDYOrder(DYOrder dyOrder, Long uid) {
        BigDecimal totalMoney = new BigDecimal(dyOrder.getTotal_pay_amount()).divide(new BigDecimal(100),2, RoundingMode.FLOOR);
        // 加入订单
        Order oldOrder = orderMapper.selectOrderByOrderIdAndOrderType(dyOrder.getOrder_id() + "",
                Constant.SOURCE_TYPE_DY);
        if (uid == null && oldOrder != null && oldOrder.getBeizhu() != null && oldOrder.getBeizhu().contains("补单"))
            uid = oldOrder.getUserInfo().getId();
        if (uid == null)
            return;
        if (oldOrder == null)// 新增
        {
            Order order = new Order();
            order.setBeizhu("抖音返利订单");
            order.setCreatetime(System.currentTimeMillis());
            order.setOrderId(dyOrder.getOrder_id() + "");
            order.setOrderType(Constant.SOURCE_TYPE_DY);
            order.setState(
                    (dyOrder.getFlow_point().equalsIgnoreCase(DYOrder.FLOW_POINT_REFUND)) ? Order.STATE_SHIXIAO : Order.STATE_YIZHIFU);
            order.setUserInfo(new UserInfo(uid));
            order.setVersion(2);
            order.setThirdCreateTime(new Date(TimeUtil.convertToTimeTemp(dyOrder.getPay_success_time(),"yyyy-MM-dd HH:mm:ss")));
            order.setMoney(totalMoney);
            // 加入到订单表
            orderMapper.insertSelective(order);
        } else {
            Order updateOrder = new Order();
            updateOrder.setId(oldOrder.getId());
            updateOrder.setMoney(totalMoney);
            orderMapper.updateByPrimaryKeySelective(updateOrder);
        }
        try {
            List<CommonOrderAddResultDTO> commonOrderList = commonOrderService.addDYOrder(dyOrder, uid);
            addHongBaoWithMQ(commonOrderList, dyOrder.getOrder_id() + "", uid, Constant.SOURCE_TYPE_DY,
                    HongBaoV2.TYPE_ZIGOU);
            if (isCommonOrderAllAdd(commonOrderList)) {
                Order order = new Order();
                order.setOrderId(dyOrder.getOrder_id());
                order.setOrderType(Constant.SOURCE_TYPE_DY);
                order.setUserInfo(new UserInfo(uid));
                try {
                    if (Constant.ENABLE_MQ)
                        PlaceOrderCMQManager.getInstance().addPlaceOrderMsg(order);
                } catch (Exception e) {
                }
            }
        } catch (CommonOrderException e) {
            try {
                LogHelper.errorDetailInfo(e, "addDYOrder或addHongBao出错", "订单号:" + dyOrder.getOrder_id());
            } catch (Exception e1) {
                e1.printStackTrace();
            }
        }
    }
    /**
     * 处理抖音分享订单
     *
     * @param dyOrder
     * @param uid
     */
    private void processShareDYOrder(DYOrder dyOrder, Long uid) {
        try {
            List<CommonOrderAddResultDTO> commonOrderList = commonOrderService.addDYOrder(dyOrder, uid);
            addHongBaoWithMQ(commonOrderList, dyOrder.getOrder_id() + "", uid, Constant.SOURCE_TYPE_DY,
                    HongBaoV2.TYPE_SHARE_GOODS);
            if (isCommonOrderAllAdd(commonOrderList)) {
                Order order = new Order();
                order.setOrderId(dyOrder.getOrder_id());
                order.setOrderType(Constant.SOURCE_TYPE_DY);
                order.setUserInfo(new UserInfo(uid));
                try {
                    if (Constant.ENABLE_MQ)
                        PlaceOrderCMQManager.getInstance().addPlaceOrderMsg(order);
                } catch (Exception e) {
                }
            }
        } catch (CommonOrderException e) {
            try {
                LogHelper.errorDetailInfo(e, "addDYOrder或addHongBao出错", "订单号:" + dyOrder.getOrder_id());
            } catch (Exception e1) {
                e1.printStackTrace();
            }
        }
    }
    @Override
    public void repairCommonOrderByByTaoBaoOrder(String orderId) {
        // 根据订单号查询淘宝订单
fanli/src/main/java/com/yeshi/fanli/service/impl/order/dy/DYOrderServiceImpl.java
New file
@@ -0,0 +1,74 @@
package com.yeshi.fanli.service.impl.order.dy;
import com.yeshi.fanli.dao.dy.DYOrderDao;
import com.yeshi.fanli.entity.dy.DYOrder;
import com.yeshi.fanli.exception.dy.DYOrderException;
import com.yeshi.fanli.service.inter.order.dy.DYOrderService;
import com.yeshi.fanli.util.StringUtil;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
@Service
public class DYOrderServiceImpl implements DYOrderService {
    @Resource
    private DYOrderDao dyOrderDao;
    @Override
    public void addOrder(DYOrder order) throws DYOrderException {
        if (order == null || StringUtil.isNullOrEmpty(order.getOrder_id())) {
            throw new DYOrderException(1, "数据不完整");
        }
        // 查询是否添加过
        List<DYOrder> oldList = dyOrderDao.listByOrderId(order.getOrder_id());
        DYOrder old = null;
        if (oldList != null && oldList.size() > 0) {
            old = oldList.get(0);
        }
        if (old == null) {// 新增
            // 添加信息
            if (order.getCreateTime() == null)
                order.setCreateTime(new Date());
            if (order.getId()==null){
                order.setId(order.toId());
            }
            dyOrderDao.save(order);
        } else {// 更新
            order.setOrder_id(old.getId());
            order.setUpdateTime(new Date());
            dyOrderDao.updateByPrimaryKey(order);
        }
    }
    @Override
    public DYOrder selectByPrimaryKey(String  id) {
        return dyOrderDao.selectByPrimaryKey(id);
    }
    @Override
    public List<DYOrder> listByOrderId(String orderId) {
        List<DYOrder> oldList = dyOrderDao.listByOrderId(orderId);
        return oldList;
    }
    @Override
    public Long countOrderByDay(String preDay) {
        // TODO Auto-generated method stub
        return null;
    }
}
fanli/src/main/java/com/yeshi/fanli/service/inter/dynamic/GoodsEvaluateService.java
@@ -4,6 +4,7 @@
import java.util.List;
import com.yeshi.fanli.entity.SystemEnum;
import com.yeshi.fanli.util.goods.douyin.vo.DYGoodsDetail;
import com.yeshi.goods.facade.dto.taobao.dataoke.DaTaoKeListTopOffDTO;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
@@ -162,6 +163,8 @@
    
    
    public void updateVIPGoods(VIPGoodsInfo goods);
    public void updateDYGoods(DYGoodsDetail goods);
    
    public void updateSuningGoods(SuningGoodsInfo goods);
fanli/src/main/java/com/yeshi/fanli/service/inter/goods/CollectionGoodsV2Service.java
@@ -7,6 +7,7 @@
import com.yeshi.fanli.dto.vip.goods.VIPGoodsInfo;
import com.yeshi.fanli.entity.goods.CollectionGoodsV2;
import com.yeshi.fanli.entity.jd.JDGoods;
import com.yeshi.fanli.util.goods.douyin.vo.DYGoodsDetail;
import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.exception.goods.CollectionGoodsException;
@@ -118,6 +119,21 @@
     */
    public void addVIPCollection(Long uid, VIPGoodsInfo goods) throws CollectionGoodsException;
    /**
     * 抖音收藏
     * @Title: addVIPCollection
     * @Description:
     * @param uid
     * @param goods
     * @throws CollectionGoodsException
     * void 返回类型
     * @throws
     */
    public void addDYCollection(Long uid, DYGoodsDetail goods) throws CollectionGoodsException;
    /**
     * 苏宁收藏
     * @Title: addSuningCollection
fanli/src/main/java/com/yeshi/fanli/service/inter/goods/ScanHistoryV2Service.java
@@ -7,6 +7,7 @@
import com.yeshi.fanli.dto.vip.goods.VIPGoodsInfo;
import com.yeshi.fanli.entity.goods.ScanHistoryV2;
import com.yeshi.fanli.entity.jd.JDGoods;
import com.yeshi.fanli.util.goods.douyin.vo.DYGoodsDetail;
import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.exception.goods.CommonGoodsException;
import com.yeshi.fanli.exception.goods.ScanHistoryException;
@@ -122,6 +123,23 @@
    public void addSuningScanHistory(Long uid, String device, SuningGoodsInfo suningGoods)
            throws CommonGoodsException, ScanHistoryException;
    /**
     * 抖音浏览记录
     * @Title: addSuningScanHistory
     * @Description:
     * @param uid
     * @param device
     * @param dyGoods
     * @throws CommonGoodsException
     * @throws ScanHistoryException
     * void 返回类型
     * @throws
     */
    public void addDYScanHistory(Long uid, String device, DYGoodsDetail dyGoods)
            throws CommonGoodsException, ScanHistoryException;
    /**
     * 根据简版商品ID删除
     * @param uid
fanli/src/main/java/com/yeshi/fanli/service/inter/goods/ShareGoodsTextTemplateService.java
@@ -7,6 +7,7 @@
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.util.goods.douyin.vo.DYGoodsDetail;
import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.exception.goods.ShareGoodsTextTemplateException;
@@ -269,9 +270,17 @@
    public String getTextTemplateBySuNing(Long uid);
    public void resetCommonTemplateDY(Long uid);
    public void resetCouponTemplateDY(Long uid);
    public String getTextTemplateByDY(Long uid);
    public void verifyRightVIP(String template) throws ShareGoodsTextTemplateException;
    public void verifyRightSuNing(String template) throws ShareGoodsTextTemplateException;
    public void verifyRightDY(String template) throws ShareGoodsTextTemplateException;
    /**
     * 苏宁快捷分享
@@ -292,8 +301,20 @@
     */
    public String createCommonShareTextSuNing(String template, SuningGoodsInfo goods, String jumpLink);
    /**
     * 抖音普通分享
     * @param template
     * @param goods
     * @param jumpLink
     * @return
     */
    public String createCommonShareTextDY(String template, DYGoodsDetail goods, String jumpLink);
    public void saveTemplateVIP(Long uid, String template) throws ShareGoodsTextTemplateException;
    public void saveTemplateSuNing(Long uid, String template) throws ShareGoodsTextTemplateException;
    public void saveTemplateDY(Long uid, String template) throws ShareGoodsTextTemplateException;
}
fanli/src/main/java/com/yeshi/fanli/service/inter/order/CommonOrderService.java
@@ -8,6 +8,7 @@
import com.yeshi.fanli.dto.order.CommonOrderAddResultDTO;
import com.yeshi.fanli.entity.SystemEnum;
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.dy.DYOrder;
import com.yeshi.fanli.entity.jd.JDOrder;
import com.yeshi.fanli.entity.order.CommonOrder;
import com.yeshi.fanli.entity.order.ESOrder;
@@ -191,7 +192,7 @@
    /**
     * 添加苏宁订单
     *
     * @param order
     * @param suningOrderList
     * @param uid
     * @return
     * @throws CommonOrderException List<CommonOrderAddResultDTO> 返回类型
@@ -201,6 +202,20 @@
     */
    public List<CommonOrderAddResultDTO> addSuningOrder(List<SuningOrderInfo> suningOrderList, Long uid) throws CommonOrderException;
    /**
     * 添加抖音订单
     *
     * @param order
     * @param uid
     * @return
     * @throws CommonOrderException List<CommonOrderAddResultDTO> 返回类型
     * @throws
     * @Title: addVipShopOrder
     * @Description:
     */
    public List<CommonOrderAddResultDTO> addDYOrder(DYOrder order, Long uid) throws CommonOrderException;
    /**
     * 根据用户ID,订单状态,结算时间统计订单数量
fanli/src/main/java/com/yeshi/fanli/service/inter/order/OrderMoneySettleService.java
@@ -27,6 +27,8 @@
    
    public void inviteSettleVipShop(Long uid, Date maxPregetTime) throws OrderMoneySettleException;
    public void inviteSettleDY(Long uid, Date maxPregetTime) throws OrderMoneySettleException;
    /**
     * 分享赚结算
     * 
@@ -42,6 +44,8 @@
    public void shareSettleSuning(Long uid, Date maxPregetTime) throws OrderMoneySettleException;
    public void shareSettleDY(Long uid, Date maxPregetTime) throws OrderMoneySettleException;
    /**
     * 自购结算
     * 
fanli/src/main/java/com/yeshi/fanli/service/inter/order/OrderProcessService.java
@@ -5,6 +5,7 @@
import java.util.Map;
import com.yeshi.fanli.entity.bus.user.HongBaoV2;
import com.yeshi.fanli.entity.dy.DYOrder;
import com.yeshi.fanli.entity.jd.JDOrder;
import com.yeshi.fanli.entity.order.CommonOrder;
import com.yeshi.fanli.entity.pdd.PDDOrder;
@@ -129,6 +130,14 @@
    /**
     * 处理抖音订单
     *
     * @param dyOrder
     */
    public void processDYOrder(DYOrder dyOrder);
    /**
     * 根据淘宝订单的排序值修复常规订单的排序值
     * 
     * @param orderId
fanli/src/main/java/com/yeshi/fanli/service/inter/order/dy/DYOrderService.java
New file
@@ -0,0 +1,38 @@
package com.yeshi.fanli.service.inter.order.dy;
import com.yeshi.fanli.entity.dy.DYOrder;
import com.yeshi.fanli.exception.dy.DYOrderException;
import java.util.List;
public interface DYOrderService {
    /**
     * 添加订单
     *
     * @param order
     * @throws DYOrderException
     */
    public void addOrder(DYOrder order) throws DYOrderException;
    /**
     * 根据主键ID查询
     *
     * @param id
     * @return
     */
    public DYOrder selectByPrimaryKey(String id);
    /**
     * 根据订单号查询
     *
     * @param orderId
     * @return
     */
    public List<DYOrder> listByOrderId(String orderId);
    public Long countOrderByDay(String preDay);
}
fanli/src/main/java/com/yeshi/fanli/service/manger/ClipboardAnalysisManager.java
@@ -12,6 +12,9 @@
import javax.annotation.Resource;
import com.yeshi.fanli.util.*;
import com.yeshi.fanli.util.goods.douyin.CSJCPSApiUtil;
import com.yeshi.fanli.util.goods.douyin.DYUtil;
import com.yeshi.fanli.util.goods.douyin.vo.DYGoodsDetail;
import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
import com.yeshi.goods.facade.utils.taobao.DaTaoKeApiUtil;
import org.jsoup.Jsoup;
@@ -480,6 +483,11 @@
            if (goods != null) {
                commonGoods = CommonGoodsFactory.create(goods);
            }
        }else if (simpleGoods.getGoodsType() == Constant.SOURCE_TYPE_DY) {
            DYGoodsDetail goods = CSJCPSApiUtil.goodsDetail(Long.parseLong( simpleGoods.getGoodsId()));
            if (goods != null) {
                commonGoods = CommonGoodsFactory.create(goods);
            }
        }
        return commonGoods;
@@ -515,6 +523,10 @@
        if (!StringUtil.isNullOrEmpty(vipId)) {
            return new SimpleCommonGoods(vipId, Constant.SOURCE_TYPE_VIP);
        }
        String dyProductId= DYUtil.parseProdectIdFromLink(link);
        if (!StringUtil.isNullOrEmpty(dyProductId)) {
            return new SimpleCommonGoods(dyProductId, Constant.SOURCE_TYPE_DY);
        }
        // 解析淘宝
        String auctionId = parseTBAuctionIdFromLink(link);
fanli/src/main/java/com/yeshi/fanli/service/manger/JobManager.java
@@ -4,9 +4,11 @@
import com.yeshi.fanli.dto.ad.DouYinDeviceActiveQueueDTO;
import com.yeshi.fanli.dto.money.UserMoneyChangeDTO;
import com.yeshi.fanli.dto.mq.UidDateDTO;
import com.yeshi.fanli.dto.mq.order.body.CommonOrderMQMsg;
import com.yeshi.fanli.dto.push.PushContentDetailDTO;
import com.yeshi.fanli.entity.ad.DouYinClickEvent;
import com.yeshi.fanli.entity.bus.user.*;
import com.yeshi.fanli.entity.dy.DYOrder;
import com.yeshi.fanli.entity.jd.JDOrder;
import com.yeshi.fanli.entity.order.CommonOrder;
import com.yeshi.fanli.entity.order.HongBaoOrder;
@@ -29,6 +31,7 @@
import com.yeshi.fanli.service.inter.order.HongBaoOrderService;
import com.yeshi.fanli.service.inter.order.HongBaoV2Service;
import com.yeshi.fanli.service.inter.order.OrderProcessService;
import com.yeshi.fanli.service.inter.order.dy.DYOrderService;
import com.yeshi.fanli.service.inter.order.jd.JDOrderService;
import com.yeshi.fanli.service.inter.order.pdd.PDDOrderService;
import com.yeshi.fanli.service.inter.order.suning.SuningOrderService;
@@ -43,10 +46,7 @@
import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce;
import com.yeshi.fanli.service.manger.money.TeamEincomeManager;
import com.yeshi.fanli.service.manger.order.TeamDividentsManager;
import com.yeshi.fanli.util.CMQManager;
import com.yeshi.fanli.util.RedisKeyEnum;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.*;
import com.yeshi.fanli.util.ad.DouYinAdUtil;
import com.yeshi.fanli.util.mq.cmq.DouYinDeviceActiveCMQManager;
import com.yeshi.fanli.util.mq.cmq.HongBaoRecieveCMQManager;
@@ -70,7 +70,7 @@
@Component
public class JobManager {
    Logger orderMoneyLog= LoggerFactory.getLogger("orderMoneyLog");
    Logger orderMoneyLog = LoggerFactory.getLogger("orderMoneyLog");
    @Resource
    private BoutiqueAutoRuleService boutiqueAutoRuleService;
@@ -139,6 +139,9 @@
    private SuningOrderService suningOrderService;
    @Resource
    private DYOrderService dyOrderService;
    @Resource
    private HWPushService hwPushService;
    private Map<String, Long> latestRunTimeMap = new HashMap<>();
@@ -176,6 +179,7 @@
        doPDDOrderJob();// 拼多多订单处理
        doVipShopOrderJob();// 唯品会订单处理
        doSuningOrderJob();// 苏宁订单处理
        doAllOrderJob();//所有订单处理
        doImportantTaoBaoGoodsUpdateJob();// 淘宝重要商品的信息更新
        doHongBaoRecieveIntegralGetJob();// 返利到账,金币增加
        // doPlaceOrderIntegralJob();// 下单赠送金币任务
@@ -437,9 +441,9 @@
                            String handler = its.next();
                            try {
                                UidDateDTO dto = map.get(handler);
                                orderMoneyLog.info("团队收益结算开始处理:日期-{} Uid-{}",TimeUtil.getGernalTime(dto.getDate().getTime(),"yyyy-MM-dd"),dto.getUid());
                                orderMoneyLog.info("团队收益结算开始处理:日期-{} Uid-{}", TimeUtil.getGernalTime(dto.getDate().getTime(), "yyyy-MM-dd"), dto.getUid());
                                teamEincomeManager.addTeamRewardTOUserAccount(dto.getDate(), dto.getUid());
                                orderMoneyLog.info("团队收益结算处理成功:日期-{} Uid-{}",TimeUtil.getGernalTime(dto.getDate().getTime(),"yyyy-MM-dd"),dto.getUid());
                                orderMoneyLog.info("团队收益结算处理成功:日期-{} Uid-{}", TimeUtil.getGernalTime(dto.getDate().getTime(), "yyyy-MM-dd"), dto.getUid());
                            } catch (Exception e) {
                                try {
                                    LogHelper.errorDetailInfo(e, map.get(handler).toString(), "");
@@ -785,6 +789,84 @@
    }
    public void doAllOrderJob() {
        String methodName = getMethodName(Thread.currentThread());
        new JobThreadExecutorServiceImpl().run(new MyRunnable(methodName) {
            @Override
            public void run() {
                super.run();
                try {
                    Map<String, CommonOrderMQMsg> map = OrdersCMQManager.getInstance().consumeOrders(16);
                    if (map != null) {
                        Iterator<String> its = map.keySet().iterator();
                        while (its.hasNext()) {
                            String key = its.next();
                            try {
                                CommonOrderMQMsg orderMQMsg = map.get(key);
                                LogHelper.test("订单消费:" + new Gson().toJson(orderMQMsg));
                                if (orderMQMsg != null) {
                                    String orderId = orderMQMsg.getOrderId();
                                    switch (orderMQMsg.getSourceType()) {
                                        case Constant
                                                .SOURCE_TYPE_JD: {
                                            JDOrder order = jdOrderService.selectDetailByOrderId(Long.parseLong(orderId));
                                            orderProcessService.processJDOrder(order);
                                        }
                                        break;
                                        case Constant
                                                .SOURCE_TYPE_PDD: {
                                            List<PDDOrder> orderList = pddOrderService.selectByOrderSn(orderId);
                                            if (orderList != null)
                                                for (PDDOrder order : orderList)
                                                    orderProcessService.processPDDOrder(order);
                                        }
                                        break;
                                        case Constant
                                                .SOURCE_TYPE_VIP: {
                                            List<VipShopOrder> orderList = vipShopOrderService.listDetailByOrderSn(orderId);
                                            if (orderList != null)
                                                for (VipShopOrder order : orderList)
                                                    orderProcessService.processVipShopOrder(order);
                                        }
                                        break;
                                        case Constant
                                                .SOURCE_TYPE_SUNING: {
                                            List<SuningOrderInfo> orderList = suningOrderService.listByOrderCode(orderId);
                                            if (orderList != null)
                                                for (SuningOrderInfo order : orderList)
                                                    orderProcessService.processSuningOrder(order);
                                        }
                                        break;
                                        case Constant
                                                .SOURCE_TYPE_DY: {
                                            List<DYOrder> orderList = dyOrderService.listByOrderId(orderId);
                                            if (orderList != null)
                                                for (DYOrder order : orderList)
                                                    orderProcessService.processDYOrder(order);
                                        }
                                        break;
                                    }
                                }
                                OrdersCMQManager.getInstance().deleteOrder(key);
                            } catch (Exception e) {
                                LogHelper.errorDetailInfo(e);
                            }
                        }
                    }
                } catch (Exception e) {
                    LogHelper.errorDetailInfo(e);
                }
            }
        });
    }
    /**
     * 重要的淘宝商品信息更新
     */
fanli/src/main/java/com/yeshi/fanli/util/Constant.java
@@ -100,6 +100,8 @@
    public static final int SOURCE_TYPE_SUNING = 5;
    // 来源-饿了么
    public static final int SOURCE_TYPE_ELME = 6;
    // 来源-抖音
    public static final int SOURCE_TYPE_DY = 7;
    // 自购-返利
    public static final int TYPE_REBATE = 1;
@@ -191,7 +193,7 @@
    public static ConstantConfig constantConfig;
    public static String PDD_SEARCH_CUSTOMER_PARAMS = "437032";
    public static String PDD_SEARCH_CUSTOMER_PARAMS = "437031";
    /**
     * 淘宝商品红包
fanli/src/main/java/com/yeshi/fanli/util/RedisKeyEnum.java
@@ -61,6 +61,7 @@
    PDDOrder("pdd-order-", "拼多多订单"),
    VIPShopOrder("vipshop-order-", "唯品会订单"),
    SuningOrder("suning-order-", "苏宁订单"),
    DYOrder("dy-order-", "抖音订单"),
    hongBaoFanLi("hongbao-fanli-", "红包返利"),
    deviceSex("device_sex-", "设备性别版本"),
fanli/src/main/java/com/yeshi/fanli/util/factory/CommonGoodsFactory.java
@@ -14,6 +14,9 @@
import com.yeshi.fanli.entity.jd.JDGoods;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.factory.goods.TaoBaoGoodsFactory;
import com.yeshi.fanli.util.goods.douyin.DYUtil;
import com.yeshi.fanli.util.goods.douyin.vo.DYGoods;
import com.yeshi.fanli.util.goods.douyin.vo.DYGoodsDetail;
import com.yeshi.fanli.util.jd.JDUtil;
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
import com.yeshi.goods.facade.dto.taobao.haodanku.HaoDanKuJDGoodsInfo;
@@ -295,6 +298,85 @@
        return cg;
    }
    public static CommonGoods create(DYGoodsDetail goods) {
        if (goods == null)
            return null;
        CommonGoods cg = new CommonGoods();
        // 折扣信息
        cg.setCouponLeftCount(0);
        cg.setCouponTotalCount(0);
        cg.setCouponAmount(new BigDecimal(0));
        cg.setCouponTotalCount(0);
        cg.setGoodsId(goods.getProduct_id()+"");
        cg.setGoodsType(CommonGoods.GOODS_TYPE_DY);
        cg.setPicture(goods.getCover());
        cg.setPictureWhite(null);
        cg.setPrice(MoneyBigDecimalUtil.div(new BigDecimal(goods.getPrice()),new BigDecimal(100),2));
        cg.setSales(goods.getSales());
        cg.setRate(DYUtil.getCosRatio(goods).multiply(new BigDecimal(100)));
        cg.setSellerId((long)goods.getShop_id());
        cg.setSellerName(goods.getShop_name());
        cg.setShopType(CommonGoods.SHOP_TYPE_DY);
        cg.setState(CommonGoods.STATE_NORMAL);
        cg.setTitle(goods.getTitle());
        // 保留字段
        cg.setVideoCover(null);
        cg.setVideoUrl(null);
        cg.setMaterialLibType(1);
        // 分类信息
        CategoryInfoDTO categoryInfo = new CategoryInfoDTO();
        categoryInfo.setCid1((long)goods.getFirst_cid());
        categoryInfo.setCid1Name("");
        cg.setCategoryInfo(JSONObject.toJSON(categoryInfo).toString());
        return cg;
    }
    public static CommonGoods create(DYGoods goods) {
        if (goods == null)
            return null;
        CommonGoods cg = new CommonGoods();
        // 折扣信息
        cg.setCouponLeftCount(0);
        cg.setCouponTotalCount(0);
        cg.setCouponAmount(new BigDecimal(0));
        cg.setCouponTotalCount(0);
        cg.setGoodsId(goods.getProduct_id()+"");
        cg.setGoodsType(CommonGoods.GOODS_TYPE_DY);
        cg.setPicture(goods.getCover());
        cg.setPictureWhite(null);
        cg.setPrice(MoneyBigDecimalUtil.div(new BigDecimal(goods.getPrice()),new BigDecimal(100),2));
        int totalSales = 0;
        cg.setSales(totalSales);
        cg.setRate(DYUtil.getCosRatio(goods));
        cg.setSellerId((long)goods.getShop_id());
        cg.setSellerName(goods.getShop_name());
        cg.setShopType(CommonGoods.SHOP_TYPE_DY);
        cg.setState(CommonGoods.STATE_NORMAL);
        cg.setTitle(goods.getTitle());
        // 保留字段
        cg.setVideoCover(null);
        cg.setVideoUrl(null);
        cg.setMaterialLibType(1);
        // 分类信息
        CategoryInfoDTO categoryInfo = new CategoryInfoDTO();
        categoryInfo.setCid1((long)goods.getFirst_cid());
        categoryInfo.setCid1Name("");
        cg.setCategoryInfo(JSONObject.toJSON(categoryInfo).toString());
        return cg;
    }
    public static CommonGoods create(SuningGoodsInfo goods) {
        if (goods == null)
            return null;
fanli/src/main/java/com/yeshi/fanli/util/factory/CommonOrderGoodsFactory.java
@@ -1,6 +1,7 @@
package com.yeshi.fanli.util.factory;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Date;
import com.yeshi.fanli.dto.pdd.PDDGoodsDetail;
@@ -8,6 +9,8 @@
import com.yeshi.fanli.dto.vip.goods.VIPGoodsInfo;
import com.yeshi.fanli.entity.jd.JDGoods;
import com.yeshi.fanli.entity.order.CommonOrderGoods;
import com.yeshi.fanli.util.goods.douyin.vo.DYGoods;
import com.yeshi.fanli.util.goods.douyin.vo.DYGoodsDetail;
import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.util.Constant;
import org.yeshi.utils.MoneyBigDecimalUtil;
@@ -15,93 +18,109 @@
public class CommonOrderGoodsFactory {
    public static CommonOrderGoods create(TaoBaoGoodsBrief goods) {
        if (goods == null)
            return null;
        CommonOrderGoods orderGoods = new CommonOrderGoods();
        orderGoods.setGoodsId(goods.getAuctionId() + "");
        orderGoods.setGoodsType(Constant.SOURCE_TYPE_TAOBAO);
        orderGoods.setPicture(goods.getPictUrl());
        orderGoods.setPrice(goods.getZkPrice());
        orderGoods.setShopId(goods.getSellerId());
        orderGoods.setShopName(goods.getShopTitle());
        if (goods.getUserType() == 0)
            orderGoods.setShopType(CommonOrderGoods.TYPE_TAOBAO);
        else
            orderGoods.setShopType(CommonOrderGoods.TYPE_TMALL);
        orderGoods.setTitle(goods.getTitle());
        return orderGoods;
    }
    public static CommonOrderGoods create(TaoBaoGoodsBrief goods) {
        if (goods == null)
            return null;
        CommonOrderGoods orderGoods = new CommonOrderGoods();
        orderGoods.setGoodsId(goods.getAuctionId() + "");
        orderGoods.setGoodsType(Constant.SOURCE_TYPE_TAOBAO);
        orderGoods.setPicture(goods.getPictUrl());
        orderGoods.setPrice(goods.getZkPrice());
        orderGoods.setShopId(goods.getSellerId());
        orderGoods.setShopName(goods.getShopTitle());
        if (goods.getUserType() == 0)
            orderGoods.setShopType(CommonOrderGoods.TYPE_TAOBAO);
        else
            orderGoods.setShopType(CommonOrderGoods.TYPE_TMALL);
        orderGoods.setTitle(goods.getTitle());
        return orderGoods;
    }
    public static CommonOrderGoods create(PDDGoodsDetail detail) {
        CommonOrderGoods goods = new CommonOrderGoods();
        goods.setGoodsId(detail.getGoodsId() + "");
        goods.setCreateTime(new Date());
        goods.setGoodsType(Constant.SOURCE_TYPE_PDD);
        goods.setPicture(detail.getGoodsThumbnailUrl());
        goods.setPrice(MoneyBigDecimalUtil.div(new BigDecimal(detail.getMinNormalPrice()), new BigDecimal(100)));
        goods.setShopId(detail.getMallId());
        goods.setShopName(detail.getMallName());
        goods.setShopType(detail.getMerchantType() + "");
        goods.setState(0);
        goods.setTitle(detail.getGoodsName());
        return goods;
    }
    public static CommonOrderGoods create(PDDGoodsDetail detail) {
        CommonOrderGoods goods = new CommonOrderGoods();
        goods.setGoodsId(detail.getGoodsId() + "");
        goods.setCreateTime(new Date());
        goods.setGoodsType(Constant.SOURCE_TYPE_PDD);
        goods.setPicture(detail.getGoodsThumbnailUrl());
        goods.setPrice(MoneyBigDecimalUtil.div(new BigDecimal(detail.getMinNormalPrice()), new BigDecimal(100)));
        goods.setShopId(detail.getMallId());
        goods.setShopName(detail.getMallName());
        goods.setShopType(detail.getMerchantType() + "");
        goods.setState(0);
        goods.setTitle(detail.getGoodsName());
        return goods;
    }
    public static CommonOrderGoods create(JDGoods jdGoods) {
        CommonOrderGoods goods = new CommonOrderGoods();
        goods.setGoodsId(jdGoods.getSkuId() + "");
        goods.setCreateTime(new Date());
        goods.setGoodsType(Constant.SOURCE_TYPE_JD);
        if (jdGoods.getImageList() != null && jdGoods.getImageList().size() > 0)
            goods.setPicture(jdGoods.getImageList().get(0));
        goods.setPrice(jdGoods.getPrice());
        if (jdGoods.getShopInfo() != null) {
            goods.setShopId((long) jdGoods.getShopInfo().getShopId());
            goods.setShopName(jdGoods.getShopInfo().getShopName());
        }
        goods.setShopType(jdGoods.getOwner());
        goods.setState(0);
        goods.setTitle(jdGoods.getSkuName());
        return goods;
    }
    public static CommonOrderGoods create(JDGoods jdGoods) {
        CommonOrderGoods goods = new CommonOrderGoods();
        goods.setGoodsId(jdGoods.getSkuId() + "");
        goods.setCreateTime(new Date());
        goods.setGoodsType(Constant.SOURCE_TYPE_JD);
        if (jdGoods.getImageList() != null && jdGoods.getImageList().size() > 0)
            goods.setPicture(jdGoods.getImageList().get(0));
        goods.setPrice(jdGoods.getPrice());
        if (jdGoods.getShopInfo() != null) {
            goods.setShopId((long) jdGoods.getShopInfo().getShopId());
            goods.setShopName(jdGoods.getShopInfo().getShopName());
        }
        goods.setShopType(jdGoods.getOwner());
        goods.setState(0);
        goods.setTitle(jdGoods.getSkuName());
        return goods;
    }
    public static CommonOrderGoods create(VIPGoodsInfo vipGoods) {
        CommonOrderGoods goods = new CommonOrderGoods();
        goods.setGoodsId(vipGoods.getGoodsId() + "");
        goods.setCreateTime(new Date());
        goods.setGoodsType(Constant.SOURCE_TYPE_VIP);
        goods.setPicture(vipGoods.getGoodsMainPicture());
        goods.setPrice(new BigDecimal(vipGoods.getVipPrice()));
        if (vipGoods.getBrandId() != null) {
            goods.setShopId(vipGoods.getBrandId());
            goods.setShopName(vipGoods.getBrandName());
        }
        goods.setShopType("唯品会");
        goods.setState(0);
        goods.setTitle(vipGoods.getGoodsName());
        return goods;
    }
    public static CommonOrderGoods create(VIPGoodsInfo vipGoods) {
        CommonOrderGoods goods = new CommonOrderGoods();
        goods.setGoodsId(vipGoods.getGoodsId() + "");
        goods.setCreateTime(new Date());
        goods.setGoodsType(Constant.SOURCE_TYPE_VIP);
        goods.setPicture(vipGoods.getGoodsMainPicture());
        goods.setPrice(new BigDecimal(vipGoods.getVipPrice()));
        if (vipGoods.getBrandId() != null) {
            goods.setShopId(vipGoods.getBrandId());
            goods.setShopName(vipGoods.getBrandName());
        }
        goods.setShopType("唯品会");
        goods.setState(0);
        goods.setTitle(vipGoods.getGoodsName());
        return goods;
    }
    public static CommonOrderGoods create(SuningGoodsInfo suningGoods) {
        CommonOrderGoods goods = new CommonOrderGoods();
        goods.setGoodsId(suningGoods.getCommodityInfo().getCommodityCode());
        goods.setCreateTime(new Date());
        goods.setGoodsType(Constant.SOURCE_TYPE_SUNING);
        if (suningGoods.getCommodityInfo().getPictureUrl().size() > 0)
            goods.setPicture(suningGoods.getCommodityInfo().getPictureUrl().get(0).getPicUrl());
        String commodityPrice = suningGoods.getCommodityInfo().getCommodityPrice();
        if (StringUtil.isNullOrEmpty(commodityPrice)) {
            commodityPrice = suningGoods.getCommodityInfo().getSnPrice();
        }
        goods.setPrice(new BigDecimal(commodityPrice));
        goods.setShopId(Long.parseLong(suningGoods.getCommodityInfo().getSupplierCode()));
        goods.setShopName(suningGoods.getCommodityInfo().getSupplierName());
        goods.setShopType("苏宁");
        goods.setState(0);
        goods.setTitle(suningGoods.getCommodityInfo().getCommodityName());
        return goods;
    }
    public static CommonOrderGoods create(SuningGoodsInfo suningGoods) {
        CommonOrderGoods goods = new CommonOrderGoods();
        goods.setGoodsId(suningGoods.getCommodityInfo().getCommodityCode());
        goods.setCreateTime(new Date());
        goods.setGoodsType(Constant.SOURCE_TYPE_SUNING);
        if (suningGoods.getCommodityInfo().getPictureUrl().size() > 0)
            goods.setPicture(suningGoods.getCommodityInfo().getPictureUrl().get(0).getPicUrl());
        String commodityPrice = suningGoods.getCommodityInfo().getCommodityPrice();
        if (StringUtil.isNullOrEmpty(commodityPrice)) {
            commodityPrice = suningGoods.getCommodityInfo().getSnPrice();
        }
        goods.setPrice(new BigDecimal(commodityPrice));
        goods.setShopId(Long.parseLong(suningGoods.getCommodityInfo().getSupplierCode()));
        goods.setShopName(suningGoods.getCommodityInfo().getSupplierName());
        goods.setShopType("苏宁");
        goods.setState(0);
        goods.setTitle(suningGoods.getCommodityInfo().getCommodityName());
        return goods;
    }
    public static CommonOrderGoods create(DYGoodsDetail dyGoods) {
        CommonOrderGoods goods = new CommonOrderGoods();
        goods.setGoodsId(dyGoods.getProduct_id() + "");
        goods.setCreateTime(new Date());
        goods.setGoodsType(Constant.SOURCE_TYPE_DY);
        goods.setPicture(dyGoods.getCover());
        goods.setPrice(new BigDecimal(dyGoods.getPrice()).divide(new BigDecimal(100), 2, RoundingMode.FLOOR));
        goods.setShopId((long) dyGoods.getShop_id());
        goods.setShopName(dyGoods.getShop_name());
        goods.setShopType("抖音");
        goods.setState(0);
        goods.setTitle(dyGoods.getTitle());
        return goods;
    }
}
fanli/src/main/java/com/yeshi/fanli/util/factory/goods/CommonOrderFactory.java
@@ -1,8 +1,10 @@
package com.yeshi.fanli.util.factory.goods;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Date;
import com.yeshi.fanli.entity.dy.DYOrder;
import com.yeshi.fanli.entity.jd.JDOrderItem;
import com.yeshi.fanli.entity.order.CommonOrder;
import com.yeshi.fanli.entity.pdd.PDDOrder;
@@ -17,237 +19,280 @@
public class CommonOrderFactory {
    public static CommonOrder create(PDDOrder order) {
        CommonOrder commonOrder = new CommonOrder();
        commonOrder.setCount(order.getGoodsQuantity());
        commonOrder.setCreateTime(new Date());
        if (order.getOrderStatus() == 3) {// 审核通过
            commonOrder.seteIncome(
                    MoneyBigDecimalUtil.div(new BigDecimal(order.getPromotionAmount()), new BigDecimal(100)));
            commonOrder.setSettlement(
                    MoneyBigDecimalUtil.div(new BigDecimal(order.getOrderAmount()), new BigDecimal(100)));// 结算金额
            commonOrder.setSettleTime(new Date(order.getOrderVerifyTime() * 1000));
        } else if (order.getOrderStatus() == 2) {// 确认收货归为审核通过
            commonOrder.seteIncome(
                    MoneyBigDecimalUtil.div(new BigDecimal(order.getPromotionAmount()), new BigDecimal(100)));
            commonOrder.setSettlement(
                    MoneyBigDecimalUtil.div(new BigDecimal(order.getOrderAmount()), new BigDecimal(100)));// 结算金额
            commonOrder.setSettleTime(new Date(order.getOrderReceiveTime() * 1000));
        } else {
            commonOrder.seteIncome(new BigDecimal(0));
            commonOrder.setSettlement(new BigDecimal(0));
        }
    public static CommonOrder create(PDDOrder order) {
        CommonOrder commonOrder = new CommonOrder();
        commonOrder.setCount(order.getGoodsQuantity());
        commonOrder.setCreateTime(new Date());
        if (order.getOrderStatus() == 3) {// 审核通过
            commonOrder.seteIncome(
                    MoneyBigDecimalUtil.div(new BigDecimal(order.getPromotionAmount()), new BigDecimal(100)));
            commonOrder.setSettlement(
                    MoneyBigDecimalUtil.div(new BigDecimal(order.getOrderAmount()), new BigDecimal(100)));// 结算金额
            commonOrder.setSettleTime(new Date(order.getOrderVerifyTime() * 1000));
        } else if (order.getOrderStatus() == 2) {// 确认收货归为审核通过
            commonOrder.seteIncome(
                    MoneyBigDecimalUtil.div(new BigDecimal(order.getPromotionAmount()), new BigDecimal(100)));
            commonOrder.setSettlement(
                    MoneyBigDecimalUtil.div(new BigDecimal(order.getOrderAmount()), new BigDecimal(100)));// 结算金额
            commonOrder.setSettleTime(new Date(order.getOrderReceiveTime() * 1000));
        } else {
            commonOrder.seteIncome(new BigDecimal(0));
            commonOrder.setSettlement(new BigDecimal(0));
        }
        commonOrder
                .setEstimate(MoneyBigDecimalUtil.div(new BigDecimal(order.getPromotionAmount()), new BigDecimal(100)));
        commonOrder.setOrderNo(order.getOrderSn());
        commonOrder.setPayment(MoneyBigDecimalUtil.div(new BigDecimal(order.getOrderAmount()), new BigDecimal(100)));
        commonOrder.setSourcePosition(order.getpId());
        commonOrder.setSourceType(Constant.SOURCE_TYPE_PDD);
        int state = 0;
        commonOrder
                .setEstimate(MoneyBigDecimalUtil.div(new BigDecimal(order.getPromotionAmount()), new BigDecimal(100)));
        commonOrder.setOrderNo(order.getOrderSn());
        commonOrder.setPayment(MoneyBigDecimalUtil.div(new BigDecimal(order.getOrderAmount()), new BigDecimal(100)));
        commonOrder.setSourcePosition(order.getpId());
        commonOrder.setSourceType(Constant.SOURCE_TYPE_PDD);
        int state = 0;
        if (-1 == order.getOrderStatus()) {
            state = CommonOrder.STATE_SX;
        } else if (0 == order.getOrderStatus()) {
            state = CommonOrder.STATE_FK;
        } else if (1 == order.getOrderStatus()) {
            state = CommonOrder.STATE_FK;
        } else if (2 == order.getOrderStatus()) {// 确认收货
            state = CommonOrder.STATE_JS;
        } else if (3 == order.getOrderStatus()) {
            state = CommonOrder.STATE_FK;
        } else if (4 == order.getOrderStatus()) {
            if (order.getOrderReceiveTime() == null || order.getOrderReceiveTime() == 0)
                state = CommonOrder.STATE_SX;
            else
                state = CommonOrder.STATE_WQ;
        } else if (5 == order.getOrderStatus()) {
            state = CommonOrder.STATE_JS;
        } else if (8 == order.getOrderStatus()) {
            state = CommonOrder.STATE_SX;
        }
        commonOrder.setOrderBy(1);
        commonOrder.setState(state);
        commonOrder.setThirdCreateTime(new Date(order.getOrderCreateTime() * 1000));
        commonOrder.setUpdateTime(new Date());
        commonOrder.setTradeId(order.getOrderId());
        commonOrder.setChildSourceType("拼多多");
        return commonOrder;
    }
        if (-1 == order.getOrderStatus()) {
            state = CommonOrder.STATE_SX;
        } else if (0 == order.getOrderStatus()) {
            state = CommonOrder.STATE_FK;
        } else if (1 == order.getOrderStatus()) {
            state = CommonOrder.STATE_FK;
        } else if (2 == order.getOrderStatus()) {// 确认收货
            state = CommonOrder.STATE_JS;
        } else if (3 == order.getOrderStatus()) {
            state = CommonOrder.STATE_FK;
        } else if (4 == order.getOrderStatus()) {
            if (order.getOrderReceiveTime() == null || order.getOrderReceiveTime() == 0)
                state = CommonOrder.STATE_SX;
            else
                state = CommonOrder.STATE_WQ;
        } else if (5 == order.getOrderStatus()) {
            state = CommonOrder.STATE_JS;
        } else if (8 == order.getOrderStatus()) {
            state = CommonOrder.STATE_SX;
        }
        commonOrder.setOrderBy(1);
        commonOrder.setState(state);
        commonOrder.setThirdCreateTime(new Date(order.getOrderCreateTime() * 1000));
        commonOrder.setUpdateTime(new Date());
        commonOrder.setTradeId(order.getOrderId());
        commonOrder.setChildSourceType("拼多多");
        return commonOrder;
    }
    public static CommonOrder create(JDOrderItem order) {
        if (order.getOrder() == null)
            return null;
        CommonOrder commonOrder = new CommonOrder();
        commonOrder.setCount(Integer.parseInt(order.getSkuNum() + ""));
        commonOrder.setCreateTime(new Date());
        if (order.getValidCode() == 17) {
            commonOrder.seteIncome(order.getActualFee());
            commonOrder.setSettlement(order.getActualCosPrice());
            commonOrder.setSettleTime(new Date(order.getOrder().getFinishTime()));
        } else {
            commonOrder.seteIncome(order.getActualFee());
            commonOrder.setSettlement(order.getActualCosPrice());
        }
        commonOrder.setOrderNo(order.getOrderId() + "");
        commonOrder.setPayment(order.getEstimateCosPrice());
        commonOrder.setSourcePosition(order.getPositionId() + "");
        commonOrder.setSourceType(Constant.SOURCE_TYPE_JD);
        int state = 0;
        if (order.getValidCode() < 16) {
            state = CommonOrder.STATE_SX;
            String stateDesc = null;
            if (order.getValidCode() == 4)
                stateDesc = "京东帮主订单";
            else if (order.getValidCode() == 5)
                stateDesc = "账号异常";
            else if (order.getValidCode() == 6)
                stateDesc = "赠品类目";
            else if (order.getValidCode() == 7)
                stateDesc = "校园订单";
            else if (order.getValidCode() == 8)
                stateDesc = "企业订单";
            else if (order.getValidCode() == 9)
                stateDesc = "团购订单";
            else if (order.getValidCode() == 10)
                stateDesc = "专用发票";
            else if (order.getValidCode() == 11)
                stateDesc = "乡村推广员";
            else if (order.getValidCode() == 13)
                stateDesc = "违规订单";
            commonOrder.setStateDesc(stateDesc);
        } else if (order.getValidCode() == 16) {
            state = CommonOrder.STATE_FK;
        } else if (order.getValidCode() == 17) {
            state = CommonOrder.STATE_JS;
        }
        commonOrder.setOrderBy(order.getOrderBy());
        commonOrder.setState(state);
        commonOrder.setThirdCreateTime(new Date(order.getOrder().getOrderTime()));
        commonOrder.setUpdateTime(new Date());
        commonOrder.setTradeId(order.getTradeId());
        commonOrder.setEstimate(order.getEstimateFee());
        commonOrder.setChildSourceType("京东");
        return commonOrder;
    }
    public static CommonOrder create(JDOrderItem order) {
        if (order.getOrder() == null)
            return null;
        CommonOrder commonOrder = new CommonOrder();
        commonOrder.setCount(Integer.parseInt(order.getSkuNum() + ""));
        commonOrder.setCreateTime(new Date());
        if (order.getValidCode() == 17) {
            commonOrder.seteIncome(order.getActualFee());
            commonOrder.setSettlement(order.getActualCosPrice());
            commonOrder.setSettleTime(new Date(order.getOrder().getFinishTime()));
        } else {
            commonOrder.seteIncome(order.getActualFee());
            commonOrder.setSettlement(order.getActualCosPrice());
        }
        commonOrder.setOrderNo(order.getOrderId() + "");
        commonOrder.setPayment(order.getEstimateCosPrice());
        commonOrder.setSourcePosition(order.getPositionId() + "");
        commonOrder.setSourceType(Constant.SOURCE_TYPE_JD);
        int state = 0;
        if (order.getValidCode() < 16) {
            state = CommonOrder.STATE_SX;
            String stateDesc = null;
            if (order.getValidCode() == 4)
                stateDesc = "京东帮主订单";
            else if (order.getValidCode() == 5)
                stateDesc = "账号异常";
            else if (order.getValidCode() == 6)
                stateDesc = "赠品类目";
            else if (order.getValidCode() == 7)
                stateDesc = "校园订单";
            else if (order.getValidCode() == 8)
                stateDesc = "企业订单";
            else if (order.getValidCode() == 9)
                stateDesc = "团购订单";
            else if (order.getValidCode() == 10)
                stateDesc = "专用发票";
            else if (order.getValidCode() == 11)
                stateDesc = "乡村推广员";
            else if (order.getValidCode() == 13)
                stateDesc = "违规订单";
            commonOrder.setStateDesc(stateDesc);
        } else if (order.getValidCode() == 16) {
            state = CommonOrder.STATE_FK;
        } else if (order.getValidCode() == 17) {
            state = CommonOrder.STATE_JS;
        }
        commonOrder.setOrderBy(order.getOrderBy());
        commonOrder.setState(state);
        commonOrder.setThirdCreateTime(new Date(order.getOrder().getOrderTime()));
        commonOrder.setUpdateTime(new Date());
        commonOrder.setTradeId(order.getTradeId());
        commonOrder.setEstimate(order.getEstimateFee());
        commonOrder.setChildSourceType("京东");
        return commonOrder;
    }
    public static CommonOrder create(TaoBaoOrder taoBaoOrder) {
        CommonOrder commonOrder = new CommonOrder();
        commonOrder.setCount(taoBaoOrder.getCount());
        commonOrder.setCreateTime(new Date());
    public static CommonOrder create(TaoBaoOrder taoBaoOrder) {
        CommonOrder commonOrder = new CommonOrder();
        commonOrder.setCount(taoBaoOrder.getCount());
        commonOrder.setCreateTime(new Date());
        // 如果relationId不为空
        // 如果relationId不为空
        if (taoBaoOrder.geteIncome() != null && taoBaoOrder.getSubsidy() != null)
            commonOrder.seteIncome(taoBaoOrder.geteIncome().add(taoBaoOrder.getSubsidy()));
        else
            commonOrder.seteIncome(taoBaoOrder.geteIncome());
        commonOrder.setEstimate(taoBaoOrder.getEstimate());
        if (taoBaoOrder.geteIncome() != null && taoBaoOrder.getSubsidy() != null)
            commonOrder.seteIncome(taoBaoOrder.geteIncome().add(taoBaoOrder.getSubsidy()));
        else
            commonOrder.seteIncome(taoBaoOrder.geteIncome());
        commonOrder.setEstimate(taoBaoOrder.getEstimate());
        commonOrder.setOrderNo(taoBaoOrder.getOrderId());
        commonOrder.setPayment(taoBaoOrder.getPayment());
        commonOrder.setSettlement(taoBaoOrder.getSettlement());
        if (!StringUtil.isNullOrEmpty(taoBaoOrder.getSettlementTime()))
            commonOrder.setSettleTime(
                    new Date(TimeUtil.convertToTimeTemp(taoBaoOrder.getSettlementTime(), "yyyy-MM-dd HH:mm:ss")));
        commonOrder.setSourcePosition(String.format("mm_%s_%s_%s", "124933865", taoBaoOrder.getSourceMediaId(),
                taoBaoOrder.getAdPositionId()));
        commonOrder.setSourceType(Constant.SOURCE_TYPE_TAOBAO);
        int state = 0;
        if ("订单付款".equalsIgnoreCase(taoBaoOrder.getOrderState())) {
            state = CommonOrder.STATE_FK;
        } else if ("订单成功".equalsIgnoreCase(taoBaoOrder.getOrderState())) {
            state = CommonOrder.STATE_FK;
        } else if ("订单失效".equalsIgnoreCase(taoBaoOrder.getOrderState())) {
            state = CommonOrder.STATE_SX;
        } else if ("订单结算".equalsIgnoreCase(taoBaoOrder.getOrderState())) {
            state = CommonOrder.STATE_JS;
        }
        commonOrder.setOrderBy(taoBaoOrder.getOrderBy());
        commonOrder.setState(state);
        commonOrder.setThirdCreateTime(
                new Date(TimeUtil.convertToTimeTemp(taoBaoOrder.getCreateTime(), "yyyy-MM-dd HH:mm:ss")));
        commonOrder.setUpdateTime(new Date());
        commonOrder.setTradeId(taoBaoOrder.getTradeId());
        commonOrder.setChildSourceType(taoBaoOrder.getOrderType());
        commonOrder.setOrderNo(taoBaoOrder.getOrderId());
        commonOrder.setPayment(taoBaoOrder.getPayment());
        commonOrder.setSettlement(taoBaoOrder.getSettlement());
        if (!StringUtil.isNullOrEmpty(taoBaoOrder.getSettlementTime()))
            commonOrder.setSettleTime(
                    new Date(TimeUtil.convertToTimeTemp(taoBaoOrder.getSettlementTime(), "yyyy-MM-dd HH:mm:ss")));
        commonOrder.setSourcePosition(String.format("mm_%s_%s_%s", "124933865", taoBaoOrder.getSourceMediaId(),
                taoBaoOrder.getAdPositionId()));
        commonOrder.setSourceType(Constant.SOURCE_TYPE_TAOBAO);
        int state = 0;
        if ("订单付款".equalsIgnoreCase(taoBaoOrder.getOrderState())) {
            state = CommonOrder.STATE_FK;
        } else if ("订单成功".equalsIgnoreCase(taoBaoOrder.getOrderState())) {
            state = CommonOrder.STATE_FK;
        } else if ("订单失效".equalsIgnoreCase(taoBaoOrder.getOrderState())) {
            state = CommonOrder.STATE_SX;
        } else if ("订单结算".equalsIgnoreCase(taoBaoOrder.getOrderState())) {
            state = CommonOrder.STATE_JS;
        }
        commonOrder.setOrderBy(taoBaoOrder.getOrderBy());
        commonOrder.setState(state);
        commonOrder.setThirdCreateTime(
                new Date(TimeUtil.convertToTimeTemp(taoBaoOrder.getCreateTime(), "yyyy-MM-dd HH:mm:ss")));
        commonOrder.setUpdateTime(new Date());
        commonOrder.setTradeId(taoBaoOrder.getTradeId());
        commonOrder.setChildSourceType(taoBaoOrder.getOrderType());
        if (!StringUtil.isNullOrEmpty(taoBaoOrder.getRelationId())) {
            commonOrder.setEstimate(
                    TaoBaoUtil.getCanShareMoney(commonOrder.getThirdCreateTime(), commonOrder.getEstimate()));
            commonOrder.seteIncome(
                    TaoBaoUtil.getCanShareMoney(commonOrder.getThirdCreateTime(), commonOrder.geteIncome()));
        }
        if (!StringUtil.isNullOrEmpty(taoBaoOrder.getRelationId())) {
            commonOrder.setEstimate(
                    TaoBaoUtil.getCanShareMoney(commonOrder.getThirdCreateTime(), commonOrder.getEstimate()));
            commonOrder.seteIncome(
                    TaoBaoUtil.getCanShareMoney(commonOrder.getThirdCreateTime(), commonOrder.geteIncome()));
        }
        return commonOrder;
    }
        return commonOrder;
    }
    public static CommonOrder create(VipShopOrderDetail order) {
        if (order.getOrder() == null)
            return null;
        CommonOrder commonOrder = new CommonOrder();
        commonOrder.setCount(order.getGoodsCount());
        commonOrder.setCreateTime(new Date());
        if (order.getStatus() == VipShopOrderDetail.STATUS_FINISH) {
            commonOrder.seteIncome(order.getCommission());
            commonOrder.setSettlement(order.getCommissionTotalCost());
            commonOrder.setSettleTime(new Date(order.getOrder().getCommissionEnterTime()));
        }
        commonOrder.setOrderNo(order.getOrderSn() + "");
        commonOrder.setPayment(order.getCommissionTotalCost());
        commonOrder.setSourcePosition(order.getOrder().getChannelTag());
        commonOrder.setSourceType(Constant.SOURCE_TYPE_VIP);
        int state = 0;
        if (order.getStatus() == VipShopOrderDetail.STATUS_FINISH)
            state = CommonOrder.STATE_JS;
        else if (order.getStatus() == VipShopOrderDetail.STATUS_INVALID)
            state = CommonOrder.STATE_SX;
        else if (order.getStatus() == VipShopOrderDetail.STATUS_UNKOWN)
            state = CommonOrder.STATE_FK;
    public static CommonOrder create(VipShopOrderDetail order) {
        if (order.getOrder() == null)
            return null;
        CommonOrder commonOrder = new CommonOrder();
        commonOrder.setCount(order.getGoodsCount());
        commonOrder.setCreateTime(new Date());
        if (order.getStatus() == VipShopOrderDetail.STATUS_FINISH) {
            commonOrder.seteIncome(order.getCommission());
            commonOrder.setSettlement(order.getCommissionTotalCost());
            commonOrder.setSettleTime(new Date(order.getOrder().getCommissionEnterTime()));
        }
        commonOrder.setOrderNo(order.getOrderSn() + "");
        commonOrder.setPayment(order.getCommissionTotalCost());
        commonOrder.setSourcePosition(order.getOrder().getChannelTag());
        commonOrder.setSourceType(Constant.SOURCE_TYPE_VIP);
        int state = 0;
        if (order.getStatus() == VipShopOrderDetail.STATUS_FINISH)
            state = CommonOrder.STATE_JS;
        else if (order.getStatus() == VipShopOrderDetail.STATUS_INVALID)
            state = CommonOrder.STATE_SX;
        else if (order.getStatus() == VipShopOrderDetail.STATUS_UNKOWN)
            state = CommonOrder.STATE_FK;
        commonOrder.setOrderBy(1);
        commonOrder.setState(state);
        commonOrder.setThirdCreateTime(new Date(order.getOrder().getOrderTime()));
        commonOrder.setUpdateTime(new Date());
        commonOrder.setTradeId(order.getIdentifyCode());
        commonOrder.setEstimate(order.getCommission());
        commonOrder.setChildSourceType("唯品会");
        return commonOrder;
    }
        commonOrder.setOrderBy(1);
        commonOrder.setState(state);
        commonOrder.setThirdCreateTime(new Date(order.getOrder().getOrderTime()));
        commonOrder.setUpdateTime(new Date());
        commonOrder.setTradeId(order.getIdentifyCode());
        commonOrder.setEstimate(order.getCommission());
        commonOrder.setChildSourceType("唯品会");
        return commonOrder;
    }
    public static CommonOrder create(SuningOrderInfo order) {
        CommonOrder commonOrder = new CommonOrder();
        commonOrder.setCount(Integer.parseInt(order.getSaleNum()));
        commonOrder.setCreateTime(new Date());
        if ("确认收货".equalsIgnoreCase(order.getOrderLineStatusDesc())) {
            commonOrder.seteIncome(new BigDecimal(order.getPrePayCommission()));
            commonOrder.setSettlement(new BigDecimal(order.getPayAmount()));
            commonOrder.setSettleTime(
                    new Date(TimeUtil.convertToTimeTemp(order.getOrderLineStatusChangeTime(), "yyyy-MM-dd HH:mm:ss")));
        }
        commonOrder.setOrderNo(order.getOrderCode() + "");
        commonOrder.setPayment(new BigDecimal(order.getPayAmount()));
        commonOrder.setSourcePosition(order.getPositionId());
        commonOrder.setSourceType(Constant.SOURCE_TYPE_SUNING);
        int state = 0;
        if ("等待付款".equalsIgnoreCase(order.getOrderLineStatusDesc()))
            state = CommonOrder.STATE_FK;
        else if ("支付完成".equalsIgnoreCase(order.getOrderLineStatusDesc()))
            state = CommonOrder.STATE_FK;
        else if ("退款".equalsIgnoreCase(order.getOrderLineStatusDesc()))
            state = CommonOrder.STATE_SX;
        else if ("订单已取消".equalsIgnoreCase(order.getOrderLineStatusDesc()))
            state = CommonOrder.STATE_SX;
        else if ("确认收货".equalsIgnoreCase(order.getOrderLineStatusDesc()))
            state = CommonOrder.STATE_JS;
    public static CommonOrder create(SuningOrderInfo order) {
        CommonOrder commonOrder = new CommonOrder();
        commonOrder.setCount(Integer.parseInt(order.getSaleNum()));
        commonOrder.setCreateTime(new Date());
        if ("确认收货".equalsIgnoreCase(order.getOrderLineStatusDesc())) {
            commonOrder.seteIncome(new BigDecimal(order.getPrePayCommission()));
            commonOrder.setSettlement(new BigDecimal(order.getPayAmount()));
            commonOrder.setSettleTime(
                    new Date(TimeUtil.convertToTimeTemp(order.getOrderLineStatusChangeTime(), "yyyy-MM-dd HH:mm:ss")));
        }
        commonOrder.setOrderNo(order.getOrderCode() + "");
        commonOrder.setPayment(new BigDecimal(order.getPayAmount()));
        commonOrder.setSourcePosition(order.getPositionId());
        commonOrder.setSourceType(Constant.SOURCE_TYPE_SUNING);
        int state = 0;
        if ("等待付款".equalsIgnoreCase(order.getOrderLineStatusDesc()))
            state = CommonOrder.STATE_FK;
        else if ("支付完成".equalsIgnoreCase(order.getOrderLineStatusDesc()))
            state = CommonOrder.STATE_FK;
        else if ("退款".equalsIgnoreCase(order.getOrderLineStatusDesc()))
            state = CommonOrder.STATE_SX;
        else if ("订单已取消".equalsIgnoreCase(order.getOrderLineStatusDesc()))
            state = CommonOrder.STATE_SX;
        else if ("确认收货".equalsIgnoreCase(order.getOrderLineStatusDesc()))
            state = CommonOrder.STATE_JS;
        commonOrder.setOrderBy(1);
        commonOrder.setState(state);
        commonOrder.setThirdCreateTime(
                new Date(TimeUtil.convertToTimeTemp(order.getOrderSubmitTime(), "yyyy-MM-dd HH:mm:ss")));
        commonOrder.setUpdateTime(new Date());
        commonOrder.setTradeId(order.getOrderLineNumber());
        commonOrder.setEstimate(new BigDecimal(order.getPrePayCommission()));
        commonOrder.setChildSourceType("苏宁");
        return commonOrder;
    }
        commonOrder.setOrderBy(1);
        commonOrder.setState(state);
        commonOrder.setThirdCreateTime(
                new Date(TimeUtil.convertToTimeTemp(order.getOrderSubmitTime(), "yyyy-MM-dd HH:mm:ss")));
        commonOrder.setUpdateTime(new Date());
        commonOrder.setTradeId(order.getOrderLineNumber());
        commonOrder.setEstimate(new BigDecimal(order.getPrePayCommission()));
        commonOrder.setChildSourceType("苏宁");
        return commonOrder;
    }
    public static CommonOrder create(DYOrder order) {
        CommonOrder commonOrder = new CommonOrder();
        commonOrder.setCount(1);
        commonOrder.setCreateTime(new Date());
        if (order.getFlow_point().equalsIgnoreCase(DYOrder.FLOW_POINT_SETTLE)) {
            commonOrder.seteIncome(new BigDecimal(order.getEstimated_commission()).divide(new BigDecimal(100), 2, RoundingMode.DOWN));
            commonOrder.setSettlement(new BigDecimal(order.getPay_goods_amount()).divide(new BigDecimal(100), 2, RoundingMode.FLOOR));
            commonOrder.setSettleTime(
                    new Date(TimeUtil.convertToTimeTemp(order.getSettle_time(), "yyyy-MM-dd HH:mm:ss")));
        }
        commonOrder.setOrderNo(order.getOrder_id());
        commonOrder.setPayment(new BigDecimal(order.getTotal_pay_amount()).divide(new BigDecimal(100), 2, RoundingMode.FLOOR));
        commonOrder.setSourcePosition(order.getApp_id());
        commonOrder.setSourceType(Constant.SOURCE_TYPE_DY);
        int state = 0;
        //正常状态
        if (order.getFlow_point().equalsIgnoreCase(DYOrder.FLOW_POINT_SETTLE)) {
            // 结算
            state = CommonOrder.STATE_JS;
        } else if (order.getFlow_point().equalsIgnoreCase(DYOrder.FLOW_POINT_CONFIRM)) {
            // 确认收货
            state = CommonOrder.STATE_FK;
        } else if (order.getFlow_point().equalsIgnoreCase(DYOrder.FLOW_POINT_PAY_SUCCESS)) {
            //支付成功
            state = CommonOrder.STATE_FK;
        } else if (order.getFlow_point().equalsIgnoreCase(DYOrder.FLOW_POINT_REFUND)) {
            //退款
            state = CommonOrder.STATE_SX;
        }
        commonOrder.setOrderBy(1);
        commonOrder.setState(state);
        commonOrder.setThirdCreateTime(
                new Date(TimeUtil.convertToTimeTemp(order.getPay_success_time(), "yyyy-MM-dd HH:mm:ss")));
        commonOrder.setUpdateTime(new Date());
        commonOrder.setTradeId(order.getOrder_id());
        commonOrder.setEstimate(new BigDecimal(order.getEstimated_commission()).divide(new BigDecimal(100), 2, RoundingMode.DOWN));
        commonOrder.setChildSourceType("抖音");
        return commonOrder;
    }
}
fanli/src/main/java/com/yeshi/fanli/util/factory/goods/GoodsDetailVOFactory.java
@@ -9,6 +9,9 @@
import java.util.List;
import java.util.Set;
import com.yeshi.fanli.util.goods.douyin.DYUtil;
import com.yeshi.fanli.util.goods.douyin.vo.DYGoods;
import com.yeshi.fanli.util.goods.douyin.vo.DYGoodsDetail;
import org.yeshi.utils.taobao.TbImgUtil;
import com.yeshi.fanli.dto.GoodsMoneyConfigParamsDTO;
@@ -63,9 +66,9 @@
    public static GoodsDetailVO convertCommonGoods(CommonGoods goods, GoodsMoneyConfigParamsDTO params) {
        GoodsDetailVO goodsInfo = new GoodsDetailVO();
        goodsInfo.setId(goods.getId());
        if(goods.getGoodsType()==Constant.SOURCE_TYPE_TAOBAO&&!StringUtil.isNullOrEmpty(goods.getGoodsSign())) {
            goodsInfo.setGoodsId(goods.getGoodsSign()+ "");
        }else {
        if (goods.getGoodsType() == Constant.SOURCE_TYPE_TAOBAO && !StringUtil.isNullOrEmpty(goods.getGoodsSign())) {
            goodsInfo.setGoodsId(goods.getGoodsSign() + "");
        } else {
            goodsInfo.setGoodsId(goods.getGoodsId() + "");
        }
        goodsInfo.setTitle(goods.getTitle());
@@ -101,7 +104,7 @@
            // 月销量
            goodsInfo.setSalesType(1);
            JDPingouInfo pinGouInfo = null;
            List<ClientTextStyleVO> labels =null;
            List<ClientTextStyleVO> labels = null;
            if (otherDTO != null) {
                Integer isFreeShipping = otherDTO.getIsFreeShipping();
                if (isFreeShipping != null && isFreeShipping == 1) {
@@ -383,7 +386,7 @@
        GoodsDetailVO goodsInfo = new GoodsDetailVO();
        goodsInfo.setBaoyou(true);
        goodsInfo.setGoodsType(Constant.SOURCE_TYPE_TAOBAO);
        goodsInfo.setGoodsId(goods.getAuctionId() );
        goodsInfo.setGoodsId(goods.getAuctionId());
        goodsInfo.setTitle(goods.getTitle());
        goodsInfo.setSalesType(1); // 默认月销量
        goodsInfo.setZkPrice(goods.getZkPrice());
@@ -1102,4 +1105,184 @@
        return goodsInfo;
    }
    public static GoodsDetailVO convertDYGoods(DYGoodsDetail goods, GoodsMoneyConfigParamsDTO params) {
        GoodsDetailVO goodsInfo = new GoodsDetailVO();
        goodsInfo.setBaoyou(true);
        goodsInfo.setGoodsType(Constant.SOURCE_TYPE_DY);
        goodsInfo.setGoodsId(goods.getProduct_id() + "");
        goodsInfo.setTitle(goods.getTitle());
        goodsInfo.setSalesType(4); // 总销量
        goodsInfo.setPriceName("原价");
        goodsInfo.setPicUrl(goods.getCover()); // 缩略图
        BigDecimal zkPrice = MoneyBigDecimalUtil.div(new BigDecimal(goods.getPrice()), new BigDecimal(100), 2);
        if (goods.getCoupon_price() > 0) {
            zkPrice = MoneyBigDecimalUtil.div(new BigDecimal(goods.getCoupon_price()), new BigDecimal(100), 2);
        }
        goodsInfo.setZkPrice(MoneyBigDecimalUtil.getWithNoZera(zkPrice));
        goodsInfo.setShopType(CommonGoods.SHOP_TYPE_DY);
        List<String> imgList = new ArrayList<>();
        for (String img : goods.getImgs()) {
            imgList.add(img);
        }
        goodsInfo.setImgList(imgList);
        goodsInfo.setState(0);
        String salesCountMidea = "";
        Integer count = goods.getSales();
        if (count < 10000) {
            salesCountMidea = count + "";
        } else {
            double sales = count;
            salesCountMidea = String.format("%.1f", sales / 10000);
            salesCountMidea = salesCountMidea + "万";
        }
        goodsInfo.setSalesCount(salesCountMidea);
        // 券信息
        goodsInfo.setHasCoupon(false);
        // 资金信息
        MoneyInfoVO moneyInfoVO = new MoneyInfoVO();
        moneyInfoVO.setMoneyType(1); // 默认显示:返 ¥6.6
        BigDecimal commission = DYUtil.getGoodsFanLiMoney(goods, params.getFanLiRate());
        moneyInfoVO.setFanliMoney("¥" + commission);
        moneyInfoVO.setShareMoney("¥" + commission);
        BigDecimal baseCommisstion = null;
        if (params.getBaseFanliRate() != null)
            baseCommisstion = DYUtil.getGoodsFanLiMoney(goods, params.getBaseFanliRate());
        if (params.getMaxRewardRate() != null)
            moneyInfoVO
                    .setMaxMoney("¥" + commission.add(MoneyBigDecimalUtil.mul(commission, params.getMaxRewardRate())));
        else {
            BigDecimal price = zkPrice;
            BigDecimal rate = MoneyBigDecimalUtil.div(commission.multiply(new BigDecimal(100)), price);
            moneyInfoVO.setRateInfo("返利比 " + rate + "%");
            BigDecimal maxCommission = DYUtil.getGoodsFanLiMoney(goods, params.getVipFanLiRate());
            BigDecimal maxRate = MoneyBigDecimalUtil.div(maxCommission.multiply(new BigDecimal(100)), price);
            moneyInfoVO.setMaxRateInfo("返利比 " + maxRate + "%");
            moneyInfoVO.setMaxMoney("¥" + maxCommission);
            if (baseCommisstion != null) {
                String desc = String.format("佣金¥ %s+平台补贴¥ %s", baseCommisstion.setScale(2).toString(),
                        commission.subtract(baseCommisstion).setScale(2).toString());
                String maxDesc = String.format("佣金¥ %s+平台补贴¥ %s", baseCommisstion.setScale(2).toString(),
                        maxCommission.subtract(baseCommisstion).setScale(2).toString());
                moneyInfoVO.setCompositionInfo(desc);
                moneyInfoVO.setMaxCompositionInfo(maxDesc);
            }
        }
        goodsInfo.setMoneyInfo(moneyInfoVO);
        // 店铺信息
        String mallName = goods.getShop_name();
        if (!StringUtil.isMobile(mallName)) {
            ShopInfoVO shop = new ShopInfoVO();
            shop.setShopName(mallName);
            shop.setUserType(70);
            goodsInfo.setShopInfo(shop);
        }
        return goodsInfo;
    }
    public static GoodsDetailVO convertDYGoods(DYGoods goods, GoodsMoneyConfigParamsDTO params) {
        GoodsDetailVO goodsInfo = new GoodsDetailVO();
        goodsInfo.setBaoyou(true);
        goodsInfo.setGoodsType(Constant.SOURCE_TYPE_DY);
        goodsInfo.setGoodsId(goods.getProduct_id() + "");
        goodsInfo.setTitle(goods.getTitle());
        goodsInfo.setSalesType(4); // 总销量
        goodsInfo.setPriceName("原价");
        goodsInfo.setPicUrl(goods.getCover()); // 缩略图
        BigDecimal zkPrice = MoneyBigDecimalUtil.div(new BigDecimal(goods.getPrice()), new BigDecimal(100), 2);
//        if (goods.getCoupon_price() > 0) {
//            zkPrice = MoneyBigDecimalUtil.div(new BigDecimal(goods.getCoupon_price()), new BigDecimal(100), 2);
//        }
        goodsInfo.setZkPrice(MoneyBigDecimalUtil.getWithNoZera(zkPrice));
        goodsInfo.setShopType(CommonGoods.SHOP_TYPE_DY);
        List<String> imgList = new ArrayList<>();
        goodsInfo.setImgList(imgList);
        goodsInfo.setState(0);
        String salesCountMidea = "";
        Integer count = goods.getSales();
        if (count < 10000) {
            salesCountMidea = count + "";
        } else {
            double sales = count;
            salesCountMidea = String.format("%.1f", sales / 10000);
            salesCountMidea = salesCountMidea + "万";
        }
        goodsInfo.setSalesCount(salesCountMidea);
        // 券信息
        goodsInfo.setHasCoupon(false);
        if (goods.getCoupon_price() > 0) {
            goodsInfo.setCouponPrice(MoneyBigDecimalUtil.div(new BigDecimal(goods.getCoupon_price()), new BigDecimal(100), 2));
        }
        // 资金信息
        MoneyInfoVO moneyInfoVO = new MoneyInfoVO();
        moneyInfoVO.setMoneyType(1); // 默认显示:返 ¥6.6
        BigDecimal commission = DYUtil.getGoodsFanLiMoney(goods, params.getFanLiRate());
        moneyInfoVO.setFanliMoney("¥" + commission);
        moneyInfoVO.setShareMoney("¥" + commission);
        BigDecimal baseCommisstion = null;
        if (params.getBaseFanliRate() != null)
            baseCommisstion = DYUtil.getGoodsFanLiMoney(goods, params.getBaseFanliRate());
        if (params.getMaxRewardRate() != null)
            moneyInfoVO
                    .setMaxMoney("¥" + commission.add(MoneyBigDecimalUtil.mul(commission, params.getMaxRewardRate())));
        else {
            BigDecimal price = zkPrice;
            BigDecimal rate = MoneyBigDecimalUtil.div(commission.multiply(new BigDecimal(100)), price);
            moneyInfoVO.setRateInfo("返利比 " + rate + "%");
            BigDecimal maxCommission = DYUtil.getGoodsFanLiMoney(goods, params.getVipFanLiRate());
            BigDecimal maxRate = MoneyBigDecimalUtil.div(maxCommission.multiply(new BigDecimal(100)), price);
            moneyInfoVO.setMaxRateInfo("返利比 " + maxRate + "%");
            moneyInfoVO.setMaxMoney("¥" + maxCommission);
            if (baseCommisstion != null) {
                String desc = String.format("佣金¥ %s+平台补贴¥ %s", baseCommisstion.setScale(2).toString(),
                        commission.subtract(baseCommisstion).setScale(2).toString());
                String maxDesc = String.format("佣金¥ %s+平台补贴¥ %s", baseCommisstion.setScale(2).toString(),
                        maxCommission.subtract(baseCommisstion).setScale(2).toString());
                moneyInfoVO.setCompositionInfo(desc);
                moneyInfoVO.setMaxCompositionInfo(maxDesc);
            }
        }
        goodsInfo.setMoneyInfo(moneyInfoVO);
        // 店铺信息
        String mallName = goods.getShop_name();
        if (!StringUtil.isMobile(mallName)) {
            ShopInfoVO shop = new ShopInfoVO();
            shop.setShopName(mallName);
            shop.setUserType(70);
            goodsInfo.setShopInfo(shop);
        }
        return goodsInfo;
    }
}
fanli/src/main/java/com/yeshi/fanli/util/goods/GoodsJumpUtil.java
@@ -3,6 +3,7 @@
import com.yeshi.fanli.dto.vip.VIPConvertResultDTO;
import com.yeshi.fanli.entity.taobao.TaoBaoLink;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.goods.douyin.vo.DYConvertResult;
import com.yeshi.fanli.util.pinduoduo.PinDuoDuoUtil;
import com.yeshi.fanli.vo.common.WXXCXJumpInfoVO;
import com.yeshi.fanli.vo.goods.GoodsJumpLinkVO;
@@ -66,8 +67,10 @@
     */
    public static GoodsJumpLinkVO getPDDJumpInfo(PDDConvertLinkResultVO convertUrl) {
        GoodsJumpLinkVO vo = new GoodsJumpLinkVO();
        vo.set_native(true);
        vo.setNativeJumpLink(PinDuoDuoUtil.getAndroidNativeURI(convertUrl.getUrl()));
        vo.set_native(false);
        vo.setNativeJumpLink(convertUrl.getSchema_url());
        // 暂时只能跳转微信
       // vo.setNativeJumpLink("");
        vo.setJumpLink(convertUrl.getUrl());
        if (convertUrl.getWe_app_info() != null) {
            WXXCXJumpInfoVO wxxcxJumpInfoVO = new WXXCXJumpInfoVO();
@@ -142,4 +145,16 @@
    }
    public static GoodsJumpLinkVO getDYJumpInfo(DYConvertResult link) {
        GoodsJumpLinkVO vo = new GoodsJumpLinkVO();
        vo.set_native(true);
        try {
            vo.setNativeJumpLink(link.getDeeplink());
        } catch (Exception e) {
            e.printStackTrace();
        }
        return vo;
    }
}
fanli/src/main/java/com/yeshi/fanli/util/goods/douyin/CSJCPSApiUtil.java
@@ -2,12 +2,14 @@
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.yeshi.fanli.entity.dy.DYOrder;
import com.yeshi.fanli.util.goods.douyin.vo.*;
import net.sf.json.JSONObject;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.methods.PostMethod;
import org.yeshi.utils.JsonUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.yeshi.utils.StringUtil;
import java.io.IOException;
@@ -22,10 +24,11 @@
 * @date 2022/8/8 15:45
 */
public class CSJCPSApiUtil {
    private static Logger debugLog=LoggerFactory.getLogger("debugLog");
    private static String post(String url, String entity) {
        HttpClient client = new HttpClient();
        client.getHostConfiguration().setProxy("192.168.3.122", 8888);
        //client.getHostConfiguration().setProxy("192.168.3.122", 8888);
        PostMethod method = new PostMethod(url);
        method.addRequestHeader("Content-Type", "application/json;charset=UTF-8");
        method.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
@@ -44,6 +47,9 @@
    private static String baseRequest(String path, JSONObject data, CSJAppInfo appInfo) {
        String url = "http://ecom.pangolin-sdk-toutiao.com" + path;
        debugLog.info("抖音请求开始:链接-{}",url);
        com.alibaba.fastjson.JSONObject params = new com.alibaba.fastjson.JSONObject();
        params.put("app_id", appInfo.getAppId());
        params.put("timestamp", System.currentTimeMillis() / 1000);
@@ -190,7 +196,7 @@
        }
        if (filter.getThird_cids() != null) {
            data.put("third_cids", JSONObject.fromObject(filter.getThird_cids()));
            data.put("third_cids", new Gson().toJson(filter.getThird_cids()));
        }
        if (filter.getPrice_min() != null) {
@@ -303,8 +309,18 @@
    }
    public static DYGoodsDetail goodsDetail(Long goodsId) {
        List<DYGoodsDetail> list = goodsDetails(Arrays.asList(new Long[]{goodsId}));
        if (list == null || list.size() == 0) {
            return null;
        } else {
            return list.get(0);
        }
    }
    public static DYOrderResult orderList(DYOrderFilter filter) {
        JSONObject data = JSONObject.fromObject(new Gson().toJson( filter));
        JSONObject data = JSONObject.fromObject(new Gson().toJson(filter));
        String result = baseRequest("/order/search", data);
@@ -314,45 +330,45 @@
            return null;
        }
        JSONObject dataJson = resultJson.optJSONObject("data");
        return new Gson().fromJson(dataJson.toString(),DYOrderResult.class);
        return new Gson().fromJson(dataJson.toString(), DYOrderResult.class);
    }
    public static DYOrder getOrderDetail(String orderId,int orderType){
        DYOrderFilter filter=new DYOrderFilter();
    public static DYOrder getOrderDetail(String orderId, int orderType) {
        DYOrderFilter filter = new DYOrderFilter();
        filter.setOrder_type(orderType);
        filter.setOrder_ids(Arrays.asList(new String[]{orderId}));
        DYOrderResult result= orderList(filter);
        if(result==null){
        DYOrderResult result = orderList(filter);
        if (result == null) {
            return null;
        }
        if(result.getOrders()==null||result.getOrders().size()<=0){
        if (result.getOrders() == null || result.getOrders().size() <= 0) {
            return null;
        }
        return result.getOrders().get(0);
    }
    /**
     * @author hxh
     * @return com.yeshi.fanli.util.goods.douyin.vo.DYAggregateH5Result
     * @author hxh
     * @description 聚合页H5
     * @date 15:48 2022/9/30
     * @param: filter
     * @return com.yeshi.fanli.util.goods.douyin.vo.DYAggregateH5Result
     **/
    public static DYAggregateH5Result aggregateH5(DYAggregateH5Filter filter) {
        JSONObject data = new JSONObject();
        if (filter.getDevice() != null) {
            data.put("device", new Gson().toJson(filter.getDevice()));
        }
        if(filter.getExternal_info()!=null){
        if (filter.getExternal_info() != null) {
            data.put("external_info", filter.getExternal_info());
        }
        if(filter.getMaterial_id()!=null){
        if (filter.getMaterial_id() != null) {
            data.put("material_id", filter.getMaterial_id());
        }
        if(filter.getProduct_url()!=null){
        if (filter.getProduct_url() != null) {
            data.put("product_url", filter.getProduct_url());
        }
@@ -364,13 +380,13 @@
            return null;
        }
        JSONObject dataJson = resultJson.optJSONObject("data");
        return new Gson().fromJson(dataJson.toString(),DYAggregateH5Result.class);
        return new Gson().fromJson(dataJson.toString(), DYAggregateH5Result.class);
    }
    public static void main(String[] args) {
       goodsDetails(Arrays.asList(new Long[]{3549871967593209780L}));
       getOrderDetail("4984002890650177191",1);
        goodsDetails(Arrays.asList(new Long[]{3549871967593209780L}));
        getOrderDetail("4984015762658606759", 1);
    }
fanli/src/main/java/com/yeshi/fanli/util/goods/douyin/DYUtil.java
New file
@@ -0,0 +1,175 @@
package com.yeshi.fanli.util.goods.douyin;
import com.yeshi.fanli.dto.suning.SuningGoodsInfo;
import com.yeshi.fanli.util.goods.douyin.vo.DYGoods;
import com.yeshi.fanli.util.goods.douyin.vo.DYGoodsDetail;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.PostMethod;
import org.yeshi.utils.BigDecimalUtil;
import org.yeshi.utils.HttpUtil;
import org.yeshi.utils.MoneyBigDecimalUtil;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.net.URLDecoder;
/**
 * @author hxh
 * @title: DYUtil
 * @description: 抖音帮助类
 * @date 2022/10/8 14:39
 */
public class DYUtil {
    public static String createFanLiExtraInfo(Long uid) {
        return "b_" + uid;
    }
    public static String createShareExtraInfo(Long uid) {
        return "s_" + uid;
    }
    public static String getTypeFromExtraInfo(String extra_info) {
        if (extra_info != null && extra_info.startsWith("s_")) {
            return "share";
        } else {
            return "buy";
        }
    }
    public static Long getUid(String extra_info) {
        if (extra_info == null || extra_info.indexOf("_") < 0) {
            return null;
        }
        return Long.parseLong(extra_info.split("_")[1].trim());
    }
    public static BigDecimal getCosRatio(DYGoods goods) {
        return new BigDecimal(goods.getCos_ratio()).divide(new BigDecimal(10000), 4, RoundingMode.FLOOR);
    }
    public static BigDecimal getCosRatio(DYGoodsDetail goods) {
        return new BigDecimal(goods.getCos_ratio()).divide(new BigDecimal(10000), 4, RoundingMode.FLOOR);
    }
    public static BigDecimal getGoodsFanLiMoney(DYGoodsDetail goods, BigDecimal rate) {
        BigDecimal hundred = new BigDecimal(100);
        rate = MoneyBigDecimalUtil.div(rate, hundred);
        BigDecimal afterUseCouponPrice = MoneyBigDecimalUtil.div(new BigDecimal(goods.getPrice()), hundred);
        if (goods.getCoupon_price() > 0) {
            afterUseCouponPrice = MoneyBigDecimalUtil.div(new BigDecimal(goods.getCoupon_price()), hundred);
        }
        BigDecimal commission = MoneyBigDecimalUtil.mul(afterUseCouponPrice, getCosRatio(goods));
        BigDecimal money = MoneyBigDecimalUtil.mul(commission,
                rate);
        return BigDecimalUtil.getWithNoZera(money).setScale(2);
    }
    public static BigDecimal getGoodsFanLiMoney(DYGoods goods, BigDecimal rate) {
        BigDecimal hundred = new BigDecimal(100);
        rate = MoneyBigDecimalUtil.div(rate, hundred);
        BigDecimal afterUseCouponPrice = getCouponPrice(goods);
        BigDecimal commission = MoneyBigDecimalUtil.mul(afterUseCouponPrice, getCosRatio(goods));
        BigDecimal money = MoneyBigDecimalUtil.mul(commission,
                rate);
        return BigDecimalUtil.getWithNoZera(money).setScale(2);
    }
    /**
     * @return java.math.BigDecimal
     * @author hxh
     * @description 获取券后价
     * @date 18:09 2022/10/8
     * @param: goods
     **/
    public static BigDecimal getCouponPrice(DYGoods goods) {
        BigDecimal price = new BigDecimal(goods.getPrice()).divide(new BigDecimal(100), 2, RoundingMode.FLOOR);
        if (goods.getCoupon_price() > 0) {
            price = new BigDecimal(goods.getCoupon_price()).divide(new BigDecimal(100), 2, RoundingMode.FLOOR);
        }
        return price;
    }
    /**
     * @return java.math.BigDecimal
     * @author hxh
     * @description 获取券后价
     * @date 18:09 2022/10/8
     * @param: goods
     **/
    public static BigDecimal getCouponPrice(DYGoodsDetail goods) {
        BigDecimal price = new BigDecimal(goods.getPrice()).divide(new BigDecimal(100), 2, RoundingMode.FLOOR);
        if (goods.getCoupon_price() > 0) {
            price = new BigDecimal(goods.getCoupon_price()).divide(new BigDecimal(100), 2, RoundingMode.FLOOR);
        }
        return price;
    }
    /**
     * @return java.lang.String
     * @author hxh
     * @description 从抖音短链中解析商品ID
     * @date 18:29 2022/10/8
     * @param: url
     **/
    public static String parseProdectIdFromLink(String url) {
        if (url == null || !url.startsWith("https://v.douyin.com/")) {
            return null;
        }
        HttpClient client = new HttpClient();
        client.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
        PostMethod pm = new PostMethod(url);
        try {
            client.executeMethod(pm);
            Header header = pm.getResponseHeader("location");
            if (header == null) {
                return null;
            }
            if (header.getValue() == null) {
                return null;
            }
            if (!header.getValue().contains("detail/index.html")) {
                return null;
            }
            String value = URLDecoder.decode(header.getValue(), "UTF-8");
            String[] results = value.split("&");
            for (String r : results) {
                if (!r.contains("product_id=")) {
                    continue;
                }
                return r.split("=")[1].trim();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
    public static BigDecimal getPrice(int money) {
        return new BigDecimal(money).divide(new BigDecimal(100), 2, RoundingMode.FLOOR);
    }
    public static void main(String[] args) {
        parseProdectIdFromLink("https://v.douyin.com/M8dkcv4");
    }
}
fanli/src/main/java/com/yeshi/fanli/util/goods/douyin/vo/DYGoods.java
@@ -1,12 +1,14 @@
package com.yeshi.fanli.util.goods.douyin.vo;
import com.yeshi.fanli.entity.goods.BaseGoodsInfo;
/**
 * @author hxh
 * @title: DYGoods
 * @description: 抖音商品信息
 * @date 2022/9/28 10:14
 */
public class DYGoods {
public class DYGoods extends BaseGoodsInfo {
    /**
     * product_id : 3566898027765626183
     * title : 千可净小白鞋专用去污膏不伤手带海绵擦去污渍膏
@@ -29,7 +31,7 @@
   /**
    * 商品id
    **/
    private long product_id;
    private Long product_id;
    /**
     * 商品名称
     **/
@@ -37,31 +39,31 @@
    /**
     * 在穿⼭甲上是否有达⼈特殊佣⾦
     **/
    private boolean is_kol_product;
    private Boolean is_kol_product;
    /**
     * 商品价格,单位分
     **/
    private long price;
    private Long price;
    /**
     * 商品⼀级类⽬
     **/
    private long first_cid;
    private Long first_cid;
    /**
     * 商品⼆级类⽬
     **/
    private long second_cid;
    private Long second_cid;
    /**
     * 商品三级类⽬
     **/
    private long third_cid;
    private Long third_cid;
    /**
     * 有⽆库存
     **/
    private boolean in_stock;
    private Boolean in_stock;
    /**
     * 商品历史销量
     **/
    private int sales;
    private Integer sales;
    /**
     * 商品主图
     **/
@@ -73,7 +75,7 @@
    /**
     * 商铺id
     **/
    private long shop_id;
    private Long shop_id;
    /**
     * 商铺名称
     **/
@@ -82,27 +84,27 @@
     * 券后价格,单位分(0或者没传则为
     * 原价)
     **/
    private long coupon_price;
    private Long coupon_price;
    /**
     * 分佣⽐例,百分⽐乘以 100,⽐如
     * 1% 返回 1*100 = 100
     **/
    private int cos_ratio;
    private Integer cos_ratio;
    /**
     * 佣⾦⾦额,单位分
     **/
    private int cos_fee;
    private Integer cos_fee;
    /**
     * ⼀个加密字段,需要在转链接⼝当
     * 中回传
     **/
    private String ext;
    public long getProduct_id() {
    public Long getProduct_id() {
        return product_id;
    }
    public void setProduct_id(long product_id) {
    public void setProduct_id(Long product_id) {
        this.product_id = product_id;
    }
@@ -114,59 +116,59 @@
        this.title = title;
    }
    public boolean isIs_kol_product() {
    public Boolean isIs_kol_product() {
        return is_kol_product;
    }
    public void setIs_kol_product(boolean is_kol_product) {
    public void setIs_kol_product(Boolean is_kol_product) {
        this.is_kol_product = is_kol_product;
    }
    public long getPrice() {
    public Long getPrice() {
        return price;
    }
    public void setPrice(long price) {
    public void setPrice(Long price) {
        this.price = price;
    }
    public long getFirst_cid() {
    public Long getFirst_cid() {
        return first_cid;
    }
    public void setFirst_cid(long first_cid) {
    public void setFirst_cid(Long first_cid) {
        this.first_cid = first_cid;
    }
    public long getSecond_cid() {
    public Long getSecond_cid() {
        return second_cid;
    }
    public void setSecond_cid(long second_cid) {
    public void setSecond_cid(Long second_cid) {
        this.second_cid = second_cid;
    }
    public long getThird_cid() {
    public Long getThird_cid() {
        return third_cid;
    }
    public void setThird_cid(long third_cid) {
    public void setThird_cid(Long third_cid) {
        this.third_cid = third_cid;
    }
    public boolean isIn_stock() {
    public Boolean isIn_stock() {
        return in_stock;
    }
    public void setIn_stock(boolean in_stock) {
    public void setIn_stock(Boolean in_stock) {
        this.in_stock = in_stock;
    }
    public int getSales() {
    public Integer getSales() {
        return sales;
    }
    public void setSales(int sales) {
    public void setSales(Integer sales) {
        this.sales = sales;
    }
@@ -186,11 +188,11 @@
        this.detail_url = detail_url;
    }
    public long getShop_id() {
    public Long getShop_id() {
        return shop_id;
    }
    public void setShop_id(long shop_id) {
    public void setShop_id(Long shop_id) {
        this.shop_id = shop_id;
    }
@@ -202,27 +204,27 @@
        this.shop_name = shop_name;
    }
    public long getCoupon_price() {
    public Long getCoupon_price() {
        return coupon_price;
    }
    public void setCoupon_price(long coupon_price) {
    public void setCoupon_price(Long coupon_price) {
        this.coupon_price = coupon_price;
    }
    public int getCos_ratio() {
    public Integer getCos_ratio() {
        return cos_ratio;
    }
    public void setCos_ratio(int cos_ratio) {
    public void setCos_ratio(Integer cos_ratio) {
        this.cos_ratio = cos_ratio;
    }
    public int getCos_fee() {
    public Integer getCos_fee() {
        return cos_fee;
    }
    public void setCos_fee(int cos_fee) {
    public void setCos_fee(Integer cos_fee) {
        this.cos_fee = cos_fee;
    }
fanli/src/main/java/com/yeshi/fanli/util/goods/douyin/vo/DYGoodsDetail.java
@@ -1,5 +1,7 @@
package com.yeshi.fanli.util.goods.douyin.vo;
import com.yeshi.fanli.entity.goods.BaseGoodsInfo;
import java.util.List;
/**
@@ -8,7 +10,7 @@
 * @description: 商品详情
 * @date 2022/9/28 13:52
 */
public class DYGoodsDetail {
public class DYGoodsDetail extends BaseGoodsInfo {
    /**
fanli/src/main/java/com/yeshi/fanli/util/goods/douyin/vo/DYLiveInfo.java
@@ -28,23 +28,74 @@
     * products : [{}]
     * lottery_products : [{}]
     */
    /**
     * 直播间主播openid
     **/
    private String author_openid;
    /**
     * 昵称
     **/
    private String author_name;
    /**
     * 头像
     **/
    private String author_pic;
    /**
     * 达⼈等级
     **/
    private int author_level;
    /**
     * 场均gmv
     **/
    private String average_gmv;
    /**
     * 粉丝数量
     **/
    private int fans_num;
    /**
     * 平均佣⾦率
     **/
    private String average_commission_rate;
    /**
     * 直播间id
     **/
    private String room_id;
    /**
     * 是否正在直播
     **/
    private boolean is_live;
    /**
     *
     **/
    private boolean is_ecom;
    /**
     * 性别 male/ female/
     **/
    private String gender;
    /**
     * 内部⽣成的加密字段。直播间转
     * 链请求的live_ext应填此字段
     **/
    private String ext;
    /**
     * 查询时刻在线⼈数
     **/
    private int online_num;
    /**
     * 开播时间戳
     **/
    private int create_time;
    /**
     * 商品类别
     **/
    private List<String> product_category;
    /**
     * 直播间挂⻋的商品信息
     **/
    private List<ProductsBean> products;
    /**
     *
     **/
    private List<LotteryProductsBean> lottery_products;
    public String getAuthor_openid() {
fanli/src/main/java/com/yeshi/fanli/util/goods/douyin/vo/DYOrderResult.java
@@ -1,5 +1,7 @@
package com.yeshi.fanli.util.goods.douyin.vo;
import com.yeshi.fanli.entity.dy.DYOrder;
import java.util.List;
/**
fanli/src/main/java/com/yeshi/fanli/util/mq/cmq/order/JDOrderCMQManager.java
@@ -30,16 +30,6 @@
        return jdOrderCMQManager;
    }
    /**
     * 添加京东订单到队列
     *
     * @param orderId
     */
    public void addJDOrder(String orderId) {
        if (StringUtil.isNullOrEmpty(orderId))
            return;
        TDMQUtil.getInstance().sendMsg(JD_ORDER, orderId);
    }
    /**
     * 消费队列消息
fanli/src/main/java/com/yeshi/fanli/util/mq/cmq/order/OrdersCMQManager.java
New file
@@ -0,0 +1,72 @@
package com.yeshi.fanli.util.mq.cmq.order;
import com.google.gson.Gson;
import com.qcloud.cmq.Message;
import com.yeshi.fanli.dto.mq.order.body.CommonOrderMQMsg;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.mq.cmq.TDMQUtil;
import net.sf.json.JSONObject;
import org.yeshi.utils.JsonUtil;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class OrdersCMQManager {
    private static String secretId = "AKIDTlpgJhLjOozvd6QI2XnpfGbgV4NQJk25";
    private static String secretKey = "xhCSUHo55oHUQ6XicFcmfIgspX0EEzWo";
    private static OrdersCMQManager jdOrderCMQManager;
    public static String ORDER_ALL = "order-all";
    static {
        TDMQUtil.getInstance().init(secretId, secretKey, Constant.TDMQ_PUBLIC);
        ORDER_ALL += "-" + Constant.systemCommonConfig.getProjectName();
        TDMQUtil.getInstance().createQueue(ORDER_ALL);
    }
    public static OrdersCMQManager getInstance() {
        if (jdOrderCMQManager == null)
            jdOrderCMQManager = new OrdersCMQManager();
        return jdOrderCMQManager;
    }
    /**
     * 添加订单到队列
     *
     * @param msg
     */
    public void addOrder(CommonOrderMQMsg msg) {
        TDMQUtil.getInstance().sendMsg(ORDER_ALL, new Gson().toJson(msg));
    }
    /**
     * 消费队列消息
     *
     * @param count
     * @return
     */
    public Map<String, CommonOrderMQMsg> consumeOrders(int count) {
        List<Message> list = TDMQUtil.getInstance().recieveMsg(count, ORDER_ALL);
        Map<String, CommonOrderMQMsg> map = new HashMap<>();
        if (list != null)
            for (Message msg : list) {
                String result = msg.msgBody;
                map.put(msg.receiptHandle, JsonUtil.getSimpleGson().fromJson(result,CommonOrderMQMsg.class));
            }
        return map;
    }
    /**
     * 删除京东队列
     *
     * @param receiptHandle
     */
    public void deleteOrder(String receiptHandle) {
        TDMQUtil.getInstance().deleteMsg(ORDER_ALL, receiptHandle);
    }
}
fanli/src/main/java/com/yeshi/fanli/util/mq/cmq/order/PDDOrderCMQManager.java
@@ -29,16 +29,6 @@
        return pddOrderCMQManager;
    }
    /**
     * 添加京东订单到队列
     *
     * @param orderId
     */
    public void addPDDOrder(String orderId) {
        if (StringUtil.isNullOrEmpty(orderId))
            return;
        TDMQUtil.getInstance().sendMsg(PDD_ORDER, orderId);
    }
    /**
     * 消费队列消息
fanli/src/main/java/com/yeshi/fanli/util/mq/cmq/order/SuningOrderCMQManager.java
@@ -30,16 +30,6 @@
        return suningOrderCMQManager;
    }
    /**
     * 添加唯品会订单到队列
     *
     * @param orderId
     */
    public void addSuningOrder(String orderId) {
        if (StringUtil.isNullOrEmpty(orderId))
            return;
        TDMQUtil.getInstance().sendMsg(SUNING_ORDER, orderId);
    }
    /**
     * 消费队列消息
fanli/src/main/java/com/yeshi/fanli/util/mq/cmq/order/VipShopOrderCMQManager.java
@@ -29,16 +29,6 @@
        return vipShopOrderCMQManager;
    }
    /**
     * 添加唯品会订单到队列
     *
     * @param orderId
     */
    public void addVipShopOrder(String orderId) {
        if (StringUtil.isNullOrEmpty(orderId))
            return;
        TDMQUtil.getInstance().sendMsg(VIPSHOP_ORDER, orderId);
    }
    /**
     * 消费队列消息
fanli/src/main/java/com/yeshi/fanli/util/pinduoduo/PinDuoDuoApiUtil.java
@@ -5,6 +5,7 @@
import java.net.URLEncoder;
import java.util.*;
import com.google.gson.JsonObject;
import com.yeshi.fanli.exception.pdd.PDDApiException;
import com.yeshi.fanli.vo.pdd.PDDConvertLinkResultVO;
import org.yeshi.utils.HttpUtil;
@@ -52,6 +53,15 @@
        return StringUtil.Md5(CLIENT_SECRET + org + CLIENT_SECRET).toUpperCase();
    }
    private static String getFormatCustomParameters(String customParameters){
        customParameters=customParameters.replace("_","");
        JSONObject data=new JSONObject();
        data.put("uid",customParameters);
        String custom = data.toString();
        System.out.println("自定义参数:"+custom);
        return custom;
    }
    private static String baseRequest(Map<String, String> map) {
        map.put("client_id", CLIENT_ID);
        map.put("timestamp", System.currentTimeMillis() / 1000 + "");
@@ -81,7 +91,7 @@
        Gson gson = new GsonBuilder().disableHtmlEscaping().create();
        Map<String, String> map = new HashMap<>();
        map.put("type", "pdd.ddk.goods.search");
        map.put("custom_parameters", customerParamters);
        map.put("custom_parameters", getFormatCustomParameters(customerParamters));
        if (sf.getOptId() != null)
            map.put("opt_id", sf.getOptId() + "");
        if (sf.getPage() != null)
@@ -113,7 +123,7 @@
        JSONObject json = JSONObject.fromObject(result);
        if (json.optJSONObject("error_response") != null) {
            int errorCode = json.optJSONObject("error_response").optInt("sub_code");
            throw new PDDApiException(errorCode, json.optJSONObject("error_response").optString("sub_msg"));
             throw new PDDApiException(errorCode, json.optJSONObject("error_response").optString("sub_msg"));
        }
        JSONObject root = json.optJSONObject("goods_search_response");
@@ -290,6 +300,7 @@
        map.put("type", "pdd.ddk.goods.promotion.url.generate");
        map.put("p_id", pid);
        map.put("multi_group", "true");
        map.put("generate_schema_url","true");
        map.put("generate_weapp_webview", "true");
        map.put("generate_we_app", "true");
@@ -298,7 +309,7 @@
        array.add(goodsSign);
        map.put("goods_sign_list", array.toString());
        if (!StringUtil.isNullOrEmpty(customParams)) {
            map.put("custom_parameters", customParams);
            map.put("custom_parameters", getFormatCustomParameters(customParams));
        }
        //是否生成带授权的单品链接
@@ -335,9 +346,10 @@
    public static PDDConvertLinkResultVO convertActivity(String resourceType, String url, String pid, String customParams) {
        Map<String, String> map = new HashMap<>();
        map.put("type", "pdd.ddk.resource.url.gen");
        map.put("generate_schema_url","true");
        map.put("pid", pid);
        if (customParams != null) {
            map.put("custom_parameters", customParams);
            map.put("custom_parameters", getFormatCustomParameters(customParams));
        }
        map.put("resource_type", resourceType);
        if (url != null) {
@@ -381,7 +393,7 @@
        map.put("type", "pdd.ddk.cms.prom.url.generate");
        map.put("p_id_list", "[\"" + pid + "\"]");
        if (customParams != null) {
            map.put("custom_parameters", customParams);
            map.put("custom_parameters", getFormatCustomParameters(customParams));
        }
        map.put("channel_type", channelType);
        map.put("generate_mobile", true+"");
@@ -423,7 +435,7 @@
        array.add(goodsId);
        map.put("goods_id_list", array.toString());
        if (!StringUtil.isNullOrEmpty(customParams)) {
            map.put("custom_parameters", customParams);
            map.put("custom_parameters", getFormatCustomParameters(customParams));
        }
        String result = baseRequest(map);
@@ -488,14 +500,21 @@
        map.put("page_size", pageSize + "");
        String result = baseRequest(map);
        System.out.println(result);
        JSONObject json = JSONObject.fromObject(result);
        JSONObject root = json.optJSONObject("order_list_get_response");
        com.alibaba.fastjson.JSONObject json = com.alibaba.fastjson.JSONObject.parseObject(result);
        com.alibaba.fastjson.JSONObject root = json.getJSONObject("order_list_get_response");
        if (root != null) {
            int totalCount = root.optInt("total_count");
            JSONArray array = root.optJSONArray("order_list");
            Type type = new TypeToken<List<PDDOrder>>() {
            }.getType();
            List<PDDOrder> orderList = new Gson().fromJson(array.toString(), type);
            int totalCount = root.getInteger("total_count");
            com.alibaba.fastjson.JSONArray array = root.getJSONArray("order_list");
            Type type=new TypeToken<List<PDDOrder>>(){}.getType();
            List<PDDOrder> orderList = new Gson().fromJson( array.toJSONString(), type);
            // 处理custom_params
            for(PDDOrder order:orderList){
                String params=order.getCustomParameters();
                if(params.contains("{")) {
                    JSONObject jsonp = JSONObject.fromObject(params);
                    order.setCustomParameters(jsonp.optString("uid"));
                }
            }
            return new PDDOrderResult(totalCount, orderList);
        }
        return null;
@@ -506,10 +525,16 @@
        map.put("type", "pdd.ddk.order.detail.get");
        map.put("order_sn", orderSn);
        String result = baseRequest(map);
        JSONObject json = JSONObject.fromObject(result);
        JSONObject root = json.optJSONObject("order_detail_response");
        com.alibaba.fastjson.JSONObject json = com.alibaba.fastjson.JSONObject.parseObject(result);
        com.alibaba.fastjson.JSONObject root = json.getJSONObject("order_detail_response");
        if (root != null) {
            return new Gson().fromJson(root.toString(), PDDOrder.class);
            PDDOrder order = new Gson().fromJson(root.toString(), PDDOrder.class);
            String params=order.getCustomParameters();
            if(params.contains("{")) {
                JSONObject jsonp = JSONObject.fromObject(params);
                order.setCustomParameters(jsonp.optString("uid"));
            }
            return order;
        }
        return null;
    }
@@ -521,7 +546,7 @@
     */
    public static PDDGoodsDetail getGoodsDetail(Long goodsId) {
        try {
            return getGoodsDetail(goodsId, PID_DEFAULT, "437032");
            return getGoodsDetail(goodsId, PID_DEFAULT, "437031");
        } catch (PDDApiException e) {
            e.printStackTrace();
        }
@@ -554,7 +579,7 @@
        }
        if (!StringUtil.isNullOrEmpty(customParameters)) {
            map.put("custom_parameters", customParameters);
            map.put("custom_parameters", getFormatCustomParameters(customParameters));
        }
        String result = baseRequest(map);
@@ -658,10 +683,13 @@
     * @return
     */
    public static boolean isAuth(String pid, String customParameters) {
//        customParameters=customParameters.replace("_","");
        System.out.println("是否授权:"+pid+"-"+customParameters);
        Map<String, String> map = new HashMap<>();
        map.put("type", "pdd.ddk.member.authority.query");
        map.put("pid", pid);
        map.put("custom_parameters", customParameters);
        map.put("custom_parameters", getFormatCustomParameters(customParameters));
        String result = baseRequest(map);
        JSONObject resultJson = JSONObject.fromObject(result);
        if (resultJson.optJSONObject("authority_query_response").optInt("bind") == 0) {
@@ -679,11 +707,14 @@
     * @return
     */
    public static PDDConvertLinkResultVO getAuthLink(String pid, String customParameters) {
//        customParameters=customParameters.replace("_","");
        System.out.println("获取授权链接:"+pid+"-"+customParameters);
        Map<String, String> map = new HashMap<>();
        map.put("type", "pdd.ddk.rp.prom.url.generate");
        map.put("channel_type", 10 + "");
        map.put("generate_we_app", true + "");
        map.put("custom_parameters", customParameters);
        map.put("custom_parameters",getFormatCustomParameters(customParameters));
        map.put("p_id_list", "[\"" + pid + "\"]");
        String result = baseRequest(map);
        System.out.println(result);
@@ -700,14 +731,18 @@
    public static void main(String[] args) {
       PDDConvertLinkResultVO vo = getAuthLink("8590899_72067894", 437032+"");
//       PDDConvertLinkResultVO vo = getAuthLink("8590899_72067894", 437031+"");
       boolean isAuthed = isAuth(PID_DEFAULT, 437031+"");
       System.out.println("是否授权:"+isAuthed);
//
       System.out.println(vo);
//        PDDGoodsDetail goods = PinDuoDuoApiUtil.getGoodsDetail(227873724698L);
//       System.out.println(vo);
       PDDGoodsDetail goods = PinDuoDuoApiUtil.getGoodsDetail(419563711836L);
    //    PDDConvertLinkResultVO vo = convertChannel("0", PID_DEFAULT, null);
     //   System.out.println(vo);
//        PinDuoDuoApiUtil.convert(goods.getGoodsSign(), PID_DEFAULT + "", "437032", false);
        PDDConvertLinkResultVO goodsc =  PinDuoDuoApiUtil.convert(goods.getGoodsSign(), PID_DEFAULT + "", "437031", false);
        System.out.println("");
    }
}
fanli/src/main/java/com/yeshi/fanli/util/pinduoduo/PinDuoDuoUtil.java
@@ -662,11 +662,19 @@
    }
    public static String getCustomParams(Long uid) {
        return uid + "_" + TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyyMMdd");
        return uid + "" + TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyyMMdd");
    }
    public static String getUidFromCustomParams(String params) {
        return params.split("_")[0];
        if (params.contains("_")) {
            return params.split("_")[0];
        } else {
            if(params.length()>12) {
                return params.substring(0, params.length() - 8);
            }else{
                return params;
            }
        }
    }
    public static void main(String[] args) {
fanli/src/main/java/com/yeshi/fanli/vo/pdd/PDDConvertLinkResultVO.java
@@ -8,6 +8,7 @@
    private String url;
    private String mobile_short_url;
    private String short_url;
    private String  schema_url;
    public String getMobile_short_url() {
@@ -50,6 +51,14 @@
        this.url = url;
    }
    public String getSchema_url() {
        return schema_url;
    }
    public void setSchema_url(String schema_url) {
        this.schema_url = schema_url;
    }
    public static class WeAppInfoBean {
        /**
         * we_app_icon_url : http://xcxcdn.yangkeduo.com/pdd_logo.png
fanli/src/main/resource/logback.xml
@@ -378,6 +378,23 @@
    </appender>
    <appender name="KAFKA_DEBUG" class="com.tencentcloudapi.cls.LoghubAppender">
        <!--必选项-->
        <endpoint>${tencent.log.endpoint}</endpoint>
        <accessKeyId>${tencent.log.accesskey}</accessKeyId>
        <accessKeySecret>${tencent.log.accessKeySecret}</accessKeySecret>
        <topicId>47887e50-3464-4fb1-b495-309b12139e81</topicId>
        <!-- 可选项 设置时间格式 -->
        <timeFormat>yyyy-MM-dd'T'HH:mm:ssZ</timeFormat>
        <timeZone>Asia/Shanghai</timeZone>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <mdcFields>THREAD_ID,MDC_KEY</mdcFields>
    </appender>
    <!-- 用户商品浏览 -->
    <appender name="KAFKA_USER_GOODS_SCAN" class="com.tencentcloudapi.cls.LoghubAppender">
        <!--必选项-->
@@ -495,6 +512,11 @@
    </logger>
    <logger name="debugLog" level="INFO" additivity="false">
        <appender-ref ref="KAFKA_DEBUG"></appender-ref>
    </logger>