From 3517c715054ff2a8a3b69347892a7c1ec677ac2f Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期二, 11 三月 2025 10:48:36 +0800 Subject: [PATCH] 拍卖结果弹窗消息 --- ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomGoodsServiceImpl.java | 16 ++++++- ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/ForepartAuctionSalesroomGoodsController.java | 9 ++++ ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomGoodsService.java | 1 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSkuServiceImpl.java | 77 ++++++++++++++++++++++++-------------- 4 files changed, 71 insertions(+), 32 deletions(-) diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/ForepartAuctionSalesroomGoodsController.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/ForepartAuctionSalesroomGoodsController.java index eac8163..f05c179 100644 --- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/ForepartAuctionSalesroomGoodsController.java +++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/ForepartAuctionSalesroomGoodsController.java @@ -13,6 +13,8 @@ import io.swagger.annotations.ApiOperation; import java.util.List; import javax.annotation.Resource; +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; @@ -100,7 +102,12 @@ return R.ok(iAuctionSalesroomGoodsService.getAuctionSalesroomGoodsInfo(auctionSalesroomGoodsInfoDTO)); } - + @GetMapping("/setPopup/{id}") + @ApiOperation("标记已弹出弹窗") + public R<?> setPopup(@PathVariable("id") Long id) { + iAuctionSalesroomGoodsService.setPopup(id); + return R.ok(); + } } diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomGoodsService.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomGoodsService.java index ed81116..ae71134 100644 --- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomGoodsService.java +++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomGoodsService.java @@ -60,4 +60,5 @@ List<AuctionBidRecordVO> getAuctionBidRecord(@RequestBody AuctionSalesroomGoodsInfoDTO auctionSalesroomGoodsInfoDTO); + void setPopup(Long id); } diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomGoodsServiceImpl.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomGoodsServiceImpl.java index 5fe61eb..44cb11b 100644 --- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomGoodsServiceImpl.java +++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomGoodsServiceImpl.java @@ -569,13 +569,15 @@ .equals(BidStatusEnum.SUCCESSFUL)) .map(AuctionBidRecord::getMemberId) .collect(Collectors.toList()); + Map<Long, Long> bidMap = auctionBidRecordList.stream().collect( + Collectors.toMap(AuctionBidRecord::getMemberId, AuctionBidRecord::getId)); if (CollUtils.isNotEmpty(successMemberIdList)) { List<Member> successMemberList = memberClient.getMemberListByIds( successMemberIdList, SecurityConstants.INNER).getData(); if (CollUtils.isNotEmpty(successMemberList)) { // 推送websocket消息 sendWebsocketMsg(auctionSalesroomGoods.getId(), successMemberList, goodsSku, 1, - orderIdMap); + orderIdMap, bidMap); // 发送短信通知 List<String> mobileList = successMemberList.stream().map(Member::getPhone) .collect(Collectors.toList()); @@ -590,7 +592,7 @@ if (CollUtils.isNotEmpty(failedMemberList)) { // 推送websocket消息 sendWebsocketMsg(auctionSalesroomGoods.getId(), failedMemberList, goodsSku, 0, - orderIdMap); + orderIdMap, bidMap); // 发送短信通知 List<String> mobileList = failedMemberList.stream().map(Member::getPhone) .collect(Collectors.toList()); @@ -630,7 +632,7 @@ * @param successFlag // 中标状态 1:中标 0:未中标 */ private void sendWebsocketMsg(Long id, List<Member> memberList, GoodsSku goodsSku, - Integer successFlag, Map<Long, String> userIdMap) { + Integer successFlag, Map<Long, String> userIdMap, Map<Long, Long> bidMap) { for (Member member : memberList) { Map<String, Object> map = new ConcurrentHashMap<>(); map.put("notification_type", NotificationTypeConstant.AUCTION_POPUP); @@ -639,6 +641,7 @@ map.put("goods_name", Objects.nonNull(goodsSku) ? goodsSku.getSkuName() : ""); map.put("success_flag", successFlag); map.put("order_id", successFlag == 1 ? userIdMap.getOrDefault(member.getId(), "") : ""); + map.put("auction_bid_record_id", bidMap.getOrDefault(member.getId(), 0L)); String msg = JSONObject.toJSONString(map); sysUserClient.pushBatch( WebsocketMessageDTO.builder().message(msg).userId(member.getUserId()).build(), @@ -895,5 +898,12 @@ return orderClient.saveOrderOne(order, SecurityConstants.INNER).getData(); } + /** + * 设置弹窗状态已弹出 + * @param id + */ + @Override + public void setPopup(Long id) { + } } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSkuServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSkuServiceImpl.java index d1a10ed..27cac72 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSkuServiceImpl.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSkuServiceImpl.java @@ -8,8 +8,11 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.ruoyi.common.core.constant.SecurityConstants; -import com.ruoyi.common.core.domain.R; -import com.ruoyi.common.core.enums.*; +import com.ruoyi.common.core.enums.AuctionOrderTypeEnum; +import com.ruoyi.common.core.enums.ListingStatusEnum; +import com.ruoyi.common.core.enums.MemberVipClassifyEnum; +import com.ruoyi.common.core.enums.OrderFromEnum; +import com.ruoyi.common.core.enums.StartStatusEnum; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.page.BeanUtils; @@ -33,7 +36,18 @@ import com.ruoyi.goods.service.IGoodsInfoTitleValueService; import com.ruoyi.goods.service.IGoodsSkuService; import com.ruoyi.goods.service.IMemberGoodsCollectionService; -import com.ruoyi.system.api.domain.*; +import com.ruoyi.system.api.domain.AuctionGoods; +import com.ruoyi.system.api.domain.AuctionSalesroom; +import com.ruoyi.system.api.domain.AuctionSalesroomGoods; +import com.ruoyi.system.api.domain.GoodsBrand; +import com.ruoyi.system.api.domain.GoodsCategory; +import com.ruoyi.system.api.domain.GoodsFlavorType; +import com.ruoyi.system.api.domain.GoodsGroupPurchase; +import com.ruoyi.system.api.domain.GoodsSeckill; +import com.ruoyi.system.api.domain.GoodsSeries; +import com.ruoyi.system.api.domain.GoodsSku; +import com.ruoyi.system.api.domain.Member; +import com.ruoyi.system.api.domain.Order; import com.ruoyi.system.api.domain.dto.GoodsStockUpdDTO; import com.ruoyi.system.api.domain.dto.HomeGoodsSkuDTO; import com.ruoyi.system.api.domain.dto.ListStatusDTO; @@ -45,7 +59,7 @@ import com.ruoyi.system.api.feignClient.GoodsSkuClient; import com.ruoyi.system.api.feignClient.MemberClient; import com.ruoyi.system.api.feignClient.OrderClient; - +import com.ruoyi.system.api.model.LoginUser; import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; @@ -439,11 +453,19 @@ } Page<GoodsSku> page1 = this.page(page, wrapper3); - for (GoodsSku record : page1.getRecords()) { - // 获取会员价格 - BigDecimal vipPrice = getVipPrice(record.getId()); - record.setPrice(vipPrice); + LoginUser loginUser = SecurityUtils.getLoginUser(); + Member member = memberClient.getMemberByUserId(loginUser.getUserid(), + SecurityConstants.INNER).getData(); + // 用户已登录 有会员等级 会员等级不为普通用户 则获取会员价格 + if (SecurityUtils.isLogin() && Objects.nonNull(member.getVipClassify()) + && !member.getVipClassify().equals(MemberVipClassifyEnum.NORMAL.getCode())) { + for (GoodsSku record : page1.getRecords()) { + // 获取会员价格 + BigDecimal vipPrice = getVipPrice(record.getId(), member.getVipClassify()); + record.setPrice(vipPrice); + } } + return PageDTO.of(page1, HomeGoodsSkuListVO.class); } @@ -479,7 +501,7 @@ homeGoodsSkuInfoVO.setDescription(byId.getDescription()); homeGoodsSkuInfoVO.setStock(byId.getStock()); homeGoodsSkuInfoVO.setDetail(byId.getDetail()); - + homeGoodsSkuInfoVO.setPrice(byId.getPrice()); if (StringUtils.isBlank(byId.getShareTitle())) { homeGoodsSkuInfoVO.setShareTitle(byId.getSkuName()); } else { @@ -515,8 +537,16 @@ homeGoodsSkuInfoVO.setIsGoodsGroupPurchase(1); } // 获取会员价格 - BigDecimal vipPrice = getVipPrice(byId.getId()); - homeGoodsSkuInfoVO.setPrice(vipPrice); + LoginUser loginUser = SecurityUtils.getLoginUser(); + Member member = memberClient.getMemberByUserId(loginUser.getUserid(), + SecurityConstants.INNER).getData(); + // 用户已登录 有会员等级 会员等级不为普通用户 则获取会员价格 + if (SecurityUtils.isLogin() && Objects.nonNull(member.getVipClassify()) + && !member.getVipClassify().equals(MemberVipClassifyEnum.NORMAL.getCode())) { + // 获取会员价格 + BigDecimal vipPrice = getVipPrice(byId.getId(), member.getVipClassify()); + homeGoodsSkuInfoVO.setPrice(vipPrice); + } LambdaQueryWrapper<MemberGoodsCollection> wrapper3= Wrappers.lambdaQuery(); wrapper3.eq(MemberGoodsCollection::getDelFlag,0); @@ -561,24 +591,15 @@ return homeGoodsSkuInfoVO; } - private BigDecimal getVipPrice(Long goodsSkuId){ - - if (SecurityUtils.isLogin()) { - Long userId = SecurityUtils.getUserId(); - GoodsSku byId = getById(goodsSkuId); - Member member = memberClient.getMemberByUserId(userId, SecurityConstants.INNER).getData(); - Integer vipClassify = member.getVipClassify(); - if (MemberVipClassifyEnum.NORMAL.getCode().equals(vipClassify)) { - return byId.getPrice(); - }else if (MemberVipClassifyEnum.VIP.getCode().equals(vipClassify)){ - return byId.getVipPrice(); - }else if (MemberVipClassifyEnum.SUPER_VIP.getCode().equals(vipClassify)){ - return byId.getSuperVipPrice(); - } - }else { - return getById(goodsSkuId).getPrice(); + private BigDecimal getVipPrice(Long goodsSkuId, Integer vipClassify) { + GoodsSku byId = getById(goodsSkuId); + BigDecimal price = BigDecimal.ZERO; + if (MemberVipClassifyEnum.VIP.getCode().equals(vipClassify)) { + price = byId.getVipPrice(); + } else if (MemberVipClassifyEnum.SUPER_VIP.getCode().equals(vipClassify)) { + price = byId.getSuperVipPrice(); } - throw new ServiceException("会员等级错误"); + return price; } @Override -- Gitblit v1.7.1