From 98933984fa1353d298a5117fb2a2d044fc51af93 Mon Sep 17 00:00:00 2001 From: rentaiming <806181662@qq.com> Date: 星期六, 22 六月 2024 13:18:36 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java | 103 ++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 80 insertions(+), 23 deletions(-) diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java index 97b81b8..414b6c0 100644 --- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java +++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java @@ -29,11 +29,14 @@ import com.ruoyi.common.core.enums.ListingStatusEnum; import com.ruoyi.common.core.enums.OrderFromEnum; import com.ruoyi.common.core.exception.ServiceException; +import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.page.BeanUtils; import com.ruoyi.common.core.utils.page.PageDTO; +import com.ruoyi.system.api.constants.ConfigEnum; import com.ruoyi.system.api.constants.NotificationTypeConstant; import com.ruoyi.system.api.domain.AuctionGoods; +import com.ruoyi.system.api.domain.CustomConfig; import com.ruoyi.system.api.domain.GoodsBrand; import com.ruoyi.system.api.domain.GoodsCategory; import com.ruoyi.system.api.domain.GoodsFlavorType; @@ -41,7 +44,9 @@ import com.ruoyi.system.api.domain.GoodsSku; import com.ruoyi.system.api.domain.Member; import com.ruoyi.system.api.domain.MemberAddress; +import com.ruoyi.system.api.domain.Order; import com.ruoyi.system.api.domain.OrderAuctionBond; +import com.ruoyi.system.api.domain.WebsocketMessageDTO; import com.ruoyi.system.api.domain.dto.AuctionGoodsListDTO; import com.ruoyi.system.api.domain.dto.AuctionGoodsListPageDTO; import com.ruoyi.system.api.domain.dto.GoodsStockUpdDTO; @@ -55,10 +60,10 @@ 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.util.WebSocketUsers; +import com.ruoyi.system.api.feignClient.SysUserClient; import io.seata.spring.annotation.GlobalTransactional; +import java.math.BigDecimal; import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -89,6 +94,7 @@ private final GoodsSkuClient goodsSkuClient; private final MemberClient memberClient; private final OrderClient orderClient; + private final SysUserClient sysUserClient; private final AuctionClient auctionClient; private final IAuctionBidRecordService auctionBidRecordService; @@ -137,6 +143,7 @@ query.getListingStatus()) .eq(StringUtils.isNotNull(query.getStartStatus()), AuctionGoods::getStartStatus, query.getStartStatus()) + .orderByDesc(AuctionGoods::getCreateTime) .page(new Page<>(query.getPageCurr(), query.getPageSize())); if (StringUtils.isEmpty(page.getRecords())) { return PageDTO.empty(page); @@ -301,6 +308,14 @@ auctionBidRecordService.updateById(auctionBidRecord); memberId = auctionBidRecord.getMemberId(); // 创建待支付订单 + 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()); @@ -310,6 +325,8 @@ 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)) { @@ -428,16 +445,25 @@ auctionGoodsinfoVO.setStartTime(byId.getStartTime()); auctionGoodsinfoVO.setEndTime(byId.getEndTime()); auctionGoodsinfoVO.setUnit(goodsSkuOne.getUnit()); + auctionGoodsinfoVO.setBond(byId.getBond()); auctionGoodsinfoVO.setDescription(goodsSkuOne.getDescription()); - auctionGoodsinfoVO.setYears(String.valueOf(goodsSkuOne.getYears())); + auctionGoodsinfoVO.setYears(goodsSkuOne.getYears()); GoodsBrand data = goodsSkuClient.getBrandOne(goodsSkuOne.getBrandId(), SecurityConstants.INNER).getData(); GoodsCategory data1 = goodsSkuClient.getCategoryOne(goodsSkuOne.getCategoryId(), SecurityConstants.INNER).getData(); GoodsSeries data2 = goodsSkuClient.getSeriesOne(goodsSkuOne.getSeriesId(), SecurityConstants.INNER).getData(); GoodsFlavorType data3 = goodsSkuClient.getFlavorTypeOne(goodsSkuOne.getFlavorTypeId(), SecurityConstants.INNER).getData(); - auctionGoodsinfoVO.setBrand(data.getBrandName()); - auctionGoodsinfoVO.setCategory(data1.getCategoryName()); + if (data!=null){ + auctionGoodsinfoVO.setBrand(data.getBrandName()); + } + if (data1!=null){ + auctionGoodsinfoVO.setCategory(data1.getCategoryName()); + } + if (data2!=null){ auctionGoodsinfoVO.setSeries(data2.getSeriesName()); - auctionGoodsinfoVO.setFlavorType(data3.getFlavorTypeName()); + } + if (data3!=null) { + auctionGoodsinfoVO.setFlavorType(data3.getFlavorTypeName()); + } auctionGoodsinfoVO.setCoverPic(goodsSkuOne.getCoverPic()); auctionGoodsinfoVO.setAlbum(goodsSkuOne.getAlbum()); auctionGoodsinfoVO.setAuthentication(byId.getAuthentication()); @@ -447,11 +473,14 @@ auctionGoodsinfoVO.setShareTitle(goodsSkuOne.getShareTitle()); auctionGoodsinfoVO.setSpecUnit(goodsSkuOne.getSpecUnit()); auctionGoodsinfoVO.setDetail(goodsSkuOne.getDetail()); - auctionGoodsinfoVO.setYears(String.valueOf(goodsSkuOne.getYears())); + auctionGoodsinfoVO.setBond(byId.getBond()); + auctionGoodsinfoVO.setYears(goodsSkuOne.getYears()); + auctionGoodsinfoVO.setSharePic(goodsSkuOne.getSharePic()); + auctionGoodsinfoVO.setShareTitle(goodsSkuOne.getShareTitle()); LambdaQueryWrapper<AuctionBidRecord> wrapper1= Wrappers.lambdaQuery(); - wrapper1.eq(AuctionBidRecord::getMemberId,auctionGoodsListDTO.getMemberId()); wrapper1.eq(AuctionBidRecord::getAuctionType,1); wrapper1.eq(AuctionBidRecord::getTargetId,byId.getId()); + wrapper1.eq(AuctionBidRecord::getMemberId,auctionGoodsListDTO.getMemberId()); wrapper1.eq(AuctionBidRecord::getDelFlag,0); AuctionBidRecord list1 = auctionBidRecordService.getOne(wrapper1); if (list1!=null){ @@ -459,6 +488,15 @@ auctionGoodsinfoVO.setPresentBid(list1.getLastBidAmount()); if (list1.getStatus().getCode()==2){ auctionGoodsinfoVO.setIsStatus(2); + + OrderDTO orderDTO =new OrderDTO(); + orderDTO.setMemberId(auctionGoodsListDTO.getMemberId()); + orderDTO.setGoodsSkuId(byId.getId()); + Order data4 = orderClient.getOrderOne1(orderDTO, SecurityConstants.INNER).getData(); + if (data4!=null){ + auctionGoodsinfoVO.setOrderId(data4.getId()); + auctionGoodsinfoVO.setOrderNo(data4.getOrderNo()); + } }else{ auctionGoodsinfoVO.setIsStatus(1); } @@ -484,19 +522,14 @@ } LocalDateTime now = LocalDateTime.now(); - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - String formattedDate = now.format(formatter); - LocalDateTime parseTime = LocalDateTime.parse(formattedDate, formatter); LocalDateTime newTime7 = now.minusDays(7); - String formattedDate7 = newTime7.format(formatter); - LocalDateTime parseTime7 = LocalDateTime.parse(formattedDate7, formatter); LambdaQueryWrapper<AuctionBrowseRecord> wrapper3=Wrappers.lambdaQuery(); wrapper3.eq(AuctionBrowseRecord::getDelFlag,0); wrapper3.eq(AuctionBrowseRecord::getTargetId,auctionGoodsListDTO.getGoodsSkuId()); wrapper3.eq(AuctionBrowseRecord::getMemberId,auctionGoodsListDTO.getMemberId()); - wrapper3.ge(AuctionBrowseRecord::getCreateTime, parseTime7) - .le(AuctionBrowseRecord::getCreateTime, parseTime); + wrapper3.ge(AuctionBrowseRecord::getCreateTime, newTime7) + .le(AuctionBrowseRecord::getCreateTime, now); List<AuctionBrowseRecord> list = iAuctionBrowseRecordService.list(wrapper3); if (list.size()==0){ AuctionBrowseRecord auctionBrowseRecord=new AuctionBrowseRecord(); @@ -506,8 +539,18 @@ iAuctionBrowseRecordService.save(auctionBrowseRecord); } + LambdaQueryWrapper<AuctionBidRecord> wrapper5= Wrappers.lambdaQuery(); + wrapper5.eq(AuctionBidRecord::getAuctionType,1); + wrapper5.eq(AuctionBidRecord::getTargetId,byId.getId()); + wrapper5.eq(AuctionBidRecord::getDelFlag,0); + AuctionBidRecord list5 = auctionBidRecordService.getOne(wrapper5); + if (list5!=null){ + auctionGoodsinfoVO.setZgBid(list5.getLastBidAmount()); + } + CustomConfig returnAddressUserName = sysUserClient.getconfig("MALL_ORDER_DESCRIPTION").getData(); + auctionGoodsinfoVO.setExplain(returnAddressUserName.getConfigValue()); return auctionGoodsinfoVO; } @@ -584,16 +627,19 @@ if (StringUtils.isNotNull(auctionGoods) && auctionGoods.getListingStatus().equals( ListingStatusEnum.ON_SHELVES) && auctionGoods.getStartStatus() .equals(AuctionStartStatusEnum.IN_AUCTION)) { - this.lambdaUpdate().set(AuctionGoods::getStartStatus, AuctionStartStatusEnum.ENDED) - .eq(AuctionGoods::getId, id); + auctionGoods.setStartStatus(AuctionStartStatusEnum.ENDED); + this.updateById(auctionGoods); // TODO 退保证金 + orderClient.returnBondByAuctionGoodsId(id, SecurityConstants.INNER); + Map<String, Object> map = new ConcurrentHashMap<>(); map.put("notification_type", NotificationTypeConstant.AUCTION_GOODS); - map.put("notification_time", LocalDateTime.now()); + map.put("notification_time", DateUtils.dateTimeNow("yyyy-MM-dd HH:mm:ss")); map.put("target_id", id); map.put("message_type", "end"); String msg = objectMapper.writeValueAsString(map); - WebSocketUsers.sendMessageToUsersByType(1, msg); + sysUserClient.pushByClientType(WebsocketMessageDTO.builder().message(msg) + .clientType(ClientTypeEnum.MEMBER).build(), SecurityConstants.INNER); log.info("===================>发送websocket通知,消息体{}", msg); } } @@ -604,15 +650,16 @@ if (StringUtils.isNotNull(auctionGoods) && auctionGoods.getListingStatus().equals( ListingStatusEnum.ON_SHELVES) && auctionGoods.getStartStatus() .equals(AuctionStartStatusEnum.IN_PREVIEW)) { - this.lambdaUpdate().set(AuctionGoods::getStartStatus, AuctionStartStatusEnum.IN_AUCTION) - .eq(AuctionGoods::getId, id); + auctionGoods.setStartStatus(AuctionStartStatusEnum.IN_AUCTION); + this.updateById(auctionGoods); Map<String, Object> map = new ConcurrentHashMap<>(); map.put("notification_type", NotificationTypeConstant.AUCTION_GOODS); - map.put("notification_time", LocalDateTime.now()); + map.put("notification_time", DateUtils.dateTimeNow("yyyy-MM-dd HH:mm:ss")); map.put("target_id", id); map.put("message_type", "start"); String msg = objectMapper.writeValueAsString(map); - WebSocketUsers.sendMessageToUsersByType(ClientTypeEnum.MEMBER.getCode(), msg); + sysUserClient.pushByClientType(WebsocketMessageDTO.builder().message(msg) + .clientType(ClientTypeEnum.MEMBER).build(), SecurityConstants.INNER); log.info("===================>发送websocket通知,消息体{}", msg); } } @@ -631,4 +678,14 @@ auctionGoods.setListingStatus(dto.getListingStatus()); this.updateById(auctionGoods); } + + public static void main(String[] args) throws JsonProcessingException { + 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")); + map.put("target_id", 1); + map.put("message_type", "end"); + String msg = objectMapper.writeValueAsString(map); + System.out.println(msg); + } } -- Gitblit v1.7.1