From ed4f07531b9cb0794e976a14cee3b591dec8d4f6 Mon Sep 17 00:00:00 2001 From: rentaiming <806181062@qq.com> Date: 星期六, 20 七月 2024 21:22:23 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java | 74 +++++++--- ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/CouponMemberDTO.java | 2 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/CouponServiceImpl.java | 4 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MemberInvoiceServiceImpl.java | 10 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/OrderReturnDTO.java | 4 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java | 36 ++-- ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/Order.java | 1 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java | 10 + ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/async/AuctionAsyncMethodService.java | 2 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/async/AsyncMethodService.java | 2 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/scheduler/PromotionScheduler.java | 28 ++++ ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/CouponMemberServiceImpl.java | 12 ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml | 1 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/inner/MemberPointsController.java | 12 - ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/CouponMember.java | 2 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/async/AsyncMethodService.java | 14 - ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderReturnRequestServiceImpl.java | 26 +++ ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/vo/MgtOrderVO.java | 2 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/ICouponMemberService.java | 6 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/forepart/vo/CouponMemberVO.java | 11 + ruoyi-modules/ruoyi-promotion/src/main/resources/mapper/promotion/CouponMemberMapper.xml | 7 + ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/mapper/CouponMemberMapper.java | 1 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java | 74 +++++++--- ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberPointsServiceImpl.java | 14 ++ ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java | 3 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberPointsService.java | 3 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java | 34 ++-- ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/GoodsGroupPurchaseInfo.java | 2 28 files changed, 270 insertions(+), 127 deletions(-) diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/CouponMember.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/CouponMember.java index 01d7989..27fbb47 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/CouponMember.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/CouponMember.java @@ -47,7 +47,7 @@ @ApiModelProperty(value = "优惠券类型 1=满减券 2=代金券 3=折扣券") private CouponTypeEnum couponType; - @ApiModelProperty(value = "优惠券状态 0:未使用, 1:已使用") + @ApiModelProperty(value = "优惠券状态 0:未使用, 1:已使用 2:已过期") private CouponUseEnum couponStatus; @ApiModelProperty(value = "满减金额,例如:满100元") diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/GoodsGroupPurchaseInfo.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/GoodsGroupPurchaseInfo.java index 09f2848..01fa962 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/GoodsGroupPurchaseInfo.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/GoodsGroupPurchaseInfo.java @@ -46,7 +46,7 @@ @ApiModelProperty(value = "成团人数") private Integer groupSize; - @ApiModelProperty(value = "0 是未成团,1 是已经成团") + @ApiModelProperty(value = "0 是未成团,1 是已经成团 2 成团失败") private Integer groupStatus; @ApiModelProperty(value = "创建者") diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/Order.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/Order.java index 427c0c8..d44a34b 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/Order.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/Order.java @@ -163,4 +163,5 @@ @ApiModelProperty("团购编号") private String groupNo; + } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/CouponMemberDTO.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/CouponMemberDTO.java index cc634b2..da15d8e 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/CouponMemberDTO.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/CouponMemberDTO.java @@ -15,6 +15,6 @@ @ApiModelProperty(value = "会员id") private Long memberId; - @ApiModelProperty(value = "优惠券状态 0:未使用, 1:已使用") + @ApiModelProperty(value = "优惠券状态 0:未使用, 1:已使用 2:已过期") private Integer couponStatus; } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/OrderReturnDTO.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/OrderReturnDTO.java index bd66e6a..9d0b33d 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/OrderReturnDTO.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/OrderReturnDTO.java @@ -1,12 +1,8 @@ package com.ruoyi.system.api.domain.dto; -import com.ruoyi.common.core.enums.RequestTypeEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import org.springframework.web.multipart.MultipartFile; - -import java.time.LocalDateTime; @Data @ApiModel(value = "售后订单传输对象", description = "售后订单传输对象") diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/async/AuctionAsyncMethodService.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/async/AuctionAsyncMethodService.java index 983c10c..23d8683 100644 --- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/async/AuctionAsyncMethodService.java +++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/async/AuctionAsyncMethodService.java @@ -54,7 +54,7 @@ } private boolean isWithinOneHour(LocalDateTime startTime) { - LocalDateTime checkTime = LocalDateTime.now().plusHours(1); + LocalDateTime checkTime = LocalDateTime.now().plusMinutes(61); return checkTime.isAfter(startTime); } 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 fa8ca17..987e1c0 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 @@ -317,12 +317,29 @@ id); List<AuctionBidRecord> auctionBidRecordList = new ArrayList<>(); if (StringUtils.isNotEmpty(auctionBidRecords)) { - // 中标 - for (int i = 0; i < auctionGoods.getAuctionStock(); i++) { - AuctionBidRecord auctionBidRecord = auctionBidRecords.get(i); - auctionBidRecord.setStatus(BidStatusEnum.SUCCESSFUL); - auctionBidRecordList.add(auctionBidRecord); + if (auctionBidRecords.size() >= auctionGoods.getAuctionStock()) { + // 中标 + for (int i = 0; i < auctionGoods.getAuctionStock(); i++) { + AuctionBidRecord auctionBidRecord = auctionBidRecords.get(i); + auctionBidRecord.setStatus(BidStatusEnum.SUCCESSFUL); + auctionBidRecordList.add(auctionBidRecord); + } + } else { + // 中标 + for (int i = 0; i < auctionGoods.getAuctionStock(); i++) { + AuctionBidRecord auctionBidRecord = auctionBidRecords.get(i); + auctionBidRecord.setStatus(BidStatusEnum.SUCCESSFUL); + auctionBidRecordList.add(auctionBidRecord); + } + // 退回剩余库存 + GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); + goodsStockUpdDTO.setGoodsSkuId(auctionGoods.getGoodsSkuId()); + goodsStockUpdDTO.setAuctionStock( + auctionGoods.getAuctionStock() - auctionBidRecordList.size()); + goodsSkuClient.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO), + SecurityConstants.INNER); } + auctionBidRecordService.updateBatchById(auctionBidRecordList); // 创建待支付订单 @@ -330,11 +347,12 @@ ConfigEnum.MEMBER_POINTS_MONEY.getKey()).getData(); CustomConfig pointsConfig = sysUserClient.getconfig( ConfigEnum.MEMBER_POINTS_POINTS.getKey()).getData(); - double ratio = - Double.parseDouble( - pointsConfig.getConfigValue()) / Double.parseDouble( - moneyConfig.getConfigValue()); for (AuctionBidRecord auctionBidRecord : auctionBidRecordList) { + BigDecimal lastBidAmount = auctionBidRecord.getLastBidAmount(); + BigDecimal divide = lastBidAmount.divide( + new BigDecimal(moneyConfig.getConfigValue()), 0, RoundingMode.DOWN); + int points = divide.multiply( + new BigDecimal(pointsConfig.getConfigValue())).intValue(); OrderDTO orderDTO = new OrderDTO(); orderDTO.setAuctionType(AuctionOrderTypeEnum.REGULAR_ITEMS); orderDTO.setGoodsQuantity(auctionGoods.getAuctionStock()); @@ -344,8 +362,7 @@ orderDTO.setTotalAmount(auctionBidRecord.getLastBidAmount()); orderDTO.setOrderFrom(OrderFromEnum.AUCTION_ORDERS); orderDTO.setOrderTime(LocalDateTime.now()); - orderDTO.setPoints(auctionBidRecord.getLastBidAmount() - .multiply(BigDecimal.valueOf(ratio)).intValue()); + orderDTO.setPoints(points); orderDTO.setBound(auctionGoods.getBond()); MemberAddress data = memberClient.getMemberAddressOne( auctionBidRecord.getMemberId(), SecurityConstants.INNER).getData(); @@ -692,12 +709,29 @@ id); List<AuctionBidRecord> auctionBidRecordList = new ArrayList<>(); if (StringUtils.isNotEmpty(auctionBidRecords)) { - // 中标 - for (int i = 0; i < auctionGoods.getAuctionStock(); i++) { - AuctionBidRecord auctionBidRecord = auctionBidRecords.get(i); - auctionBidRecord.setStatus(BidStatusEnum.SUCCESSFUL); - auctionBidRecordList.add(auctionBidRecord); + if (auctionBidRecords.size() >= auctionGoods.getAuctionStock()) { + // 中标 + for (int i = 0; i < auctionGoods.getAuctionStock(); i++) { + AuctionBidRecord auctionBidRecord = auctionBidRecords.get(i); + auctionBidRecord.setStatus(BidStatusEnum.SUCCESSFUL); + auctionBidRecordList.add(auctionBidRecord); + } + } else { + // 中标 + for (int i = 0; i < auctionGoods.getAuctionStock(); i++) { + AuctionBidRecord auctionBidRecord = auctionBidRecords.get(i); + auctionBidRecord.setStatus(BidStatusEnum.SUCCESSFUL); + auctionBidRecordList.add(auctionBidRecord); + } + // 退回剩余库存 + GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); + goodsStockUpdDTO.setGoodsSkuId(auctionGoods.getGoodsSkuId()); + goodsStockUpdDTO.setAuctionStock( + auctionGoods.getAuctionStock() - auctionBidRecords.size()); + goodsSkuClient.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO), + SecurityConstants.INNER); } + auctionBidRecordService.updateBatchById(auctionBidRecordList); // 创建待支付订单 @@ -705,12 +739,6 @@ ConfigEnum.MEMBER_POINTS_MONEY.getKey()).getData(); CustomConfig pointsConfig = sysUserClient.getconfig( ConfigEnum.MEMBER_POINTS_POINTS.getKey()).getData(); - BigDecimal ratio = - BigDecimal.valueOf(Double.parseDouble( - pointsConfig.getConfigValue())) - .divide(BigDecimal.valueOf(Double.parseDouble( - moneyConfig.getConfigValue())), 0, RoundingMode.DOWN); - for (AuctionBidRecord auctionBidRecord : auctionBidRecordList) { BigDecimal lastBidAmount = auctionBidRecord.getLastBidAmount(); BigDecimal divide = lastBidAmount.divide( @@ -798,7 +826,7 @@ return null; }).filter(Objects::nonNull).collect(Collectors.toList()); // 远程调用订单服务修改订单状态 - orderClient.updateOrderAuctionBondStatus(ids, BondStatusEnum.PAID, + orderClient.updateOrderAuctionBondStatus(ids, BondStatusEnum.REFUNDED, SecurityConstants.INNER); } } 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 3881244..d9726fb 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 @@ -903,7 +903,7 @@ public String getQrCode(Long id) throws Exception { AuctionSalesroom auctionSalesroom = this.getById(id); String auctionSalesroomNo = auctionSalesroom.getAuctionSalesroomNo(); - return CreateQrCode.createQRCode(auctionSalesroomNo); + return auctionSalesroom.getQrCode(); } @Override @@ -1502,11 +1502,10 @@ if (lastBidAmount.intValue() > 0) { BigDecimal divide = lastBidAmount.divide( - BigDecimal.valueOf(Long.parseLong(memberPointsMoney.getConfigValue())), 0, + new BigDecimal(memberPointsMoney.getConfigValue()), 0, RoundingMode.DOWN); int points = divide.multiply( - BigDecimal.valueOf( - Long.parseLong((memberPointsPoints.getConfigValue())))).intValue(); + new BigDecimal(memberPointsPoints.getConfigValue())).intValue(); order.setPoints(points); } else { order.setPoints(0); @@ -1649,10 +1648,14 @@ List<GoodsStockUpdDTO> dtoList = new ArrayList<>(); for (AuctionSalesroomGoods salesroomGoods : auctionSalesroomGoods) { salesroomGoods.setStatus(AuctionGoodsStatusEnum.ENDED); - GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); - goodsStockUpdDTO.setGoodsSkuId(salesroomGoods.getGoodsSkuId()); - goodsStockUpdDTO.setAuctionStock(salesroomGoods.getSalesroomStock()); - dtoList.add(goodsStockUpdDTO); + // 等待中的商品退库存 + if (salesroomGoods.getStatus().equals(AuctionGoodsStatusEnum.WAITING)) { + GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); + goodsStockUpdDTO.setGoodsSkuId(salesroomGoods.getGoodsSkuId()); + goodsStockUpdDTO.setAuctionStock(salesroomGoods.getSalesroomStock()); + dtoList.add(goodsStockUpdDTO); + } + } // 批量更新商品库存 auctionSalesroomGoodsMapper.updateBatchById(auctionSalesroomGoods); @@ -1662,15 +1665,16 @@ List<AuctionBidRecord> auctionBidRecordList = auctionBidRecordMapper.selectList( Wrappers.<AuctionBidRecord>lambdaQuery() .eq(AuctionBidRecord::getAuctionSalesroomId, auctionSalesroomId) - .eq(AuctionBidRecord::getStatus, BidStatusEnum.ELIMINATE)); - Set<Long> memberIdlist = auctionBidRecordList.stream().map(AuctionBidRecord::getMemberId) - .collect(Collectors.toSet()); - if (StringUtils.isNotEmpty(memberIdlist)) { - OrderAuctionBondDTO orderAuctionBondDTO = new OrderAuctionBondDTO(); - orderAuctionBondDTO.setAuctionSalesroomId(auctionSalesroom.getId()); - orderAuctionBondDTO.setUserList(memberIdlist); - orderClient.getOrderAuctionBond(orderAuctionBondDTO, SecurityConstants.INNER); + .ne(AuctionBidRecord::getStatus, BidStatusEnum.SUCCESSFUL)); + Set<Long> memberIdList = new HashSet<>(); + if (CollUtils.isNotEmpty(auctionBidRecordList)) { + memberIdList = auctionBidRecordList.stream().map(AuctionBidRecord::getMemberId) + .collect(Collectors.toSet()); } + OrderAuctionBondDTO orderAuctionBondDTO = new OrderAuctionBondDTO(); + orderAuctionBondDTO.setAuctionSalesroomId(auctionSalesroom.getId()); + 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().toString()); diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/async/AsyncMethodService.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/async/AsyncMethodService.java index 4dfb39a..a6dd4da 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/async/AsyncMethodService.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/async/AsyncMethodService.java @@ -79,7 +79,7 @@ } private boolean isWithinOneHour(LocalDateTime startTime) { - LocalDateTime checkTime = LocalDateTime.now().plusHours(1); + LocalDateTime checkTime = LocalDateTime.now().plusMinutes(61); return checkTime.isAfter(startTime); } 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 2d12b44..0748925 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 @@ -285,6 +285,7 @@ groupPurchase.setGroupStatus( res ? GroupStatusEnum.FORMED_INTO_A_GROUP : GroupStatusEnum.GROUP_FAILURE); groupPurchase.setStartStatus(StartStatusEnum.ENDED); + this.updateById(groupPurchase); } @@ -322,7 +323,7 @@ }); try { log.info( - "============ =================退款结束============================="); + "=============================退款结束============================="); log.info("退款成功订单:{}", objectMapper.writeValueAsString(successfulOrders)); log.info("退款失败订单:{}", objectMapper.writeValueAsString(failedOrders)); @@ -349,6 +350,13 @@ orderClient.updateOrderStatusByMubres(formedGroupMubres, SecurityConstants.INNER); return true; } + List<GoodsGroupPurchaseInfo> notGroupedList = groupPurchaseInfoList.stream() + .filter(g -> !g.getCurrentNumber() + .equals(g.getGroupSize())).peek(p -> { + p.setGroupStatus(GroupStatusEnum.GROUP_FAILURE.getCode()); + }).collect( + Collectors.toList()); + goodsGroupPurchaseInfoService.updateBatchById(notGroupedList); } return false; } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/inner/MemberPointsController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/inner/MemberPointsController.java index 993e5c2..e87124e 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/inner/MemberPointsController.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/inner/MemberPointsController.java @@ -2,18 +2,14 @@ import com.ruoyi.common.core.domain.R; -import com.ruoyi.common.core.utils.page.PageDTO; -import com.ruoyi.system.api.domain.MemberPoints; import com.ruoyi.member.service.IMemberPointsService; -import com.ruoyi.system.api.domain.dto.MemberDTO; import com.ruoyi.system.api.domain.dto.MemberPointsDTO; import io.swagger.annotations.ApiOperation; +import javax.annotation.Resource; 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; - -import javax.annotation.Resource; /** * <p> @@ -31,11 +27,7 @@ @PostMapping("/addMemberPoints") @ApiOperation(value = "用户端-添加或减少用户积分") public R addMemberPoints(@RequestBody MemberPointsDTO memberPointsDTO) { - MemberPoints points=new MemberPoints(); - points.setMemberId(memberPointsDTO.getMemberId()); - points.setPointsType(memberPointsDTO.getPointsType()); - points.setPoints(memberPointsDTO.getPoints()); - iMemberPointsService.save(points); + iMemberPointsService.addMemberPoints(memberPointsDTO); return R.ok(); } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberPointsService.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberPointsService.java index f1bf9c7..a2116d1 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberPointsService.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberPointsService.java @@ -6,6 +6,7 @@ import com.ruoyi.member.controller.management.vo.MgtMemberPointsVO; import com.ruoyi.system.api.domain.MemberPoints; import com.ruoyi.system.api.domain.dto.MemberDTO; +import com.ruoyi.system.api.domain.dto.MemberPointsDTO; /** * <p> @@ -26,4 +27,6 @@ * @return PageDTO<MgtMemberPointsVO> */ PageDTO<MgtMemberPointsVO> getMemberPointsPage(MgtMemberPointsQuery query); + + void addMemberPoints(MemberPointsDTO memberPointsDTO); } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberPointsServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberPointsServiceImpl.java index 05885ba..7e9434f 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberPointsServiceImpl.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberPointsServiceImpl.java @@ -14,6 +14,7 @@ import com.ruoyi.system.api.domain.Member; import com.ruoyi.system.api.domain.MemberPoints; import com.ruoyi.system.api.domain.dto.MemberDTO; +import com.ruoyi.system.api.domain.dto.MemberPointsDTO; import com.ruoyi.system.api.feignClient.MemberClient; import java.util.List; import java.util.Map; @@ -22,6 +23,8 @@ import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; /** * <p> @@ -69,6 +72,7 @@ .eq(StringUtils.isNotNull(query.getPointsStatus()), MemberPoints::getPointsStatus, query.getPointsStatus()) .in(StringUtils.isNotEmpty(memberIdSet), MemberPoints::getMemberId, memberIdSet) + .eq(StringUtils.isNotNull(query.getId()), MemberPoints::getMemberId, query.getId()) .orderByDesc(MemberPoints::getCreateTime) .page(page); if (StringUtils.isEmpty(page.getRecords())) { @@ -116,4 +120,14 @@ } return memberDTO; } + + @Override + @Transactional(propagation = Propagation.REQUIRES_NEW) + public void addMemberPoints(MemberPointsDTO memberPointsDTO) { + MemberPoints points = new MemberPoints(); + points.setMemberId(memberPointsDTO.getMemberId()); + points.setPointsType(memberPointsDTO.getPointsType()); + points.setPoints(memberPointsDTO.getPoints()); + this.save(points); + } } 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 5fce8fc..69c6dcf 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 @@ -64,6 +64,8 @@ import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; /** * <p> @@ -525,6 +527,7 @@ } @Override + @Transactional(propagation = Propagation.REQUIRES_NEW) public void updMembeOne(updMembeOneDTO dMembeOneDTO) { Member byId = this.getById(dMembeOneDTO.getMemberId()); if (dMembeOneDTO.getMoney()!=null){ 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 b2845da..67d3b50 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 @@ -35,7 +35,7 @@ private LocalDateTime orderTime; @ApiModelProperty(value = "拍卖订单类型 1=普通拍品 2=拍卖会拍品") - private AuctionOrderTypeEnum auctionType; + private AuctionOrderTypeEnum auctionOrderType; @ApiModelProperty(value = "所属拍卖场") private String salesroomName; 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 b63e90c..4feb7e1 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 @@ -34,6 +34,7 @@ import javax.annotation.Resource; import org.jetbrains.annotations.NotNull; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * <p> @@ -208,6 +209,7 @@ * @param dto 管理后台-开票申请审核数据传输对象 */ @Override + @Transactional(rollbackFor = Exception.class) public void audit(MgtMemberInvoicingAuditDTO dto) { MemberInvoice memberInvoice = getMemberInvoice(dto.getId()); if (!Objects.equals(memberInvoice.getInvoiceStatus(), 1)) { @@ -222,13 +224,13 @@ List<MemberInvoiceOrder> memberInvoiceOrderList = iMemberInvoiceOrderService.lambdaQuery() .eq(MemberInvoiceOrder::getInvoiceId, memberInvoice) .list(); - Set<Long> orderIdSet = memberInvoiceOrderList.stream() - .map(MemberInvoiceOrder::getOrderId) + Set<String> orderNoSet = memberInvoiceOrderList.stream() + .map(MemberInvoiceOrder::getOrderNo) .collect(Collectors.toSet()); - if (!orderIdSet.isEmpty()) { + if (!orderNoSet.isEmpty()) { iOrderService.lambdaUpdate() .set(Order::getInvoiceStatus, dto.getInvoiceStatus() == 2 ? 3 : 4) - .in(Order::getId, orderIdSet).update(); + .in(Order::getOrderNo, orderNoSet).update(); } } 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 5870ba1..3937bb6 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 @@ -8,6 +8,7 @@ import com.ruoyi.common.core.enums.AuditStatusEnum; import com.ruoyi.common.core.enums.OrderStatusEnum; import com.ruoyi.common.core.enums.PaymentMethodEnum; +import com.ruoyi.common.core.enums.PointStatusEnum; import com.ruoyi.common.core.enums.RequestTypeEnum; import com.ruoyi.common.core.enums.ReturnRequestStatusEnum; import com.ruoyi.common.core.exception.ServiceException; @@ -28,11 +29,14 @@ import com.ruoyi.system.api.domain.Order; import com.ruoyi.system.api.domain.dto.LogisticsDTO; import com.ruoyi.system.api.domain.dto.MemberDTO; +import com.ruoyi.system.api.domain.dto.MemberPointsDTO; import com.ruoyi.system.api.domain.dto.OrderReturnDTO; +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.MemberClient; import com.ruoyi.system.api.feignClient.SysUserClient; +import io.seata.spring.annotation.GlobalTransactional; import java.time.LocalDateTime; import java.util.List; import java.util.Map; @@ -248,7 +252,8 @@ } @Override - @Transactional(rollbackFor = Exception.class) + @GlobalTransactional(rollbackFor = Exception.class) + @Transactional public void confirmReturnRequest(Long id) { OrderReturnRequest orderReturnRequest = getOrderReturnRequest(id); if (orderReturnRequest.getStatus() @@ -268,14 +273,31 @@ String orderNo = order.getOrderNo(); Paylog paylog = paylogService.lambdaQuery().eq(Paylog::getOutTradeNo, orderNo) .last("limit 1").one(); - PaymentMethodEnum paymentMethod = order.getPaymentMethod(); if (StringUtils.isNotNull(paylog)) { + PaymentMethodEnum paymentMethod = order.getPaymentMethod(); boolean result = handleRefund(paymentMethod, paylog, orderNo); if (result) { paylog.setState(3);// 已退款 paylogService.updateById(paylog); } } + // 扣除订单积分 + 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.setPoints(order.getPoints()); + memberClient.addMemberPoints(memberPointsDTO); + + updMembeOneDTO updMembeOneDTO = new updMembeOneDTO(); + updMembeOneDTO.setMemberId(order.getMemberId()); + updMembeOneDTO.setType(2); + updMembeOneDTO.setTotalPoints(Math.max(member.getTotalPoints() - order.getPoints(), 0)); + memberClient.updMembeOne(updMembeOneDTO, 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 a0dce86..4761a9f 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 @@ -14,12 +14,12 @@ import com.ruoyi.common.core.enums.OrderStatusEnum; import com.ruoyi.common.core.enums.OrderTypeEnum; import com.ruoyi.common.core.enums.PaymentMethodEnum; +import com.ruoyi.common.core.enums.PointStatusEnum; import com.ruoyi.common.core.enums.RequestTypeEnum; import com.ruoyi.common.core.enums.ReturnRequestStatusEnum; 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.CollUtils; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.order.controller.management.dto.MgtOrderConfirmShipmentDTO; @@ -56,6 +56,7 @@ 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.MemberPointsDTO; import com.ruoyi.system.api.domain.dto.MgtAfterSaleSettingDTO; import com.ruoyi.system.api.domain.dto.OrderDTO; import com.ruoyi.system.api.domain.dto.updMembeOneDTO; @@ -69,6 +70,7 @@ import com.ruoyi.system.api.feignClient.MemberClient; import com.ruoyi.system.api.feignClient.PromotionClient; import com.ruoyi.system.api.feignClient.SysUserClient; +import io.seata.spring.annotation.GlobalTransactional; import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDateTime; @@ -1233,7 +1235,8 @@ List<MgtOrderVO> list = voList; // 封装参数查询拍卖会 Set<Long> auctionSalesroomGoodsIdSet = list.stream() - .filter(order -> order.getAuctionType() == AuctionOrderTypeEnum.AUCTION_ITEMS) + .filter(order -> order.getAuctionOrderType() + == AuctionOrderTypeEnum.AUCTION_ITEMS) .map(MgtOrderVO::getGoodsSkuId).collect(Collectors.toSet()); List<AuctionSalesroom> auctionSalesroomList = auctionClient.getAuctionSalesroomByIds( auctionSalesroomGoodsIdSet, SecurityConstants.INNER) @@ -1243,7 +1246,8 @@ AuctionSalesroom::getSalesroomName)); // 封装参数查询拍卖订单保证金 Set<Long> auctionGoodsIdSet = list.stream() - .filter(order -> order.getAuctionType() == AuctionOrderTypeEnum.REGULAR_ITEMS) + .filter(order -> order.getAuctionOrderType() + == AuctionOrderTypeEnum.REGULAR_ITEMS) .map(MgtOrderVO::getGoodsSkuId) .collect(Collectors.toSet()); @@ -1269,7 +1273,7 @@ Function.identity())); list.forEach(order -> { - if (order.getAuctionType() == AuctionOrderTypeEnum.AUCTION_ITEMS) { + if (order.getAuctionOrderType() == AuctionOrderTypeEnum.AUCTION_ITEMS) { order.setSalesroomName( StringUtils.isNotBlank(salesroomMap.get(order.getGoodsSkuId())) ? salesroomMap.get(order.getAuctionSalesroomId()) : "无"); @@ -1282,7 +1286,7 @@ .getBoundStatus() : null); } - if (order.getAuctionType() == AuctionOrderTypeEnum.REGULAR_ITEMS) { + if (order.getAuctionOrderType() == AuctionOrderTypeEnum.REGULAR_ITEMS) { order.setSalesroomName("无"); order.setBoundStatus( StringUtils.isNotNull(auctionSalesroomGoodsBondMap.get( @@ -1410,9 +1414,13 @@ * @param id 订单id */ @Override - @Transactional(rollbackFor = Exception.class) + @GlobalTransactional(rollbackFor = Exception.class) + @Transactional public void refund(Long id) { Order order = getOrder(id); + if (order.getIsRequest() == 2) { + throw new ServiceException("该订单已是售后状态"); + } String orderNo = order.getOrderNo(); Paylog paylog = iPaylogService.lambdaQuery().eq(Paylog::getOutTradeNo, orderNo) .last("limit 1").one(); @@ -1431,10 +1439,28 @@ orderReturnRequest.setRequestReason("管理后台退款"); orderReturnRequest.setStatus(ReturnRequestStatusEnum.COMPLETED); orderReturnRequest.setAuditStatus(AuditStatusEnum.PASSED); + orderReturnRequest.setAuditTime(LocalDateTime.now()); orderReturnRequestService.save(orderReturnRequest); } order.setIsRequest(2); this.updateById(order); + // 扣除订单积分 + 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.setPoints(order.getPoints()); + memberClient.addMemberPoints(memberPointsDTO); + + updMembeOneDTO updMembeOneDTO = new updMembeOneDTO(); + updMembeOneDTO.setMemberId(order.getMemberId()); + updMembeOneDTO.setType(2); + updMembeOneDTO.setTotalPoints(Math.max(member.getTotalPoints() - order.getPoints(), 0)); + memberClient.updMembeOne(updMembeOneDTO, SecurityConstants.INNER); + } } private boolean handleRefund(PaymentMethodEnum paymentMethod, Paylog paylog, String orderNo) { @@ -1467,6 +1493,9 @@ @Override public void refundReturn(Long id) { Order order = getOrder(id); + if (order.getIsRequest() == 2) { + throw new ServiceException("该订单已是售后状态"); + } if (order.getOrderStatus() == OrderStatusEnum.FINISHED) { OrderReturnRequest orderReturnRequest = new OrderReturnRequest(); order.setIsRequest(2); @@ -1484,6 +1513,7 @@ orderReturnRequest.setRequestReason("管理后台退款退货"); orderReturnRequest.setStatus(ReturnRequestStatusEnum.TO_BE_RETURNED); orderReturnRequest.setAuditStatus(AuditStatusEnum.PASSED); + orderReturnRequest.setAuditTime(LocalDateTime.now()); orderReturnRequestService.save(orderReturnRequest); } @@ -1505,33 +1535,33 @@ @Override public void refundBond(Long id) { Order order = getOrder(id); - List<OrderAuctionBond> orderAuctionBond; + OrderAuctionBond orderAuctionBond; if (order.getAuctionOrderType() == AuctionOrderTypeEnum.AUCTION_ITEMS) { - orderAuctionBond = orderAuctionBondMapper.selectList( + orderAuctionBond = orderAuctionBondMapper.selectOne( Wrappers.lambdaQuery(OrderAuctionBond.class) + .eq(OrderAuctionBond::getOrderId, id) .eq(OrderAuctionBond::getAuctionSalesroomId, order.getAuctionSalesroomId()) .eq(OrderAuctionBond::getBoundStatus, BondStatusEnum.PAID)); } else { - orderAuctionBond = orderAuctionBondMapper.selectList( + orderAuctionBond = orderAuctionBondMapper.selectOne( Wrappers.lambdaQuery(OrderAuctionBond.class) + .eq(OrderAuctionBond::getOrderId, id) .eq(OrderAuctionBond::getAuctionGoodsId, order.getGoodsSkuId()) .eq(OrderAuctionBond::getBoundStatus, BondStatusEnum.PAID)); } - if (CollUtils.isNotEmpty(orderAuctionBond)) { - for (OrderAuctionBond auctionBond : orderAuctionBond) { - Paylog paylog = iPaylogService.lambdaQuery() - .in(Paylog::getOutTradeNo, auctionBond.getOrderNo()) - .one(); - boolean result = handleRefund(auctionBond.getPaymentMethod(), paylog, - auctionBond.getOrderNo()); - if (result) { - paylog.setState(3);// 已退款 - auctionBond.setBoundStatus(BondStatusEnum.REFUNDED); - iPaylogService.updateById(paylog); - this.updateById(order); - } + if (StringUtils.isNotNull(orderAuctionBond)) { + Paylog paylog = iPaylogService.lambdaQuery() + .in(Paylog::getOutTradeNo, orderAuctionBond.getOrderNo()) + .one(); + boolean result = handleRefund(orderAuctionBond.getPaymentMethod(), paylog, + orderAuctionBond.getOrderNo()); + if (result) { + paylog.setState(3);// 已退款 + orderAuctionBond.setBoundStatus(BondStatusEnum.REFUNDED); + iPaylogService.updateById(paylog); + this.updateById(order); } } } diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/forepart/vo/CouponMemberVO.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/forepart/vo/CouponMemberVO.java index 727af79..4275027 100644 --- a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/forepart/vo/CouponMemberVO.java +++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/forepart/vo/CouponMemberVO.java @@ -1,13 +1,16 @@ package com.ruoyi.promotion.controller.forepart.vo; -import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; import com.ruoyi.common.core.enums.CouponTypeEnum; import com.ruoyi.common.core.enums.CouponUseEnum; import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - import java.math.BigDecimal; import java.time.LocalDateTime; +import lombok.Data; @Data public class CouponMemberVO { @@ -27,7 +30,7 @@ @ApiModelProperty(value = "优惠券类型 1=满减券 2=代金券 3=折扣券") private CouponTypeEnum couponType; - @ApiModelProperty(value = "优惠券状态 0:未使用, 1:已使用") + @ApiModelProperty(value = "优惠券状态 0:未使用, 1:已使用 2:已过期") private CouponUseEnum couponStatus; @ApiModelProperty(value = "满减金额,例如:满100元") diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/mapper/CouponMemberMapper.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/mapper/CouponMemberMapper.java index 663cc53..8d89f67 100644 --- a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/mapper/CouponMemberMapper.java +++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/mapper/CouponMemberMapper.java @@ -13,4 +13,5 @@ */ public interface CouponMemberMapper extends BaseMapper<CouponMember> { + void timingCheckMemberCoupon(); } 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 new file mode 100644 index 0000000..f5b175e --- /dev/null +++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/scheduler/PromotionScheduler.java @@ -0,0 +1,28 @@ +package com.ruoyi.promotion.scheduler; + +import com.ruoyi.promotion.service.ICouponMemberService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +/** + * @author mitao + * @date 2024/7/20 + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class PromotionScheduler { + + private final ICouponMemberService couponMemberService; + + /** + * 每天凌晨定时检查优惠券过期 + */ + @Scheduled(cron = "1 0 0 * * ?") + private void timingCheckMemberCoupon() { + log.info("----------------定时检查优惠券过期任务开始执行----------------"); + couponMemberService.timingCheckMemberCoupon(); + } +} diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/ICouponMemberService.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/ICouponMemberService.java index 42bad5a..f29c8ce 100644 --- a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/ICouponMemberService.java +++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/ICouponMemberService.java @@ -3,11 +3,10 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.promotion.controller.forepart.vo.CouponMemberVO; -import com.ruoyi.system.api.domain.dto.CouponMemberDTO; import com.ruoyi.system.api.domain.CouponMember; -import org.springframework.web.bind.annotation.RequestBody; - +import com.ruoyi.system.api.domain.dto.CouponMemberDTO; import java.util.List; +import org.springframework.web.bind.annotation.RequestBody; /** * <p> @@ -30,4 +29,5 @@ List<CouponMemberVO> updCouponMember1(@RequestBody CouponMemberDTO couponMemberDTO); + void timingCheckMemberCoupon(); } diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/async/AsyncMethodService.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/async/AsyncMethodService.java index 015ce65..872b1b0 100644 --- a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/async/AsyncMethodService.java +++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/async/AsyncMethodService.java @@ -33,14 +33,12 @@ Integer issuedQuantity = coupon.getIssuedQuantity(); List<CouponMember> memberCouponList = new ArrayList<>(); for (Long memberId : memberIdList) { - coupon.setId(null); - CouponMember couponMember = BeanUtils.copyBean(coupon, CouponMember.class); - couponMember.setMemberId(memberId); - couponMember.setCouponId(couponId); - memberCouponList.add(couponMember); - if (StringUtils.isNotNull(issuedQuantity) - && memberCouponList.size() >= issuedQuantity) { - break; + for (int i = 0; i < issuedQuantity; i++) { + coupon.setId(null); + CouponMember couponMember = BeanUtils.copyBean(coupon, CouponMember.class); + couponMember.setMemberId(memberId); + couponMember.setCouponId(couponId); + memberCouponList.add(couponMember); } } if (StringUtils.isNotEmpty(memberCouponList)) { diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/CouponMemberServiceImpl.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/CouponMemberServiceImpl.java index dffc79a..c6e15d4 100644 --- a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/CouponMemberServiceImpl.java +++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/CouponMemberServiceImpl.java @@ -13,19 +13,14 @@ import com.ruoyi.promotion.mapper.CouponMapper; import com.ruoyi.promotion.mapper.CouponMemberMapper; import com.ruoyi.promotion.service.ICouponMemberService; -import com.ruoyi.promotion.service.ICouponService; import com.ruoyi.system.api.domain.CouponMember; -import com.ruoyi.system.api.domain.GoodsSku; import com.ruoyi.system.api.domain.dto.CouponMemberDTO; - import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.stream.Collectors; - -import org.springframework.stereotype.Service; - import javax.annotation.Resource; +import org.springframework.stereotype.Service; /** * <p> @@ -142,4 +137,9 @@ } return couponMemberVOS; } + + @Override + public void timingCheckMemberCoupon() { + this.baseMapper.timingCheckMemberCoupon(); + } } diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/CouponServiceImpl.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/CouponServiceImpl.java index 0d01e8e..4e80ed1 100644 --- a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/CouponServiceImpl.java +++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/CouponServiceImpl.java @@ -187,6 +187,10 @@ public PageDTO<CouponReceiveDetailVO> getReceiveDetail(MgtCouponReceiveQuery query) { MemberDTO memberDTO = getMemberQueryParam(query); Set<Long> memberIdSet = getMemberIdSet(memberDTO); + if ((StringUtils.isNotBlank(query.getNickname()) || StringUtils.isNotBlank( + query.getPhone())) && CollUtils.isEmpty(memberIdSet)) { + return PageDTO.empty(0L, 0L); + } Page<CouponMember> page = couponMemberService.lambdaQuery() .eq(StringUtils.isNotNull(query.getCouponStatus()), CouponMember::getCouponStatus, query.getCouponStatus()) 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 8628a06..b379d3e 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 @@ -2,4 +2,11 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ruoyi.promotion.mapper.CouponMemberMapper"> + <update id="timingCheckMemberCoupon"> + UPDATE t_coupon_member + SET coupon_status = 2 + WHERE del_flag = 0 + AND coupon_status = 0 + AND end_date < CURDATE() + </update> </mapper> diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java index 67f2902..3f2e3a8 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java @@ -601,11 +601,9 @@ */ @Override public void saveSupplier(SupplierDTO dto) { - - SysUser user = BeanUtils.copyBean(dto, SysUser.class); - // 添加 if (StringUtils.isNull(dto.getUserId())) { + SysUser user = BeanUtils.copyBean(dto, SysUser.class); boolean b = checkPhoneUnique(user); if (!b) { throw new ServiceException("该手机号已存在"); @@ -618,25 +616,25 @@ this.save(user); } else { // 编辑 - user = this.getById(dto.getUserId()); - if (!user.getPhonenumber().equals(dto.getPhonenumber())) { - boolean b = checkPhoneUnique(user); + SysUser userUpd = this.getById(dto.getUserId()); + if (StringUtils.isNull(userUpd)) { + throw new ServiceException("供应商不存在"); + } + userUpd.setNickName(dto.getNickName()); + userUpd.setUpdateTime(new Date()); + userUpd.setUpdateBy(SecurityUtils.getUsername()); + if (StringUtils.isNotBlank(dto.getPassword())) { + userUpd.setPassword(SecurityUtils.encryptPassword(dto.getPassword())); + } + if (!userUpd.getPhonenumber().equals(dto.getPhonenumber())) { + userUpd.setPhonenumber(dto.getPhonenumber()); + userUpd.setUserName(dto.getPhonenumber()); + boolean b = checkPhoneUnique(userUpd); if (!b) { throw new ServiceException("该手机号已存在"); } } - if (StringUtils.isNull(user)) { - throw new ServiceException("供应商不存在"); - } - user.setNickName(dto.getNickName()); - user.setPhonenumber(dto.getPhonenumber()); - user.setUserName(dto.getPhonenumber()); - user.setUpdateTime(new Date()); - user.setUpdateBy(SecurityUtils.getUsername()); - if (StringUtils.isNotBlank(dto.getPassword())) { - user.setPassword(SecurityUtils.encryptPassword(dto.getPassword())); - } - this.updateById(user); + this.updateById(userUpd); } } diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml index 7471f7f..8eb9f50 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -130,6 +130,7 @@ from sys_user where phonenumber = #{phonenumber} and del_flag = '0' + and user_type in ('00', '04') limit 1 </select> -- Gitblit v1.7.1