|
@@ -1,4 +1,9 @@
|
|
|
package com.zbkj.service.service.impl;
|
|
package com.zbkj.service.service.impl;
|
|
|
|
|
+
|
|
|
|
|
+import java.math.RoundingMode;
|
|
|
|
|
+import java.time.LocalDate;
|
|
|
|
|
+import java.time.LocalDateTime;
|
|
|
|
|
+import java.time.LocalTime;
|
|
|
import java.util.Date;
|
|
import java.util.Date;
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.collection.CollUtil;
|
|
@@ -16,10 +21,14 @@ import com.alipay.api.DefaultAlipayClient;
|
|
|
import com.alipay.api.domain.AlipayTradeQueryModel;
|
|
import com.alipay.api.domain.AlipayTradeQueryModel;
|
|
|
import com.alipay.api.request.AlipayTradeQueryRequest;
|
|
import com.alipay.api.request.AlipayTradeQueryRequest;
|
|
|
import com.alipay.api.response.AlipayTradeQueryResponse;
|
|
import com.alipay.api.response.AlipayTradeQueryResponse;
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;
|
|
import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;
|
|
|
import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderV3Request;
|
|
import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderV3Request;
|
|
|
import com.github.binarywang.wxpay.bean.result.WxPayOrderQueryResult;
|
|
import com.github.binarywang.wxpay.bean.result.WxPayOrderQueryResult;
|
|
|
import com.github.binarywang.wxpay.bean.result.WxPayOrderQueryV3Result;
|
|
import com.github.binarywang.wxpay.bean.result.WxPayOrderQueryV3Result;
|
|
|
|
|
+import com.github.pagehelper.Page;
|
|
|
|
|
+import com.github.pagehelper.PageHelper;
|
|
|
|
|
+import com.github.pagehelper.PageInfo;
|
|
|
import com.zbkj.common.config.CrmebConfig;
|
|
import com.zbkj.common.config.CrmebConfig;
|
|
|
import com.zbkj.common.constants.*;
|
|
import com.zbkj.common.constants.*;
|
|
|
import com.zbkj.common.dto.Location;
|
|
import com.zbkj.common.dto.Location;
|
|
@@ -33,17 +42,16 @@ import com.zbkj.common.model.member.PaidMemberOrder;
|
|
|
import com.zbkj.common.model.merchant.Merchant;
|
|
import com.zbkj.common.model.merchant.Merchant;
|
|
|
import com.zbkj.common.model.merchant.MerchantBalanceRecord;
|
|
import com.zbkj.common.model.merchant.MerchantBalanceRecord;
|
|
|
import com.zbkj.common.model.order.*;
|
|
import com.zbkj.common.model.order.*;
|
|
|
|
|
+import com.zbkj.common.model.product.Product;
|
|
|
import com.zbkj.common.model.product.ProductCoupon;
|
|
import com.zbkj.common.model.product.ProductCoupon;
|
|
|
import com.zbkj.common.model.reservation.ReservationWorkOrder;
|
|
import com.zbkj.common.model.reservation.ReservationWorkOrder;
|
|
|
import com.zbkj.common.model.system.SystemNotification;
|
|
import com.zbkj.common.model.system.SystemNotification;
|
|
|
import com.zbkj.common.model.user.*;
|
|
import com.zbkj.common.model.user.*;
|
|
|
import com.zbkj.common.model.wechat.WechatPayInfo;
|
|
import com.zbkj.common.model.wechat.WechatPayInfo;
|
|
|
import com.zbkj.common.model.wechat.video.PayComponentProduct;
|
|
import com.zbkj.common.model.wechat.video.PayComponentProduct;
|
|
|
-import com.zbkj.common.request.OrderPayRequest;
|
|
|
|
|
-import com.zbkj.common.request.WechatPaymentQueryRequest;
|
|
|
|
|
-import com.zbkj.common.response.CashierInfoResponse;
|
|
|
|
|
-import com.zbkj.common.response.OrderPayResultResponse;
|
|
|
|
|
-import com.zbkj.common.response.PayConfigResponse;
|
|
|
|
|
|
|
+import com.zbkj.common.page.CommonPage;
|
|
|
|
|
+import com.zbkj.common.request.*;
|
|
|
|
|
+import com.zbkj.common.response.*;
|
|
|
import com.zbkj.common.result.CommonResultCode;
|
|
import com.zbkj.common.result.CommonResultCode;
|
|
|
import com.zbkj.common.result.MemberResultCode;
|
|
import com.zbkj.common.result.MemberResultCode;
|
|
|
import com.zbkj.common.result.OrderResultCode;
|
|
import com.zbkj.common.result.OrderResultCode;
|
|
@@ -52,12 +60,16 @@ import com.zbkj.common.utils.*;
|
|
|
import com.zbkj.common.vo.*;
|
|
import com.zbkj.common.vo.*;
|
|
|
import com.zbkj.common.vo.wxvedioshop.ShopOrderAddResultVo;
|
|
import com.zbkj.common.vo.wxvedioshop.ShopOrderAddResultVo;
|
|
|
import com.zbkj.common.vo.wxvedioshop.order.*;
|
|
import com.zbkj.common.vo.wxvedioshop.order.*;
|
|
|
|
|
+import com.zbkj.service.dao.WithdrawalHistoryDao;
|
|
|
import com.zbkj.service.service.*;
|
|
import com.zbkj.service.service.*;
|
|
|
|
|
+import com.zbkj.service.util.DaibiUtils;
|
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.support.TransactionTemplate;
|
|
import org.springframework.transaction.support.TransactionTemplate;
|
|
|
|
|
+import org.springframework.web.bind.annotation.RequestBody;
|
|
|
|
|
|
|
|
import java.io.UnsupportedEncodingException;
|
|
import java.io.UnsupportedEncodingException;
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
@@ -156,6 +168,8 @@ public class PayServiceImpl implements PayService {
|
|
|
private WechatPayService wechatPayService;
|
|
private WechatPayService wechatPayService;
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private ReservationWorkOrderService reservationWorkOrderService;
|
|
private ReservationWorkOrderService reservationWorkOrderService;
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private WithdrawalHistoryDao withdrawalHistoryDao;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 获取支付配置
|
|
* 获取支付配置
|
|
@@ -213,7 +227,7 @@ public class PayServiceImpl implements PayService {
|
|
|
|
|
|
|
|
// 余额支付
|
|
// 余额支付
|
|
|
if (orderPayRequest.getPayType().equals(PayConstants.PAY_TYPE_YUE)) {
|
|
if (orderPayRequest.getPayType().equals(PayConstants.PAY_TYPE_YUE)) {
|
|
|
- if (user.getNowMoney().compareTo(order.getPayPrice()) < 0) {
|
|
|
|
|
|
|
+ if (user.getNowMoney().compareTo(order.getTotalPriceReat()) < 0) {
|
|
|
throw new CrmebException(UserResultCode.USER_BALANCE_INSUFFICIENT);
|
|
throw new CrmebException(UserResultCode.USER_BALANCE_INSUFFICIENT);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -222,14 +236,17 @@ public class PayServiceImpl implements PayService {
|
|
|
response.setOrderNo(order.getOrderNo());
|
|
response.setOrderNo(order.getOrderNo());
|
|
|
response.setPayType(order.getPayType());
|
|
response.setPayType(order.getPayType());
|
|
|
response.setPayChannel(order.getPayChannel());
|
|
response.setPayChannel(order.getPayChannel());
|
|
|
|
|
+ response.setTotalPriceReat(order.getTotalPriceReat());
|
|
|
if (!order.getSecondType().equals(OrderConstants.ORDER_SECOND_TYPE_INTEGRAL)) {
|
|
if (!order.getSecondType().equals(OrderConstants.ORDER_SECOND_TYPE_INTEGRAL)) {
|
|
|
- if (order.getPayPrice().compareTo(BigDecimal.ZERO) <= 0) {
|
|
|
|
|
- throw new CrmebException(CommonResultCode.VALIDATE_FAILED, "支付金额不能低于等于0元");
|
|
|
|
|
|
|
+ if (order.getTotalPriceReat().compareTo(BigDecimal.ZERO) <= 0) {
|
|
|
|
|
+ throw new CrmebException(CommonResultCode.VALIDATE_FAILED, "支付金额不能低于等于0");
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
// 余额支付
|
|
// 余额支付
|
|
|
- if (order.getPayType().equals(PayConstants.PAY_TYPE_YUE) || order.getPayPrice().compareTo(BigDecimal.ZERO) <= 0) {
|
|
|
|
|
- Boolean yueBoolean = yuePay(order, user);
|
|
|
|
|
|
|
+ if (order.getPayType().equals(PayConstants.PAY_TYPE_YUE) || order.getTotalPriceReat().compareTo(BigDecimal.ZERO) <= 0) {
|
|
|
|
|
+ Boolean yueBoolean = yuePay(order, user, orderPayRequest);
|
|
|
response.setStatus(yueBoolean);
|
|
response.setStatus(yueBoolean);
|
|
|
return response;
|
|
return response;
|
|
|
}
|
|
}
|
|
@@ -815,6 +832,168 @@ public class PayServiceImpl implements PayService {
|
|
|
return response;
|
|
return response;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public JSONObject transferSettings(DaibiTransferSettings daibiTransferSettings) {
|
|
|
|
|
+ JSONObject res = DaibiUtils.setSettings(daibiTransferSettings);
|
|
|
|
|
+ return res;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public JSONObject paymentMoneyToUserNumber() {
|
|
|
|
|
+ User user = userService.getInfo();
|
|
|
|
|
+ LambdaUpdateWrapper<WithdrawalHistory> wrapper = new LambdaUpdateWrapper<>();
|
|
|
|
|
+ LocalDate today = LocalDate.now();
|
|
|
|
|
+ String startTime = today.toString() + " 00:00:00";
|
|
|
|
|
+ String endTime = today.toString() + " 23:59:59";
|
|
|
|
|
+ wrapper.ge(WithdrawalHistory::getCreateTime, startTime)
|
|
|
|
|
+ .le(WithdrawalHistory::getCreateTime, endTime)
|
|
|
|
|
+ .eq(WithdrawalHistory::getUid, user.getId())
|
|
|
|
|
+ .notIn(WithdrawalHistory::getStatus, Arrays.asList(2));
|
|
|
|
|
+ Integer dailyCount = withdrawalHistoryDao.selectCount(wrapper);
|
|
|
|
|
+
|
|
|
|
|
+ LambdaUpdateWrapper<WithdrawalHistory> wrapper2 = new LambdaUpdateWrapper<>();
|
|
|
|
|
+ LocalDate sevenDaysAgo = today.minusDays(7);
|
|
|
|
|
+ String sevenDaysAgoStr = sevenDaysAgo.toString() + " 00:00:00";
|
|
|
|
|
+ wrapper2.ge(WithdrawalHistory::getCreateTime, sevenDaysAgoStr)
|
|
|
|
|
+ .le(WithdrawalHistory::getCreateTime, endTime)
|
|
|
|
|
+ .eq(WithdrawalHistory::getUid, user.getId())
|
|
|
|
|
+ .notIn(WithdrawalHistory::getStatus, Arrays.asList(2));
|
|
|
|
|
+ Integer dailyCountAgoCount = withdrawalHistoryDao.selectCount(wrapper2);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ JSONObject res = new JSONObject();
|
|
|
|
|
+ res.put("dailyCount", dailyCount);
|
|
|
|
|
+ res.put("dailyCountAgo", dailyCountAgoCount);
|
|
|
|
|
+ if (dailyCountAgoCount >= 3 || dailyCount >= 2) {
|
|
|
|
|
+ res.put("status", false);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ res.put("status", true);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return res;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void transferNotice(TransferNotice transferNotice) {
|
|
|
|
|
+ if (!transferNotice.getRequestId().isEmpty()) {
|
|
|
|
|
+ LambdaUpdateWrapper<WithdrawalHistory> wrapper = new LambdaUpdateWrapper<>();
|
|
|
|
|
+ wrapper.eq(WithdrawalHistory::getTransactionId, transferNotice.getRequestId());
|
|
|
|
|
+ WithdrawalHistory withdrawalHistory = new WithdrawalHistory();
|
|
|
|
|
+ withdrawalHistory.setTxHash(transferNotice.getTxHash());
|
|
|
|
|
+ withdrawalHistory.setUpdateTime(new Date());
|
|
|
|
|
+ withdrawalHistory.setRemark(transferNotice.getMessage());
|
|
|
|
|
+ if (transferNotice.getSuccess()) {
|
|
|
|
|
+ withdrawalHistory.setStatus(1);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ withdrawalHistory.setStatus(2);
|
|
|
|
|
+ }
|
|
|
|
|
+ withdrawalHistoryDao.update(withdrawalHistory, wrapper);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 提醒记录 Greg
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param pageParamRequest
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public PageInfo<WithdrawalHistory> paymentMoneyToUserList(PageParamRequest pageParamRequest) {
|
|
|
|
|
+ User user = userService.getInfo();
|
|
|
|
|
+ LambdaUpdateWrapper<WithdrawalHistory> wrapper = new LambdaUpdateWrapper<>();
|
|
|
|
|
+ wrapper.eq(WithdrawalHistory::getUid, user.getId());
|
|
|
|
|
+ wrapper.orderByDesc(WithdrawalHistory::getCreateTime);
|
|
|
|
|
+ Page<WithdrawalHistory> page = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit());
|
|
|
|
|
+ List<WithdrawalHistory> list = withdrawalHistoryDao.selectList(wrapper);
|
|
|
|
|
+ return CommonPage.copyPageInfo(page, list);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 提现代币到用户输入的地址 Greg
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param request
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public PaymentMoneyToUserResponse paymentMoneyToUserResult(PaymentMoneyToUser request) {
|
|
|
|
|
+ WithdrawalHistory withdrawalHistory = new WithdrawalHistory();
|
|
|
|
|
+ User user = userService.getInfo();
|
|
|
|
|
+ // rmb 余额不足
|
|
|
|
|
+ if (user.getNowMoney().compareTo(request.getAmount()) < 0) {
|
|
|
|
|
+ throw new CrmebException(UserResultCode.USER_BALANCE_INSUFFICIENT);
|
|
|
|
|
+ }
|
|
|
|
|
+ // 代币数量不能小于等于0
|
|
|
|
|
+ if (request.getAmount().compareTo(BigDecimal.ZERO) <= 0) {
|
|
|
|
|
+ throw new CrmebException(UserResultCode.AMOUNT_ZERO);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ PaymentMoneyToUserResponse paymentMoneyToUserResponse = new PaymentMoneyToUserResponse();
|
|
|
|
|
+ // 提现手续费,实际到账是扣掉手续费的
|
|
|
|
|
+ BigDecimal handlingFeeSl = request.getAmount().multiply(new BigDecimal("0.05")).setScale(2, RoundingMode.UP);
|
|
|
|
|
+ BigDecimal amount = request.getAmount().subtract(handlingFeeSl);
|
|
|
|
|
+ Map<String, Object> res = DaibiUtils.withdrawalSLgns(request.getAddress(), amount.toString());
|
|
|
|
|
+
|
|
|
|
|
+ withdrawalHistory.setUid(user.getId());
|
|
|
|
|
+ withdrawalHistory.setAddress(request.getAddress());
|
|
|
|
|
+ withdrawalHistory.setRate(request.getRate());
|
|
|
|
|
+ withdrawalHistory.setAmount(amount);
|
|
|
|
|
+ withdrawalHistory.setAmountToRmb(request.getRate().multiply(amount));
|
|
|
|
|
+ withdrawalHistory.setTransactionId(res.get("request_id").toString());
|
|
|
|
|
+ withdrawalHistory.setToken(res.get("token").toString());
|
|
|
|
|
+ withdrawalHistory.setTokenType("slgns");
|
|
|
|
|
+ withdrawalHistory.setRemark(res.get("message").toString());
|
|
|
|
|
+ withdrawalHistory.setHandlingFeeRmb(request.getRate().multiply(handlingFeeSl));
|
|
|
|
|
+ withdrawalHistory.setHandlingFeeSl(handlingFeeSl);
|
|
|
|
|
+ if ((Boolean) res.get("status")) {
|
|
|
|
|
+ // 提现发起成功
|
|
|
|
|
+ withdrawalHistory.setStatus(0);
|
|
|
|
|
+ withdrawalHistoryDao.insert(withdrawalHistory);
|
|
|
|
|
+ // 余额支付
|
|
|
|
|
+ Boolean yueBoolean = PaymentMoneyToUserYuePay(user, request, res.get("request_id").toString());
|
|
|
|
|
+ }
|
|
|
|
|
+ BeanUtils.copyProperties(withdrawalHistory, paymentMoneyToUserResponse);
|
|
|
|
|
+ paymentMoneyToUserResponse.setRemark(res.get("message").toString());
|
|
|
|
|
+ paymentMoneyToUserResponse.setStatus((Boolean) res.get("status"));
|
|
|
|
|
+ return paymentMoneyToUserResponse;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 提现代币时扣用户余额 Greg
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param user
|
|
|
|
|
+ * @param request
|
|
|
|
|
+ * @param requestId
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ private Boolean PaymentMoneyToUserYuePay(User user, PaymentMoneyToUser request, String requestId) {
|
|
|
|
|
+ // 用户余额扣除
|
|
|
|
|
+ Boolean execute = transactionTemplate.execute(e -> {
|
|
|
|
|
+ Boolean update = Boolean.TRUE;
|
|
|
|
|
+
|
|
|
|
|
+ update = userService.updateNowMoney(user.getId(), request.getAmount(), Constants.OPERATION_TYPE_SUBTRACT);
|
|
|
|
|
+ if (!update) {
|
|
|
|
|
+ logger.error("余额支付,扣除用户余额失败");
|
|
|
|
|
+ e.setRollbackOnly();
|
|
|
|
|
+ return update;
|
|
|
|
|
+ }
|
|
|
|
|
+ // 用户余额记录
|
|
|
|
|
+ UserBalanceRecord userBalanceRecord = new UserBalanceRecord();
|
|
|
|
|
+ userBalanceRecord.setUid(user.getId());
|
|
|
|
|
+ userBalanceRecord.setLinkId(requestId);
|
|
|
|
|
+ userBalanceRecord.setRate(request.getRate());
|
|
|
|
|
+ userBalanceRecord.setLinkType(BalanceRecordConstants.BALANCE_RECORD_LINK_TYPE_WITHDRAW);
|
|
|
|
|
+ userBalanceRecord.setType(BalanceRecordConstants.BALANCE_RECORD_TYPE_SUB);
|
|
|
|
|
+ userBalanceRecord.setAmount(request.getAmount());
|
|
|
|
|
+ userBalanceRecord.setBalance(user.getNowMoney().subtract(request.getAmount()));
|
|
|
|
|
+ userBalanceRecord.setRemark(StrUtil.format(BalanceRecordConstants.BALANCE_RECORD_REMARK_WITHDRAW, request.getAmount()));
|
|
|
|
|
+ userBalanceRecordService.save(userBalanceRecord);
|
|
|
|
|
+
|
|
|
|
|
+ return update;
|
|
|
|
|
+ });
|
|
|
|
|
+ if (!execute) throw new CrmebException("余额支付订单失败");
|
|
|
|
|
+ return true;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 查询微信支付结果
|
|
* 查询微信支付结果
|
|
|
*/
|
|
*/
|
|
@@ -997,7 +1176,7 @@ public class PayServiceImpl implements PayService {
|
|
|
return CollUtil.newArrayList();
|
|
return CollUtil.newArrayList();
|
|
|
}
|
|
}
|
|
|
// 积分订单不参与分佣
|
|
// 积分订单不参与分佣
|
|
|
- if (merchantOrder.getType().equals(OrderConstants.ORDER_TYPE_PITUAN)){
|
|
|
|
|
|
|
+ if (merchantOrder.getType().equals(OrderConstants.ORDER_TYPE_PITUAN)) {
|
|
|
return CollUtil.newArrayList();
|
|
return CollUtil.newArrayList();
|
|
|
}
|
|
}
|
|
|
// 检测商城是否开启分销功能
|
|
// 检测商城是否开启分销功能
|
|
@@ -1368,7 +1547,7 @@ public class PayServiceImpl implements PayService {
|
|
|
* @param order 订单
|
|
* @param order 订单
|
|
|
* @return Boolean Boolean
|
|
* @return Boolean Boolean
|
|
|
*/
|
|
*/
|
|
|
- private Boolean yuePay(Order order, User user) {
|
|
|
|
|
|
|
+ private Boolean yuePay(Order order, User user, OrderPayRequest orderPayRequest) {
|
|
|
// 用户余额扣除
|
|
// 用户余额扣除
|
|
|
Boolean execute = transactionTemplate.execute(e -> {
|
|
Boolean execute = transactionTemplate.execute(e -> {
|
|
|
Boolean update = Boolean.TRUE;
|
|
Boolean update = Boolean.TRUE;
|
|
@@ -1381,8 +1560,8 @@ public class PayServiceImpl implements PayService {
|
|
|
order.setUpdateTime(DateUtil.date());
|
|
order.setUpdateTime(DateUtil.date());
|
|
|
orderService.updateById(order);
|
|
orderService.updateById(order);
|
|
|
// 这里只扣除金额,账单记录在task中处理
|
|
// 这里只扣除金额,账单记录在task中处理
|
|
|
- if (order.getPayPrice().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
|
|
- update = userService.updateNowMoney(order.getUid(), order.getPayPrice(), Constants.OPERATION_TYPE_SUBTRACT);
|
|
|
|
|
|
|
+ if (order.getTotalPriceReat().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
|
|
+ update = userService.updateNowMoney(order.getUid(), order.getTotalPriceReat(), Constants.OPERATION_TYPE_SUBTRACT);
|
|
|
if (!update) {
|
|
if (!update) {
|
|
|
logger.error("余额支付,扣除用户余额失败,orderNo = {}", order.getOrderNo());
|
|
logger.error("余额支付,扣除用户余额失败,orderNo = {}", order.getOrderNo());
|
|
|
e.setRollbackOnly();
|
|
e.setRollbackOnly();
|
|
@@ -1392,11 +1571,12 @@ public class PayServiceImpl implements PayService {
|
|
|
UserBalanceRecord userBalanceRecord = new UserBalanceRecord();
|
|
UserBalanceRecord userBalanceRecord = new UserBalanceRecord();
|
|
|
userBalanceRecord.setUid(user.getId());
|
|
userBalanceRecord.setUid(user.getId());
|
|
|
userBalanceRecord.setLinkId(order.getOrderNo());
|
|
userBalanceRecord.setLinkId(order.getOrderNo());
|
|
|
|
|
+ userBalanceRecord.setRate(order.getRate());
|
|
|
userBalanceRecord.setLinkType(BalanceRecordConstants.BALANCE_RECORD_LINK_TYPE_ORDER);
|
|
userBalanceRecord.setLinkType(BalanceRecordConstants.BALANCE_RECORD_LINK_TYPE_ORDER);
|
|
|
userBalanceRecord.setType(BalanceRecordConstants.BALANCE_RECORD_TYPE_SUB);
|
|
userBalanceRecord.setType(BalanceRecordConstants.BALANCE_RECORD_TYPE_SUB);
|
|
|
- userBalanceRecord.setAmount(order.getPayPrice());
|
|
|
|
|
- userBalanceRecord.setBalance(user.getNowMoney().subtract(order.getPayPrice()));
|
|
|
|
|
- userBalanceRecord.setRemark(StrUtil.format(BalanceRecordConstants.BALANCE_RECORD_REMARK_ORDER, order.getPayPrice()));
|
|
|
|
|
|
|
+ userBalanceRecord.setAmount(order.getTotalPriceReat());
|
|
|
|
|
+ userBalanceRecord.setBalance(user.getNowMoney().subtract(order.getTotalPriceReat()));
|
|
|
|
|
+ userBalanceRecord.setRemark(StrUtil.format(BalanceRecordConstants.BALANCE_RECORD_REMARK_ORDER, order.getTotalPriceReat()));
|
|
|
userBalanceRecordService.save(userBalanceRecord);
|
|
userBalanceRecordService.save(userBalanceRecord);
|
|
|
}
|
|
}
|
|
|
return update;
|
|
return update;
|