|
@@ -156,111 +156,86 @@ public class PayOrderServiceImpl implements PayOrderService {
|
|
|
* @param orderId 订单Id
|
|
|
*/
|
|
|
@Override
|
|
|
- public ResponseJson<Map<String, Object>> balanceDeduction(Integer orderId) {
|
|
|
+ public ResponseJson<Map<String, Object>> balanceDeduction(Integer shopOrderId) {
|
|
|
// 订单信息
|
|
|
- OrderVo order = orderCommonMapper.getOrderByOrderId(orderId);
|
|
|
- if (null == order) {
|
|
|
+ ShopOrderVo shopOrder = orderCommonMapper.getShopOrderByOrderId(shopOrderId);
|
|
|
+ if (null == shopOrder) {
|
|
|
return ResponseJson.error("订单不存在", null);
|
|
|
}
|
|
|
// 付款金额
|
|
|
- orderCommonService.getDiscernReceiptAndSetOrder(order);
|
|
|
+ orderCommonService.getDiscernReceiptAndSetShoporder(shopOrder);
|
|
|
// 可用余额
|
|
|
- Double availableMoney = baseMapper.getAbleUserMoney(order.getUserId());
|
|
|
+ Double availableMoney = baseMapper.getAbleUserMoney(shopOrder.getUserId());
|
|
|
Double balancePayFee = 0d;
|
|
|
if (MathUtil.compare(availableMoney, 0) > 0) {
|
|
|
//可用余额>待付
|
|
|
- if (MathUtil.compare(availableMoney, order.getPendingPayments()) >= 0) {
|
|
|
- if (OrderStatus.UNCONFIRMED.getCode() != order.getStatus()) {
|
|
|
- if (1 == order.getSendOutStatus()) {
|
|
|
- order.setStatus(31);
|
|
|
- } else if (2 == order.getSendOutStatus()) {
|
|
|
- order.setStatus(32);
|
|
|
- } else {
|
|
|
- order.setStatus(33);
|
|
|
- }
|
|
|
- }
|
|
|
- order.setReceiptStatus(3);
|
|
|
- balancePayFee = order.getPendingPayments();
|
|
|
+ if (MathUtil.compare(availableMoney, shopOrder.getObligation()) >= 0) {
|
|
|
+ shopOrder.setReceiptStatus(3);
|
|
|
+ balancePayFee = shopOrder.getObligation();
|
|
|
} else {
|
|
|
- if (OrderStatus.UNCONFIRMED.getCode() != order.getStatus()) {
|
|
|
- //待确认状态,不修改订单状态
|
|
|
- if (1 == order.getSendOutStatus()) {
|
|
|
- order.setStatus(21);
|
|
|
- } else if (2 == order.getSendOutStatus()) {
|
|
|
- order.setStatus(22);
|
|
|
- } else {
|
|
|
- order.setStatus(23);
|
|
|
- }
|
|
|
- }
|
|
|
- order.setReceiptStatus(2);
|
|
|
+ shopOrder.setReceiptStatus(2);
|
|
|
balancePayFee = availableMoney;
|
|
|
}
|
|
|
//设置余额支付金额
|
|
|
- order.setBalancePayFee(MathUtil.add(order.getBalancePayFee(), balancePayFee).doubleValue());
|
|
|
+ shopOrder.setAccountAmount(MathUtil.add(shopOrder.getAccountAmount(), balancePayFee).doubleValue());
|
|
|
//设置真实支付金额
|
|
|
- order.setPayableAmount(MathUtil.sub(order.getPayableAmount(), balancePayFee).doubleValue());
|
|
|
- Date date = new Date();
|
|
|
- String curDateStr = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(date);
|
|
|
- order.setUpdateDate(curDateStr);
|
|
|
- order.setOnlinePayFlag(1);
|
|
|
+ shopOrder.setReceiptAmount(MathUtil.sub(shopOrder.getReceiptAmount(), balancePayFee).doubleValue());
|
|
|
+ shopOrder.setOnlinePay(1);
|
|
|
// 更新订单支付状态
|
|
|
- payOrderMapper.updateOrderStatus(order);
|
|
|
- // 剩余待付金额
|
|
|
- order.setPendingPayments(MathUtil.sub(order.getPendingPayments(), balancePayFee).doubleValue());
|
|
|
+ payOrderMapper.updateShopOrderBalancePay(shopOrder);
|
|
|
// 修改账户余额
|
|
|
- double userMoney = baseMapper.getUserMoney(order.getUserId());
|
|
|
- if (OrderStatus.UNCONFIRMED.getCode() != order.getStatus()) {
|
|
|
+ double userMoney = baseMapper.getUserMoney(shopOrder.getUserId());
|
|
|
+ if (OrderStatus.UNCONFIRMED.getCode() != shopOrder.getStatus()) {
|
|
|
/**
|
|
|
- * 子订单循环抵扣用户余额
|
|
|
+ * 子订单抵扣用户余额
|
|
|
*/
|
|
|
- productService.saveShopOrderDiscernReceipt(balancePayFee, order);
|
|
|
+ productService.saveShopOrderDiscernReceipt(balancePayFee, shopOrder);
|
|
|
}
|
|
|
//可用=可用-本次抵扣
|
|
|
availableMoney = MathUtil.sub(availableMoney, balancePayFee).doubleValue();
|
|
|
userMoney = MathUtil.sub(userMoney, balancePayFee).doubleValue();
|
|
|
- payOrderMapper.updateMoneyByUserId(userMoney, availableMoney, order.getUserId());
|
|
|
- log.info("【订单支付,余额抵扣】>>>>>>>>>>>更新用户余额(update[user])userId:" + order.getUserId() + ",orderId:" + orderId);
|
|
|
- log.info("************************订单支付完成消息推送*********************");
|
|
|
- //判断是否是二手订单和返佣订单
|
|
|
- List<Integer> productIds = orderClubMapper.getProductOrder(orderId);
|
|
|
- if (0 == orderClubMapper.getsecondHandOrderFlag(orderId) && 0 == orderClubMapper.getrebateFlag(orderId) && (null != productIds && !productIds.contains(6060))) {
|
|
|
- try {
|
|
|
- String accessToken = weChatService.getAccessToken();
|
|
|
- List<String> openidList = orderClubMapper.getOpenidListByPermission(orderClubMapper.FromUnionId(order.getOrderId()));
|
|
|
- openidList.removeIf(Objects::isNull);
|
|
|
- String name = StringUtils.strip(orderClubMapper.getOrderIds(orderId).toString().substring(0, 11), "[]");
|
|
|
- String associateTitle = "订单支付成功!";
|
|
|
- Double money = orderClubMapper.getpayTotalFee(orderId);
|
|
|
- String orderno = order.getOrderNo();
|
|
|
- String paytime = curDateStr;
|
|
|
- String remarkText = "采美将尽快为您安排发货~";
|
|
|
- // 跳转到【小程序付款-选择支付方式页面】
|
|
|
- String pagePath = "pages/user/order/order-details?type=share&orderId=" + orderId;
|
|
|
- for (String openid : openidList) {
|
|
|
- // sendTemplateMsg(openid, 标题, 金额, 收款日期, 备注, 跳转链接)
|
|
|
- weChatService.sendTemplateMsgz(accessToken, openid, associateTitle, paytime, name, orderno, money, remarkText, pagePath);
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("【订单发货通知】获取微信公众号access_token异常!", e);
|
|
|
- }
|
|
|
-
|
|
|
- //推送信息中心-交易物流
|
|
|
- MessageCenter messageCenter = new MessageCenter();
|
|
|
- messageCenter.setShopID(null);
|
|
|
- messageCenter.setClubID(order.getClubId());
|
|
|
- messageCenter.setUserType(1);
|
|
|
- messageCenter.setMessageType(1);
|
|
|
- messageCenter.setOrderMessageType(2);
|
|
|
- messageCenter.setOrderID(orderId);
|
|
|
- messageCenter.setContent(null);
|
|
|
- messageCenter.setTime(curDateStr);
|
|
|
- orderClubMapper.addMessageCenter(messageCenter);
|
|
|
-
|
|
|
- }
|
|
|
- log.info("支付成功" + order.getUserId());
|
|
|
- }
|
|
|
+ payOrderMapper.updateMoneyByUserId(userMoney, availableMoney, shopOrder.getUserId());
|
|
|
+ log.info("【订单支付,余额抵扣】>>>>>>>>>>>更新用户余额(update[user])userId:" + shopOrder.getUserId() + ",shopOrderId:" + shopOrder.getShopOrderId());
|
|
|
+// log.info("************************订单支付完成消息推送*********************");
|
|
|
+// //判断是否是二手订单和返佣订单
|
|
|
+// List<Integer> productIds = orderClubMapper.getProductOrder(shopOrder.getOrderId());
|
|
|
+// if (0 == orderClubMapper.getsecondHandOrderFlag(orderId) && 0 == orderClubMapper.getrebateFlag(orderId) && (null != productIds && !productIds.contains(6060))) {
|
|
|
+// try {
|
|
|
+// String accessToken = weChatService.getAccessToken();
|
|
|
+// List<String> openidList = orderClubMapper.getOpenidListByPermission(orderClubMapper.FromUnionId(order.getOrderId()));
|
|
|
+// openidList.removeIf(Objects::isNull);
|
|
|
+// String name = StringUtils.strip(orderClubMapper.getOrderIds(orderId).toString().substring(0, 11), "[]");
|
|
|
+// String associateTitle = "订单支付成功!";
|
|
|
+// Double money = orderClubMapper.getpayTotalFee(orderId);
|
|
|
+// String orderno = order.getOrderNo();
|
|
|
+// String paytime = curDateStr;
|
|
|
+// String remarkText = "采美将尽快为您安排发货~";
|
|
|
+// // 跳转到【小程序付款-选择支付方式页面】
|
|
|
+// String pagePath = "pages/user/order/order-details?type=share&orderId=" + orderId;
|
|
|
+// for (String openid : openidList) {
|
|
|
+// // sendTemplateMsg(openid, 标题, 金额, 收款日期, 备注, 跳转链接)
|
|
|
+// weChatService.sendTemplateMsgz(accessToken, openid, associateTitle, paytime, name, orderno, money, remarkText, pagePath);
|
|
|
+// }
|
|
|
+// } catch (Exception e) {
|
|
|
+// log.error("【订单发货通知】获取微信公众号access_token异常!", e);
|
|
|
+// }
|
|
|
+//
|
|
|
+// //推送信息中心-交易物流
|
|
|
+// MessageCenter messageCenter = new MessageCenter();
|
|
|
+// messageCenter.setShopID(null);
|
|
|
+// messageCenter.setClubID(order.getClubId());
|
|
|
+// messageCenter.setUserType(1);
|
|
|
+// messageCenter.setMessageType(1);
|
|
|
+// messageCenter.setOrderMessageType(2);
|
|
|
+// messageCenter.setOrderID(orderId);
|
|
|
+// messageCenter.setContent(null);
|
|
|
+// messageCenter.setTime(curDateStr);
|
|
|
+// orderClubMapper.addMessageCenter(messageCenter);
|
|
|
+//
|
|
|
+// }
|
|
|
+// }
|
|
|
Map<String, Object> map = new HashMap<>(2);
|
|
|
- map.put("order", order);
|
|
|
+ map.put("order", shopOrder);
|
|
|
map.put("balancePayFee", balancePayFee);
|
|
|
return ResponseJson.success(map);
|
|
|
}
|