| | |
| | | private final MallScoreRecordMapper mallScoreRecordMapper; |
| | | private final MallScoreAchieveReleaseMapper mallScoreAchieveReleaseMapper; |
| | | private final MallScoreVoucherMapper mallScoreVoucherMapper; |
| | | private final CommonService commonService; |
| | | private final MallProductBuyRecordMapper mallProductBuyRecordMapper; |
| | | private final MallProductBuyMapper mallProductBuyMapper; |
| | | private final MallProductSellMapper mallProductSellMapper; |
| | | private final MallProductSellRecordMapper mallProductSellRecordMapper; |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void fcmNFTExchangeMsg(String cnt) { |
| | | //销毁数量 |
| | | BigDecimal destoryCnt = new BigDecimal(cnt); |
| | | DataDictionaryCustom fcmDestoryCntDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.FCM_DESTORY_CNT.getType(), |
| | | DataDictionaryEnum.FCM_DESTORY_CNT.getCode() |
| | | ); |
| | | BigDecimal fcmDestoryCnt = new BigDecimal(fcmDestoryCntDic.getValue()); |
| | | |
| | | BigDecimal fcmDestoryCntAdd = fcmDestoryCnt.add(destoryCnt); |
| | | /** |
| | | * 每次销毁10000个,价格增加0.1 |
| | | * 满足的次数 divide |
| | | */ |
| | | BigDecimal divide = fcmDestoryCntAdd.divide(AppContants.FCM_BASIC, 0, BigDecimal.ROUND_DOWN); |
| | | if(BigDecimal.ZERO.compareTo(divide) == 0){ |
| | | commonService.updateDataDic( |
| | | DataDictionaryEnum.BANK_TRANS_URL.getType(), |
| | | DataDictionaryEnum.BANK_TRANS_URL.getCode(), |
| | | fcmDestoryCntAdd.toString()); |
| | | } |
| | | |
| | | if(BigDecimal.ZERO.compareTo(divide) < 0){ |
| | | //例:累计15000 去掉10000,累计只剩5000 |
| | | BigDecimal fcmDestoryCntReal = fcmDestoryCntAdd.subtract(divide.multiply(AppContants.FCM_BASIC)); |
| | | commonService.updateDataDic( |
| | | DataDictionaryEnum.FCM_DESTORY_CNT.getType(), |
| | | DataDictionaryEnum.FCM_DESTORY_CNT.getCode(), |
| | | fcmDestoryCntReal.toString()); |
| | | |
| | | //更新总销毁数量 |
| | | DataDictionaryCustom fcmDestoryTotalDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.FCM_DESTORY_TOTAL.getType(), |
| | | DataDictionaryEnum.FCM_DESTORY_TOTAL.getCode() |
| | | ); |
| | | BigDecimal fcmDestoryTotal = new BigDecimal(fcmDestoryTotalDic.getValue()); |
| | | fcmDestoryTotal = fcmDestoryTotal.add(destoryCnt); |
| | | commonService.updateDataDic( |
| | | DataDictionaryEnum.FCM_DESTORY_TOTAL.getType(), |
| | | DataDictionaryEnum.FCM_DESTORY_TOTAL.getCode(), |
| | | fcmDestoryTotal.toString()); |
| | | //更新价格 |
| | | DataDictionaryCustom fcmPriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.FCM_PRICE.getType(), |
| | | DataDictionaryEnum.FCM_PRICE.getCode() |
| | | ); |
| | | BigDecimal fcmPrice = new BigDecimal(fcmPriceDic.getValue()); |
| | | fcmPrice = fcmPrice.add(AppContants.FCM_BASIC_ADD_PRICE.multiply(divide)); |
| | | commonService.updateDataDic( |
| | | DataDictionaryEnum.FCM_PRICE.getType(), |
| | | DataDictionaryEnum.FCM_PRICE.getCode(), |
| | | fcmPrice.toString()); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void fcmOrderSellInsureMsg(Long sellRecordId) { |
| | | /** |
| | | * 买单确认 |
| | | * 判断买单是否存在、是否已支付 |
| | | * 判断买单是否存在、是否已支付 |
| | | * 更新卖单状态 |
| | | * 更新买单状态 |
| | | */ |
| | | MallProductSellRecord mallProductSellRecord = mallProductSellRecordMapper.selectById(sellRecordId); |
| | | if(ObjectUtil.isEmpty(mallProductSellRecord)){ |
| | | return; |
| | | } |
| | | Integer state = mallProductSellRecord.getState(); |
| | | if(ProductEnum.PRODUCT_MATE_STATE_CONFIRM.getValue() != state){ |
| | | return; |
| | | } |
| | | MallProductBuyRecord mallProductBuyRecord = mallProductBuyRecordMapper.selectById(mallProductSellRecord.getBuyRecordId()); |
| | | if(ObjectUtil.isEmpty(mallProductBuyRecord)){ |
| | | return; |
| | | } |
| | | Integer stateBuy = mallProductBuyRecord.getState(); |
| | | if(ProductEnum.PRODUCT_MATE_STATE_CONFIRM.getValue() != stateBuy){ |
| | | return; |
| | | } |
| | | mallProductSellRecord.setState(ProductEnum.PRODUCT_MATE_STATE_FINISH.getValue()); |
| | | mallProductSellRecordMapper.updateById(mallProductSellRecord); |
| | | mallProductBuyRecord.setState(ProductEnum.PRODUCT_MATE_STATE_FINISH.getValue()); |
| | | mallProductBuyRecordMapper.updateById(mallProductBuyRecord); |
| | | Long sellId = mallProductSellRecord.getSellId(); |
| | | |
| | | //已完成的买单 |
| | | List<MallProductSellRecord> mallProductSellRecords = mallProductSellRecordMapper.selectListBySellId(sellId,ProductEnum.PRODUCT_MATE_STATE_FINISH.getValue()); |
| | | if(CollUtil.isEmpty(mallProductSellRecords)){ |
| | | return; |
| | | } |
| | | //实际支付总数 |
| | | BigDecimal nftCntTotal = mallProductSellRecords.stream().map(MallProductSellRecord::getNftCnt).reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | MallProductSell mallProductSell = mallProductSellMapper.selectById(sellId); |
| | | if(nftCntTotal.compareTo(mallProductSell.getNftCnt()) < 0){ |
| | | return; |
| | | } |
| | | mallProductSell.setState(ProductEnum.PRODUCT_SELL_SUCCESS.getValue()); |
| | | mallProductSellMapper.updateById(mallProductSell); |
| | | |
| | | Long buyId = mallProductBuyRecord.getBuyId(); |
| | | List<MallProductBuyRecord> mallProductBuyRecords = mallProductBuyRecordMapper.selectListByBuyId(buyId,ProductEnum.PRODUCT_MATE_STATE_FINISH.getValue()); |
| | | if(CollUtil.isEmpty(mallProductBuyRecords)){ |
| | | return; |
| | | } |
| | | //实际支付总数 |
| | | BigDecimal nftCntTotalBuy = mallProductBuyRecords.stream().map(MallProductBuyRecord::getPickNftCnt).reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | MallProductBuy mallProductBuy = mallProductBuyMapper.selectById(buyId); |
| | | if(nftCntTotalBuy.compareTo(mallProductBuy.getNftTotal()) < 0){ |
| | | return; |
| | | } |
| | | mallProductBuy.setState(ProductEnum.PRODUCT_BUY_SUCCESS.getValue()); |
| | | mallProductBuy.setPayTime(DateUtil.date()); |
| | | mallProductBuyMapper.updateById(mallProductBuy); |
| | | } |
| | | |
| | | @Override |
| | | public void fcmOrderBuyCancelMsg(Long buyRecordId) { |
| | | MallProductBuyRecord mallProductBuyRecord = mallProductBuyRecordMapper.selectById(buyRecordId); |
| | | if(ProductEnum.PRODUCT_MATE_STATE_WAIT_PAY.getValue() != mallProductBuyRecord.getState()){ |
| | | return; |
| | | } |
| | | Long sellRecordId = mallProductBuyRecord.getSellRecordId(); |
| | | //更新买单子表的数据 |
| | | mallProductBuyRecord.setState(ProductEnum.PRODUCT_MATE_STATE_FAIL.getValue()); |
| | | mallProductBuyRecordMapper.updateById(mallProductBuyRecord); |
| | | //更新买单主表 |
| | | MallProductBuy mallProductBuy = mallProductBuyMapper.selectById(mallProductBuyRecord.getBuyId()); |
| | | mallProductBuy.setNftAva(mallProductBuy.getNftAva().add(mallProductBuyRecord.getPickNftCnt())); |
| | | mallProductBuyMapper.updateById(mallProductBuy); |
| | | //更新卖单子表的数据 |
| | | MallProductSellRecord mallProductSellRecord = mallProductSellRecordMapper.selectById(sellRecordId); |
| | | mallProductSellRecord.setState(ProductEnum.PRODUCT_MATE_STATE_FAIL.getValue()); |
| | | mallProductSellRecordMapper.updateById(mallProductSellRecord); |
| | | //更新卖单主表 |
| | | Long sellId = mallProductSellRecord.getSellId(); |
| | | MallProductSell mallProductSell = mallProductSellMapper.selectById(sellId); |
| | | mallProductSell.setNftCntAva(mallProductSell.getNftCntAva().add(mallProductSellRecord.getNftCnt())); |
| | | mallProductSellMapper.updateById(mallProductSell); |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | BigDecimal divide = new BigDecimal(12000).divide(new BigDecimal(10000), 0, BigDecimal.ROUND_DOWN); |
| | | System.out.println(divide); |
| | | } |
| | | |
| | | /** |
| | | * 给用户的增加凭证数据,并且增加流水 |
| | | * @param memberAchieveRelease 释放数量 |