| | |
| | | package com.ks.lijin.utils.taobao; |
| | | |
| | | |
| | | import com.ks.lijin.exception.LiJinException; |
| | | import com.ks.lijin.exception.TaoKeApiException; |
| | | import com.ks.lijin.pojo.DTO.taobao.TaoKeAppInfo; |
| | | import com.ks.lijin.pojo.DTO.taobao.TaoLiJinDTO; |
| | | import com.google.gson.Gson; |
| | | import com.ks.lijin.exception.*; |
| | | import com.ks.lijin.pojo.DTO.taobao.*; |
| | | import com.ks.lijin.pojo.PageEntity; |
| | | import com.taobao.api.internal.util.StringUtils; |
| | | import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief; |
| | | import com.yeshi.goods.facade.entity.taobao.TaoBaoHead; |
| | | import net.sf.json.JSONArray; |
| | | import net.sf.json.JSONObject; |
| | | import org.apache.commons.httpclient.HttpClient; |
| | | import org.apache.commons.httpclient.methods.GetMethod; |
| | | import org.apache.commons.httpclient.params.HttpConnectionManagerParams; |
| | | import org.yeshi.utils.*; |
| | | import org.yeshi.utils.taobao.TbImgUtil; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.net.URLEncoder; |
| | |
| | | private static Map<String, Integer> invalidMap = new HashMap<>(); |
| | | |
| | | // 淘礼金创建 |
| | | public static TaoLiJinDTO createTaoLiJin(Long auctionId, String name, BigDecimal perface, int totalNum, |
| | | public static TaoLiJinDTO createTaoLiJin(String auctionId, String name, BigDecimal perface, int totalNum, |
| | | Date sendStartTime, Date sendEndTime, Date useStartTime, Date useEndTime, TaoKeAppInfo app) |
| | | throws LiJinException, TaoKeApiException { |
| | | |
| | | throws LiJinAccountException, LiJinAmountException, LiJinException, LiJinGoodsException { |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("method", "taobao.tbk.dg.vegas.tlj.create"); |
| | | map.put("adzone_id", app.getPid().split("_")[3]); |
| | |
| | | |
| | | // 接口返回异常 |
| | | String msgCode = root.optJSONObject("result").optString("msg_code"); |
| | | String msgInfo = root.optJSONObject("result").optString("msg_info"); |
| | | if (!StringUtil.isNullOrEmpty(msgCode)) { |
| | | // TLJLogHelper.info(auctionId, root.toString());// 淘礼金异常信息记录 TODO |
| | | switch (msgCode) { |
| | | case "FAIL_BIZ_ITEM_FORBIDDEN": |
| | | throw new LiJinException(LiJinException.CODE_TLJ_FORBIDDEN, "该商品不支持创建淘礼金红包"); |
| | | throw new LiJinGoodsException(LiJinGoodsException.CODE_GOODS_NOT_SUPPORT, "该商品不支持创建淘礼金红包"); |
| | | case "FAIL_BIZ_ACCOUNT_UN_PAID": |
| | | throw new LiJinException(LiJinException.CODE_TLJ_UN_PAID, "您的淘礼金账户暂未创建,请前往资金管理页面充值"); |
| | | throw new LiJinAccountException(LiJinAccountException.CODE_TLJ_UN_PAID, "您的淘礼金账户暂未创建,请前往资金管理页面充值"); |
| | | case "PRE_FREEZE_ASSET_ACCOUNT_ERROR": |
| | | throw new LiJinException(LiJinException.CODE_TLJ_NO_MONEY, "官方玩法钱包余额不足"); |
| | | throw new LiJinAccountException(LiJinAccountException.CODE_TLJ_NO_MONEY, "官方玩法钱包余额不足"); |
| | | case "ASSET_ACCOUNT_BALANCE_NOT_ENOUGH": |
| | | throw new LiJinAccountException(LiJinAccountException.CODE_TLJ_NO_MONEY, "账户预算不足"); |
| | | case "FAIL_CHECK_MEMBER_DAILY_SEND_ITEM_ABOVE_LIMIT_ERROR": |
| | | throw new LiJinAccountException(LiJinAccountException.CODE_TLJ_NO_GOODS, "今日商品创建数已超上限,请您明日再试"); |
| | | case "DAILY_DRAW_ITEM_ABOVE_LIMIT": |
| | | case "FAIL_CHECK_ITEM_DAILY_SEND_NUM_CHECK_ERROR": |
| | | throw new LiJinGoodsException(LiJinGoodsException.CODE_GOODS_CREATED_FULL, "今日该商品淘礼金创建数已超上限,请您明日再试"); |
| | | |
| | | case "FAIL_CHECK_TLJ_MIN_FACE_ERROR": |
| | | throw new LiJinAmountException(LiJinAmountException.CODE_LIJIN_AMOUNT_OUTOFRANGE, msgInfo); |
| | | default: |
| | | throw new TaoKeApiException(Integer.parseInt(msgCode), root.toString()); |
| | | throw new LiJinException(1, root.toString()); |
| | | } |
| | | } |
| | | } |
| | | } catch (LiJinException e) { |
| | | throw e; |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 淘礼金报告 |
| | | * |
| | | * @param rightsId |
| | | * @param app |
| | | * @return |
| | | * @throws LiJinAccountException |
| | | * @throws LiJinAmountException |
| | | * @throws LiJinException |
| | | * @throws LiJinGoodsException |
| | | */ |
| | | public static TaoLiJinReportDTO taolijinReport(String rightsId, TaoKeAppInfo app) { |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("method", "taobao.tbk.dg.vegas.tlj.report"); |
| | | map.put("adzone_id", app.getPid().split("_")[3]); |
| | | map.put("rights_id", rightsId); |
| | | |
| | | String result = baseRequestForThreeTimes(map, app); |
| | | JSONObject json = JSONObject.fromObject(result); |
| | | System.out.println(json); |
| | | JSONObject root = json.optJSONObject("tbk_dg_vegas_tlj_report_response"); |
| | | |
| | | if (root != null && root.optBoolean("result_success")) { |
| | | JSONObject modelJson = root.optJSONObject("model").optJSONObject("extra"); |
| | | if (modelJson != null && modelJson.size() > 0) { |
| | | TaoLiJinReportDTO report = new TaoLiJinReportDTO(); |
| | | report.setWin_amount(new BigDecimal(modelJson.optString("win_sum_amt"))); |
| | | report.setWin_num(modelJson.optInt("win_pv")); |
| | | report.setRefund_amount(new BigDecimal(modelJson.optString("refund_sum_amt"))); |
| | | report.setRefund_num(modelJson.optInt("refund_num")); |
| | | report.setAlipay_amount(new BigDecimal(modelJson.optString("alipay_amt"))); |
| | | report.setUse_amount(new BigDecimal(modelJson.optString("use_sum_amt"))); |
| | | report.setUse_num(modelJson.optInt("use_num")); |
| | | report.setUnfreeze_amount(new BigDecimal(modelJson.optString("remaining_amt"))); |
| | | report.setUnfreeze_num(modelJson.optInt("remaining_num")); |
| | | report.setPre_commission_amount(new BigDecimal(modelJson.optString("pre_pub_share_fee_for_disp"))); |
| | | return report; |
| | | } |
| | | } |
| | | // if (root != null && root.optJSONObject("result") != null) { |
| | | // if (root.optJSONObject("result").optBoolean("success")) { |
| | | // JSONObject modelJson = root.optJSONObject("result").optJSONObject("model"); |
| | | // TaoLiJinReportDTO dto = new Gson().fromJson(modelJson.toString(), TaoLiJinReportDTO.class); |
| | | // return dto; |
| | | // } else { |
| | | // // 日志记录 TODO |
| | | // } |
| | | // } |
| | | |
| | | |
| | | return null; |
| | | } |
| | | |
| | | |
| | | // 裂淘礼金创建 |
| | | public static TaoLiJinDTO createLieBianTaoLiJin(String auctionId, String name, BigDecimal perface, int totalNum, |
| | | Date sendStartTime, Date sendEndTime, Date useStartTime, Date useEndTime, TaoKeAppInfo app) |
| | | throws LiJinAccountException, LiJinAmountException, LiJinException, LiJinGoodsException { |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("method", "taobao.tbk.dg.vegas.lbtlj.create"); |
| | | map.put("adzone_id", app.getPid().split("_")[3]); |
| | | map.put("item_id", auctionId + ""); |
| | | //淘礼金总个数 |
| | | map.put("rights_num", totalNum + ""); |
| | | //裂变淘礼金总个数 |
| | | map.put("task_rights_num", totalNum + ""); |
| | | //裂变单个淘礼金面额,支持两位小数,单位元 |
| | | map.put("task_rights_per_face", "1.01"); |
| | | //裂变淘礼金邀请人数 |
| | | map.put("invite_num", "2"); |
| | | //裂变淘礼金邀请时长;单位:分钟;最大120分钟 |
| | | map.put("invite_time_limit", "60"); |
| | | |
| | | |
| | | map.put("name", name); |
| | | map.put("user_total_win_num_limit", "1"); |
| | | map.put("security_switch", "false"); |
| | | map.put("rights_per_face", perface.toString()); |
| | | map.put("send_start_time", TimeUtil.getGernalTime(sendStartTime.getTime(), "yyyy-MM-dd HH:mm:ss")); |
| | | |
| | | if (sendEndTime != null) |
| | | map.put("send_end_time", TimeUtil.getGernalTime(sendEndTime.getTime(), "yyyy-MM-dd HH:mm:ss")); |
| | | |
| | | if (useEndTime != null) { |
| | | map.put("use_end_time", TimeUtil.getGernalTime(useEndTime.getTime(), "yyyy-MM-dd")); |
| | | map.put("use_end_time_mode", "2"); |
| | | } |
| | | |
| | | map.put("accept_start_time", TimeUtil.getGernalTime(sendStartTime.getTime(), "yyyy-MM-dd HH:mm:ss")); |
| | | map.put("accept_end_time", TimeUtil.getGernalTime(sendEndTime.getTime(), "yyyy-MM-dd HH:mm:ss")); |
| | | |
| | | |
| | | if (useStartTime != null) |
| | | map.put("use_start_time", TimeUtil.getGernalTime(useStartTime.getTime(), "yyyy-MM-dd")); |
| | | try { |
| | | String result = baseRequestForThreeTimes(map, app); |
| | | JSONObject json = JSONObject.fromObject(result); |
| | | System.out.println(result); |
| | | JSONObject root = json.optJSONObject("tbk_dg_vegas_tlj_create_response"); |
| | | if (root != null && root.optJSONObject("result") != null) { |
| | | |
| | | if (root.optJSONObject("result").optBoolean("success")) { |
| | | JSONObject modelJson = root.optJSONObject("result").optJSONObject("model"); |
| | | TaoLiJinDTO dto = new TaoLiJinDTO(); |
| | | dto.setRightsId(modelJson.optString("rights_id")); |
| | | dto.setSendUrl(modelJson.optString("send_url")); |
| | | return dto; |
| | | } else { |
| | | // 日志记录 TODO |
| | | } |
| | | |
| | | // 接口返回异常 |
| | | String msgCode = root.optJSONObject("result").optString("msg_code"); |
| | | String msgInfo = root.optJSONObject("result").optString("msg_info"); |
| | | if (!StringUtil.isNullOrEmpty(msgCode)) { |
| | | // TLJLogHelper.info(auctionId, root.toString());// 淘礼金异常信息记录 TODO |
| | | switch (msgCode) { |
| | | case "FAIL_BIZ_ITEM_FORBIDDEN": |
| | | throw new LiJinGoodsException(LiJinGoodsException.CODE_GOODS_NOT_SUPPORT, "该商品不支持创建淘礼金红包"); |
| | | case "FAIL_BIZ_ACCOUNT_UN_PAID": |
| | | throw new LiJinAccountException(LiJinAccountException.CODE_TLJ_UN_PAID, "您的淘礼金账户暂未创建,请前往资金管理页面充值"); |
| | | case "PRE_FREEZE_ASSET_ACCOUNT_ERROR": |
| | | throw new LiJinAccountException(LiJinAccountException.CODE_TLJ_NO_MONEY, "官方玩法钱包余额不足"); |
| | | case "ASSET_ACCOUNT_BALANCE_NOT_ENOUGH": |
| | | throw new LiJinAccountException(LiJinAccountException.CODE_TLJ_NO_MONEY, "账户预算不足"); |
| | | case "FAIL_CHECK_MEMBER_DAILY_SEND_ITEM_ABOVE_LIMIT_ERROR": |
| | | throw new LiJinAccountException(LiJinAccountException.CODE_TLJ_NO_GOODS, "今日商品创建数已超上限,请您明日再试"); |
| | | case "DAILY_DRAW_ITEM_ABOVE_LIMIT": |
| | | case "FAIL_CHECK_ITEM_DAILY_SEND_NUM_CHECK_ERROR": |
| | | throw new LiJinGoodsException(LiJinGoodsException.CODE_GOODS_CREATED_FULL, "今日该商品淘礼金创建数已超上限,请您明日再试"); |
| | | |
| | | case "FAIL_CHECK_TLJ_MIN_FACE_ERROR": |
| | | throw new LiJinAmountException(LiJinAmountException.CODE_LIJIN_AMOUNT_OUTOFRANGE, msgInfo); |
| | | default: |
| | | throw new LiJinException(1, root.toString()); |
| | | } |
| | | } |
| | | } |
| | |
| | | params.put("v", "2.0"); |
| | | params.put("timestamp", TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss")); |
| | | params.put("format", "json"); |
| | | if (!StringUtil.isNullOrEmpty(app.getAdzoneId())) |
| | | if (!StringUtil.isNullOrEmpty(app.getAdzoneId())) { |
| | | params.put("adzone_id", app.getAdzoneId()); |
| | | } |
| | | params.put("sign", getSign(params, "md5", app).toUpperCase()); |
| | | String result = taoKeGet(params); |
| | | JSONObject data = JSONObject.fromObject(result); |
| | |
| | | String key = keys.next(); |
| | | url += String.format("%s=%s&", key, URLEncoder.encode(params.get(key), "UTF-8")); |
| | | } |
| | | System.out.println("淘客请求连接:" + url); |
| | | GetMethod method = new GetMethod(url); |
| | | // 3S的响应超时 |
| | | HttpConnectionManagerParams hparams = new HttpConnectionManagerParams(); |
| | | hparams.setConnectionTimeout(3000); |
| | | client.getHttpConnectionManager().setParams(hparams); |
| | | client.executeMethod(method); |
| | | String result = method.getResponseBodyAsString(); |
| | | System.out.println(result); |
| | | return method.getResponseBodyAsString(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return ""; |
| | | } |
| | | |
| | | |
| | | public static TaoBaoGoodsBrief searchGoodsDetail(String id) throws TaoBaoGoodsDownException { |
| | | return searchGoodsDetail(id, null, null); |
| | | } |
| | | |
| | | /** |
| | | * 搜索商品详情-详细 |
| | | * |
| | | * @param id |
| | | * @return |
| | | * @throws |
| | | */ |
| | | public static TaoBaoGoodsBrief searchGoodsDetail(String id, String specialId, String relationId) throws TaoBaoGoodsDownException { |
| | | TaoBaoGoodsBrief goods = getSimpleGoodsInfo(id); |
| | | if (goods == null) |
| | | return null; |
| | | SearchFilter filter = new SearchFilter(); |
| | | filter.setKey(goods.getTitle()); |
| | | filter.setPage(1); |
| | | filter.setPageSize(50); |
| | | TaoBaoSearchResult result = searchWuLiaoForDetail(goods.getTitle(), goods.getZkPrice(), goods.getProvcity(), |
| | | goods.getUserType(), specialId, relationId); |
| | | if (result != null && result.getTaoBaoGoodsBriefs() != null) |
| | | for (TaoBaoGoodsBrief g : result.getTaoBaoGoodsBriefs()) { |
| | | System.out.println(goods.getAuctionId() + ":" + g.getAuctionId()); |
| | | if (TaoBaoUtil.isEqual(goods.getAuctionId(), g.getAuctionId())) { |
| | | //g.setId(goods.getAuctionId()); |
| | | g.setCreatetime(new Date()); |
| | | g.setMaterialLibType(goods.getMaterialLibType()); |
| | | g.setProvcity(goods.getProvcity()); |
| | | return g; |
| | | } |
| | | } |
| | | goods.setCouponAmount(new BigDecimal("0")); |
| | | goods.setTkMktStatus("1"); |
| | | goods.setTkRate(new BigDecimal("0")); |
| | | goods.setReservePrice(new BigDecimal(0)); |
| | | goods.setTkCommFee(new BigDecimal(0)); |
| | | return goods; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取商品详情,简版 |
| | | * |
| | | * @param id -商品AuctionId |
| | | * @return |
| | | */ |
| | | public static TaoBaoGoodsBrief getSimpleGoodsInfo(String id) throws TaoBaoGoodsDownException { |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("method", "taobao.tbk.item.info.get"); |
| | | map.put("num_iids", id + ""); |
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true); |
| | | System.out.println(resultStr); |
| | | JSONObject data = JSONObject.fromObject(resultStr); |
| | | // 商品下架 |
| | | if (data.optJSONObject("error_response") != null && data.optJSONObject("error_response").optInt("code") == 15 |
| | | && data.optJSONObject("error_response").optInt("sub_code") == 50001) { |
| | | throw new TaoBaoGoodsDownException(data.optJSONObject("error_response").optInt("code"), "商品下架"); |
| | | } |
| | | |
| | | if (data.optJSONObject("tbk_item_info_get_response") == null) |
| | | return null; |
| | | JSONArray array = data.optJSONObject("tbk_item_info_get_response").optJSONObject("results") |
| | | .optJSONArray("n_tbk_item"); |
| | | if (array != null && array.size() > 0) { |
| | | JSONObject item = array.optJSONObject(0); |
| | | return parseSimpleGoodsInfo(item); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | private static TaoBaoGoodsBrief parseSimpleGoodsInfo(JSONObject item) { |
| | | TaoBaoGoodsBrief goods = new TaoBaoGoodsBrief(); |
| | | goods.setAuctionId(item.optString("num_iid")); |
| | | goods.setAuctionUrl(item.optString("item_url")); |
| | | goods.setBiz30day(item.optInt("volume")); |
| | | if (item.optJSONObject("small_images") != null) { |
| | | JSONArray imgArray = item.optJSONObject("small_images").optJSONArray("string"); |
| | | if (imgArray != null) { |
| | | List<String> imgList = new ArrayList<>(); |
| | | for (int n = 0; n < imgArray.size(); n++) { |
| | | imgList.add(imgArray.optString(n)); |
| | | } |
| | | goods.setImgList(imgList); |
| | | } |
| | | } |
| | | goods.setTitle(item.optString("title")); |
| | | goods.setUserType(item.optInt("user_type")); |
| | | goods.setZkPrice(new BigDecimal(item.optString("zk_final_price"))); |
| | | goods.setReservePrice(new BigDecimal(item.optString("zk_final_price"))); |
| | | goods.setAuctionUrl(item.optString("item_url")); |
| | | goods.setProvcity(item.optString("provcity")); |
| | | goods.setPictUrl(item.optString("pict_url")); |
| | | goods.setShopTitle(item.optString("nick")); |
| | | goods.setSellerId(item.optLong("seller_id")); |
| | | goods.setRootCategoryName(item.optString("cat_name")); |
| | | goods.setLeafName(item.optString("cat_leaf_name")); |
| | | |
| | | String optString = item.optString("shop_dsr"); |
| | | if (!StringUtil.isNullOrEmpty(optString)) { |
| | | goods.setShopDsr(new Integer(optString)); |
| | | } |
| | | |
| | | String ratesum = item.optString("ratesum"); |
| | | if (!StringUtil.isNullOrEmpty(ratesum)) { |
| | | goods.setRatesum(new Integer(ratesum)); |
| | | } |
| | | |
| | | if (item.optBoolean("is_prepay")) |
| | | goods.setIsPrepay(1); |
| | | |
| | | if (item.optBoolean("i_rfd_rate")) |
| | | goods.setRfdRate(1); |
| | | |
| | | if (item.optBoolean("h_good_rate")) |
| | | goods.setGoodRate(1); |
| | | |
| | | if (item.optBoolean("h_pay_rate30")) |
| | | goods.setPayRate30(1); |
| | | |
| | | if (item.optBoolean("free_shipment")) |
| | | goods.setFreeShipment(1); |
| | | |
| | | if (!StringUtil.isNullOrEmpty(item.optString("material_lib_type"))) { |
| | | try { |
| | | String materialLibType = item.optString("material_lib_type"); |
| | | goods.setMaterialLibType(Integer.parseInt(materialLibType.split(",")[0])); |
| | | } catch (Exception e) { |
| | | goods.setMaterialLibType(0); |
| | | } |
| | | |
| | | } else |
| | | goods.setMaterialLibType(0); |
| | | |
| | | goods.setRootCategoryName(item.optString("cat_name")); |
| | | goods.setLeafName(item.optString("cat_leaf_name")); |
| | | |
| | | goods = loadYuShouInfo(goods, item); |
| | | return goods; |
| | | } |
| | | |
| | | private static TaoBaoGoodsBrief loadYuShouInfo(TaoBaoGoodsBrief goods, JSONObject item) { |
| | | if (goods != null && item != null) { |
| | | // 预售相关解析 |
| | | goods.setYsylClickUrl(item.optString("ysyl_click_url")); |
| | | if (!StringUtil.isNullOrEmpty(item.optString("ysyl_commission_rate"))) |
| | | goods.setYsylCommissionRate(new BigDecimal(item.optString("ysyl_commission_rate"))); |
| | | goods.setYsylTljFace(item.optString("ysyl_tlj_face")); |
| | | goods.setYsylTljSendTime(item.optString("ysyl_tlj_send_time")); |
| | | goods.setYsylTljUseEndTime(item.optString("ysyl_tlj_use_end_time")); |
| | | goods.setYsylTljUseStartTime(item.optString("ysyl_tlj_use_start_time")); |
| | | |
| | | goods.setPresaleDeposit(item.optString("presale_deposit")); |
| | | goods.setPresaleDiscountFeeText(item.optString("presale_discount_fee_text")); |
| | | goods.setPresaleEndTime(item.optString("presale_end_time")); |
| | | goods.setPresaleStartTime(item.optString("presale_start_time")); |
| | | goods.setPresaleTailEndTime(item.optString("presale_tail_end_time")); |
| | | goods.setPresaleTailStartTime(item.optString("presale_tail_start_time")); |
| | | |
| | | return goods; |
| | | } |
| | | return goods; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 商品物料搜索 |
| | | * |
| | | * @param title |
| | | * @param zkPrice |
| | | * @param provcity |
| | | * @param userType |
| | | * @param specialId |
| | | * @param relationId |
| | | * @return |
| | | */ |
| | | public static TaoBaoSearchResult searchWuLiaoForDetail(String title, BigDecimal zkPrice, String provcity, |
| | | int userType, String specialId, String relationId) { |
| | | if (provcity.trim().contains(" ")) |
| | | provcity = provcity.split(" ")[provcity.split(" ").length - 1]; |
| | | TaoBaoSearchResult taoBaoSearchResult = new TaoBaoSearchResult(); |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("method", "taobao.tbk.dg.material.optional"); |
| | | map.put("page_size", 50 + ""); |
| | | map.put("page_no", 1 + ""); |
| | | map.put("start_price", (int) zkPrice.subtract(new BigDecimal(1)).doubleValue() + ""); |
| | | map.put("end_price", (int) zkPrice.add(new BigDecimal(1)).doubleValue() + ""); |
| | | map.put("is_tmall", (userType == 1) + ""); |
| | | map.put("q", title); |
| | | map.put("itemloc", provcity); |
| | | |
| | | if (!StringUtil.isNullOrEmpty(specialId) && !StringUtil.isNullOrEmpty(relationId)) { |
| | | map.put("special_id", specialId); |
| | | } else if (!StringUtil.isNullOrEmpty(specialId)) { |
| | | map.put("special_id", specialId); |
| | | } else if (!StringUtil.isNullOrEmpty(relationId)) { |
| | | map.put("relation_id", relationId); |
| | | } |
| | | |
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true); |
| | | System.out.println(resultStr); |
| | | JSONObject data = JSONObject.fromObject(resultStr); |
| | | if (data.optJSONObject("tbk_dg_material_optional_response") != null |
| | | && data.optJSONObject("tbk_dg_material_optional_response").optJSONObject("result_list") != null) { |
| | | JSONArray array = data.optJSONObject("tbk_dg_material_optional_response").optJSONObject("result_list") |
| | | .optJSONArray("map_data"); |
| | | List<TaoBaoGoodsBrief> goodsList = new ArrayList<>(); |
| | | if (array != null) { |
| | | for (int i = 0; i < array.size(); i++) { |
| | | TaoBaoGoodsBrief goods = parseWuLiaoItem(array.optJSONObject(i)); |
| | | if (goods != null) |
| | | goodsList.add(goods); |
| | | } |
| | | } |
| | | taoBaoSearchResult.setTaoBaoGoodsBriefs(goodsList); |
| | | } |
| | | |
| | | List<TaoBaoSearchNav> navList = new ArrayList<>(); |
| | | |
| | | TaoBaoHead taoBaoHead = new TaoBaoHead(); |
| | | taoBaoHead.setDocsfound(1000); |
| | | taoBaoSearchResult.setTaoBaoHead(taoBaoHead); |
| | | taoBaoSearchResult.setPageEntity(new PageEntity()); |
| | | |
| | | taoBaoSearchResult.setNavList(navList); |
| | | |
| | | return taoBaoSearchResult; |
| | | } |
| | | |
| | | |
| | | // 解析物料 |
| | | private static TaoBaoGoodsBrief parseWuLiaoItem(JSONObject item) { |
| | | TaoBaoGoodsBrief goods = new TaoBaoGoodsBrief(); |
| | | goods.setPictUrl(item.optString("pict_url")); |
| | | |
| | | if (!StringUtil.isNullOrEmpty(item.optString("white_image"))) { |
| | | goods.setPictUrlWhite(item.optString("white_image")); |
| | | } |
| | | |
| | | goods.setAuctionId(item.optString("num_iid")); |
| | | goods.setAuctionUrl("https:" + item.optString("url")); |
| | | goods.setBiz30day(item.optInt("volume")); |
| | | goods.setCouponInfo(item.optString("coupon_info")); |
| | | |
| | | if (goods.getCouponInfo() != null) |
| | | goods.setCouponInfo(goods.getCouponInfo().replace(".00", "")); |
| | | |
| | | if (!StringUtil.isNullOrEmpty(goods.getCouponInfo())) { |
| | | List<BigDecimal> quanInfo = TaoBaoCouponUtil.getCouponInfo(goods.getCouponInfo()); |
| | | goods.setCouponAmount(quanInfo.get(1)); |
| | | goods.setCouponEffectiveEndTime(item.optString("coupon_end_time")); |
| | | goods.setCouponEffectiveStartTime(item.optString("coupon_start_time")); |
| | | goods.setCouponStartFee(new BigDecimal(item.optString("coupon_start_fee"))); |
| | | goods.setCouponLeftCount(item.optInt("coupon_remain_count")); |
| | | goods.setCouponLink("https:" + item.optString("coupon_share_url")); |
| | | goods.setCouponTotalCount(item.optInt("coupon_total_count")); |
| | | goods.setCouponActivityId(item.optString("coupon_id")); |
| | | } else { |
| | | goods.setCouponAmount(new BigDecimal(0)); |
| | | } |
| | | |
| | | goods.setDayLeft(-1); |
| | | if (item.optJSONObject("small_images") != null) { |
| | | JSONArray imgArray = item.optJSONObject("small_images").optJSONArray("string"); |
| | | if (imgArray != null) { |
| | | List<String> imgList = new ArrayList<>(); |
| | | for (int n = 0; n < imgArray.size(); n++) { |
| | | imgList.add(imgArray.optString(n)); |
| | | } |
| | | goods.setImgList(imgList); |
| | | } |
| | | } |
| | | |
| | | if (item.optBoolean("include_mkt")) |
| | | goods.setTkMktStatus("1"); |
| | | else |
| | | goods.setTkMktStatus("0"); |
| | | |
| | | if (item.optBoolean("include_dxjh")) |
| | | goods.setIncludeDxjh(1); |
| | | |
| | | goods.setSellerId(item.optLong("seller_id")); |
| | | goods.setShopTitle(item.optString("shop_title")); |
| | | goods.setTitle(item.optString("title")); |
| | | goods.setProvcity(item.optString("provcity")); |
| | | |
| | | if (!StringUtil.isNullOrEmpty(item.optString("level_one_category_id"))) { |
| | | goods.setRootCatId(item.optInt("level_one_category_id")); |
| | | } |
| | | goods.setRootCategoryName(item.optString("level_one_category_name")); |
| | | |
| | | if (!StringUtil.isNullOrEmpty(item.optString("category_id"))) { |
| | | goods.setLeafCatId(item.optInt("category_id")); |
| | | } |
| | | goods.setLeafName(item.optString("category_name")); |
| | | |
| | | goods.setTkRate(new BigDecimal(item.optString("commission_rate")).divide(new BigDecimal(100))); |
| | | goods.setTotalNum(1000); |
| | | goods.setUserType(item.optInt("user_type")); |
| | | goods.setUserTypeName(""); |
| | | goods.setZkPrice(new BigDecimal(item.optString("zk_final_price"))); |
| | | |
| | | if (item.optBoolean("include_dxjh")) { |
| | | goods.setDxjhInfo(item.optString("info_dxjh")); |
| | | } |
| | | |
| | | if (StringUtil.isNullOrEmpty(goods.getCouponInfo())) {// 无券 |
| | | goods.setTkCommFee(goods.getZkPrice().multiply(goods.getTkRate()).divide(new BigDecimal(100))); |
| | | } else if (goods.getZkPrice().compareTo(goods.getCouponStartFee()) >= 0// 有券 |
| | | && goods.getZkPrice().compareTo(goods.getCouponAmount()) >= 0) { |
| | | BigDecimal finalPrice = goods.getZkPrice().subtract(goods.getCouponAmount()); |
| | | goods.setTkCommFee(finalPrice.multiply(goods.getTkRate()).divide(new BigDecimal(100))); |
| | | } else { |
| | | goods.setTkCommFee(new BigDecimal(0)); |
| | | } |
| | | if (!StringUtil.isNullOrEmpty(item.optString("reserve_price"))) |
| | | goods.setReservePrice(new BigDecimal(item.optString("reserve_price"))); |
| | | goods.setTotalFee(new BigDecimal("0")); |
| | | // 推荐语 |
| | | goods.setDescription(item.optString("item_description")); |
| | | |
| | | goods = loadYuShouInfo(goods, item); |
| | | return goods; |
| | | } |
| | | |
| | | public static Date getTaoBaoSystemTime() { |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("method", "taobao.time.get"); |
| | | try { |
| | | JSONObject json = TaoKeBaseUtil.baseRequest(map, false); |
| | | String time = json.optJSONObject("time_get_response").optString("time"); |
| | | return new Date(TimeUtil.convertToTimeTemp(time, "yyyy-MM-dd HH:mm:ss")); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | public static void main(String[] args) { |
| | | // TaoLiJinReportDTO dto = taolijinReport("eC2%2FoV8gigdzVO5CvuRDjDVC0SEP1L7d", new TaoKeAppInfo("27743325", "527a23554f71557d7b786bc479fcd5fe")); |
| | | // System.out.println(dto); |
| | | TaoKeAppInfo app = new TaoKeAppInfo("24980167", "e0a2e05deabf5ce039b52e5b492d5382", "mm_124933865_56750082_19511350325"); |
| | | |
| | | Long auctionId = 648785782467L; |
| | | String name = "裂变淘礼金"; |
| | | BigDecimal perface = new BigDecimal(1); |
| | | int totalNum = 1; |
| | | Date sendStartTime = new Date(); |
| | | Date sendEndTime = new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 4L); |
| | | Date useStartTime = sendStartTime; |
| | | Date useEndTime = sendEndTime; |
| | | |
| | | try { |
| | | createLieBianTaoLiJin(auctionId+"", name, perface, totalNum, |
| | | sendStartTime, sendEndTime, useStartTime, useEndTime, app); |
| | | } catch (LiJinAccountException e) { |
| | | e.printStackTrace(); |
| | | } catch (LiJinAmountException e) { |
| | | e.printStackTrace(); |
| | | } catch (LiJinException e) { |
| | | e.printStackTrace(); |
| | | } catch (LiJinGoodsException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | |