Browse Source

调整优惠券计算逻辑

Eric 2 năm trước cách đây
mục cha
commit
d48200fcdc

+ 11 - 4
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/open/AdminClient.java

@@ -22,6 +22,7 @@ import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.enums.UserFirstTimeTypeEnum;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.collections.CollectionUtils;
 import org.joda.time.DateTime;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -116,11 +117,17 @@ public class AdminClient extends BaseController {
         request.setTimestamp(DateTime.now().getMillis());
         request.setAmount(orderAmount.doubleValue());
 
-        // 订单优惠券信息
-        CouponOrderWrapper wrapper = couponInfoService.queryUserOrderCouponInfo(request.getUserId(),
-                                                                                CouponInfoQuery.CouponOrderQuery.from(request.jsonString()));
         CouponInfoApi couponInfoApi = new CouponInfoApi();
-        couponInfoApi.setDiscountedPrices(BigDecimal.valueOf(wrapper.getDiscountedPrices()));
+        couponInfoApi.setDiscountedPrices(BigDecimal.ZERO);
+
+        if (CollectionUtils.isNotEmpty(collect)) {
+
+            // 订单优惠券信息
+            CouponOrderWrapper wrapper = couponInfoService.queryUserOrderCouponInfo(request.getUserId(),
+                    CouponInfoQuery.CouponOrderQuery.from(request.jsonString()));
+
+            couponInfoApi.setDiscountedPrices(BigDecimal.valueOf(wrapper.getDiscountedPrices()));
+        }
 
         return succeed(couponInfoApi);
     }

+ 1 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CouponInfoServiceImp.java

@@ -301,9 +301,7 @@ public class CouponInfoServiceImp extends ServiceImpl<CouponInfoMapper, CouponIn
 
         for (CouponOrderWrapper.CouponInfo item : couponInfos) {
 
-            if (amount >= item.getUseLimit()
-                    && CollectionUtils.isNotEmpty(query.getIssueIds())
-                    && query.getIssueIds().contains(item.getIssueId())) {
+            if (amount >= item.getUseLimit()) {
 
                 // 重置数据选中状态
                 item.setSelected(true);

+ 12 - 9
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderServiceImpl.java

@@ -368,15 +368,18 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
             }
 
             // 计算优惠券金额
-            couponOrderWrapper = couponInfoService.queryUserOrderCouponInfo(orderReq.getUserId(),
-                    CouponInfoQuery.CouponOrderQuery.builder()
-                            .clientType(orderReq.getOrderClient())
-                            .couponTypes(CouponCategoryEnum.getCategory(orderReq.getOrderType().getCode()))
-                            .useState(CouponUseStateEnum.USABLE)
-                            .timestamp(DateTime.now().getMillis())
-                            .amount(createRes.getExpectPrice().doubleValue())
-                            .build()
-                            .issueIds(orderReq.getCouponId()));
+            if (StringUtils.isNotEmpty(orderReq.getCouponId())) {
+
+                couponOrderWrapper = couponInfoService.queryUserOrderCouponInfo(orderReq.getUserId(),
+                        CouponInfoQuery.CouponOrderQuery.builder()
+                                .clientType(orderReq.getOrderClient())
+                                .couponTypes(CouponCategoryEnum.getCategory(orderReq.getOrderType().getCode()))
+                                .useState(CouponUseStateEnum.USABLE)
+                                .timestamp(DateTime.now().getMillis())
+                                .amount(createRes.getExpectPrice().doubleValue())
+                                .build()
+                                .issueIds(orderReq.getCouponId()));
+            }
 
             //log.info("executeOrder couponId={}, wrapper={}", orderReq.getCouponId(), couponOrderWrapper.jsonString());