mitao
2025-03-11 3517c715054ff2a8a3b69347892a7c1ec677ac2f
拍卖结果弹窗消息
4个文件已修改
103 ■■■■■ 已修改文件
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/ForepartAuctionSalesroomGoodsController.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomGoodsService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomGoodsServiceImpl.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSkuServiceImpl.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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();
    }
}
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);
}
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) {
    }
}
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