licailing 4 лет назад
Родитель
Сommit
f758fbbf3f

+ 2 - 0
src/main/java/com/izouma/jiashanxia/domain/UserCoupon.java

@@ -24,6 +24,8 @@ public class UserCoupon extends BaseEntity {
 
     private Long couponId;
 
+    private Long orderInfoId;
+
     @ApiModelProperty(value = "是否已使用")
     private boolean isUse;
 

+ 4 - 0
src/main/java/com/izouma/jiashanxia/repo/UserCouponRepo.java

@@ -13,4 +13,8 @@ public interface UserCouponRepo extends JpaRepository<UserCoupon, Long>, JpaSpec
     @Modifying
     @Transactional
     void softDelete(Long id);
+
+    UserCoupon findByOrderInfoId(Long orderInfoId);
+
+    UserCoupon findByUserIdAndOrderInfoId(Long userId, Long orderInfoId);
 }

+ 1 - 1
src/main/java/com/izouma/jiashanxia/service/OrderInfoService.java

@@ -860,7 +860,7 @@ public class OrderInfoService {
         // 上级分销变 可提现
         commissionRecordService.canWithdraw(id);
         // 获得优惠券
-        userCouponService.autoGetCoupon(orderInfo.getPackageId(), orderInfo.getUserId());
+        userCouponService.autoGetCoupon(id, orderInfo.getPackageId(), orderInfo.getUserId());
         return orderInfo;
     }
 

+ 6 - 1
src/main/java/com/izouma/jiashanxia/service/UserCouponService.java

@@ -118,7 +118,11 @@ public class UserCouponService {
     /*
     自动获得优惠券
      */
-    public void autoGetCoupon(Long packageId, Long userId) {
+    public void autoGetCoupon(Long orderInfoId, Long packageId, Long userId) {
+        UserCoupon userCoupon = userCouponRepo.findByOrderInfoId(orderInfoId);
+        if (ObjectUtil.isNotNull(userCoupon)) {
+            throw new BusinessException("该订单已获得");
+        }
         Package aPackage = packageRepo.findById(packageId).orElseThrow(new BusinessException("无套餐"));
         if (CollUtil.isNotEmpty(aPackage.getCouponId())) {
             List<Coupon> coupons = couponRepo.findAllByIdInAndPeriodAfter(aPackage.getCouponId(), LocalDateTime
@@ -126,6 +130,7 @@ public class UserCouponService {
             if (CollUtil.isNotEmpty(coupons)) {
                 UserCoupon build = UserCoupon.builder()
                         .period(coupons.get(0).getPeriod())
+                        .orderInfoId(orderInfoId)
                         .couponId(coupons.get(0).getId())
                         .isUse(false)
                         .userId(userId)

+ 1 - 1
src/main/java/com/izouma/jiashanxia/service/UserPackageFlowService.java

@@ -204,7 +204,7 @@ public class UserPackageFlowService {
             // 上级分销变 可提现
             commissionRecordService.canWithdraw(orderInfoId);
             // 获得优惠券
-            userCouponService.autoGetCoupon(orderInfo.getPackageId(), userId);
+            userCouponService.autoGetCoupon(orderInfoId, orderInfo.getPackageId(), userId);
 
             return userPackageFlowRepo.save(
                     UserPackageFlow.builder()

+ 6 - 0
src/main/java/com/izouma/jiashanxia/web/UserCouponController.java

@@ -95,5 +95,11 @@ public class UserCouponController extends BaseController {
     public UserCoupon getCoupon(@RequestParam Long couponId) {
         return userCouponService.getCoupon(SecurityUtils.getAuthenticatedUser().getId(), couponId);
     }
+
+    @PostMapping("/byOrderInfoId")
+    @ApiOperation("获得的订单")
+    public UserCoupon byOrderId(Long orderInfoId) {
+        return userCouponRepo.findByOrderInfoId(orderInfoId);
+    }
 }
 

+ 5 - 0
src/test/java/com/izouma/jiashanxia/service/UserCouponServiceTest.java

@@ -31,4 +31,9 @@ public class UserCouponServiceTest extends ApplicationTests {
         query.put("attractionsId", 1124L);
         userCouponService.backAll(pageQuery);
     }
+
+    @Test
+    public void autoGetCoupon(){
+        userCouponService.autoGetCoupon(1640L,305L,916L);
+    }
 }