Sfoglia il codice sorgente

Merge branch 'dev' into 'mp-server-test'

Dev

See merge request quanshu/mp-server!812
zhong chunping 2 anni fa
parent
commit
cd8410244a

+ 283 - 277
mp-admin/src/main/java/com/qs/mp/web/controller/api/user/UserDeliverOrderController.java

@@ -65,306 +65,312 @@ import org.springframework.web.bind.annotation.RestController;
 @Api(tags = "用户端奖品提货接口")
 public class UserDeliverOrderController extends BaseApiController {
 
-  @Autowired
-  private IUserPrizeStorageService userPrizeStorageService;
-
-  @Autowired
-  private IUserAddrService userAddrService;
-
-  @Autowired
-  private IUserDeliverOrderService userDeliverOrderService;
-
-  @Autowired
-  private IUserDeliverOrderItemService userDeliverOrderItemService;
-
-  @Autowired
-  private IWalletService walletService;
-
-  @Autowired
-  private MapperFacade mapperFacade;
-
-  @Autowired
-  private ISysUserService sysUserService;
-
-  @Autowired
-  private RedisCache redisCache;
-
-  @Autowired
-  private IShippingTemplateRuleService shippingTemplateRuleService;
-
-  @Autowired
-  private IShippingTemplateService shippingTemplateService;
-
-  @Autowired
-  private IGoodsService goodsService;
-
-  @Autowired
-  private IGoodsSkuService goodsSkuService;
-
-  @Value("${shipping.user}")
-  public Long shippingTemplateId;
-
-  /**
-   * 订单列表
-   */
-  @PostMapping("/order/list")
-  @ApiOperation(value = "订单列表" , notes = "获取所有订单信息")
-  @ApiResponses(
-          @ApiResponse(code = 200, message = "success", response = DeliverOrderVO.class)
-  )
-  public TableDataInfo list(@RequestBody JSONObject param) {
-    Long userId = SecurityUtils.getLoginUser().getUserId();
-    String status = param.getString("status");
-    List<Integer> statusList = new ArrayList<>();
-    if (StringUtils.isNotBlank(status)) {
-      String[] arr = status.split(",");
-      for (int i = 0; i < arr.length; i++) {
-        statusList.add(Integer.valueOf(arr[i]));
-      }
-    }
-    startPage();
-    List<UserDeliverOrder> deliverOrders = userDeliverOrderService.list(
-        new LambdaQueryWrapper<UserDeliverOrder>().eq(UserDeliverOrder::getUserId, userId)
-            .in(!CollectionUtils.isEmpty(statusList), UserDeliverOrder::getStatus, statusList)
-            .orderByDesc(UserDeliverOrder::getCreatedTime));
-    List<DeliverOrderVO> deliverOrderVOList = mapperFacade.mapAsList(deliverOrders, DeliverOrderVO.class);
-    for (DeliverOrderVO deliverOrderVO : deliverOrderVOList) {
-      deliverOrderVO.setItems(userDeliverOrderItemService.selectUserDeliverOrderItemVOList(deliverOrderVO.getOrderId()));
-    }
-    TableDataInfo rspData = getDataTable(deliverOrders);
-    rspData.setRows(deliverOrderVOList);
-    return rspData;
-  }
-
-  /**
-   * 订单详情
-   */
-  @PostMapping("/order/detail")
-  @ApiOperation(value = "订单详情" , notes = "在订单列表页面查看详情")
-  public AjaxResult query(@RequestBody UserDeliverOrder order) {
-    Long userId = SecurityUtils.getLoginUser().getUserId();
-    UserDeliverOrder deliverOrder = userDeliverOrderService.getOne(new LambdaQueryWrapper<UserDeliverOrder>()
-        .eq(UserDeliverOrder::getOrderId, order.getOrderId()).eq(UserDeliverOrder::getUserId, userId));
-    DeliverOrderVO deliverOrderVO = mapperFacade.map(deliverOrder, DeliverOrderVO.class);
-
-    // 设置自动确认收货时间
-    if (deliverOrder != null && !Objects.isNull(deliverOrder.getDeliveryTime())) {
-      Date deliveryTime = deliverOrder.getDeliveryTime();
-      LocalDateTime autoConfirmTime = LocalDateTimeUtil.of(deliveryTime).plusDays(15);
-      Duration between = LocalDateTimeUtil.between(LocalDateTime.now(), autoConfirmTime);
-      long hours = between.toHours();
-      long day = hours / 24;
-      long hour = hours % 24;
-      deliverOrderVO.setAutoConfirmTime(day + "天" + hour + "小时");
+    @Autowired
+    private IUserPrizeStorageService userPrizeStorageService;
+
+    @Autowired
+    private IUserAddrService userAddrService;
+
+    @Autowired
+    private IUserDeliverOrderService userDeliverOrderService;
+
+    @Autowired
+    private IUserDeliverOrderItemService userDeliverOrderItemService;
+
+    @Autowired
+    private IWalletService walletService;
+
+    @Autowired
+    private MapperFacade mapperFacade;
+
+    @Autowired
+    private ISysUserService sysUserService;
+
+    @Autowired
+    private RedisCache redisCache;
+
+    @Autowired
+    private IShippingTemplateRuleService shippingTemplateRuleService;
+
+    @Autowired
+    private IShippingTemplateService shippingTemplateService;
+
+    @Autowired
+    private IGoodsService goodsService;
+
+    @Autowired
+    private IGoodsSkuService goodsSkuService;
+
+    @Value("${shipping.user}")
+    public Long shippingTemplateId;
+
+    /**
+     * 订单列表
+     */
+    @PostMapping("/order/list")
+    @ApiOperation(value = "订单列表", notes = "获取所有订单信息")
+    @ApiResponses(
+        @ApiResponse(code = 200, message = "success", response = DeliverOrderVO.class)
+    )
+    public TableDataInfo list(@RequestBody JSONObject param) {
+        Long userId = SecurityUtils.getLoginUser().getUserId();
+        String status = param.getString("status");
+        List<Integer> statusList = new ArrayList<>();
+        if (StringUtils.isNotBlank(status)) {
+            String[] arr = status.split(",");
+            for (int i = 0; i < arr.length; i++) {
+                statusList.add(Integer.valueOf(arr[i]));
+            }
+        }
+        startPage();
+        List<UserDeliverOrder> deliverOrders = userDeliverOrderService.list(
+            new LambdaQueryWrapper<UserDeliverOrder>().eq(UserDeliverOrder::getUserId, userId)
+                .in(!CollectionUtils.isEmpty(statusList), UserDeliverOrder::getStatus, statusList)
+                .orderByDesc(UserDeliverOrder::getCreatedTime));
+        List<DeliverOrderVO> deliverOrderVOList = mapperFacade.mapAsList(deliverOrders, DeliverOrderVO.class);
+        for (DeliverOrderVO deliverOrderVO : deliverOrderVOList) {
+            deliverOrderVO.setItems(
+                userDeliverOrderItemService.selectUserDeliverOrderItemVOList(deliverOrderVO.getOrderId()));
+        }
+        TableDataInfo rspData = getDataTable(deliverOrders);
+        rspData.setRows(deliverOrderVOList);
+        return rspData;
     }
 
-    deliverOrderVO.setItems(userDeliverOrderItemService.selectUserDeliverOrderItemVOList(deliverOrder.getOrderId()));
-    deliverOrderVO.setDeliverList(userDeliverOrderItemService.getDeliverItemList(order.getOrderId(), deliverOrderVO.getItems()));
-    return AjaxResult.success(deliverOrderVO);
-  }
-
-  /**
-   * 订单结算,每次更换地址时需重新请求此接口
-   */
-  @PostMapping("/order/settle")
-  @ApiOperation(value = "订单结算" , notes = "奖品库里点提货")
-  @ApiResponses(
-          @ApiResponse(code = 200, message = "success", response = DeliverOrderSettleVO.class)
-  )
-  public AjaxResult settle(@Valid @RequestBody DeliverOrderParam param) {
-    Long userId = SecurityUtils.getLoginUser().getUserId();
-
-    DeliverOrderSettleVO orderSettleVO = new DeliverOrderSettleVO();
-
-    // 收货地址,如果用户选了地址,则此处不做处理
-    if (null == param.getAddrId() || 0 == param.getAddrId()) {
-      //读取默认地址
-      UserAddr addr = userAddrService.getDefaultChannelAddr(userId);
-      if (null != addr) {
-        orderSettleVO.setAddr(addr);
-      }
-    }
+    /**
+     * 订单详情
+     */
+    @PostMapping("/order/detail")
+    @ApiOperation(value = "订单详情", notes = "在订单列表页面查看详情")
+    public AjaxResult query(@RequestBody UserDeliverOrder order) {
+        Long userId = SecurityUtils.getLoginUser().getUserId();
+        UserDeliverOrder deliverOrder = userDeliverOrderService.getOne(new LambdaQueryWrapper<UserDeliverOrder>()
+            .eq(UserDeliverOrder::getOrderId, order.getOrderId()).eq(UserDeliverOrder::getUserId, userId));
+        DeliverOrderVO deliverOrderVO = mapperFacade.map(deliverOrder, DeliverOrderVO.class);
+
+        // 设置自动确认收货时间
+        if (deliverOrder != null && !Objects.isNull(deliverOrder.getDeliveryTime())) {
+            Date deliveryTime = deliverOrder.getDeliveryTime();
+            LocalDateTime autoConfirmTime = LocalDateTimeUtil.of(deliveryTime).plusDays(15);
+            Duration between = LocalDateTimeUtil.between(LocalDateTime.now(), autoConfirmTime);
+            long hours = between.toHours();
+            long day = hours / 24;
+            long hour = hours % 24;
+            deliverOrderVO.setAutoConfirmTime(day + "天" + hour + "小时");
+        }
 
-    // 订单金额计算
-    Integer orderAmt = 0;
-    Integer freightAmt = 0;
-
-
-    // 商品数量
-    int goodsNum = 0;
-    List<UserPrizeStorage> prizeStorageList = new ArrayList<>();
-    if (DeliverOrderResourceEnum.PAYMENT.equals(param.getResource())) {
-      // 现金支付,设置金额信息
-      if (Objects.isNull(param.getGoodsId()) || Objects.isNull(param.getNum())) {
-        return AjaxResult.error("商品信息不能为空");
-      }
-      goodsNum = param.getNum();
-      // 获取商品信息
-      Goods goods = goodsService.getById(param.getGoodsId());
-      GoodsSku goodsSku = goodsSkuService.getById(param.getSkuId());
-      if (Objects.isNull(goods)) {
-        return AjaxResult.error("商品不存在");
-      }
-      // 封装商品信息出参
-      UserPrizeStorage prizeStorage = new UserPrizeStorage();
-      prizeStorage.setGoodsId(goods.getGoodsId());
-      prizeStorage.setPicUrl(goods.getPicUrl());
-      prizeStorage.setTitle(goods.getTitle());
-      prizeStorage.setGoodsNum(goodsNum);
-      if (Objects.nonNull(goodsSku)) {
-        prizeStorage.setPicUrl(goodsSku.getPicUrl());
-        prizeStorage.setSkuId(goodsSku.getSkuId());
-        prizeStorage.setProperties(goodsSku.getProperties());
-
-        orderAmt = goodsNum * goodsSku.getValue();
-      }else {
-        orderAmt = goodsNum * goods.getValue();
-
-      }
-
-      prizeStorageList.add(prizeStorage);
-      orderSettleVO.setResource(DeliverOrderResourceEnum.PAYMENT.getValue());
-    }else {
-      prizeStorageList = userPrizeStorageService.list(new LambdaQueryWrapper<UserPrizeStorage>()
-              .eq(UserPrizeStorage::getUserId, userId).eq(UserPrizeStorage::getStatus, PrizeStorageStatusEnum.NOT_DISTRIBUTED)
-              .in(UserPrizeStorage::getStorageId, param.getIds()));
-      goodsNum = prizeStorageList.stream().mapToInt(UserPrizeStorage::getGoodsNum).sum();
-      orderSettleVO.setResource(DeliverOrderResourceEnum.DELIVER.getValue());
+        deliverOrderVO.setItems(
+            userDeliverOrderItemService.selectUserDeliverOrderItemVOList(deliverOrder.getOrderId()));
+        deliverOrderVO.setDeliverList(
+            userDeliverOrderItemService.getDeliverItemList(order.getOrderId(), deliverOrderVO.getItems()));
+        return AjaxResult.success(deliverOrderVO);
     }
 
+    /**
+     * 订单结算,每次更换地址时需重新请求此接口
+     */
+    @PostMapping("/order/settle")
+    @ApiOperation(value = "订单结算", notes = "奖品库里点提货")
+    @ApiResponses(
+        @ApiResponse(code = 200, message = "success", response = DeliverOrderSettleVO.class)
+    )
+    public AjaxResult settle(@Valid @RequestBody DeliverOrderParam param) {
+        Long userId = SecurityUtils.getLoginUser().getUserId();
+
+        DeliverOrderSettleVO orderSettleVO = new DeliverOrderSettleVO();
+
+        // 收货地址,如果用户选了地址,则此处不做处理
+        if (null == param.getAddrId() || 0 == param.getAddrId()) {
+            //读取默认地址
+            UserAddr addr = userAddrService.getDefaultChannelAddr(userId);
+            if (null != addr) {
+                orderSettleVO.setAddr(addr);
+            }
+        }
 
-    // 计算运费
-    UserAddr userAddr = orderSettleVO.getAddr();
-    if (Objects.nonNull(userAddr)) {
-      // TODO: 4L上线需要调整,后期放开就是取的商品里配的运费模板id
-      ShippingTemplateCalculateVO shippingTemplateCalculateVO = shippingTemplateRuleService.getShippingTemplateRuleByTemplateIdAndAreaInfo(shippingTemplateId, userAddr.getProvinceId(), userAddr.getCityId());
-      // 无法查到运费模板则默认为0
-      if (Objects.nonNull(shippingTemplateCalculateVO)) {
+        // 订单金额计算
+        Integer orderAmt = 0;
+        Integer freightAmt = 0;
+
+        // 商品数量
+        int goodsNum = 0;
+        List<UserPrizeStorage> prizeStorageList = new ArrayList<>();
+        if (DeliverOrderResourceEnum.PAYMENT.equals(param.getResource())) {
+            // 现金支付,设置金额信息
+            if (Objects.isNull(param.getGoodsId()) || Objects.isNull(param.getNum())) {
+                return AjaxResult.error("商品信息不能为空");
+            }
+            goodsNum = param.getNum();
+            // 获取商品信息
+            Goods goods = goodsService.getById(param.getGoodsId());
+            GoodsSku goodsSku = goodsSkuService.getById(param.getSkuId());
+            if (Objects.isNull(goods)) {
+                return AjaxResult.error("商品不存在");
+            }
+            // 封装商品信息出参
+            UserPrizeStorage prizeStorage = new UserPrizeStorage();
+            prizeStorage.setGoodsId(goods.getGoodsId());
+            prizeStorage.setPicUrl(goods.getPicUrl());
+            prizeStorage.setTitle(goods.getTitle());
+            prizeStorage.setGoodsNum(goodsNum);
+            if (Objects.nonNull(goodsSku)) {
+                prizeStorage.setPicUrl(goodsSku.getPicUrl());
+                prizeStorage.setSkuId(goodsSku.getSkuId());
+                prizeStorage.setProperties(goodsSku.getProperties());
+
+                orderAmt = goodsNum * goodsSku.getValue();
+            } else {
+                orderAmt = goodsNum * goods.getValue();
+
+            }
+
+            prizeStorageList.add(prizeStorage);
+            orderSettleVO.setResource(DeliverOrderResourceEnum.PAYMENT.getValue());
+        } else {
+            prizeStorageList = userPrizeStorageService.list(new LambdaQueryWrapper<UserPrizeStorage>()
+                .eq(UserPrizeStorage::getUserId, userId)
+                .eq(UserPrizeStorage::getStatus, PrizeStorageStatusEnum.NOT_DISTRIBUTED)
+                .in(UserPrizeStorage::getStorageId, param.getIds()));
+            goodsNum = prizeStorageList.stream().mapToInt(UserPrizeStorage::getGoodsNum).sum();
+            orderSettleVO.setResource(DeliverOrderResourceEnum.DELIVER.getValue());
+        }
 
-        orderSettleVO.setFreightRemark(shippingTemplateCalculateVO.getRemark());
-        orderSettleVO.setFreightType(shippingTemplateCalculateVO.getType());
+        // 计算运费
+        UserAddr userAddr = orderSettleVO.getAddr();
+        if (Objects.nonNull(userAddr)) {
+            // TODO: 4L上线需要调整,后期放开就是取的商品里配的运费模板id
+            ShippingTemplateCalculateVO shippingTemplateCalculateVO = shippingTemplateRuleService.getShippingTemplateRuleByTemplateIdAndAreaInfo(
+                shippingTemplateId, userAddr.getProvinceId(), userAddr.getCityId());
+            // 无法查到运费模板则默认为0
+            if (Objects.nonNull(shippingTemplateCalculateVO)) {
 
-        if (ShippingTemplateRuleTypeEnum.SHIP.getValue().equals(shippingTemplateCalculateVO.getType())) {
-          // 计算运费
-          freightAmt = shippingTemplateService.calculateFreightAmt(goodsNum,shippingTemplateCalculateVO);
-        }
+                orderSettleVO.setFreightRemark(shippingTemplateCalculateVO.getRemark());
+                orderSettleVO.setFreightType(shippingTemplateCalculateVO.getType());
 
-      }
-    }
+                if (ShippingTemplateRuleTypeEnum.SHIP.getValue().equals(shippingTemplateCalculateVO.getType())) {
+                    // 计算运费
+                    freightAmt = shippingTemplateService.calculateFreightAmt(goodsNum, shippingTemplateCalculateVO);
+                }
 
+            }
+        }
 
-    orderSettleVO.setOrderAmt(orderAmt);
-    orderSettleVO.setFreightAmt(freightAmt);
-    orderSettleVO.setPayAmt(orderAmt + freightAmt);
-    orderSettleVO.setPrizeList(prizeStorageList);
-
-    // 缓存订单结算对象
-    redisCache.setCacheObject(RedisKey.build(RedisKey.USER_DELIVER_ORDER_KEY, userId), orderSettleVO, 10, TimeUnit.MINUTES);
-    return AjaxResult.success(orderSettleVO);
-  }
-
-  /**
-   * 提交订单
-   */
-  @PostMapping("/order/submit")
-  @ApiOperation(value = "提交订单" , notes = "在订单确认页面提交")
-  public AjaxResult submit(@RequestBody UserDeliverOrder order) {
-    Long userId = SecurityUtils.getLoginUser().getUserId();
-    DeliverOrderSettleVO orderSettleVO = redisCache.getCacheObject(RedisKey.build(RedisKey.USER_DELIVER_ORDER_KEY, userId));
-    if (null == orderSettleVO) {
-      return AjaxResult.error("订单已过期,请重新下单");
-    }
-    if (null == orderSettleVO.getAddr()) {
-      return AjaxResult.error("请填写收货地址");
-    }
-    String orderId = userDeliverOrderService.submitOrder(userId,order.getMemo(), orderSettleVO);
-    JSONObject jsonObject = new JSONObject();
-    jsonObject.put("orderId", orderId);
-    if (orderSettleVO.getPayAmt() > 0) {
-      jsonObject.put("needPay", 1);
-    } else {
-      jsonObject.put("needPay", 0);
+        orderSettleVO.setOrderAmt(orderAmt);
+        orderSettleVO.setFreightAmt(freightAmt);
+        orderSettleVO.setPayAmt(orderAmt + freightAmt);
+        orderSettleVO.setPrizeList(prizeStorageList);
+
+        // 缓存订单结算对象
+        redisCache.setCacheObject(RedisKey.build(RedisKey.USER_DELIVER_ORDER_KEY, userId), orderSettleVO, 10,
+            TimeUnit.MINUTES);
+        return AjaxResult.success(orderSettleVO);
     }
-    // 清除缓存的订单
-    redisCache.deleteObject(RedisKey.build(RedisKey.USER_DELIVER_ORDER_KEY, userId));
+
+    /**
+     * 提交订单
+     */
+    @PostMapping("/order/submit")
+    @ApiOperation(value = "提交订单", notes = "在订单确认页面提交")
+    public AjaxResult submit(@RequestBody UserDeliverOrder order) {
+        Long userId = SecurityUtils.getLoginUser().getUserId();
+        DeliverOrderSettleVO orderSettleVO = redisCache.getCacheObject(
+            RedisKey.build(RedisKey.USER_DELIVER_ORDER_KEY, userId));
+        if (null == orderSettleVO) {
+            return AjaxResult.error("订单已过期,请重新下单");
+        }
+        if (null == orderSettleVO.getAddr()) {
+            return AjaxResult.error("请填写收货地址");
+        }
+        String orderId = userDeliverOrderService.submitOrder(userId, order.getMemo(), orderSettleVO);
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("orderId", orderId);
+        if (orderSettleVO.getPayAmt() > 0) {
+            jsonObject.put("needPay", 1);
+        } else {
+            jsonObject.put("needPay", 0);
+        }
+        // 清除缓存的订单
+        redisCache.deleteObject(RedisKey.build(RedisKey.USER_DELIVER_ORDER_KEY, userId));
 
     /*if (orderSettleVO.getPayAmt() > 0) {
       return AjaxResult.error("支付系统升级中,请稍后再试");
     }*/
 
-    return AjaxResult.success(jsonObject);
-  }
-
-
-  /**
-   * 取消订单
-   */
-  @PostMapping("/order/cancel")
-  @ApiOperation(value = "取消订单" , notes = "在订单列表页面取消")
-  public AjaxResult cancel(@RequestBody UserDeliverOrderCancelParam param) {
-    userDeliverOrderService.cancelOrder(param.getOrderId());
-    return AjaxResult.success("取消成功");
-  }
-
-  /**
-   * 订单支付
-   */
-  @PostMapping("/order/pay")
-  @ApiOperation(value = "订单支付" , notes = "订单支付")
-  public AjaxResult pay(@Valid @RequestBody OrderPayParam param) {
-    Long userId = SecurityUtils.getLoginUser().getUserId();
-    SysUser sysUser = sysUserService.selectUserById(userId);
-    if (param.getPayType() == 1) {
-      if (StringUtils.isBlank(sysUser.getAliuserId())) {
-        return AjaxResult.error(ErrorCodeEnum.ERROR_CODE_1026);
-      }
-    } else {
-      if (StringUtils.isBlank(sysUser.getOpenId())) {
-        return AjaxResult.error(ErrorCodeEnum.ERROR_CODE_1005);
-      }
-    }
-    UserDeliverOrder deliverOrder = userDeliverOrderService.getById(param.getOrderId());
-    JSONObject jsonObject;
-    try {
-      if (param.getPayType() == 1) {
-        // 支付宝支付
-        jsonObject = walletService.aliPay(BizTypeEnum.TICKET_ORDER, param.getOrderId(), sysUser.getAliuserId(), deliverOrder.getPayAmt(), "盲票--提货订单");
-      } else {
-        // 微信支付
-        jsonObject = walletService.pay(BizTypeEnum.TICKET_ORDER, param.getOrderId(), sysUser.getOpenId(), deliverOrder.getPayAmt(), "盲票--提货订单");
-      }
-    }catch (ServiceException e) {
-      LogUtil.error(logger, e, "根据提货单创建支付单失败。userId:{0},orderId:{1}", new Object[]{userId, param.getOrderId()});
-      return AjaxResult.error(e.getMessage());
-    }
-    return AjaxResult.success(jsonObject);
-  }
-
-  @PostMapping("/order/confirm")
-  @ApiOperation("订单确认收货")
-  public AjaxResult confirm(@RequestBody UserDeliverOrder order){
-    Long userId = SecurityUtils.getLoginUser().getUserId();
-    UserDeliverOrder userDeliverOrder = userDeliverOrderService.getById(order.getOrderId());
-    if (Objects.isNull(userDeliverOrder)) {
-      return AjaxResult.error("订单不存在");
+        return AjaxResult.success(jsonObject);
     }
 
-    if (!DeliverOrderStatusEnum.NOT_CONFIRM.equals(userDeliverOrder.getStatus())) {
-      return AjaxResult.error("订单状态不为待收货");
+
+    /**
+     * 取消订单
+     */
+    @PostMapping("/order/cancel")
+    @ApiOperation(value = "取消订单", notes = "在订单列表页面取消")
+    public AjaxResult cancel(@RequestBody UserDeliverOrderCancelParam param) {
+        userDeliverOrderService.cancelOrder(param.getOrderId());
+        return AjaxResult.success("取消成功");
     }
 
-    if (!userId.equals(userDeliverOrder.getUserId())) {
-      return AjaxResult.error("非法操作他人订单");
+    /**
+     * 订单支付
+     */
+    @PostMapping("/order/pay")
+    @ApiOperation(value = "订单支付", notes = "订单支付")
+    public AjaxResult pay(@Valid @RequestBody OrderPayParam param) {
+        Long userId = SecurityUtils.getLoginUser().getUserId();
+        SysUser sysUser = sysUserService.selectUserById(userId);
+        if (param.getPayType() == 1) {
+            if (StringUtils.isBlank(sysUser.getAliuserId())) {
+                return AjaxResult.error(ErrorCodeEnum.ERROR_CODE_1026);
+            }
+        } else {
+            if (StringUtils.isBlank(sysUser.getOpenId())) {
+                return AjaxResult.error(ErrorCodeEnum.ERROR_CODE_1005);
+            }
+        }
+        UserDeliverOrder deliverOrder = userDeliverOrderService.getById(param.getOrderId());
+        JSONObject jsonObject;
+        try {
+            if (param.getPayType() == 1) {
+                // 支付宝支付
+                jsonObject = walletService.aliPay(BizTypeEnum.TICKET_ORDER, param.getOrderId(), sysUser.getAliuserId(),
+                    deliverOrder.getPayAmt(), "盲票--提货订单");
+            } else {
+                // 微信支付
+                jsonObject = walletService.pay(BizTypeEnum.TICKET_ORDER, param.getOrderId(), sysUser.getOpenId(),
+                    deliverOrder.getPayAmt(), "盲票--提货订单");
+            }
+        } catch (ServiceException e) {
+            LogUtil.error(logger, e, "根据提货单创建支付单失败。userId:{0},orderId:{1}", new Object[]{userId, param.getOrderId()});
+            return AjaxResult.error(e.getMessage());
+        }
+        return AjaxResult.success(jsonObject);
     }
 
-    // 更新用户提货订单状态为已完成,并且设置收货时间
-    UserDeliverOrder param = new UserDeliverOrder();
-    param.setOrderId(order.getOrderId());
-    param.setStatus(DeliverOrderStatusEnum.FINISHED);
-    param.setConfirmTime(new Date());
-    userDeliverOrderService.updateById(param);
+    @PostMapping("/order/confirm")
+    @ApiOperation("订单确认收货")
+    public AjaxResult confirm(@RequestBody UserDeliverOrder order) {
+        Long userId = SecurityUtils.getLoginUser().getUserId();
+        UserDeliverOrder userDeliverOrder = userDeliverOrderService.getById(order.getOrderId());
+        if (Objects.isNull(userDeliverOrder)) {
+            return AjaxResult.error("订单不存在");
+        }
+
+        if (!DeliverOrderStatusEnum.NOT_CONFIRM.equals(userDeliverOrder.getStatus())) {
+            return AjaxResult.error("订单状态不为待收货");
+        }
 
-    return AjaxResult.success();
-  }
+        if (!userId.equals(userDeliverOrder.getUserId())) {
+            return AjaxResult.error("非法操作他人订单");
+        }
+
+        // 更新用户提货订单状态为已完成,并且设置收货时间
+        UserDeliverOrder param = new UserDeliverOrder();
+        param.setOrderId(order.getOrderId());
+        param.setStatus(DeliverOrderStatusEnum.FINISHED);
+        param.setConfirmTime(new Date());
+        userDeliverOrderService.updateById(param);
+
+        return AjaxResult.success();
+    }
 
 }

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

@@ -106,7 +106,6 @@ public class UserTicketOrderController extends BaseApiController {
 
         TicketOrderSettleVO orderSettleVO = new TicketOrderSettleVO();
 
-
         // 订单金额计算
         Integer orderAmt = 0;
         Integer discountAmt = 0;
@@ -137,7 +136,8 @@ public class UserTicketOrderController extends BaseApiController {
             }
         } else if (!CollectionUtils.isEmpty(param.getUserCouponIds())) {
             // 查询指定券
-            List<UserCouponVO> userCouponVOList = userCouponService.listTicketOrderCouponByIds(param.getUserCouponIds());
+            List<UserCouponVO> userCouponVOList = userCouponService.listTicketOrderCouponByIds(
+                param.getUserCouponIds());
             if (!CollectionUtils.isEmpty(userCouponVOList)) {
                 // 只考虑使用单张券
                 orderSettleVO.getCouponList().add(mapperFacade.map(userCouponVOList.get(0), UserCoupon4OrderVO.class));
@@ -156,7 +156,8 @@ public class UserTicketOrderController extends BaseApiController {
         orderSettleVO.setTitle(ticketBox.getTitle());
 
         // 缓存订单结算对象
-        redisCache.setCacheObject(RedisKey.build(RedisKey.USER_TICKET_ORDER_KEY, userId), orderSettleVO, 10, TimeUnit.MINUTES);
+        redisCache.setCacheObject(RedisKey.build(RedisKey.USER_TICKET_ORDER_KEY, userId), orderSettleVO, 10,
+            TimeUnit.MINUTES);
         return AjaxResult.success(orderSettleVO);
     }
 
@@ -167,7 +168,8 @@ public class UserTicketOrderController extends BaseApiController {
     @ApiOperation(value = "提交订单", notes = "在订单确认页面提交")
     public AjaxResult submit(@RequestBody UserShareVO userShareVO) {
         Long userId = SecurityUtils.getLoginUser().getUserId();
-        TicketOrderSettleVO orderSettleVO = redisCache.getCacheObject(RedisKey.build(RedisKey.USER_TICKET_ORDER_KEY, userId));
+        TicketOrderSettleVO orderSettleVO = redisCache.getCacheObject(
+            RedisKey.build(RedisKey.USER_TICKET_ORDER_KEY, userId));
         if (null == orderSettleVO) {
             return AjaxResult.error("订单已过期,请重新下单");
         }
@@ -223,13 +225,16 @@ public class UserTicketOrderController extends BaseApiController {
         try {
             if (param.getPayType() == 1) {
                 // 支付宝支付
-                jsonObject = walletService.aliPay(BizTypeEnum.TICKET_ORDER, param.getOrderId(), sysUser.getAliuserId(), ticketOrder.getPayAmt(), ticketOrder.getTitle());
+                jsonObject = walletService.aliPay(BizTypeEnum.TICKET_ORDER, param.getOrderId(), sysUser.getAliuserId(),
+                    ticketOrder.getPayAmt(), ticketOrder.getTitle());
             } else {
                 // 微信支付
-                jsonObject = walletService.pay(BizTypeEnum.TICKET_ORDER, param.getOrderId(), sysUser.getOpenId(), ticketOrder.getPayAmt(), ticketOrder.getTitle());
+                jsonObject = walletService.pay(BizTypeEnum.TICKET_ORDER, param.getOrderId(), sysUser.getOpenId(),
+                    ticketOrder.getPayAmt(), ticketOrder.getTitle());
             }
         } catch (ServiceException e) {
-            LogUtil.error(logger, e, "根据盲票购买订单创建支付单失败。userId:{0},orderId:{1}", new Object[]{userId, param.getOrderId()});
+            LogUtil.error(logger, e, "根据盲票购买订单创建支付单失败。userId:{0},orderId:{1}",
+                new Object[]{userId, param.getOrderId()});
             return AjaxResult.error(e.getMessage());
         }
         return AjaxResult.success(jsonObject);
@@ -241,16 +246,18 @@ public class UserTicketOrderController extends BaseApiController {
     @PostMapping("/order/coupon/list")
     @ApiOperation(value = "查询可用优惠券", notes = "在下单页面选择")
     @ApiResponses(
-            @ApiResponse(code = 200, message = "成功", response = UserCouponVO.class)
+        @ApiResponse(code = 200, message = "成功", response = UserCouponVO.class)
     )
     public AjaxResult listCoupon(@RequestBody TicketOrderParam param) {
         Long userId = SecurityUtils.getUserId();
-        TicketOrderSettleVO orderSettleVO = redisCache.getCacheObject(RedisKey.build(RedisKey.USER_TICKET_ORDER_KEY, userId));
+        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);
+        List<UserCouponVO> userCouponVOList = userCouponService.queryUserCouponList(userId, orderSettleVO.getOrderAmt(),
+            ticketBox);
 
         // 设置选中状态
         for (UserCouponVO userCouponVO : userCouponVOList) {
@@ -270,17 +277,19 @@ public class UserTicketOrderController extends BaseApiController {
     @PostMapping("/order/coupon/listPage")
     @ApiOperation(value = "查询可用优惠券,分页", notes = "在下单页面选择")
     @ApiResponses(
-            @ApiResponse(code = 200, message = "成功", response = UserCouponVO.class)
+        @ApiResponse(code = 200, message = "成功", response = UserCouponVO.class)
     )
     public TableDataInfo listPageCoupon(@RequestBody TicketOrderParam param) {
         Long userId = SecurityUtils.getUserId();
-        TicketOrderSettleVO orderSettleVO = redisCache.getCacheObject(RedisKey.build(RedisKey.USER_TICKET_ORDER_KEY, userId));
+        TicketOrderSettleVO orderSettleVO = redisCache.getCacheObject(
+            RedisKey.build(RedisKey.USER_TICKET_ORDER_KEY, userId));
         if (null == orderSettleVO) {
             return getErrorDataTable("订单已过期,请重新下单");
         }
         TicketBox ticketBox = ticketBoxService.getById(orderSettleVO.getBoxId());
         startPage();
-        List<UserCouponVO> userCouponVOList = userCouponService.queryUserCouponList(userId, orderSettleVO.getOrderAmt(), ticketBox);
+        List<UserCouponVO> userCouponVOList = userCouponService.queryUserCouponList(userId, orderSettleVO.getOrderAmt(),
+            ticketBox);
 
         // 设置选中状态
         for (UserCouponVO userCouponVO : userCouponVOList) {
@@ -293,7 +302,8 @@ public class UserTicketOrderController extends BaseApiController {
                 }
             }
         }
-        List<UserCouponVO> countUserCouponVOList = userCouponService.queryUserCouponList(userId, orderSettleVO.getOrderAmt(), ticketBox);
+        List<UserCouponVO> countUserCouponVOList = userCouponService.queryUserCouponList(userId,
+            orderSettleVO.getOrderAmt(), ticketBox);
         TableDataInfo dataTable = getDataTable(userCouponVOList);
         dataTable.setTotal(countUserCouponVOList.size());
         return dataTable;

+ 19 - 16
mp-service/src/main/java/com/qs/mp/admin/mapper/TicketMapper.java

@@ -16,21 +16,24 @@ import org.apache.ibatis.annotations.Param;
  * @describe 盲票mapper类
  */
 public interface TicketMapper extends BaseMapper<Ticket> {
-  Ticket getRandOne(@Param("boxId") String boxId, @Param("status") int status);
 
-  List<Ticket> listTicket(@Param(Constants.WRAPPER) Wrapper<Ticket> queryWrapper);
-  
-  /**
-   * 统计经销商盲票销量,库存
-   * @param channelId
-   * @return
-   */
-  int getTicketQtyCnt(@Param("channelId") Long channelId);
-  
-  /**
-   * 查询统计数据
-   * @param queryWrapper
-   * @return
-   */
-  List<TicketCntVO> listTicketQtyCnt(@Param(Constants.WRAPPER) Wrapper<ChannelOrderDetail> queryWrapper);
+    Ticket getRandOne(@Param("boxId") String boxId, @Param("status") int status);
+
+    List<Ticket> listTicket(@Param(Constants.WRAPPER) Wrapper<Ticket> queryWrapper);
+
+    /**
+     * 统计经销商盲票销量,库存
+     *
+     * @param channelId
+     * @return
+     */
+    int getTicketQtyCnt(@Param("channelId") Long channelId);
+
+    /**
+     * 查询统计数据
+     *
+     * @param queryWrapper
+     * @return
+     */
+    List<TicketCntVO> listTicketQtyCnt(@Param(Constants.WRAPPER) Wrapper<ChannelOrderDetail> queryWrapper);
 }

+ 40 - 36
mp-service/src/main/java/com/qs/mp/admin/service/ITicketService.java

@@ -21,40 +21,44 @@ import org.apache.ibatis.annotations.Param;
  */
 public interface ITicketService extends IService<Ticket> {
 
-  /**
-   * 随机取一条
-   * @param boxId
-   * @return
-   */
-  Ticket getRandOne(String boxId);
-
-
-  /**
-   * 盲票导入
-   * 导入就是只根据盲票序号更新幸运数字和抽奖数字两个字段
-   * @param ticketExcelList
-   * @return 导入的条数
-   */
-  int importTicket(List<TicketExcel> ticketExcelList);
-
-  /**
-   * 查询盲票列表
-   * @param queryWrapper
-   * @return
-   */
-  List<Ticket> listTicket(Wrapper<Ticket> queryWrapper);
-  
-  /**
-   * 统计经销商盲票销量,库存
-   * @param channelId
-   * @return
-   */
-  int getTicketQtyCnt(Long channelId);
-  
-  /**
-   * 查询统计数据
-   * @param queryWrapper
-   * @return
-   */
-  List<TicketCntVO> listTicketQtyCnt(Wrapper<ChannelOrderDetail> queryWrapper);
+    /**
+     * 随机取一条
+     *
+     * @param boxId
+     * @return
+     */
+    Ticket getRandOne(String boxId);
+
+
+    /**
+     * 盲票导入 导入就是只根据盲票序号更新幸运数字和抽奖数字两个字段
+     *
+     * @param ticketExcelList
+     * @return 导入的条数
+     */
+    int importTicket(List<TicketExcel> ticketExcelList);
+
+    /**
+     * 查询盲票列表
+     *
+     * @param queryWrapper
+     * @return
+     */
+    List<Ticket> listTicket(Wrapper<Ticket> queryWrapper);
+
+    /**
+     * 统计经销商盲票销量,库存
+     *
+     * @param channelId
+     * @return
+     */
+    int getTicketQtyCnt(Long channelId);
+
+    /**
+     * 查询统计数据
+     *
+     * @param queryWrapper
+     * @return
+     */
+    List<TicketCntVO> listTicketQtyCnt(Wrapper<ChannelOrderDetail> queryWrapper);
 }

+ 50 - 50
mp-service/src/main/java/com/qs/mp/admin/service/impl/TicketServiceImpl.java

@@ -32,61 +32,61 @@ import org.springframework.transaction.annotation.Transactional;
 @Service
 public class TicketServiceImpl extends ServiceImpl<TicketMapper, Ticket> implements ITicketService {
 
-	@Autowired
-	private ITicketService ticketService;
+    @Autowired
+    private ITicketService ticketService;
 
-	@Value("${export.page-size}")
-	private int pageSize;
+    @Value("${export.page-size}")
+    private int pageSize;
 
-	@Override
-	public Ticket getRandOne(String boxId) {
-		return getBaseMapper().getRandOne(boxId, 1);
-	}
+    @Override
+    public Ticket getRandOne(String boxId) {
+        return getBaseMapper().getRandOne(boxId, 1);
+    }
 
-	@Override
-	@Transactional
-	public int importTicket(List<TicketExcel> ticketExcelList) {
-		if (null != ticketExcelList && ticketExcelList.size() > 0) {
-			List<Ticket> ticketList = new ArrayList<Ticket>();
-			for (TicketExcel ticketExcel : ticketExcelList) {
-				if(null != ticketExcel && StringUtils.isNotBlank(ticketExcel.getSerialNo())) {
-					LambdaQueryWrapper<Ticket> ticketQueryWrapper = new LambdaQueryWrapper<Ticket>();
-					ticketQueryWrapper.eq(Ticket::getSerialNo, ticketExcel.getSerialNo());
-					Ticket ticket = ticketService.getOne(ticketQueryWrapper);
-					if(null != ticket && StringUtils.isNotBlank(ticket.getTicketId())) {
-						Ticket updateTicket = new Ticket();
-						updateTicket.setTicketId(ticket.getTicketId());
-						updateTicket.setCipherLuckyNum(RSAUtil.encrypt(ticketExcel.getCipherLuckyNum()));
-						updateTicket.setDrawNum(ticketExcel.getDrawNum());
-						ticketList.add(updateTicket);
-					}
-				}
-			}
-			if(null != ticketList && ticketList.size() > 0) {
-				boolean res = ticketService.updateBatchById(ticketList,pageSize);
-				if(!res) {
-					throw new ServiceException("盲票导入失败,请联系管理员");
-				}
-				return ticketList.size();
-			}
-		}
+    @Override
+    @Transactional
+    public int importTicket(List<TicketExcel> ticketExcelList) {
+        if (null != ticketExcelList && ticketExcelList.size() > 0) {
+            List<Ticket> ticketList = new ArrayList<Ticket>();
+            for (TicketExcel ticketExcel : ticketExcelList) {
+                if (null != ticketExcel && StringUtils.isNotBlank(ticketExcel.getSerialNo())) {
+                    LambdaQueryWrapper<Ticket> ticketQueryWrapper = new LambdaQueryWrapper<Ticket>();
+                    ticketQueryWrapper.eq(Ticket::getSerialNo, ticketExcel.getSerialNo());
+                    Ticket ticket = ticketService.getOne(ticketQueryWrapper);
+                    if (null != ticket && StringUtils.isNotBlank(ticket.getTicketId())) {
+                        Ticket updateTicket = new Ticket();
+                        updateTicket.setTicketId(ticket.getTicketId());
+                        updateTicket.setCipherLuckyNum(RSAUtil.encrypt(ticketExcel.getCipherLuckyNum()));
+                        updateTicket.setDrawNum(ticketExcel.getDrawNum());
+                        ticketList.add(updateTicket);
+                    }
+                }
+            }
+            if (null != ticketList && ticketList.size() > 0) {
+                boolean res = ticketService.updateBatchById(ticketList, pageSize);
+                if (!res) {
+                    throw new ServiceException("盲票导入失败,请联系管理员");
+                }
+                return ticketList.size();
+            }
+        }
 
-		return 0;
-	}
+        return 0;
+    }
 
-	@Override
-	public List<Ticket> listTicket(Wrapper<Ticket> queryWrapper) {
-		return getBaseMapper().listTicket(queryWrapper);
-	}
+    @Override
+    public List<Ticket> listTicket(Wrapper<Ticket> queryWrapper) {
+        return getBaseMapper().listTicket(queryWrapper);
+    }
 
-	@Override
-	public int getTicketQtyCnt(Long channelId) {
-		return getBaseMapper().getTicketQtyCnt(channelId);
-	}
+    @Override
+    public int getTicketQtyCnt(Long channelId) {
+        return getBaseMapper().getTicketQtyCnt(channelId);
+    }
+
+    @Override
+    public List<TicketCntVO> listTicketQtyCnt(Wrapper<ChannelOrderDetail> queryWrapper) {
+        return getBaseMapper().listTicketQtyCnt(queryWrapper);
+    }
 
-	@Override
-	public List<TicketCntVO> listTicketQtyCnt(Wrapper<ChannelOrderDetail> queryWrapper) {
-		return getBaseMapper().listTicketQtyCnt(queryWrapper);
-	}
-	
 }

+ 2 - 2
mp-service/src/main/java/com/qs/mp/framework/redis/RedisKey.java

@@ -6,13 +6,12 @@ import com.qs.mp.common.utils.MessageHelper;
  * redis Key管理模版
  *
  * @author duota
- *
  */
 public enum RedisKey {
 
     ONLINE_TICKET_ID_KEY("online_ticket_id_key_{0}", "线上盲票ID"),
     MARKETING_FAKE_NUM("marketing_fake_num_{0}", "营销活动虚拟参与人数"),
-    OPEN_LINK_KEY("open_link_key_{0}_{1}","微信scheme码缓存key"),
+    OPEN_LINK_KEY("open_link_key_{0}_{1}", "微信scheme码缓存key"),
     WX_APP_TOKEN_KEY("app_token_key_{0}", "小程序app token"),
     CHANNEL_ORDER_KEY("channel_order_{0}", "经销商下的盲票采购单"),
     USER_TICKET_ORDER_KEY("user_ticket_order_key_{0}", "用户购票订单"),
@@ -27,6 +26,7 @@ public enum RedisKey {
         this.keyTemplate = keyTemplate;
         this.desc = desc;
     }
+
     public static String build(RedisKey redisKey, Object... param) {
         return MessageHelper.formatMsg(redisKey.keyTemplate, param);
     }

+ 1 - 1
mp-service/src/main/java/com/qs/mp/pay/service/impl/WalletServiceImpl.java

@@ -98,7 +98,7 @@ public class WalletServiceImpl implements IWalletService {
     String appId = aliMiniAppAppId;
     String payShopNo = userPayShopNo;
     String paySign = userPaySign;
-    JSONObject params = buildPayOrderReqData(payShopNo, paySign, money, openId, appId, orderRemark, "1", "1014");
+    JSONObject params = buildPayOrderReqData(payShopNo, paySign, money, openId, appId, orderRemark, "1", "1019");
     String result = OkHttpUtil.postJsonParams(reqUrl, params.toJSONString());
     logger.info("request params:" + params.toJSONString() + "  result:" + result);
     if (StringUtils.isBlank(result)) {

+ 79 - 73
mp-service/src/main/java/com/qs/mp/user/service/impl/UserTicketOrderServiceImpl.java

@@ -71,7 +71,7 @@ import org.springframework.util.Assert;
  */
 @Service
 public class UserTicketOrderServiceImpl extends
-        ServiceImpl<UserTicketOrderMapper, UserTicketOrder> implements IUserTicketOrderService {
+    ServiceImpl<UserTicketOrderMapper, UserTicketOrder> implements IUserTicketOrderService {
 
     protected final Logger logger = LoggerFactory.getLogger(this.getClass());
 
@@ -129,7 +129,7 @@ public class UserTicketOrderServiceImpl extends
 
     @Override
     public String submitOrder(Long userId, TicketOrderSettleVO orderSettleVO,
-                              UserShareVO userShareVO) {
+        UserShareVO userShareVO) {
         UserTicketOrderServiceImpl proxy = (UserTicketOrderServiceImpl) AopContext.currentProxy();
         if (StringUtils.isBlank(orderSettleVO.getTicketId())) {
             String lockKey = RedisLockKey.build(RedisLockKey.CREATED_ONLINE_TICKET_ORDER_KEY, orderSettleVO.getBoxId());
@@ -149,25 +149,25 @@ public class UserTicketOrderServiceImpl extends
 
     @Transactional(rollbackFor = Exception.class)
     public String createOnlineOrder(Long userId, TicketOrderSettleVO orderSettleVO,
-                                    UserShareVO userShareVO) {
+        UserShareVO userShareVO) {
         // 线上票更新票组销量,防止超卖
         TicketBox ticketBox = ticketBoxService.getById(orderSettleVO.getBoxId());
         if (ticketBox.getStatus() == TicketBoxStatusEnum.PUT_OFF
-                || ticketBox.getSaleQty() + orderSettleVO.getOrderNum() > ticketBox.getQuantity()) {
+            || ticketBox.getSaleQty() + orderSettleVO.getOrderNum() > ticketBox.getQuantity()) {
             LogUtil.error(logger, "库存不足,boxId:{0},qty:{1},saleQty:{2},orderNum:{3}",
-                    ticketBox.getBoxId(), ticketBox.getQuantity(), ticketBox.getSaleQty(),
-                    orderSettleVO.getOrderNum());
+                ticketBox.getBoxId(), ticketBox.getQuantity(), ticketBox.getSaleQty(),
+                orderSettleVO.getOrderNum());
             throw new ServiceException(ErrorCodeEnum.ERROR_CODE_1020);
         }
         boolean rst = ticketBoxService.update(
-                new LambdaUpdateWrapper<TicketBox>().set(TicketBox::getSaleQty,
-                                ticketBox.getSaleQty() + orderSettleVO.getOrderNum())
-                        .set(ticketBox.getSaleQty() + orderSettleVO.getOrderNum() == ticketBox.getQuantity(),
-                                TicketBox::getStatus, TicketBoxStatusEnum.PUT_OFF)
-                        .eq(TicketBox::getBoxId, ticketBox.getBoxId())
-                        .eq(TicketBox::getSaleQty, ticketBox.getSaleQty()));
+            new LambdaUpdateWrapper<TicketBox>().set(TicketBox::getSaleQty,
+                    ticketBox.getSaleQty() + orderSettleVO.getOrderNum())
+                .set(ticketBox.getSaleQty() + orderSettleVO.getOrderNum() == ticketBox.getQuantity(),
+                    TicketBox::getStatus, TicketBoxStatusEnum.PUT_OFF)
+                .eq(TicketBox::getBoxId, ticketBox.getBoxId())
+                .eq(TicketBox::getSaleQty, ticketBox.getSaleQty()));
         Assert.isTrue(rst,
-                "盲票购买订单创建时,更新盲票销量失败。boxId:" + ticketBox.getBoxId() + "saleQty:" + ticketBox.getSaleQty());
+            "盲票购买订单创建时,更新盲票销量失败。boxId:" + ticketBox.getBoxId() + "saleQty:" + ticketBox.getSaleQty());
 
         // 核销优惠券
         String couponIds = verifyUserCoupon(orderSettleVO.getCouponList());
@@ -194,8 +194,8 @@ public class UserTicketOrderServiceImpl extends
 
         // 查询用户的所属经销商,线上票直接查询
         ChannelUserRel channelUserRel = channelUserRelService.getOne(
-                new LambdaQueryWrapper<ChannelUserRel>()
-                        .eq(ChannelUserRel::getUserId, userId));
+            new LambdaQueryWrapper<ChannelUserRel>()
+                .eq(ChannelUserRel::getUserId, userId));
         if (null != channelUserRel) {
             userTicketOrder.setChannelId(channelUserRel.getChannelId());
         } else {
@@ -203,16 +203,16 @@ public class UserTicketOrderServiceImpl extends
             if (null != userShareVO.getSuid() && 0 != userShareVO.getSuid()) {
                 if (UserShareVO.SHARE_TYPE_USER.equals(userShareVO.getType())) {
                     ChannelUserRel channelShareUserRel = channelUserRelService.getOne(
-                            new LambdaQueryWrapper<ChannelUserRel>()
-                                    .eq(ChannelUserRel::getUserId, userShareVO.getSuid()));
+                        new LambdaQueryWrapper<ChannelUserRel>()
+                            .eq(ChannelUserRel::getUserId, userShareVO.getSuid()));
                     if (null != channelShareUserRel) {
                         userTicketOrder.setChannelId(channelShareUserRel.getChannelId());
                         userTicketOrder.setShareInfo(JSONObject.toJSONString(userShareVO));
                     }
                 } else if (UserShareVO.SHARE_TYPE_SITE.equals(userShareVO.getType())) {
                     Channel channel = channelService.getOne(
-                            new LambdaQueryWrapper<Channel>()
-                                    .eq(Channel::getUserId, userShareVO.getSuid()));
+                        new LambdaQueryWrapper<Channel>()
+                            .eq(Channel::getUserId, userShareVO.getSuid()));
                     if (null != channel) {
                         userTicketOrder.setChannelId(channel.getChannelId());
                         userTicketOrder.setShareInfo(JSONObject.toJSONString(userShareVO));
@@ -248,7 +248,8 @@ public class UserTicketOrderServiceImpl extends
             // 无需支付的,直接置为成功
             processTicketOrder(userTicketOrder);
             // 插入付款异步任务
-            Assert.isTrue(asyncTaskService.insertAsyncTask(AsyncTaskTypeEnum.TICKET_PAY, userTicketOrder.getOrderId()), "盲票支付,创建异步任务失败:" + userTicketOrder.getOrderId());
+            Assert.isTrue(asyncTaskService.insertAsyncTask(AsyncTaskTypeEnum.TICKET_PAY, userTicketOrder.getOrderId()),
+                "盲票支付,创建异步任务失败:" + userTicketOrder.getOrderId());
         }
 
         return userTicketOrder.getOrderId();
@@ -258,14 +259,14 @@ public class UserTicketOrderServiceImpl extends
     public String createOfflineOrder(Long userId, TicketOrderSettleVO orderSettleVO) {
         Ticket ticket = ticketService.getById(orderSettleVO.getTicketId());
         Assert.isTrue(ticket.getStatus() == TicketStatusEnum.NOT_PAY,
-                "盲票已付款,ticketId:" + ticket.getTicketId());
+            "盲票已付款,ticketId:" + ticket.getTicketId());
         if (null != redisCache.getCacheObject(
-                RedisKey.build(RedisKey.OFFLINE_TICKET_ID_KEY, ticket.getTicketId()))) {
+            RedisKey.build(RedisKey.OFFLINE_TICKET_ID_KEY, ticket.getTicketId()))) {
             LogUtil.warn(logger, "线下盲票重复购买,ticketNo:{0}", ticket.getSerialNo());
             throw new ServiceException("重复购买,请稍后再试");
         }
         redisCache.setCacheObject(RedisKey.build(RedisKey.OFFLINE_TICKET_ID_KEY, ticket.getTicketId()),
-                userId, 5, TimeUnit.MINUTES);
+            userId, 5, TimeUnit.MINUTES);
 
         // 核销优惠券
         String couponIds = verifyUserCoupon(orderSettleVO.getCouponList());
@@ -292,11 +293,11 @@ public class UserTicketOrderServiceImpl extends
         }
         // 查询用户的所属经销商,线下票根据票包查询
         ChannelOrderDetail channelOrderDetail = channelOrderDetailService.getOne(
-                new LambdaQueryWrapper<ChannelOrderDetail>()
-                        .eq(ChannelOrderDetail::getPkgId, ticket.getPkgId()));
+            new LambdaQueryWrapper<ChannelOrderDetail>()
+                .eq(ChannelOrderDetail::getPkgId, ticket.getPkgId()));
         if (null == channelOrderDetail) {
             LogUtil.error(logger, "线下票,根据票包ID查询购买渠道为空。ticketId:{0}, pkgId{1}",
-                    ticket.getTicketId(), ticket.getPkgId());
+                ticket.getTicketId(), ticket.getPkgId());
         } else {
             ticketOrder.setChannelId(channelOrderDetail.getChannelId());
         }
@@ -318,7 +319,8 @@ public class UserTicketOrderServiceImpl extends
             processTicketOrder(ticketOrder);
 
             // 插入付款异步任务
-            Assert.isTrue(asyncTaskService.insertAsyncTask(AsyncTaskTypeEnum.TICKET_PAY, ticketOrder.getOrderId()), "盲票支付,创建异步任务失败:" + ticketOrder.getOrderId());
+            Assert.isTrue(asyncTaskService.insertAsyncTask(AsyncTaskTypeEnum.TICKET_PAY, ticketOrder.getOrderId()),
+                "盲票支付,创建异步任务失败:" + ticketOrder.getOrderId());
 
         }
         return ticketOrder.getOrderId();
@@ -347,7 +349,7 @@ public class UserTicketOrderServiceImpl extends
         for (String orderId : orderIds) {
             UserTicketOrder userTicketOrder = getById(orderId);
             Assert.isTrue(userTicketOrder.getResource() == TicketTypeEnum.ONLINE,
-                    "非在线盲票不用取消。boxId:" + boxId);
+                "非在线盲票不用取消。boxId:" + boxId);
             if (!rollbackOrder(userTicketOrder)) {
                 return false;
             }
@@ -360,14 +362,14 @@ public class UserTicketOrderServiceImpl extends
     private void rollbackBoxQty(String boxId, int qty) {
         TicketBox ticketBox = ticketBoxService.getById(boxId);
         boolean updateBox = ticketBoxService.update(
-                new LambdaUpdateWrapper<TicketBox>().set(TicketBox::getSaleQty,
-                                ticketBox.getSaleQty() - qty)
-                        .set(
-                                ticketBox.getStatus() == TicketBoxStatusEnum.PUT_OFF
-                                        && ticketBox.getManualOff() != 1,
-                                TicketBox::getStatus, TicketBoxStatusEnum.PUT_ON)
-                        .eq(TicketBox::getBoxId, ticketBox.getBoxId())
-                        .eq(TicketBox::getSaleQty, ticketBox.getSaleQty()));
+            new LambdaUpdateWrapper<TicketBox>().set(TicketBox::getSaleQty,
+                    ticketBox.getSaleQty() - qty)
+                .set(
+                    ticketBox.getStatus() == TicketBoxStatusEnum.PUT_OFF
+                        && ticketBox.getManualOff() != 1,
+                    TicketBox::getStatus, TicketBoxStatusEnum.PUT_ON)
+                .eq(TicketBox::getBoxId, ticketBox.getBoxId())
+                .eq(TicketBox::getSaleQty, ticketBox.getSaleQty()));
         Assert.isTrue(updateBox, "取消过期未支付盲票购买订单,恢复票组销量失败。boxId:{0}" + boxId);
     }
 
@@ -390,7 +392,7 @@ public class UserTicketOrderServiceImpl extends
     private boolean rollbackOrder(UserTicketOrder userTicketOrder) {
         if (userTicketOrder.getStatus() != UserTicketOrderStatusEnum.NOT_PAY) {
             LogUtil.warn(logger, "取消购票订单时,订单状态不是待支付,忽略。orderId:{0}, status:{1}",
-                    userTicketOrder.getOrderId(), userTicketOrder.getStatus());
+                userTicketOrder.getOrderId(), userTicketOrder.getStatus());
             return false;
         }
 
@@ -398,18 +400,18 @@ public class UserTicketOrderServiceImpl extends
             // 优惠券反核销
             List<String> userCouponIds = Arrays.asList(userTicketOrder.getCouponInfo().split(","));
             boolean rst = userCouponService.update(new LambdaUpdateWrapper<UserCoupon>()
-                    .set(UserCoupon::getStatus, UserCouponStatusEnum.UNUSED)
-                    .set(UserCoupon::getVerifyTime, null)
-                    .in(UserCoupon::getId, userCouponIds));
+                .set(UserCoupon::getStatus, UserCouponStatusEnum.UNUSED)
+                .set(UserCoupon::getVerifyTime, null)
+                .in(UserCoupon::getId, userCouponIds));
             Assert.isTrue(rst,
-                    "盲票购买订单取消时,反核销优惠券失败。orderId:" + userTicketOrder.getOrderId() + "userCouponIds:"
-                            + userTicketOrder.getCouponInfo());
+                "盲票购买订单取消时,反核销优惠券失败。orderId:" + userTicketOrder.getOrderId() + "userCouponIds:"
+                    + userTicketOrder.getCouponInfo());
         }
 
         boolean rst = update(new LambdaUpdateWrapper<UserTicketOrder>().set(UserTicketOrder::getStatus,
-                        UserTicketOrderStatusEnum.CANCELED)
-                .eq(UserTicketOrder::getOrderId, userTicketOrder.getOrderId())
-                .eq(UserTicketOrder::getStatus, UserTicketOrderStatusEnum.NOT_PAY));
+                UserTicketOrderStatusEnum.CANCELED)
+            .eq(UserTicketOrder::getOrderId, userTicketOrder.getOrderId())
+            .eq(UserTicketOrder::getStatus, UserTicketOrderStatusEnum.NOT_PAY));
         Assert.isTrue(rst, "盲票购买订单取消时,更新订单状态失败。orderId:" + userTicketOrder.getOrderId());
         return true;
     }
@@ -420,20 +422,21 @@ public class UserTicketOrderServiceImpl extends
         UserTicketOrder ticketOrder = getById(payOrder.getBizId());
         if (null == ticketOrder || ticketOrder.getStatus() != UserTicketOrderStatusEnum.NOT_PAY) {
             LogUtil.error(logger, "支付回调用户购票订单处理,订单状态异常,不是待支付。payOrder:{0}, ticketOrder:{1}",
-                    JSONObject.toJSONString(payOrder), JSONObject.toJSONString(ticketOrder));
+                JSONObject.toJSONString(payOrder), JSONObject.toJSONString(ticketOrder));
             throw new ServiceException("支付回调用户购票订单处理,订单状态异常,不是待支付。orderId:" + payOrder.getBizId());
         }
         ticketOrder.setPayTime(DateUtils.parseDate(payOrder.getCompleteDate()));
 
         // 插入异步任务
-        Assert.isTrue(asyncTaskService.insertAsyncTask(AsyncTaskTypeEnum.TICKET_PAY, payOrder.getBizId()), "创建支付成功异步任务失败. orderId:" + payOrder.getOrderId());
+        Assert.isTrue(asyncTaskService.insertAsyncTask(AsyncTaskTypeEnum.TICKET_PAY, payOrder.getBizId()),
+            "创建支付成功异步任务失败. orderId:" + payOrder.getOrderId());
         return processTicketOrder(ticketOrder);
     }
 
     private boolean processTicketOrder(UserTicketOrder ticketOrder) {
         List<UserTicketOrderItem> orderItemList = userTicketOrderItemService.list(
-                new LambdaQueryWrapper<UserTicketOrderItem>()
-                        .eq(UserTicketOrderItem::getOrderId, ticketOrder.getOrderId()));
+            new LambdaQueryWrapper<UserTicketOrderItem>()
+                .eq(UserTicketOrderItem::getOrderId, ticketOrder.getOrderId()));
 
         for (UserTicketOrderItem orderItem : orderItemList) {
             Ticket ticket = null;
@@ -468,21 +471,21 @@ public class UserTicketOrderServiceImpl extends
 
             // 开幸运数字,更新ticket状态为已激活
             boolean rtn = ticketService.update(
-                    new LambdaUpdateWrapper<Ticket>().set(Ticket::getPlainLuckyNum,
-                                    Integer.valueOf(RSAUtil.decrypt(ticket.getCipherLuckyNum())))
-                            .set(Ticket::getStatus, TicketStatusEnum.ACTIVATED)
-                            .eq(Ticket::getTicketId, ticket.getTicketId()));
+                new LambdaUpdateWrapper<Ticket>().set(Ticket::getPlainLuckyNum,
+                        Integer.valueOf(RSAUtil.decrypt(ticket.getCipherLuckyNum())))
+                    .set(Ticket::getStatus, TicketStatusEnum.ACTIVATED)
+                    .eq(Ticket::getTicketId, ticket.getTicketId()));
             Assert.isTrue(rtn, "支付回调用户购票订单处理,更新盲票状态失败,ticketId:" + ticket.getTicketId());
 
         }
 
         // 更新订单状态为已完成
         boolean updateRst = update(
-                new LambdaUpdateWrapper<UserTicketOrder>().set(UserTicketOrder::getStatus,
-                                UserTicketOrderStatusEnum.FINISHED)
-                        .set(UserTicketOrder::getPayTime, ticketOrder.getPayTime())
-                        .eq(UserTicketOrder::getOrderId, ticketOrder.getOrderId())
-                        .eq(UserTicketOrder::getStatus, UserTicketOrderStatusEnum.NOT_PAY));
+            new LambdaUpdateWrapper<UserTicketOrder>().set(UserTicketOrder::getStatus,
+                    UserTicketOrderStatusEnum.FINISHED)
+                .set(UserTicketOrder::getPayTime, ticketOrder.getPayTime())
+                .eq(UserTicketOrder::getOrderId, ticketOrder.getOrderId())
+                .eq(UserTicketOrder::getStatus, UserTicketOrderStatusEnum.NOT_PAY));
         Assert.isTrue(updateRst, "支付回调用户购票订单处理,更新订单状态失败,orderId:" + ticketOrder.getOrderId());
 
         return true;
@@ -496,10 +499,11 @@ public class UserTicketOrderServiceImpl extends
             UserTicketOrder ticketOrder = getById(orderId);
             BeanUtils.copyProperties(ticketOrder, channelCommParam);
             Assert.isTrue(channelCommParam.getCommStatus() != CommStatusEnum.YES,
-                    "结佣处理,结佣状态异常,不是结佣中或未结佣。orderId=" + orderId);
+                "结佣处理,结佣状态异常,不是结佣中或未结佣。orderId=" + orderId);
         } else {
             ChannelOrder channelOrder = channelOrderService.getById(orderId);
-            ChannelOrderItem channelOrderItem = channelOrderItemService.getOne(new LambdaQueryWrapper<ChannelOrderItem>()
+            ChannelOrderItem channelOrderItem = channelOrderItemService.getOne(
+                new LambdaQueryWrapper<ChannelOrderItem>()
                     .eq(ChannelOrderItem::getOrderId, orderId));
             channelCommParam.setBoxId(channelOrderItem.getBoxId());
             channelCommParam.setChannelId(channelOrder.getChannelId());
@@ -531,21 +535,21 @@ public class UserTicketOrderServiceImpl extends
                 channelCommission.setSaleCommAmt(siteCommission.getSaleCommAmt());
                 channelCommission.setCommRate(channel.getCommRate());
                 channelCommission.setCommAmt(new BigDecimal(channelCommission.getSaleCommAmt()).multiply(
-                                channelCommission.getCommRate()).divide(new BigDecimal(100), 0, RoundingMode.DOWN)
-                        .intValue() - sumCommAmt);
+                        channelCommission.getCommRate()).divide(new BigDecimal(100), 0, RoundingMode.DOWN)
+                    .intValue() - sumCommAmt);
                 channelCommissionService.save(channelCommission);
                 sumCommAmt += channelCommission.getCommAmt();
             }
         } else {
             LogUtil.info(logger, "渠道结佣时,订单对应的渠道不存在,无需结佣。orderId:{0}",
-                    channelCommParam.getOrderId());
+                channelCommParam.getOrderId());
         }
         if (ChannelCommissionResourceEnum.USER.getValue().equals(resource)) {
             boolean rst = update(
-                    new LambdaUpdateWrapper<UserTicketOrder>().set(UserTicketOrder::getCommStatus,
-                                    CommStatusEnum.YES)
-                            .eq(UserTicketOrder::getOrderId, orderId)
-                            .in(UserTicketOrder::getCommStatus, CommStatusEnum.DOING, CommStatusEnum.NO));
+                new LambdaUpdateWrapper<UserTicketOrder>().set(UserTicketOrder::getCommStatus,
+                        CommStatusEnum.YES)
+                    .eq(UserTicketOrder::getOrderId, orderId)
+                    .in(UserTicketOrder::getCommStatus, CommStatusEnum.DOING, CommStatusEnum.NO));
             Assert.isTrue(rst, "渠道结佣完成,更新订单状态失败。orderId:" + orderId);
         }
         return true;
@@ -562,7 +566,7 @@ public class UserTicketOrderServiceImpl extends
     }
 
     private ChannelCommission saveSiteCommAmt(ChannelCommParam channelCommParam, TicketBox ticketBox,
-                                              Channel channel) {
+        Channel channel) {
         ChannelCommission siteCommission = new ChannelCommission();
         siteCommission.setChannelId(channel.getChannelId());
         siteCommission.setOrderId(channelCommParam.getOrderId());
@@ -570,11 +574,11 @@ public class UserTicketOrderServiceImpl extends
         siteCommission.setSaleAmt(channelCommParam.getPayAmt());
         siteCommission.setSaleCommRate(ticketBox.getSaleCommRate());
         siteCommission.setSaleCommAmt(new BigDecimal(siteCommission.getSaleAmt()).multiply(
-                        siteCommission.getSaleCommRate()).divide(new BigDecimal(100), 0, RoundingMode.DOWN)
-                .intValue());
+                siteCommission.getSaleCommRate()).divide(new BigDecimal(100), 0, RoundingMode.DOWN)
+            .intValue());
         siteCommission.setCommRate(channel.getCommRate());
         siteCommission.setCommAmt(new BigDecimal(siteCommission.getSaleCommAmt()).multiply(
-                siteCommission.getCommRate()).divide(new BigDecimal(100), 0, RoundingMode.DOWN).intValue());
+            siteCommission.getCommRate()).divide(new BigDecimal(100), 0, RoundingMode.DOWN).intValue());
         channelCommissionService.save(siteCommission);
         return siteCommission;
     }
@@ -635,12 +639,14 @@ public class UserTicketOrderServiceImpl extends
     }
 
     @Override
-    public List<IndexVO> selectIndexTicketBoxTopByTicketOrderAndChannelOrder(IndexTicketBoxTopQueryParam indexTicketBoxTopQueryParam) {
+    public List<IndexVO> selectIndexTicketBoxTopByTicketOrderAndChannelOrder(
+        IndexTicketBoxTopQueryParam indexTicketBoxTopQueryParam) {
         return getBaseMapper().selectIndexTicketBoxTopByTicketOrderAndChannelOrder(indexTicketBoxTopQueryParam);
     }
 
     @Override
-    public List<IndexVO> selectIndexTicketSiteTopByTicketOrderAndChannelOrder(IndexTicketSiteTopQueryParam indexTicketSiteTopQueryParam) {
+    public List<IndexVO> selectIndexTicketSiteTopByTicketOrderAndChannelOrder(
+        IndexTicketSiteTopQueryParam indexTicketSiteTopQueryParam) {
         return getBaseMapper().selectIndexTicketSiteTopByTicketOrderAndChannelOrder(indexTicketSiteTopQueryParam);
     }