From 8143212a0a278d2b72fa2caf0e8c7a4f5a13e763 Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Fri, 24 Nov 2023 16:12:40 +0800 Subject: [PATCH] 匹配 --- src/main/java/cc/mrbird/febs/mall/service/impl/MallNewsInfoServiceImpl.java | 96 ++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 89 insertions(+), 7 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/MallNewsInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/MallNewsInfoServiceImpl.java index 1a68d76..f32080a 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/MallNewsInfoServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/MallNewsInfoServiceImpl.java @@ -2,19 +2,19 @@ import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.entity.QueryRequest; +import cc.mrbird.febs.common.enumerates.ProductEnum; import cc.mrbird.febs.mall.conversion.MallProductNftConversion; import cc.mrbird.febs.mall.dto.AdminMallProductNftDto; +import cc.mrbird.febs.mall.dto.AdminPickSellRecordDtoDto; import cc.mrbird.febs.mall.dto.MallNewsInfoDto; import cc.mrbird.febs.mall.entity.*; -import cc.mrbird.febs.mall.mapper.MallNewsCategoryMapper; -import cc.mrbird.febs.mall.mapper.MallNewsInfoMapper; -import cc.mrbird.febs.mall.mapper.MallProductNftMapper; +import cc.mrbird.febs.mall.mapper.*; import cc.mrbird.febs.mall.service.IMallNewsInfoService; -import cc.mrbird.febs.mall.vo.AdminMallNewsInfoVo; -import cc.mrbird.febs.mall.vo.AdminMallProductBuyVo; -import cc.mrbird.febs.mall.vo.AdminMallProductNftVo; -import cc.mrbird.febs.mall.vo.AdminMallProductSellVo; +import cc.mrbird.febs.mall.vo.*; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -24,6 +24,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.util.List; /** @@ -37,6 +38,10 @@ private final MallNewsCategoryMapper mallNewsCategoryMapper; private final MallProductNftMapper mallProductNftMapper; + private final MallProductBuyMapper mallProductBuyMapper; + private final MallProductSellMapper mallProductSellMapper; + private final MallProductSellRecordMapper mallProductSellRecordMapper; + private final MallProductBuyRecordMapper mallProductBuyRecordMapper; @Override public IPage<AdminMallNewsInfoVo> getNewInfoList(MallNewsInfo mallNewsInfo, QueryRequest request) { @@ -190,6 +195,13 @@ public IPage<AdminMallProductBuyVo> getBuyList(MallProductBuy mallProductBuy, QueryRequest request) { Page<AdminMallProductBuyVo> page = new Page<>(request.getPageNum(), request.getPageSize()); IPage<AdminMallProductBuyVo> adminMallProductBuyVoIPage = mallProductNftMapper.getBuyList(page, mallProductBuy); + if(CollUtil.isNotEmpty(adminMallProductBuyVoIPage.getRecords())){ + List<AdminMallProductBuyVo> records = adminMallProductBuyVoIPage.getRecords(); + for(AdminMallProductBuyVo adminMallProductBuyVo : records){ + List<MallProductBuyRecord> mallProductBuyRecords = mallProductBuyRecordMapper.selectRecordListByBuyId(adminMallProductBuyVo.getId()); + adminMallProductBuyVo.setMallProductBuyRecords(mallProductBuyRecords); + } + } return adminMallProductBuyVoIPage; } @@ -199,4 +211,74 @@ IPage<AdminMallProductSellVo> adminMallProductSellVoIPage = mallProductNftMapper.getSellList(page, mallProductSell); return adminMallProductSellVoIPage; } + + @Override + public List<AdminMallProductSellPickVo> findSellList() { + List<AdminMallProductSellPickVo> list = mallProductNftMapper.selectProductSellByState(ProductEnum.PRODUCT_SELL_ON_GOING.getValue()); + return list; + } + + @Override + public FebsResponse pickSellRecord(AdminPickSellRecordDtoDto pickSellRecordDto) { + /** + * 买单条件是否满足 + * 卖单条件是否满足 + * 生成卖单子记录 + * 生成买单子记录 + * 更新卖单状态 + * 更新买单状态 + */ + Long productBuyId = pickSellRecordDto.getId(); + Long productSellId = pickSellRecordDto.getProductSellId(); + BigDecimal pickNftCnt = new BigDecimal(pickSellRecordDto.getPickNftCnt()); + //买单 + MallProductBuy mallProductBuy = mallProductBuyMapper.selectById(productBuyId); + int state = mallProductBuy.getState(); + if(ProductEnum.PRODUCT_BUY_ON_GOING.getValue() != state){ + return new FebsResponse().fail().message("预约状态不是进行中"); + } + BigDecimal nftAva = mallProductBuy.getNftAva(); + if(BigDecimal.ZERO.compareTo(pickNftCnt) >= 0){ + return new FebsResponse().fail().message("本次金额不能小于等于零"); + } + if(nftAva.compareTo(pickNftCnt) < 0){ + return new FebsResponse().fail().message("可分配不足"); + } + //卖单 + MallProductSell mallProductSell = mallProductSellMapper.selectById(productSellId); + BigDecimal nftCntAva = mallProductSell.getNftCntAva(); + if(ProductEnum.PRODUCT_SELL_ON_GOING.getValue() != mallProductSell.getState()){ + return new FebsResponse().fail().message("预约状态不是进行中"); + } + if(nftCntAva.compareTo(pickNftCnt) < 0){ + return new FebsResponse().fail().message("匹配提现剩余不足"); + } + DateTime orderTime = DateUtil.date(); + //生成卖单子记录 + MallProductSellRecord mallProductSellRecord = new MallProductSellRecord(); + mallProductSellRecord.setSellId(mallProductSell.getId()); + mallProductSellRecord.setMemberId(mallProductBuy.getMemberId()); + mallProductSellRecord.setOrderTime(orderTime); + mallProductSellRecord.setNftCnt(pickNftCnt); + mallProductSellRecord.setState(ProductEnum.PRODUCT_MATE_STATE_WAIT_PAY.getValue()); + mallProductSellRecordMapper.insert(mallProductSellRecord); + //生成买单子记录 + MallProductBuyRecord mallProductBuyRecord = new MallProductBuyRecord(); + mallProductBuyRecord.setBuyId(mallProductBuy.getId()); + mallProductBuyRecord.setMemberId(mallProductSell.getMemberId()); + mallProductBuyRecord.setSellRecordId(mallProductSellRecord.getId()); + mallProductBuyRecord.setPickNftCnt(pickNftCnt); + mallProductBuyRecord.setState(ProductEnum.PRODUCT_MATE_STATE_WAIT_PAY.getValue()); + mallProductBuyRecord.setOrderTime(orderTime); + mallProductBuyRecordMapper.insert(mallProductBuyRecord); + //更新卖单 + mallProductSell.setNftCntAva(mallProductSell.getNftCntAva().subtract(pickNftCnt)); + mallProductSellMapper.updateById(mallProductSell); + mallProductSellRecord.setBuyRecordId(mallProductBuyRecord.getId()); + mallProductSellRecordMapper.updateById(mallProductSellRecord); + //更新买单 + mallProductBuy.setNftAva(mallProductBuy.getNftAva().subtract(pickNftCnt)); + mallProductBuyMapper.updateById(mallProductBuy); + return new FebsResponse().success(); + } } -- Gitblit v1.9.1