puzhibing
11 小时以前 d2a65425646e33c26b8a98c394c7990a6bfb6b03
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -35,6 +35,7 @@
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.common.security.utils.CodeFactoryUtil;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.goods.api.domain.GetLotteryEventList;
import com.ruoyi.goods.api.domain.TLotteryEvent;
import com.ruoyi.goods.api.service.LotteryEventClient;
import com.ruoyi.order.config.WxPayConfiguration;
@@ -405,7 +406,10 @@
        appSureOrderVo.setAppSureOrderGoodsVoList(appSureOrderGoodsVoList);
        appSureOrderVo.setLotteryDraw(false);
        // 返回AppPlaceOrderVo对象
        List<TLotteryEvent> data = lotteryEventClient.getLotteryEventList(2).getData();
        GetLotteryEventList getLotteryEventList = new GetLotteryEventList();
        getLotteryEventList.setActivityType(2);
        getLotteryEventList.setUserId(SecurityUtils.getUserId());
        List<TLotteryEvent> data = lotteryEventClient.getLotteryEventList(getLotteryEventList).getData();
        if (data.size() > 0) {
            BigDecimal finalOrderPayMoney = orderPayMoney;
            List<TLotteryEvent> collect = data.stream().filter(s -> s.getPayMoney().compareTo(finalOrderPayMoney) <= 0).collect(Collectors.toList());
@@ -524,7 +528,10 @@
        appPanicBuyVo.setOrderPayMoney(orderPayMoney);
        appPanicBuyVo.setLotteryDraw(false);
        // 返回AppPlaceOrderVo对象
        List<TLotteryEvent> data = lotteryEventClient.getLotteryEventList(2).getData();
        GetLotteryEventList getLotteryEventList = new GetLotteryEventList();
        getLotteryEventList.setActivityType(2);
        getLotteryEventList.setUserId(SecurityUtils.getUserId());
        List<TLotteryEvent> data = lotteryEventClient.getLotteryEventList(getLotteryEventList).getData();
        if (data.size() > 0) {
            BigDecimal finalOrderPayMoney = orderPayMoney;
            List<TLotteryEvent> collect = data.stream().filter(s -> s.getPayMoney().compareTo(finalOrderPayMoney) <= 0).collect(Collectors.toList());
@@ -868,7 +875,10 @@
        appPlaceOrderVo.setLotteryDraw(false);
        // 返回AppPlaceOrderVo对象
        List<TLotteryEvent> data = lotteryEventClient.getLotteryEventList(2).getData();
        GetLotteryEventList getLotteryEventList = new GetLotteryEventList();
        getLotteryEventList.setActivityType(2);
        getLotteryEventList.setUserId(SecurityUtils.getUserId());
        List<TLotteryEvent> data = lotteryEventClient.getLotteryEventList(getLotteryEventList).getData();
        if (data.size() > 0) {
            BigDecimal finalOrderPayMoney = orderPayMoney;
            List<TLotteryEvent> collect = data.stream().filter(s -> s.getPayMoney().compareTo(finalOrderPayMoney) <= 0).collect(Collectors.toList());
@@ -1359,6 +1369,20 @@
            remoteActivityService.addActivityRecord(activityRecord);
            //扣除redis库存
            redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + activityId + "-" + goodsId, surpNum - buyNum);
            appPlaceOrderVo.setLotteryDraw(false);
            // 返回AppPlaceOrderVo对象
            GetLotteryEventList getLotteryEventList = new GetLotteryEventList();
            getLotteryEventList.setActivityType(2);
            getLotteryEventList.setUserId(SecurityUtils.getUserId());
            List<TLotteryEvent> data = lotteryEventClient.getLotteryEventList(getLotteryEventList).getData();
            if (data.size() > 0) {
                BigDecimal finalOrderPayMoney = orderPayMoney;
                List<TLotteryEvent> collect = data.stream().filter(s -> s.getPayMoney().compareTo(finalOrderPayMoney) <= 0).collect(Collectors.toList());
                if (collect.size() > 0) {
                    appPlaceOrderVo.setLotteryDraw(true);
                    appPlaceOrderVo.setLotteryEventId(collect.get(0).getId());
                }
            }
        } catch (Exception e){
            log.error("活动订单购买失败:"+e.getMessage());
            throw new ServiceException(e.getMessage());
@@ -1638,7 +1662,10 @@
        appPlaceOrderVo.setPrepayId(orderPayment.getPrepayId());
        appPlaceOrderVo.setLotteryDraw(false);
        // 返回AppPlaceOrderVo对象
        List<TLotteryEvent> data = lotteryEventClient.getLotteryEventList(2).getData();
        GetLotteryEventList getLotteryEventList = new GetLotteryEventList();
        getLotteryEventList.setActivityType(2);
        getLotteryEventList.setUserId(SecurityUtils.getUserId());
        List<TLotteryEvent> data = lotteryEventClient.getLotteryEventList(getLotteryEventList).getData();
        if (data.size() > 0) {
            List<TLotteryEvent> collect = data.stream().filter(s -> s.getPayMoney().compareTo(order.getPayMoney()) <= 0).collect(Collectors.toList());
            if (collect.size() > 0) {
@@ -1881,6 +1908,12 @@
                merVerifyOrderVo.setReceiveMoney(BigDecimal.ZERO);
            }
        }
        if(null == merVerifyOrderVo.getRealReceiveMoney()){
            merVerifyOrderVo.setRealReceiveMoney(BigDecimal.ZERO);
        }
        if(null == merVerifyOrderVo.getReceiveMoney()){
            merVerifyOrderVo.setReceiveMoney(BigDecimal.ZERO);
        }
        merVerifyOrderVo.setUnReceiveMoney(merVerifyOrderVo.getRealReceiveMoney().subtract(merVerifyOrderVo.getReceiveMoney()));
        merVerifyOrderVo.setUserId(order.getUserId());
        merVerifyOrderVo.setUserName(member.getRealName());
@@ -1987,9 +2020,9 @@
        }
        Member member = remoteMemberService.getMember(order.getUserId()).getData();
        //获取核销商户
        ShopRelUserVo shopRelUserVo = remoteShopService.getShopByUserId(merVerifyOrderDto.getUserId()).getData();
        Long shopId = shopRelUserVo.getShopId();
        log.info("当前核销员工【" + shopRelUserVo.getUserName() + "】门店ID:" + shopId);
//        ShopRelUserVo shopRelUserVo = remoteShopService.getShopByUserId(merVerifyOrderDto.getUserId()).getData();
        Long shopId = member.getRelationShopId();
//        log.info("当前核销员工【" + shopRelUserVo.getUserName() + "】门店ID:" + shopId);
        //获取订单商品列表
        List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listAppVoByOrderId(orderId);
        //绑定用户判断核销商户
@@ -2055,38 +2088,13 @@
        ConsumerGoods consumerGoods;
        String consumerGoodsId;
        Goods goods;
        //循环生成商品服务
        List<ConsumerGoods> consumerGoodsList = new ArrayList<>();
        for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) {
            Integer buyNum = appUserOrderGoodsPageVo.getBuyNum();
            //判断是否次数未确认商品 是则创建未确认周期商品服务 否则循环创建商品服务
            if (appUserOrderGoodsPageVo.getCycleNumFlag() == 0) {
                consumerGoods = new ConsumerGoods();
                goods = goodsMap.get(appUserOrderGoodsPageVo.getGoodsId());
                consumerGoodsId = IdUtils.simpleUUID();
                consumerGoods.setConsumerGoodsId(consumerGoodsId);
                consumerGoods.setDelFlag(0);
                consumerGoods.setServiceStatus(1);
                consumerGoods.setShopId(order.getShopId());
                consumerGoods.setUserId(order.getUserId());
                consumerGoods.setOrderId(orderId);
                consumerGoods.setOrderGoodsId(appUserOrderGoodsPageVo.getOrderGoodsId());
                consumerGoods.setGoodsId(appUserOrderGoodsPageVo.getGoodsId());
                consumerGoods.setGoodsName(appUserOrderGoodsPageVo.getGoodsName());
                consumerGoods.setCycleNumFlag(appUserOrderGoodsPageVo.getCycleNumFlag());
                consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum());
                consumerGoods.setUsedNum(0);
                consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType());
                consumerGoods.setGoodsTag(appUserOrderGoodsPageVo.getGoodsTag());
                consumerGoods.setCreateTime(nowTime);
                consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
                consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture());
                consumerGoods.setGoodsNurses(goods.getGoodsNurses());
                consumerGoods.setSourceFrom(1);
                consumerGoods.setSureNum(buyNum);
                consumerGoodsList.add(consumerGoods);
            } else {
                for (int i = 0; i < buyNum; i++) {
        if(null != appUserOrderGoodsPageVoList.get(0).getGoodsId()){
            //循环生成商品服务
            List<ConsumerGoods> consumerGoodsList = new ArrayList<>();
            for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) {
                Integer buyNum = appUserOrderGoodsPageVo.getBuyNum();
                //判断是否次数未确认商品 是则创建未确认周期商品服务 否则循环创建商品服务
                if (appUserOrderGoodsPageVo.getCycleNumFlag() == 0) {
                    consumerGoods = new ConsumerGoods();
                    goods = goodsMap.get(appUserOrderGoodsPageVo.getGoodsId());
                    consumerGoodsId = IdUtils.simpleUUID();
@@ -2109,11 +2117,38 @@
                    consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture());
                    consumerGoods.setGoodsNurses(goods.getGoodsNurses());
                    consumerGoods.setSourceFrom(1);
                    consumerGoods.setSureNum(buyNum);
                    consumerGoodsList.add(consumerGoods);
                } else {
                    for (int i = 0; i < buyNum; i++) {
                        consumerGoods = new ConsumerGoods();
                        goods = goodsMap.get(appUserOrderGoodsPageVo.getGoodsId());
                        consumerGoodsId = IdUtils.simpleUUID();
                        consumerGoods.setConsumerGoodsId(consumerGoodsId);
                        consumerGoods.setDelFlag(0);
                        consumerGoods.setServiceStatus(1);
                        consumerGoods.setShopId(order.getShopId());
                        consumerGoods.setUserId(order.getUserId());
                        consumerGoods.setOrderId(orderId);
                        consumerGoods.setOrderGoodsId(appUserOrderGoodsPageVo.getOrderGoodsId());
                        consumerGoods.setGoodsId(appUserOrderGoodsPageVo.getGoodsId());
                        consumerGoods.setGoodsName(appUserOrderGoodsPageVo.getGoodsName());
                        consumerGoods.setCycleNumFlag(appUserOrderGoodsPageVo.getCycleNumFlag());
                        consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum());
                        consumerGoods.setUsedNum(0);
                        consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType());
                        consumerGoods.setGoodsTag(appUserOrderGoodsPageVo.getGoodsTag());
                        consumerGoods.setCreateTime(nowTime);
                        consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
                        consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture());
                        consumerGoods.setGoodsNurses(goods.getGoodsNurses());
                        consumerGoods.setSourceFrom(1);
                        consumerGoodsList.add(consumerGoods);
                    }
                }
            }
            consumerGoodsService.saveBatchConsumerGoods(consumerGoodsList);
        }
        consumerGoodsService.saveBatchConsumerGoods(consumerGoodsList);
        //生成返回
        MerVerifyOrderVo merVerifyOrderVo = new MerVerifyOrderVo();
        merVerifyOrderVo.setOrderId(orderId);
@@ -2166,25 +2201,27 @@
            order.setNewMemberFlag(0);
        }
        this.saveOrUpdate(order);
        // 订单金额大于0时进行分账
        OrderPayment orderPayment = orderPaymentService.getOne(new QueryWrapper<OrderPayment>()
                .eq("order_id", order.getOrderId()).eq("pay_status", 2)
                .eq("del_flag", 0));
        BigDecimal bigDecimal = orderPayment.getPayMoney().subtract(orderPayment.getFeeAmount()).setScale(2, BigDecimal.ROUND_HALF_EVEN);
        if (bigDecimal.compareTo(BigDecimal.ZERO)>0) {
            // TODO: 2023/10/17  更换分账渠道(汇付天下)
        if(4 != order.getOrderFrom()){
            // 订单金额大于0时进行分账
            OrderPayment orderPayment = orderPaymentService.getOne(new QueryWrapper<OrderPayment>()
                    .eq("order_id", order.getOrderId()).eq("pay_status", 2)
                    .eq("del_flag", 0));
            BigDecimal bigDecimal = orderPayment.getPayMoney().subtract(orderPayment.getFeeAmount()).setScale(2, BigDecimal.ROUND_HALF_EVEN);
            if (bigDecimal.compareTo(BigDecimal.ZERO)>0) {
                // TODO: 2023/10/17  更换分账渠道(汇付天下)
//            submitProfitSharing(orderId, order.getOrderNo(), order.getShopId(), order.getOnlinePayMoney(),order.getOrderFrom());
            submitProfitSharing1(orderId, order.getOrderNo(), order.getShopId(), bigDecimal, order.getOrderFrom());
        }
        //创建支付记录
        if(merVerifyOrderDto.getRelPayMoney().compareTo(BigDecimal.ZERO)>0){
            PayRecord payRecord = new PayRecord();
            payRecord.setDelFlag(0);
            payRecord.setOrderId(order.getOrderId());
            payRecord.setPayMoney(merVerifyOrderDto.getRelPayMoney());
            payRecord.setPayTime(new Date());
            payRecord.setPayType(merVerifyOrderDto.getPayType());
            payRecordService.save(payRecord);
                submitProfitSharing1(orderId, order.getOrderNo(), order.getShopId(), bigDecimal, order.getOrderFrom());
            }
            //创建支付记录
            if(merVerifyOrderDto.getRelPayMoney().compareTo(BigDecimal.ZERO)>0){
                PayRecord payRecord = new PayRecord();
                payRecord.setDelFlag(0);
                payRecord.setOrderId(order.getOrderId());
                payRecord.setPayMoney(merVerifyOrderDto.getRelPayMoney());
                payRecord.setPayTime(new Date());
                payRecord.setPayType(merVerifyOrderDto.getPayType());
                payRecordService.save(payRecord);
            }
        }
        //更新用户积分和消费统计
        MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto();
@@ -2219,8 +2256,15 @@
//    @GlobalTransactional(rollbackFor = Exception.class) todo 放开分布式事务注解
    public MerVerifyOrderVo sureVerifyOrderDouYin(MerVerifyOrderDto merVerifyOrderDto) {
        String phone = merVerifyOrderDto.getPhone();
        String name = merVerifyOrderDto.getName();
        String orderId = merVerifyOrderDto.getOrderId();
        Long shopId = merVerifyOrderDto.getShopId();
        if(StringUtils.isEmpty(phone)){
            throw new ServiceException("请填写核销用户电话号码");
        }
        if(StringUtils.isEmpty(name)){
            throw new ServiceException("请填写核销用户姓名");
        }
        //获取核销商户
        Shop shop = remoteShopService.getShop(shopId).getData();
        CertificatePrepareResponseData data = VerifyUtil.certificatePrepare(orderId);
@@ -2231,7 +2275,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();
        //次卡信息
@@ -2245,7 +2296,28 @@
        }
        Member member = remoteMemberService.getMemberByMobile(phone).getData();//绑定用户判断核销商户
        if(null == member){
            throw new ServiceException("手机号还未注册账户,请先进行注册");
            //创建新用户
            String memberId = IdUtils.simpleUUID();
            SysUser sysUser = new SysUser();
            sysUser.setUserName(memberId);
            sysUser.setUserType("03");
            sysUser.setNickName(name);
            sysUser.setPhonenumber(phone);
            sysUser.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png");
            String password = "hongruitang";
            sysUser.setPassword(SecurityUtils.encryptPassword(password));
            sysUser = remoteUserService.registerUser(sysUser).getData();
            member = new Member();
            member.setMemberId(memberId);
            member.setUserId(sysUser.getUserId());
            member.setMobile(phone);
            member.setRealName(name);
            member.setNickName(name);
            member.setBindingFlag(1);
            member.setBindingType(3);
            member.setRelationShopId(shopId);
            member.setRelationShopName(shop.getShopName());
            remoteMemberService.createNewMember(member);
        }
        if (member.getBindingFlag() == 1) {
            if (!member.getRelationShopId().equals(shopId)) {
@@ -2259,10 +2331,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("抖音券核销失败");
        }
@@ -2310,7 +2383,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);
            //创建服务商品
@@ -2323,15 +2396,14 @@
            orderGoods.setGoodsPrice(originAmount);
            orderGoods.setGoodsTotalMoney(originAmount);
            orderGoods.setGoodsReceivableMoney(originAmount);
            orderGoods.setBuyNum(1);
            orderGoods.setBuyNum(itemList.size());
            ConsumerGoods consumerGoods = new ConsumerGoods();
            consumerGoods.setUsedNum(merVerifyOrderDto.getNumber());
            if(null != timeCard){
                //核销一次加一次
                orderGoods.setBuyNum(1);
                orderGoods.setServiceNum(1);
                consumerGoods.setServiceNum(timeCard.getTimesCount());
                consumerGoods.setUsedNum(1);
                orderGoods.setBuyNum(itemList.size());
                orderGoods.setServiceNum(merVerifyOrderDto.getNumber());
                consumerGoods.setServiceNum(itemList.size());
                consumerGoods.setUseTime(new Date());
            }
            orderGoods.setCycleNumFlag(1);
@@ -2344,7 +2416,7 @@
            consumerGoods.setServiceStatus(1);
            consumerGoods.setShopId(order.getShopId());
            consumerGoods.setUserId(order.getUserId());
            consumerGoods.setOrderId(orderId);
            consumerGoods.setOrderId(order.getOrderId());
            consumerGoods.setOrderGoodsId(orderGoods.getOrderGoodsId());
            consumerGoods.setGoodsName(sku.getTitle());
            consumerGoods.setCycleNumFlag(1);
@@ -2355,7 +2427,7 @@
            //生成返回
            MerVerifyOrderVo merVerifyOrderVo = new MerVerifyOrderVo();
            merVerifyOrderVo.setOrderId(orderId);
            merVerifyOrderVo.setOrderId(order.getOrderId());
            merVerifyOrderVo.setOrderNo(order.getOrderNo());
            merVerifyOrderVo.setOrderStatus(order.getOrderStatus());
            merVerifyOrderVo.setOrderFrom(order.getOrderFrom());
@@ -2424,7 +2496,7 @@
                if (integral > 0) {
                    memberTotalChangeDto.setChangeIntegral(integral);
                    memberTotalChangeDto.setTypeIntegral(1);
                    memberTotalChangeDto.setOrderId(orderId);
                    memberTotalChangeDto.setOrderId(order.getOrderId());
                    memberTotalChangeDto.setOrderNo(order.getOrderNo());
                }
            }
@@ -2435,14 +2507,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());
@@ -2450,7 +2520,7 @@
            consumerGoodsService.updateById(consumerGoods);
            //生成返回
            MerVerifyOrderVo merVerifyOrderVo = new MerVerifyOrderVo();
            merVerifyOrderVo.setOrderId(orderId);
            merVerifyOrderVo.setOrderId(order.getOrderId());
            merVerifyOrderVo.setOrderNo(order.getOrderNo());
            merVerifyOrderVo.setOrderStatus(order.getOrderStatus());
            merVerifyOrderVo.setOrderFrom(order.getOrderFrom());
@@ -2504,8 +2574,15 @@
//    @GlobalTransactional(rollbackFor = Exception.class) todo 放开分布式事务注解
    public MerVerifyOrderVo sureVerifyOrderKuaiShou(MerVerifyOrderDto merVerifyOrderDto) {
        String phone = merVerifyOrderDto.getPhone();
        String name = merVerifyOrderDto.getName();
        String orderId = merVerifyOrderDto.getOrderId();
        Long shopId = merVerifyOrderDto.getShopId();
        if(StringUtils.isEmpty(phone)){
            throw new ServiceException("请填写核销用户电话号码");
        }
        if(StringUtils.isEmpty(name)){
            throw new ServiceException("请填写核销用户姓名");
        }
        //获取核销商户
        Shop shop = remoteShopService.getShop(shopId).getData();
        VerifyPrepareDataNew data = KSVerifyUtil.certificatePrepare(redisService, orderId);
@@ -2516,7 +2593,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("优惠券已过期");
@@ -2537,11 +2615,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("快手券核销失败");
        }
@@ -2589,7 +2668,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);
            //创建服务商品
@@ -2600,13 +2679,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);
@@ -2617,13 +2695,13 @@
            consumerGoods.setServiceStatus(1);
            consumerGoods.setShopId(order.getShopId());
            consumerGoods.setUserId(order.getUserId());
            consumerGoods.setOrderId(orderId);
            consumerGoods.setOrderId(order.getOrderId());
            consumerGoods.setGoodsId(sku.getSku_id());
            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);
@@ -2631,7 +2709,7 @@
            consumerGoodsService.save(consumerGoods);
            //生成返回
            MerVerifyOrderVo merVerifyOrderVo = new MerVerifyOrderVo();
            merVerifyOrderVo.setOrderId(orderId);
            merVerifyOrderVo.setOrderId(order.getOrderId());
            merVerifyOrderVo.setOrderNo(order.getOrderNo());
            merVerifyOrderVo.setOrderStatus(order.getOrderStatus());
            merVerifyOrderVo.setOrderFrom(order.getOrderFrom());
@@ -2700,7 +2778,7 @@
                if (integral > 0) {
                    memberTotalChangeDto.setChangeIntegral(integral);
                    memberTotalChangeDto.setTypeIntegral(1);
                    memberTotalChangeDto.setOrderId(orderId);
                    memberTotalChangeDto.setOrderId(order.getOrderId());
                    memberTotalChangeDto.setOrderNo(order.getOrderNo());
                }
            }
@@ -2711,12 +2789,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());
@@ -2724,7 +2801,7 @@
            consumerGoodsService.updateById(consumerGoods);
            //生成返回
            MerVerifyOrderVo merVerifyOrderVo = new MerVerifyOrderVo();
            merVerifyOrderVo.setOrderId(orderId);
            merVerifyOrderVo.setOrderId(order.getOrderId());
            merVerifyOrderVo.setOrderNo(order.getOrderNo());
            merVerifyOrderVo.setOrderStatus(order.getOrderStatus());
            merVerifyOrderVo.setOrderFrom(order.getOrderFrom());
@@ -4046,6 +4123,12 @@
        mgtOrderTotal.setActivityOrderMoneyTotal(mgtOrderTotalThird.getActivityOrderMoneyTotal());
        mgtOrderTotal.setActivityPayMoneyTotal(mgtOrderTotalThird.getActivityPayMoneyTotal());
        mgtOrderTotal.setActivityUnPayMoneyTotal(mgtOrderTotalThird.getActivityOrderMoneyTotal().subtract(mgtOrderTotalThird.getActivityPayMoneyTotal()));
        mgtOrderTotal.setThirdOrderTotal(mgtOrderTotalFour.getThirdOrderTotal());
        mgtOrderTotal.setThirdOrderMoneyTotal(mgtOrderTotalFour.getThirdOrderMoneyTotal());
        mgtOrderTotal.setThirdPayMoneyTotal(mgtOrderTotalFour.getThirdPayMoneyTotal());
        mgtOrderTotal.setThirdUnPayMoneyTotal(mgtOrderTotalFour.getThirdOrderMoneyTotal().subtract(mgtOrderTotalFour.getThirdPayMoneyTotal()));
        return mgtOrderTotal;
    }
@@ -4432,7 +4515,7 @@
     */
    private List<MgtMapBigTotalVo> bigListRemoveNull(List<MgtMapBigTotalVo> MgtMapIntTotalVos) {
        for (int i = 0; i < MgtMapIntTotalVos.size(); i++) {
            if(null != MgtMapIntTotalVos.get(i).getMapKey() && MgtMapIntTotalVos.get(i).getMapKey().isEmpty()){
            if(null == MgtMapIntTotalVos.get(i).getMapKey() || MgtMapIntTotalVos.get(i).getMapKey().isEmpty()){
                MgtMapIntTotalVos.remove(i);
            }
        }
@@ -4938,6 +5021,9 @@
            for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) {
                mgtMapIntTotalVo = new MgtMapIntTotalVo();
                mgtMapBigTotalVo = new MgtMapBigTotalVo();
                if(null == MgtMapIntTotalVoGoodsType.get(i).getMapKey()){
                    continue;
                }
                mgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
                mgtMapBigTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond());
                if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("1")) {
@@ -5641,7 +5727,8 @@
        if (memberGiftRecord.getGiftFrom() == 2 && !memberGiftRecord.getShopId().equals(shopId)) {
            throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
        }
        merVerifyAwardVo.setUserId(member.getUserId());
        merVerifyAwardVo.setUserName(member.getRealName());
        merVerifyAwardVo.setUserMobile(member.getMobile());
        if (1 == memberGiftRecord.getPrizeFrom()) {