|
@@ -88,7 +88,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
|
|
|
@Override
|
|
|
public UserOrderVo detail(Long id) {
|
|
|
UserOrderVo userOrderVo = baseMapper.detailById(id);
|
|
|
- if(null != userOrderVo){
|
|
|
+ if (null != userOrderVo) {
|
|
|
userOrderVo.setOrderDetail(orderDetailService.detail(userOrderVo.getOrderNo()));
|
|
|
}
|
|
|
return userOrderVo;
|
|
@@ -97,7 +97,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
|
|
|
@Override
|
|
|
public UserOrderVo detail(String orderNo) {
|
|
|
UserOrderVo userOrderVo = baseMapper.detailByOrderNo(orderNo);
|
|
|
- if(null != userOrderVo){
|
|
|
+ if (null != userOrderVo) {
|
|
|
userOrderVo.setOrderDetail(orderDetailService.detail(userOrderVo.getOrderNo()));
|
|
|
}
|
|
|
return userOrderVo;
|
|
@@ -125,8 +125,6 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
|
|
|
}
|
|
|
if (!checkPositiveOrZero(createRes.getOriginalPrice())
|
|
|
|| !checkPositiveOrZero(createRes.getExpectPrice())
|
|
|
- || !checkPositiveOrZero(createRes.getActualPrice())
|
|
|
- || !checkPositiveOrZero(createRes.getCouponAmount())
|
|
|
) {
|
|
|
return HttpResponseResult.failed("金额校验失败");
|
|
|
}
|
|
@@ -160,16 +158,16 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
|
|
|
|
|
|
@Override
|
|
|
public void orderCallback(String data) {
|
|
|
- JSONObject jsonObject = JSONObject.parseObject(data);
|
|
|
- if (PayStatusEnum.succeeded.getCode().equals(jsonObject.getString("status"))) {
|
|
|
+ JSONObject hfRes = JSONObject.parseObject(data);
|
|
|
+ if (PayStatusEnum.succeeded.getCode().equals(hfRes.getString("status"))) {
|
|
|
//订单完成
|
|
|
- UserOrderVo detail = detail(jsonObject.getString("order_no"));
|
|
|
+ UserOrderVo detail = detail(hfRes.getString("order_no"));
|
|
|
if (null == detail) {
|
|
|
log.error("汇付支付回调,订单未找到。 req is {}", data);
|
|
|
return;
|
|
|
}
|
|
|
if (detail.getStatus().equals(OrderStatusEnum.PAYING)) {
|
|
|
- orderSuccess(detail);
|
|
|
+ orderSuccess(detail, hfRes);
|
|
|
} else {
|
|
|
log.error("汇付支付回调,订单状态异常。 req is {}", data);
|
|
|
}
|
|
@@ -270,6 +268,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
|
|
|
insertOrderPayment(res, payReq);
|
|
|
return HttpResponseResult.succeed(orderPayRes);
|
|
|
}
|
|
|
+
|
|
|
/***
|
|
|
* 插入订单付款单
|
|
|
* @author liweifan
|
|
@@ -334,11 +333,15 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
|
|
|
userOrder.setStatus(OrderStatusEnum.WAIT_PAY);
|
|
|
userOrder.setOriginalPrice(data.getOriginalPrice());
|
|
|
userOrder.setExpectPrice(data.getExpectPrice());
|
|
|
- userOrder.setActualPrice(data.getActualPrice());
|
|
|
- userOrder.setCouponAmount(data.getCouponAmount());
|
|
|
+
|
|
|
+ //todo 优惠券优惠金额,暂时为0
|
|
|
+ BigDecimal couponAmount = new BigDecimal(0);
|
|
|
+
|
|
|
+ userOrder.setActualPrice(data.getExpectPrice().subtract(couponAmount).setScale(2));
|
|
|
+ userOrder.setCouponAmount(couponAmount);
|
|
|
//平台服务费
|
|
|
BigDecimal serviceFeeRate = getServiceFeeRate(orderReq.getOrderType());
|
|
|
- userOrder.setPlantformFee(data.getActualPrice().multiply(serviceFeeRate));
|
|
|
+ userOrder.setPlantformFee(userOrder.getActualPrice().multiply(serviceFeeRate));
|
|
|
userOrder.setPlantformFeeRate(serviceFeeRate);
|
|
|
userOrder.setUserNote(orderReq.getUserNote());
|
|
|
userOrder.setOrderType(orderReq.getOrderType());
|
|
@@ -352,6 +355,15 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
|
|
|
orderDetail.setOrderNo(userOrder.getOrderNo());
|
|
|
orderDetail.setBizId(data.getBizId());
|
|
|
orderDetail.setBizContent(data.getBizContent());
|
|
|
+ if (null != data.getGoodNum()) {
|
|
|
+ orderDetail.setGoodNum(data.getGoodNum());
|
|
|
+ }
|
|
|
+
|
|
|
+ //商品单价计算,使用商品原价计算,退费计算公式(退费金额=实际订单金额-(商品单价 * 已经使用商品数))
|
|
|
+ //其中,已经使用的商品单价按照原价算
|
|
|
+ orderDetail.setGoodPrice(
|
|
|
+ data.getOriginalPrice().divide(new BigDecimal(data.getGoodNum())).setScale(2)
|
|
|
+ );
|
|
|
orderDetail.setCreateTime(new Date());
|
|
|
orderDetailService.save(orderDetail);
|
|
|
|
|
@@ -421,6 +433,10 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ void orderSuccess(UserOrderVo detail) {
|
|
|
+ orderSuccess(detail, null);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 订单完成
|
|
|
*
|
|
@@ -429,7 +445,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
|
|
|
* @updateTime 2022/4/13 17:17
|
|
|
*/
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- void orderSuccess(UserOrderVo detail) {
|
|
|
+ void orderSuccess(UserOrderVo detail, JSONObject hfRes) {
|
|
|
detail.setStatus(OrderStatusEnum.PAID);
|
|
|
detail.setPayTime(new Date());
|
|
|
updateById(detail);
|
|
@@ -437,6 +453,15 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
|
|
|
UserOrderPayment orderPayment = orderPaymentService.detailByOrderNo(detail.getOrderNo());
|
|
|
orderPayment.setStatus(PayStatusEnum.succeeded);
|
|
|
orderPayment.setArrivalTime(new Date());
|
|
|
+ if (null != hfRes) {
|
|
|
+ try {
|
|
|
+ orderPayment.setPayAmt(new BigDecimal(hfRes.getString("pay_amt")));
|
|
|
+ orderPayment.setFeeAmt(new BigDecimal(hfRes.getString("fee_amt")));
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ log.error("完成订单,付款单金额格式化失败,参数{}", hfRes.toJSONString());
|
|
|
+ }
|
|
|
+ }
|
|
|
orderPaymentService.updateById(orderPayment);
|
|
|
//调用业务
|
|
|
Consumer<UserOrderVo> userOrderVoConsumer = orderSuccess.get(detail.getOrderType());
|