| | |
| | | import com.ruoyi.system.api.model.QwH5LoginVo; |
| | | import com.ruoyi.system.api.model.QwUserDetailDto; |
| | | import com.ruoyi.system.api.service.*; |
| | | import io.seata.spring.annotation.GlobalTransactional; |
| | | import lombok.extern.log4j.Log4j2; |
| | | import org.redisson.api.RLock; |
| | | import org.redisson.api.RedissonClient; |
| | |
| | | if(shop!=null&&shop.getShopStatus()!=1){ |
| | | throw new ServiceException(AppErrorConstant.SHOP_CLOSED); |
| | | } |
| | | Shop belongShop = remoteShopService.getShop(shop.getBelongShopId()).getData(); |
| | | // Shop belongShop = remoteShopService.getShop(shop.getBelongShopId()).getData(); |
| | | // 初始化订单对象 |
| | | AppSureOrderVo appSureOrderVo = new AppSureOrderVo(); |
| | | // 初始化订单商品列表 |
| | |
| | | appShopGoodsGetDto.setGoodsId(goods.getGoodsId()); |
| | | appShopGoodsGetDto.setShopId(appSureOrderDto.getShopId()); |
| | | ShopGoods shopGoods = remoteGoodsService.getShopGoods(appShopGoodsGetDto).getData(); |
| | | //商户是否定制价格 |
| | | if (shopGoods != null) { |
| | | goodsPrice = shopGoods.getSalesPrice(); |
| | | } else { |
| | | } |
| | | //是否绑定经销商 |
| | | if(shop.getBelongShopId()!=null &&shop.getShopType()==2){ |
| | | //经销商定制价格 |
| | | appShopGoodsGetDto.setGoodsId(goods.getGoodsId()); |
| | | appShopGoodsGetDto.setShopId(belongShop.getShopId()); |
| | | shopGoods = remoteGoodsService.getShopGoods(appShopGoodsGetDto).getData(); |
| | | AppShopGoodsGetDto shopGoodsGetDto=new AppShopGoodsGetDto(); |
| | | shopGoodsGetDto.setGoodsId(goods.getGoodsId()); |
| | | shopGoodsGetDto.setShopId(shop.getBelongShopId()); |
| | | Shop belongShop = remoteShopService.getShop(shop.getBelongShopId()).getData(); |
| | | shopGoods = remoteGoodsService.getShopGoods(shopGoodsGetDto).getData(); |
| | | if (1 == belongShop.getModifyPricePermission() && null != shopGoods) { |
| | | goodsPrice = shopGoods.getSalesPrice(); |
| | | goodsPrice=shopGoods.getSalesPrice(); |
| | | } |
| | | } |
| | | appSureOrderGoodsVo.setGoodsPrice(goodsPrice); |
| | |
| | | ShopGoods shopGoods = remoteGoodsService.getShopGoods(appShopGoodsGetDto).getData(); |
| | | if (shopGoods != null) { |
| | | goodsPrice = shopGoods.getSalesPrice(); |
| | | } else { |
| | | } |
| | | //是否绑定经销商 |
| | | if(shop.getBelongShopId()!=null &&shop.getShopType()==2){ |
| | | //经销商定制价格 |
| | | Shop belongShop = remoteShopService.getShop(shop.getBelongShopId()).getData(); |
| | | appShopGoodsGetDto = new AppShopGoodsGetDto(); |
| | |
| | | * @return |
| | | */ |
| | | @Override |
| | | @Transactional |
| | | @GlobalTransactional(rollbackFor = Exception.class) |
| | | @Transactional // todo 放开分布式事务注解 |
| | | // @GlobalTransactional(rollbackFor = Exception.class) |
| | | public AppPlaceOrderVo placeOrder(AppPlaceOrderDto appPlaceOrderDto) { |
| | | // 获取用户ID |
| | | Long userId = appPlaceOrderDto.getUserId(); |
| | |
| | | //使用优惠券 |
| | | StringJoiner memberCouponSJ = new StringJoiner(","); |
| | | List<String> goodsNameList = new ArrayList<>(); |
| | | Shop shop = remoteShopService.getShop(appPlaceOrderDto.getShopId()).getData(); |
| | | if(shop!=null&&shop.getShopStatus()!=1){ |
| | | throw new ServiceException(AppErrorConstant.SHOP_CLOSED); |
| | | } |
| | | // 遍历购买的商品列表 |
| | | for (AppBuyGoodsDto appBuyGoodsDto : appBuyGoodsDtoList) { |
| | | appSureOrderGoodsVo = new AppSureOrderGoodsVo(); |
| | |
| | | if (shopGoods != null) { |
| | | goodsPrice = shopGoods.getSalesPrice(); |
| | | serviceNum = shopGoods.getServiceNum(); |
| | | } else { |
| | | } |
| | | //是否绑定经销商 |
| | | if(shop.getBelongShopId()!=null &&shop.getShopType()==2){ |
| | | //经销商定制价格 |
| | | Shop shop = remoteShopService.getShop(appPlaceOrderDto.getShopId()).getData(); |
| | | Shop belongShop = remoteShopService.getShop(shop.getBelongShopId()).getData(); |
| | | appShopGoodsGetDto = new AppShopGoodsGetDto(); |
| | | appShopGoodsGetDto.setGoodsId(goods.getGoodsId()); |
| | |
| | | */ |
| | | @Override |
| | | @Transactional |
| | | @GlobalTransactional(rollbackFor = Exception.class) |
| | | // @GlobalTransactional(rollbackFor = Exception.class) todo 放开分布式事务注解 |
| | | public AppPlaceOrderVo placeActivityOrder(AppPlaceActivityDto appPlaceActivityDto) { |
| | | Long userId = appPlaceActivityDto.getUserId(); |
| | | Member member = remoteMemberService.getMember(userId).getData(); |
| | |
| | | List<TLotteryEvent> collect = data.stream().filter(s -> s.getPayMoney().compareTo(order.getPayMoney()) >= 0).collect(Collectors.toList()); |
| | | appPlaceOrderVo.setLotteryDraw(collect.size() > 0); |
| | | if (collect.size() > 0) { |
| | | appPlaceOrderVo.setLotteryEventId(collect.get(0).getEventId()); |
| | | appPlaceOrderVo.setLotteryEventId(collect.get(0).getId()); |
| | | } |
| | | } else { |
| | | appPlaceOrderVo.setLotteryDraw(false); |
| | |
| | | */ |
| | | @Override |
| | | @Transactional |
| | | @GlobalTransactional(rollbackFor = Exception.class) |
| | | // @GlobalTransactional(rollbackFor = Exception.class) todo 放开分布式事务注解 |
| | | public MerVerifyOrderVo sureVerifyOrder(MerVerifyOrderDto merVerifyOrderDto) { |
| | | String orderId = merVerifyOrderDto.getOrderId(); |
| | | BigDecimal relReceiveMoney = merVerifyOrderDto.getRelReceiveMoney(); |
| | |
| | | */ |
| | | @Override |
| | | @Transactional |
| | | @GlobalTransactional(rollbackFor = Exception.class) |
| | | // @GlobalTransactional(rollbackFor = Exception.class) todo 放开分布式事务注解 |
| | | public MerVerifyOrderVo sureVerifyOrderDouYin(MerVerifyOrderDto merVerifyOrderDto) { |
| | | String phone = merVerifyOrderDto.getPhone(); |
| | | String orderId = merVerifyOrderDto.getOrderId(); |
| | |
| | | */ |
| | | @Override |
| | | @Transactional |
| | | @GlobalTransactional(rollbackFor = Exception.class) |
| | | // @GlobalTransactional(rollbackFor = Exception.class) todo 放开分布式事务注解 |
| | | public MerVerifyCouponVo sureVerifyCoupon(MerVerifyCouponDto merVerifyCouponDto) { |
| | | R<MerVerifyCouponGetVo> verifyCoupon = remoteCouponService.getVerifyCoupon(merVerifyCouponDto.getMemberCouponId()); |
| | | if(verifyCoupon.getCode() != 200){ |
| | |
| | | */ |
| | | @Override |
| | | @Transactional |
| | | @GlobalTransactional(rollbackFor = Exception.class) |
| | | // @GlobalTransactional(rollbackFor = Exception.class) todo 放开分布式事务注解 |
| | | public MerVerifyAwardVo sureVerifyPrize(MerVerifyPrizeDto merVerifyPrizeDto) { |
| | | MerVerifyAwardVo merVerifyAwardVo = new MerVerifyAwardVo(); |
| | | MemberGiftRecord memberGiftRecord = remoteMemberService.getVerifyPrize(merVerifyPrizeDto.getPrizeId()).getData(); |
| | |
| | | */ |
| | | @Override |
| | | @Transactional |
| | | @GlobalTransactional(rollbackFor = Exception.class) |
| | | // @GlobalTransactional(rollbackFor = Exception.class) todo 放开分布式事务注解 |
| | | public void createNewOrder(MerNewOrderDto merNewOrderDto) { |
| | | Long userId = merNewOrderDto.getBuyUserId(); |
| | | Date nowTime = new Date(); |
| | |
| | | mgtTotalOrderTotalVo.setExperienceTotal(0); |
| | | mgtTotalOrderTotalVo.setServiceTotal(0); |
| | | mgtTotalOrderTotalVo.setItemTotal(0); |
| | | mgtTotalOrderTotalVo.setMeituan(0); |
| | | mgtTotalOrderTotalVo.setDouyin(0); |
| | | mgtTotalOrderTotalVo.setKuaishou(0); |
| | | mgtTotalOrderTotalVo.setMeituanAmount(new BigDecimal("0")); |
| | | mgtTotalOrderTotalVo.setDouyinAmount(new BigDecimal("0")); |
| | | mgtTotalOrderTotalVo.setKuaishouAmount(new BigDecimal("0")); |
| | | mgtTotalOrderTotalVo.setOrderMoney(new BigDecimal("0")); |
| | | mgtTotalOrderTotalVo.setOnlineMoney(new BigDecimal("0")); |
| | | mgtTotalOrderTotalVo.setOfflineMoney(new BigDecimal("0")); |
| | |
| | | mgtTotalOrderTotalVo.setOnlineMoney(totalOrderTotalVo.getOnlineMoney()); |
| | | mgtTotalOrderTotalVo.setOfflineMoney(totalOrderTotalVo.getOfflineMoney()); |
| | | mgtTotalOrderTotalVo.setActivityMoney(totalOrderTotalVo.getActivityMoney()); |
| | | mgtTotalOrderTotalVo.setMeituan(totalOrderTotalVo.getMeituan()); |
| | | mgtTotalOrderTotalVo.setDouyin(totalOrderTotalVo.getDouyin()); |
| | | mgtTotalOrderTotalVo.setKuaishou(totalOrderTotalVo.getKuaishou()); |
| | | mgtTotalOrderTotalVo.setMeituanAmount(totalOrderTotalVo.getMeituanAmount()); |
| | | mgtTotalOrderTotalVo.setDouyinAmount(totalOrderTotalVo.getDouyinAmount()); |
| | | mgtTotalOrderTotalVo.setKuaishouAmount(totalOrderTotalVo.getKuaishouAmount()); |
| | | //获取商品分类销售数据 |
| | | List<MgtMapTotalPlusVo> MgtMapIntTotalVoGoodsType = orderMapper.listPlTotalOrderTotalGoodsType(mgtBasePlatformDto); |
| | | List<MgtMapIntTotalVo> goodsTypeTotalList = new ArrayList<>(); |
| | |
| | | */ |
| | | @Override |
| | | @Transactional |
| | | @GlobalTransactional(rollbackFor = Exception.class) |
| | | // @GlobalTransactional(rollbackFor = Exception.class) todo 放开分布式事务注解 |
| | | public void autoCancelOrder(String orderId) { |
| | | //更新订单信息 |
| | | Order order = this.getById(orderId); |
| | |
| | | */ |
| | | @Override |
| | | @Transactional |
| | | @GlobalTransactional(rollbackFor = Exception.class) |
| | | // @GlobalTransactional(rollbackFor = Exception.class) todo 放开分布式事务注解 |
| | | public void payBack(PartnerTransactionsResult transaction, BigDecimal feeAmount) { |
| | | log.info("订单支付回调---"+transaction.toString()); |
| | | // 更新订单状态 outTradeNo |
| | |
| | | */ |
| | | @Override |
| | | @Transactional |
| | | @GlobalTransactional(rollbackFor = Exception.class) |
| | | // @GlobalTransactional(rollbackFor = Exception.class) todo 放开分布式事务注解 |
| | | public void refundOrder(String orderId) { |
| | | // 更新订单信息 |
| | | Order order = this.getById(orderId); |
| | |
| | | } |
| | | } |
| | | |
| | | @GlobalTransactional(rollbackFor = Exception.class) |
| | | // @GlobalTransactional(rollbackFor = Exception.class) todo 放开分布式事务注解 |
| | | private void autoTimeCancelOrder(Order order) { |
| | | String orderId = order.getOrderId(); |
| | | order.setOrderStatus(0); |
| | |
| | | } |
| | | return new ArrayList<>(); |
| | | } |
| | | /** |
| | | * 后台取消订单 |
| | | * 订单状态变为已取消 不退款 |
| | | * @param dto |
| | | */ |
| | | @Override |
| | | public R cancelOrderBySys(CancelOrderDTO dto) { |
| | | Order order = this.getById(dto.getOrderId()); |
| | | // 订单状态-1.删除 0.已取消 1.待支付 2.待核销 3.已完成 |
| | | if(null == order || order.getDelFlag() == -1){ |
| | | return R.fail("订单不存在"); |
| | | } |
| | | |
| | | if (order.getOrderStatus() == 0) { |
| | | return R.fail(AppErrorConstant.CANCEL_CANCEL_ORDER); |
| | | } else if (order.getOrderStatus() == 1) { |
| | | //删除待支付超时取消延时任务 |
| | | redisService.deleteObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + order.getOrderId()); |
| | | remoteConfigService.deleteDelayTask(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode()+"-"+order.getOrderId()); |
| | | order.setOrderStatus(0); |
| | | order.setCancelTime(new Date()); |
| | | this.saveOrUpdate(order); |
| | | } else if (order.getOrderStatus() == 2) { |
| | | // 2.待核销 |
| | | order.setOrderStatus(0); |
| | | order.setCancelTime(new Date()); |
| | | this.saveOrUpdate(order); |
| | | } else { |
| | | return R.fail(AppErrorConstant.CANCEL_ERROR_ORDER); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | @Override |
| | | public R refundOrderBySys(CancelOrderDTO dto) { |
| | | Order order = this.getById(dto.getOrderId()); |
| | | // 订单状态-1.删除 0.已取消 1.待支付 2.待核销 3.已完成 |
| | | if(null == order || order.getDelFlag() == -1){ |
| | | return R.fail("订单不存在"); |
| | | } |
| | | if (order.getOrderStatus() == 0) { |
| | | return R.fail(AppErrorConstant.CANCEL_CANCEL_ORDER); |
| | | }else if (order.getOrderStatus() == 1) { |
| | | //删除待支付超时取消延时任务 |
| | | redisService.deleteObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + order.getOrderId()); |
| | | remoteConfigService.deleteDelayTask(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode()+"-"+ order.getOrderId()); |
| | | this.autoCancelOrder( order.getOrderId()); |
| | | } else if (order.getOrderStatus() == 2) { |
| | | // 2.待核销 -> 订单退款 |
| | | this.refundOrder( order.getOrderId()); |
| | | } else { |
| | | return R.fail("已核销订单不能退款"); |
| | | } |
| | | return R.ok(); |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public List<MgtThirdOrderPageVo> pageMgtThirdOrder(Page<MgtThirdOrderPageVo> page, MgtThirdOrderPageDto dto) { |
| | | //如果区域代码不为null获取对应的商户id |
| | | if (StringUtils.isNotBlank(dto.getKeyword()) || StringUtils.isNotBlank(dto.getShopProvinceCode()) || StringUtils.isNotBlank(dto.getShopCityCode()) || StringUtils.isNotBlank(dto.getShopAreaCode())) { |
| | | MgtShopIdByCodeDto mgtShopIdByCodeDto = new MgtShopIdByCodeDto(); |
| | | mgtShopIdByCodeDto.setShopProvinceCode(dto.getShopProvinceCode()); |
| | | mgtShopIdByCodeDto.setShopCityCode(dto.getShopCityCode()); |
| | | mgtShopIdByCodeDto.setShopAreaCode(dto.getShopAreaCode()); |
| | | MgtShopIdByCodeVo mgtShopIdByCodeVo = remoteShopService.getShopIdByCode(mgtShopIdByCodeDto).getData(); |
| | | if (StringUtils.isNotBlank(mgtShopIdByCodeVo.getShopIds())) { |
| | | dto.setShopIds(mgtShopIdByCodeVo.getShopIds()); |
| | | } |
| | | } |
| | | //如果关键词不为null获取对应的用户id |
| | | if (StringUtils.isNotBlank(dto.getKeyword())) { |
| | | MgtUserIdByKeywordDto mgtUserIdByKeywordDto = new MgtUserIdByKeywordDto(); |
| | | mgtUserIdByKeywordDto.setKeyword(dto.getKeyword()); |
| | | MgtUserIdByKeywordVo mgtUserIdByKeywordVo = remoteMemberService.getUserIdByKeyword(mgtUserIdByKeywordDto).getData(); |
| | | if (StringUtils.isNotBlank(mgtUserIdByKeywordVo.getUserIds())) { |
| | | dto.setUserIds(mgtUserIdByKeywordVo.getUserIds()); |
| | | } |
| | | } |
| | | //数据权限 |
| | | List<Long> userId = remoteUserService.getScopeOfAuthorityUserId(); |
| | | BoardMemberTotalDto boardMemberTotalDto = new BoardMemberTotalDto(); |
| | | boardMemberTotalDto.setUserIds(userId); |
| | | List<Shop> shops = remoteShopService.getShopBySysUserIds(boardMemberTotalDto); |
| | | if (!shops.isEmpty()) { |
| | | List<Long> collect = shops.stream().map(Shop::getShopId).collect(Collectors.toList()); |
| | | String join = collect.stream().map(Object::toString).collect(Collectors.joining(",")); |
| | | String shopIds = dto.getShopIds(); |
| | | if(StringUtils.isNotEmpty(shopIds)){ |
| | | shopIds = shopIds + "," + join; |
| | | }else{ |
| | | shopIds = join; |
| | | } |
| | | dto.setShopIds(shopIds); |
| | | } |
| | | |
| | | // 从数据库中获取第三方订单列表 |
| | | List<MgtThirdOrderPageVo> thirdOrderPageVoList = orderMapper.pageMgtThirdOrder(page, dto); |
| | | // 如果列表不为空 |
| | | if (!thirdOrderPageVoList.isEmpty()) { |
| | | // 定义变量 |
| | | HashSet<Long> shopIdSet = new HashSet<>(); |
| | | BigDecimal zeroBig = new BigDecimal("0.00"); |
| | | // 遍历列表,获取店铺 ID 和用户 ID |
| | | for (MgtThirdOrderPageVo mgtActivityOrderPageVo : thirdOrderPageVoList) { |
| | | if(mgtActivityOrderPageVo.getShopId()!=null){ |
| | | shopIdSet.add(mgtActivityOrderPageVo.getShopId()); |
| | | } |
| | | } |
| | | // 将店铺 ID 和用户 ID 转换为逗号分隔的字符串 |
| | | String shopJoinedString = String.join(",", shopIdSet.stream().map(Object::toString).collect(Collectors.toList())); |
| | | // 从远程服务获取店铺和用户信息 |
| | | MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto(); |
| | | mgtBaseBathDto.setIds(shopJoinedString); |
| | | List<MgtSimpleShopVo> simpleShopVoList = remoteShopService.listShopSimpleVoByIds(mgtBaseBathDto).getData(); |
| | | Map<Long, MgtSimpleShopVo> shopMap = simpleShopVoList.stream() |
| | | .collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity())); |
| | | mgtBaseBathDto = new MgtBaseBathDto(); |
| | | // 遍历列表,设置店铺名称 |
| | | for (MgtThirdOrderPageVo mgtActivityOrderPageVo : thirdOrderPageVoList) { |
| | | if(mgtActivityOrderPageVo.getShopId()!=null){ |
| | | MgtSimpleShopVo mgtSimpleShopVo = shopMap.get(mgtActivityOrderPageVo.getShopId()); |
| | | mgtActivityOrderPageVo.setShopName(null == mgtSimpleShopVo ? "" : mgtSimpleShopVo.getShopName()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | return thirdOrderPageVoList; |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public MgtPlTotalThirdOrderStaticsVO getPlTotalThirdOrderStatics(MgtBasePlatformDto mgtBasePlatformDto) { |
| | | MgtPlTotalThirdOrderStaticsVO vo = new MgtPlTotalThirdOrderStaticsVO(); |
| | | //数据权限 |
| | | List<Long> userIdList = mgtBasePlatformDto.getUserIdList(); |
| | | List<Long> userIds = remoteUserService.getScopeOfAuthorityUserId(); |
| | | if(null != userIds){ |
| | | if(null != userIdList){ |
| | | userIdList.addAll(userIds); |
| | | }else{ |
| | | userIdList = userIds; |
| | | } |
| | | mgtBasePlatformDto.setUserIdList(userIdList); |
| | | } |
| | | List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData(); |
| | | if (mgtBasePlatformDto.getUserId() != null || StringUtils.isNotBlank(mgtBasePlatformDto.getShopProvinceCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopCityCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopAreaCode())) { |
| | | if(shopIdList==null||shopIdList.isEmpty()){ |
| | | return vo; |
| | | } |
| | | } |
| | | if(mgtBasePlatformDto.getShopId()!=null){ |
| | | shopIdList = new ArrayList<>(); |
| | | shopIdList.add(mgtBasePlatformDto.getShopId()); |
| | | } |
| | | mgtBasePlatformDto.setShopIdList(shopIdList); |
| | | // 从数据库中获取第三方订单统计 |
| | | vo = orderMapper.getPlTotalThirdOrderStatics(mgtBasePlatformDto); |
| | | return vo; |
| | | } |
| | | |
| | | @Override |
| | | public StaticsShopMgtGoodsVO getGoodsSellStatic(List<String> goodsIdList) { |
| | | return orderGoodsService.getGoodsSellStatic(goodsIdList); |
| | | } |
| | | } |