From cd55aff7eea06f77a8f712cef1ad2744c44d0f8a Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期四, 20 六月 2024 18:56:16 +0800 Subject: [PATCH] 1.修改bug --- ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java | 187 ++++++++++++++++++++++++++++++---------------- 1 files changed, 122 insertions(+), 65 deletions(-) diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java index a260f28..dcb1616 100644 --- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java +++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java @@ -1,18 +1,14 @@ package com.ruoyi.auction.service.impl; import cn.binarywang.wx.miniapp.api.WxMaService; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.alibaba.fastjson.TypeReference; -import com.alibaba.fastjson.parser.Feature; -import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayClient; -import com.alipay.api.internal.util.AlipayEncrypt; -import com.alipay.api.internal.util.AlipaySignature; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.collect.Lists; import com.google.zxing.WriterException; import com.ruoyi.auction.controller.management.dto.MgtAuctionSaleroomBidRecordQuery; @@ -49,6 +45,7 @@ import com.ruoyi.common.core.enums.AuctionStartStatusEnum; import com.ruoyi.common.core.enums.BidStatusEnum; import com.ruoyi.common.core.enums.BondStatusEnum; +import com.ruoyi.common.core.enums.ClientTypeEnum; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.IDhelper; import com.ruoyi.common.core.utils.StringUtils; @@ -57,6 +54,8 @@ import com.ruoyi.common.core.utils.page.CollUtils; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.system.api.RemoteFileService; +import com.ruoyi.system.api.constants.NotificationTypeConstant; import com.ruoyi.system.api.domain.AppMiniLoginVO; import com.ruoyi.system.api.domain.AuctionGoods; import com.ruoyi.system.api.domain.AuctionSalesroom; @@ -86,11 +85,20 @@ import com.ruoyi.system.api.feignClient.OrderClient; import com.ruoyi.system.api.feignClient.PromotionClient; import com.ruoyi.system.api.feignClient.SysUserClient; +import com.ruoyi.system.api.util.WebSocketUsers; import io.seata.spring.annotation.GlobalTransactional; import java.io.IOException; import java.math.BigDecimal; import java.time.LocalDateTime; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicReference; import java.util.function.Function; import java.util.stream.Collectors; @@ -152,6 +160,8 @@ @Resource private AuctionBidRecordMapper auctionBidRecordMapper; + @Resource + private RemoteFileService remoteFileService; public static RequestConfig config = RequestConfig.custom().setConnectTimeout(5000).setSocketTimeout(5000).build(); // 配置您申请的KEY,在个人中心->我的数据,接口名称上方查看 public static final String APPKEY = ""; @@ -194,7 +204,7 @@ */ private static final String ALIPAY_PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlW2RMACojdqTa8H+j6411Lm5UipGXXbQiswq50rUflwjTj843zNVaVpk8uJmbdmtUBJlmblgBS/a31O4L4LrHB8WxJ+w0f9DBNTq9T6b80MiAVnU/3gXK365DmbzPWS5pR9wEgJVHnfOFUbsB5AVFHV0m9hUZcPv7xveuEp3BEoD5smaDJByR+KgFw0Q0JgINhhE6bsEa3UgJ198af269LtQ5HJl1TWLI8aeqW14HrxyADIt49NB9KZ8MOdKP+66HWcrXlipKFHtccy3dff72DqPmFdESoXfLXKZyhU5w9v4Q5F6UoAGTPwl9KQwikTobNeJ/7su7X3AB6+C14J4sQIDAQAB"; - + private static final ObjectMapper objectMapper = new ObjectMapper(); @Override public List<AuctionSalesroom> getAuctionBidRecordList(AuctionSalesroomDTO ationSalesroomGoodsDTO) { @@ -371,8 +381,10 @@ memberAuctionSalesroomVO.setEndTime(auctionSalesroom.getEndTime()); memberAuctionSalesroomVO.setCoverPic(auctionSalesroom.getCoverPic()); memberAuctionSalesroomVO.setBond(auctionSalesroom.getBond()); + memberAuctionSalesroomVO.setAuthentication(auctionSalesroom.getAuthentication()); + memberAuctionSalesroomDTO.setAuctionSalesroomId(auctionSalesroom.getId()); List<OrderAuctionBond> data = orderClient.getOrderAuctionBondList1(memberAuctionSalesroomDTO, SecurityConstants.INNER).getData(); - if (data!=null||data.size()>0){ + if (data!=null&&data.size()>0){ memberAuctionSalesroomVO.setIsApply(2); }else{ memberAuctionSalesroomVO.setIsApply(1); @@ -380,8 +392,14 @@ MemberAuctionSalesroomDTO memberAuctionSalesroomDTO1=new MemberAuctionSalesroomDTO(); memberAuctionSalesroomDTO1.setAuctionSalesroomId(auctionSalesroom.getId()); List<OrderAuctionBond> data1 = orderClient.getOrderAuctionBondList1(memberAuctionSalesroomDTO1, SecurityConstants.INNER).getData(); - memberAuctionSalesroomVO.setApplyNum(data1.size()); - List.add(memberAuctionSalesroomVO); + if(data1!=null){ + memberAuctionSalesroomVO.setApplyNum(data1.size()); + List.add(memberAuctionSalesroomVO); + }else{ + memberAuctionSalesroomVO.setApplyNum(0); + } + + } page.setRecords(List); return PageDTO.of(page); @@ -506,8 +524,6 @@ if (auctionBidRecord!=null){ throw new ServiceException("当前拍卖场中标拍品订单未完成,请完成后再试。"); } - - // 远程调用订单服务进行退款 Map<String, Object> data = orderClient.refund(refundDTOList, SecurityConstants.INNER).getData(); @@ -526,7 +542,7 @@ List<Long> ids = new ArrayList<>(); ids.add(orderAuctionBond.getId()); // 远程调用订单服务修改订单状态 - orderClient.updateOrderAuctionBondStatus(ids, BondStatusEnum.PAID); + orderClient.updateOrderAuctionBondStatus(ids, BondStatusEnum.REFUNDED,SecurityConstants.INNER); }else{ OrderAuctionBond orderAuctionBond = orderClient.getOrderAuctionBondone1(memberAuctionSalesroomBondDTO, SecurityConstants.INNER).getData(); @@ -563,7 +579,7 @@ List<Long> ids = new ArrayList<>(); ids.add(orderAuctionBond.getId()); // 远程调用订单服务修改订单状态 - orderClient.updateOrderAuctionBondStatus(ids, BondStatusEnum.PAID); + orderClient.updateOrderAuctionBondStatus(ids,BondStatusEnum.REFUNDED,SecurityConstants.INNER); } @@ -574,11 +590,11 @@ Member membeOne = memberClient.getMembeOne(bidVO.getMemberId(), SecurityConstants.INNER).getData(); if (bidVO.getAuctionType()==2){ AuctionSalesroomGoods byId = auctionSalesroomGoodsMapper.selectById(bidVO.getTargetId()); - if (byId.getStartingPrice().doubleValue()<bidVO.getLastBidAmount().doubleValue()){ + if (byId.getStartingPrice().doubleValue()>bidVO.getLastBidAmount().doubleValue()){ throw new ServiceException("出价不能比起拍价低"); } BigDecimal bigDecimal=byId.getStartingPrice().add(byId.getMinimumMarkupAmount()); - if (bigDecimal.doubleValue()<bidVO.getLastBidAmount().doubleValue()){ + if (bigDecimal.doubleValue()>bidVO.getLastBidAmount().doubleValue()){ throw new ServiceException("出价不能比每次最少加价低"); } @@ -590,7 +606,7 @@ AuctionBidRecord one = auctionBidRecordService.getOne(wrapper1); if (one!=null){ BigDecimal bigDecimal1=one.getLastBidAmount().add(byId.getMinimumMarkupAmount()); - if (bigDecimal1.doubleValue()<bidVO.getLastBidAmount().doubleValue()){ + if (bigDecimal1.doubleValue()>bidVO.getLastBidAmount().doubleValue()){ throw new ServiceException("出价不能比上次出价加每次最少加价低"); } one.setLastBidAmount(bidVO.getLastBidAmount()); @@ -603,6 +619,8 @@ one.setTargetId(bidVO.getTargetId()); one.setMemberId(bidVO.getMemberId()); one.setLastBidTime(LocalDateTime.now()); + one.setNickname(membeOne.getNickname()); + one.setPhone(membeOne.getPhone()); one.setAuctionType(AuctionOrderTypeEnum.AUCTION_ITEMS); one.setStatus(BidStatusEnum.ELIMINATE); one.setBidCount(1); @@ -613,11 +631,11 @@ }else { AuctionGoods byId = auctionGoodsService.getById(bidVO.getTargetId()); - if (byId.getStartingPrice().doubleValue()<bidVO.getLastBidAmount().doubleValue()){ + if (byId.getStartingPrice().doubleValue()>bidVO.getLastBidAmount().doubleValue()){ throw new ServiceException("出价不能比起拍价低"); } BigDecimal bigDecimal=byId.getStartingPrice().add(byId.getMinimumMarkupAmount()); - if (bigDecimal.doubleValue()<bidVO.getLastBidAmount().doubleValue()){ + if (bigDecimal.doubleValue()>bidVO.getLastBidAmount().doubleValue()){ throw new ServiceException("出价不能比每次最少加价低"); } LambdaQueryWrapper<AuctionBidRecord> wrapper1=Wrappers.lambdaQuery(); @@ -767,8 +785,9 @@ // 生成唯一编号 Long nextId = IDhelper.getNextId(); auctionSalesroom.setAuctionSalesroomNo(nextId.toString()); - String qrCodeToObs = CreateQrCode.createQRCodeToObs(nextId.toString()); - auctionSalesroom.setQrCode(qrCodeToObs); + String url = remoteFileService.obsUpload( + CreateQrCode.createQRCodeStream(nextId.toString())).getData(); + auctionSalesroom.setQrCode(url); // 添加 this.save(auctionSalesroom); List<GoodsStockUpdDTO> goodsStockUpdDTOS = auctionSalesroomGoods.stream().map(item -> { @@ -1019,44 +1038,46 @@ mgtAuctionSalesroomVO, MgtAuctionSalesroomScreenVO.class); if (vo.getStatus().equals(AuctionStartStatusEnum.IN_AUCTION)) { List<MgtAuctionSalesroomGoodsVO> auctionSalesroomGoodsVOS = vo.getAuctionSalesroomGoodsVOS(); - List<MgtAuctionSalesroomGoodsVO> collect = auctionSalesroomGoodsVOS.stream() - .peek(goods -> { - List<AuctionBidRecord> list = auctionBidRecordService.lambdaQuery() - .eq(AuctionBidRecord::getTargetId, goods.getId()) - .eq(AuctionBidRecord::getAuctionType, - AuctionOrderTypeEnum.AUCTION_ITEMS) - .list(); - if (StringUtils.isNotEmpty(list)) { - long bidCount = list.stream() - .filter(item -> BidStatusEnum.SUCCESSFUL.equals( - item.getStatus())) - .count(); - goods.setBidCount((int) bidCount); - goods.setBidQuantity((int) bidCount); - goods.setBidPersonCount(list.size()); - } - if (goods.getStatus().equals(AuctionGoodsStatusEnum.IN_PROGRESS)) { - vo.setCurrentAuctionSalesroomGoods(goods); - } - }).collect(Collectors.toList()); - vo.setAuctionSalesroomGoodsVOS(collect); - if (StringUtils.isNotNull(vo.getCurrentAuctionSalesroomGoods())) { - int index = collect.indexOf(vo.getCurrentAuctionSalesroomGoods()); - vo.setNextAuctionSalesroomGoods(collect.get(index + 1)); - // 分页查询当前拍品出价信息 - List<AuctionBidRecord> list = auctionBidRecordService.lambdaQuery() - .eq(AuctionBidRecord::getTargetId, - vo.getCurrentAuctionSalesroomGoods().getId()) - .eq(AuctionBidRecord::getAuctionType, - AuctionOrderTypeEnum.AUCTION_ITEMS) - .list(); - if (StringUtils.isNotEmpty(list)) { - vo.setMgtAuctionBidRecordVOList(CollUtils.emptyList()); + if (StringUtils.isNotEmpty(auctionSalesroomGoodsVOS)) { + List<MgtAuctionSalesroomGoodsVO> collect = auctionSalesroomGoodsVOS.stream() + .peek(goods -> { + List<AuctionBidRecord> list = auctionBidRecordService.lambdaQuery() + .eq(AuctionBidRecord::getTargetId, goods.getId()) + .eq(AuctionBidRecord::getAuctionType, + AuctionOrderTypeEnum.AUCTION_ITEMS) + .list(); + if (StringUtils.isNotEmpty(list)) { + long bidCount = list.stream() + .filter(item -> BidStatusEnum.SUCCESSFUL.equals( + item.getStatus())) + .count(); + goods.setBidCount((int) bidCount); + goods.setBidQuantity((int) bidCount); + goods.setBidPersonCount(list.size()); + } + if (goods.getStatus().equals(AuctionGoodsStatusEnum.IN_PROGRESS)) { + vo.setCurrentAuctionSalesroomGoods(goods); + } + }).collect(Collectors.toList()); + vo.setAuctionSalesroomGoodsVOS(collect); + if (StringUtils.isNotNull(vo.getCurrentAuctionSalesroomGoods())) { + int index = collect.indexOf(vo.getCurrentAuctionSalesroomGoods()); + vo.setNextAuctionSalesroomGoods(collect.get(index + 1)); + // 分页查询当前拍品出价信息 + List<AuctionBidRecord> list = auctionBidRecordService.lambdaQuery() + .eq(AuctionBidRecord::getTargetId, + vo.getCurrentAuctionSalesroomGoods().getId()) + .eq(AuctionBidRecord::getAuctionType, + AuctionOrderTypeEnum.AUCTION_ITEMS) + .list(); + if (StringUtils.isNotEmpty(list)) { + vo.setMgtAuctionBidRecordVOList(CollUtils.emptyList()); + } + vo.setMgtAuctionBidRecordVOList( + BeanUtils.copyList(list, MgtAuctionBidRecordVO.class)); + } else { + vo.setNextAuctionSalesroomGoods(collect.get(0)); } - vo.setMgtAuctionBidRecordVOList( - BeanUtils.copyList(list, MgtAuctionBidRecordVO.class)); - } else { - vo.setNextAuctionSalesroomGoods(collect.get(0)); } } return vo; @@ -1133,6 +1154,7 @@ */ @Override public PageDTO<MgtAuctionSalesroomGoodsVO> backupGoods(MgtAuctionSalesroomGoodsQuery query) { + Page<AuctionSalesroomGoods> page = new Page<>(query.getPageCurr(), query.getPageSize()); Set<Long> goodsSkuIdSet = null; if (StringUtils.isNotBlank(query.getGoodsName())) { List<GoodsSku> data = goodsSkuClient.getGoodsByName(query.getGoodsName(), @@ -1140,14 +1162,19 @@ if (StringUtils.isNotEmpty(data)) { goodsSkuIdSet = data.stream().map(GoodsSku::getId) .collect(Collectors.toSet()); + } else { + return PageDTO.empty(page); } } - Page<AuctionSalesroomGoods> page = auctionSalesroomGoodsMapper.selectPage( + page = auctionSalesroomGoodsMapper.selectPage( new Page<>(query.getPageCurr(), query.getPageSize()), Wrappers.<AuctionSalesroomGoods>lambdaQuery() + .eq(AuctionSalesroomGoods::getAuctionSalesroomId, + query.getAuctionSalesroomId()) + .eq(AuctionSalesroomGoods::getBackupStatus, Boolean.TRUE) .in(StringUtils.isNotEmpty(goodsSkuIdSet), AuctionSalesroomGoods::getGoodsSkuId, goodsSkuIdSet)); - if (StringUtils.isNotEmpty(page.getRecords())) { + if (StringUtils.isEmpty(page.getRecords())) { return PageDTO.empty(page); } Set<Long> skuIdList = page.getRecords().stream().map(AuctionSalesroomGoods::getGoodsSkuId) @@ -1167,10 +1194,12 @@ /** * 选择备选商品 * - * @param idList 备选商品id集合 + * @param idStr 备选商品id集合 */ @Override - public void addBackupGoods(List<Long> idList) { + public void addBackupGoods(String idStr) { + String[] idArr = idStr.split(","); + List<Long> idList = Arrays.stream(idArr).map(Long::valueOf).collect(Collectors.toList()); List<AuctionSalesroomGoods> auctionSalesroomGoods = auctionSalesroomGoodsMapper.selectList( Wrappers.<AuctionSalesroomGoods>lambdaQuery() .in(AuctionSalesroomGoods::getId, idList) @@ -1178,6 +1207,7 @@ if (StringUtils.isNotEmpty(auctionSalesroomGoods)) { auctionSalesroomGoods.forEach(item -> { item.setStatus(AuctionGoodsStatusEnum.WAITING); + item.setBackupStatus(Boolean.FALSE); }); auctionSalesroomGoodsMapper.updateBatchById(auctionSalesroomGoods); } @@ -1249,7 +1279,8 @@ * @param auctionSalesroomId 拍卖场id */ @Override - public void startCurrentAuctionSalesroom(Long auctionSalesroomId) { + public void startCurrentAuctionSalesroom(Long auctionSalesroomId) + throws JsonProcessingException { // 修改拍卖场开始状态 AuctionSalesroom auctionSalesroom = this.getById(auctionSalesroomId); auctionSalesroom.setStatus(AuctionStartStatusEnum.IN_AUCTION); @@ -1266,12 +1297,20 @@ auctionSalesroomGoods.setStatus(AuctionGoodsStatusEnum.IN_PROGRESS); auctionSalesroomGoods.setStartTime(LocalDateTime.now()); auctionSalesroomGoodsMapper.updateById(auctionSalesroomGoods); + + Map<String, Object> map = new ConcurrentHashMap<>(); + map.put("notification_type", NotificationTypeConstant.AUCTION_SALESROOM); + map.put("auctionSalesroomId", auctionSalesroom.getId()); + map.put("message_type", "start"); + String msg = objectMapper.writeValueAsString(map); + WebSocketUsers.sendMessageToUsersByType(ClientTypeEnum.AUCTIONEER.getCode(), msg); } @Override @GlobalTransactional(rollbackFor = Exception.class) @Transactional - public void stopCurrentAuctionSalesroom(Long auctionSalesroomId) { + public void stopCurrentAuctionSalesroom(Long auctionSalesroomId) + throws JsonProcessingException { // 修改拍卖场开始状态 AuctionSalesroom auctionSalesroom = this.getById(auctionSalesroomId); auctionSalesroom.setStatus(AuctionStartStatusEnum.ENDED); @@ -1309,5 +1348,23 @@ orderAuctionBondDTO.setUserList(memberIdlist); orderClient.getOrderAuctionBond(orderAuctionBondDTO, SecurityConstants.INNER); } + Map<String, Object> map = new ConcurrentHashMap<>(); + map.put("notification_type", NotificationTypeConstant.AUCTION_SALESROOM); + map.put("auctionSalesroomId", auctionSalesroom.getId()); + map.put("message_type", "end"); + String msg = objectMapper.writeValueAsString(map); + WebSocketUsers.sendMessageToUsersByType(ClientTypeEnum.AUCTIONEER.getCode(), msg); + } + + @Override + public List<AuctionSalesroom> getAuctionSalesroomByIds( + Collection<Long> auctionSalesroomGoodsIdSet) { + List<AuctionSalesroomGoods> auctionSalesroomGoods = auctionSalesroomGoodsMapper.selectList( + Wrappers.lambdaQuery(AuctionSalesroomGoods.class) + .in(AuctionSalesroomGoods::getId, auctionSalesroomGoodsIdSet)); + Set<Long> auctionSalesroomIdSet = auctionSalesroomGoods.stream() + .map(AuctionSalesroomGoods::getAuctionSalesroomId).collect( + Collectors.toSet()); + return this.listByIds(auctionSalesroomIdSet); } } -- Gitblit v1.7.1