Example #1
0
  /**
   * @param q 表示搜索的关键字,例如搜索query=nike。 当输入关键字为中文时,将对他进行URLEncode的UTF-8格式编码,如
   *     耐克,那么q=%E8%80%90%E5%85%8B。
   * @param sort 排序类型。类型包括: s: 人气排序 p: 价格从低到高; pd: 价格从高到低; d: 月销量从高到低; td: 总销量从高到低; pt: 按发布时间排序.
   * @param cat 前台类目id,目前其他接口无法获取, 只能自己去寻找。建议使用关键字获取数据。支持多选过滤,cat=catid1,catid2。
   * @param start 可以用该字段来实现分页功能。表示查询起始位置, 默认从第0条开始,start=10,表示从第10条数据开始查询,start不得大于1000。
   */
  private void getFromTmallByKeyWords(String q, String sort, String cat, final int pageNo) {

    long userId = sharedPreferences.getLong("userId", 10000);
    AccessToken accessToken = TopConfig.client.getAccessToken(userId);
    String tql = "";
    /*
     * if (userId == 0l || accessToken == null) { Toast t =
     * Toast.makeText(ProductsActivity.this, "请先授权", Toast.LENGTH_SHORT);
     * t.show(); client.authorize(ProductsActivity.this); return; }
     */
    /**
     * select num_iid,title,click_url from taobao.taobaoke.widget.items.convert where num_iids in
     * (select item_id from tmall.items.discount.search where q = %e6%89%8b%e6%9c%ba )
     */
    List<String> fields = new ArrayList<String>();
    fields.add("item_id");
    Map<String, String> params = new HashMap<String, String>();
    // params.put("q", "%e6%89%8b%e6%9c%ba");
    if (!TextUtils.isEmpty(q)) {
      params.put("q", Uri.encode(q));
    }
    if (!TextUtils.isEmpty(cat)) {
      params.put("cat", cat);
    }
    if (TextUtils.isEmpty(q) & TextUtils.isEmpty(cat)) {
      throw new RuntimeException("关键字q和前台类目不能同时为空!");
    }
    int start = pageNo * pageSize;
    params.put("start", Integer.toString(start)); // 最多1000页
    params.put("sort", sort);
    String tmallTql = TqlHelper.generateTMallTql(fields, params);
    tql = TqlHelper.generateTMallConvertToTaoKenestTql(SearchItem.class, "num_iids", tmallTql);
    System.out.println(tql);

    GetTopData.getDataFromTop(
        tql,
        new TmallToTaokeItemParser(),
        userId,
        new MyTqlListener() {
          @Override
          public void onResponseException(Object apiError) {

            Toast.makeText(getActivity(), ((ApiError) apiError).getMsg(), 0).show();
            if (BuildConfig.DEBUG) {
              Log.i(TAG, apiError.toString());
            }
          }

          @Override
          public void onException(Exception e) {
            AppException.network(e).makeToast(getActivity());
          }

          @Override
          public void onComplete(Object result) {
            // TODO Auto-generated method stub
            ArrayList<SearchItem> results = (ArrayList) result;
            if (results != null && results.size() > 0) {
              if (!TextUtils.isEmpty(card)) {
                String money = card.replace(" 元", "");
                Integer mon = Integer.parseInt(money.trim());
                resultMap = new HashMap<String, SearchItem>();
                for (int i = 0; i < results.size(); i++) {
                  String reg = "\\d+";
                  Pattern pattern = Pattern.compile(reg);
                  String resultPrice = results.get(i).getPrice().replace("\\'", "");
                  Matcher matcher = pattern.matcher(resultPrice);
                  if (matcher.find()) {
                    resultPrice = matcher.group();
                    if ((mon - Float.parseFloat(resultPrice)) < 10) {
                      LogUtil.i(
                          TAG, Float.parseFloat(resultPrice) + "  Float.parseFloat(resultPrice)");
                      LogUtil.i(
                          TAG,
                          mon
                              - Float.parseFloat(resultPrice)
                              + "  mon-Float.parseFloat(resultPrice)");
                      Toast.makeText(getActivity(), resultPrice, 1).show();
                      resultMap = new HashMap<String, SearchItem>();
                      resultMap.put(RechargeFragment.this.q, results.get(i));
                      java.text.DecimalFormat df = new java.text.DecimalFormat("#0.00");
                      float cheap = (mon - Float.parseFloat(resultPrice)) / mon;
                      df.format(cheap);
                      priceTextView.setText(resultPrice + " 元" + "  为您节省" + cheap + "%");
                      break;
                    }
                  }
                }
              }
            }
            if (BuildConfig.DEBUG) {
              if (results != null) {
                Log.i(TAG, Integer.toString(results.size()));
              }
            }
          }
        });
  }