ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/Order.java
@@ -105,7 +105,6 @@ @TableLogic private Integer delFlag; @ApiModelProperty(value = "快递单号") private String courierNumber; @@ -118,10 +117,8 @@ @ApiModelProperty(value = "城市") private String receiverCity; @ApiModelProperty(value = "详细地址") private String receiverDetailAddress; @ApiModelProperty(value = "保证金") private BigDecimal bound; @@ -147,5 +144,7 @@ @ApiModelProperty(value = "积分") private Integer points; @ApiModelProperty("发货快递") private String logisticsNum; } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/MgtArticleCommentsController.java
@@ -1,7 +1,6 @@ package com.ruoyi.article.controller.management; import com.ruoyi.article.controller.forepart.dto.ArticleCommentsDTO; import com.ruoyi.article.controller.management.dto.MgtArticleCommentsQuery; import com.ruoyi.article.controller.management.vo.MgtArticleCommentsVO; import com.ruoyi.article.service.IArticleCommentsService; @@ -34,13 +33,6 @@ public class MgtArticleCommentsController { private final IArticleCommentsService articleCommentsService; @PostMapping("/delMemberArticleComments") @ApiOperation(value = "用户端-删除用户评论/回复") public R delMemberArticleComments(@RequestBody ArticleCommentsDTO articleCommentsDTO) { articleCommentsService.delMemberArticleComments(articleCommentsDTO); return R.ok(); } /** * 查看详情-评论详情 ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/MgtArticleController.java
@@ -4,6 +4,7 @@ import com.ruoyi.article.controller.management.dto.MgtArticleAuditDTO; import com.ruoyi.article.controller.management.dto.MgtArticleDTO; import com.ruoyi.article.controller.management.dto.MgtArticleQuery; import com.ruoyi.article.controller.management.dto.MgtArticleUpdDTO; import com.ruoyi.article.controller.management.vo.MgtArticleVO; import com.ruoyi.article.service.IArticleService; import com.ruoyi.common.core.domain.R; @@ -13,6 +14,7 @@ import io.swagger.annotations.ApiParam; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; @@ -99,4 +101,28 @@ return R.ok(); } /** * 上架/下架 * * @param dto 资讯上下架数据传输对象 */ @ApiOperation("上架/下架") @PutMapping("/upd-status") public R<?> updStatus(@Validated @RequestBody MgtArticleUpdDTO dto) { articleService.updStatus(dto); return R.ok(); } /** * 删除资讯 * * @param id 资讯id */ @ApiOperation("删除资讯") @DeleteMapping("/{id}") public R<?> removeById( @ApiParam(name = "id", value = "资讯id", required = true) @PathVariable("id") Long id) { articleService.removeById(id); return R.ok(); } } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/MgtSensitiveWordsController.java
@@ -9,8 +9,11 @@ import com.ruoyi.common.core.utils.page.PageDTO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.DeleteMapping; 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; @@ -56,4 +59,17 @@ sensitiveWordsService.saveSensitiveWords(dto); return R.ok(); } /** * 上传敏感词 * * @param id 敏感词id */ @ApiOperation("删除敏感词") @DeleteMapping("/{id}") public R<?> delSensitiveWords( @ApiParam(name = "id", value = "敏感词id", required = true) @PathVariable("id") Long id) { sensitiveWordsService.removeById(id); return R.ok(); } } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/dto/MgtArticleAuditDTO.java
@@ -23,4 +23,7 @@ @ApiModelProperty(value = "审核状态 已通过 已拒绝") @NotNull(message = "审核状态不能为空") private AuditStatusEnum status; @ApiModelProperty(value = "拒绝原因") private String refuseComment; } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/dto/MgtArticleUpdDTO.java
New file @@ -0,0 +1,27 @@ package com.ruoyi.article.controller.management.dto; import com.ruoyi.common.core.enums.ListingStatusEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; import javax.validation.constraints.NotNull; import lombok.Data; /** * @author mitao * @date 2024/6/13 */ @Data @ApiModel("资讯上下架数据传输对象") public class MgtArticleUpdDTO implements Serializable { private static final long serialVersionUID = -3392887724191574253L; @ApiModelProperty(value = "资讯id") @NotNull(message = "资讯id不能为空") private Long id; @ApiModelProperty(value = "上架状态 上架中 已下架") @NotNull(message = "上架状态不能为空") private ListingStatusEnum listingStatus; } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/IArticleService.java
@@ -7,6 +7,7 @@ import com.ruoyi.article.controller.management.dto.MgtArticleAuditDTO; import com.ruoyi.article.controller.management.dto.MgtArticleDTO; import com.ruoyi.article.controller.management.dto.MgtArticleQuery; import com.ruoyi.article.controller.management.dto.MgtArticleUpdDTO; import com.ruoyi.article.controller.management.vo.MgtArticleVO; import com.ruoyi.article.domain.Article; import com.ruoyi.common.core.utils.page.PageDTO; @@ -70,4 +71,11 @@ * @param dto 管理后台-资讯审核传输对象 */ void audit(MgtArticleAuditDTO dto); /** * 上架/下架 * * @param dto 资讯上下架数据传输对象 */ void updStatus(MgtArticleUpdDTO dto); } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/ArticleCommentsServiceImpl.java
@@ -94,17 +94,19 @@ public PageDTO<MgtArticleCommentsVO> getArticleCommentsPage(MgtArticleCommentsQuery query) { PageDTO<MgtArticleCommentsVO> result; Set<Long> memberIdSet = null; Page<ArticleComments> page = new Page<>(query.getPageCurr(), query.getPageSize()); if (StringUtils.isNotBlank(query.getNickname())) { MemberDTO memberDTO = new MemberDTO(); memberDTO.setNickname(query.getNickname()); List<Member> data = memberClient.getMemberListByCondition(memberDTO, SecurityConstants.INNER).getData(); if (StringUtils.isNotEmpty(data)) { memberIdSet = data.stream().map(Member::getId) .collect(Collectors.toSet()); if (StringUtils.isEmpty(data)) { // 搜索结果为空,直接返回空 return PageDTO.empty(page); } memberIdSet = data.stream().map(Member::getId).collect(Collectors.toSet()); } Page<ArticleComments> page = this.lambdaQuery() page = this.lambdaQuery() .eq(ArticleComments::getArticleId, query.getArticleId()) .in(StringUtils.isNotEmpty(memberIdSet), ArticleComments::getMemberId, memberIdSet) .page(new Page<>(query.getPageCurr(), query.getPageSize())); ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/ArticleServiceImpl.java
@@ -11,6 +11,7 @@ import com.ruoyi.article.controller.management.dto.MgtArticleAuditDTO; import com.ruoyi.article.controller.management.dto.MgtArticleDTO; import com.ruoyi.article.controller.management.dto.MgtArticleQuery; import com.ruoyi.article.controller.management.dto.MgtArticleUpdDTO; import com.ruoyi.article.controller.management.vo.MgtArticleVO; import com.ruoyi.article.domain.Article; import com.ruoyi.article.domain.ArticleComments; @@ -26,7 +27,6 @@ import com.ruoyi.common.core.enums.ArticleTypeEnum; import com.ruoyi.common.core.enums.AuditStatusEnum; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.enums.ListingStatusEnum; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.page.BeanUtils; import com.ruoyi.common.core.utils.page.PageDTO; @@ -305,6 +305,7 @@ // 构建查询条件 Set<Long> sysUserIdSet = null; Set<Long> memberIdSet = null; Page<Article> page = new Page<>(query.getPageCurr(), query.getPageSize()); if (StringUtils.isNotBlank(query.getCreateBy()) || StringUtils.isNotBlank( query.getPhone())) { SysUser user = new SysUser(); @@ -321,20 +322,23 @@ SecurityConstants.INNER).getData(); memberIdSet = memberlist.stream().map(Member::getId) .collect(Collectors.toSet()); if (StringUtils.isEmpty(sysUserIdSet) && StringUtils.isEmpty(memberIdSet)) { return PageDTO.empty(page); } } // 分页查询 Page<Article> page = this.lambdaQuery() page = this.lambdaQuery() .in(StringUtils.isNotEmpty(sysUserIdSet), Article::getCreateBy, sysUserIdSet) .in(StringUtils.isNotEmpty(memberIdSet), Article::getMemberId, memberIdSet) .eq(StringUtils.isNotNull(query.getListingStatus()), Article::getListingStatus, query.getListingStatus()) .like(StringUtils.isNotBlank(query.getTitle()), Article::getTitle, query.getTitle()) .orderByDesc(Article::getStatus) .orderByDesc(Article::getReported) .page(new Page<>(query.getPageCurr(), query.getPageSize())); // 若为空直接返回 if (StringUtils.isNotEmpty(page.getRecords())) { if (StringUtils.isEmpty(page.getRecords())) { return PageDTO.empty(page); } /*根据资讯的发布类型分别从系统用户表和会员表中查询发布人信息并封装VO*/ @@ -360,8 +364,7 @@ Collectors.toSet()); if (StringUtils.isNotEmpty(memIds)) { List<Member> memberList = memberClient.getMemberListByIds(memIds, SecurityConstants.INNER) .getData(); SecurityConstants.INNER).getData(); memberMap = memberList.stream().collect( Collectors.toMap(Member::getId, Function.identity())); } else { @@ -400,6 +403,7 @@ Article article = BeanUtils.copyBean(dto, Article.class); if (StringUtils.isNull(article.getId())) { article.setStatus(AuditStatusEnum.PASSED); article.setArticleType(ArticleTypeEnum.PLATFORM_RELEASE); this.save(article); } else { Article articleById = this.getById(article.getId()); @@ -455,6 +459,20 @@ throw new ServiceException("资讯不存在"); } article.setStatus(dto.getStatus()); if (AuditStatusEnum.REJECTED.equals(dto.getStatus())) { article.setRefuseComment(dto.getRefuseComment()); } this.updateById(article); } /** * 上架/下架 * * @param dto 资讯上下架数据传输对象 */ @Override public void updStatus(MgtArticleUpdDTO dto) { this.lambdaUpdate().set(Article::getListingStatus, dto.getListingStatus()) .eq(Article::getId, dto.getId()).update(); } } ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/MgtAuctionScreenController.java
@@ -1,6 +1,7 @@ package com.ruoyi.auction.controller.management; import com.fasterxml.jackson.core.JsonProcessingException; import com.ruoyi.auction.controller.management.dto.MgtAuctionSalesroomGoodsQuery; import com.ruoyi.auction.controller.management.dto.MgtAuctionSalesroomQuery; import com.ruoyi.auction.controller.management.dto.MgtScreenBidPage; @@ -14,9 +15,10 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.page.PageDTO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; @@ -25,6 +27,7 @@ import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; /** @@ -114,8 +117,11 @@ */ @PutMapping("/add-backup-goods") @ApiOperation(value = "选择备选商品", notes = "选择备选商品") public R<?> addBackupGoods(@RequestBody List<Long> idList) { auctionSalesroomService.addBackupGoods(idList); @ApiImplicitParams({ @ApiImplicitParam(name = "idStr", value = "商品id集合", required = true) }) public R<?> addBackupGoods(@RequestParam("idStr") String idStr) { auctionSalesroomService.addBackupGoods(idStr); return R.ok(); } @@ -181,7 +187,11 @@ public R<?> startCurrentAuctionSalesroom( @ApiParam(name = "auctionSalesroomId", value = "拍卖场id", required = true) @PathVariable("auctionSalesroomId") Long auctionSalesroomId) { auctionSalesroomService.startCurrentAuctionSalesroom(auctionSalesroomId); try { auctionSalesroomService.startCurrentAuctionSalesroom(auctionSalesroomId); } catch (JsonProcessingException e) { throw new RuntimeException(e); } return R.ok(); } @@ -195,7 +205,11 @@ public R<?> stopCurrentAuctionSalesroom( @ApiParam(name = "auctionSalesroomId", value = "拍卖场id", required = true) @PathVariable("auctionSalesroomId") Long auctionSalesroomId) { auctionSalesroomService.stopCurrentAuctionSalesroom(auctionSalesroomId); try { auctionSalesroomService.stopCurrentAuctionSalesroom(auctionSalesroomId); } catch (JsonProcessingException e) { throw new RuntimeException(e); } return R.ok(); } } ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/dto/MgtAuctionSalesroomGoodsQuery.java
@@ -16,7 +16,10 @@ public class MgtAuctionSalesroomGoodsQuery extends BasePage { private static final long serialVersionUID = 9040206486072802788L; @ApiModelProperty("拍卖场id") private Long auctionSalesroomId; @ApiModelProperty(value = "商品名称") private String goodsName; } ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomService.java
@@ -1,6 +1,7 @@ package com.ruoyi.auction.service; import com.baomidou.mybatisplus.extension.service.IService; import com.fasterxml.jackson.core.JsonProcessingException; import com.google.zxing.WriterException; import com.ruoyi.auction.controller.management.dto.MgtAuctionSaleroomBidRecordQuery; import com.ruoyi.auction.controller.management.dto.MgtAuctionSalesroomDTO; @@ -152,7 +153,7 @@ * * @param idList 备选商品id集合 */ void addBackupGoods(List<Long> idList); void addBackupGoods(String idStr); /** * 结束当前拍卖商品 @@ -187,7 +188,7 @@ * * @param auctionSalesroomId 拍卖场id */ void startCurrentAuctionSalesroom(Long auctionSalesroomId); void startCurrentAuctionSalesroom(Long auctionSalesroomId) throws JsonProcessingException; void stopCurrentAuctionSalesroom(Long auctionSalesroomId); void stopCurrentAuctionSalesroom(Long auctionSalesroomId) throws JsonProcessingException; } ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java
@@ -59,7 +59,12 @@ import io.seata.spring.annotation.GlobalTransactional; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; import javax.annotation.Resource; @@ -108,14 +113,18 @@ @Override public PageDTO<MgtAuctionGoodsVO> getAuctionGoodsPage(MgtAuctionGoodsQuery query) { Set<Long> goodsSkuIdList = null; Page<AuctionGoods> page = new Page<>(query.getPageCurr(), query.getPageSize()); if (StringUtils.isNotEmpty(query.getGoodsSkuName())) { List<GoodsSku> goodsSku = goodsSkuClient.getGoodsByName(query.getGoodsSkuName(), SecurityConstants.INNER) .getData(); SecurityConstants.INNER).getData(); if (StringUtils.isEmpty(goodsSku)) { return PageDTO.empty(page); } goodsSkuIdList = goodsSku.stream().map(GoodsSku::getId) .collect(Collectors.toSet()); } Page<AuctionGoods> page = this.lambdaQuery() page = this.lambdaQuery() .select(AuctionGoods::getId, AuctionGoods::getGoodsSkuId, AuctionGoods::getListingStatus, AuctionGoods::getStartStatus, AuctionGoods::getStartTime, AuctionGoods::getEndTime, @@ -130,7 +139,7 @@ query.getStartStatus()) .page(new Page<>(query.getPageCurr(), query.getPageSize())); if (StringUtils.isEmpty(page.getRecords())) { return PageDTO.empty(page.getTotal(), page.getPages()); return PageDTO.empty(page); } // 查询商品信息 Set<Long> goodsIdList = page.getRecords().stream().map(AuctionGoods::getGoodsSkuId) ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java
@@ -13,6 +13,8 @@ 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 +51,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 +60,7 @@ 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.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 +90,19 @@ 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.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; @@ -194,7 +206,7 @@ */ private static final String ALIPAY_PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAh+tCVKqUmlHDL8Ki1TUJtzE5IKV1irJuoHWZTvndJCKJJ8bdWxL9mu5xsy8KkfrnS6wJIKBMLTxMoYQHG7l2Gt07YyUCYHS5+yvbHtTkyFFy2KRPeUEWXz1Tm4juvInDvvr+n7v9ETepToGhC+UDlQcBvuSppw8N+463E+1GRrC4APwXYGLzaIvYvDHcQAULkWhXsjzxJSmeSi12kqWKlgnVJC1y0FT8xQtvhwShfaIqKwzErn9S2z7JjdXboJMUYQHoqF1A4SmWY8c0qawqvx2hGP36W3RDQ4cczzFwUHS1Cylhsbgh1COc4OdANCX4Np2NUzaRDCNzN0WVFKtK+QIDAQAB"; private static final ObjectMapper objectMapper = new ObjectMapper(); @Override public List<AuctionSalesroom> getAuctionBidRecordList(AuctionSalesroomDTO ationSalesroomGoodsDTO) { @@ -999,44 +1011,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; @@ -1113,6 +1127,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(), @@ -1120,14 +1135,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) @@ -1147,10 +1167,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) @@ -1158,6 +1180,7 @@ if (StringUtils.isNotEmpty(auctionSalesroomGoods)) { auctionSalesroomGoods.forEach(item -> { item.setStatus(AuctionGoodsStatusEnum.WAITING); item.setBackupStatus(Boolean.FALSE); }); auctionSalesroomGoodsMapper.updateBatchById(auctionSalesroomGoods); } @@ -1229,7 +1252,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); @@ -1246,12 +1270,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); @@ -1289,5 +1321,11 @@ 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); } } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/forepart/ForepartGoodsSkuController.java
@@ -5,15 +5,15 @@ import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.goods.service.IGoodsSkuService; import com.ruoyi.system.api.domain.dto.HomeGoodsSkuDTO; import com.ruoyi.system.api.domain.vo.HomeGoodsSkuListVO; import com.ruoyi.system.api.domain.vo.HomeGoodsSkuInfoVO; import com.ruoyi.system.api.domain.vo.getHomeGoodsSkuXxiVO; import com.ruoyi.system.api.domain.vo.HomeGoodsSkuListVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.List; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * <p> ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsSkuService.java
@@ -13,8 +13,6 @@ import com.ruoyi.system.api.domain.vo.HomeGoodsSkuInfoVO; import com.ruoyi.system.api.domain.vo.HomeGoodsSkuListVO; import java.util.List; import com.ruoyi.system.api.domain.vo.getHomeGoodsSkuXxiVO; import org.springframework.web.bind.annotation.RequestBody; /** ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java
@@ -180,7 +180,7 @@ Optional.of(goods).ifPresent(goodsSku -> vo.setGoodsSkuName(goodsSku.getSkuName())); Integer num = orderClient.getSeckillMembers(goodsSeckill.getGoodsSkuId(), SecurityConstants.INNER).getData(); vo.setNumberOfPurchasedMembers(num); vo.setNumberOfPurchasedMembers(StringUtils.isNull(num) ? 0 : num); return vo; } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSkuServiceImpl.java
@@ -39,11 +39,12 @@ import com.ruoyi.system.api.domain.dto.ListStatusDTO; import com.ruoyi.system.api.domain.vo.HomeGoodsSkuInfoVO; import com.ruoyi.system.api.domain.vo.HomeGoodsSkuListVO; import com.ruoyi.system.api.domain.vo.getHomeGoodsSkuXxiVO; import com.ruoyi.system.api.feignClient.GoodsSkuClient; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import javax.annotation.Resource; ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/dto/MgtMemberLevelDetailDTO.java
@@ -12,6 +12,10 @@ public class MgtMemberLevelDetailDTO implements Serializable { private static final long serialVersionUID = 841295965476674650L; @ApiModelProperty(value = "会员等级id") @NotNull(message = "会员等级id不能为空") private Long id; @ApiModelProperty(value = "会员等级") @NotNull(message = "会员等级不能为空") ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberPointsServiceImpl.java
@@ -55,17 +55,21 @@ @Override public PageDTO<MgtMemberPointsVO> getMemberPointsPage(MgtMemberPointsQuery query) { Set<Long> memberIdSet = null; Page<MemberPoints> page = new Page<>(query.getPageCurr(), query.getPageSize()); MemberDTO memberDTO = getMemberQueryParam(query); if (StringUtils.isNotNull(memberDTO)) { memberIdSet = getMemberIdSet(memberDTO); if (StringUtils.isEmpty(memberIdSet)) { return PageDTO.empty(page); } } // 分页查询积分 Page<MemberPoints> page = this.lambdaQuery() page = this.lambdaQuery() .eq(StringUtils.isNotNull(query.getPointsStatus()), MemberPoints::getPointsStatus, query.getPointsStatus()) .in(StringUtils.isNotEmpty(memberIdSet), MemberPoints::getMemberId, memberIdSet) .orderByDesc(MemberPoints::getCreateTime) .page(new Page<>(query.getPageCurr(), query.getPageSize())); .page(page); if (StringUtils.isEmpty(page.getRecords())) { return PageDTO.empty(page); } ruoyi-modules/ruoyi-order/pom.xml
@@ -120,12 +120,6 @@ </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.4</version> </dependency> <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> @@ -149,12 +143,6 @@ </exclusion> </exclusions> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version> <scope>compile</scope> </dependency> <!-- 分布式事务 --> <dependency> ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtLogisticsController.java
New file @@ -0,0 +1,42 @@ package com.ruoyi.order.controller.management; import com.ruoyi.common.core.domain.R; import com.ruoyi.order.service.ILogisticsService; import com.ruoyi.system.api.domain.Logistics; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * <p> * 物流公司 前端控制器 * </p> * * @author mitao * @since 2024-06-07 */ @RestController @RequiredArgsConstructor @RequestMapping("/mgt/logistics") @Api(value = "管理后台-获取物流快递信息", tags = "管理后台-获取物流快递信息") public class MgtLogisticsController { private ILogisticsService iLogisticsService; /** * 获取物流公司列表 * * @return List<Logistics> */ @GetMapping("/list") @ApiOperation(value = "物流公司列表") public R<List<Logistics>> getLogistics() { return R.ok(iLogisticsService.list()); } } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtOrderController.java
@@ -4,13 +4,19 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.order.controller.management.dto.MgtMallOrderQuery; import com.ruoyi.order.controller.management.dto.MgtOrderConfirmShipmentDTO; import com.ruoyi.order.controller.management.vo.MgtMallOrderVO; import com.ruoyi.order.service.IOrderService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; 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.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -28,6 +34,7 @@ @RestController @RequestMapping("/mgt/order") @RequiredArgsConstructor @Api(tags = "管理后台-订单管理相关接口", value = "管理后台-订单管理相关接口") public class MgtOrderController { private final IOrderService orderService; @@ -44,4 +51,43 @@ @Validated @RequestBody MgtMallOrderQuery query) { return R.ok(orderService.getMallOrderPage(query)); } /** * 获取商城订单详情 * * @param id 订单id * @return MgtMallOrderVO */ @ApiOperation("查看详情") @GetMapping("/detail/{id}") public R<MgtMallOrderVO> getMallOrderDetail( @ApiParam(name = "id", value = "订单id", required = true) @Validated @RequestBody Long id) { return R.ok(orderService.getMallOrderDetail(id)); } /** * 确认发货 * * @param dto 确认收货请求对象 */ @ApiOperation("确认收货") @PutMapping("/confirm-shipment") public R<?> confirmShipmentOrder(@Validated @RequestBody MgtOrderConfirmShipmentDTO dto) { orderService.confirmShipmentOrder(dto); return R.ok(); } /** * 已收货 * * @param id 订单id */ @ApiOperation("已收货") @PutMapping("/received-goods/{id}") public R<?> receivedGoods( @ApiParam(name = "id", value = "订单id", required = true) @PathVariable("id") Long id) { orderService.receivedGoods(id); return R.ok(); } } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/dto/MgtOrderConfirmShipmentDTO.java
New file @@ -0,0 +1,31 @@ package com.ruoyi.order.controller.management.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import lombok.Data; /** * @author mitao * @date 2024/6/13 */ @Data @ApiModel(value = "确认收货请求对象", description = "确认收货请求对象") public class MgtOrderConfirmShipmentDTO implements Serializable { private static final long serialVersionUID = -7033967657700963452L; @ApiModelProperty(value = "订单id") @NotNull(message = "订单id不能为空") private Long id; @ApiModelProperty("发货快递") @NotBlank(message = "发货快递不能为空") private String logisticsNum; @ApiModelProperty("发货快递") @NotBlank(message = "发货快递单号不能为空") private String courierNumber; } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/vo/MgtMallOrderVO.java
@@ -1,5 +1,6 @@ package com.ruoyi.order.controller.management.vo; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.enums.OrderFromEnum; import com.ruoyi.common.core.enums.OrderStatusEnum; import com.ruoyi.common.core.enums.PaymentMethodEnum; @@ -27,6 +28,7 @@ private String orderNo; @ApiModelProperty(value = "下单时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime orderTime; @ApiModelProperty(value = "订单来源 1=商品订单 2=秒杀订单 3=团购订单 4=拍卖订单") @@ -51,9 +53,11 @@ private OrderStatusEnum orderStatus; @ApiModelProperty(value = "支付时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime payTime; @ApiModelProperty(value = "取消时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime cancelTime; @ApiModelProperty(value = "订单备注") @@ -63,6 +67,7 @@ private LocalDateTime deliveryTime; @ApiModelProperty(value = "确认收货时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime receiveTime; @ApiModelProperty(value = "优惠金额") @@ -78,7 +83,7 @@ private String receiverName; @ApiModelProperty(value = "收货人电话") private String receiverphone; private String receiverPhone; @ApiModelProperty(value = "城市") private String receiverCity; ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/IOrderService.java
@@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.order.controller.management.dto.MgtMallOrderQuery; import com.ruoyi.order.controller.management.dto.MgtOrderConfirmShipmentDTO; import com.ruoyi.order.controller.management.vo.MgtMallOrderVO; import com.ruoyi.system.api.domain.Order; import com.ruoyi.system.api.domain.dto.HomeGoodsSkuDTO; @@ -81,4 +82,26 @@ * @return PageDTO<MgtMallOrderVO> */ PageDTO<MgtMallOrderVO> getMallOrderPage(MgtMallOrderQuery query); /** * 获取商城订单详情 * * @param id 订单id * @return MgtMallOrderVO */ MgtMallOrderVO getMallOrderDetail(Long id); /** * 确认发货 * * @param dto 确认收货请求对象 */ void confirmShipmentOrder(MgtOrderConfirmShipmentDTO dto); /** * 已收货 * * @param id 订单id */ void receivedGoods(Long id); } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/LogisticsServiceImpl.java
@@ -2,6 +2,9 @@ import com.alibaba.nacos.shaded.com.google.gson.Gson; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.kuaidi100.sdk.api.QueryTrack; import com.kuaidi100.sdk.core.IBaseClient; import com.kuaidi100.sdk.pojo.HttpResult; import com.kuaidi100.sdk.request.QueryTrackParam; import com.kuaidi100.sdk.request.QueryTrackReq; import com.kuaidi100.sdk.utils.SignUtils; @@ -10,9 +13,6 @@ import com.ruoyi.system.api.domain.Logistics; import com.ruoyi.system.api.domain.dto.LogisticsDTO; import com.ruoyi.system.api.domain.vo.Express100VO; import com.kuaidi100.sdk.core.IBaseClient; import com.kuaidi100.sdk.pojo.HttpResult; import com.kuaidi100.sdk.api.QueryTrack; import org.springframework.stereotype.Service; /** ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -11,12 +11,17 @@ import com.ruoyi.common.core.enums.PaymentMethodEnum; import com.ruoyi.common.core.exception.ServiceException; 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.order.controller.management.dto.MgtMallOrderQuery; import com.ruoyi.order.controller.management.dto.MgtOrderConfirmShipmentDTO; import com.ruoyi.order.controller.management.vo.MgtMallOrderVO; import com.ruoyi.order.controller.management.vo.MgtOrderReturnRequestVO; import com.ruoyi.order.domain.OrderReturnRequest; import com.ruoyi.order.domain.Paylog; import com.ruoyi.order.mapper.OrderAuctionBondMapper; import com.ruoyi.order.mapper.OrderMapper; import com.ruoyi.order.service.IOrderReturnRequestService; import com.ruoyi.order.service.IOrderService; import com.ruoyi.order.service.IPaylogService; import com.ruoyi.order.util.OrderUtil; @@ -26,12 +31,14 @@ import com.ruoyi.system.api.domain.GoodsGroupPurchase; import com.ruoyi.system.api.domain.GoodsSeckill; 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.dto.CouponMemberDTO; import com.ruoyi.system.api.domain.dto.GoodsStockUpdDTO; import com.ruoyi.system.api.domain.dto.HomeGoodsSkuDTO; import com.ruoyi.system.api.domain.dto.MemberDTO; import com.ruoyi.system.api.domain.dto.MemberOrderDTO; import com.ruoyi.system.api.domain.dto.MemberOrderListDTO; import com.ruoyi.system.api.domain.dto.OrderDTO; @@ -47,10 +54,11 @@ import java.time.LocalDateTime; import java.util.Collection; import java.util.List; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; import javax.annotation.Resource; import org.apache.commons.beanutils.BeanUtils; import org.springframework.stereotype.Service; /** @@ -84,7 +92,8 @@ @Resource private SysUserClient sysUserClient; @Resource private IOrderReturnRequestService orderReturnRequestService; @Override public void saveOrderOne(OrderDTO OrderDTO) { @@ -510,7 +519,7 @@ Order order = baseMapper.selectById(memberOrderListDTO.getId()); OrderVO orderVO=new OrderVO(); try { BeanUtils.copyProperties(orderVO,order); orderVO = BeanUtils.copyBean(order, OrderVO.class); } catch (Exception e) { throw new RuntimeException(e); } @@ -639,6 +648,109 @@ */ @Override public PageDTO<MgtMallOrderVO> getMallOrderPage(MgtMallOrderQuery query) { return null; PageDTO<MgtMallOrderVO> pageVO; // 封装会员条件查询对象 MemberDTO memberDTO = null; Set<Long> memberIdSet = null; Page<Order> page = new Page<>(query.getPageCurr(), query.getPageSize()); if (StringUtils.isNotBlank(query.getNickname()) || StringUtils.isNotBlank( query.getPhone())) { memberDTO = new MemberDTO(); memberDTO.setNickname(query.getNickname()); memberDTO.setPhone(query.getPhone()); } if (StringUtils.isNotNull(memberDTO)) { // 远程调用会员服务进行条件查询 List<Member> memberList = memberClient.getMemberListByCondition(memberDTO, SecurityConstants.INNER).getData(); if (StringUtils.isEmpty(memberList)) { return PageDTO.empty(page); } memberIdSet = memberList.stream().map(Member::getId) .collect(Collectors.toSet()); } page = this.lambdaQuery() .in(StringUtils.isNotEmpty(memberIdSet), Order::getMemberId, memberIdSet) .like(StringUtils.isNotBlank(query.getOrderNo()), Order::getOrderNo, query.getOrderNo()) .eq(StringUtils.isNotNull(query.getOrderFrom()), Order::getOrderFrom, query.getOrderFrom()) .like(StringUtils.isNotBlank(query.getSkuName()), Order::getSkuName, query.getSkuName()) .eq(StringUtils.isNotNull(query.getOrderStatus()), Order::getOrderStatus, query.getOrderStatus()) .page(new Page<>(query.getPageCurr(), query.getPageSize())); if (StringUtils.isEmpty(page.getRecords())) { pageVO = PageDTO.empty(page); } pageVO = PageDTO.of(page, MgtMallOrderVO.class); return pageVO; } /** * 获取商城订单详情 * * @param id 订单id * @return MgtMallOrderVO */ @Override public MgtMallOrderVO getMallOrderDetail(Long id) { Order order = this.getById(id); MgtMallOrderVO mgtMallOrderVO = BeanUtils.copyBean(order, MgtMallOrderVO.class); // 查询用户信息 Member member = memberClient.getMembeOne(order.getMemberId(), SecurityConstants.INNER) .getData(); if (StringUtils.isNotNull(member)) { mgtMallOrderVO.setNickname(member.getNickname()); mgtMallOrderVO.setPhone(member.getPhone()); } // 查询售后信息 if (order.getOrderStatus() == OrderStatusEnum.AFTER_SALE) { OrderReturnRequest orderReturnRequest = orderReturnRequestService.getOne( Wrappers.lambdaQuery(OrderReturnRequest.class) .eq(OrderReturnRequest::getOrderId, order.getId()).last("limit 1")); if (StringUtils.isNotNull(orderReturnRequest)) { mgtMallOrderVO.setReturnRequestVO(BeanUtils.copyBean(orderReturnRequest, MgtOrderReturnRequestVO.class)); } } return mgtMallOrderVO; } /** * 确认发货 * * @param dto 确认收货请求对象 */ @Override public void confirmShipmentOrder(MgtOrderConfirmShipmentDTO dto) { Order order = this.getById(dto.getId()); if (StringUtils.isNull(order)) { throw new ServiceException("订单不存在"); } order.setOrderStatus(OrderStatusEnum.GOODS_TO_BE_RECEIVED); order.setDeliveryTime(LocalDateTime.now()); order.setCourierNumber(dto.getCourierNumber()); order.setLogisticsNum(dto.getLogisticsNum()); this.updateById(order); } /** * 已收货 * * @param id 订单id */ @Override public void receivedGoods(Long id) { Order order = this.getById(id); if (StringUtils.isNull(order)) { throw new ServiceException("订单不存在"); } if (order.getOrderStatus() == OrderStatusEnum.GOODS_TO_BE_RECEIVED) { order.setOrderStatus(OrderStatusEnum.FINISHED); order.setReceiveTime(LocalDateTime.now()); this.updateById(order); } } } ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/PromotionWishListServiceImpl.java
@@ -88,6 +88,8 @@ // 封装会员条件查询对象 MemberDTO memberDTO = null; Set<Long> memberIdSet = null; Page<PromotionWishList> page = new Page<>(query.getPageCurr(), query .getPageSize()); if (StringUtils.isNotBlank(query.getNickname()) || StringUtils.isNotBlank( query.getPhone())) { memberDTO = new MemberDTO(); @@ -98,17 +100,19 @@ // 远程调用会员服务进行条件查询 List<Member> memberList = memberClient.getMemberListByCondition(memberDTO, SecurityConstants.INNER).getData(); if (StringUtils.isEmpty(memberList)) { return PageDTO.empty(page); } memberIdSet = memberList.stream().map(Member::getId) .collect(Collectors.toSet()); } // 分页查询心愿求购列表 Page<PromotionWishList> page = this.lambdaQuery() page = this.lambdaQuery() .eq(StringUtils.isNotNull(query.getReplyStatus()), PromotionWishList::getReplyStatus, query.getReplyStatus()) .in(StringUtils.isNotEmpty(memberIdSet), PromotionWishList::getMemberId, memberIdSet).page(new Page<>(query.getPageCurr(), query .getPageSize())); memberIdSet).page(page); if (StringUtils.isEmpty(page.getRecords())) { return PageDTO.empty(page); }