|
@@ -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);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|