Parcourir la source

Merge branch 'dev' of http://113.31.163.91:7777/quanshu/mp-server into dev

guanglong il y a 3 ans
Parent
commit
30a3cf376b

+ 1 - 0
mp-admin/src/main/java/com/qs/mp/web/controller/api/channel/ChannelWithdrawController.java

@@ -110,6 +110,7 @@ public class ChannelWithdrawController extends BaseApiController {
   }
     channelWithdraw.setUserName(param.getUserName());
     channelWithdraw.setCardNo(param.getCardNo());
+    channelWithdraw.setBankName(param.getBankName());
     channelWithdraw.setBranchName(param.getBranchName());
 
     // 缓存订单结算对象

+ 22 - 16
mp-admin/src/main/java/com/qs/mp/web/controller/api/user/UserTicketOrderController.java

@@ -15,6 +15,7 @@ import com.qs.mp.common.core.redis.RedisCache;
 import com.qs.mp.common.enums.BizTypeEnum;
 import com.qs.mp.common.enums.CouponUseAreaEnum;
 import com.qs.mp.common.enums.ErrorCodeEnum;
+import com.qs.mp.common.enums.TicketTypeEnum;
 import com.qs.mp.common.exception.ServiceException;
 import com.qs.mp.common.utils.LogUtil;
 import com.qs.mp.common.utils.StringUtils;
@@ -33,6 +34,7 @@ import com.qs.mp.utils.SecurityUtils;
 import com.qs.mp.web.controller.common.BaseApiController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import java.util.Iterator;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 import javax.validation.Valid;
@@ -111,21 +113,10 @@ public class UserTicketOrderController extends BaseApiController {
     }
 
     if (param.getAutoCoupon() == 1) {
-      // 系统自动选择优惠券,按照金额从大到小排序
-      List<UserCouponVO> userCouponList = userCouponService.listTicketOrderCoupon(userId);
-      for (UserCouponVO userCouponVO : userCouponList) {
-        if (orderAmt >= userCouponVO.getMinOrderAmt() && orderAmt >= userCouponVO.getDiscount()) {
-          if (userCouponVO.getUseArea() == CouponUseAreaEnum.PRE_SCOPE) {
-            // 使用范围验证
-            List<CouponTicket> couponTicketList = couponTicketService.list(new LambdaQueryWrapper<CouponTicket>()
-                .eq(CouponTicket::getCouponId, userCouponVO.getCouponId()).eq(CouponTicket::getBoxId, ticketBox.getBoxId()));
-            if (CollectionUtils.isEmpty(couponTicketList)) {
-              continue;
-            }
-          }
-          orderSettleVO.getCouponList().add(userCouponVO);
-          discountAmt = userCouponVO.getDiscount();
-        }
+      List<UserCouponVO> userCouponVOList = userCouponService.queryUserCouponList(userId, orderAmt, ticketBox);
+      if (!CollectionUtils.isEmpty(userCouponVOList)) {
+        orderSettleVO.getCouponList().add(userCouponVOList.get(0));
+        discountAmt = userCouponVOList.get(0).getDiscount();
       }
     } else if (!CollectionUtils.isEmpty(param.getUserCouponIds())){
       // 查询指定券
@@ -146,7 +137,6 @@ public class UserTicketOrderController extends BaseApiController {
     return AjaxResult.success(orderSettleVO);
   }
 
-
   /**
    * 提交订单
    */
@@ -205,4 +195,20 @@ public class UserTicketOrderController extends BaseApiController {
     return AjaxResult.success(jsonObject);
   }
 
+  /**
+   * 取消订单
+   */
+  @PostMapping("/order/coupon/list")
+  @ApiOperation(value = "取消订单" , notes = "在订单列表页面取消")
+  public AjaxResult cancel(@RequestBody TicketOrderParam param) {
+    Long userId = SecurityUtils.getUserId();
+    TicketOrderSettleVO orderSettleVO = redisCache.getCacheObject(RedisKey.build(RedisKey.USER_TICKET_ORDER_KEY, userId));
+    if (null == orderSettleVO) {
+      return AjaxResult.error("订单已过期,请重新下单");
+    }
+    TicketBox ticketBox = ticketBoxService.getById(orderSettleVO.getBoxId());
+    List<UserCouponVO> userCouponVOList = userCouponService.queryUserCouponList(userId, orderSettleVO.getOrderAmt(), ticketBox);
+    return AjaxResult.success(userCouponVOList);
+  }
+
 }

+ 3 - 1
mp-common/src/main/java/com/qs/mp/common/enums/CouponUseAreaEnum.java

@@ -15,7 +15,9 @@ public enum CouponUseAreaEnum implements IEnum<Integer> {
 
   COMMON(0, "通用"),
   PRE_SCOPE(1, "指定范围"), // 生成优惠券的时候设定使用范围
-  POST_SCOPE(2, "指定范围"); // 发放的时候动态设定使用范围
+  POST_SCOPE(2, "指定范围"), // 门店消费类优惠券,发放的时候动态设定使用范围
+  ONLINE_SCOPE(3, "线上盲票"), // 盲票购买类优惠券,仅限线上盲票
+  OFFLINE_SCOPE(4, "线下盲票"); // 盲票购买类优惠券,仅限线下盲票
 
 
   private final int value;

+ 10 - 7
mp-service/src/main/java/com/qs/mp/user/service/IUserCouponService.java

@@ -2,6 +2,7 @@ package com.qs.mp.user.service;
 
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.qs.mp.admin.domain.TicketBox;
 import com.qs.mp.common.enums.UserCouponStatusEnum;
 import com.qs.mp.user.domain.UserCoupon;
 import com.baomidou.mybatisplus.extension.service.IService;
@@ -19,13 +20,6 @@ import org.apache.ibatis.annotations.Param;
  */
 public interface IUserCouponService extends IService<UserCoupon> {
 
-  /**
-   * 查询用户当前可用于盲票购买的优惠券,按优惠大小排序
-   * @param userId
-   * @return
-   */
-  List<UserCouponVO> listTicketOrderCoupon(Long userId);
-
   /**
    * 根据用户优惠券ID列表查询
    * @param userCouponIds
@@ -46,4 +40,13 @@ public interface IUserCouponService extends IService<UserCoupon> {
    * @return
    */
   List<UserCouponVO> listUserCouponVO(Wrapper<UserCoupon> queryWrapper);
+
+  /**
+   * 查询盲票购买可用优惠券
+   * @param userId
+   * @param orderAmt
+   * @param ticketBox
+   * @return
+   */
+  List<UserCouponVO> queryUserCouponList(Long userId, Integer orderAmt, TicketBox ticketBox);
 }

+ 65 - 13
mp-service/src/main/java/com/qs/mp/user/service/impl/UserCouponServiceImpl.java

@@ -1,17 +1,26 @@
 package com.qs.mp.user.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qs.mp.admin.domain.CouponTicket;
+import com.qs.mp.admin.domain.TicketBox;
+import com.qs.mp.admin.service.ICouponTicketService;
 import com.qs.mp.common.enums.CouponTypeEnum;
+import com.qs.mp.common.enums.CouponUseAreaEnum;
+import com.qs.mp.common.enums.TicketTypeEnum;
 import com.qs.mp.common.enums.UserCouponStatusEnum;
 import com.qs.mp.common.utils.DateUtils;
 import com.qs.mp.user.domain.UserCoupon;
 import com.qs.mp.user.domain.vo.UserCouponVO;
 import com.qs.mp.user.mapper.UserCouponMapper;
 import com.qs.mp.user.service.IUserCouponService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import java.util.Iterator;
 import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 
 /**
  * <p>
@@ -22,22 +31,17 @@ import org.springframework.stereotype.Service;
  * @since 2022-03-07
  */
 @Service
-public class UserCouponServiceImpl extends ServiceImpl<UserCouponMapper, UserCoupon> implements IUserCouponService {
+public class UserCouponServiceImpl extends ServiceImpl<UserCouponMapper, UserCoupon> implements
+    IUserCouponService {
 
-  @Override
-  public List<UserCouponVO> listTicketOrderCoupon(Long userId) {
-    List<UserCouponVO> userCouponVOList = getBaseMapper().listUserCouponVO(new QueryWrapper<UserCoupon>()
-        .eq("t1.user_id", userId).eq("t2.type", CouponTypeEnum.TICKET_ORDER)
-        .eq("t1.status", UserCouponStatusEnum.UNUSED)
-        .le("t1.valid_start", DateUtils.getToday()).ge("t1.valid_end", DateUtils.getToday())
-        .orderByDesc("t2.discount"));
-    return userCouponVOList;
-  }
+  @Autowired
+  private ICouponTicketService couponTicketService;
 
   @Override
   public List<UserCouponVO> listTicketOrderCouponByIds(List<String> userCouponIds) {
-    List<UserCouponVO> userCouponVOList = getBaseMapper().listUserCouponVO(new QueryWrapper<UserCoupon>()
-        .in("t1.id", userCouponIds));
+    List<UserCouponVO> userCouponVOList = getBaseMapper().listUserCouponVO(
+        new QueryWrapper<UserCoupon>()
+            .in("t1.id", userCouponIds));
     return userCouponVOList;
   }
 
@@ -63,4 +67,52 @@ public class UserCouponServiceImpl extends ServiceImpl<UserCouponMapper, UserCou
   public List<UserCouponVO> listUserCouponVO(Wrapper<UserCoupon> queryWrapper) {
     return getBaseMapper().listUserCouponVO(queryWrapper);
   }
+
+  @Override
+  public List<UserCouponVO> queryUserCouponList(Long userId, Integer orderAmt,
+      TicketBox ticketBox) {
+    // 系统自动选择优惠券,按照金额从大到小排序
+    List<UserCouponVO> userCouponList = listTicketOrderCoupon(userId, orderAmt);
+    Iterator<UserCouponVO> iterator = userCouponList.iterator();
+    while (iterator.hasNext()) {
+      UserCouponVO userCouponVO = iterator.next();
+      // 校验使用范围
+      if (userCouponVO.getUseArea() == CouponUseAreaEnum.PRE_SCOPE) {
+        // 指定盲票
+        List<CouponTicket> couponTicketList = couponTicketService.list(
+            new LambdaQueryWrapper<CouponTicket>()
+                .eq(CouponTicket::getCouponId, userCouponVO.getCouponId())
+                .eq(CouponTicket::getBoxId, ticketBox.getBoxId()));
+        if (CollectionUtils.isEmpty(couponTicketList)) {
+          iterator.remove();
+          continue;
+        }
+      } else if (userCouponVO.getUseArea() == CouponUseAreaEnum.ONLINE_SCOPE) {
+        // 线上票
+        if (ticketBox.getType() != TicketTypeEnum.ONLINE) {
+          iterator.remove();
+          continue;
+        }
+      } else if (userCouponVO.getUseArea() == CouponUseAreaEnum.OFFLINE_SCOPE) {
+        // 线下票
+        if (ticketBox.getType() != TicketTypeEnum.OFFLINE) {
+          iterator.remove();
+          continue;
+        }
+      }
+    }
+    return userCouponList;
+  }
+
+  private List<UserCouponVO> listTicketOrderCoupon(Long userId, Integer orderAmt) {
+    List<UserCouponVO> userCouponVOList = getBaseMapper().listUserCouponVO(
+        new QueryWrapper<UserCoupon>()
+            .eq("t1.user_id", userId).eq("t2.type", CouponTypeEnum.TICKET_ORDER)
+            .eq("t1.status", UserCouponStatusEnum.UNUSED)
+            .le("t1.valid_start", DateUtils.getToday()).ge("t1.valid_end", DateUtils.getToday())
+            .le("t2.min_order_amt", orderAmt)
+            .le("t2.discount", orderAmt)
+            .orderByDesc("t2.discount"));
+    return userCouponVOList;
+  }
 }