| | |
| | | import com.ruoyi.auction.controller.management.vo.MgtAuctionBidRecordVO; |
| | | import com.ruoyi.auction.controller.management.vo.MgtAuctionGoodsVO; |
| | | import com.ruoyi.auction.domain.AuctionBidRecord; |
| | | import com.ruoyi.auction.domain.AuctionBondJl; |
| | | import com.ruoyi.auction.domain.AuctionBrowseRecord; |
| | | import com.ruoyi.auction.domain.MemberAuctionCollection; |
| | | import com.ruoyi.auction.mapper.AuctionBondJlMapper; |
| | | import com.ruoyi.auction.mapper.AuctionGoodsMapper; |
| | | import com.ruoyi.auction.service.IAuctionBidRecordService; |
| | | import com.ruoyi.auction.service.IAuctionBrowseRecordService; |
| | |
| | | import com.ruoyi.system.api.feignClient.SysUserClient; |
| | | import io.seata.spring.annotation.GlobalTransactional; |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.time.LocalDateTime; |
| | | import java.util.ArrayList; |
| | | import java.util.Collections; |
| | |
| | | |
| | | @Resource |
| | | private IAuctionBrowseRecordService iAuctionBrowseRecordService; |
| | | |
| | | @Resource |
| | | private AuctionBondJlMapper auctionBondJlMapper; |
| | | |
| | | /** |
| | | * 获取拍卖商品列表的分页数据 |
| | |
| | | .collect(Collectors.toSet()); |
| | | List<Member> memberList = memberClient. |
| | | getMemberListByIds(collect, SecurityConstants.INNER).getData(); |
| | | Map<Long, String> memberMap = memberList.stream() |
| | | .collect(Collectors.toMap(Member::getId, Member::getNickname)); |
| | | Map<Long, Member> memberMap = memberList.stream() |
| | | .collect(Collectors.toMap(Member::getId, e -> e)); |
| | | List<MgtAuctionBidRecordVO> mgtAuctionBidRecordVOS = BeanUtils.copyList(list, |
| | | MgtAuctionBidRecordVO.class); |
| | | for (MgtAuctionBidRecordVO vo : mgtAuctionBidRecordVOS) { |
| | | String memberName = memberMap.get(vo.getMemberId()); |
| | | vo.setMemberName(StringUtils.isNotEmpty(memberName) ? memberName : ""); |
| | | Member member = memberMap.get(vo.getMemberId()); |
| | | if (StringUtils.isNotNull(member)) { |
| | | vo.setMemberName(member.getNickname()); |
| | | vo.setPhone(member.getPhone()); |
| | | } |
| | | |
| | | } |
| | | auctionGoodsVO.setRecordList(mgtAuctionBidRecordVOS); |
| | | } |
| | |
| | | if (StringUtils.isNull(auctionGoods)) { |
| | | throw new ServiceException("拍卖商品不存在"); |
| | | } |
| | | // 远程调用商品服务,获取商品信息 |
| | | GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(auctionGoods.getGoodsSkuId(), |
| | | SecurityConstants.INNER) |
| | | .getData(); |
| | | if (auctionGoods.getStartStatus().equals(AuctionStartStatusEnum.IN_AUCTION)) { |
| | | // 查询出价记录 |
| | | List<AuctionBidRecord> auctionBidRecords = auctionBidRecordService.getBidRecordByGoodsId( |
| | | id); |
| | | Long memberId = null; |
| | | List<AuctionBidRecord> auctionBidRecordList = new ArrayList<>(); |
| | | if (StringUtils.isNotEmpty(auctionBidRecords)) { |
| | | // 中标 |
| | | AuctionBidRecord auctionBidRecord = auctionBidRecords.get(0); |
| | | auctionBidRecord.setStatus(BidStatusEnum.SUCCESSFUL); |
| | | auctionBidRecordService.updateById(auctionBidRecord); |
| | | memberId = auctionBidRecord.getMemberId(); |
| | | if (auctionBidRecords.size() >= auctionGoods.getAuctionStock()) { |
| | | // 中标 |
| | | for (int i = 0; i < auctionGoods.getAuctionStock(); i++) { |
| | | AuctionBidRecord auctionBidRecord = auctionBidRecords.get(i); |
| | | auctionBidRecord.setStatus(BidStatusEnum.SUCCESSFUL); |
| | | auctionBidRecordList.add(auctionBidRecord); |
| | | } |
| | | } else { |
| | | // 中标 |
| | | for (int i = 0; i < auctionBidRecords.size(); i++) { |
| | | AuctionBidRecord auctionBidRecord = auctionBidRecords.get(i); |
| | | auctionBidRecord.setStatus(BidStatusEnum.SUCCESSFUL); |
| | | auctionBidRecordList.add(auctionBidRecord); |
| | | } |
| | | // 退回剩余库存 |
| | | GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); |
| | | goodsStockUpdDTO.setGoodsSkuId(auctionGoods.getGoodsSkuId()); |
| | | goodsStockUpdDTO.setAuctionStock( |
| | | auctionGoods.getAuctionStock() - auctionBidRecords.size()); |
| | | goodsSkuClient.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO), |
| | | SecurityConstants.INNER); |
| | | } |
| | | |
| | | auctionBidRecordService.updateBatchById(auctionBidRecordList); |
| | | |
| | | // 创建待支付订单 |
| | | CustomConfig moneyConfig = sysUserClient.getconfig( |
| | | ConfigEnum.MEMBER_POINTS_MONEY.getKey()).getData(); |
| | | CustomConfig pointsConfig = sysUserClient.getconfig( |
| | | ConfigEnum.MEMBER_POINTS_POINTS.getKey()).getData(); |
| | | double ratio = |
| | | Double.parseDouble( |
| | | pointsConfig.getConfigValue()) / Double.parseDouble( |
| | | moneyConfig.getConfigValue()); |
| | | OrderDTO orderDTO = new OrderDTO(); |
| | | orderDTO.setAuctionType(AuctionOrderTypeEnum.REGULAR_ITEMS); |
| | | orderDTO.setGoodsQuantity(auctionGoods.getAuctionStock()); |
| | | orderDTO.setGoodsSkuId(auctionGoods.getGoodsSkuId()); |
| | | orderDTO.setBound(auctionGoods.getBond()); |
| | | orderDTO.setMemberId(auctionBidRecord.getMemberId()); |
| | | orderDTO.setTotalAmount(auctionBidRecord.getLastBidAmount()); |
| | | orderDTO.setOrderFrom(OrderFromEnum.AUCTION_ORDERS); |
| | | orderDTO.setOrderTime(LocalDateTime.now()); |
| | | orderDTO.setPoints(auctionBidRecord.getLastBidAmount() |
| | | .multiply(BigDecimal.valueOf(ratio)).intValue()); |
| | | MemberAddress data = memberClient.getMemberAddressOne( |
| | | auctionBidRecord.getMemberId(), SecurityConstants.INNER).getData(); |
| | | if (StringUtils.isNotNull(data)) { |
| | | orderDTO.setReceiverName(data.getRecipientName()); |
| | | orderDTO.setReceiverCity(data.getReceiverCity()); |
| | | orderDTO.setReceiverDetailAddress(data.getDetailedAddress()); |
| | | orderDTO.setReceiverphone(data.getRecipientPhone()); |
| | | for (AuctionBidRecord auctionBidRecord : auctionBidRecordList) { |
| | | BigDecimal lastBidAmount = auctionBidRecord.getLastBidAmount(); |
| | | BigDecimal divide = lastBidAmount.divide( |
| | | new BigDecimal(moneyConfig.getConfigValue()), 0, RoundingMode.DOWN); |
| | | int points = divide.multiply( |
| | | new BigDecimal(pointsConfig.getConfigValue())).intValue(); |
| | | OrderDTO orderDTO = new OrderDTO(); |
| | | orderDTO.setAuctionType(AuctionOrderTypeEnum.REGULAR_ITEMS); |
| | | orderDTO.setGoodsQuantity(auctionGoods.getAuctionStock()); |
| | | orderDTO.setGoodsSkuId(auctionGoods.getId()); |
| | | orderDTO.setBound(auctionGoods.getBond()); |
| | | orderDTO.setMemberId(auctionBidRecord.getMemberId()); |
| | | orderDTO.setTotalAmount(auctionBidRecord.getLastBidAmount()); |
| | | orderDTO.setOrderFrom(OrderFromEnum.AUCTION_ORDERS); |
| | | orderDTO.setOrderTime(LocalDateTime.now()); |
| | | orderDTO.setPoints(points); |
| | | orderDTO.setBound(auctionGoods.getBond()); |
| | | MemberAddress data = memberClient.getMemberAddressOne( |
| | | auctionBidRecord.getMemberId(), SecurityConstants.INNER).getData(); |
| | | if (StringUtils.isNotNull(data)) { |
| | | orderDTO.setReceiverName(data.getRecipientName()); |
| | | orderDTO.setReceiverCity(data.getReceiverCity()); |
| | | orderDTO.setReceiverDetailAddress(data.getDetailedAddress()); |
| | | orderDTO.setReceiverphone(data.getRecipientPhone()); |
| | | } |
| | | if (StringUtils.isNotNull(goodsSku)) { |
| | | orderDTO.setCoverPic(goodsSku.getCoverPic()); |
| | | orderDTO.setPrice(goodsSku.getPrice()); |
| | | orderDTO.setSkuName(goodsSku.getSkuName()); |
| | | } |
| | | orderDTO.setOrderTimeSx(auctionGoods.getEndTime()); |
| | | orderClient.saveOrderOne(orderDTO, SecurityConstants.INNER); |
| | | } |
| | | orderClient.saveOrderOne(orderDTO, SecurityConstants.INNER); |
| | | } else { |
| | | // 没有人出价,退回拍卖商品库存 |
| | | GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); |
| | |
| | | SecurityConstants.INNER).getData(); |
| | | if (StringUtils.isNotEmpty(auctionBondList)) { |
| | | List<RefundDTO> refundDTOList = new ArrayList<>(); |
| | | List<Long> unRefundMemberIdList = auctionBidRecordList.stream() |
| | | .map(AuctionBidRecord::getMemberId).collect( |
| | | Collectors.toList()); |
| | | for (OrderAuctionBond orderAuctionBond : auctionBondList) { |
| | | |
| | | // 已中标需在订单完成后退保证金 |
| | | if (orderAuctionBond.getMemberId().equals(memberId)) { |
| | | if (unRefundMemberIdList.contains(orderAuctionBond.getMemberId())) { |
| | | continue; |
| | | } |
| | | RefundDTO refundDTO = new RefundDTO(); |
| | | refundDTO.setOrderNo(orderAuctionBond.getOrderNo()); |
| | | refundDTO.setAmount(orderAuctionBond.getBond()); |
| | | refundDTOList.add(refundDTO); |
| | | } |
| | | // 远程调用订单服务进行退款 |
| | | Map<String, Object> data = orderClient.refund(refundDTOList, |
| | |
| | | return null; |
| | | }).filter(Objects::nonNull).collect(Collectors.toList()); |
| | | // 远程调用订单服务修改订单状态 |
| | | orderClient.updateOrderAuctionBondStatus(ids, BondStatusEnum.PAID,SecurityConstants.INNER); |
| | | orderClient.updateOrderAuctionBondStatus(ids, BondStatusEnum.REFUNDED, |
| | | SecurityConstants.INNER); |
| | | } |
| | | } |
| | | } |
| | |
| | | List<GoodsSku> goodsSku = goodsSkuClient.getGoodsByName(auctionGoodsListDTO.getGoodsSkuName(), |
| | | SecurityConstants.INNER) |
| | | .getData(); |
| | | goodsSkuIdList = goodsSku.stream().map(GoodsSku::getId) |
| | | .collect(Collectors.toSet()); |
| | | if (goodsSku!=null){ |
| | | goodsSkuIdList = goodsSku.stream().map(GoodsSku::getId) |
| | | .collect(Collectors.toSet()); |
| | | } |
| | | |
| | | } |
| | | |
| | | AuctionGoodsListPageDTO auctionGoodsListPageDTO=new AuctionGoodsListPageDTO(); |
| | | auctionGoodsListPageDTO.setGoodsSkuIdList(goodsSkuIdList); |
| | | if (StringUtils.isNotEmpty(auctionGoodsListDTO.getGoodsSkuName())) { |
| | | if (goodsSkuIdList != null) { |
| | | auctionGoodsListPageDTO.setGoodsSkuIdList(goodsSkuIdList); |
| | | } else { |
| | | goodsSkuIdList = new HashSet<>(); |
| | | goodsSkuIdList.add(0L); |
| | | auctionGoodsListPageDTO.setGoodsSkuIdList(goodsSkuIdList); |
| | | } |
| | | } |
| | | |
| | | Page<AuctionGoodsListVO> page = new Page<>(); |
| | | page.setSize(auctionGoodsListDTO.getPageSize()); |
| | |
| | | auctionGoodsinfoVO.setUnit(goodsSkuOne.getUnit()); |
| | | auctionGoodsinfoVO.setBond(byId.getBond()); |
| | | auctionGoodsinfoVO.setDescription(goodsSkuOne.getDescription()); |
| | | auctionGoodsinfoVO.setExplain(byId.getDescription()); |
| | | auctionGoodsinfoVO.setYears(goodsSkuOne.getYears()); |
| | | GoodsBrand data = goodsSkuClient.getBrandOne(goodsSkuOne.getBrandId(), SecurityConstants.INNER).getData(); |
| | | GoodsCategory data1 = goodsSkuClient.getCategoryOne(goodsSkuOne.getCategoryId(), SecurityConstants.INNER).getData(); |
| | |
| | | auctionGoodsinfoVO.setSpec(goodsSkuOne.getSpec()); |
| | | auctionGoodsinfoVO.setSpecUnit(goodsSkuOne.getSpecUnit()); |
| | | auctionGoodsinfoVO.setShareTitle(goodsSkuOne.getShareTitle()); |
| | | auctionGoodsinfoVO.setSpecUnit(goodsSkuOne.getSpecUnit()); |
| | | auctionGoodsinfoVO.setDetail(goodsSkuOne.getDetail()); |
| | | auctionGoodsinfoVO.setBond(byId.getBond()); |
| | | auctionGoodsinfoVO.setYears(goodsSkuOne.getYears()); |
| | |
| | | }else { |
| | | auctionGoodsinfoVO.setIsCollection(1); |
| | | } |
| | | List<OrderAuctionBond> datas = orderClient.getAuctionGoodsOrderAuctionBondList(auctionGoodsListDTO, SecurityConstants.INNER).getData(); |
| | | if (datas.size()>0){ |
| | | auctionGoodsinfoVO.setIsApply(2); |
| | | }else{ |
| | | auctionGoodsinfoVO.setIsApply(1); |
| | | } |
| | | LambdaQueryWrapper<AuctionBondJl> wrapper8=Wrappers.lambdaQuery(); |
| | | wrapper8.eq(AuctionBondJl::getAuctionGoodsId,byId.getId()); |
| | | wrapper8.eq(AuctionBondJl::getMemberId,auctionGoodsListDTO.getMemberId()); |
| | | wrapper8.eq(AuctionBondJl::getIsState,0); |
| | | AuctionBondJl auctionBondJl = auctionBondJlMapper.selectOne(wrapper8); |
| | | if(auctionBondJl!=null){ |
| | | auctionGoodsinfoVO.setIsApply(2); |
| | | }else{ |
| | | auctionGoodsinfoVO.setIsApply(1); |
| | | } |
| | | |
| | | |
| | | |
| | | LocalDateTime now = LocalDateTime.now(); |
| | | LocalDateTime newTime7 = now.minusDays(7); |
| | |
| | | LambdaQueryWrapper<AuctionBidRecord> wrapper5= Wrappers.lambdaQuery(); |
| | | wrapper5.eq(AuctionBidRecord::getAuctionType,1); |
| | | wrapper5.eq(AuctionBidRecord::getTargetId,byId.getId()); |
| | | wrapper5.eq(AuctionBidRecord::getMemberId,auctionGoodsListDTO.getMemberId()); |
| | | wrapper5.eq(AuctionBidRecord::getDelFlag,0); |
| | | AuctionBidRecord list5 = auctionBidRecordService.getOne(wrapper5); |
| | | if (list5!=null){ |
| | | auctionGoodsinfoVO.setZgBid(list5.getLastBidAmount()); |
| | | wrapper5.orderByDesc(AuctionBidRecord::getLastBidAmount); |
| | | List<AuctionBidRecord> list2 = auctionBidRecordService.list(wrapper5); |
| | | if (list2.size()>0){ |
| | | auctionGoodsinfoVO.setZgBid(list2.get(0).getLastBidAmount()); |
| | | } |
| | | |
| | | |
| | | CustomConfig returnAddressUserName = sysUserClient.getconfig("MALL_ORDER_DESCRIPTION").getData(); |
| | | auctionGoodsinfoVO.setExplain(returnAddressUserName.getConfigValue()); |
| | | /*CustomConfig returnAddressUserName = sysUserClient.getconfig("MALL_ORDER_DESCRIPTION").getData(); |
| | | auctionGoodsinfoVO.setExplain(returnAddressUserName.getConfigValue());*/ |
| | | |
| | | |
| | | List<getHomeGoodsSkuXxiVO> homeGoodsSkuXxiVOS=new ArrayList<>(); |
| | |
| | | List<OrderAuctionBond> data = orderClient.getAuctionGoodsOrderAuctionBondList(auctionGoodsListDTO, SecurityConstants.INNER).getData(); |
| | | Set<Long> goodsSkuIdList = null; |
| | | if (data.size()>0){ |
| | | goodsSkuIdList = data.stream().map(OrderAuctionBond::getAuctionSalesroomId) |
| | | goodsSkuIdList = data.stream().map(OrderAuctionBond::getAuctionGoodsId) |
| | | .collect(Collectors.toSet()); |
| | | }else { |
| | | Set<Long> goodsSkuIdList1 =new HashSet<>(); |
| | |
| | | } |
| | | |
| | | if (auctionGoodsListDTO.getStartStatus()!=4){ |
| | | auctionGoodsListPageDTO.setStartStatus(auctionGoodsListDTO.getStartStatus()); |
| | | if (auctionGoodsListDTO.getStartStatus()==0){ |
| | | auctionGoodsListPageDTO.setStartStatus(5); |
| | | }else{ |
| | | auctionGoodsListPageDTO.setStartStatus(auctionGoodsListDTO.getStartStatus()); |
| | | } |
| | | |
| | | } |
| | | |
| | | Page<AuctionGoodsListVO> page = new Page<>(); |
| | | page.setSize(auctionGoodsListDTO.getPageSize()); |
| | | page.setCurrent(auctionGoodsListDTO.getPageCurr()); |
| | | List<AuctionGoods> auctionGoodsPgeList = auctionGoodsMapper.getAuctionGoodsPgeList(page, auctionGoodsListPageDTO); |
| | | List<AuctionGoods> auctionGoodsPgeList = auctionGoodsMapper.getAuctionGoodsPgeList1(page, auctionGoodsListPageDTO); |
| | | List<AuctionGoodsListVO> auctionGoodsVOS=new ArrayList<>(); |
| | | for (AuctionGoods auctionGoods:auctionGoodsPgeList){ |
| | | AuctionGoodsListVO auctionGoodsVO=new AuctionGoodsListVO(); |
| | |
| | | } |
| | | |
| | | @Override |
| | | @GlobalTransactional(rollbackFor = Exception.class) |
| | | @Transactional |
| | | public void endAuctionGoods(Long id) throws JsonProcessingException { |
| | | AuctionGoods auctionGoods = this.getById(id); |
| | | if (StringUtils.isNotNull(auctionGoods) && auctionGoods.getListingStatus().equals( |
| | | ListingStatusEnum.ON_SHELVES) && auctionGoods.getStartStatus() |
| | | if (StringUtils.isNotNull(auctionGoods) && auctionGoods.getStartStatus() |
| | | .equals(AuctionStartStatusEnum.IN_AUCTION)) { |
| | | auctionGoods.setStartStatus(AuctionStartStatusEnum.ENDED); |
| | | this.updateById(auctionGoods); |
| | | orderClient.returnBondByAuctionGoodsId(id, SecurityConstants.INNER); |
| | | // 远程调用商品服务,获取商品信息 |
| | | GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(auctionGoods.getGoodsSkuId(), |
| | | SecurityConstants.INNER) |
| | | .getData(); |
| | | if (auctionGoods.getStartStatus().equals(AuctionStartStatusEnum.IN_AUCTION)) { |
| | | // 查询出价记录 |
| | | List<AuctionBidRecord> auctionBidRecords = auctionBidRecordService.getBidRecordByGoodsId( |
| | | id); |
| | | List<AuctionBidRecord> auctionBidRecordList = new ArrayList<>(); |
| | | if (StringUtils.isNotEmpty(auctionBidRecords)) { |
| | | if (auctionBidRecords.size() >= auctionGoods.getAuctionStock()) { |
| | | // 中标 |
| | | for (int i = 0; i < auctionGoods.getAuctionStock(); i++) { |
| | | AuctionBidRecord auctionBidRecord = auctionBidRecords.get(i); |
| | | auctionBidRecord.setStatus(BidStatusEnum.SUCCESSFUL); |
| | | auctionBidRecordList.add(auctionBidRecord); |
| | | } |
| | | } else { |
| | | // 中标 |
| | | for (int i = 0; i < auctionBidRecords.size(); i++) { |
| | | AuctionBidRecord auctionBidRecord = auctionBidRecords.get(i); |
| | | auctionBidRecord.setStatus(BidStatusEnum.SUCCESSFUL); |
| | | auctionBidRecordList.add(auctionBidRecord); |
| | | } |
| | | // 退回剩余库存 |
| | | GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); |
| | | goodsStockUpdDTO.setGoodsSkuId(auctionGoods.getGoodsSkuId()); |
| | | goodsStockUpdDTO.setAuctionStock( |
| | | auctionGoods.getAuctionStock() - auctionBidRecords.size()); |
| | | goodsSkuClient.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO), |
| | | SecurityConstants.INNER); |
| | | } |
| | | |
| | | auctionBidRecordService.updateBatchById(auctionBidRecordList); |
| | | |
| | | // 创建待支付订单 |
| | | CustomConfig moneyConfig = sysUserClient.getconfig( |
| | | ConfigEnum.MEMBER_POINTS_MONEY.getKey()).getData(); |
| | | CustomConfig pointsConfig = sysUserClient.getconfig( |
| | | ConfigEnum.MEMBER_POINTS_POINTS.getKey()).getData(); |
| | | for (AuctionBidRecord auctionBidRecord : auctionBidRecordList) { |
| | | BigDecimal lastBidAmount = auctionBidRecord.getLastBidAmount(); |
| | | BigDecimal divide = lastBidAmount.divide( |
| | | new BigDecimal(moneyConfig.getConfigValue()), 0, RoundingMode.DOWN); |
| | | int points = divide.multiply( |
| | | new BigDecimal(pointsConfig.getConfigValue())).intValue(); |
| | | OrderDTO orderDTO = new OrderDTO(); |
| | | orderDTO.setAuctionType(AuctionOrderTypeEnum.REGULAR_ITEMS); |
| | | orderDTO.setGoodsQuantity(auctionGoods.getAuctionStock()); |
| | | orderDTO.setGoodsSkuId(auctionGoods.getId()); |
| | | orderDTO.setBound(auctionGoods.getBond()); |
| | | orderDTO.setMemberId(auctionBidRecord.getMemberId()); |
| | | orderDTO.setTotalAmount(lastBidAmount); |
| | | orderDTO.setOrderFrom(OrderFromEnum.AUCTION_ORDERS); |
| | | orderDTO.setOrderTime(LocalDateTime.now()); |
| | | orderDTO.setPoints(points); |
| | | orderDTO.setBound(auctionGoods.getBond()); |
| | | MemberAddress data = memberClient.getMemberAddressOne( |
| | | auctionBidRecord.getMemberId(), SecurityConstants.INNER).getData(); |
| | | if (StringUtils.isNotNull(data)) { |
| | | orderDTO.setReceiverName(data.getRecipientName()); |
| | | orderDTO.setReceiverCity(data.getReceiverCity()); |
| | | orderDTO.setReceiverDetailAddress(data.getDetailedAddress()); |
| | | orderDTO.setReceiverphone(data.getRecipientPhone()); |
| | | } |
| | | if (StringUtils.isNotNull(goodsSku)) { |
| | | orderDTO.setCoverPic(goodsSku.getCoverPic()); |
| | | orderDTO.setPrice(goodsSku.getPrice()); |
| | | orderDTO.setSkuName(goodsSku.getSkuName()); |
| | | } |
| | | orderDTO.setOrderTimeSx(auctionGoods.getEndTime()); |
| | | orderClient.saveOrderOne(orderDTO, SecurityConstants.INNER); |
| | | } |
| | | } else { |
| | | // 没有人出价,退回拍卖商品库存 |
| | | GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); |
| | | goodsStockUpdDTO.setGoodsSkuId(auctionGoods.getGoodsSkuId()); |
| | | goodsStockUpdDTO.setAuctionStock(auctionGoods.getAuctionStock()); |
| | | goodsSkuClient.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO), |
| | | SecurityConstants.INNER); |
| | | } |
| | | // 结束拍卖 |
| | | this.lambdaUpdate().set(AuctionGoods::getStartStatus, AuctionStartStatusEnum.ENDED) |
| | | .eq(AuctionGoods::getId, id).update(); |
| | | // 查询已支付保证金记录 |
| | | List<OrderAuctionBond> auctionBondList = orderClient.getOrderAuctionBondList(id, |
| | | AuctionOrderTypeEnum.REGULAR_ITEMS, |
| | | BondStatusEnum.PAID, |
| | | SecurityConstants.INNER).getData(); |
| | | if (StringUtils.isNotEmpty(auctionBondList)) { |
| | | List<RefundDTO> refundDTOList = new ArrayList<>(); |
| | | List<Long> unRefundMemberIdList = auctionBidRecordList.stream() |
| | | .map(AuctionBidRecord::getMemberId).collect( |
| | | Collectors.toList()); |
| | | for (OrderAuctionBond orderAuctionBond : auctionBondList) { |
| | | |
| | | // 已中标需在订单完成后退保证金 |
| | | if (unRefundMemberIdList.contains(orderAuctionBond.getMemberId())) { |
| | | continue; |
| | | } |
| | | RefundDTO refundDTO = new RefundDTO(); |
| | | refundDTO.setOrderNo(orderAuctionBond.getOrderNo()); |
| | | refundDTO.setAmount(orderAuctionBond.getBond()); |
| | | refundDTOList.add(refundDTO); |
| | | } |
| | | // 远程调用订单服务进行退款 |
| | | Map<String, Object> data = orderClient.refund(refundDTOList, |
| | | SecurityConstants.INNER).getData(); |
| | | // 处理退款返回结果 |
| | | List<String> successfulOrders = new ArrayList<>(); |
| | | List<String> failedOrders = new ArrayList<>(); |
| | | |
| | | data.forEach((key, value) -> { |
| | | if ((boolean) value) { |
| | | successfulOrders.add(key); |
| | | } else { |
| | | failedOrders.add(key); |
| | | } |
| | | }); |
| | | log.info("订单号:{},退款失败", failedOrders); |
| | | // 退款成功的订单修改状态 |
| | | List<Long> ids = auctionBondList.stream().map(bond -> { |
| | | if (successfulOrders.contains(bond.getOrderNo())) { |
| | | return bond.getId(); |
| | | } |
| | | return null; |
| | | }).filter(Objects::nonNull).collect(Collectors.toList()); |
| | | // 远程调用订单服务修改订单状态 |
| | | orderClient.updateOrderAuctionBondStatus(ids, BondStatusEnum.REFUNDED, |
| | | SecurityConstants.INNER); |
| | | } |
| | | } |
| | | Map<String, Object> map = new ConcurrentHashMap<>(); |
| | | map.put("notification_type", NotificationTypeConstant.AUCTION_GOODS); |
| | | map.put("notification_time", DateUtils.dateTimeNow("yyyy-MM-dd HH:mm:ss")); |