| | |
| | | |
| | | import javax.annotation.Resource; |
| | | |
| | | import com.yeshi.fanli.entity.SystemPIDInfo; |
| | | import com.yeshi.fanli.entity.config.SystemConfigKeyEnum; |
| | | import com.yeshi.fanli.service.manger.PIDManager; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RequestMethod; |
| | |
| | | @RequestMapping("api/h5/v1/webRecommend") |
| | | public class H5RecommendController { |
| | | |
| | | @Resource |
| | | private H5ControllerUtil h5ControllerUtil; |
| | | @Resource |
| | | private H5ControllerUtil h5ControllerUtil; |
| | | |
| | | @Resource |
| | | private SuperRecommendBannerService superRecommendBannerService; |
| | | @Resource |
| | | private SuperRecommendBannerService superRecommendBannerService; |
| | | |
| | | @Resource |
| | | private HongBaoManageService hongBaoManageService; |
| | | @Resource |
| | | private HongBaoManageService hongBaoManageService; |
| | | |
| | | @Resource |
| | | private RedisManager redisManager; |
| | | @Resource |
| | | private RedisManager redisManager; |
| | | |
| | | @Resource |
| | | private BusinessSystemService businessSystemService; |
| | | @Resource |
| | | private BusinessSystemService businessSystemService; |
| | | |
| | | @Resource |
| | | private ConfigService configService; |
| | | @Resource |
| | | private ConfigService configService; |
| | | |
| | | @Resource |
| | | private SystemConfigService systemConfigService; |
| | | @Resource |
| | | private SystemConfigService systemConfigService; |
| | | |
| | | @Resource |
| | | private TaoBaoGoodsBriefService taoBaoGoodsBriefService; |
| | | @Resource |
| | | private TaoBaoGoodsBriefService taoBaoGoodsBriefService; |
| | | |
| | | @Resource |
| | | private TBPidService tbPidService; |
| | | @Resource |
| | | private TBPidService tbPidService; |
| | | |
| | | @Resource |
| | | private ShareGoodsService shareGoodsService; |
| | | @Resource |
| | | private ShareGoodsService shareGoodsService; |
| | | |
| | | @Resource |
| | | private TaoBaoUnionConfigService taoBaoUnionConfigService; |
| | | @Resource |
| | | private TaoBaoUnionConfigService taoBaoUnionConfigService; |
| | | |
| | | @Resource |
| | | private UserShareGoodsGroupService userShareGoodsGroupService; |
| | | @Resource |
| | | private UserShareGoodsGroupService userShareGoodsGroupService; |
| | | |
| | | @Resource |
| | | private UserTaoLiJinRecordService userTaoLiJinRecordService; |
| | | @Resource |
| | | private UserTaoLiJinRecordService userTaoLiJinRecordService; |
| | | |
| | | @Resource |
| | | private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService; |
| | | @Resource |
| | | private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService; |
| | | |
| | | /** |
| | | * |
| | | * 方法说明: 推荐轮播商品信息 |
| | | * |
| | | * @author mawurui createTime 2018年5月11日 上午11:13:47 |
| | | * @param acceptData |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "getRecommenBanner", method = RequestMethod.GET) |
| | | public void getRecommendBanner(AcceptData acceptData, String callback, PrintWriter out) { |
| | | @Resource |
| | | private PIDManager pidManager; |
| | | |
| | | BusinessSystem system = businessSystemService.getBusinessSystem("WEB", |
| | | Constant.systemCommonConfig.getH5PackageName(),acceptData.getSystem()); |
| | | JSONObject json = new JSONObject(); |
| | | if (system == null) { |
| | | out.print(JsonUtil.loadFalseResult(1, H5ControllerUtil.NOSYSTEM)); |
| | | return; |
| | | } |
| | | List<SuperRecommendBanner> superRecommendBanners = superRecommendBannerService |
| | | .getSuperRecommendBannersBySystem(system); |
| | | List<RecommendBanner> list = null; |
| | | for (SuperRecommendBanner superRecommendBanner : superRecommendBanners) { |
| | | if (list == null) { |
| | | list = new ArrayList<RecommendBanner>(); |
| | | } |
| | | RecommendBanner recommendBanner = superRecommendBanner.getRecommendBanner(); |
| | | // 淘特价暂时修改 |
| | | if (system.getId() == 7) { |
| | | recommendBanner.getJumpDetail().setActivity(recommendBanner.getJumpDetail().getActivity() |
| | | .replace("com.yeshi.ec.rebate.myapplication", "com.yeshi.ec.taospecial")); |
| | | } |
| | | /** |
| | | * 方法说明: 推荐轮播商品信息 |
| | | * |
| | | * @param acceptData |
| | | * @param out |
| | | * @author mawurui createTime 2018年5月11日 上午11:13:47 |
| | | */ |
| | | @RequestMapping(value = "getRecommenBanner", method = RequestMethod.GET) |
| | | public void getRecommendBanner(AcceptData acceptData, String callback, PrintWriter out) { |
| | | |
| | | list.add(recommendBanner); |
| | | } |
| | | BusinessSystem system = businessSystemService.getBusinessSystem("WEB", |
| | | systemConfigService.getValueCache(SystemConfigKeyEnum.h5PackageName,acceptData.getSystem()), acceptData.getSystem()); |
| | | JSONObject json = new JSONObject(); |
| | | if (system == null) { |
| | | out.print(JsonUtil.loadFalseResult(1, H5ControllerUtil.NOSYSTEM)); |
| | | return; |
| | | } |
| | | List<SuperRecommendBanner> superRecommendBanners = superRecommendBannerService |
| | | .getSuperRecommendBannersBySystem(system); |
| | | List<RecommendBanner> list = null; |
| | | for (SuperRecommendBanner superRecommendBanner : superRecommendBanners) { |
| | | if (list == null) { |
| | | list = new ArrayList<RecommendBanner>(); |
| | | } |
| | | RecommendBanner recommendBanner = superRecommendBanner.getRecommendBanner(); |
| | | // 淘特价暂时修改 |
| | | if (system.getId() == 7) { |
| | | recommendBanner.getJumpDetail().setActivity(recommendBanner.getJumpDetail().getActivity() |
| | | .replace("com.yeshi.ec.rebate.myapplication", "com.yeshi.ec.taospecial")); |
| | | } |
| | | |
| | | if (list == null) { |
| | | json.put("code", "1"); |
| | | json.put("msg", H5ControllerUtil.NODATA); |
| | | out.print(json); |
| | | java.lang.System.out.println("json-" + json); |
| | | return; |
| | | } |
| | | json.put("code", 0); |
| | | JSONObject data = new JSONObject(); |
| | | data.put("count", list.size()); |
| | | Gson gson = new Gson(); |
| | | data.put("data", gson.toJson(list)); |
| | | json.put("data", data); |
| | | // jsonp方式返回 |
| | | out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(json))); |
| | | return; |
| | | } |
| | | list.add(recommendBanner); |
| | | } |
| | | |
| | | /** |
| | | * 处理条件 |
| | | * |
| | | * @param uid |
| | | * @param tid |
| | | * @param out |
| | | */ |
| | | private void doTaoLiJin(String callback, Long uid, Long tid, PrintWriter out) { |
| | | // 查询商品淘礼金 |
| | | UserTaoLiJinRecord record = userTaoLiJinRecordService.selectByPrimaryKey(tid); |
| | | if (record == null) { |
| | | out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("商品信息获取失败"))); |
| | | return; |
| | | } |
| | | if (list == null) { |
| | | json.put("code", "1"); |
| | | json.put("msg", H5ControllerUtil.NODATA); |
| | | out.print(json); |
| | | java.lang.System.out.println("json-" + json); |
| | | return; |
| | | } |
| | | json.put("code", 0); |
| | | JSONObject data = new JSONObject(); |
| | | data.put("count", list.size()); |
| | | Gson gson = new Gson(); |
| | | data.put("data", gson.toJson(list)); |
| | | json.put("data", data); |
| | | // jsonp方式返回 |
| | | out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(json))); |
| | | return; |
| | | } |
| | | |
| | | Long auctionId = record.getGoodsId(); |
| | | String tljLink = record.getSendUrl(); |
| | | BigDecimal tljMoney = record.getPerFace(); |
| | | /** |
| | | * 处理条件 |
| | | * |
| | | * @param uid |
| | | * @param tid |
| | | * @param out |
| | | */ |
| | | private void doTaoLiJin(String callback, Long uid, Long tid, PrintWriter out) { |
| | | // 查询商品淘礼金 |
| | | UserTaoLiJinRecord record = userTaoLiJinRecordService.selectByPrimaryKey(tid); |
| | | if (record == null) { |
| | | out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("商品信息获取失败"))); |
| | | return; |
| | | } |
| | | |
| | | TaoBaoGoodsBrief goods = null; |
| | | try { |
| | | goods = redisManager.getTaoBaoGoodsBrief(auctionId); |
| | | } catch (TaobaoGoodsDownException e) { |
| | | } |
| | | String auctionId = record.getGoodsId(); |
| | | String tljLink = record.getSendUrl(); |
| | | BigDecimal tljMoney = record.getPerFace(); |
| | | |
| | | if (goods == null) {// 已经下线 |
| | | out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("商品信息获取失败"))); |
| | | return; |
| | | } |
| | | TaoBaoGoodsBrief goods = null; |
| | | try { |
| | | goods = redisManager.getTaoBaoGoodsBrief(auctionId); |
| | | } catch (TaobaoGoodsDownException e) { |
| | | } |
| | | |
| | | String token = redisManager.getTLJToken(tljLink); |
| | | if (StringUtil.isNullOrEmpty(token)) { |
| | | token = TaoKeApiUtil.getTKToken(goods.getPictUrl(), goods.getTitle(), tljLink); |
| | | } |
| | | if (goods == null) {// 已经下线 |
| | | out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("商品信息获取失败"))); |
| | | return; |
| | | } |
| | | |
| | | // 券后价 |
| | | BigDecimal afterCouponPrice = TaoBaoUtil.getAfterUseCouplePrice(goods); |
| | | TaoBaoLink link = new TaoBaoLink(); |
| | | link.setTaoToken(token); |
| | | String token = redisManager.getTLJToken(tljLink); |
| | | if (StringUtil.isNullOrEmpty(token)) { |
| | | token = TaoKeApiUtil.getTKToken(goods.getPictUrl(), goods.getTitle(), tljLink); |
| | | } |
| | | |
| | | JSONObject data = new JSONObject(); |
| | | data.put("title", goods.getTitle()); |
| | | if (goods.getImgList() == null) |
| | | goods.setImgList(new ArrayList<>()); |
| | | goods.getImgList().add(0, TbImgUtil.getTBSizeImg(goods.getPictUrl(), 300)); |
| | | data.put("imgs", goods.getImgList()); |
| | | data.put("couponPrice", afterCouponPrice); |
| | | // 老版本兼容 |
| | | data.put("quanPrice", afterCouponPrice); |
| | | data.put("zkPrice", goods.getZkPrice()); |
| | | data.put("shareContent", "长按复制本段文字,打开【手机淘宝】即可领取【特别优惠券】购买下单,"); |
| | | data.put("token", TaoBaoUtil.filterTaoToken(link.getTaoToken())); |
| | | data.put("reservePrice", goods.getReservePrice()); |
| | | data.put("shopType", goods.getUserType() == 1 ? 2 : 1); |
| | | if (!StringUtil.isNullOrEmpty(goods.getCouponInfo()) && !"无".equalsIgnoreCase(goods.getCouponInfo())) { |
| | | data.put("couponAmount", MoneyBigDecimalUtil.getWithNoZera(goods.getCouponAmount())); |
| | | data.put("coupon", true); |
| | | } else { |
| | | data.put("coupon", false); |
| | | } |
| | | // 券后价 |
| | | BigDecimal afterCouponPrice = TaoBaoUtil.getCouponPrice(goods); |
| | | TaoBaoLink link = new TaoBaoLink(); |
| | | link.setTaoToken(token); |
| | | |
| | | data.put("tljMoney", tljMoney); |
| | | JSONObject data = new JSONObject(); |
| | | data.put("title", goods.getTitle()); |
| | | if (goods.getImgList() == null) |
| | | goods.setImgList(new ArrayList<>()); |
| | | goods.getImgList().add(0, TbImgUtil.getTBSizeImg(goods.getPictUrl(), 300)); |
| | | data.put("imgs", goods.getImgList()); |
| | | data.put("couponPrice", afterCouponPrice); |
| | | // 老版本兼容 |
| | | data.put("quanPrice", afterCouponPrice); |
| | | data.put("zkPrice", goods.getZkPrice()); |
| | | data.put("shareContent", "长按复制本段文字,打开【手机淘宝】即可领取【特别优惠券】购买下单,"); |
| | | data.put("token", TaoBaoUtil.filterTaoToken(link.getTaoToken())); |
| | | data.put("reservePrice", goods.getReservePrice()); |
| | | data.put("shopType", goods.getUserType() == 1 ? 2 : 1); |
| | | if (!StringUtil.isNullOrEmpty(goods.getCouponInfo()) && !"无".equalsIgnoreCase(goods.getCouponInfo())) { |
| | | data.put("couponAmount", MoneyBigDecimalUtil.getWithNoZera(goods.getCouponAmount())); |
| | | data.put("coupon", true); |
| | | } else { |
| | | data.put("coupon", false); |
| | | } |
| | | |
| | | out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(data))); |
| | | } |
| | | data.put("tljMoney", tljMoney); |
| | | |
| | | /** |
| | | * |
| | | * 方法说明: 获取商品详情 |
| | | * |
| | | * @author mawurui createTime 2018年5月11日 上午11:37:02 |
| | | * @param acceptData |
| | | * @param id |
| | | * @param uid |
| | | * @param out |
| | | */ |
| | | out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(data))); |
| | | } |
| | | |
| | | @SuppressWarnings("unused") |
| | | @RequestMapping(value = "getGoodsDetail", method = RequestMethod.GET) |
| | | public void getGoodsDetail(final AcceptData acceptData, final String id, String tid, String uid, String callback, |
| | | PrintWriter out) { |
| | | if (!StringUtil.isNullOrEmpty(uid)) |
| | | uid = uid.replace(" ", "+"); |
| | | /** |
| | | * 方法说明: 获取商品详情 |
| | | * |
| | | * @param acceptData |
| | | * @param id |
| | | * @param uid |
| | | * @param out |
| | | * @author mawurui createTime 2018年5月11日 上午11:37:02 |
| | | */ |
| | | |
| | | LogManager.getLogger(LogType.taobaoTrade) |
| | | .info(String.format("淘宝分享商品H5访问:\n 商品ID:%s \n 原始用户ID:%s \n", id, uid)); |
| | | |
| | | long begin = java.lang.System.currentTimeMillis(); |
| | | if (StringUtil.isNullOrEmpty(id)) { |
| | | out.print(JsonUtil.loadFalseResult(1, "请上传id")); |
| | | return; |
| | | } |
| | | @SuppressWarnings("unused") |
| | | @RequestMapping(value = "getGoodsDetail", method = RequestMethod.GET) |
| | | public void getGoodsDetail(final AcceptData acceptData, final String id, String tid, String uid, String callback, |
| | | PrintWriter out) { |
| | | if (!StringUtil.isNullOrEmpty(uid)) |
| | | uid = uid.replace(" ", "+"); |
| | | |
| | | if (!StringUtil.isNullOrEmpty(uid)) { |
| | | uid = AESUtil.decrypt(uid, Constant.UIDAESKEY); |
| | | } |
| | | LogManager.getLogger(LogType.taobaoTrade) |
| | | .info(String.format("淘宝分享商品H5访问:\n 商品ID:%s \n 原始用户ID:%s \n", id, uid)); |
| | | |
| | | if (!StringUtil.isNullOrEmpty(tid)) { |
| | | tid = AESUtil.decrypt(tid, Constant.UIDAESKEY); |
| | | doTaoLiJin(callback, StringUtil.isNullOrEmpty(uid) || Long.parseLong(uid) == 0 ? null : Long.parseLong(uid), |
| | | Long.parseLong(tid), out); |
| | | return; |
| | | } |
| | | long begin = java.lang.System.currentTimeMillis(); |
| | | if (StringUtil.isNullOrEmpty(id)) { |
| | | out.print(JsonUtil.loadFalseResult(1, "请上传id")); |
| | | return; |
| | | } |
| | | |
| | | TaoBaoGoodsBrief goods = null; |
| | | String token = null; |
| | | if (!StringUtil.isNullOrEmpty(uid)) { |
| | | // 查询是否有分享记录 |
| | | UserShareGoodsHistory shareHistory = null; |
| | | try { |
| | | shareHistory = shareGoodsService.getShareGoodsHistoryDetail(Long.parseLong(uid), Long.parseLong(id)); |
| | | } catch (NumberFormatException e) { |
| | | e.printStackTrace(); |
| | | } catch (ShareGoodsException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | if (!StringUtil.isNullOrEmpty(uid)) { |
| | | uid = AESUtil.decrypt(uid, Constant.UIDAESKEY); |
| | | } |
| | | |
| | | if (shareHistory != null) {// 有分享记录 |
| | | token = shareHistory.getTkCode(); |
| | | goods = redisManager.getTaoBaoGoodsTemp(Long.parseLong(id)); |
| | | if (goods == null) |
| | | try { |
| | | goods = TaoKeApiUtil.searchGoodsDetail(Long.parseLong(id)); |
| | | } catch (NumberFormatException e) { |
| | | e.printStackTrace(); |
| | | } catch (TaobaoGoodsDownException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | if (!StringUtil.isNullOrEmpty(tid)) { |
| | | tid = AESUtil.decrypt(tid, Constant.UIDAESKEY); |
| | | doTaoLiJin(callback, StringUtil.isNullOrEmpty(uid) || Long.parseLong(uid) == 0 ? null : Long.parseLong(uid), |
| | | Long.parseLong(tid), out); |
| | | return; |
| | | } |
| | | |
| | | } else {// 没有分享记录,需要直接分享 |
| | | LogHelper.test("没有分享记录:uid:" + uid + " actionid:" + id); |
| | | // 获取 |
| | | TaoKeAppInfo app = new TaoKeAppInfo(); |
| | | app.setPid(TaoBaoConstant.TAOBAO_RELATION_PID_DEFAULT); |
| | | app.setAdzoneId(app.getPid().split("_")[3]); |
| | | app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY); |
| | | app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET); |
| | | TaoBaoGoodsBrief goods = null; |
| | | String token = null; |
| | | if (!StringUtil.isNullOrEmpty(uid)) { |
| | | // 查询是否有分享记录 |
| | | UserShareGoodsHistory shareHistory = null; |
| | | try { |
| | | shareHistory = shareGoodsService.getShareGoodsHistoryDetail(Long.parseLong(uid), id); |
| | | } catch (NumberFormatException e) { |
| | | e.printStackTrace(); |
| | | } catch (ShareGoodsException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | try { |
| | | goods = TaoKeApiUtil.searchGoodsDetail(Long.parseLong(id), app); |
| | | } catch (NumberFormatException e) { |
| | | e.printStackTrace(); |
| | | } catch (TaobaoGoodsDownException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | if (goods != null) { |
| | | String url = goods.getAuctionUrl(); |
| | | if (!StringUtil.isNullOrEmpty(goods.getCouponLink())) { |
| | | url = goods.getCouponLink(); |
| | | } |
| | | String relationId = userExtraTaoBaoInfoService.getRelationIdByUid(Long.parseLong(uid)); |
| | | if (!StringUtil.isNullOrEmpty(relationId)) |
| | | url += "&relationId=" + relationId; |
| | | token = TaoKeApiUtil.getTKToken(goods.getPictUrl(), goods.getTitle(), url); |
| | | } |
| | | } |
| | | if (shareHistory != null) {// 有分享记录 |
| | | token = shareHistory.getTkCode(); |
| | | goods = redisManager.getTaoBaoGoodsTemp(id); |
| | | if (goods == null) |
| | | try { |
| | | goods = TaoKeApiUtil.searchGoodsDetail(id); |
| | | } catch (NumberFormatException e) { |
| | | e.printStackTrace(); |
| | | } catch (TaobaoGoodsDownException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | } else { |
| | | List<TaoBaoUnionConfig> configList = taoBaoUnionConfigService |
| | | .getConfigByTypeCache(PidUser.TYPE_SHARE_GOODS); |
| | | String pid = tbPidService.getSharePid().getPid(); |
| | | TaoKeAppInfo app = new TaoKeAppInfo(); |
| | | app.setAdzoneId(pid.split("_")[3]); |
| | | app.setAppKey(configList.get(0).getAppKey()); |
| | | app.setAppSecret(configList.get(0).getAppSecret()); |
| | | app.setPid(pid); |
| | | try { |
| | | goods = TaoKeApiUtil.searchGoodsDetail(Long.parseLong(id), app); |
| | | } catch (NumberFormatException e) { |
| | | e.printStackTrace(); |
| | | } catch (TaobaoGoodsDownException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | if (goods != null) { |
| | | String url = goods.getAuctionUrl(); |
| | | if (!StringUtil.isNullOrEmpty(goods.getCouponLink())) { |
| | | url = goods.getCouponLink(); |
| | | } |
| | | if (!url.contains("uland.taobao.com") && !url.contains("s.click.taobao.com")) { |
| | | TaoBaoGoodsBrief linkInfo = TaoKeApiUtil.specialConvertCoupon(Long.parseLong(id), app,null,null); |
| | | url = linkInfo.getCouponLink(); |
| | | if (StringUtil.isNullOrEmpty(url)) |
| | | url = linkInfo.getAuctionUrl(); |
| | | } |
| | | } else {// 没有分享记录,需要直接分享 |
| | | LogHelper.test("没有分享记录:uid:" + uid + " actionid:" + id); |
| | | // 获取 |
| | | TaoKeAppInfo app = new TaoKeAppInfo(); |
| | | app.setPid(pidManager.getPidCache(acceptData.getSystem(), Constant.SOURCE_TYPE_TAOBAO, SystemPIDInfo.PidType.share)); |
| | | app.setAdzoneId(app.getPid().split("_")[3]); |
| | | app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY); |
| | | app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET); |
| | | |
| | | token = TaoKeApiUtil.getTKToken(goods.getPictUrl(), goods.getTitle(), url); |
| | | } |
| | | } |
| | | try { |
| | | goods = TaoKeApiUtil.searchGoodsDetail(id, app); |
| | | } catch (NumberFormatException e) { |
| | | e.printStackTrace(); |
| | | } catch (TaobaoGoodsDownException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | if (goods != null) { |
| | | String url = goods.getAuctionUrl(); |
| | | if (!StringUtil.isNullOrEmpty(goods.getCouponLink())) { |
| | | url = goods.getCouponLink(); |
| | | } |
| | | String relationId = userExtraTaoBaoInfoService.getRelationIdByUid(Long.parseLong(uid)); |
| | | if (!StringUtil.isNullOrEmpty(relationId)) |
| | | url += "&relationId=" + relationId; |
| | | token = TaoKeApiUtil.getTKToken(goods.getPictUrl(), goods.getTitle(), url); |
| | | } |
| | | } |
| | | |
| | | if (goods == null) { |
| | | out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("商品信息获取失败"))); |
| | | return; |
| | | } |
| | | } else { |
| | | List<TaoBaoUnionConfig> configList = taoBaoUnionConfigService |
| | | .getConfigByTypeCache(PidUser.TYPE_SHARE_GOODS); |
| | | String pid = tbPidService.getSharePid(acceptData.getSystem()).getPid(); |
| | | TaoKeAppInfo app = new TaoKeAppInfo(); |
| | | app.setAdzoneId(pid.split("_")[3]); |
| | | app.setAppKey(configList.get(0).getAppKey()); |
| | | app.setAppSecret(configList.get(0).getAppSecret()); |
| | | app.setPid(pid); |
| | | try { |
| | | goods = TaoKeApiUtil.searchGoodsDetail(id, app); |
| | | } catch (NumberFormatException e) { |
| | | e.printStackTrace(); |
| | | } catch (TaobaoGoodsDownException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | if (goods != null) { |
| | | String url = goods.getAuctionUrl(); |
| | | if (!StringUtil.isNullOrEmpty(goods.getCouponLink())) { |
| | | url = goods.getCouponLink(); |
| | | } |
| | | if (!url.contains("uland.taobao.com") && !url.contains("s.click.taobao.com")) { |
| | | TaoBaoGoodsBrief linkInfo = TaoKeApiUtil.specialConvertCouponV2(id, app, null, null); |
| | | url = linkInfo.getCouponLink(); |
| | | if (StringUtil.isNullOrEmpty(url)) |
| | | url = linkInfo.getAuctionUrl(); |
| | | } |
| | | |
| | | if (StringUtil.isNullOrEmpty(token)) { |
| | | out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("口令生成失败"))); |
| | | return; |
| | | } |
| | | token = TaoKeApiUtil.getTKToken(goods.getPictUrl(), goods.getTitle(), url); |
| | | } |
| | | } |
| | | |
| | | // 券后价 |
| | | BigDecimal afterCouponPrice = TaoBaoUtil.getAfterUseCouplePrice(goods); |
| | | TaoBaoLink link = new TaoBaoLink(); |
| | | link.setTaoToken(token); |
| | | if (goods == null) { |
| | | out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("商品信息获取失败"))); |
| | | return; |
| | | } |
| | | |
| | | JSONObject data = new JSONObject(); |
| | | data.put("title", goods.getTitle()); |
| | | if (goods.getImgList() == null) |
| | | goods.setImgList(new ArrayList<>()); |
| | | goods.getImgList().add(0, TbImgUtil.getTBSizeImg(goods.getPictUrl(), 300)); |
| | | data.put("imgs", goods.getImgList()); |
| | | data.put("couponPrice", afterCouponPrice); |
| | | // 老版本兼容 |
| | | data.put("quanPrice", afterCouponPrice); |
| | | data.put("zkPrice", goods.getZkPrice()); |
| | | data.put("shareContent", "长按复制本段文字,打开【手机淘宝】即可领取【特别优惠券】购买下单,"); |
| | | data.put("token", TaoBaoUtil.filterTaoToken(link.getTaoToken())); |
| | | data.put("reservePrice", goods.getReservePrice()); |
| | | data.put("shopType", goods.getUserType() == 1 ? 2 : 1); |
| | | if (!StringUtil.isNullOrEmpty(goods.getCouponInfo()) && !"无".equalsIgnoreCase(goods.getCouponInfo())) { |
| | | data.put("couponAmount", MoneyBigDecimalUtil.getWithNoZera(goods.getCouponAmount())); |
| | | data.put("coupon", true); |
| | | // 老版本兼容 |
| | | data.put("quan", true); |
| | | } else { |
| | | data.put("coupon", false); |
| | | // 老版本兼容 |
| | | data.put("quan", true); |
| | | } |
| | | if (StringUtil.isNullOrEmpty(token)) { |
| | | out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("口令生成失败"))); |
| | | return; |
| | | } |
| | | |
| | | out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(data))); |
| | | // 券后价 |
| | | BigDecimal afterCouponPrice = TaoBaoUtil.getCouponPrice(goods); |
| | | TaoBaoLink link = new TaoBaoLink(); |
| | | link.setTaoToken(token); |
| | | |
| | | final String tempUid = uid; |
| | | ThreadUtil.run(new Runnable() { |
| | | JSONObject data = new JSONObject(); |
| | | data.put("title", goods.getTitle()); |
| | | if (goods.getImgList() == null) |
| | | goods.setImgList(new ArrayList<>()); |
| | | goods.getImgList().add(0, TbImgUtil.getTBSizeImg(goods.getPictUrl(), 300)); |
| | | data.put("imgs", goods.getImgList()); |
| | | data.put("couponPrice", afterCouponPrice); |
| | | // 老版本兼容 |
| | | data.put("quanPrice", afterCouponPrice); |
| | | data.put("zkPrice", goods.getZkPrice()); |
| | | data.put("shareContent", "长按复制本段文字,打开【手机淘宝】即可领取【特别优惠券】购买下单,"); |
| | | data.put("token", TaoBaoUtil.filterTaoToken(link.getTaoToken())); |
| | | data.put("reservePrice", goods.getReservePrice()); |
| | | data.put("shopType", goods.getUserType() == 1 ? 2 : 1); |
| | | if (!StringUtil.isNullOrEmpty(goods.getCouponInfo()) && !"无".equalsIgnoreCase(goods.getCouponInfo())) { |
| | | data.put("couponAmount", MoneyBigDecimalUtil.getWithNoZera(goods.getCouponAmount())); |
| | | data.put("coupon", true); |
| | | // 老版本兼容 |
| | | data.put("quan", true); |
| | | } else { |
| | | data.put("coupon", false); |
| | | // 老版本兼容 |
| | | data.put("quan", true); |
| | | } |
| | | |
| | | @Override |
| | | public void run() { |
| | | try { |
| | | if (!StringUtil.isNullOrEmpty(tempUid)) |
| | | userShareGoodsGroupService.updateBrowseRecord(Long.parseLong(tempUid), Long.parseLong(id), 1); |
| | | } catch (NumberFormatException e) { |
| | | e.printStackTrace(); |
| | | } catch (UserShareGoodsRecordException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | }); |
| | | return; |
| | | } |
| | | out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(data))); |
| | | |
| | | /** |
| | | * 京东分享商品信息 |
| | | * |
| | | * @param acceptData |
| | | * @param id |
| | | * @param uid |
| | | * @param callback |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "getJDGoodsDetail") |
| | | public void getJDGoodsDetail(final AcceptData acceptData, final Long id, String uid, String callback, |
| | | PrintWriter out) { |
| | | if (id == null) { |
| | | out.print(JsonUtil.loadFalseResult(1, "请上传id")); |
| | | return; |
| | | } |
| | | final String tempUid = uid; |
| | | ThreadUtil.run(new Runnable() { |
| | | |
| | | if (!StringUtil.isNullOrEmpty(uid)) { |
| | | uid = AESUtil.decrypt(uid, Constant.UIDAESKEY); |
| | | } |
| | | @Override |
| | | public void run() { |
| | | try { |
| | | if (!StringUtil.isNullOrEmpty(tempUid)) |
| | | userShareGoodsGroupService.updateBrowseRecord(Long.parseLong(tempUid), id, 1); |
| | | } catch (NumberFormatException e) { |
| | | e.printStackTrace(); |
| | | } catch (UserShareGoodsRecordException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | }); |
| | | return; |
| | | } |
| | | |
| | | JDGoods jdGoods = JDApiUtil.queryGoodsDetail(id); |
| | | if (jdGoods == null) { |
| | | jdGoods = JDApiUtil.getGoodsDetail(id); |
| | | } |
| | | /** |
| | | * 京东分享商品信息 |
| | | * |
| | | * @param acceptData |
| | | * @param id |
| | | * @param uid |
| | | * @param callback |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "getJDGoodsDetail") |
| | | public void getJDGoodsDetail(final AcceptData acceptData, final String id, String uid, String callback, |
| | | PrintWriter out) { |
| | | if (id == null) { |
| | | out.print(JsonUtil.loadFalseResult(1, "请上传id")); |
| | | return; |
| | | } |
| | | |
| | | if (jdGoods == null) { |
| | | out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("商品信息获取失败"))); |
| | | return; |
| | | } |
| | | if (!StringUtil.isNullOrEmpty(uid)) { |
| | | uid = AESUtil.decrypt(uid, Constant.UIDAESKEY); |
| | | } |
| | | |
| | | List<String> imageList = jdGoods.getImageList(); |
| | | if (imageList == null) { |
| | | imageList = new ArrayList<>(); |
| | | imageList.add(jdGoods.getPicUrl()); |
| | | } |
| | | JDGoods jdGoods = JDApiUtil.queryGoodsDetail(id); |
| | | if (jdGoods == null) { |
| | | jdGoods = JDApiUtil.getGoodsDetail(id); |
| | | } |
| | | |
| | | boolean hasCoupon = false; |
| | | String couponUrl = null; |
| | | BigDecimal discount = new BigDecimal(0); |
| | | JDCouponInfo couponInfo = JDUtil.getShowCouponInfo(jdGoods); |
| | | if (couponInfo != null) { |
| | | hasCoupon = true; |
| | | discount = couponInfo.getDiscount(); |
| | | couponUrl = couponInfo.getLink(); |
| | | } |
| | | if (jdGoods == null) { |
| | | out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("商品信息获取失败"))); |
| | | return; |
| | | } |
| | | |
| | | boolean jdzy = false; |
| | | String owner = jdGoods.getOwner(); |
| | | if (!StringUtil.isNullOrEmpty(owner) && "g".equalsIgnoreCase(owner)) { |
| | | jdzy = true; |
| | | } |
| | | List<String> imageList = jdGoods.getImageList(); |
| | | if (imageList == null) { |
| | | imageList = new ArrayList<>(); |
| | | imageList.add(jdGoods.getPicUrl()); |
| | | } |
| | | |
| | | String materialId = "https://item.jd.com/" + id + ".html"; |
| | | String jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, null,JDApiUtil.POSITION_SHARE + "", |
| | | uid); |
| | | boolean hasCoupon = false; |
| | | String couponUrl = null; |
| | | BigDecimal discount = new BigDecimal(0); |
| | | JDCouponInfo couponInfo = JDUtil.getShowCouponInfo(jdGoods); |
| | | if (couponInfo != null) { |
| | | hasCoupon = true; |
| | | discount = couponInfo.getDiscount(); |
| | | couponUrl = couponInfo.getLink(); |
| | | } |
| | | |
| | | int priceType = 1; |
| | | BigDecimal price = jdGoods.getPrice(); |
| | | ; |
| | | JDPingouInfo pinGouInfo = jdGoods.getPinGouInfo(); |
| | | if (pinGouInfo != null) { |
| | | priceType = 2; // 拼购价 |
| | | price = pinGouInfo.getPingouPrice(); |
| | | } |
| | | boolean jdzy = false; |
| | | String owner = jdGoods.getOwner(); |
| | | if (!StringUtil.isNullOrEmpty(owner) && "g".equalsIgnoreCase(owner)) { |
| | | jdzy = true; |
| | | } |
| | | |
| | | JSONObject data = new JSONObject(); |
| | | data.put("jdzy", jdzy); |
| | | data.put("imgs", imageList); |
| | | data.put("title", jdGoods.getSkuName()); |
| | | data.put("zkPrice", price); |
| | | data.put("priceType", priceType); |
| | | data.put("coupon", hasCoupon); |
| | | data.put("couponAmount", discount); |
| | | data.put("couponPrice", JDUtil.getQuanPrice(jdGoods)); |
| | | data.put("helpLink", configService.getValue("jd_share_h5_help_link",acceptData.getSystem())); |
| | | data.put("jumpLink", jumpLink); |
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); |
| | | String materialId = "https://item.jd.com/" + id + ".html"; |
| | | String jumpLink = null; |
| | | try { |
| | | jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, null, pidManager.getPidCache(acceptData.getSystem(), Constant.SOURCE_TYPE_JD, SystemPIDInfo.PidType.share), |
| | | uid); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | final String tempUid = uid; |
| | | ThreadUtil.run(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | try { |
| | | if (!StringUtil.isNullOrEmpty(tempUid)) |
| | | userShareGoodsGroupService.updateBrowseNum(Long.parseLong(tempUid), id, |
| | | Constant.SOURCE_TYPE_JD); |
| | | } catch (NumberFormatException e) { |
| | | e.printStackTrace(); |
| | | } catch (UserShareGoodsRecordException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | }); |
| | | return; |
| | | } |
| | | int priceType = 1; |
| | | BigDecimal price = jdGoods.getPrice(); |
| | | JDPingouInfo pinGouInfo = jdGoods.getPinGouInfo(); |
| | | if (pinGouInfo != null) { |
| | | priceType = 2; // 拼购价 |
| | | price = pinGouInfo.getPingouPrice(); |
| | | } |
| | | |
| | | /** |
| | | * 拼多多分享商品详情 |
| | | * |
| | | * @param acceptData |
| | | * @param id |
| | | * @param uid |
| | | * @param callback |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "getPDDGoodsDetail") |
| | | public void getPDDGoodsDetail(final AcceptData acceptData, final Long id, String uid, String callback, |
| | | PrintWriter out) { |
| | | if (id == null) { |
| | | out.print(JsonUtil.loadFalseResult(1, "请上传id")); |
| | | return; |
| | | } |
| | | JSONObject data = new JSONObject(); |
| | | data.put("jdzy", jdzy); |
| | | data.put("imgs", imageList); |
| | | data.put("title", jdGoods.getSkuName()); |
| | | data.put("zkPrice", price); |
| | | data.put("priceType", priceType); |
| | | data.put("coupon", hasCoupon); |
| | | data.put("couponAmount", discount); |
| | | data.put("couponPrice", JDUtil.getCouponPrice(jdGoods)); |
| | | data.put("helpLink", configService.getValue("jd_share_h5_help_link", acceptData.getSystem())); |
| | | data.put("jumpLink", jumpLink); |
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); |
| | | |
| | | if (!StringUtil.isNullOrEmpty(uid)) { |
| | | uid = AESUtil.decrypt(uid, Constant.UIDAESKEY); |
| | | } |
| | | final String tempUid = uid; |
| | | ThreadUtil.run(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | try { |
| | | if (!StringUtil.isNullOrEmpty(tempUid)) |
| | | userShareGoodsGroupService.updateBrowseNum(Long.parseLong(tempUid), id+"", |
| | | Constant.SOURCE_TYPE_JD); |
| | | } catch (NumberFormatException e) { |
| | | e.printStackTrace(); |
| | | } catch (UserShareGoodsRecordException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | }); |
| | | return; |
| | | } |
| | | |
| | | PDDGoodsDetail pddGoods = PinDuoDuoApiUtil.getGoodsDetail(id); |
| | | if (pddGoods == null) { |
| | | out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("商品信息获取失败"))); |
| | | return; |
| | | } |
| | | /** |
| | | * 拼多多分享商品详情 |
| | | * |
| | | * @param acceptData |
| | | * @param id |
| | | * @param uid |
| | | * @param callback |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "getPDDGoodsDetail") |
| | | public void getPDDGoodsDetail(final AcceptData acceptData, final String id, String uid, String callback, |
| | | PrintWriter out) { |
| | | if (id == null) { |
| | | out.print(JsonUtil.loadFalseResult(1, "请上传id")); |
| | | return; |
| | | } |
| | | |
| | | List<String> imageList = null; |
| | | String[] goodsGalleryUrls = pddGoods.getGoodsGalleryUrls(); |
| | | if (goodsGalleryUrls != null) { |
| | | imageList = Arrays.asList(goodsGalleryUrls); |
| | | } |
| | | if (imageList == null) { |
| | | imageList = new ArrayList<>(); |
| | | String goodsImageUrl = pddGoods.getGoodsImageUrl(); |
| | | if (!StringUtil.isNullOrEmpty(goodsImageUrl)) { |
| | | imageList.add(goodsImageUrl); |
| | | } |
| | | } |
| | | if (!StringUtil.isNullOrEmpty(uid)) { |
| | | uid = AESUtil.decrypt(uid, Constant.UIDAESKEY); |
| | | } |
| | | |
| | | BigDecimal hundred = new BigDecimal(100); |
| | | Boolean hasCoupon = pddGoods.getHasCoupon(); |
| | | BigDecimal amount = new BigDecimal(0); |
| | | if (hasCoupon != null && hasCoupon) { |
| | | amount = MoneyBigDecimalUtil.div(new BigDecimal(pddGoods.getCouponDiscount()), hundred).setScale(2); |
| | | } else { |
| | | hasCoupon = false; |
| | | } |
| | | PDDGoodsDetail pddGoods = PinDuoDuoApiUtil.getGoodsDetail(id); |
| | | if (pddGoods == null) { |
| | | out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("商品信息获取失败"))); |
| | | return; |
| | | } |
| | | |
| | | String jumpLink = PinDuoDuoApiUtil.getPromotionUrl(id, PinDuoDuoApiUtil.PID_SHARE + "", uid); |
| | | List<String> imageList = null; |
| | | String[] goodsGalleryUrls = pddGoods.getGoodsGalleryUrls(); |
| | | if (goodsGalleryUrls != null) { |
| | | imageList = Arrays.asList(goodsGalleryUrls); |
| | | } |
| | | if (imageList == null) { |
| | | imageList = new ArrayList<>(); |
| | | String goodsImageUrl = pddGoods.getGoodsImageUrl(); |
| | | if (!StringUtil.isNullOrEmpty(goodsImageUrl)) { |
| | | imageList.add(goodsImageUrl); |
| | | } |
| | | } |
| | | |
| | | JSONObject data = new JSONObject(); |
| | | data.put("imgs", imageList); |
| | | data.put("title", pddGoods.getGoodsName()); |
| | | data.put("zkPrice", MoneyBigDecimalUtil.div(new BigDecimal(pddGoods.getMinGroupPrice()), hundred).setScale(2)); |
| | | data.put("coupon", hasCoupon); |
| | | data.put("couponAmount", amount); |
| | | data.put("couponPrice", PinDuoDuoUtil.getQuanPrice(pddGoods)); |
| | | data.put("helpLink", configService.getValue("pdd_share_h5_help_link",acceptData.getSystem())); |
| | | data.put("jumpLink", jumpLink); |
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); |
| | | BigDecimal hundred = new BigDecimal(100); |
| | | Boolean hasCoupon = pddGoods.getHasCoupon(); |
| | | BigDecimal amount = new BigDecimal(0); |
| | | if (hasCoupon != null && hasCoupon) { |
| | | amount = MoneyBigDecimalUtil.div(new BigDecimal(pddGoods.getCouponDiscount()), hundred).setScale(2); |
| | | } else { |
| | | hasCoupon = false; |
| | | } |
| | | |
| | | final String tempUid = uid; |
| | | ThreadUtil.run(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | try { |
| | | if (!StringUtil.isNullOrEmpty(tempUid)) |
| | | userShareGoodsGroupService.updateBrowseNum(Long.parseLong(tempUid), id, |
| | | Constant.SOURCE_TYPE_PDD); |
| | | } catch (NumberFormatException e) { |
| | | e.printStackTrace(); |
| | | } catch (UserShareGoodsRecordException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | }); |
| | | return; |
| | | } |
| | | String jumpLink = PinDuoDuoApiUtil.getPromotionUrl(pddGoods.getGoodsSign(), pidManager.getPidCache(acceptData.getSystem(), Constant.SOURCE_TYPE_PDD, SystemPIDInfo.PidType.share), uid); |
| | | |
| | | JSONObject data = new JSONObject(); |
| | | data.put("imgs", imageList); |
| | | data.put("title", pddGoods.getGoodsName()); |
| | | data.put("zkPrice", MoneyBigDecimalUtil.div(new BigDecimal(pddGoods.getMinGroupPrice()), hundred).setScale(2)); |
| | | data.put("coupon", hasCoupon); |
| | | data.put("couponAmount", amount); |
| | | data.put("couponPrice", PinDuoDuoUtil.getCouponPrice(pddGoods)); |
| | | data.put("helpLink", configService.getValue("pdd_share_h5_help_link", acceptData.getSystem())); |
| | | data.put("jumpLink", jumpLink); |
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); |
| | | |
| | | final String tempUid = uid; |
| | | ThreadUtil.run(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | try { |
| | | if (!StringUtil.isNullOrEmpty(tempUid)) |
| | | userShareGoodsGroupService.updateBrowseNum(Long.parseLong(tempUid), id+"", |
| | | Constant.SOURCE_TYPE_PDD); |
| | | } catch (NumberFormatException e) { |
| | | e.printStackTrace(); |
| | | } catch (UserShareGoodsRecordException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | }); |
| | | return; |
| | | } |
| | | } |