|
@@ -322,17 +322,24 @@ public class OrderServiceImpl implements OrderService {
|
|
List<Goods> goodsList = new ArrayList<>();
|
|
List<Goods> goodsList = new ArrayList<>();
|
|
for (OrderGoodsEntity orderGoods : orderGoodsEntityList) {
|
|
for (OrderGoodsEntity orderGoods : orderGoodsEntityList) {
|
|
goodsTotal += orderGoods.getNumber();
|
|
goodsTotal += orderGoods.getNumber();
|
|
- total = total.add(orderGoods.getMarketPrice().multiply(new BigDecimal(orderGoods.getNumber())))
|
|
|
|
|
|
+ total = total.add(orderGoods.getRetailPrice().multiply(new BigDecimal(orderGoods.getNumber())))
|
|
.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
- taxTotal = taxTotal.add(orderGoods.getGoodsRate().multiply(orderGoods.getMarketPrice()).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
|
- Goods goods = new Goods(orderGoods.getGoodsName(), orderGoods.getMarketPrice().toString(),
|
|
|
|
- orderGoods.getGoodsRate().multiply(orderGoods.getMarketPrice()).setScale(2, BigDecimal.ROUND_HALF_UP).toString(),
|
|
|
|
|
|
+
|
|
|
|
+ BigDecimal currentTax = orderGoods.getGoodsRate().multiply(orderGoods.getRetailPrice().multiply(new BigDecimal(orderGoods.getNumber())))
|
|
|
|
+ .setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ taxTotal = taxTotal.add(currentTax);
|
|
|
|
+
|
|
|
|
+ Goods goods = new Goods(orderGoods.getGoodsName(),
|
|
|
|
+ orderGoods.getRetailPrice().toString(),
|
|
|
|
+ currentTax.toString(),
|
|
orderGoods.getNumber().toString(),
|
|
orderGoods.getNumber().toString(),
|
|
- orderGoods.getRetailPrice().multiply(new BigDecimal(orderGoods.getNumber()))
|
|
|
|
- .setScale(2, BigDecimal.ROUND_HALF_UP).toString());
|
|
|
|
|
|
+ new BigDecimal(orderGoods.getNumber()).multiply(orderGoods.getRetailPrice()).setScale(2,RoundingMode.HALF_UP).toString());
|
|
goodsList.add(goods);
|
|
goodsList.add(goods);
|
|
|
|
+ LOGGER.info(goods.toString());
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
// 收银信息
|
|
// 收银信息
|
|
CashInfo cashInfo = new CashInfo();
|
|
CashInfo cashInfo = new CashInfo();
|
|
cashInfo.setGoodsTotal(goodsTotal.toString());
|
|
cashInfo.setGoodsTotal(goodsTotal.toString());
|
|
@@ -387,21 +394,31 @@ public class OrderServiceImpl implements OrderService {
|
|
BigDecimal total = Constant.ZERO; // 商品总计
|
|
BigDecimal total = Constant.ZERO; // 商品总计
|
|
BigDecimal taxTotal = Constant.ZERO; //税费总计
|
|
BigDecimal taxTotal = Constant.ZERO; //税费总计
|
|
List<Goods> goodsList = new ArrayList<>();
|
|
List<Goods> goodsList = new ArrayList<>();
|
|
|
|
+ BigDecimal discountedPrice = Constant.ZERO; // 优惠金额
|
|
for (OrderGoodsEntity orderGoods : orderGoodsEntityList) {
|
|
for (OrderGoodsEntity orderGoods : orderGoodsEntityList) {
|
|
goodsTotal += orderGoods.getNumber();
|
|
goodsTotal += orderGoods.getNumber();
|
|
- BigDecimal totalPirce = orderGoods.getMarketPrice().add(orderGoods.getDiscountedPrice()).setScale(2,BigDecimal.ROUND_HALF_DOWN);
|
|
|
|
- total = total.add(totalPirce);
|
|
|
|
-// total = total.add(orderGoods.getMarketPrice().multiply(new BigDecimal(orderGoods.getNumber())))
|
|
|
|
-// .setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
- BigDecimal uprice = totalPirce.divide(new BigDecimal(orderGoods.getNumber()), 2, 5); // 单价
|
|
|
|
- taxTotal = taxTotal.add((uprice.divide((new BigDecimal(1)).add(orderGoods.getGoodsRate()), 2, 5)).multiply(orderGoods.getGoodsRate())
|
|
|
|
- .setScale(2,BigDecimal.ROUND_HALF_DOWN));
|
|
|
|
-
|
|
|
|
- Goods goods = new Goods(orderGoods.getGoodsName(), uprice.toString(),
|
|
|
|
- orderGoods.getGoodsRate().multiply(orderGoods.getMarketPrice()).setScale(2, BigDecimal.ROUND_HALF_UP).toString(),
|
|
|
|
- orderGoods.getNumber().toString(),
|
|
|
|
- orderGoods.getActualPaymentAmount().toString());
|
|
|
|
|
|
+ total = total.add(orderGoods.getRetailPrice().multiply(new BigDecimal(orderGoods.getNumber())))
|
|
|
|
+ .setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ discountedPrice = discountedPrice.add(orderGoods.getDiscountedPrice());
|
|
|
|
+
|
|
|
|
+ // 税前价
|
|
|
|
+ BigDecimal beforeTaxPrice = orderGoods.getRetailPrice().divide(new BigDecimal(1).add(orderGoods.getGoodsRate()), 2, RoundingMode.HALF_UP);
|
|
|
|
+
|
|
|
|
+ BigDecimal currentTax = orderGoods.getGoodsRate() // 税率
|
|
|
|
+ .multiply(beforeTaxPrice // 税前价
|
|
|
|
+ .multiply(new BigDecimal(orderGoods.getNumber()))) // 数量
|
|
|
|
+ .setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ taxTotal = taxTotal.add(currentTax);
|
|
|
|
+
|
|
|
|
+ Goods goods = new Goods(orderGoods.getGoodsName(),
|
|
|
|
+ orderGoods.getRetailPrice().toString(), // 含税价
|
|
|
|
+// beforeTaxPrice.toString(),// 税前价
|
|
|
|
+ currentTax.toString(),
|
|
|
|
+ orderGoods.getNumber().toString(),
|
|
|
|
+ new BigDecimal(orderGoods.getNumber()).multiply(orderGoods.getRetailPrice()).setScale(2,RoundingMode.HALF_UP).toString(),
|
|
|
|
+ orderGoods.getDiscountedPrice().toString());
|
|
goodsList.add(goods);
|
|
goodsList.add(goods);
|
|
|
|
+ LOGGER.info(goods.toString());
|
|
}
|
|
}
|
|
|
|
|
|
// 收银信息
|
|
// 收银信息
|
|
@@ -410,12 +427,15 @@ public class OrderServiceImpl implements OrderService {
|
|
cashInfo.setTotal(total.setScale(2, BigDecimal.ROUND_HALF_UP).toString());
|
|
cashInfo.setTotal(total.setScale(2, BigDecimal.ROUND_HALF_UP).toString());
|
|
cashInfo.setTaxTotal(taxTotal.setScale(2, BigDecimal.ROUND_HALF_UP).toString());
|
|
cashInfo.setTaxTotal(taxTotal.setScale(2, BigDecimal.ROUND_HALF_UP).toString());
|
|
cashInfo.setReceipts(orderEntity.getActualPrice().setScale(2, BigDecimal.ROUND_HALF_UP).toString());
|
|
cashInfo.setReceipts(orderEntity.getActualPrice().setScale(2, BigDecimal.ROUND_HALF_UP).toString());
|
|
- cashInfo.setOddChange("0.00");
|
|
|
|
|
|
+ cashInfo.setOddChange(discountedPrice.toString());
|
|
cashInfo.setCoupon(orderEntity.getCouponPrice().setScale(2, BigDecimal.ROUND_HALF_UP).toString());
|
|
cashInfo.setCoupon(orderEntity.getCouponPrice().setScale(2, BigDecimal.ROUND_HALF_UP).toString());
|
|
cashInfo.setFreight(
|
|
cashInfo.setFreight(
|
|
new BigDecimal(orderEntity.getFreightPrice()).setScale(2, BigDecimal.ROUND_HALF_UP).toString());
|
|
new BigDecimal(orderEntity.getFreightPrice()).setScale(2, BigDecimal.ROUND_HALF_UP).toString());
|
|
- cashInfo.setPaymentMode("支付宝支付");
|
|
|
|
-
|
|
|
|
|
|
+ if("alipay".equals(orderEntity.getPayFlag())){
|
|
|
|
+ cashInfo.setPaymentMode("支付宝支付");
|
|
|
|
+ }else {
|
|
|
|
+ cashInfo.setPaymentMode("微信支付");
|
|
|
|
+ }
|
|
// 海关清单
|
|
// 海关清单
|
|
CusListing cusListing = new CusListing();
|
|
CusListing cusListing = new CusListing();
|
|
cusListing.setOrderId(orderEntity.getOrderSn());
|
|
cusListing.setOrderId(orderEntity.getOrderSn());
|
|
@@ -1878,6 +1898,11 @@ public class OrderServiceImpl implements OrderService {
|
|
merchUserEntity.setCreateTime(new Date());
|
|
merchUserEntity.setCreateTime(new Date());
|
|
merchUserEntity.setIsLoadGoods("0");
|
|
merchUserEntity.setIsLoadGoods("0");
|
|
merchUserDao.save(merchUserEntity);
|
|
merchUserDao.save(merchUserEntity);
|
|
|
|
+ }else{
|
|
|
|
+ userEntity.setUsername((String) userInfo.get("customName"));
|
|
|
|
+ userEntity.setIdNo((String) userInfo.get("customIDCard"));
|
|
|
|
+ userEntity.setMobile((String) userInfo.get("customPhone"));
|
|
|
|
+ userDao.update(userEntity);
|
|
}
|
|
}
|
|
|
|
|
|
// TODO 查询使用的优惠券,并减扣金额
|
|
// TODO 查询使用的优惠券,并减扣金额
|
|
@@ -1962,13 +1987,19 @@ public class OrderServiceImpl implements OrderService {
|
|
// 判断是微信的支付码还是支付宝的支付码
|
|
// 判断是微信的支付码还是支付宝的支付码
|
|
if (parCode.startsWith("28")) {
|
|
if (parCode.startsWith("28")) {
|
|
// 支付宝支付
|
|
// 支付宝支付
|
|
- AliPay(user, parCode , order, processRecordEntity, orderWXPayRecordCurrent, store);
|
|
|
|
|
|
+ try {
|
|
|
|
+ AliPay(user, parCode , order, processRecordEntity, orderWXPayRecordCurrent, store);
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ throw e;
|
|
|
|
+ }
|
|
|
|
|
|
}else{
|
|
}else{
|
|
// 微信支付
|
|
// 微信支付
|
|
try {
|
|
try {
|
|
wxPay(user, parCode, resultObj, order, processRecordEntity, orderWXPayRecordCurrent, store);
|
|
wxPay(user, parCode, resultObj, order, processRecordEntity, orderWXPayRecordCurrent, store);
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
|
+ e.printStackTrace();
|
|
throw e;
|
|
throw e;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -2159,10 +2190,20 @@ public class OrderServiceImpl implements OrderService {
|
|
private void AliPay(SysUserEntity user, String parCode, OrderVo order, OrderProcessRecordEntity processRecordEntity, OrderWXPayRecordEntity orderWXPayRecordCurrent, StoreEntity store) throws Exception {
|
|
private void AliPay(SysUserEntity user, String parCode, OrderVo order, OrderProcessRecordEntity processRecordEntity, OrderWXPayRecordEntity orderWXPayRecordCurrent, StoreEntity store) throws Exception {
|
|
|
|
|
|
AliPayRequestParams params = new AliPayRequestParams();
|
|
AliPayRequestParams params = new AliPayRequestParams();
|
|
|
|
+
|
|
|
|
+ String orderBizTypeZn = "普通货物";
|
|
|
|
+ if ("00".equals(order.getOrderBizType())) {
|
|
|
|
+ orderBizTypeZn = "保税备货";
|
|
|
|
+ } else if ("02".equals(order.getOrderBizType())) {
|
|
|
|
+ orderBizTypeZn = "保税展示补货";
|
|
|
|
+ } else if ("10".equals(order.getOrderBizType())) {
|
|
|
|
+ orderBizTypeZn = "保税展示跨境";
|
|
|
|
+ }
|
|
|
|
+
|
|
params.setAuthCode(parCode);
|
|
params.setAuthCode(parCode);
|
|
params.setBody(order.getApprovalRemark());
|
|
params.setBody(order.getApprovalRemark());
|
|
params.setOutTradeNo(order.getOrder_sn());
|
|
params.setOutTradeNo(order.getOrder_sn());
|
|
- params.setSubject("CW下单");
|
|
|
|
|
|
+ params.setSubject(store.getMerchName() + "-" + store.getStoreName() + "-" + orderBizTypeZn);
|
|
params.setStoreId(store.getId()+"");
|
|
params.setStoreId(store.getId()+"");
|
|
params.setTotalAmount(order.getActual_price().setScale(2,BigDecimal.ROUND_HALF_UP)+"");
|
|
params.setTotalAmount(order.getActual_price().setScale(2,BigDecimal.ROUND_HALF_UP)+"");
|
|
LOGGER.info("调用阿里支付接口的请求参数:"+JacksonUtils.toJson(params));
|
|
LOGGER.info("调用阿里支付接口的请求参数:"+JacksonUtils.toJson(params));
|
|
@@ -2282,28 +2323,28 @@ public class OrderServiceImpl implements OrderService {
|
|
//查询当前订单所有的支付记录
|
|
//查询当前订单所有的支付记录
|
|
List<OrderWXPayRecordEntity> orderWXPayRecordEntitys =
|
|
List<OrderWXPayRecordEntity> orderWXPayRecordEntitys =
|
|
orderWXPayRecordService.getRecordsByOutTradeNo(order.getOrder_sn());
|
|
orderWXPayRecordService.getRecordsByOutTradeNo(order.getOrder_sn());
|
|
- for (OrderWXPayRecordEntity orderWXPayRecordTemp : orderWXPayRecordEntitys) {
|
|
|
|
- //查询出来的记录排除当前已支付成功的记录,对其他记录交易状态为未撤销,未关闭的订单,调用撤销订单
|
|
|
|
- if (orderWXPayRecordTemp.getId() != orderWXPayRecordCurrent.getId() &&
|
|
|
|
- (!WechatUtil.WXTradeState.REVOKED.getCode().equals(orderWXPayRecordTemp.getTradeState()) ||
|
|
|
|
- !WechatUtil.WXTradeState.CLOSED.getCode().equals(orderWXPayRecordTemp.getTradeState()))) {
|
|
|
|
- WechatReverseApiResult wechatReverseApiResult =
|
|
|
|
- WechatUtil.wxReverse(orderWXPayRecordTemp.getOutTradeNoWX());
|
|
|
|
- //撤销订单成功
|
|
|
|
- if (WechatUtil.WXTradeState.SUCCESS.getCode().equals(wechatReverseApiResult.getReturn_code()) &&
|
|
|
|
- WechatUtil.WXTradeState.SUCCESS.getCode().equals(wechatReverseApiResult.getResult_code())) {
|
|
|
|
- //调用订单查询接口
|
|
|
|
- WechatRefundApiResult wechatRefundApiResult =
|
|
|
|
- WechatUtil.wxOrderQuery(orderWXPayRecordTemp.getOutTradeNoWX());
|
|
|
|
- if (WechatUtil.WXTradeState.SUCCESS.getCode().equals(wechatRefundApiResult.getReturn_code()) &&
|
|
|
|
- WechatUtil.WXTradeState.SUCCESS.getCode().equals(wechatRefundApiResult.getResult_code())) {
|
|
|
|
- // 修改订单支付记录
|
|
|
|
- orderWXPayRecordService
|
|
|
|
- .updateWXPayRecordTradeState(orderWXPayRecordTemp.getId(), wechatRefundApiResult);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+// for (OrderWXPayRecordEntity orderWXPayRecordTemp : orderWXPayRecordEntitys) {
|
|
|
|
+// //查询出来的记录排除当前已支付成功的记录,对其他记录交易状态为未撤销,未关闭的订单,调用撤销订单
|
|
|
|
+// if (orderWXPayRecordTemp.getId() != orderWXPayRecordCurrent.getId() &&
|
|
|
|
+// (!WechatUtil.WXTradeState.REVOKED.getCode().equals(orderWXPayRecordTemp.getTradeState()) ||
|
|
|
|
+// !WechatUtil.WXTradeState.CLOSED.getCode().equals(orderWXPayRecordTemp.getTradeState()))) {
|
|
|
|
+// WechatReverseApiResult wechatReverseApiResult =
|
|
|
|
+// WechatUtil.wxReverse(orderWXPayRecordTemp.getOutTradeNoWX());
|
|
|
|
+// //撤销订单成功
|
|
|
|
+// if (WechatUtil.WXTradeState.SUCCESS.getCode().equals(wechatReverseApiResult.getReturn_code()) &&
|
|
|
|
+// WechatUtil.WXTradeState.SUCCESS.getCode().equals(wechatReverseApiResult.getResult_code())) {
|
|
|
|
+// //调用订单查询接口
|
|
|
|
+// WechatRefundApiResult wechatRefundApiResult =
|
|
|
|
+// WechatUtil.wxOrderQuery(orderWXPayRecordTemp.getOutTradeNoWX());
|
|
|
|
+// if (WechatUtil.WXTradeState.SUCCESS.getCode().equals(wechatRefundApiResult.getReturn_code()) &&
|
|
|
|
+// WechatUtil.WXTradeState.SUCCESS.getCode().equals(wechatRefundApiResult.getResult_code())) {
|
|
|
|
+// // 修改订单支付记录
|
|
|
|
+// orderWXPayRecordService
|
|
|
|
+// .updateWXPayRecordTradeState(orderWXPayRecordTemp.getId(), wechatRefundApiResult);
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// }
|
|
LOGGER.info("wechatMicropayApiResult.getTransaction_id()"+wechatMicropayApiResult.getTransaction_id());
|
|
LOGGER.info("wechatMicropayApiResult.getTransaction_id()"+wechatMicropayApiResult.getTransaction_id());
|
|
|
|
|
|
Map orderRaram = Maps.newHashMap();
|
|
Map orderRaram = Maps.newHashMap();
|
|
@@ -2361,7 +2402,7 @@ public class OrderServiceImpl implements OrderService {
|
|
} else {
|
|
} else {
|
|
r = R.error(wechatReverseApiResult.getErr_code_des());
|
|
r = R.error(wechatReverseApiResult.getErr_code_des());
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+ throw new RuntimeException("订单支付失败");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -2389,6 +2430,9 @@ public class OrderServiceImpl implements OrderService {
|
|
processParam.put("orderSn", orderSn);
|
|
processParam.put("orderSn", orderSn);
|
|
orderDao.updateOrderProcessRecord(processParam);
|
|
orderDao.updateOrderProcessRecord(processParam);
|
|
|
|
|
|
|
|
+// orderWXPayRecordService
|
|
|
|
+// .updateWXPayRecordTradeState(orderWXPayRecordTemp.getId(), wechatRefundApiResult);
|
|
|
|
+
|
|
|
|
|
|
// 设置支付单完成时间
|
|
// 设置支付单完成时间
|
|
processRecordEntity.setPaymentSuccTimeStr(result.getTime_end());
|
|
processRecordEntity.setPaymentSuccTimeStr(result.getTime_end());
|