Parcourir la source

Merge remote-tracking branch 'origin/dev' into dev

july il y a 4 ans
Parent
commit
cb735960b6

+ 8 - 2
ldt-core/src/main/java/org/springblade/gateway/common_gateway/wrapper/AppBillsWrapper.java

@@ -18,6 +18,8 @@ package org.springblade.gateway.common_gateway.wrapper;
 
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import org.apache.commons.lang3.ObjectUtils;
+import org.springblade.common.enums.AppConstant;
+import org.springblade.common.enums.OrderType;
 import org.springblade.common.utils.SpringContextHolder;
 import org.springblade.core.mp.support.BaseEntityWrapper;
 import org.springblade.core.tool.utils.BeanUtil;
@@ -30,7 +32,9 @@ import org.springblade.ldt.shop.service.IShopService;
 import org.springblade.ldt.user.entity.LoginUser;
 import org.springblade.ldt.user.service.ILoginUserService;
 
+import java.math.BigDecimal;
 import java.util.Objects;
+import java.util.Optional;
 
 /**
  * 包装类,返回视图层所需的字段
@@ -83,9 +87,11 @@ public class AppBillsWrapper extends BaseEntityWrapper<Bills, AppBillsVO>  {
 		//查询积分账单
 		BalanceBills balanceBills = balanceBillsService.getOne(
 			Wrappers.<BalanceBills>lambdaQuery()
-				.eq(BalanceBills::getTradeNo, appBillsVO.getId()));
+				.eq(BalanceBills::getTradeNo, appBillsVO.getId()).eq(BalanceBills::getType, OrderType.SHOP_SEND.name())
+				.eq(BalanceBills::getPayStatus, AppConstant.BillPayStatus.付款成功.name())
+				.last("limit 0,1"));
 		if(ObjectUtils.isNotEmpty(balanceBills)){
-			appBillsVO.setSendPoint(-balanceBills.getPrice().doubleValue());
+			appBillsVO.setSendPoint(Optional.ofNullable(balanceBills.getPrice()).orElse(BigDecimal.ZERO).doubleValue());
 		}
 		return appBillsVO;
 	}

+ 6 - 1
ldt-core/src/main/java/org/springblade/payment/callback/trade/UserPayCS.java

@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import lombok.AllArgsConstructor;
+import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.springblade.common.enums.AppConstant;
 import org.springblade.common.enums.OrderType;
@@ -33,6 +34,7 @@ import org.springblade.payment.entity.PaymentVO;
 import org.springblade.payment.entity.SuccessParams;
 import org.springblade.payment.event.UserPayCsEvent;
 import org.springblade.payment.handle.handler.DataHandle;
+import org.springblade.payment.listener.SubAccountHandle;
 import org.springblade.webSocket.WebSocketServer;
 import org.springblade.wx.config.ConfigForShop;
 import org.springblade.wx.constant.MessageTemplate;
@@ -75,8 +77,10 @@ public class UserPayCS {
 	private WeChatService weChatService;
 	private ConfigForShop configForShop;
 	private WebSocketServer webSocketServer;
+	private SubAccountHandle subAccountHandle;
 
 
+	@SneakyThrows
 	@EventListener
 	//@Async
 	public void PaySuccess(UserPayCsEvent userPayCsEvent) {
@@ -149,7 +153,8 @@ public class UserPayCS {
 
 				//通知处理代理费,申请分账
 				successParams.setBills(bills);
-				applicationEventPublisher.publishEvent(new BillSuccessEvent(successParams));
+				subAccountHandle.accountHandle(new BillSuccessEvent(successParams));
+//				applicationEventPublisher.publishEvent(new BillSuccessEvent(successParams));
 
 				String openId = shop.getOpenId();
 				String time = DateUtil.format(bills.getUpdateTime(), "yyyy年MM月dd日 HH:mm:ss");

+ 8 - 11
ldt-core/src/main/java/org/springblade/payment/listener/SubAccountHandle.java

@@ -4,10 +4,8 @@ import cn.hutool.core.util.IdUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Assert;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.yeepay.yop.sdk.service.common.response.YopResponse;
-import jodd.util.StringUtil;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
@@ -19,10 +17,8 @@ import org.springblade.core.tenant.annotation.TenantIgnore;
 import org.springblade.gateway.common_gateway.entity.vo.BillSuccessEvent;
 import org.springblade.ldt.bills.entity.BalanceBills;
 import org.springblade.ldt.bills.entity.Bills;
-import org.springblade.ldt.bills.entity.PointBills;
 import org.springblade.ldt.bills.service.IBalanceBillsService;
 import org.springblade.ldt.bills.service.IBillsService;
-import org.springblade.ldt.bills.service.IPointBillsService;
 import org.springblade.ldt.shop.entity.Shop;
 import org.springblade.ldt.shop.service.IShopService;
 import org.springblade.ldt.user.entity.LoginUser;
@@ -31,7 +27,6 @@ import org.springblade.ldt.user.service.ILoginUserService;
 import org.springblade.ldt.user.service.IMemberService;
 import org.springblade.payment.entity.SuccessParams;
 import org.springblade.payment.handle.entity.HandleDivideData;
-import org.springblade.payment.plugin.Payment;
 import org.springblade.yeePay.common.YeePayConst;
 import org.springblade.yeePay.entity.saas.trade.DivideApplyDto;
 import org.springblade.yeePay.entity.saas.trade.DivideCompleteDto;
@@ -42,17 +37,13 @@ import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.PlatformTransactionManager;
-import org.springframework.transaction.TransactionManager;
 import org.springframework.transaction.TransactionStatus;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.support.DefaultTransactionDefinition;
 
 import java.math.BigDecimal;
 import java.util.Collections;
 import java.util.Objects;
 import java.util.Set;
-import java.util.concurrent.LinkedBlockingQueue;
 
 /**
  * @author: lianghanqiang
@@ -95,14 +86,16 @@ public class SubAccountHandle {
 		Thread.sleep(5000);
 
 		//计算分账金额
-		BigDecimal amount = bills.getFee();
+//		BigDecimal amount = bills.getFee();
+		BigDecimal amount = BigDecimal.ZERO;
 
 		BalanceBills balanceBill = balanceBillsService.getOne(Wrappers.<BalanceBills>lambdaQuery().eq(BalanceBills::getTradeNo, bills.getId())
 			.eq(BalanceBills::getType, OrderType.SHOP_SEND.name()));
 
 		//计算赠送积分账单金额
 		if (ObjectUtils.isNotEmpty(balanceBill)) {
-			amount = amount.add(balanceBill.getTotalPrice());
+//			amount = amount.add(balanceBill.getTotalPrice());
+			amount = amount.add(balanceBill.getPrice().add(balanceBill.getFee()));
 		}
 
 		//分账
@@ -212,6 +205,9 @@ public class SubAccountHandle {
 
 			//赠送积分账单状态更新
 			if(!Objects.isNull(balanceBills)&&balanceBills.getPrice().compareTo(BigDecimal.valueOf(0.01))>=0){
+				if(ObjectUtils.isNotEmpty(bills.getActualIncome())){
+					bills.setActualIncome(bills.getActualIncome().subtract(balanceBills.getPrice()));
+				}
 				shop.setBalance(shop.getBalance().subtract(balanceBills.getPrice()));
 				balanceBills.setPayStatus(AppConstant.BillPayStatus.付款成功.name());
 				user.setBalance(user.getBalance().add(balanceBills.getPrice()));
@@ -234,6 +230,7 @@ public class SubAccountHandle {
 			userService.saveOrUpdate(user);
 			balanceBillsService.saveOrUpdate(balanceBills);
 			transactionManager.commit(transaction);
+			billsService.updateById(bills);
 		}catch (Exception e){
 			transactionManager.rollback(transaction);
 			if(!Objects.isNull(balanceBills)){

+ 2 - 2
ldt-core/src/main/java/org/springblade/payment/listener/consumer/OrderListener.java

@@ -54,11 +54,11 @@ public class OrderListener {
 			channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
 		} catch (IOException e) {
 			//失败后重新放回队列  不推荐,如果服务因为某种暂时无法恢复原因失败,那么会一直循环回归队列--->消费失败
-			// channel.basicReject(message.getMessageProperties().getDeliveryTag(), true);
+		 	channel.basicReject(message.getMessageProperties().getDeliveryTag(), true);
 			// 丢弃消息
 			//channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, false);
 			//失败后消息被确认,
-			channel.basicReject(message.getMessageProperties().getDeliveryTag(), false);
+//			channel.basicReject(message.getMessageProperties().getDeliveryTag(), false);
 			log.error("订单消息错误:{}", e.getMessage());
 		}
 	}