package com.taobao.tae.Mshopping.demo.task;
import android.content.Context;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.AsyncTask;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.*;
import com.taobao.api.internal.util.WebUtils;
import com.taobao.tae.Mshopping.demo.R;
import com.taobao.tae.Mshopping.demo.activity.ItemDetailActivity;
import com.taobao.tae.Mshopping.demo.config.AppConfig;
import com.taobao.tae.Mshopping.demo.constant.Constants;
import com.taobao.tae.Mshopping.demo.model.*;
import com.taobao.tae.Mshopping.demo.util.Helper;
import com.taobao.tae.Mshopping.demo.util.RemoteImageHelper;
import com.taobao.tae.Mshopping.demo.util.SecurityKey;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 获取商品图文等信息
* Created by xinyuan on 14/6/25.
*/
public class GetItemRichDetailTask extends AsyncTask<String, Integer, TaobaoItemRichInfo> {
private Context context;
private ItemDetailActivity itemDetailActivity;
private RemoteImageHelper remoteImageHelper = new RemoteImageHelper();
public GetItemRichDetailTask(Context context, ItemDetailActivity itemDetailActivity) {
super();
this.context = context;
this.itemDetailActivity = itemDetailActivity;
}
@Override
protected TaobaoItemRichInfo doInBackground(String... params) {
try {
return parseRichItemsJSON(params[0]);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* 获取到商品图文信息后的回调方法
*
* @param taobaoItemRichInfo
*/
@Override
protected void onPostExecute(TaobaoItemRichInfo taobaoItemRichInfo) {
if (taobaoItemRichInfo == null || taobaoItemRichInfo.getBasicInformation() == null) {
itemDetailActivity.finish();
toast("获取商品信息失败");
return;
}
itemDetailActivity.setTaobaoItemRichInfo(taobaoItemRichInfo);
WindowManager windowManager = (WindowManager) itemDetailActivity.getSystemService(itemDetailActivity.WINDOW_SERVICE);
int widthScreen = windowManager.getDefaultDisplay().getWidth();
ImageView imageView = (ImageView) itemDetailActivity.findViewById(R.id.item_detail_main_pic);
imageView.setLayoutParams(new LinearLayout.LayoutParams(widthScreen, widthScreen));
remoteImageHelper.loadImage(imageView, taobaoItemRichInfo.getBasicInformation().getPicsPath().get(0).toString());
TextView titleTextView = (TextView) itemDetailActivity.findViewById(R.id.item_detail_title_txt);
TextView priceTextView = (TextView) itemDetailActivity.findViewById(R.id.item_detail_price_txt);
String title = taobaoItemRichInfo.getBasicInformation().getTitle();
if (title.length() > 20) {
title = title.substring(0, 20).concat("...");
}
titleTextView.setText(title);
Map<Integer, PriceUnit> priceUnits = taobaoItemRichInfo.getBasicInformation().getDefaultPriceUnits();
PriceUnit currentPriceUnit = priceUnits.get(PriceDisplay.HIGHLIGHT.getCode());
priceTextView.setText("¥".concat(currentPriceUnit.getPrice()));
//如果此商品为促销商品
if (priceUnits.containsKey(PriceDisplay.DELETELINE.getCode())) {
TextView deletePriceTextView = (TextView) itemDetailActivity.findViewById(R.id.item_detail_deleteprice_txt);
deletePriceTextView.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG | Paint.ANTI_ALIAS_FLAG);
deletePriceTextView.setText(priceUnits.get(PriceDisplay.DELETELINE.getCode()).getPrice());
}
ItemUnitCotrol itemUnitCotrol = taobaoItemRichInfo.getBasicInformation().getSkuModel().getItemUnitCotrol();
if (itemUnitCotrol != null && !itemUnitCotrol.isBuySupport()) {
Button ButtonView = (Button) itemDetailActivity.findViewById(R.id.item_detail_buy_btn);
ButtonView.setBackgroundColor(Color.parseColor("#ff8f8f8f"));
TextView invalidItemTextView = (TextView) itemDetailActivity.findViewById(R.id.item_detail_invaliditem_txt);
invalidItemTextView.setText(itemUnitCotrol.getErrorMessage());
}
SellerInfo sellerInfo = taobaoItemRichInfo.getBasicInformation().getSellerInfo();
ImageView itemFromImageView = (ImageView) itemDetailActivity.findViewById(R.id.item_detail_from_icon);
TextView itemFromTextView = (TextView) itemDetailActivity.findViewById(R.id.item_detail_from_txt);
if (sellerInfo != null && "B".equalsIgnoreCase(sellerInfo.getType())) {
itemFromImageView.setBackgroundResource(R.drawable.tmall_icon);
itemFromTextView.setText("天猫特供");
}
if (sellerInfo != null && "C".equalsIgnoreCase(sellerInfo.getType())) {
itemFromImageView.setBackgroundResource(R.drawable.tb_icon);
itemFromTextView.setText("淘宝特供");
}
//动态加载图文信息
LinearLayout dynamicFillContentLinearLayout = (LinearLayout) itemDetailActivity.findViewById(R.id.item_detail_dynamic_fill_content);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
List<String> images = taobaoItemRichInfo.getImageList();
for (int i = 0; i < images.size(); i++) {
ImageView _imageView = new ImageView(itemDetailActivity);
_imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
_imageView.setLayoutParams(layoutParams);
remoteImageHelper.loadImage(_imageView, images.get(i));
dynamicFillContentLinearLayout.addView(_imageView);
}
}
@Override
protected void onPreExecute() {
}
public TaobaoItemRichInfo parseRichItemsJSON(String itemId) throws IOException {
TaobaoItemBasicInfo taobaoItemBasicInfo = new TaobaoItemBasicInfo();
TaobaoItemRichInfo taobaoItemRichInfo = new TaobaoItemRichInfo();
String itemBasicJson = "";
String itemRichJson = "";
if (Helper.checkConnection(context)) {
try {
int timeout = 30000;
Map param = new HashMap<String, String>();
param.put("securityKey", SecurityKey.getKey());
String itemBasicInfoUrl = AppConfig.getInstance().getServer() + "/api/item/basicinfo/" + itemId;
String itemRichInfoUrl = AppConfig.getInstance().getServer() + "/api/item/picwordinfo/" + itemId;
itemBasicJson = WebUtils.doPost(itemBasicInfoUrl, param, timeout, timeout);
itemRichJson = WebUtils.doPost(itemRichInfoUrl, param, timeout, timeout);
} catch (IOException e) {
Log.e("IOException is : ", e.toString(), e);
e.printStackTrace();
return taobaoItemRichInfo;
}
}
try {
if (null != itemBasicJson && !"".equals(itemBasicJson)) {
JSONObject jsonObject = new JSONObject(itemBasicJson);
String result = jsonObject.has("ret") ? jsonObject.get("ret").toString() : null;
if (result == null || !result.contains("SUCCESS")) {
return taobaoItemRichInfo;
}
JSONObject dateJsonObject = jsonObject.getJSONObject("data");
String sellerJson = dateJsonObject.getString("seller");
String rateJson = dateJsonObject.getString("rateInfo");
JSONArray apiStackJsonArray = dateJsonObject.getJSONArray("apiStack");
if (apiStackJsonArray == null || apiStackJsonArray.length() == 0) {
return taobaoItemRichInfo;
}
JSONObject esiInfoObject = new JSONObject(apiStackJsonArray.get(0).toString());
JSONObject apiStackDataObject = new JSONObject(esiInfoObject.getString("value")).getJSONObject("data");
JSONObject itemInfoObject = dateJsonObject.getJSONObject("itemInfoModel");
JSONArray picArray = itemInfoObject.getJSONArray("picsPath");
//这里为商品列表页展示数据使用,所以只展示一张图片
taobaoItemBasicInfo.setItemId(Long.valueOf(itemId));
taobaoItemBasicInfo.setTitle(itemInfoObject.getString("title"));
taobaoItemBasicInfo.setFavcount(itemInfoObject.getString("favcount"));
taobaoItemBasicInfo.setSku(itemInfoObject.getBoolean("sku"));
taobaoItemBasicInfo.setItemUrl(itemInfoObject.getString("itemUrl"));
taobaoItemBasicInfo.setLocation(itemInfoObject.getString("location"));
ArrayList picsPath = new ArrayList<String>();
for (int i = 0; i < picArray.length(); i++) {
picsPath.add(picArray.getString(i));
}
taobaoItemBasicInfo.setPicsPath(picsPath);
taobaoItemBasicInfo.setSellerInfo(new SellerInfo(sellerJson));
taobaoItemBasicInfo.setRateInfo(new RateInfo(rateJson));
if (taobaoItemBasicInfo.getSku()) {
JSONObject skuModelObject = dateJsonObject.getJSONObject("skuModel");
taobaoItemBasicInfo.setSkuModel(new SkuModel(skuModelObject, apiStackDataObject));
} else {
taobaoItemBasicInfo.setSkuModel(new SkuModel(null, apiStackDataObject));
}
}
if (null != itemRichJson && !"".equals(itemRichJson)) {
JSONObject jsonObject = new JSONObject(itemRichJson);
String result = jsonObject.get("ret").toString();
if (result == null || !result.contains("SUCCESS")) {
return taobaoItemRichInfo;
}
JSONArray imagesJsonArray = jsonObject.getJSONObject("data").getJSONArray("images");
List imagesList = new ArrayList();
for (int i = 0; i < imagesJsonArray.length(); i++) {
imagesList.add(imagesJsonArray.get(i).toString());
}
taobaoItemRichInfo.setImageList(imagesList);
}
taobaoItemRichInfo.setBasicInformation(taobaoItemBasicInfo);
} catch (JSONException e) {
e.printStackTrace();
}
return taobaoItemRichInfo;
}
/**
* 展示一个粉色的Toast
*
* @param message
*/
public void toast(String message) {
View toastRoot = LayoutInflater.from(context).inflate(R.layout.toast, null);
Toast toast = new Toast(context);
toast.setView(toastRoot);
TextView tv = (TextView) toastRoot.findViewById(R.id.pink_toast_notice);
tv.setText(message);
toast.show();
}
}