admin
2022-01-12 c9fdff7d45ae118eac10397d8f34661e9f2e968a
facade-lijin/src/main/java/com/ks/lijin/utils/taobao/TaoKeApiUtil.java
@@ -83,6 +83,7 @@
                            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, "今日该商品淘礼金创建数已超上限,请您明日再试");
@@ -114,23 +115,134 @@
     */
    public static TaoLiJinReportDTO taolijinReport(String rightsId, TaoKeAppInfo app) {
        Map<String, String> map = new HashMap<>();
        map.put("method", "taobao.tbk.dg.vegas.tlj.instance.report");
        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_instance_report_response");
        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
        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(Long 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());
                    }
                }
            }
        } catch (LiJinException e) {
            throw e;
        }
        return null;
    }
@@ -635,8 +747,31 @@
    public static void main(String[] args) {
        TaoLiJinReportDTO dto = taolijinReport("eC2%2FoV8gigdzVO5CvuRDjDVC0SEP1L7d", new TaoKeAppInfo("27743325", "527a23554f71557d7b786bc479fcd5fe"));
        System.out.println(dto);
//        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();
        }
    }
}