Authored by zhouxiang

no message

... ... @@ -11,7 +11,7 @@ public class OrderInfo implements Serializable {
private static final long serialVersionUID = -3433514401854529932L;
//下单时间
private int order_time;
private int orderTime;
//父订单
private int parentOrderCode;
//订单号
... ... @@ -19,28 +19,28 @@ public class OrderInfo implements Serializable {
//会员id
private int uid;
//联盟id
private int client_id;
private int clientId;
//第三方cookie
private String union_cookie;
private String unionCookie;
//商品金额
private BigDecimal order_amount;
private BigDecimal orderAmount;
//运费
private BigDecimal shipping_cost;
private BigDecimal shippingCost;
//支付方式(网上支付、银联支付、线下支付)
private String payment;
//订单状态(未付款、已付款、已取消、退款/退货)
private String order_status;
private String orderStatus;
//平台(web/wap/app)
private String order_type;
private String orderType;
private List<OrdersGood> ordersGoods;
public int getOrder_time() {
return order_time;
public int getOrderTime() {
return orderTime;
}
public void setOrder_time(int order_time) {
this.order_time = order_time;
public void setOrderTime(int orderTime) {
this.orderTime = orderTime;
}
public int getParentOrderCode() {
... ... @@ -67,36 +67,36 @@ public class OrderInfo implements Serializable {
this.uid = uid;
}
public int getClient_id() {
return client_id;
public int getClientId() {
return clientId;
}
public void setClient_id(int client_id) {
this.client_id = client_id;
public void setClientId(int clientId) {
this.clientId = clientId;
}
public String getUnion_cookie() {
return union_cookie;
public String getUnionCookie() {
return unionCookie;
}
public void setUnion_cookie(String union_cookie) {
this.union_cookie = union_cookie;
public void setUnionCookie(String unionCookie) {
this.unionCookie = unionCookie;
}
public BigDecimal getOrder_amount() {
return order_amount;
public BigDecimal getOrderAmount() {
return orderAmount;
}
public void setOrder_amount(BigDecimal order_amount) {
this.order_amount = order_amount;
public void setOrderAmount(BigDecimal orderAmount) {
this.orderAmount = orderAmount;
}
public BigDecimal getShipping_cost() {
return shipping_cost;
public BigDecimal getShippingCost() {
return shippingCost;
}
public void setShipping_cost(BigDecimal shipping_cost) {
this.shipping_cost = shipping_cost;
public void setShippingCost(BigDecimal shippingCost) {
this.shippingCost = shippingCost;
}
public String getPayment() {
... ... @@ -107,20 +107,20 @@ public class OrderInfo implements Serializable {
this.payment = payment;
}
public String getOrder_status() {
return order_status;
public String getOrderStatus() {
return orderStatus;
}
public void setOrder_status(String order_status) {
this.order_status = order_status;
public void setOrderStatus(String orderStatus) {
this.orderStatus = orderStatus;
}
public String getOrder_type() {
return order_type;
public String getOrderType() {
return orderType;
}
public void setOrder_type(String order_type) {
this.order_type = order_type;
public void setOrderType(String orderType) {
this.orderType = orderType;
}
public List<OrdersGood> getOrdersGoods() {
... ...
... ... @@ -2,9 +2,11 @@ package com.yoho.unions.server.service;
import com.yoho.unions.vo.OrderInfo;
import java.util.List;
/**
* Created by zhouxiang on 2016/11/4.
*/
public interface IOrderPushService {
void pushOrder(OrderInfo orderInfo);
void pushOrder(List<OrderInfo> orderInfo);
}
... ...
package com.yoho.unions.server.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.yoho.core.common.utils.DateUtil;
import com.yoho.unions.server.service.IFanliService;
import com.yoho.unions.server.service.IOrderPushService;
import com.yoho.unions.vo.OrderInfo;
import com.yoho.unions.vo.OrdersGood;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* Created by zhouxiang on 2016/11/3.
... ... @@ -15,23 +24,79 @@ import org.springframework.stereotype.Service;
@Service
public class FanliServiceImpl implements IFanliService, IOrderPushService {
public String queryOrdersByFanli() {
String result = null;
return null;
}
/**
* 推送订单
*
* @param orderInfo
* @param orderInfos
*/
@Override
public void pushOrder(OrderInfo orderInfo) {
public void pushOrder(List<OrderInfo> orderInfos) {
Document document = DocumentHelper.createDocument();
Element rootElement = document.addElement("orders");
document.setRootElement(rootElement);
rootElement.addElement("");
for (OrderInfo orderInfo : orderInfos) {
JSONObject unionCookie = JSONObject.parseObject(orderInfo.getUnionCookie());
//订单信息
Element orderElement = rootElement.addElement("order");
orderElement.addElement("s_id").setText("");
orderElement.addElement("order_id_parent").setText(String.valueOf(orderInfo.getParentOrderCode()));
orderElement.addElement("order_id").setText(String.valueOf(orderInfo.getOrderCode()));
orderElement.addElement("order_time").setText(DateUtil.date2String(new Date(orderInfo.getOrderTime() * 1000), "yyyy-MM-dd HH:mm:ss"));
orderElement.addElement("uid").setText(unionCookie.getString("uid"));
orderElement.addElement("uname").setText(unionCookie.getString("uid"));
orderElement.addElement("tc").setText(unionCookie.getString("uid"));
orderElement.addElement("pay_time").setText(unionCookie.getString("uid"));
orderElement.addElement("status").setText(unionCookie.getString("uid"));
orderElement.addElement("locked").setText(unionCookie.getString("uid"));
orderElement.addElement("lastmod").setText(unionCookie.getString("uid"));
orderElement.addElement("is_newbuyer").setText(unionCookie.getString("uid"));
orderElement.addElement("platform").setText(unionCookie.getString("uid"));
orderElement.addElement("code").setText(unionCookie.getString("uid"));
orderElement.addElement("remark").setText(unionCookie.getString("uid"));
//商品信息
List<OrdersGood> ordersGoodList = orderInfo.getOrdersGoods();
//商品节点
Element productsElement = orderElement.addElement("products");
//同个订单 skn相同的合并
Map<String, List<OrdersGood>> ordersGoodMap = Maps.newHashMap();
for (OrdersGood ordersGood : ordersGoodList) {
if (!ordersGoodMap.containsKey(ordersGood.getProductSkn())) {
ordersGoodMap.put(ordersGood.getProductSkn(), Lists.newArrayList());
}
ordersGoodMap.get(ordersGood.getProductSkn()).add(ordersGood);
}
for (String orderCode : ordersGoodMap.keySet()) {
Element productElement = productsElement.addElement("product");
OrdersGood ordersGood = null;
List<OrdersGood> ordersGoods = ordersGoodMap.get(orderCode);
for (OrdersGood good : ordersGoods) {
if (null == ordersGood) {
ordersGood = good;
continue;
}
//合并数量
ordersGood.setBuyNumber(ordersGood.getBuyNumber() + good.getBuyNumber());
//合并结算金额
ordersGood.setRealPayFee(ordersGood.getRealPayFee().add(good.getRealPayFee()));
//合并佣金
ordersGood.setCommission(ordersGood.getCommission().add(good.getCommission()));
}
productElement.addElement("pid").setText(ordersGood.getProductSkn());
productElement.addElement("title").setText(ordersGood.getProductSkn());
productElement.addElement("category").setText(ordersGood.getProductSkn());
productElement.addElement("category_title").setText(ordersGood.getProductSkn());
productElement.addElement("url").setText(ordersGood.getProductSkn());
productElement.addElement("num").setText(ordersGood.getProductSkn());
productElement.addElement("price").setText(ordersGood.getProductSkn());
productElement.addElement("real_pay_fee").setText(ordersGood.getProductSkn());
productElement.addElement("refund_num").setText(ordersGood.getProductSkn());
productElement.addElement("commission").setText(ordersGood.getProductSkn());
}
}
}
}
... ...
... ... @@ -32,93 +32,95 @@ public class PanshiServiceImpl implements IOrderPushService {
public static void main(String[] args) throws Exception {
Map param = new HashMap<>();
long currentTime = System.currentTimeMillis();
param.put("source",SOURCE);
param.put("timestamp",currentTime);
param.put("sign", MD5.md5(SOURCE+SECRETKEY+currentTime));
param.put("method","push");
param.put("v","2.0");
param.put("orNo","RT16082645823");
param.put("orTime","2016-11-06 04:00:00");
param.put("code","1|2|3|4|5|6");
param.put("orMoney",1400);
param.put("psy","a");
param.put("status",1);
param.put("proNo","abf123456|abf123457|abf1234568");
param.put("proPrice","100|200|300");
param.put("proNum","1|2|3");
param.put("proName","100|200|300");
param.put("proNum","豆浆机|吹风机|洗衣机");
param.put("proCat","家用电器|小家电|小电器");
param.put("commRate","0.15|0.15|0.15");
param.put("source", SOURCE);
param.put("timestamp", currentTime);
param.put("sign", MD5.md5(SOURCE + SECRETKEY + currentTime));
param.put("method", "push");
param.put("v", "2.0");
param.put("orNo", "RT16082645823");
param.put("orTime", "2016-11-06 04:00:00");
param.put("code", "1|2|3|4|5|6");
param.put("orMoney", 1400);
param.put("psy", "a");
param.put("status", 1);
param.put("proNo", "abf123456|abf123457|abf1234568");
param.put("proPrice", "100|200|300");
param.put("proNum", "1|2|3");
param.put("proName", "100|200|300");
param.put("proNum", "豆浆机|吹风机|洗衣机");
param.put("proCat", "家用电器|小家电|小电器");
param.put("commRate", "0.15|0.15|0.15");
Pair<Integer, String> pair = HttpUtils.httpPost("http://open.adyun.com/order/push",param);
Pair<Integer, String> pair = HttpUtils.httpPost("http://open.adyun.com/order/push", param);
JSONObject json = JSONObject.parseObject(pair.getRight());
if(((String)json.get("code")).equals("200")){
if (((String) json.get("code")).equals("200")) {
logger.info("pushOrder success,orderCode is {}");
}else{
} else {
logger.warn("pushOrder fail");
}
System.out.println(pair.getRight());
}
@Override
public void pushOrder(OrderInfo orderInfo) {
Map param = new HashMap<>();
long currentTime = System.currentTimeMillis();
param.put("source",SOURCE);
param.put("timestamp",currentTime);
param.put("sign", MD5.md5(SOURCE+SECRETKEY+currentTime));
param.put("method","push");
param.put("v","2.0");
param.put("orNo",orderInfo.getOrderCode());
param.put("orTime",orderInfo.getOrder_time());
param.put("code","3|70|175|11|11|0");
param.put("orMoney",orderInfo.getOrder_amount());
param.put("psy",orderInfo.getPayment());
param.put("status",1);
List<OrdersGood> goods = orderInfo.getOrdersGoods();
if(goods.size()==1){
OrdersGood good = goods.get(0);
param.put("proNo",good.getProductSkn());
param.put("proPrice",good.getRealPayFee());
param.put("proNum",good.getBuyNumber());
param.put("proName",good.getProductName());
param.put("proCat",good.getSortName());
param.put("commRate",COMMRATE);
}else{
StringBuffer skns = new StringBuffer();
StringBuffer prices = new StringBuffer();
StringBuffer nums = new StringBuffer();
StringBuffer names = new StringBuffer();
StringBuffer cats = new StringBuffer();
StringBuffer rates = new StringBuffer();
for(int i=0;i<goods.size();i++){
skns.append(goods.get(i).getProductSkn()+"|");
prices.append(goods.get(i).getRealPayFee()+"|");
nums.append(goods.get(i).getBuyNumber()+"|");
names.append(goods.get(i).getProductName()+"|");
cats.append(goods.get(i).getSortName()+"|");
rates.append("0.15"+"|");
}
public void pushOrder(List<OrderInfo> orderInfos) {
for (OrderInfo orderInfo : orderInfos) {
Map param = new HashMap<>();
long currentTime = System.currentTimeMillis();
param.put("source", SOURCE);
param.put("timestamp", currentTime);
param.put("sign", MD5.md5(SOURCE + SECRETKEY + currentTime));
param.put("method", "push");
param.put("v", "2.0");
param.put("orNo", orderInfo.getOrderCode());
param.put("orTime", orderInfo.getOrderTime());
param.put("code", "3|70|175|11|11|0");
param.put("orMoney", orderInfo.getOrderAmount());
param.put("psy", orderInfo.getPayment());
param.put("status", 1);
List<OrdersGood> goods = orderInfo.getOrdersGoods();
if (goods.size() == 1) {
OrdersGood good = goods.get(0);
param.put("proNo", good.getProductSkn());
param.put("proPrice", good.getRealPayFee());
param.put("proNum", good.getBuyNumber());
param.put("proName", good.getProductName());
param.put("proCat", good.getSortName());
param.put("commRate", COMMRATE);
} else {
StringBuffer skns = new StringBuffer();
StringBuffer prices = new StringBuffer();
StringBuffer nums = new StringBuffer();
StringBuffer names = new StringBuffer();
StringBuffer cats = new StringBuffer();
StringBuffer rates = new StringBuffer();
for (int i = 0; i < goods.size(); i++) {
skns.append(goods.get(i).getProductSkn() + "|");
prices.append(goods.get(i).getRealPayFee() + "|");
nums.append(goods.get(i).getBuyNumber() + "|");
names.append(goods.get(i).getProductName() + "|");
cats.append(goods.get(i).getSortName() + "|");
rates.append("0.15" + "|");
}
param.put("proNo",skns.substring(0,skns.length()-1));
param.put("proPrice",prices.substring(0,prices.length()-1));
param.put("proNum",nums.substring(0,nums.length()-1));
param.put("proName",names.substring(0,names.length()-1));
param.put("proCat",cats.substring(0,cats.length()-1));
param.put("commRate",rates.substring(0,rates.length()-1));
}
Pair<Integer, String> pair = null;
try {
pair = HttpUtils.httpPost("http://open.adyun.com/order/push",param);
} catch (Exception e) {
logger.error("panshi order post fail,order is {}",orderInfo);
}
JSONObject json = JSONObject.parseObject(pair.getRight());
if(((String)json.get("code")).equals("200")){
logger.info("panshi pushOrder success,orderCode is {}",orderInfo);
}else{
logger.warn("panshi pushOrder success,orderCode is {},fail message is {}",orderInfo,(String)json.get("msg"));
param.put("proNo", skns.substring(0, skns.length() - 1));
param.put("proPrice", prices.substring(0, prices.length() - 1));
param.put("proNum", nums.substring(0, nums.length() - 1));
param.put("proName", names.substring(0, names.length() - 1));
param.put("proCat", cats.substring(0, cats.length() - 1));
param.put("commRate", rates.substring(0, rates.length() - 1));
}
Pair<Integer, String> pair = null;
try {
pair = HttpUtils.httpPost("http://open.adyun.com/order/push", param);
} catch (Exception e) {
logger.error("panshi order post fail,order is {}", orderInfo);
}
JSONObject json = JSONObject.parseObject(pair.getRight());
if (((String) json.get("code")).equals("200")) {
logger.info("panshi pushOrder success,orderCode is {}", orderInfo);
} else {
logger.warn("panshi pushOrder success,orderCode is {},fail message is {}", orderInfo, (String) json.get("msg"));
}
}
}
}
... ...
package com.yoho.unions.server.task;
import com.google.common.collect.Maps;
import com.yoho.core.rest.client.ServiceCaller;
import com.yoho.unions.server.service.IOrderPushService;
import com.yoho.unions.vo.OrderInfo;
... ... @@ -8,6 +9,7 @@ import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/**
... ... @@ -17,7 +19,7 @@ import java.util.Map;
public class BigDataOrderInfoTask {
@Resource(name = "orderPushServiceMap")
private Map<String,IOrderPushService> orderPushServiceMap;
private Map<String, IOrderPushService> orderPushServiceMap;
@Autowired
... ... @@ -25,14 +27,13 @@ public class BigDataOrderInfoTask {
@Scheduled(cron = "0 0/30 * * * ?")
public void run() {
OrderInfo[] orderInfos = serviceCaller.call("bigdata.get", null, OrderInfo[].class);
for (OrderInfo orderInfo : orderInfos) {
if(orderInfo.getClient_id() < 1 ){
continue;
}
IOrderPushService orderPushService = orderPushServiceMap.get(orderInfo.getClient_id());
orderPushService.pushOrder(orderInfo);
Map<String,String> paramMap = Maps.newHashMap();
paramMap.put("startTime","");
paramMap.put("endTime","");
Map<String, List<OrderInfo>> orderInfoMap = serviceCaller.call("bigdata.get", paramMap, Map.class);
for (String clientId : orderInfoMap.keySet()) {
IOrderPushService orderPushService = orderPushServiceMap.get(clientId);
orderPushService.pushOrder(orderInfoMap.get(clientId));
}
}
... ...