| | |
| | | // @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); |
| | |
| | | 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(); |
| | | //次卡信息 |
| | |
| | | } |
| | | 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)) { |
| | |
| | | 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("抖音券核销失败"); |
| | | } |
| | |
| | | order.setUseTime(nowTime); |
| | | order.setUseUserId(merVerifyOrderDto.getUserId()); |
| | | order.setCloseFlag(1); |
| | | order.setGoodsNum(1); |
| | | order.setGoodsNum(itemList.size()); |
| | | order.setCouponMoney(BigDecimal.ZERO); |
| | | this.save(order); |
| | | //创建服务商品 |
| | |
| | | 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); |
| | |
| | | }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()); |
| | |
| | | // @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); |
| | |
| | | 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("优惠券已过期"); |
| | |
| | | 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("快手券核销失败"); |
| | | } |
| | |
| | | order.setUseTime(nowTime); |
| | | order.setUseUserId(merVerifyOrderDto.getUserId()); |
| | | order.setCloseFlag(1); |
| | | order.setGoodsNum(1); |
| | | order.setGoodsNum(itemList.size()); |
| | | order.setCouponMoney(BigDecimal.ZERO); |
| | | this.save(order); |
| | | //创建服务商品 |
| | |
| | | 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); |
| | |
| | | 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); |
| | |
| | | }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()); |
| | |
| | | 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")) { |