|  | @@ -29,6 +29,8 @@ import org.springframework.stereotype.Service;
 | 
											
												
													
														|  |  import org.springframework.transaction.annotation.Transactional;
 |  |  import org.springframework.transaction.annotation.Transactional;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  import java.math.BigDecimal;
 |  |  import java.math.BigDecimal;
 | 
											
												
													
														|  | 
 |  | +import java.util.ArrayList;
 | 
											
												
													
														|  | 
 |  | +import java.util.Date;
 | 
											
												
													
														|  |  import java.util.List;
 |  |  import java.util.List;
 | 
											
												
													
														|  |  import java.util.Objects;
 |  |  import java.util.Objects;
 | 
											
												
													
														|  |  import java.util.stream.Collectors;
 |  |  import java.util.stream.Collectors;
 | 
											
										
											
												
													
														|  | @@ -130,11 +132,62 @@ public class WalletReceiptsService {
 | 
											
												
													
														|  |          Long endTime = DateUtils.lastMonthEndTime();
 |  |          Long endTime = DateUtils.lastMonthEndTime();
 | 
											
												
													
														|  |          List<WalletReceipts> list = walletReceiptsDao.listMonth(startTime, endTime);
 |  |          List<WalletReceipts> list = walletReceiptsDao.listMonth(startTime, endTime);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -        for (WalletReceipts walletReceipts : list){
 |  | 
 | 
											
												
													
														|  | -            String inviteUserId = walletReceipts.getInviteUserId();
 |  | 
 | 
											
												
													
														|  | -            String userId = walletReceipts.getUserId();
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -        return;
 |  | 
 | 
											
												
													
														|  | 
 |  | +        List<WalletReceipts> receipts = new ArrayList<>();
 | 
											
												
													
														|  | 
 |  | +        List<Wallet> wallets = new ArrayList<>();
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        //首次订购
 | 
											
												
													
														|  | 
 |  | +        list.forEach(it -> {
 | 
											
												
													
														|  | 
 |  | +            if (it.getVipUserRecord().isFirst()) {
 | 
											
												
													
														|  | 
 |  | +                addAmount(receipts, wallets, it);
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +        });
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        //持续订购
 | 
											
												
													
														|  | 
 |  | +        List<WalletReceipts> keep  = list.stream().map(it -> {
 | 
											
												
													
														|  | 
 |  | +            if (!it.getVipUserRecord().isFirst()) {
 | 
											
												
													
														|  | 
 |  | +                return it;
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +            return null;
 | 
											
												
													
														|  | 
 |  | +        }).collect(Collectors.toList());
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        keep.forEach(it->{
 | 
											
												
													
														|  | 
 |  | +            boolean cancel = vipUserRecordDao.existsByCpIdAndSucIn(it.getUserId(), List.of(-1, 5));
 | 
											
												
													
														|  | 
 |  | +            if (!cancel){//无退订消息
 | 
											
												
													
														|  | 
 |  | +                addAmount(receipts, wallets, it);
 | 
											
												
													
														|  | 
 |  | +            }else {
 | 
											
												
													
														|  | 
 |  | +                VipUserRecord cancelRecord = vipUserRecordDao.findTopOneByOperateTime(it.getUserId(), DateUtils.lastMonthDayStartTime(1), DateUtils.lastMonthDayStartTime(6));
 | 
											
												
													
														|  | 
 |  | +                if (ObjectUtils.isEmpty(cancelRecord) || cancelRecord.getSuc().equals(1) || cancelRecord.getSuc().equals(4)){
 | 
											
												
													
														|  | 
 |  | +                    //上月1-5号无退订消息或消息为订购:默认扣款成功。。。
 | 
											
												
													
														|  | 
 |  | +                    addAmount(receipts, wallets, it);
 | 
											
												
													
														|  | 
 |  | +                }else {
 | 
											
												
													
														|  | 
 |  | +                    cancel(receipts, wallets, it);
 | 
											
												
													
														|  | 
 |  | +                }
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +        });
 | 
											
												
													
														|  | 
 |  | +        walletDao.saveAll(wallets);
 | 
											
												
													
														|  | 
 |  | +        walletReceiptsDao.saveAll(receipts);
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    public void autoReceipts(){
 | 
											
												
													
														|  | 
 |  | +//        inviteReceiptsRoleFeignService.getOne()
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    private static void addAmount(List<WalletReceipts> receipts, List<Wallet> wallets, WalletReceipts it) {
 | 
											
												
													
														|  | 
 |  | +        it.setStatus(ReceiptsStatus.RECEIPTS);
 | 
											
												
													
														|  | 
 |  | +        it.setReceiptsTime(new Date().getTime());
 | 
											
												
													
														|  | 
 |  | +        Wallet wallet = it.getWallet();
 | 
											
												
													
														|  | 
 |  | +        wallet.setWaitAmount(wallet.getWaitAmount().subtract(it.getTotal()));
 | 
											
												
													
														|  | 
 |  | +        wallet.setAmount(wallet.getAmount().add(it.getTotal()));
 | 
											
												
													
														|  | 
 |  | +        receipts.add(it);
 | 
											
												
													
														|  | 
 |  | +        wallets.add(wallet);
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    private static void cancel(List<WalletReceipts> receipts, List<Wallet> wallets, WalletReceipts it){
 | 
											
												
													
														|  | 
 |  | +        it.setStatus(ReceiptsStatus.CANCEL);
 | 
											
												
													
														|  | 
 |  | +        Wallet wallet = it.getWallet();
 | 
											
												
													
														|  | 
 |  | +        wallet.setWaitAmount(wallet.getWaitAmount().subtract(it.getTotal()));
 | 
											
												
													
														|  | 
 |  | +        receipts.add(it);
 | 
											
												
													
														|  | 
 |  | +        wallets.add(wallet);
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      /**
 |  |      /**
 |