|
@@ -167,42 +167,29 @@ public class EfastOrderServiceImpl implements EfastOrderService {
|
|
|
// set Requeset Data
|
|
|
Map<String, String> requestData = new HashMap<String, String>();
|
|
|
|
|
|
- int money = order.getSalesYetAmount();
|
|
|
-
|
|
|
- double couponMoney = 0;
|
|
|
- double avgPercentage = 0.0; //均摊比例
|
|
|
- //将优惠券抵消金额加入实付金额中
|
|
|
- if (order.getCouponId() != null && !"".equals(order.getCouponId())) {
|
|
|
- CouponItem couponItem = new CouponItem();
|
|
|
- couponItem.setCouponItemId(order.getCouponId());
|
|
|
- couponItem.setCouponItemUseropenid(order.getSalesOpenid());
|
|
|
- CouponType couponType = cartService.getCouponReduceByItemId(couponItem);
|
|
|
- if (null != couponType) {
|
|
|
- switch (couponType.getCouponType()) {
|
|
|
- case 1:
|
|
|
- couponMoney = couponType.getCouponReduce();
|
|
|
- break;
|
|
|
- case 2:
|
|
|
- couponMoney = order.getSalesAmount() * couponType.getCouponReduce();
|
|
|
- break;
|
|
|
- }
|
|
|
+ //总优惠
|
|
|
+ Double couponMoney = Double.valueOf(order.getSalesAmount() - order.getSalesYetAmount());
|
|
|
+
|
|
|
+ //计算分摊优惠
|
|
|
+ //R(X1) = X1 / X1+X2+…X(n) * reduce 订单项分摊优惠
|
|
|
+ Integer allcouponMoney = order.getSalesAmount() - order.getSalesYetAmount();
|
|
|
+ Integer salesYetAmount = order.getSalesYetAmount();
|
|
|
+ double yetAmount = order.getSalesAmount();
|
|
|
+ for (int k=0;k<items.size();k++) {
|
|
|
+ Double itemTotal = Double.valueOf(items.get(k).getItemTotal());
|
|
|
+ Double itemPayMonry = itemTotal / yetAmount * couponMoney; //在第K项使用的优惠
|
|
|
+
|
|
|
+ Integer newItemTotal = items.get(k).getItemTotal();
|
|
|
+ if((k+1) == items.size()){
|
|
|
+ newItemTotal -= allcouponMoney;
|
|
|
+ }else{
|
|
|
+ Integer newPayMonry = (itemPayMonry.intValue()/100)*100;
|
|
|
+ allcouponMoney = allcouponMoney - newPayMonry; //总优惠减去 第K项使用的优惠
|
|
|
+ newItemTotal -= newPayMonry;
|
|
|
}
|
|
|
+ items.get(k).setItemTotal(newItemTotal);
|
|
|
}
|
|
|
|
|
|
- //只计算用户用微信支付的金额,不包含余额支付
|
|
|
- if (order.getBalancePayAmount() != null && !"".equals(order.getBalancePayAmount().toString())) {
|
|
|
- money = money - order.getBalancePayAmount().intValue();
|
|
|
- couponMoney += order.getBalancePayAmount().intValue();
|
|
|
- }
|
|
|
- //计算分摊金额比例
|
|
|
- if (items != null && items.size() > 0) {
|
|
|
- double avgMoney = 0;
|
|
|
- for (OrderItem item : items) {
|
|
|
- avgMoney += item.getItemNum().intValue() * item.getItemProductDiscount();
|
|
|
- }
|
|
|
- //计算均摊比例
|
|
|
- avgPercentage = 1 - couponMoney / avgMoney;
|
|
|
- }
|
|
|
|
|
|
requestData.put("app_act", "rst.trade.new.add");
|
|
|
|
|
@@ -244,10 +231,7 @@ public class EfastOrderServiceImpl implements EfastOrderService {
|
|
|
orderData.put("goods_amount", (order.getSalesAmount())); // 商品总价
|
|
|
orderData.put("goods_count", items.size()); // 产品数量
|
|
|
orderData.put("mobile", order.getSalesAddressTel()); // 手机号码
|
|
|
- orderData.put("money_paid", money); // 已付款
|
|
|
orderData.put("oid", order.getSalesOrderid()); // 订单号
|
|
|
- orderData.put("order_amount", money); // 应付款,应付款金额要与已付款金额相同
|
|
|
-
|
|
|
|
|
|
/**
|
|
|
* 产品信息
|
|
@@ -258,11 +242,12 @@ public class EfastOrderServiceImpl implements EfastOrderService {
|
|
|
orders1.put("goods_name", item.getItemProductName()); // 产品名称
|
|
|
orders1.put("goods_number", item.getItemNum()); // 产品数量
|
|
|
orders1.put("goods_price", (item.getItemProductPrice())); // 产品原价
|
|
|
+ orders1.put("goods_discount", (item.getItemProductDiscount())); // 产品售价
|
|
|
+ orders1.put("goods_total", (item.getItemTotal())); // 产品售价
|
|
|
orders1.put("outer_sku", item.getProduectRemark()); // 产品SKU
|
|
|
- orders1.put("payment_ft", (item.getItemProductDiscount() * avgPercentage * item.getItemNum())); // 产品分摊价
|
|
|
+// orders1.put("payment_ft", (item.getItemProductDiscount() * avgPercentage * item.getItemNum())); // 产品分摊价
|
|
|
maps.add(orders1);
|
|
|
}
|
|
|
-
|
|
|
orderData.put("orders", maps); // 订单产品
|
|
|
orderData.put("pay_name", "weixinpay"); // 支付方式
|
|
|
orderData.put("pay_time", DateTimeUtil.format(order.getSalesTransactionDate()));// 支付时间
|
|
@@ -273,10 +258,11 @@ public class EfastOrderServiceImpl implements EfastOrderService {
|
|
|
orderData.put("shipping_name", "yto"); // 快递公司代码
|
|
|
orderData.put("tel", order.getSalesAddressTel()); // 我司电话
|
|
|
orderData.put("to_buyer", ""); // 商家备注
|
|
|
- //orderData.put("total_amount", (order.getSalesAmount()/100.0)); // 订单总额
|
|
|
- orderData.put("total_amount", (order.getSalesAmount())); // 订单总额
|
|
|
orderData.put("user_name", order.getSalesOpenid()); // 买家账户 百胜根据user_name来判断是否有重复,传openId是为了防止重复
|
|
|
orderData.put("zipcode", order.getSalesAddressPostnum()); // 邮编
|
|
|
+ orderData.put("total_amount", (order.getSalesAmount())); // 订单总额
|
|
|
+ orderData.put("money_paid", order.getSalesYetAmount()); // 已付款
|
|
|
+ orderData.put("order_amount", order.getSalesYetAmount()); // 应付款,应付款金额要与已付款金额相同
|
|
|
|
|
|
|
|
|
com.fasterxml.jackson.databind.ObjectMapper mapper = new ObjectMapper();
|