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>