update 订单详情完成后,待结算金额,未扣除,已支付金额未增加问题修复
This commit is contained in:
@@ -419,7 +419,7 @@ public class MessageReceiver {
|
||||
.id(leasePayWithdrawMessage.getId())
|
||||
.amount(payWithdrawReturnMessage.getAmount().add(payWithdrawReturnMessage.getFee()))
|
||||
.status(payWithdrawReturnMessage.getStatus())
|
||||
.blockHeight(payWithdrawReturnMessage.getBlock_height())
|
||||
.blockHeight(payWithdrawReturnMessage.getBlock_height() != null ? payWithdrawReturnMessage.getBlock_height() : 0)
|
||||
.txHash(payWithdrawReturnMessage.getTx_hash())
|
||||
.build());
|
||||
}
|
||||
|
||||
@@ -56,6 +56,9 @@ public class ServerChannelHandler extends SimpleChannelInboundHandler<ClientMess
|
||||
@Resource
|
||||
private LeaseOrderItemMapper leaseOrderItemMapper;
|
||||
|
||||
@Resource
|
||||
private LeaseOrderInfoMapper leaseOrderInfoMapper;
|
||||
|
||||
@Resource
|
||||
private LeaseOrderMiningMapper leaseOrderMiningMapper;
|
||||
|
||||
@@ -76,6 +79,7 @@ public class ServerChannelHandler extends SimpleChannelInboundHandler<ClientMess
|
||||
System.out.println("Netty tcp 服务端收到客户端开始挖矿信息");
|
||||
handlerClientMiningMessage(ctx,msg);
|
||||
}else{
|
||||
//客户端心跳pong 或其它未知消息
|
||||
System.out.println("未知消息方法");
|
||||
}
|
||||
}
|
||||
@@ -201,7 +205,7 @@ public class ServerChannelHandler extends SimpleChannelInboundHandler<ClientMess
|
||||
LocalDateTime effectTime = leaseOrderItem.getCreateTime().plusDays(leaseOrderItem.getLeaseTime());
|
||||
needUpdateInfo.forEach(item-> item.setEffectTime(effectTime));
|
||||
List<MachineConfigDto> realMachineList = needCheckInfo.get(false);
|
||||
List<MachineConfigDto> tempMachineList = needCheckInfo.get(true);
|
||||
List<MachineConfigDto> tempMachineList = needCheckInfo.get(true) != null ? needCheckInfo.get(true) : new ArrayList<>();
|
||||
boolean realCheck = compare(needUpdateInfo, realMachineList);
|
||||
//主表信息和本次客户端发送消息不相同 + 并且临时表没有信息
|
||||
if(!realCheck && tempMachineList.isEmpty()){
|
||||
@@ -209,6 +213,8 @@ public class ServerChannelHandler extends SimpleChannelInboundHandler<ClientMess
|
||||
leaseMachineTempConfigMapper.insertBatch(needUpdateInfo);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!tempMachineList.isEmpty()){
|
||||
boolean tempCheck = compare(needUpdateInfo, tempMachineList);
|
||||
if (!realCheck && !tempCheck){
|
||||
//删除临时表数据 + 新增临时表数据
|
||||
@@ -223,6 +229,8 @@ public class ServerChannelHandler extends SimpleChannelInboundHandler<ClientMess
|
||||
leaseMachineTempConfigMapper.delete(new LambdaQueryWrapper<LeaseMachineTempConfig>()
|
||||
.eq(LeaseMachineTempConfig::getMachineId, machineId));
|
||||
}
|
||||
}
|
||||
|
||||
}else{
|
||||
//删除主表信息 + 新增主表数据
|
||||
leaseMachineConfigService.remove(new LambdaUpdateWrapper<LeaseMachineConfig>()
|
||||
@@ -283,9 +291,34 @@ public class ServerChannelHandler extends SimpleChannelInboundHandler<ClientMess
|
||||
if (checkMessage(ctx,msg.getId())){
|
||||
String[] split = msg.getId().split("::");
|
||||
Object params = msg.getParams();
|
||||
ClientConfigurationMining clientConfigurationMining = JSONUtil.toBean(params.toString(), ClientConfigurationMining.class);
|
||||
ClientConfigurationMining clientConfigurationMining = null;
|
||||
try {
|
||||
clientConfigurationMining = JSONUtil.toBean(params.toString(), ClientConfigurationMining.class);
|
||||
//修改 当前邮箱账户 对应的该矿池的 一些基本信息 TODO 这里可以设置真实开始时间 和 状态改为1
|
||||
leaseOrderMiningMapper.updateOrderMining(split[0],clientConfigurationMining);
|
||||
} catch (Exception e) {
|
||||
System.out.println("错误信息"+e.getMessage());
|
||||
System.err.println("params 内容: " + params);
|
||||
//订单失败
|
||||
|
||||
//1.获取到订单id 和订单详情id
|
||||
LeaseOrderMining leaseOrderMining = leaseOrderMiningMapper.selectOne(new LambdaQueryWrapper<LeaseOrderMining>()
|
||||
.select(LeaseOrderMining::getOrderId,LeaseOrderMining::getOrderItemId)
|
||||
.eq(LeaseOrderMining::getWalletAddress, clientConfigurationMining.getWallet_address())
|
||||
.eq(LeaseOrderMining::getWorkerId, clientConfigurationMining.getWorker_id())
|
||||
);
|
||||
//1.1订单主表状态改为11矿池连接失败,订单已取消 和详情表 状态改为0 租约过期
|
||||
leaseOrderItemMapper.updateById(LeaseOrderItem.builder()
|
||||
.id(leaseOrderMining.getOrderId())
|
||||
.status(0)
|
||||
.build());
|
||||
leaseOrderInfoMapper.updateById(LeaseOrderInfo.builder()
|
||||
.id(leaseOrderMining.getOrderId())
|
||||
.status(11)
|
||||
.build());
|
||||
//TODO 1.2修改买家和卖家钱包余额
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -140,8 +140,8 @@ public class OrderAndPayTask {
|
||||
|
||||
}
|
||||
|
||||
@Scheduled(cron = "0 0/30 * * * ? ")
|
||||
//@Scheduled(cron = "0 40 2 * * ? ")
|
||||
@Scheduled(cron = "0 0/1 * * * ? ")
|
||||
//@Scheduled(cron = "0 0/30 * * * ? ")
|
||||
@Async("scheduledTaskExecutor")
|
||||
@DSTransactional
|
||||
public void paymentTaskV2(){
|
||||
@@ -252,6 +252,7 @@ public class OrderAndPayTask {
|
||||
//已支付金额 和实际待支付金额
|
||||
item.setAlreadyPayAmount(item.getAlreadyPayAmount().add(item.getPrice().multiply(BigDecimal.valueOf(item.getNumbers()))));
|
||||
item.setSettlePayRealAmount(item.getSettlePayRealAmount().add(realPayAmount));
|
||||
item.setAlreadyPayRealAmount(item.getAlreadyPayRealAmount().add(realPayAmount));
|
||||
//设置理论支付金额 和 冻结金额 额 (冻结金额 = 理论支付金额)
|
||||
build.setBlockAmount(build.getBlockAmount().add(item.getPrice().multiply(BigDecimal.valueOf(item.getNumbers()))));
|
||||
build.setAmount(build.getAmount().add(item.getPrice().multiply(BigDecimal.valueOf(item.getNumbers()))));
|
||||
@@ -302,10 +303,10 @@ public class OrderAndPayTask {
|
||||
for (LeaseOrderItem orderTimeInfoDto : oneDayApartOrder) {
|
||||
orderCompleteMap.putIfAbsent(orderTimeInfoDto.getOrderId(), true);
|
||||
// 计算订单结束时间(startTime + leaseTime天)
|
||||
LocalDateTime endTime = orderTimeInfoDto.getCreateTime().plusDays(orderTimeInfoDto.getLeaseTime());
|
||||
//LocalDateTime endTime = orderTimeInfoDto.getCreateTime().plusDays(orderTimeInfoDto.getLeaseTime());
|
||||
|
||||
// 开发环境 测试用1分钟当一天 差值改为差1分钟
|
||||
//LocalDateTime endTime = orderTimeInfoDto.getCreateTime().plusMinutes(orderTimeInfoDto.getLeaseTime());
|
||||
LocalDateTime endTime = orderTimeInfoDto.getCreateTime().plusMinutes(orderTimeInfoDto.getLeaseTime() * 30);
|
||||
// 获取订单完成的订单详情:比较 now 和 endTime 的年月日时分秒差值是否小于30分
|
||||
long minuteTime = Duration.between(now, endTime).toMinutes();
|
||||
if (minuteTime <= 0) {
|
||||
@@ -326,14 +327,16 @@ public class OrderAndPayTask {
|
||||
LocalDate nowDate = now.toLocalDate();
|
||||
LocalDate startDate = orderTimeInfoDto.getCreateTime().toLocalDate();
|
||||
long minuteDate = Duration.between(startTime, nowTime).toMinutes();
|
||||
if (!nowDate.equals(startDate) && minuteDate <= 30 && minuteDate >= 0) {
|
||||
//if (!nowDate.equals(startDate) && minuteDate <= 30 && minuteDate >= 0) {
|
||||
// needPayIds.add(orderTimeInfoDto.getId());
|
||||
// needPayInfos.add(orderTimeInfoDto);
|
||||
//}
|
||||
//开发环境
|
||||
if ( minuteDate >= 30) {
|
||||
needPayIds.add(orderTimeInfoDto.getId());
|
||||
needPayInfos.add(orderTimeInfoDto);
|
||||
}
|
||||
|
||||
//开发环境
|
||||
// needPayIds.add(orderTimeInfoDto.getId());
|
||||
// needPayInfos.add(orderTimeInfoDto);
|
||||
//记录某个订单下所有子项目是否都完成
|
||||
orderCompleteMap.put(orderTimeInfoDto.getOrderId(), false);
|
||||
}
|
||||
@@ -346,6 +349,7 @@ public class OrderAndPayTask {
|
||||
);
|
||||
}
|
||||
|
||||
private static Integer dataPoints = 6;
|
||||
|
||||
/**
|
||||
* 获取各orderItemId 所需支付的金额
|
||||
@@ -369,19 +373,19 @@ public class OrderAndPayTask {
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 补零到48个数据点
|
||||
while (ratios.size() < 48) {
|
||||
while (ratios.size() < dataPoints) {
|
||||
ratios.add(BigDecimal.ZERO);
|
||||
}
|
||||
|
||||
// 计算总和并除以48
|
||||
BigDecimal finalValue = ratios.stream()
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add)
|
||||
.divide(BigDecimal.valueOf(48), 2, RoundingMode.HALF_UP);
|
||||
|
||||
.divide(BigDecimal.valueOf(dataPoints), 2, RoundingMode.HALF_UP);
|
||||
|
||||
|
||||
BigDecimal payAmount = itemInfo.getPrice()
|
||||
.multiply(BigDecimal.valueOf(itemInfo.getNumbers()));
|
||||
|
||||
if (finalValue.compareTo(BigDecimal.valueOf(0.95)) <= 0){
|
||||
payAmount = payAmount.multiply(finalValue);
|
||||
}
|
||||
@@ -888,9 +892,10 @@ public class OrderAndPayTask {
|
||||
|
||||
// 合并相同查询条件的记录,避免 SQL CASE WHEN 只执行第一条的问题
|
||||
List<LeasePayRecordMessage> mergedRecordList = mergePayRecordMessages(reocrdList);
|
||||
//订单详情结算待结算金额
|
||||
leaseOrderItemMapper.updateSettleAmount(mergedRecordList);
|
||||
int buyerUpdate = leaseUserWalletDataMapper.updateBalanceAndBlockBalance(mergedRecordList);
|
||||
int sellerUpdate = leaseShopConfigMapper.updateBalance(mergedRecordList);
|
||||
|
||||
if (buyerUpdate > 0 || sellerUpdate > 0){
|
||||
for (LeasePayRecordMessage item : reocrdList) {
|
||||
recordLog(item);
|
||||
|
||||
Reference in New Issue
Block a user