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