From de0026f420814a34a0e94c2de702b563b7e9234e Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期三, 31 七月 2024 16:10:12 +0800 Subject: [PATCH] 修改bug --- ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/dto/MgtAuctionSalesroomDTO.java | 2 ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml | 8 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/GoodsSkuClient.java | 14 + ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java | 36 +++ ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomGoodsServiceImpl.java | 28 ++ ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/AuctionClient.java | 19 + ruoyi-modules/ruoyi-auction/src/main/resources/mapper/auction/AuctionSalesroomGoodsMapper.xml | 2 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java | 4 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MemberInvoiceServiceImpl.java | 2 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java | 34 +++ ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/dto/MgtMemberQuery.java | 3 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/inner/GoodsSkuController.java | 26 ++ ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java | 9 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/scheduler/PromotionScheduler.java | 4 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsSkuService.java | 6 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/Configure.java | 8 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionBidRecordServiceImpl.java | 4 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MgtBusinessDataService.java | 4 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/inner/AuctionSalesroomController.java | 28 ++ ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderReturnRequestServiceImpl.java | 22 + ruoyi-modules/ruoyi-auction/src/test/java/com/ruoyi/auction/RedissonTest.java | 72 ++++++ ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/mapper/AuctionSalesroomGoodsMapper.java | 2 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/vo/MgtOrderVO.java | 2 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionVideoServiceImpl.java | 6 ruoyi-modules/ruoyi-promotion/src/main/resources/mapper/promotion/CouponMemberMapper.xml | 2 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/AuctionFallbackFactory.java | 22 ++ ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/ForepartAuctionSalesroomGoodsController.java | 12 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionGoodsService.java | 9 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomGoodsService.java | 5 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSkuServiceImpl.java | 83 +++++++ ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/inner/AuctionGoodsController.java | 26 ++ ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java | 41 +++ ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java | 68 ++++- ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/AuctionSalesroomGoods.java | 2 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomService.java | 11 + ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/GoodsGroupPurchaseMapper.xml | 20 + ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java | 1 37 files changed, 560 insertions(+), 87 deletions(-) diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/domain/AuctionSalesroomGoods.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/AuctionSalesroomGoods.java similarity index 98% rename from ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/domain/AuctionSalesroomGoods.java rename to ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/AuctionSalesroomGoods.java index 4ff2cd7..a9e371d 100644 --- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/domain/AuctionSalesroomGoods.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/AuctionSalesroomGoods.java @@ -1,4 +1,4 @@ -package com.ruoyi.auction.domain; +package com.ruoyi.system.api.domain; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.FieldStrategy; diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java index d3e66e7..28f157d 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java @@ -140,7 +140,9 @@ @TableField(exist = false) private String roleName; - + @ApiModelProperty(value = "是否为拍卖师 1否 2是") + @TableField(exist = false) + private Integer isAuctioneer; @Override public String getRemark() { return remark; diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/AuctionFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/AuctionFallbackFactory.java index 38b7f0a..ceb5abb 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/AuctionFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/AuctionFallbackFactory.java @@ -4,6 +4,7 @@ import com.ruoyi.system.api.domain.AppMiniLoginVO; import com.ruoyi.system.api.domain.AuctionGoods; import com.ruoyi.system.api.domain.AuctionSalesroom; +import com.ruoyi.system.api.domain.AuctionSalesroomGoods; import com.ruoyi.system.api.domain.OrderAuctionBond; import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO; import com.ruoyi.system.api.domain.dto.BondDTO; @@ -62,6 +63,27 @@ Collection<Long> auctionSalesroomGoodsIdSet, String source) { return R.fail("获取拍卖场列表失败" + cause.getMessage()); } + + @Override + public R<List<AuctionSalesroom>> getAuctionSalesroomBySkuId(Long id, String source) { + return R.fail("获取拍卖场列表失败" + cause.getMessage()); + } + + @Override + public R<List<AuctionGoods>> getAuctionGoodsBySkuId(Long id, String source) { + return R.fail("获取商品竞价列表失败" + cause.getMessage()); + } + + @Override + public R<AuctionGoods> getAuctionGoodsId(Long goodsSkuId, String source) { + return R.fail("获取商品竞价失败" + cause.getMessage()); + } + + @Override + public R<AuctionSalesroomGoods> getAuctionSalesroomGoodsById(Long goodsSkuId, + String source) { + return R.fail("获取拍卖会商品失败" + cause.getMessage()); + } }; } } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/AuctionClient.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/AuctionClient.java index c605b46..8cbd02a 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/AuctionClient.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/AuctionClient.java @@ -6,6 +6,7 @@ import com.ruoyi.system.api.domain.AppMiniLoginVO; import com.ruoyi.system.api.domain.AuctionGoods; import com.ruoyi.system.api.domain.AuctionSalesroom; +import com.ruoyi.system.api.domain.AuctionSalesroomGoods; import com.ruoyi.system.api.domain.OrderAuctionBond; import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO; import com.ruoyi.system.api.domain.dto.BondDTO; @@ -14,6 +15,7 @@ import java.util.Collection; import java.util.List; import org.springframework.cloud.openfeign.FeignClient; +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; @@ -51,4 +53,21 @@ R<List<AuctionSalesroom>> getAuctionSalesroomByIds( @RequestBody Collection<Long> auctionSalesroomGoodsIdSet, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + + @GetMapping("/auction-salesroom/getAuctionSalesroomBySkuId/{id}") + R<List<AuctionSalesroom>> getAuctionSalesroomBySkuId(@PathVariable("id") Long id, + @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + + @GetMapping("/auction-goods/getAuctionGoodsBySkuId/{id}") + R<List<AuctionGoods>> getAuctionGoodsBySkuId(@PathVariable("id") Long id, + @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + + @GetMapping("/auction-goods/getAuctionGoodsId/{goodsSkuId}") + R<AuctionGoods> getAuctionGoodsId(@PathVariable("goodsSkuId") Long goodsSkuId, + @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + + @GetMapping("/auction-salesroom/getAuctionSalesroomGoodsById/{goodsSkuId}") + R<AuctionSalesroomGoods> getAuctionSalesroomGoodsById( + @PathVariable("goodsSkuId") Long goodsSkuId, + @RequestHeader(SecurityConstants.FROM_SOURCE) String source); } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/GoodsSkuClient.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/GoodsSkuClient.java index f42c226..6d8d5ae 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/GoodsSkuClient.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/GoodsSkuClient.java @@ -3,7 +3,15 @@ import com.ruoyi.common.core.constant.SecurityConstants; import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; -import com.ruoyi.system.api.domain.*; +import com.ruoyi.system.api.domain.GoodsBrand; +import com.ruoyi.system.api.domain.GoodsCategory; +import com.ruoyi.system.api.domain.GoodsFlavorType; +import com.ruoyi.system.api.domain.GoodsGroupPurchase; +import com.ruoyi.system.api.domain.GoodsGroupPurchaseInfo; +import com.ruoyi.system.api.domain.GoodsSeckill; +import com.ruoyi.system.api.domain.GoodsSeries; +import com.ruoyi.system.api.domain.GoodsSku; +import com.ruoyi.system.api.domain.Order; import com.ruoyi.system.api.domain.dto.GoodsStockUpdDTO; import com.ruoyi.system.api.domain.vo.GoodsInfoTitleValueVO; import com.ruoyi.system.api.factory.GoodsSkuFactory; @@ -148,4 +156,8 @@ @PostMapping("/goods-sku/list") R<List<GoodsSku>> getGoodsListByIds(@RequestBody Collection<Long> goodsIdList, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + + @PostMapping("/goods-sku/returnStockByOrder") + R<?> returnStockByOrder(@RequestBody Order order, + @RequestHeader(SecurityConstants.FROM_SOURCE) String source); } diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/ForepartAuctionSalesroomGoodsController.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/ForepartAuctionSalesroomGoodsController.java index f32ebae..eac8163 100644 --- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/ForepartAuctionSalesroomGoodsController.java +++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/ForepartAuctionSalesroomGoodsController.java @@ -1,11 +1,11 @@ package com.ruoyi.auction.controller.forepart; -import com.ruoyi.system.api.domain.dto.AuctionSalesroomDTO; -import com.ruoyi.system.api.domain.dto.AuctionSalesroomGoodsInfoDTO; -import com.ruoyi.auction.domain.AuctionSalesroomGoods; import com.ruoyi.auction.service.IAuctionSalesroomGoodsService; import com.ruoyi.common.core.domain.R; +import com.ruoyi.system.api.domain.AuctionSalesroomGoods; +import com.ruoyi.system.api.domain.dto.AuctionSalesroomDTO; +import com.ruoyi.system.api.domain.dto.AuctionSalesroomGoodsInfoDTO; import com.ruoyi.system.api.domain.vo.AuctionSalesroomGoodsInfoVO; import com.ruoyi.system.api.domain.vo.AuctionSalesroomVO; import com.ruoyi.system.api.domain.vo.ForepartAuctionSalesroomGoodsVO; @@ -13,8 +13,10 @@ import io.swagger.annotations.ApiOperation; import java.util.List; import javax.annotation.Resource; - -import org.springframework.web.bind.annotation.*; +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> diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/inner/AuctionGoodsController.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/inner/AuctionGoodsController.java index 10f75a8..6e9bf86 100644 --- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/inner/AuctionGoodsController.java +++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/inner/AuctionGoodsController.java @@ -7,8 +7,10 @@ import com.ruoyi.common.security.annotation.InnerAuth; import com.ruoyi.system.api.domain.AuctionGoods; import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomBondDTO; +import java.util.List; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +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; @@ -62,4 +64,28 @@ return R.ok(); } + /** + * 根据商品id获取正在进行的拍卖商品 + * + * @param id 商品id + * @return + */ + @InnerAuth + @GetMapping("/getAuctionGoodsBySkuId/{id}") + R<List<AuctionGoods>> getAuctionGoodsBySkuId(@PathVariable("id") Long id) { + return R.ok(auctionGoodsService.getAuctionGoodsBySkuId(id)); + } + + /** + * 根据id获取拍卖商品 + * + * @param goodsSkuId + * @return + */ + @InnerAuth + @GetMapping("/getAuctionGoodsId/{goodsSkuId}") + R<AuctionGoods> getAuctionGoodsId(@PathVariable("goodsSkuId") Long goodsSkuId) { + return R.ok(auctionGoodsService.getById(goodsSkuId)); + } + } diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/inner/AuctionSalesroomController.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/inner/AuctionSalesroomController.java index bbe3d49..c94fda0 100644 --- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/inner/AuctionSalesroomController.java +++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/inner/AuctionSalesroomController.java @@ -5,10 +5,13 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.security.annotation.InnerAuth; import com.ruoyi.system.api.domain.AuctionSalesroom; +import com.ruoyi.system.api.domain.AuctionSalesroomGoods; import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomBondDTO; import java.util.Collection; import java.util.List; import javax.annotation.Resource; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -47,4 +50,29 @@ return R.ok(iAuctionSalesroomService.getAuctionSalesroomByIds(auctionSalesroomGoodsIdSet)); } + + /** + * 根据商品id获取正在进行的拍卖会 + * + * @param id 商品id + * @return + */ + @InnerAuth + @GetMapping("/getAuctionSalesroomBySkuId/{id}") + R<List<AuctionSalesroom>> getAuctionSalesroomBySkuId(@PathVariable("id") Long id) { + return R.ok(iAuctionSalesroomService.getAuctionSalesroomBySkuId(id)); + } + + /** + * 获取拍卖商品 + * + * @param goodsSkuId + * @return + */ + @InnerAuth + @GetMapping("/getAuctionSalesroomGoodsById/{goodsSkuId}") + R<AuctionSalesroomGoods> getAuctionSalesroomGoodsById( + @PathVariable("goodsSkuId") Long goodsSkuId) { + return R.ok(iAuctionSalesroomService.getAuctionSalesroomGoodsById(goodsSkuId)); + } } diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/dto/MgtAuctionSalesroomDTO.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/dto/MgtAuctionSalesroomDTO.java index b748a45..f78e842 100644 --- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/dto/MgtAuctionSalesroomDTO.java +++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/dto/MgtAuctionSalesroomDTO.java @@ -54,7 +54,7 @@ private String coverPic; @ApiModelProperty(value = "用户端拍卖场封面图") - // @NotBlank(message = "用户端拍卖场封面图不能为空") + @NotBlank(message = "用户端拍卖场封面图不能为空") private String clientCoverPic; @ApiModelProperty(value = "分享标题") diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/mapper/AuctionSalesroomGoodsMapper.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/mapper/AuctionSalesroomGoodsMapper.java index 6ff6d03..d0e5783 100644 --- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/mapper/AuctionSalesroomGoodsMapper.java +++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/mapper/AuctionSalesroomGoodsMapper.java @@ -1,7 +1,7 @@ package com.ruoyi.auction.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.ruoyi.auction.domain.AuctionSalesroomGoods; +import com.ruoyi.system.api.domain.AuctionSalesroomGoods; import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomDTO; import java.util.List; import org.apache.ibatis.annotations.Param; diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionGoodsService.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionGoodsService.java index b3ae255..d2a1de6 100644 --- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionGoodsService.java +++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionGoodsService.java @@ -11,6 +11,7 @@ import com.ruoyi.system.api.domain.dto.ListStatusDTO; import com.ruoyi.system.api.domain.vo.AuctionGoodsListVO; import com.ruoyi.system.api.domain.vo.AuctionGoodsinfoVO; +import java.util.List; import org.springframework.web.bind.annotation.RequestBody; /** @@ -68,4 +69,12 @@ * @param dto 商品上下架状态对象 */ void updStatus(ListStatusDTO dto); + + /** + * 根据商品id获取正在进行的拍卖商品 + * + * @param id 商品id + * @return + */ + List<AuctionGoods> getAuctionGoodsBySkuId(Long id); } diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomGoodsService.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomGoodsService.java index ded3c6d..ed81116 100644 --- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomGoodsService.java +++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomGoodsService.java @@ -1,16 +1,15 @@ package com.ruoyi.auction.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.system.api.domain.AuctionSalesroomGoods; import com.ruoyi.system.api.domain.dto.AuctionSalesroomDTO; import com.ruoyi.system.api.domain.dto.AuctionSalesroomGoodsInfoDTO; -import com.ruoyi.auction.domain.AuctionSalesroomGoods; import com.ruoyi.system.api.domain.vo.AuctionBidRecordVO; import com.ruoyi.system.api.domain.vo.AuctionSalesroomGoodsInfoVO; import com.ruoyi.system.api.domain.vo.AuctionSalesroomVO; import com.ruoyi.system.api.domain.vo.ForepartAuctionSalesroomGoodsVO; -import org.springframework.web.bind.annotation.RequestBody; - import java.util.List; +import org.springframework.web.bind.annotation.RequestBody; /** * <p> diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomService.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomService.java index 84a83ab..cec7c03 100644 --- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomService.java +++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomService.java @@ -17,6 +17,7 @@ import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.system.api.domain.AppMiniLoginVO; import com.ruoyi.system.api.domain.AuctionSalesroom; +import com.ruoyi.system.api.domain.AuctionSalesroomGoods; import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO; import com.ruoyi.system.api.domain.dto.AuctionSalesroomDTO; import com.ruoyi.system.api.domain.dto.BidDTO; @@ -196,4 +197,14 @@ void stopCurrentAuctionSalesroom(Long auctionSalesroomId) throws JsonProcessingException; List<AuctionSalesroom> getAuctionSalesroomByIds(Collection<Long> auctionSalesroomGoodsIdSet); + + /** + * 根据商品id获取正在进行的拍卖会 + * + * @param id 商品id + * @return + */ + List<AuctionSalesroom> getAuctionSalesroomBySkuId(Long id); + + AuctionSalesroomGoods getAuctionSalesroomGoodsById(Long goodsSkuId); } diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionBidRecordServiceImpl.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionBidRecordServiceImpl.java index 012b9fe..c3981ea 100644 --- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionBidRecordServiceImpl.java +++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionBidRecordServiceImpl.java @@ -3,14 +3,14 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.ruoyi.system.api.domain.dto.AuctionSalesroomDTO; import com.ruoyi.auction.domain.AuctionBidRecord; -import com.ruoyi.auction.domain.AuctionSalesroomGoods; import com.ruoyi.auction.mapper.AuctionBidRecordMapper; import com.ruoyi.auction.mapper.AuctionSalesroomGoodsMapper; import com.ruoyi.auction.service.IAuctionBidRecordService; import com.ruoyi.common.core.enums.AuctionOrderTypeEnum; import com.ruoyi.common.core.enums.BidStatusEnum; +import com.ruoyi.system.api.domain.AuctionSalesroomGoods; +import com.ruoyi.system.api.domain.dto.AuctionSalesroomDTO; import java.util.ArrayList; import java.util.List; import javax.annotation.Resource; 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 fb98337..bdee7c4 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 @@ -34,6 +34,7 @@ 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.CollUtils; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.system.api.constants.ConfigEnum; import com.ruoyi.system.api.constants.NotificationTypeConstant; @@ -247,7 +248,19 @@ auctionGoodsOrg.setSharePic(dto.getSharePic()); this.updateById(auctionGoodsOrg); } - auctionAsyncMethodService.auctionGoodsScheduleTask(Lists.newArrayList(auctionGoods)); + if (auctionGoods.getEndTime().isBefore(LocalDateTime.now())) { + // 退回剩余库存 + GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); + goodsStockUpdDTO.setAuctionStock(auctionGoods.getAuctionStock()); + goodsStockUpdDTO.setGoodsSkuId(auctionGoods.getGoodsSkuId()); + goodsSkuClient.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO), + SecurityConstants.INNER); + auctionGoods.setStartStatus(AuctionStartStatusEnum.ENDED); + this.updateById(auctionGoods); + } else { + auctionAsyncMethodService.auctionGoodsScheduleTask(Lists.newArrayList(auctionGoods)); + } + } /** @@ -409,7 +422,8 @@ for (OrderAuctionBond orderAuctionBond : auctionBondList) { // 已中标需在订单完成后退保证金 - if (unRefundMemberIdList.contains(orderAuctionBond.getMemberId())) { + if (unRefundMemberIdList.contains(orderAuctionBond.getMemberId()) + || Objects.isNull(orderAuctionBond.getBond())) { continue; } RefundDTO refundDTO = new RefundDTO(); @@ -420,10 +434,10 @@ // 远程调用订单服务进行退款 Map<String, Object> data = orderClient.refund(refundDTOList, SecurityConstants.INNER).getData(); + if (CollUtils.isNotEmpty(data)) { // 处理退款返回结果 List<String> successfulOrders = new ArrayList<>(); List<String> failedOrders = new ArrayList<>(); - data.forEach((key, value) -> { if ((boolean) value) { successfulOrders.add(key); @@ -439,9 +453,11 @@ } return null; }).filter(Objects::nonNull).collect(Collectors.toList()); + // 远程调用订单服务修改订单状态 orderClient.updateOrderAuctionBondStatus(ids, BondStatusEnum.REFUNDED, SecurityConstants.INNER); + } } } } @@ -901,6 +917,19 @@ this.updateById(auctionGoods); } + /** + * 根据商品id获取正在进行的拍卖商品 + * + * @param id 商品id + * @return + */ + @Override + public List<AuctionGoods> getAuctionGoodsBySkuId(Long id) { + return this.list(new LambdaQueryWrapper<AuctionGoods>().eq(AuctionGoods::getGoodsSkuId, + id).eq(AuctionGoods::getListingStatus, ListingStatusEnum.ON_SHELVES) + .eq(AuctionGoods::getStartStatus, AuctionStartStatusEnum.IN_AUCTION)); + } + public static void main(String[] args) throws JsonProcessingException { Map<String, Object> map = new ConcurrentHashMap<>(); map.put("notification_type", NotificationTypeConstant.AUCTION_GOODS); @@ -910,4 +939,5 @@ String msg = objectMapper.writeValueAsString(map); System.out.println(msg); } + } diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomGoodsServiceImpl.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomGoodsServiceImpl.java index 3d79f4d..c4e197e 100644 --- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomGoodsServiceImpl.java +++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomGoodsServiceImpl.java @@ -8,7 +8,6 @@ import com.google.common.collect.Lists; import com.ruoyi.auction.domain.AuctionBidRecord; import com.ruoyi.auction.domain.AuctionBondJl; -import com.ruoyi.auction.domain.AuctionSalesroomGoods; import com.ruoyi.auction.mapper.AuctionBidRecordMapper; import com.ruoyi.auction.mapper.AuctionBondJlMapper; import com.ruoyi.auction.mapper.AuctionSalesroomGoodsMapper; @@ -26,13 +25,28 @@ import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.system.api.constants.NotificationTypeConstant; -import com.ruoyi.system.api.domain.*; +import com.ruoyi.system.api.domain.AuctionSalesroom; +import com.ruoyi.system.api.domain.AuctionSalesroomGoods; +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; +import com.ruoyi.system.api.domain.GoodsSeries; +import com.ruoyi.system.api.domain.GoodsSku; +import com.ruoyi.system.api.domain.Member; +import com.ruoyi.system.api.domain.MemberAddress; +import com.ruoyi.system.api.domain.Order; import com.ruoyi.system.api.domain.dto.AuctionSalesroomDTO; import com.ruoyi.system.api.domain.dto.AuctionSalesroomGoodsInfoDTO; import com.ruoyi.system.api.domain.dto.GoodsStockUpdDTO; import com.ruoyi.system.api.domain.dto.OrderAuctionBondDTO; import com.ruoyi.system.api.domain.dto.OrderDTO; -import com.ruoyi.system.api.domain.vo.*; +import com.ruoyi.system.api.domain.vo.AuctionBidRecordVO; +import com.ruoyi.system.api.domain.vo.AuctionSalesroomGoodsInfoVO; +import com.ruoyi.system.api.domain.vo.AuctionSalesroomVO; +import com.ruoyi.system.api.domain.vo.ForepartAuctionSalesroomGoodsVO; +import com.ruoyi.system.api.domain.vo.GoodsInfoTitleValueVO; +import com.ruoyi.system.api.domain.vo.getHomeGoodsSkuXxiVO; import com.ruoyi.system.api.feignClient.GoodsSkuClient; import com.ruoyi.system.api.feignClient.MemberClient; import com.ruoyi.system.api.feignClient.OrderClient; @@ -40,7 +54,13 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDateTime; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import javax.annotation.Resource; import org.springframework.stereotype.Service; 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 6bdc56b..de3fb67 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 @@ -24,7 +24,10 @@ import com.ruoyi.auction.controller.management.vo.MgtAuctionSalesroomGoodsVO; import com.ruoyi.auction.controller.management.vo.MgtAuctionSalesroomScreenVO; import com.ruoyi.auction.controller.management.vo.MgtAuctionSalesroomVO; -import com.ruoyi.auction.domain.*; +import com.ruoyi.auction.domain.AuctionBidRecord; +import com.ruoyi.auction.domain.AuctionBondJl; +import com.ruoyi.auction.domain.AuctionBrowseRecord; +import com.ruoyi.auction.domain.AuctionVideo; import com.ruoyi.auction.mapper.AuctionBidRecordMapper; import com.ruoyi.auction.mapper.AuctionBondJlMapper; import com.ruoyi.auction.mapper.AuctionSalesroomGoodsMapper; @@ -60,6 +63,7 @@ import com.ruoyi.system.api.domain.AppMiniLoginVO; import com.ruoyi.system.api.domain.AuctionGoods; import com.ruoyi.system.api.domain.AuctionSalesroom; +import com.ruoyi.system.api.domain.AuctionSalesroomGoods; import com.ruoyi.system.api.domain.CustomConfig; import com.ruoyi.system.api.domain.GoodsSku; import com.ruoyi.system.api.domain.Member; @@ -1732,4 +1736,32 @@ Collectors.toSet()); return this.listByIds(auctionSalesroomIdSet); } + + /** + * 根据商品id获取正在进行的拍卖会 + * + * @param id 商品id + * @return + */ + @Override + public List<AuctionSalesroom> getAuctionSalesroomBySkuId(Long id) { + List<AuctionSalesroomGoods> auctionSalesroomGoods = auctionSalesroomGoodsMapper.selectList( + new LambdaQueryWrapper<AuctionSalesroomGoods>().eq( + AuctionSalesroomGoods::getGoodsSkuId, id) + .groupBy(AuctionSalesroomGoods::getAuctionSalesroomId)); + if (CollUtils.isNotEmpty(auctionSalesroomGoods)) { + Set<Long> auctionSalesroomIdSet = auctionSalesroomGoods.stream() + .map(AuctionSalesroomGoods::getAuctionSalesroomId).collect( + Collectors.toSet()); + return this.lambdaQuery() + .eq(AuctionSalesroom::getStatus, AuctionStartStatusEnum.IN_AUCTION).in( + AuctionSalesroom::getId, auctionSalesroomGoods).list(); + } + return CollUtils.emptyList(); + } + + @Override + public AuctionSalesroomGoods getAuctionSalesroomGoodsById(Long goodsSkuId) { + return auctionSalesroomGoodsMapper.selectById(goodsSkuId); + } } diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionVideoServiceImpl.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionVideoServiceImpl.java index c795328..6084646 100644 --- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionVideoServiceImpl.java +++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionVideoServiceImpl.java @@ -3,16 +3,16 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.ruoyi.common.core.exception.ServiceException; -import com.ruoyi.system.api.domain.dto.ForepartAuctionVideo; -import com.ruoyi.auction.domain.AuctionSalesroomGoods; import com.ruoyi.auction.domain.AuctionVideo; import com.ruoyi.auction.mapper.AuctionSalesroomGoodsMapper; import com.ruoyi.auction.mapper.AuctionVideoMapper; import com.ruoyi.auction.service.IAuctionVideoService; import com.ruoyi.common.core.constant.SecurityConstants; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.exception.ServiceException; +import com.ruoyi.system.api.domain.AuctionSalesroomGoods; import com.ruoyi.system.api.domain.PromotionVideo; +import com.ruoyi.system.api.domain.dto.ForepartAuctionVideo; import com.ruoyi.system.api.feignClient.PromotionClient; import java.util.List; import javax.annotation.Resource; diff --git a/ruoyi-modules/ruoyi-auction/src/main/resources/mapper/auction/AuctionSalesroomGoodsMapper.xml b/ruoyi-modules/ruoyi-auction/src/main/resources/mapper/auction/AuctionSalesroomGoodsMapper.xml index 53f3942..7898cf0 100644 --- a/ruoyi-modules/ruoyi-auction/src/main/resources/mapper/auction/AuctionSalesroomGoodsMapper.xml +++ b/ruoyi-modules/ruoyi-auction/src/main/resources/mapper/auction/AuctionSalesroomGoodsMapper.xml @@ -20,7 +20,7 @@ </foreach> </update> <select id="getAuctionSalesroomGoods" - resultType="com.ruoyi.auction.domain.AuctionSalesroomGoods"> + resultType="com.ruoyi.system.api.domain.AuctionSalesroomGoods"> SELECT * FROM t_auction_salesroom_goods ta WHERE ta.del_flag = 0 <if test="param.auctionSalesroomId!=null and param.auctionSalesroomId != ''"> diff --git a/ruoyi-modules/ruoyi-auction/src/test/java/com/ruoyi/auction/RedissonTest.java b/ruoyi-modules/ruoyi-auction/src/test/java/com/ruoyi/auction/RedissonTest.java new file mode 100644 index 0000000..2c3b9ab --- /dev/null +++ b/ruoyi-modules/ruoyi-auction/src/test/java/com/ruoyi/auction/RedissonTest.java @@ -0,0 +1,72 @@ +package com.ruoyi.auction; + +import com.alibaba.fastjson2.JSON; +import com.google.common.collect.Lists; +import com.google.zxing.WriterException; +import com.ruoyi.auction.util.CreateQrCode; +import com.ruoyi.common.core.constant.SecurityConstants; +import com.ruoyi.system.api.RemoteFileService; +import com.ruoyi.system.api.domain.Order; +import com.ruoyi.system.api.feignClient.OrderClient; +import java.io.IOException; +import java.util.List; +import java.util.concurrent.TimeUnit; +import javax.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.junit.jupiter.api.Test; +import org.redisson.api.RLock; +import org.redisson.api.RedissonClient; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.web.multipart.MultipartFile; + +/** + * @author mitao + * @date 2024/5/31 + */ +@SpringBootTest +@Slf4j +public class RedissonTest { + @Resource + private RedissonClient redissonClient; + @Resource + private RemoteFileService remoteFileService; + @Resource + private OrderClient orderClient; + @Test + public void test() { + //创建5个线程,模拟并发,同时执行excute()方法 + for (int i = 0; i < 5; i++) { + final int key = i; + new Thread(() -> { + execute(key); + }).start(); + } + } + private void execute(Integer key){ + String goodsLock = "goods_lock:" + key; + RLock redissonClientLock = redissonClient.getLock(goodsLock); + + try { + redissonClientLock.lock(30, TimeUnit.SECONDS); + if (redissonClientLock.isLocked()) { + log.info("execute:{}",key); + } + } finally { + redissonClientLock.unlock(); + } + } + + @Test + public void test2() throws IOException, WriterException { + MultipartFile file = CreateQrCode.createQRCodeStream("123456"); + String data = remoteFileService.obsUpload(file).getData(); + System.out.println("data:"+data); + } + @Test + public void test3() { + + List<Order> orderVOList = orderClient.getOrderListByMubres( Lists.newArrayList("cc219177-0494-47c5-a1a5-67ccb00547b7", "45675c47-3f00-4c52-ada9-b2be52ea8cb1"), + SecurityConstants.INNER).getData(); + System.err.println(JSON.toJSONString(orderVOList)); + } +} diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/inner/GoodsSkuController.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/inner/GoodsSkuController.java index d9836c4..d8075b2 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/inner/GoodsSkuController.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/inner/GoodsSkuController.java @@ -1,17 +1,23 @@ package com.ruoyi.goods.controller.inner; -import com.ruoyi.common.core.constant.SecurityConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.security.annotation.InnerAuth; import com.ruoyi.goods.service.IGoodsSkuService; import com.ruoyi.system.api.domain.GoodsSku; +import com.ruoyi.system.api.domain.Order; import com.ruoyi.system.api.domain.dto.GoodsStockUpdDTO; import java.util.Collection; import java.util.List; import javax.annotation.Resource; - -import org.springframework.web.bind.annotation.*; +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.ResponseBody; +import org.springframework.web.bind.annotation.RestController; /** * <p> @@ -95,11 +101,23 @@ * 根据商品id集合查询商品 * * @param goodsIdList 商品id集合 - * @param source 请求来源 * @return 商品集合 */ + @InnerAuth @PostMapping("/list") R<List<GoodsSku>> getGoodsListByIds(@RequestBody Collection<Long> goodsIdList) { return R.ok(iGoodsSkuService.listByIds(goodsIdList)); } + + /** + * 退款退货订单退库存 + * + * @param order + */ + @InnerAuth + @PostMapping("/returnStockByOrder") + R<?> returnStockByOrder(@RequestBody Order order) { + iGoodsSkuService.returnStockByOrder(order); + return R.ok(); + } } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsSkuService.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsSkuService.java index ba1012a..db074bb 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsSkuService.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsSkuService.java @@ -7,14 +7,14 @@ import com.ruoyi.goods.controller.management.dto.GoodsSkuQuery; import com.ruoyi.goods.controller.management.vo.GoodsSkuVO; import com.ruoyi.system.api.domain.GoodsSku; +import com.ruoyi.system.api.domain.Order; import com.ruoyi.system.api.domain.dto.GoodsStockUpdDTO; import com.ruoyi.system.api.domain.dto.HomeGoodsSkuDTO; import com.ruoyi.system.api.domain.dto.ListStatusDTO; 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 java.util.List; import org.springframework.web.bind.annotation.RequestBody; /** @@ -75,4 +75,6 @@ List<getHomeGoodsSkuXxiVO> getHomeGoodsSkuXxi(@RequestBody HomeGoodsSkuDTO homeGoodsSkuDTO); List<getHomeGoodsSkuXxiVO> getMsHomeGoodsSkuXxi(@RequestBody HomeGoodsSkuDTO homeGoodsSkuDTO); GoodsSkuVO getGoodsDetail(Long id); + + void returnStockByOrder(Order order); } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java index 3a3b300..f92fa11 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java @@ -47,6 +47,7 @@ import com.ruoyi.system.api.domain.vo.WdGoodsGroupPurchaseVO; import com.ruoyi.system.api.feignClient.OrderClient; import com.ruoyi.system.api.feignClient.SysUserClient; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -144,7 +145,13 @@ goodsSku.getSkuName())); } } - asyncMethodService.groupPurchaseScheduleTask(Lists.newArrayList(goodsGroupPurchase)); + if (goodsGroupPurchase.getEndTime().isBefore(LocalDateTime.now())) { + goodsGroupPurchase.setStartStatus(StartStatusEnum.ENDED); + goodsGroupPurchase.setGroupStatus(GroupStatusEnum.GROUP_FAILURE); + this.updateById(goodsGroupPurchase); + } else { + asyncMethodService.groupPurchaseScheduleTask(Lists.newArrayList(goodsGroupPurchase)); + } } /** diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java index 5f66fd1..b005cfe 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java @@ -142,7 +142,12 @@ goodsStockUpdDTO.setAuctionStock(seckillStock * -1); goodsStockUpdDTO.setGoodsSkuId(goodsSku.getId()); goodsSkuService.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO)); - asyncMethodService.seckillScheduleTask(Lists.newArrayList(goodsSeckill)); + if (goodsSeckill.getEndTime().isBefore(LocalDateTime.now())) { + goodsSeckill.setStartStatus(StartStatusEnum.ENDED); + this.updateById(goodsSeckill); + } else { + asyncMethodService.seckillScheduleTask(Lists.newArrayList(goodsSeckill)); + } } } @@ -181,15 +186,29 @@ if (goodsSku.getStock() < upd.getSeckillStock()) { throw new ServiceException("编辑失败,商品库存不足"); } + Optional<GoodsSeckill> seckillOpt = this.lambdaQuery() + .ne(GoodsSeckill::getStartStatus, StartStatusEnum.ENDED) + .ne(GoodsSeckill::getId, goodsSeckill.getId()) + .eq(GoodsSeckill::getGoodsSkuId, goodsSeckill.getGoodsSkuId()).oneOpt(); + if (seckillOpt.isPresent()) { + throw new ServiceException("编辑失败,商品在该时间段内有其他秒杀活动"); + } GoodsSeckill goodsSeckillUpd = BeanUtils.copyBean(upd, GoodsSeckill.class); goodsSeckillUpd.setListingStatus(ListingStatusEnum.ON_SHELVES); goodsSeckillUpd.setStartStatus(StartStatusEnum.NOT_STARTED); this.updateById(goodsSeckillUpd); - GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); - goodsStockUpdDTO.setAuctionStock(upd.getSeckillStock() * -1); - goodsStockUpdDTO.setGoodsSkuId(goodsSeckill.getGoodsSkuId()); - goodsSkuService.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO)); - asyncMethodService.seckillScheduleTask(Lists.newArrayList(goodsSeckillUpd)); + + if (goodsSeckillUpd.getEndTime().isBefore(LocalDateTime.now())) { + goodsSeckillUpd.setStartStatus(StartStatusEnum.ENDED); + this.updateById(goodsSeckillUpd); + } else { + // 修改库存 + GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); + goodsStockUpdDTO.setAuctionStock(upd.getSeckillStock() * -1); + goodsStockUpdDTO.setGoodsSkuId(goodsSeckill.getGoodsSkuId()); + goodsSkuService.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO)); + asyncMethodService.seckillScheduleTask(Lists.newArrayList(goodsSeckillUpd)); + } } /** @@ -204,7 +223,8 @@ throw new ServiceException("秒杀商品不存在"); } goodsSeckill.setListingStatus(dto.getListingStatus()); - if (dto.getListingStatus().equals(ListingStatusEnum.REMOVED_FROM_THE_SHELF)) { + if (dto.getListingStatus().equals(ListingStatusEnum.REMOVED_FROM_THE_SHELF) + && !goodsSeckill.getStartStatus().equals(StartStatusEnum.ENDED)) { // 退回剩余库存 GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); goodsStockUpdDTO.setAuctionStock(goodsSeckill.getSeckillStock()); @@ -280,12 +300,17 @@ log.info(">>>>>>>>>>>>>>>>>>>>{}秒杀结束<<<<<<<<<<<<<<<<<<<<", seckillId); GoodsSeckill goodsSeckill = this.getById(seckillId); if (StringUtils.isNotNull(goodsSeckill) - && goodsSeckill.getStartStatus().equals(StartStatusEnum.STARTED)) { + && !goodsSeckill.getStartStatus().equals(StartStatusEnum.ENDED)) { //结束秒杀 this.lambdaUpdate().set(GoodsSeckill::getStartStatus, StartStatusEnum.ENDED) .eq(GoodsSeckill::getId, seckillId).update(); // 将秒杀商品从缓存中移除 redisService.deleteObject(CacheConstants.SECKILL_GOODS + goodsSeckill.getId()); + // 退回剩余库存 + GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); + goodsStockUpdDTO.setAuctionStock(goodsSeckill.getSeckillStock()); + goodsStockUpdDTO.setGoodsSkuId(goodsSeckill.getGoodsSkuId()); + goodsSkuService.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO)); } Map<String, Object> map = new ConcurrentHashMap<>(); map.put("notification_type", NotificationTypeConstant.SECKILL); diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSkuServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSkuServiceImpl.java index 9cc16bb..65403ca 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSkuServiceImpl.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSkuServiceImpl.java @@ -7,7 +7,9 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.ruoyi.common.core.constant.SecurityConstants; +import com.ruoyi.common.core.enums.AuctionOrderTypeEnum; import com.ruoyi.common.core.enums.ListingStatusEnum; +import com.ruoyi.common.core.enums.OrderFromEnum; import com.ruoyi.common.core.enums.StartStatusEnum; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.StringUtils; @@ -29,6 +31,9 @@ import com.ruoyi.goods.service.IGoodsInfoTitleValueService; import com.ruoyi.goods.service.IGoodsSkuService; import com.ruoyi.goods.service.IMemberGoodsCollectionService; +import com.ruoyi.system.api.domain.AuctionGoods; +import com.ruoyi.system.api.domain.AuctionSalesroom; +import com.ruoyi.system.api.domain.AuctionSalesroomGoods; import com.ruoyi.system.api.domain.GoodsBrand; import com.ruoyi.system.api.domain.GoodsCategory; import com.ruoyi.system.api.domain.GoodsFlavorType; @@ -44,6 +49,7 @@ 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.AuctionClient; import com.ruoyi.system.api.feignClient.GoodsSkuClient; import com.ruoyi.system.api.feignClient.OrderClient; import java.time.LocalDate; @@ -82,7 +88,7 @@ private final GoodsSeckillMapper goodsSeckillMapper; private final GoodsGroupPurchaseMapper goodsGroupPurchaseMapper; private final RedissonClient redissonClient; - + private final AuctionClient auctionClient; @Resource private IGoodsBrowseRecordService iGoodsBrowseRecordService; @@ -222,8 +228,40 @@ .eq(GoodsSku::getId, dto.getId()) .set(GoodsSku::getListingStatus, dto.getListingStatus()) .update(); - //关联的秒杀商品和团购商品同步下架 + if (dto.getListingStatus().equals(ListingStatusEnum.REMOVED_FROM_THE_SHELF)) { + // 校验是否有秒杀活动商品 + Long seckillCount = goodsSeckillMapper.selectCount( + new LambdaQueryWrapper<GoodsSeckill>().eq(GoodsSeckill::getGoodsSkuId, + dto.getId()) + .eq(GoodsSeckill::getStartStatus, StartStatusEnum.STARTED) + .eq(GoodsSeckill::getListingStatus, ListingStatusEnum.ON_SHELVES)); + if (seckillCount > 0) { + throw new ServiceException("该商品有秒杀活动商品正在进行中,不能下架"); + } + // 校验是否有团购活动商品 + Long groupCount = goodsGroupPurchaseMapper.selectCount( + new LambdaQueryWrapper<GoodsGroupPurchase>().eq( + GoodsGroupPurchase::getGoodsSkuId, + dto.getId()) + .eq(GoodsGroupPurchase::getStartStatus, StartStatusEnum.STARTED) + .eq(GoodsGroupPurchase::getListingStatus, + ListingStatusEnum.ON_SHELVES)); + if (groupCount > 0) { + throw new ServiceException("该商品有团购活动商品正在进行中,不能下架"); + } + // 校验是否有拍卖会商品 + List<AuctionSalesroom> auctionSalesrooms = auctionClient.getAuctionSalesroomBySkuId( + dto.getId(), SecurityConstants.INNER).getData(); + if (CollUtils.isNotEmpty(auctionSalesrooms)) { + throw new ServiceException("该商品有拍卖会商品正在进行中,不能下架"); + } + List<AuctionGoods> auctionGoodsList = auctionClient.getAuctionGoodsBySkuId(dto.getId(), + SecurityConstants.INNER).getData(); + if (CollUtils.isNotEmpty(auctionGoodsList)) { + throw new ServiceException("该商品有商品竞价商品正在进行中,不能下架"); + } + // 关联的秒杀商品和团购商品同步下架 updateGoodsStatus(dto); } } @@ -233,7 +271,7 @@ queryWrapper.eq(GoodsSeckill::getListingStatus, ListingStatusEnum.ON_SHELVES) .eq(GoodsSeckill::getGoodsSkuId, dto.getId()); List<GoodsSeckill> goodsSeckillList = goodsSeckillMapper.selectList(queryWrapper); - if (StringUtils.isNotNull(goodsSeckillList)) { + if (StringUtils.isNotEmpty(goodsSeckillList)) { goodsSeckillList = goodsSeckillList.stream().peek(goodsSeckill -> { goodsSeckill.setListingStatus(ListingStatusEnum.REMOVED_FROM_THE_SHELF); }).collect(Collectors.toList()); @@ -652,4 +690,43 @@ goodsSkuVO.setGoodsInfoTitleValueVOList(goodsInfoTitleValueVOList); return goodsSkuVO; } + + @Override + public void returnStockByOrder(Order order) { + Long goodsSkuId = null; + if (order.getOrderFrom().equals(OrderFromEnum.COMMODITY_ORDER)) { + goodsSkuId = order.getGoodsSkuId(); + } else if (order.getOrderFrom().equals(OrderFromEnum.SNAP_ORDERS)) { + GoodsSeckill goodsSeckill = goodsSeckillMapper.selectById(order.getGoodsSkuId()); + if (Objects.nonNull(goodsSeckill)) { + goodsSkuId = goodsSeckill.getGoodsSkuId(); + } + } else if (order.getOrderFrom().equals(OrderFromEnum.GROUP_PURCHASE_ORDERS)) { + GoodsGroupPurchase goodsGroupPurchase = goodsGroupPurchaseMapper.selectById( + order.getGoodsSkuId()); + if (Objects.nonNull(goodsGroupPurchase)) { + goodsSkuId = goodsGroupPurchase.getGoodsSkuId(); + } + } else if (order.getOrderFrom() + .equals(OrderFromEnum.AUCTION_ORDERS) && order.getAuctionOrderType() + .equals(AuctionOrderTypeEnum.REGULAR_ITEMS)) { + AuctionGoods auctionGoods = auctionClient.getAuctionGoodsId(order.getGoodsSkuId(), + SecurityConstants.INNER).getData(); + if (Objects.nonNull(auctionGoods)) { + goodsSkuId = auctionGoods.getGoodsSkuId(); + } + } else if (order.getOrderFrom() + .equals(OrderFromEnum.AUCTION_ORDERS) && order.getAuctionOrderType() + .equals(AuctionOrderTypeEnum.AUCTION_ITEMS)) { + AuctionSalesroomGoods auctionSalesroomGoods = auctionClient.getAuctionSalesroomGoodsById( + order.getGoodsSkuId(), + SecurityConstants.INNER).getData(); + if (Objects.nonNull(auctionSalesroomGoods)) { + goodsSkuId = auctionSalesroomGoods.getGoodsSkuId(); + } + } + if (Objects.nonNull(goodsSkuId)) { + updateGoodsStock(goodsSkuId, order.getGoodsQuantity()); + } + } } diff --git a/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/GoodsGroupPurchaseMapper.xml b/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/GoodsGroupPurchaseMapper.xml index 378103e..6e3204f 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/GoodsGroupPurchaseMapper.xml +++ b/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/GoodsGroupPurchaseMapper.xml @@ -17,11 +17,29 @@ <select id="getGoodsGroupPurchasePage" resultType="com.ruoyi.goods.controller.management.vo.GoodsGroupPurchaseVO"> SELECT - tgp.*, + tgp.id, + tgp.goods_sku_id, + tgp.share_title, + tgp.share_pic, + tgp.group_purchase_price, + tgp.group_size, + IFNULL(tgpi.current_number,0) AS current_number, + tgp.limit_number, + tgp.start_time, + tgp.end_time, + tgp.description, + tgp.start_status, + tgp.listing_status, + tgp.group_status, + tgp.group_time, + tgp.create_time, + tgp.update_time, tgs.sku_name AS goodsSkuName FROM t_goods_group_purchase tgp LEFT JOIN t_goods_sku tgs ON tgp.goods_sku_id = tgs.id + LEFT JOIN (SELECT current_number,group_purchase_id FROM t_goods_group_purchase_info WHERE + group_status = 0) tgpi ON tgp.id = tgpi.group_purchase_id <where> <if test="goodsSkuName != null and goodsSkuName != ''"> AND tgs.sku_name LIKE CONCAT('%',#{goodsSkuName},'%') diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/dto/MgtMemberQuery.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/dto/MgtMemberQuery.java index b83c8ce..14b04b9 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/dto/MgtMemberQuery.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/dto/MgtMemberQuery.java @@ -23,4 +23,7 @@ @ApiModelProperty(value = "联系电话") private String phone; + + @ApiModelProperty(value = "会员等级") + private String level; } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java index 69c6dcf..febf68e 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java @@ -518,6 +518,7 @@ .like(StringUtils.isNotBlank(query.getRealName()), Member::getRealName, query.getRealName()) .like(StringUtils.isNotBlank(query.getPhone()), Member::getPhone, query.getPhone()) + .eq(StringUtils.isNotBlank(query.getLevel()), Member::getLevel, query.getLevel()) .orderByDesc(Member::getCreateTime) .page(new Page<>(query.getPageCurr(), query.getPageSize())); if (StringUtils.isEmpty(page.getRecords())) { diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/vo/MgtOrderVO.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/vo/MgtOrderVO.java index 67d3b50..d58113e 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/vo/MgtOrderVO.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/vo/MgtOrderVO.java @@ -145,7 +145,7 @@ @ApiModelProperty("物流信息") private Express100VO express100VO; - @ApiModelProperty("是否售后 1未售后,2 售后") + @ApiModelProperty("是否售后 1未售后,2 售后待审核 3 售后完成") private Integer isRequest; } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MemberInvoiceServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MemberInvoiceServiceImpl.java index 4feb7e1..9b56a97 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MemberInvoiceServiceImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MemberInvoiceServiceImpl.java @@ -222,7 +222,7 @@ this.updateById(memberInvoice); // 更新关联订单状态 List<MemberInvoiceOrder> memberInvoiceOrderList = iMemberInvoiceOrderService.lambdaQuery() - .eq(MemberInvoiceOrder::getInvoiceId, memberInvoice) + .eq(MemberInvoiceOrder::getInvoiceId, memberInvoice.getId()) .list(); Set<String> orderNoSet = memberInvoiceOrderList.stream() .map(MemberInvoiceOrder::getOrderNo) diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MgtBusinessDataService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MgtBusinessDataService.java index 90d2b31..e30efd2 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MgtBusinessDataService.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MgtBusinessDataService.java @@ -66,11 +66,11 @@ long mallOrderTotalCount = orderList.stream() .filter(order -> !order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS)) .count(); - // 商城订单统计-订单总数 + // 商城订单统计-商城订单 long mallOrderCount = orderList.stream() .filter(order -> order.getOrderFrom().equals(OrderFromEnum.COMMODITY_ORDER)) .count(); - // 商城订单统计-商城订单 + // 商城订单统计-秒杀订单 long seckillOrderCount = orderList.stream() .filter(order -> order.getOrderFrom().equals(OrderFromEnum.SNAP_ORDERS)) .count(); diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderReturnRequestServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderReturnRequestServiceImpl.java index 8ef985d..2a531cb 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderReturnRequestServiceImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderReturnRequestServiceImpl.java @@ -36,6 +36,7 @@ import com.ruoyi.system.api.domain.dto.updMembeOneDTO; import com.ruoyi.system.api.domain.vo.Express100VO; import com.ruoyi.system.api.domain.vo.OrderReturnVO; +import com.ruoyi.system.api.feignClient.GoodsSkuClient; import com.ruoyi.system.api.feignClient.MemberClient; import com.ruoyi.system.api.feignClient.PromotionClient; import com.ruoyi.system.api.feignClient.SysUserClient; @@ -79,7 +80,8 @@ @Resource private PromotionClient promotionClient; - + @Resource + private GoodsSkuClient goodsSkuClient; @Override public OrderReturnVO saveOrderReturnRequest(OrderReturnDTO OrderReturnDTO) { Order order = orderMapper.selectById(OrderReturnDTO.getOrderId()); @@ -179,7 +181,7 @@ order.setOrderStatus(OrderStatusEnum.FINISHED); order.setIsRequest(1); orderMapper.updateById(order); - this.removeById(byId); + this.updateById(byId); } @Override @@ -188,6 +190,7 @@ byId.setStatus(ReturnRequestStatusEnum.TO_BE_RECEIVED_BY_THE_PLATFORM); byId.setLogisticsNum(OrderReturnDTO.getLogistics()); byId.setCourierNumber(OrderReturnDTO.getCourierNumber()); + byId.setReturnTime(LocalDateTime.now()); this.updateById(byId); } @@ -300,6 +303,12 @@ } } } + if (Objects.nonNull(order.getCouponId())) { + CouponMemberDTO couponMemberDTO = new CouponMemberDTO(); + couponMemberDTO.setId(order.getCouponId()); + couponMemberDTO.setCouponStatus(CouponUseEnum.UNUSED.getCode()); + promotionClient.updCouponMember(couponMemberDTO, SecurityConstants.INNER); + } } orderReturnRequest.setAuditStatus(AuditStatusEnum.PASSED); // 扣除订单积分 @@ -319,12 +328,6 @@ updMembeOneDTO.setTotalPoints( Math.max(member.getTotalPoints() - order.getPoints(), 0)); memberClient.updMembeOne(updMembeOneDTO, SecurityConstants.INNER); - } - if (Objects.nonNull(order.getCouponId())) { - CouponMemberDTO couponMemberDTO = new CouponMemberDTO(); - couponMemberDTO.setId(order.getCouponId()); - couponMemberDTO.setCouponStatus(CouponUseEnum.UNUSED.getCode()); - promotionClient.updCouponMember(couponMemberDTO, SecurityConstants.INNER); } } else { orderReturnRequest.setStatus(ReturnRequestStatusEnum.REJECTED); @@ -400,6 +403,9 @@ dto.setCouponStatus(CouponUseEnum.UNUSED.getCode()); promotionClient.updCouponMember(dto, SecurityConstants.INNER); } + // 退回剩余库存 + goodsSkuClient.returnStockByOrder(order, SecurityConstants.INNER); + } private boolean handleRefund(PaymentMethodEnum paymentMethod, Paylog paylog, String orderNo) { diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java index 8b6c194..59f52a4 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java @@ -7,11 +7,11 @@ import com.google.common.collect.Lists; import com.ruoyi.common.core.constant.CacheConstants; import com.ruoyi.common.core.constant.SecurityConstants; -import com.ruoyi.common.core.enums.*; import com.ruoyi.common.core.enums.AuctionOrderTypeEnum; import com.ruoyi.common.core.enums.AuditStatusEnum; import com.ruoyi.common.core.enums.BondStatusEnum; import com.ruoyi.common.core.enums.CouponUseEnum; +import com.ruoyi.common.core.enums.GroupStatusEnum; import com.ruoyi.common.core.enums.OrderFromEnum; import com.ruoyi.common.core.enums.OrderStatusEnum; import com.ruoyi.common.core.enums.OrderTypeEnum; @@ -65,7 +65,11 @@ import com.ruoyi.system.api.domain.dto.MgtAfterSaleSettingDTO; import com.ruoyi.system.api.domain.dto.OrderDTO; import com.ruoyi.system.api.domain.dto.updMembeOneDTO; -import com.ruoyi.system.api.domain.vo.*; +import com.ruoyi.system.api.domain.vo.Express100VO; +import com.ruoyi.system.api.domain.vo.MemberOrderListVO; +import com.ruoyi.system.api.domain.vo.MemberOrderNumVO; +import com.ruoyi.system.api.domain.vo.MemberTiOrderVO; +import com.ruoyi.system.api.domain.vo.OrderVO; import com.ruoyi.system.api.feignClient.AuctionClient; import com.ruoyi.system.api.feignClient.GoodsSkuClient; import com.ruoyi.system.api.feignClient.MemberClient; @@ -80,6 +84,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.Optional; import java.util.Set; import java.util.concurrent.TimeUnit; import java.util.function.Function; @@ -168,6 +173,9 @@ order.setOrderFrom(OrderFromEnum.AUCTION_ORDERS); order.setOrderNo(OrderUtil.getOrderNoForPrefix("PM")); order.setIsOrder(1); + if (OrderDTO.getAuctionType().equals(AuctionOrderTypeEnum.AUCTION_ITEMS)) { + order.setAuctionSalesroomId(OrderDTO.getAuctionSalesroomId()); + } } order.setOrderTime(OrderDTO.getOrderTime()); order.setOrderFrom(OrderDTO.getOrderFrom()); @@ -908,6 +916,7 @@ LambdaQueryWrapper<OrderAuctionBond> wrapper3= Wrappers.lambdaQuery(); wrapper3.eq(OrderAuctionBond::getOrderId,order.getId()); + wrapper3.or().eq(OrderAuctionBond::getOrderNo, order.getOrderNo()); OrderAuctionBond orderAuctionBond = orderAuctionBondMapper.selectOne(wrapper3); if (orderAuctionBond!=null){ if (orderAuctionBond.getBoundStatus().getCode()==1||orderAuctionBond.getBoundStatus().getCode()==2){ @@ -1368,7 +1377,9 @@ */ @Override public List<Order> getOrderByCouponIds(Collection<Long> couponIds) { - return this.lambdaQuery().in(Order::getCouponId, couponIds).list(); + return this.lambdaQuery().in(Order::getCouponId, couponIds) + .ne(Order::getOrderStatus, OrderStatusEnum.CANCELED).eq(Order::getIsRequest, 1) + .list(); } /** @@ -1417,6 +1428,8 @@ query.getSkuName()) .eq(StringUtils.isNotNull(query.getOrderStatus()), Order::getOrderStatus, query.getOrderStatus()) + .eq(StringUtils.isNotNull(query.getOrderStatus()) && query.getOrderStatus() + .equals(OrderStatusEnum.FINISHED), Order::getIsRequest, 1) .orderByDesc(Order::getCreateTime) .page(new Page<>(query.getPageCurr(), query.getPageSize())); if (StringUtils.isEmpty(page.getRecords())) { @@ -1424,6 +1437,22 @@ } pageVO = PageDTO.of(page, MgtOrderVO.class); List<MgtOrderVO> voList = pageVO.getList(); + List<Long> orderIdList = voList.stream().filter(order -> order.getIsRequest().equals(2)) + .map(MgtOrderVO::getId).collect( + Collectors.toList()); + if (CollUtils.isNotEmpty(orderIdList)) { + List<OrderReturnRequest> orderReturnRequestList = orderReturnRequestService.lambdaQuery() + .in(OrderReturnRequest::getOrderId, orderIdList) + .eq(OrderReturnRequest::getAuditStatus, AuditStatusEnum.PASSED).list(); + List<Long> orderReturnRequestPassedIds = orderReturnRequestList.stream() + .map(OrderReturnRequest::getOrderId) + .collect(Collectors.toList()); + for (MgtOrderVO order : voList) { + if (orderReturnRequestPassedIds.contains(order.getId())) { + order.setIsRequest(3); + } + } + } if (query.getQueryType() == OrderTypeEnum.AUCTION_ORDER) { List<MgtOrderVO> list = voList; // 封装参数查询拍卖会 @@ -1440,9 +1469,6 @@ salesroomMap = auctionSalesroomList.stream() .collect(Collectors.toMap(AuctionSalesroom::getId, AuctionSalesroom::getSalesroomName)); - auctionSalesroomList.stream() - .map(AuctionSalesroom::getId) - .collect(Collectors.toSet()); } // 封装参数查询拍卖订单保证金 Set<Long> auctionGoodsIdSet = list.stream() @@ -1627,36 +1653,38 @@ throw new ServiceException("该订单已是售后状态"); } String orderNo = order.getOrderNo(); - Paylog paylog = iPaylogService.lambdaQuery().eq(Paylog::getOutTradeNo, orderNo) - .last("limit 1").one(); + Optional<Paylog> paylogOpt = iPaylogService.lambdaQuery().eq(Paylog::getOutTradeNo, orderNo) + .last("limit 1").oneOpt(); PaymentMethodEnum paymentMethod = order.getPaymentMethod(); - if (StringUtils.isNotNull(paylog)) { + if (paylogOpt.isPresent()) { + Paylog paylog = paylogOpt.get(); boolean result = handleRefund(paymentMethod, paylog, orderNo); if (result) { paylog.setState(3);// 已退款 iPaylogService.updateById(paylog); } - OrderReturnRequest orderReturnRequest = new OrderReturnRequest(); - orderReturnRequest.setOrderId(id); - orderReturnRequest.setRequestTime(LocalDateTime.now()); - orderReturnRequest.setRequestType(RequestTypeEnum.REFUND); - orderReturnRequest.setRequestReason("管理后台退款"); - orderReturnRequest.setStatus(ReturnRequestStatusEnum.COMPLETED); - orderReturnRequest.setAuditStatus(AuditStatusEnum.PASSED); - orderReturnRequest.setAuditTime(LocalDateTime.now()); - orderReturnRequestService.save(orderReturnRequest); } order.setIsRequest(2); this.updateById(order); + // 生成售后记录 + OrderReturnRequest orderReturnRequest = new OrderReturnRequest(); + orderReturnRequest.setOrderId(id); + orderReturnRequest.setRequestTime(LocalDateTime.now()); + orderReturnRequest.setRequestType(RequestTypeEnum.REFUND); + orderReturnRequest.setRequestReason("管理后台退款"); + orderReturnRequest.setStatus(ReturnRequestStatusEnum.COMPLETED); + orderReturnRequest.setAuditStatus(AuditStatusEnum.PASSED); + orderReturnRequest.setAuditTime(LocalDateTime.now()); + orderReturnRequestService.save(orderReturnRequest); // 扣除订单积分 Member member = memberClient.getMembeOne(order.getMemberId(), SecurityConstants.INNER) .getData(); if (StringUtils.isNotNull(member)) { MemberPointsDTO memberPointsDTO = new MemberPointsDTO(); memberPointsDTO.setMemberId(order.getMemberId()); - memberPointsDTO.setPointsType(1); - memberPointsDTO.setPointsStatus(PointStatusEnum.INCREASE); + memberPointsDTO.setPointsType(2); + memberPointsDTO.setPointsStatus(PointStatusEnum.REDUCE); memberPointsDTO.setPoints(order.getPoints()); memberClient.addMemberPoints(memberPointsDTO); diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/Configure.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/Configure.java index 4ca130b..29ccd20 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/Configure.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/Configure.java @@ -42,7 +42,9 @@ //HTTPS证书的本地路径 private static String certLocalPath; static{//从服务器相对路径中获取 - certLocalPath = Configure.class.getClassLoader().getResource("").getPath() + "com/ruoyi/order/util/tencent/common/cert/apiclient_cert.p12"; + // certLocalPath = Configure.class.getClassLoader().getResource("").getPath() + "com/ruoyi/order/util/tencent/common/cert/apiclient_cert.p12"; + certLocalPath = Configure.class.getClassLoader().getResource("").getPath() + + "cert/apiclient_cert.p12"; } //HTTPS证书密码,默认密码等于商户号MCHID @@ -51,7 +53,9 @@ //HTTPS证书的本地路径 private static String certLocalPath_2; static{//从服务器相对路径中获取 - certLocalPath_2 = Configure.class.getClassLoader().getResource("").getPath() + "com/ruoyi/order/util/tencent/common/cert_2/apiclient_cert.p12"; + // certLocalPath_2 = Configure.class.getClassLoader().getResource("").getPath() + "com/ruoyi/order/util/tencent/common/cert_2/apiclient_cert.p12"; + certLocalPath_2 = Configure.class.getClassLoader().getResource("").getPath() + + "cert_2/apiclient_cert.p12"; } //HTTPS证书密码,默认密码等于商户号MCHID diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml index 6464c93..acdde13 100644 --- a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml +++ b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml @@ -3,15 +3,13 @@ <mapper namespace="com.ruoyi.order.mapper.OrderMapper"> <select id="getSeckillMembers" resultType="java.lang.Integer"> - SELECT IFNULL(COUNT(id), 0) AS num + SELECT COUNT(DISTINCT o.member_id) AS num FROM t_order o WHERE o.goods_sku_id = #{id} - AND o.order_from=2 - AND o.del_flag=0 + AND o.order_from = 2 + AND o.del_flag = 0 AND o.order_status IN (2, 3, 4) - GROUP BY - o.member_id </select> diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/scheduler/PromotionScheduler.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/scheduler/PromotionScheduler.java index a2be45e..45cbc04 100644 --- a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/scheduler/PromotionScheduler.java +++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/scheduler/PromotionScheduler.java @@ -20,7 +20,9 @@ /** * 每小时定时检查优惠券过期 */ - @Scheduled(cron = "0 0 * * * *") + // 每分钟执行一次 + @Scheduled(cron = "0 0/1 * * * *") + // @Scheduled(cron = "0 0 * * * *") private void timingCheckMemberCoupon() { log.info("----------------定时检查优惠券过期任务开始执行----------------"); couponMemberService.timingCheckMemberCoupon(); diff --git a/ruoyi-modules/ruoyi-promotion/src/main/resources/mapper/promotion/CouponMemberMapper.xml b/ruoyi-modules/ruoyi-promotion/src/main/resources/mapper/promotion/CouponMemberMapper.xml index b379d3e..f1ab70a 100644 --- a/ruoyi-modules/ruoyi-promotion/src/main/resources/mapper/promotion/CouponMemberMapper.xml +++ b/ruoyi-modules/ruoyi-promotion/src/main/resources/mapper/promotion/CouponMemberMapper.xml @@ -7,6 +7,6 @@ SET coupon_status = 2 WHERE del_flag = 0 AND coupon_status = 0 - AND end_date < CURDATE() + AND end_date < CURTIME() </update> </mapper> -- Gitblit v1.7.1