package com.bjdata.bjsearch.presentation.action.thirdinter;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletInputStream;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
import com.bjdata.bjsearch.persistence.stroremanage.order.dao.impl.BiOrderProd;
import com.bjdata.bjsearch.persistence.stroremanage.order.service.IOrderService;
import com.bjdata.bjsearch.presentation.action.BaseAction;
import com.bjdata.bjsearch.util.Misc;
import com.bjdata.bjsearch.util.Util;
import com.bjdata.util.SecurityUtils;
public class DianpingInter extends BaseAction{
private static final String LEAGUETYPE = "dianping";
private static final Long STOREID = 4672143L;
private static final double PERCENT=0.04;
private String result;
public String execute() {
IOrderService orderService = (IOrderService) this.getServiceBean("orderService");
//成功
result = "succ";
try {
//解析xml
ServletInputStream in = this.getRequest().getInputStream();
BiOrderProd prod = new BiOrderProd();
prod.setStoreid(STOREID);
prod.setPmid(String.valueOf(STOREID));
prod.setProductcode("1");
prod.setProductid("-1");
prod.setUserid(0l);
prod.setLeaguetype(LEAGUETYPE);
prod.setTaskid("0");
prod.setGetway("1");
prod.setStatus("0");
//解析 xml后 将值 给prod 了
readXML(in,prod);
// prod.setAmount(1);
// prod.setOrderid(orderid);
// prod.setOrdertime(Misc.convertString2Date(orderdate.trim(), "yyyy-MM-dd HH:mm:ss"));
// prod.setMoney(dprice);
// prod.setUserinfo(ouid);
prod.setPrice(prod.getMoney()/prod.getAmount());
prod.setCommision(prod.getMoney() * PERCENT);
orderService.saveBiOrderProd(prod);
String ordertime=Misc.convertTimestamp2StringTime(prod.getOrdertime(), "yyyy-MM-dd20%HH:mm:ss");
StringBuffer urlBuffer = new StringBuffer("http://192.168.0.88:8080/myweb/orderback.jhtml?ordergetFlag=0&bid=502990&leagueflag=");
urlBuffer.append(LEAGUETYPE).append("&cost=").append(prod.getMoney()).append("&oid=").append(prod.getOrderid()).append("&ordertime=");
urlBuffer.append(ordertime).append("&uid=").append(prod.getUserinfo()).append("&cback=").append(prod.getCommision());
urlBuffer.append("&mcode=").append(SecurityUtils.md5ByHex(prod.getUserinfo() + prod.getOrderid()));
//send
String re = Util.getHTMLByUrl(urlBuffer.toString(), 30000, "utf-8");
if(!"0".equals(re))
result = "0";
} catch (Exception e) {
e.printStackTrace();
result = "3";
}
return HINT;
}
private void readXML(ServletInputStream in,BiOrderProd prod){
SAXReader saxReader=new SAXReader();
try {
Document document=saxReader.read(new InputStreamReader(in,"UTF-8"));
List<Element> list=document.selectNodes("/order");
System.out.println(list.size());
Iterator<Element> iter=list.iterator();
if(iter.hasNext()) {
Element root=iter.next();
//订单号
Node oid=root.selectSingleNode("/order/id");
prod.setOrderid(oid.getText());
//下单时间
Node otime=root.selectSingleNode("/order/order_time");
prod.setOrdertime(Misc.convertString2Date(otime.getText(), "yyyy-MM-dd HH:mm:ss"));
//商品数
Node pnums=root.selectSingleNode("/order/number");
prod.setAmount(Integer.parseInt(pnums.getText().trim()));
//订单总金额
Node amount=root.selectSingleNode("/order/cost/total_amount");
prod.setMoney(Double.parseDouble(amount.getText().trim()));
//跟单uid
Node uid=root.selectSingleNode("/order/user/trackingcode");
prod.setUserinfo(uid.getText());
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
}
}
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
}
<order>
<id>1234563</id>
<user>
<channelcode>{例如baidu_wap}</channelcode>
<trackingcode>{例如uid=123456}</trackingcode>
</user>
<product>
<deal>{123142}</deal>
</product>
<order_time>yyyy-MM-dd HH:mm:ss</order_time>
<pay_time>{yyyy-MM-dd HH:mm:ss|}</pay_time>
<status>{ORDER|PAID}</status>
<number>2</number>
<cost>
<total_amount>120.2</total_amount>
</cost>
</order>