Pu Zhibing
2025-09-10 949084022efbb071a29718add61155c734d06c44
修改bug
3个文件已修改
88 ■■■■■ 已修改文件
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppCouponController.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerVerifyOrderDto.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppCouponController.java
@@ -103,7 +103,7 @@
    @PostMapping("/getCouponInfo/{couponId}")
    @ApiOperation(value = "获取优惠券详情【2.0】", tags = "领券中心")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "优惠券id", required = true, dataType = "String", paramType = "path")
            @ApiImplicitParam(name = "couponId", value = "优惠券id", required = true, dataType = "String", paramType = "path")
    })
    public R<CouponInfoVo> getCouponInfo(@PathVariable("couponId") String couponId) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
@@ -151,7 +151,7 @@
    @PostMapping("/shareCoupon/{couponId}")
    @ApiOperation(value = "分享优惠券【2.0】", tags = "领券中心")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "优惠券id", required = true, dataType = "String", paramType = "path")
            @ApiImplicitParam(name = "couponId", value = "优惠券id", required = true, dataType = "String", paramType = "path")
    })
    public R<String> shareCoupon(@PathVariable("couponId") String couponId) {
        //检测是否可以抽奖
@@ -164,4 +164,18 @@
        }
        return R.ok();
    }
    @ResponseBody
    @PostMapping("/shareCoupon/determineClaimCoupon/{couponId}")
    @ApiOperation(value = "判断是否领取了该优惠券【2.0】", tags = "领券中心")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "couponId", value = "优惠券id", required = true, dataType = "String", paramType = "path")
    })
    public R<Boolean> determineClaimCoupon(@PathVariable("couponId") String couponId){
        Long userId = SecurityUtils.getUserId();
        MemberCoupon one = memberCouponService.getOne(new QueryWrapper<MemberCoupon>().eq("coupon_id", couponId)
                .eq("user_id", userId).ne("coupon_status", -1));
        return R.ok(null != one);
    }
}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerVerifyOrderDto.java
@@ -33,4 +33,7 @@
    
    @ApiModelProperty(value = "支付方式1微信2现金3支付宝")
    private Integer payType;
    @ApiModelProperty(value = "核销数量")
    private Integer number;
}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -2268,7 +2268,14 @@
        if (null == itemList && itemList.isEmpty()) {
            throw new ServiceException("查询券信息失败");
        }
        CertificatePrepareResponseDataCertificatesItem certificatesItem = itemList.get(0);
        List<CertificatePrepareResponseDataCertificatesItem> collect = itemList.stream().filter(s -> s.getStatus().intValue() == 1).collect(Collectors.toList());
        if(collect.size() < merVerifyOrderDto.getNumber()){
            throw new ServiceException("验券数量超过可使用数量");
        }
        List<CertificatePrepareResponseDataCertificatesItem> certificatePrepareResponseDataCertificatesItems = collect.subList(0, merVerifyOrderDto.getNumber());
        CertificatePrepareResponseDataCertificatesItem certificatesItem = certificatePrepareResponseDataCertificatesItems.get(0);
        //商品信息
        CertificatePrepareResponseDataCertificatesItemSku sku = certificatesItem.getSku();
        //次卡信息
@@ -2318,10 +2325,11 @@
                throw new ServiceException("该抖音券不能重复核销");
            }
        }
        String encryptedCode = certificatesItem.getEncryptedCode();
        List<CertificateVerifyResponseDataVerifyResultsItem> items = VerifyUtil.certificateVerify(data.getVerifyToken(), shop.getDyPoiId(), new ArrayList<String>() {{
            add(encryptedCode);
        }});
        List<String> encryptedCodes = new ArrayList<>();
        for (CertificatePrepareResponseDataCertificatesItem certificatePrepareResponseDataCertificatesItem : certificatePrepareResponseDataCertificatesItems) {
            encryptedCodes.add(certificatePrepareResponseDataCertificatesItem.getEncryptedCode());
        }
        List<CertificateVerifyResponseDataVerifyResultsItem> items = VerifyUtil.certificateVerify(data.getVerifyToken(), shop.getDyPoiId(), encryptedCodes);
        if (null == items || items.isEmpty()) {
            throw new ServiceException("抖音券核销失败");
        }
@@ -2369,7 +2377,7 @@
            order.setUseTime(nowTime);
            order.setUseUserId(merVerifyOrderDto.getUserId());
            order.setCloseFlag(1);
            order.setGoodsNum(1);
            order.setGoodsNum(itemList.size());
            order.setCouponMoney(BigDecimal.ZERO);
            this.save(order);
            //创建服务商品
@@ -2382,15 +2390,14 @@
            orderGoods.setGoodsPrice(originAmount);
            orderGoods.setGoodsTotalMoney(originAmount);
            orderGoods.setGoodsReceivableMoney(originAmount);
            orderGoods.setBuyNum(1);
            orderGoods.setBuyNum(itemList.size());
            ConsumerGoods consumerGoods = new ConsumerGoods();
            consumerGoods.setUsedNum(1);
            consumerGoods.setUsedNum(merVerifyOrderDto.getNumber());
            if(null != timeCard){
                //核销一次加一次
                orderGoods.setBuyNum(1);
                orderGoods.setServiceNum(1);
                consumerGoods.setServiceNum(timeCard.getTimesCount());
                orderGoods.setBuyNum(itemList.size());
                orderGoods.setServiceNum(merVerifyOrderDto.getNumber());
                consumerGoods.setServiceNum(itemList.size());
                consumerGoods.setUseTime(new Date());
            }
            orderGoods.setCycleNumFlag(1);
@@ -2494,14 +2501,12 @@
        }else{
            //扣减剩余次数
            OrderGoods orderGoods = orderGoodsService.getOne(new LambdaQueryWrapper<OrderGoods>().eq(OrderGoods::getOrderId, order.getOrderId()));
            //核销一次加一次数量
            orderGoods.setBuyNum(orderGoods.getBuyNum() + 1);
            if(null != orderGoods.getServiceNum()){
                orderGoods.setServiceNum(orderGoods.getServiceNum() + 1);
                orderGoods.setServiceNum(orderGoods.getServiceNum() + merVerifyOrderDto.getNumber());
            }
            orderGoodsService.updateById(orderGoods);
            ConsumerGoods consumerGoods = consumerGoodsService.getOne(new LambdaQueryWrapper<ConsumerGoods>().eq(ConsumerGoods::getOrderId, order.getOrderId()).eq(ConsumerGoods::getOrderGoodsId, orderGoods.getOrderGoodsId()));
            consumerGoods.setUsedNum(consumerGoods.getUsedNum() + 1);
            consumerGoods.setUsedNum(consumerGoods.getUsedNum() + merVerifyOrderDto.getNumber());
            consumerGoods.setUseTime(new Date());
            if(consumerGoods.getUsedNum() == consumerGoods.getServiceNum()){
                consumerGoods.setCompleteTime(new Date());
@@ -2575,7 +2580,8 @@
        if (null == itemList || itemList.isEmpty()) {
            throw new ServiceException("查询券信息失败");
        }
        SimpleCertificateTimesCard certificatesItem = itemList.get(0);
        List<SimpleCertificateTimesCard> timesCards = itemList.subList(0, merVerifyOrderDto.getNumber());
        SimpleCertificateTimesCard certificatesItem = timesCards.get(0);
        Long expire_time = certificatesItem.getExpire_time();
        if(LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) > expire_time){
            throw new ServiceException("优惠券已过期");
@@ -2596,11 +2602,12 @@
                throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
            }
        }
        String encryptedCode = certificatesItem.getEncrypted_code();
        List<VerifyResult> items = KSVerifyUtil.certificateVerify(redisService, data.getVerify_token(), shop.getKsPoiId(), new ArrayList<String>() {{
            add(encryptedCode);
        }}, data.getOrder_id());
        List<String> encryptedCodes = new ArrayList<>();
        for (SimpleCertificateTimesCard timesCard : timesCards) {
            encryptedCodes.add(timesCard.getEncrypted_code());
        }
        List<VerifyResult> items = KSVerifyUtil.certificateVerify(redisService, data.getVerify_token(), shop.getKsPoiId(), encryptedCodes, data.getOrder_id());
        if (null == items || items.isEmpty()) {
            throw new ServiceException("快手券核销失败");
        }
@@ -2648,7 +2655,7 @@
            order.setUseTime(nowTime);
            order.setUseUserId(merVerifyOrderDto.getUserId());
            order.setCloseFlag(1);
            order.setGoodsNum(1);
            order.setGoodsNum(itemList.size());
            order.setCouponMoney(BigDecimal.ZERO);
            this.save(order);
            //创建服务商品
@@ -2659,13 +2666,12 @@
            orderGoods.setDelFlag(0);
            orderGoods.setOrderId(order.getOrderId());
            orderGoods.setGoodsId(sku.getSku_id());
            orderGoods.setBuyNum(1);
            orderGoods.setServiceNum(1);
            orderGoods.setBuyNum(itemList.size());
            orderGoods.setGoodsPrice(originAmount);
            orderGoods.setGoodsTotalMoney(originAmount);
            orderGoods.setGoodsReceivableMoney(originAmount);
            orderGoods.setCycleNumFlag(1);
            orderGoods.setServiceNum(sku.getTimes_count());
            orderGoods.setServiceNum(merVerifyOrderDto.getNumber());
            orderGoods.setGoodsType(2);
            orderGoods.setGoodsName(sku.getTitle());
            orderGoodsService.save(orderGoods);
@@ -2681,8 +2687,8 @@
            consumerGoods.setOrderGoodsId(orderGoods.getOrderGoodsId());
            consumerGoods.setGoodsName(sku.getTitle());
            consumerGoods.setCycleNumFlag(1);
            consumerGoods.setServiceNum(sku.getTimes_count());
            consumerGoods.setUsedNum(1);
            consumerGoods.setServiceNum(itemList.size());
            consumerGoods.setUsedNum(merVerifyOrderDto.getNumber());
            consumerGoods.setUseTime(new Date());
            consumerGoods.setCreateTime(nowTime);
            consumerGoods.setGoodsType(2);
@@ -2770,12 +2776,11 @@
        }else{
            //扣减剩余次数
            OrderGoods orderGoods = orderGoodsService.getOne(new LambdaQueryWrapper<OrderGoods>().eq(OrderGoods::getOrderId, order.getOrderId()));
            orderGoods.setBuyNum(orderGoods.getBuyNum() + 1);
            orderGoods.setServiceNum(orderGoods.getServiceNum() + 1);
            orderGoods.setServiceNum(orderGoods.getServiceNum() + itemList.size());
            orderGoodsService.updateById(orderGoods);
            ConsumerGoods consumerGoods = consumerGoodsService.getOne(new LambdaQueryWrapper<ConsumerGoods>().eq(ConsumerGoods::getOrderId, order.getOrderId()).eq(ConsumerGoods::getOrderGoodsId, orderGoods.getOrderGoodsId()));
            consumerGoods.setUsedNum(consumerGoods.getUsedNum() + 1);
            consumerGoods.setUsedNum(consumerGoods.getUsedNum() + itemList.size());
            consumerGoods.setUseTime(new Date());
            if(consumerGoods.getUsedNum() == consumerGoods.getServiceNum()){
                consumerGoods.setCompleteTime(new Date());