|
|
package com.yoho.unions.server.service.impl;
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.yoho.unions.common.utils.HttpUtils;
|
|
|
import com.yoho.unions.common.utils.MathUtils;
|
|
|
import com.yoho.unions.dal.IUserOrdersDAO;
|
|
|
import com.yoho.unions.server.service.IOrderPushService;
|
|
|
import com.yoho.unions.vo.OrderInfo;
|
|
|
import com.yoho.unions.vo.OrdersGood;
|
|
|
import net.spy.memcached.compat.log.Logger;
|
|
|
import net.spy.memcached.compat.log.LoggerFactory;
|
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
|
import org.apache.commons.lang3.tuple.Pair;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.net.URLEncoder;
|
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* 多麦推送订单数据
|
|
|
* Created by yoho on 2016/12/15.
|
|
|
*/
|
|
|
public class DuomaiServiceImpl implements IOrderPushService {
|
|
|
|
|
|
@Autowired
|
|
|
private IUserOrdersDAO userOrdersDAO;
|
|
|
|
|
|
static Logger logger = LoggerFactory.getLogger(DuomaiServiceImpl.class);
|
|
|
|
|
|
@Override
|
|
|
public void pushOrder(List<OrderInfo> orderInfoList) {
|
|
|
List<String> successCodes = new ArrayList<>();
|
|
|
String duomaiContext = getDuomaiContext(orderInfoList);
|
|
|
OrderInfo orderInfo = orderInfoList.get(0);
|
|
|
int clientId = orderInfo.getClientId();
|
|
|
String duomaiPushUrl = null;
|
|
|
if (clientId == 3017) {
|
|
|
duomaiPushUrl = "http://www.duomai.com/api/push/yohobuy.php1";
|
|
|
} else if (clientId == 3019) {
|
|
|
duomaiPushUrl = "http://www.duomai.com/api/push/myohobuy.php1";
|
|
|
} else {
|
|
|
duomaiPushUrl = "http://www.duomai.com/api/push/yohobuyroi.php1";
|
|
|
}
|
|
|
Pair<Integer, String> pair = null;
|
|
|
Map param = new HashMap<>();
|
|
|
param.put("content", duomaiContext);
|
|
|
try {
|
|
|
logger.info("pushOrder: url is {}, param is {}", duomaiPushUrl, param);
|
|
|
pair = HttpUtils.httpPost(duomaiPushUrl, param);
|
|
|
} catch (Exception e) {
|
|
|
logger.error("duomai order post fail,orderCode is {}", orderInfo.getParentOrderCode());
|
|
|
}
|
|
|
JSONObject json = JSONObject.parseObject(pair.getRight());
|
|
|
if (((String) json.get("code")).equals("200")) {
|
|
|
logger.info("duomai pushOrder success,orderCode is {}", orderInfo.getParentOrderCode());
|
|
|
successCodes.add(orderInfo.getParentOrderCode());
|
|
|
} else {
|
|
|
logger.warn("duomai pushOrder fail,orderCode is {},message is {}", orderInfo.getParentOrderCode(), (String) json.get("msg"));
|
|
|
}
|
|
|
//批量更新推送成功的订单状态为1
|
|
|
userOrdersDAO.batchUpdatePush(successCodes);
|
|
|
}
|
|
|
|
|
|
private String getDuomaiContext(List<OrderInfo> orderInfoList) {
|
|
|
String urlContext = null;
|
|
|
for (OrderInfo orderInfo : orderInfoList) {
|
|
|
//联盟id
|
|
|
int client_id = orderInfo.getClientId();
|
|
|
String hash = "";
|
|
|
int channel = 0;
|
|
|
if (client_id == 3017) {
|
|
|
hash = "96613bf38393aa3d16451218f22344a8";
|
|
|
channel = 0;
|
|
|
} else if (client_id == 3019) {
|
|
|
hash = "d54be2dbc75753eb863ba6139950656b";
|
|
|
channel = 1;
|
|
|
} else if (client_id == 3057) {
|
|
|
hash = "bbf70bcaf5c52947ad26853f7cc1176d";
|
|
|
channel = 0;
|
|
|
}
|
|
|
//多麦在YOHO上的网站主标识
|
|
|
String euid = orderInfo.getMbrName();
|
|
|
String orderCode = orderInfo.getOrderCode();
|
|
|
int orderTime = orderInfo.getOrderTime();
|
|
|
BigDecimal orderAmount = orderInfo.getOrderAmount();
|
|
|
String orderStatus = orderInfo.getOrderStatus();
|
|
|
List<OrdersGood> goods = orderInfo.getOrdersGoods();
|
|
|
List<String> goodsIdList = new ArrayList<>();
|
|
|
List<String> goodsNameList = new ArrayList<>();
|
|
|
List<BigDecimal> goodsPriceList = new ArrayList<>();
|
|
|
//商品结算金额 price*num-优惠&折扣
|
|
|
List<BigDecimal> goodsTotalPriceList = new ArrayList<>();
|
|
|
// 商品分类编号
|
|
|
List<Integer> small_sort_idList = new ArrayList<>();
|
|
|
List<Integer> goodsNumList = new ArrayList<>();
|
|
|
|
|
|
for(OrdersGood ordersGood:goods){
|
|
|
goodsIdList.add(ordersGood.getProductSkn());
|
|
|
goodsNameList.add(ordersGood.getProductName());
|
|
|
goodsPriceList.add(ordersGood.getLastPrice());
|
|
|
goodsNumList.add(ordersGood.getBuyNumber());
|
|
|
small_sort_idList.add(ordersGood.getSortId());
|
|
|
goodsTotalPriceList.add(ordersGood.getLastPrice());
|
|
|
}
|
|
|
|
|
|
LinkedHashMap<String, Object> linkedHashMap = new LinkedHashMap<>();
|
|
|
linkedHashMap.put("hash", hash);
|
|
|
linkedHashMap.put("euid", euid);
|
|
|
linkedHashMap.put("order_sn", orderCode);
|
|
|
linkedHashMap.put("order_time", orderTime);
|
|
|
linkedHashMap.put("orders_price", orderAmount);
|
|
|
linkedHashMap.put("promotion_code", 0);
|
|
|
//@TODO需要订单传过来,是否新用户
|
|
|
linkedHashMap.put("is_new_custom", 0);
|
|
|
linkedHashMap.put("channel", channel);
|
|
|
linkedHashMap.put("status", orderStatus);
|
|
|
linkedHashMap.put("goods_id", CollectionUtils.isEmpty(goodsIdList) ? "" : org.apache.commons.lang.StringUtils.join(goodsIdList, "|"));
|
|
|
linkedHashMap.put("goods_name", CollectionUtils.isEmpty(goodsNameList) ? "" : org.apache.commons.lang.StringUtils.join(goodsNameList, "|"));
|
|
|
linkedHashMap.put("goods_price", CollectionUtils.isEmpty(goodsPriceList) ? "" : org.apache.commons.lang.StringUtils.join(goodsPriceList, "|"));
|
|
|
linkedHashMap.put("goods_ta", CollectionUtils.isEmpty(goodsNumList) ? "" : org.apache.commons.lang.StringUtils.join(goodsNumList, "|"));
|
|
|
linkedHashMap.put("goods_cate", CollectionUtils.isEmpty(small_sort_idList) ? "" : org.apache.commons.lang.StringUtils.join(small_sort_idList, "|"));
|
|
|
linkedHashMap.put("goods_cate_name", 0);
|
|
|
linkedHashMap.put("totalPrice", CollectionUtils.isEmpty(goodsTotalPriceList) ? "" : org.apache.commons.lang.StringUtils.join(goodsTotalPriceList, "|"));
|
|
|
//佣金计算,月底计算一次,7%计算,数据库比例已经老的
|
|
|
linkedHashMap.put("rate", 0);
|
|
|
linkedHashMap.put("commission", "");
|
|
|
linkedHashMap.put("commission_type", 0);
|
|
|
double coupon = 12d;
|
|
|
linkedHashMap.put("coupon", MathUtils.roundPrice(coupon));
|
|
|
Set<String> keys = linkedHashMap.keySet();
|
|
|
StringBuilder builder = new StringBuilder();
|
|
|
for (String key : keys) {
|
|
|
builder.append(key).append("=").append(linkedHashMap.get(key)).append("&");
|
|
|
}
|
|
|
try {
|
|
|
urlContext = URLEncoder.encode(builder.substring(0, builder.length() - 1), "UTF-8");
|
|
|
} catch (Exception e) {
|
|
|
logger.warn("send duomai error", e.getMessage());
|
|
|
}
|
|
|
}
|
|
|
return urlContext;
|
|
|
}
|
|
|
|
|
|
} |
|
|
//package com.yoho.unions.server.service.impl;
|
|
|
//
|
|
|
//import com.alibaba.fastjson.JSONObject;
|
|
|
//import com.yoho.unions.common.utils.HttpUtils;
|
|
|
//import com.yoho.unions.common.utils.MathUtils;
|
|
|
//import com.yoho.unions.dal.IUserOrdersDAO;
|
|
|
//import com.yoho.unions.server.service.IOrderPushService;
|
|
|
//import com.yoho.unions.vo.OrderInfo;
|
|
|
//import com.yoho.unions.vo.OrdersGood;
|
|
|
//import net.spy.memcached.compat.log.Logger;
|
|
|
//import net.spy.memcached.compat.log.LoggerFactory;
|
|
|
//import org.apache.commons.collections.CollectionUtils;
|
|
|
//import org.apache.commons.lang3.tuple.Pair;
|
|
|
//import org.springframework.beans.factory.annotation.Autowired;
|
|
|
//
|
|
|
//import java.math.BigDecimal;
|
|
|
//import java.net.URLEncoder;
|
|
|
//import java.util.*;
|
|
|
//
|
|
|
///**
|
|
|
// * 多麦走通用的,不单独走定制的
|
|
|
// * 多麦推送订单数据
|
|
|
// * Created by yoho on 2016/12/15.
|
|
|
// */
|
|
|
//public class DuomaiServiceImpl implements IOrderPushService {
|
|
|
//
|
|
|
// @Autowired
|
|
|
// private IUserOrdersDAO userOrdersDAO;
|
|
|
//
|
|
|
// static Logger logger = LoggerFactory.getLogger(DuomaiServiceImpl.class);
|
|
|
//
|
|
|
// @Override
|
|
|
// public void pushOrder(List<OrderInfo> orderInfoList) {
|
|
|
// List<String> successCodes = new ArrayList<>();
|
|
|
// String duomaiContext = getDuomaiContext(orderInfoList);
|
|
|
// OrderInfo orderInfo = orderInfoList.get(0);
|
|
|
// int clientId = orderInfo.getClientId();
|
|
|
// String duomaiPushUrl = null;
|
|
|
// if (clientId == 3017) {
|
|
|
// duomaiPushUrl = "http://www.duomai.com/api/push/yohobuy.php";
|
|
|
// } else if (clientId == 3019) {
|
|
|
// duomaiPushUrl = "http://www.duomai.com/api/push/myohobuy.php";
|
|
|
// } else {
|
|
|
// duomaiPushUrl = "http://www.duomai.com/api/push/yohobuyroi.php";
|
|
|
// }
|
|
|
// Pair<Integer, String> pair = null;
|
|
|
// Map param = new HashMap<>();
|
|
|
// param.put("content", duomaiContext);
|
|
|
// try {
|
|
|
// logger.info("pushOrder: url is {}, param is {}", duomaiPushUrl, param);
|
|
|
// pair = HttpUtils.httpPost(duomaiPushUrl, param);
|
|
|
// } catch (Exception e) {
|
|
|
// logger.error("duomai order post fail,orderCode is {}", orderInfo.getParentOrderCode());
|
|
|
// }
|
|
|
// JSONObject json = JSONObject.parseObject(pair.getRight());
|
|
|
// if (((String) json.get("code")).equals("200")) {
|
|
|
// logger.info("duomai pushOrder success,orderCode is {}", orderInfo.getParentOrderCode());
|
|
|
// successCodes.add(orderInfo.getParentOrderCode());
|
|
|
// } else {
|
|
|
// logger.warn("duomai pushOrder fail,orderCode is {},message is {}", orderInfo.getParentOrderCode(), (String) json.get("msg"));
|
|
|
// }
|
|
|
// //批量更新推送成功的订单状态为1
|
|
|
// userOrdersDAO.batchUpdatePush(successCodes);
|
|
|
// }
|
|
|
//
|
|
|
// private String getDuomaiContext(List<OrderInfo> orderInfoList) {
|
|
|
// String urlContext = null;
|
|
|
// for (OrderInfo orderInfo : orderInfoList) {
|
|
|
// //联盟id
|
|
|
// int client_id = orderInfo.getClientId();
|
|
|
// String hash = "";
|
|
|
// int channel = 0;
|
|
|
// if (client_id == 3017) {
|
|
|
// hash = "96613bf38393aa3d16451218f22344a8";
|
|
|
// channel = 0;
|
|
|
// } else if (client_id == 3019) {
|
|
|
// hash = "d54be2dbc75753eb863ba6139950656b";
|
|
|
// channel = 1;
|
|
|
// } else if (client_id == 3057) {
|
|
|
// hash = "bbf70bcaf5c52947ad26853f7cc1176d";
|
|
|
// channel = 0;
|
|
|
// }
|
|
|
// //多麦在YOHO上的网站主标识
|
|
|
// String euid = orderInfo.getMbrName();
|
|
|
// String orderCode = orderInfo.getOrderCode();
|
|
|
// int orderTime = orderInfo.getOrderTime();
|
|
|
// BigDecimal orderAmount = orderInfo.getOrderAmount();
|
|
|
// String orderStatus = orderInfo.getOrderStatus();
|
|
|
// List<OrdersGood> goods = orderInfo.getOrdersGoods();
|
|
|
// List<String> goodsIdList = new ArrayList<>();
|
|
|
// List<String> goodsNameList = new ArrayList<>();
|
|
|
// List<BigDecimal> goodsPriceList = new ArrayList<>();
|
|
|
// //商品结算金额 price*num-优惠&折扣
|
|
|
// List<BigDecimal> goodsTotalPriceList = new ArrayList<>();
|
|
|
// // 商品分类编号
|
|
|
// List<Integer> small_sort_idList = new ArrayList<>();
|
|
|
// List<Integer> goodsNumList = new ArrayList<>();
|
|
|
//
|
|
|
// for(OrdersGood ordersGood:goods){
|
|
|
// goodsIdList.add(ordersGood.getProductSkn());
|
|
|
// goodsNameList.add(ordersGood.getProductName());
|
|
|
// goodsPriceList.add(ordersGood.getLastPrice());
|
|
|
// goodsNumList.add(ordersGood.getBuyNumber());
|
|
|
// small_sort_idList.add(ordersGood.getSortId());
|
|
|
// goodsTotalPriceList.add(ordersGood.getLastPrice());
|
|
|
// }
|
|
|
//
|
|
|
// LinkedHashMap<String, Object> linkedHashMap = new LinkedHashMap<>();
|
|
|
// linkedHashMap.put("hash", hash);
|
|
|
// linkedHashMap.put("euid", euid);
|
|
|
// linkedHashMap.put("order_sn", orderCode);
|
|
|
// linkedHashMap.put("order_time", orderTime);
|
|
|
// linkedHashMap.put("orders_price", orderAmount);
|
|
|
// linkedHashMap.put("promotion_code", 0);
|
|
|
// //@TODO需要订单传过来,是否新用户
|
|
|
// linkedHashMap.put("is_new_custom", 0);
|
|
|
// linkedHashMap.put("channel", channel);
|
|
|
// linkedHashMap.put("status", orderStatus);
|
|
|
// linkedHashMap.put("goods_id", CollectionUtils.isEmpty(goodsIdList) ? "" : org.apache.commons.lang.StringUtils.join(goodsIdList, "|"));
|
|
|
// linkedHashMap.put("goods_name", CollectionUtils.isEmpty(goodsNameList) ? "" : org.apache.commons.lang.StringUtils.join(goodsNameList, "|"));
|
|
|
// linkedHashMap.put("goods_price", CollectionUtils.isEmpty(goodsPriceList) ? "" : org.apache.commons.lang.StringUtils.join(goodsPriceList, "|"));
|
|
|
// linkedHashMap.put("goods_ta", CollectionUtils.isEmpty(goodsNumList) ? "" : org.apache.commons.lang.StringUtils.join(goodsNumList, "|"));
|
|
|
// linkedHashMap.put("goods_cate", CollectionUtils.isEmpty(small_sort_idList) ? "" : org.apache.commons.lang.StringUtils.join(small_sort_idList, "|"));
|
|
|
// linkedHashMap.put("goods_cate_name", 0);
|
|
|
// linkedHashMap.put("totalPrice", CollectionUtils.isEmpty(goodsTotalPriceList) ? "" : org.apache.commons.lang.StringUtils.join(goodsTotalPriceList, "|"));
|
|
|
// //佣金计算,月底计算一次,7%计算,数据库比例已经老的
|
|
|
// linkedHashMap.put("rate", 0);
|
|
|
// linkedHashMap.put("commission", "");
|
|
|
// linkedHashMap.put("commission_type", 0);
|
|
|
// double coupon = 12d;
|
|
|
// linkedHashMap.put("coupon", MathUtils.roundPrice(coupon));
|
|
|
// Set<String> keys = linkedHashMap.keySet();
|
|
|
// StringBuilder builder = new StringBuilder();
|
|
|
// for (String key : keys) {
|
|
|
// builder.append(key).append("=").append(linkedHashMap.get(key)).append("&");
|
|
|
// }
|
|
|
// try {
|
|
|
// urlContext = URLEncoder.encode(builder.substring(0, builder.length() - 1), "UTF-8");
|
|
|
// } catch (Exception e) {
|
|
|
// logger.warn("send duomai error", e.getMessage());
|
|
|
// }
|
|
|
// }
|
|
|
// return urlContext;
|
|
|
// }
|
|
|
//
|
|
|
//} |
...
|
...
|
|