package com.jshop.action.taobao;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.springframework.stereotype.Controller;
import com.jshop.action.tools.Arith;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.taobao.api.ApiException;
import com.taobao.api.DefaultTaobaoClient;
import com.taobao.api.TaobaoClient;
import com.taobao.api.domain.TradeRate;
import com.taobao.api.request.TraderatesGetRequest;
import com.taobao.api.response.TraderatesGetResponse;
@ParentPackage("jshop")
@Controller("tbtraderatesAction")
public class TbtraderatesAction extends ActionSupport{
private List rows=new ArrayList();
private List chartsrows=new ArrayList();
private int rp;
private Long page=1L;
private int total=0;
private String query;
private String qtype;
private boolean slogin;
private boolean sucflag;
private List<TradeRate> traderatelist=new ArrayList<TradeRate>();
public List getChartsrows() {
return chartsrows;
}
public void setChartsrows(List chartsrows) {
this.chartsrows = chartsrows;
}
public List getRows() {
return rows;
}
public void setRows(List rows) {
this.rows = rows;
}
public int getRp() {
return rp;
}
public void setRp(int rp) {
this.rp = rp;
}
public Long getPage() {
return page;
}
public void setPage(Long page) {
this.page = page;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public String getQuery() {
return query;
}
public void setQuery(String query) {
this.query = query;
}
public String getQtype() {
return qtype;
}
public void setQtype(String qtype) {
this.qtype = qtype;
}
public boolean isSlogin() {
return slogin;
}
public void setSlogin(boolean slogin) {
this.slogin = slogin;
}
public boolean isSucflag() {
return sucflag;
}
public void setSucflag(boolean sucflag) {
this.sucflag = sucflag;
}
public List<TradeRate> getTraderatelist() {
return traderatelist;
}
public void setTraderatelist(List<TradeRate> traderatelist) {
this.traderatelist = traderatelist;
}
/**
* 清理错误
*/
@Override
public void validate() {
this.clearErrorsAndMessages();
}
@Action(value = "findAllTraderates", results = {
@Result(name = "json",type="json")
})
public String findAllTraderates() throws ParseException, ApiException{
String sessionKey=(String) ActionContext.getContext().getSession().get("sessionKey");
TaobaoClient client=new DefaultTaobaoClient(Util.URL, Util.APP_KEY, Util.APP_SERCET);
TraderatesGetRequest req=new TraderatesGetRequest();
req.setFields("tid,oid,role,nick,result,created,rated_nick,item_title,item_price,content,reply");
req.setRateType("get");
req.setPageNo(1L);
req.setPageSize(100L);
Date date=new Date();
req.setEndDate(date);
req.setRole("buyer");
//req.setTid(123456L);
TraderatesGetResponse response = client.execute(req ,sessionKey);
traderatelist=response.getTradeRates();
rows.clear();
this.setTotal(0);
if(traderatelist!=null){
total=response.getTotalResults().intValue();
rows.clear();
for(Iterator it=traderatelist.iterator();it.hasNext();){
TradeRate tr=(TradeRate)it.next();
if(tr.getRole().equals("seller")){
tr.setRole("卖家");
}else{
tr.setRole("买家");
}
if(tr.getResult().equals("good")){
tr.setResult("好评");
}else if(tr.getResult().equals("neutral")){
tr.setResult("中评");
}else{
tr.setResult("差评");
}
Map<String,Object>cellMap=new HashMap<String,Object>();
cellMap.put("id", tr.getTid());
cellMap.put("cell", new Object[]{
"<input id='id' name='firstcol' class='firsttaobaoontraderdate' type='checkbox' value='"+tr.getTid()+"'></input>",
tr.getContent(),
tr.getReply(),
tr.getRole(),
tr.getResult(),
tr.getCreated(),
tr.getNick(),
tr.getItemTitle()
});
rows.add(cellMap);
}
}
return "json";
}
/**
* 获取报表内容
* @return
* @throws ParseException
* @throws ApiException
*/
@Action(value = "makeTraderdateChart", results = {
@Result(name = "json",type="json")
})
public String makeTraderdateChart() throws ParseException, ApiException{
chartsrows.clear();
if(traderatelist!=null){
double totalsum=total;
double goodssum=0;
double neutralsum=0;
double badsum=0;
for(Iterator it=traderatelist.iterator();it.hasNext();){
TradeRate tr=(TradeRate)it.next();
if(tr.getResult().equals("好评")){
goodssum++;
}else if(tr.getResult().equals("中评")){
neutralsum++;
}else{
badsum++;
}
}
int hp=Arith.div(goodssum, totalsum).intValue();
int zp=Arith.div(neutralsum, totalsum).intValue();
int cp=Arith.div(badsum, totalsum).intValue();
Object []str1={"好评",hp};
Object []str2={"中评",zp};
Object []str3={"差评",cp};
chartsrows.add(str1);
chartsrows.add(str2);
chartsrows.add(str3);
}
return "json";
}
}