From e097b03e9032a8e884c36e6a28d8b5002780daeb Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期五, 14 二月 2025 17:02:46 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev-1.0.1' into dev-1.0.1 --- ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/MgtAuctionSalesroomController.java | 160 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 154 insertions(+), 6 deletions(-) diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/MgtAuctionSalesroomController.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/MgtAuctionSalesroomController.java index 80f5cd5..71eaa4b 100644 --- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/MgtAuctionSalesroomController.java +++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/MgtAuctionSalesroomController.java @@ -1,28 +1,52 @@ package com.ruoyi.auction.controller.management; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.util.DateUtils; +import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.google.zxing.WriterException; import com.ruoyi.auction.controller.management.dto.MgtAuctionSaleroomBidRecordQuery; import com.ruoyi.auction.controller.management.dto.MgtAuctionSalesroomDTO; import com.ruoyi.auction.controller.management.dto.MgtAuctionSalesroomQuery; +import com.ruoyi.auction.controller.management.vo.AuctionBidRecordVO; import com.ruoyi.auction.controller.management.vo.MgtAuctionBidRecordVO; import com.ruoyi.auction.controller.management.vo.MgtAuctionSalesroomVO; +import com.ruoyi.auction.domain.AuctionBidRecord; +import com.ruoyi.auction.mapper.AuctionBidRecordMapper; +import com.ruoyi.auction.service.IAuctionSalesroomGoodsService; import com.ruoyi.auction.service.IAuctionSalesroomService; +import com.ruoyi.common.core.constant.SecurityConstants; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.enums.AuctionOrderTypeEnum; +import com.ruoyi.common.core.exception.ServiceException; +import com.ruoyi.common.core.utils.StringUtils; +import com.ruoyi.common.core.utils.page.BeanUtils; import com.ruoyi.common.core.utils.page.PageDTO; +import com.ruoyi.system.api.domain.AuctionSalesroom; +import com.ruoyi.system.api.domain.AuctionSalesroomGoods; +import com.ruoyi.system.api.domain.GoodsSku; +import com.ruoyi.system.api.feignClient.GoodsSkuClient; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import java.io.IOException; +import java.math.BigDecimal; +import java.net.URLEncoder; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.util.CollectionUtils; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; /** * <p> @@ -40,6 +64,9 @@ public class MgtAuctionSalesroomController { private final IAuctionSalesroomService auctionSalesroomService; + private final AuctionBidRecordMapper auctionBidRecordMapper; + private final IAuctionSalesroomGoodsService auctionSalesroomGoodsService; + private final GoodsSkuClient goodsSkuClient; /** * 分页查询拍卖场 @@ -114,4 +141,125 @@ @Validated @RequestBody MgtAuctionSaleroomBidRecordQuery query) { return R.ok(auctionSalesroomService.getAuctionSalesroomBidRecordList(query)); } + + /** + * 删除拍卖场 + */ + @DeleteMapping("/{id}") + @ApiOperation(value = "删除拍卖场", notes = "删除拍卖场") + public R<?> deleteAuctionSalesroom(@PathVariable("id") Long id){ + auctionSalesroomService.removeById(id); + return R.ok(); + } + + + /** + * 导出列表 + */ + @ApiOperation("导出列表") + @PostMapping("/export") + @ApiImplicitParam(name = "ids", value = "查询条件", required = true) + public void export(@RequestBody String query, HttpServletResponse response) { + // 验证输入是否为空或格式不正确 + if (StringUtils.isEmpty(query)) { + throw new ServiceException("查询条件不能为空"); + } + + JSONObject jsonObject = JSONObject.parseObject(query); + List<String> ids = jsonObject.getList("ids", String.class); + + // 验证ids是否为空 + if (CollectionUtils.isEmpty(ids)) { + throw new ServiceException("ids不能为空"); + } + + List<AuctionBidRecord> auctionBidRecordList = auctionBidRecordMapper.selectList( + new LambdaQueryWrapper<AuctionBidRecord>() + .in(!CollectionUtils.isEmpty(ids),AuctionBidRecord::getAuctionSalesroomId, ids) + .eq(AuctionBidRecord::getAuctionType, AuctionOrderTypeEnum.AUCTION_ITEMS) + ); + + if (CollectionUtils.isEmpty(auctionBidRecordList)) { + return; + } + + // 提取 goodsIds 和 auctionSalesroomIds + Set<Long> goodsIds = auctionBidRecordList.stream() + .map(AuctionBidRecord::getTargetId) + .collect(Collectors.toSet()); + + Set<Long> auctionSalesroomIds = auctionBidRecordList.stream() + .map(AuctionBidRecord::getAuctionSalesroomId) + .collect(Collectors.toSet()); + + // 查询拍卖销售室商品信息 + List<AuctionSalesroomGoods> salesroomGoodss = auctionSalesroomGoodsService.list( + new LambdaQueryWrapper<AuctionSalesroomGoods>() + .in(AuctionSalesroomGoods::getAuctionSalesroomId, auctionSalesroomIds) + .in(AuctionSalesroomGoods::getGoodsSkuId, goodsIds) + ); + + Map<String, AuctionSalesroomGoods> roomMap = salesroomGoodss.stream() + .collect(Collectors.toMap( + i -> String.format("%s-%s", i.getAuctionSalesroomId(), i.getGoodsSkuId()), + i -> i + )); + + // 查询拍卖场信息 + List<AuctionSalesroom> auctionSalesroomList = auctionSalesroomService.listByIds(auctionSalesroomIds); + Map<Long, AuctionSalesroom> auctionSalesroomMap = auctionSalesroomList.stream() + .collect(Collectors.toMap(AuctionSalesroom::getId, e -> e)); + + // 查询商品信息 + R<List<GoodsSku>> goodsListByIdsR = goodsSkuClient.getGoodsListByIds(goodsIds, SecurityConstants.INNER); + if (R.isError(goodsListByIdsR)) { + throw new ServiceException("查询商品信息失败"); + } + List<GoodsSku> goodsSkuList = goodsListByIdsR.getData(); + Map<Long, GoodsSku> goodsSkuMap = goodsSkuList.stream().collect(Collectors.toMap(GoodsSku::getId, e -> e)); + + // 构建结果列表 + List<AuctionBidRecordVO> result = auctionBidRecordList.stream().map(auctionBidRecord -> { + AuctionBidRecordVO auctionBidRecordVO = BeanUtils.copyBean(auctionBidRecord, AuctionBidRecordVO.class); + auctionBidRecordVO.setNum(auctionBidRecordList.indexOf(auctionBidRecord) + 1); + + AuctionSalesroomGoods salesroomGoods = roomMap.get(String.format("%s-%s", auctionBidRecord + .getAuctionSalesroomId(), auctionBidRecord.getTargetId())); + if (salesroomGoods != null) { + BigDecimal totalAmount = auctionBidRecord.getLastBidAmount().multiply(new BigDecimal(salesroomGoods + .getDealQuantity())); + auctionBidRecordVO.setTotalAmount(totalAmount); + } + + AuctionSalesroom auctionSalesroom = auctionSalesroomMap.get(auctionBidRecord.getAuctionSalesroomId()); + if (auctionSalesroom != null) { + auctionBidRecordVO.setAuctionSalesroomName(auctionSalesroom.getSalesroomName()); + } + + GoodsSku goodsSku = goodsSkuMap.get(auctionBidRecord.getTargetId()); + if (goodsSku != null) { + auctionBidRecordVO.setGoodsSkuName(goodsSku.getSkuName()); + } + + return auctionBidRecordVO; + }).collect(Collectors.toList()); + + + response.setContentType( + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); + // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 + try { + String fileName = URLEncoder.encode( + "优惠券领取明细" + DateUtils.format(new Date(), "yyyyMMddHHmmss"), "UTF-8") + .replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", + "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream(), AuctionBidRecordVO.class) + .sheet("优惠券领取明细") + .doWrite(result); + } catch (IOException e) { + throw new RuntimeException(e); + } + } } -- Gitblit v1.7.1