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