| | |
| | | package com.ks.lijin.utils.taobao; |
| | | |
| | | |
| | | import com.google.gson.Gson; |
| | | import com.ks.lijin.exception.*; |
| | | import com.ks.lijin.pojo.DTO.taobao.*; |
| | | import com.ks.lijin.pojo.PageEntity; |
| | |
| | | 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 LiJinAccountException, LiJinException, LiJinGoodsException { |
| | | 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) { |
| | |
| | | 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_NUM_FULL, "今日该商品淘礼金创建数已超上限,请您明日再试"); |
| | | 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(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(); |
| | |
| | | } |
| | | |
| | | |
| | | public static TaoBaoGoodsBrief searchGoodsDetail(Long id) throws TaoBaoGoodsDownException { |
| | | public static TaoBaoGoodsBrief searchGoodsDetail(String id) throws TaoBaoGoodsDownException { |
| | | return searchGoodsDetail(id, null, null); |
| | | } |
| | | |
| | |
| | | * @return |
| | | * @throws |
| | | */ |
| | | public static TaoBaoGoodsBrief searchGoodsDetail(Long id, String specialId, String relationId) throws TaoBaoGoodsDownException { |
| | | public static TaoBaoGoodsBrief searchGoodsDetail(String id, String specialId, String relationId) throws TaoBaoGoodsDownException { |
| | | TaoBaoGoodsBrief goods = getSimpleGoodsInfo(id); |
| | | if (goods == null) |
| | | return null; |
| | |
| | | if (result != null && result.getTaoBaoGoodsBriefs() != null) |
| | | for (TaoBaoGoodsBrief g : result.getTaoBaoGoodsBriefs()) { |
| | | System.out.println(goods.getAuctionId() + ":" + g.getAuctionId()); |
| | | if (goods.getAuctionId().longValue() == g.getAuctionId()) { |
| | | g.setId(goods.getAuctionId()); |
| | | if (TaoBaoUtil.isEqual(goods.getAuctionId(), g.getAuctionId())) { |
| | | //g.setId(goods.getAuctionId()); |
| | | g.setCreatetime(new Date()); |
| | | g.setMaterialLibType(goods.getMaterialLibType()); |
| | | g.setProvcity(goods.getProvcity()); |
| | |
| | | * @param id -商品AuctionId |
| | | * @return |
| | | */ |
| | | public static TaoBaoGoodsBrief getSimpleGoodsInfo(Long id) throws TaoBaoGoodsDownException { |
| | | 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 + ""); |
| | |
| | | |
| | | private static TaoBaoGoodsBrief parseSimpleGoodsInfo(JSONObject item) { |
| | | TaoBaoGoodsBrief goods = new TaoBaoGoodsBrief(); |
| | | goods.setAuctionId(item.optLong("num_iid")); |
| | | goods.setAuctionId(item.optString("num_iid")); |
| | | goods.setAuctionUrl(item.optString("item_url")); |
| | | goods.setBiz30day(item.optInt("volume")); |
| | | if (item.optJSONObject("small_images") != null) { |
| | |
| | | goods.setPictUrlWhite(item.optString("white_image")); |
| | | } |
| | | |
| | | goods.setAuctionId(item.optLong("num_iid")); |
| | | goods.setAuctionId(item.optString("num_iid")); |
| | | goods.setAuctionUrl("https:" + item.optString("url")); |
| | | goods.setBiz30day(item.optInt("volume")); |
| | | goods.setCouponInfo(item.optString("coupon_info")); |
| | |
| | | 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(); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | |