| | |
| | | |
| | | @Override |
| | | public OrderDetailVO getOrderDetail(Long orderId) { |
| | | OrderDetailVO orderDetailVO = new OrderDetailVO(); |
| | | Order order = orderMapper.selectById(orderId); |
| | | if (order == null) { |
| | | throw new ServiceException("订单不存在"); |
| | |
| | | if (!R.isSuccess(shopR)) { |
| | | throw new ServiceException("获取门店信息失败"); |
| | | } |
| | | |
| | | AppUser appUserById = appUserClient.getAppUserById(order.getAppUserId()); |
| | | if (appUserById != null) { |
| | | orderDetailVO.setUsername(appUserById.getName()); |
| | | } |
| | | // 商品 |
| | | OrderGood orderGood = orderGoodMapper.selectOne(new LambdaQueryWrapper<OrderGood>().eq(OrderGood::getOrderId, orderId)); |
| | | String goodJson = orderGood.getGoodJson(); |
| | | Goods goods = JSONObject.parseObject(goodJson, Goods.class); |
| | | GoodsSeckill goodsSeckill = JSON.parseObject(orderGood.getSeckillJson(), GoodsSeckill.class); |
| | | |
| | | OrderGoodsVO orderGoodsVO = new OrderGoodsVO(); |
| | | |
| | | orderGoodsVO.setGoodsId(goods.getId()); |
| | | orderGoodsVO.setGoodsName(goods.getName()); |
| | | orderGoodsVO.setGoodsPic(goods.getHomePagePicture()); |
| | |
| | | |
| | | orderGoodsVO.setOriginalPrice(goods.getOriginalPrice()); |
| | | |
| | | OrderDetailVO orderDetailVO = new OrderDetailVO(); |
| | | |
| | | orderDetailVO.setOrderGoodsVO(orderGoodsVO); |
| | | Shop shop = shopR.getData(); |
| | | |
| | |
| | | * @return |
| | | */ |
| | | @Override |
| | | public PageInfo<OrderPageListVo> getOrderPageList(OrderPageList orderPageList) { |
| | | /* Long userid = tokenService.getLoginUser().getUserid(); |
| | | SysUser sysUser = sysUserClient.getSysUser(userid).getData(); |
| | | if (2 == sysUser.getRoleType()) { |
| | | orderPageList.setShopId(sysUser.getObjectId()); |
| | | } |
| | | //搜索条件,用户姓名 |
| | | if (StringUtils.isNotEmpty(orderPageList.getUserName())) { |
| | | List<AppUser> data = appUserClient.getAppUserByNameNoFilter(orderPageList.getUserName()).getData(); |
| | | List<Long> collect = data.stream().map(AppUser::getId).collect(Collectors.toList()); |
| | | if (CollectionUtils.isEmpty(collect)) { |
| | | return new PageInfo<>(); |
| | | } |
| | | if (null != orderPageList.getAppUserIds()) { |
| | | List<Long> appUserIds = orderPageList.getAppUserIds(); |
| | | appUserIds.addAll(collect); |
| | | orderPageList.setAppUserIds(appUserIds); |
| | | } else { |
| | | orderPageList.setAppUserIds(collect); |
| | | } |
| | | } |
| | | public PageInfo<OrderManagePageListVO> getOrderPageList(OrderPageList orderPageList) { |
| | | //搜索条件,用户电话 |
| | | if (StringUtils.isNotEmpty(orderPageList.getPhone())) { |
| | | List<AppUser> data = appUserClient.getAppUserByPhoneNoFilter(orderPageList.getPhone()).getData(); |
| | |
| | | orderPageList.setAppUserIds(orderPageList.getAppUserIds().stream().distinct().collect(Collectors.toList())); |
| | | } |
| | | |
| | | //搜索条件 店铺名称 |
| | | if (StringUtils.isNotEmpty(orderPageList.getShopName())){ |
| | | List<Integer> shopSet = new ArrayList<>(shopClient.getShopIdByName(orderPageList.getShopName()).getData()); |
| | | if (CollectionUtils.isEmpty(shopSet)) { |
| | | return new PageInfo<>(); |
| | | } |
| | | if (null != orderPageList.getShopIds()) { |
| | | List<Integer> shopIds = orderPageList.getShopIds(); |
| | | if (!containsIntegerAny(shopIds, shopSet)) { |
| | | return new PageInfo<>(); |
| | | } |
| | | shopIds.addAll(shopSet); |
| | | orderPageList.setShopIds(shopIds); |
| | | } else { |
| | | orderPageList.setShopIds(shopSet); |
| | | } |
| | | } |
| | | if (null != orderPageList.getShopIds()) { |
| | | orderPageList.setShopIds(orderPageList.getShopIds().stream().distinct().collect(Collectors.toList())); |
| | | } |
| | | |
| | | PageInfo<OrderPageListVo> pageInfo = new PageInfo<>(orderPageList.getPageCurr(), orderPageList.getPageSize()); |
| | | PageInfo<OrderManagePageListVO> pageInfo = new PageInfo<>(orderPageList.getPageCurr(), orderPageList.getPageSize()); |
| | | |
| | | List<OrderPageListVo> list = this.baseMapper.getOrderPageList(pageInfo, orderPageList); |
| | | for (OrderPageListVo orderPageListVo : list) { |
| | | List<OrderManagePageListVO> list = this.baseMapper.getOrderPageList(pageInfo, orderPageList); |
| | | |
| | | for (OrderManagePageListVO orderPageListVo : list) { |
| | | Long appUserId = orderPageListVo.getAppUserId(); |
| | | AppUser appUser = appUserClient.getAppUserById(appUserId); |
| | | if (null != appUser) { |
| | | orderPageListVo.setUserName(appUser.getName()); |
| | | orderPageListVo.setPhone(appUser.getPhone()); |
| | | } |
| | | String expressJson = orderPageListVo.getExpressJson(); |
| | | if (StringUtils.isNotEmpty(expressJson) && !expressJson.equals("NULL")) { |
| | | JSONObject jsonObject = null; |
| | | try { |
| | | jsonObject = JSONObject.parseObject(expressJson); |
| | | String companyName = ExpressCompanyMap.getCompanyNameByCode(jsonObject.getString("com")); |
| | | orderPageListVo.setExpressCompany(companyName); |
| | | orderPageListVo.setExpressNum(jsonObject.getString("num")); |
| | | } catch (Exception e) { |
| | | } |
| | | |
| | | //店铺名称 |
| | | Shop shop = shopClient.getShopById(orderPageListVo.getShopId()).getData(); |
| | | if (null != shop) { |
| | | orderPageListVo.setShopName(shop.getName()); |
| | | } |
| | | orderPageListVo.setIdStr(orderPageListVo.getId().toString()); |
| | | |
| | | } |
| | | return pageInfo.setRecords(list);*/ |
| | | return null; |
| | | return pageInfo.setRecords(list); |
| | | } |
| | | |
| | | /** |
| | |
| | | |
| | | // 遍历 list2,检查是否有元素存在于 set1 中 |
| | | for (Long element : list2) { |
| | | if (set1.contains(element)) { |
| | | return true; |
| | | } |
| | | } |
| | | |
| | | // 如果没有找到共同元素,返回 false |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * 判断 list1 是否包含 list2 中的至少一个元素 |
| | | * |
| | | * @param list1 第一个列表 |
| | | * @param list2 第二个列表 |
| | | * @return 如果 list1 包含 list2 中的至少一个元素,返回 true;否则返回 false |
| | | */ |
| | | private boolean containsIntegerAny(List<Integer> list1, List<Integer> list2) { |
| | | // 将 list1 转换为 HashSet 以提高查询效率 |
| | | Set<Integer> set1 = new HashSet<>(list1); |
| | | |
| | | // 遍历 list2,检查是否有元素存在于 set1 中 |
| | | for (Integer element : list2) { |
| | | if (set1.contains(element)) { |
| | | return true; |
| | | } |
| | |
| | | @Override |
| | | public R cancelOrder(Long orderId) { |
| | | Order order = this.getById(orderId); |
| | | if (Arrays.asList(5, 6, 7).contains(order.getOrderStatus())) { |
| | | if (Arrays.asList(4,5,8).contains(order.getOrderStatus())) { |
| | | return R.fail("无效的操作"); |
| | | } |
| | | if (null != order.getAfterSaleTime() && LocalDateTime.now().isAfter(order.getAfterSaleTime())) { |
| | | return R.fail("订单取消失败"); |
| | | } |
| | | |
| | | order.setOrderStatus(5); |
| | | R r = refundPayMoney(order); |
| | | if (200 == r.getCode()) { |
| | |
| | | orderInfo.setOrderNumber(order.getOrderNumber()); |
| | | orderInfo.setOrderStatus(order.getOrderStatus()); |
| | | orderInfo.setCreateTime(order.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); |
| | | orderInfo.setPointDeductionAmount(order.getPointDeductionAmount()); |
| | | |
| | | AppUser appUser = appUserClient.getAppUserById(order.getAppUserId()); |
| | | if (null != appUser) { |
| | | orderInfo.setUserName(appUser.getName()); |
| | |
| | | orderInfo.setPaymentAmount(order.getPaymentAmount()); |
| | | |
| | | |
| | | List<OrderGood> orderGoods = orderGoodMapper.selectList(new LambdaQueryWrapper<OrderGood>().eq(OrderGood::getOrderId, orderId).eq(OrderGood::getDelFlag, 0)); |
| | | int sum = orderGoods.stream().mapToInt(OrderGood::getNum).sum(); |
| | | orderInfo.setGoodsNum(sum); |
| | | List<Object> goodsJson = new ArrayList<>(); |
| | | for (OrderGood orderGood : orderGoods) { |
| | | Goods goods = JSON.parseObject(orderGood.getGoodJson(), Goods.class); |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("name", goods.getName()); |
| | | map.put("imgUrl", goods.getHomePagePicture()); |
| | | map.put("number", orderGood.getNum()); |
| | | goodsJson.add(map); |
| | | OrderGood orderGood = orderGoodMapper.selectOne(new LambdaQueryWrapper<OrderGood>().eq(OrderGood::getOrderId, orderId).eq(OrderGood::getDelFlag, 0)); |
| | | orderInfo.setGoodsNum(1); |
| | | orderInfo.setGoodsJson(orderGood.getGoodJson()); |
| | | if (null != orderGood.getSeckillJson()&& !"".equals(orderGood.getSeckillJson())) { |
| | | orderInfo.setSeckillJson(orderGood.getSeckillJson()); |
| | | orderInfo.setActivityName("秒杀活动"); |
| | | } |
| | | orderInfo.setGoodsJson(JSON.toJSONString(goodsJson)); |
| | | |
| | | |
| | | |
| | | orderInfo.setPoint(order.getPoint()); |
| | | if (null != order.getAfterSaleTime()) { |
| | | orderInfo.setAfterSaleTime(order.getAfterSaleTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); |
| | |
| | | order.setPointDeductionAmount(pointDeductionAmount.setScale(2, RoundingMode.HALF_EVEN)); |
| | | order.setPaymentAmount(paymentMoney);//实际支付价格 |
| | | order.setPoint(orderPoint);//使用积分 |
| | | order.setPayMethod(orderPayment.getPaymentType());//支付方式 |
| | | if (orderPayment.getPaymentType()==1 && orderPoint>0){//微信支付 但支付的积分也大于0 |
| | | order.setPayMethod(4);//组合支付 |
| | | }else { |
| | | order.setPayMethod(orderPayment.getPaymentType());//积分或者微信 |
| | | } |
| | | order.setPayStatus(1); |
| | | order.setShopId(orderPayment.getShopId()); |
| | | order.setDelFlag(0); |
| | |
| | | UniPayResult uniPayResult = PaymentUtil.uniPay(order.getOrderNumber(), paymentMoney.doubleValue(), "购买单品商品", |
| | | goodsNames, "", "/order/order/orderPaymentCallback", appUser.getWxOpenid(), null); |
| | | if(null == uniPayResult || !"100".equals(uniPayResult.getRa_Code())){ |
| | | //支付失败,积分回退 ,删除订单 |
| | | //检查是否先有过积分抵扣了,是的话要返回订单已抵扣的积分,以及用户积分流水的删除 |
| | | if (order.getPoint()>0) { |
| | | //返回订单抵扣积分 |
| | | AppUser appUser2 = appUserClient.getAppUserById(order.getAppUserId()); |
| | | Integer availablePoint = appUser2.getAvailablePoint();//可用积分 |
| | | Integer variablePoint = order.getPoint();//变动积分 |
| | | Integer balance = appUser2.getAvailablePoint() + order.getPoint();//变动后积分 |
| | | Integer cancelPoint = appUser2.getCancelPoint() + order.getPoint();//取消订单积分 |
| | | appUser2.setAvailablePoint(availablePoint); |
| | | appUser2.setCancelPoint(cancelPoint); |
| | | appUser2.setTotalPoint(appUser2.getTotalPoint() + order.getPoint()); |
| | | |
| | | //构建积分流水记录 |
| | | UserPoint userPoint = new UserPoint(); |
| | | userPoint.setType(16);//取消订单 |
| | | userPoint.setHistoricalPoint(availablePoint); |
| | | userPoint.setVariablePoint(variablePoint); |
| | | userPoint.setBalance(balance); |
| | | userPoint.setCreateTime(LocalDateTime.now()); |
| | | userPoint.setAppUserId(appUser2.getId()); |
| | | userPoint.setObjectId(order.getId()); |
| | | userPointClient.saveUserPoint(userPoint); |
| | | |
| | | appUserClient.editAppUserById(appUser2); |
| | | |
| | | //删除订单 |
| | | order.setDelFlag(1); |
| | | orderMapper.updateById(order); |
| | | } |
| | | //返回报错信息 |
| | | return R.fail(null == uniPayResult ? "支付失败" : uniPayResult.getRb_CodeMsg()); |
| | | } |
| | | String rc_result = uniPayResult.getRc_Result(); |
| | |
| | | log.error("关闭订单失败:{}---->{}", order.getOrderNumber(), JSON.toJSONString(closeOrderResult)); |
| | | } |
| | | redisTemplate.opsForZSet().remove("OrderPayment", order.getOrderNumber()); |
| | | //关闭订单后,检查是否先有过积分抵扣了,是的话要返回订单已抵扣的积分,以及用户积分流水的删除 |
| | | //关闭订单后,检查是否先有过积分抵扣了,是的话要返回订单已抵扣的积分,以及用户积分流水的删除, 删除订单 |
| | | if (order.getPoint()>0) { |
| | | //返回订单抵扣积分 |
| | | AppUser appUser = appUserClient.getAppUserById(order.getAppUserId()); |
| | |
| | | userPointClient.saveUserPoint(userPoint); |
| | | |
| | | appUserClient.editAppUserById(appUser); |
| | | |
| | | //删除订单 |
| | | order.setDelFlag(1); |
| | | orderMapper.updateById(order); |
| | | } |
| | | } |
| | | } |
| | |
| | | Page<Order> page = new Page<>(pageNum, pageSize); |
| | | // 构建查询条件 |
| | | QueryWrapper<Order> queryWrapper = new QueryWrapper<>(); |
| | | //添加基础条件 |
| | | queryWrapper.eq("del_flag", 0); |
| | | queryWrapper.eq("pay_status", 2); |
| | | queryWrapper.orderByDesc("create_time"); |
| | | // 添加门店ID条件 |
| | | if (shopId != null) { |
| | | queryWrapper.eq("shop_id", shopId); |
| | |
| | | } |
| | | // 模糊查询条件 |
| | | if (StringUtils.isNotBlank(content)) { |
| | | //根据手机号查询用户id |
| | | List<Long> ids= new ArrayList<>(); |
| | | List<AppUser> data = appUserClient.getAppUserByPhone(content).getData(); |
| | | if (data != null && !data.isEmpty()) { |
| | | ids=data.stream().map(AppUser::getId).collect(Collectors.toList()); |
| | | } |
| | | // 构建OR条件组:订单编号/商品名/手机号 |
| | | if (null != ids && !ids.isEmpty()) { |
| | | queryWrapper.in("app_user_id",ids); |
| | | } |
| | | |
| | | queryWrapper.and(wrapper -> wrapper |
| | | .like("order_number", content) // 订单编号 |
| | | .or() |
| | | .like("goods_name", content) // 商品名 |
| | | .or() |
| | | .inSql("app_user_id", "select id from t_app_user where phone like '%" + content + "%'") // 手机号 |
| | | .like("good_name", content) // 商品名 |
| | | ); |
| | | } |
| | | |
| | |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<OrderStatisticsDetail> getOrderListGroupByDate(LocalDate startTime, LocalDate endTime) { |
| | | public List<OrderStatisticsDetail> getOrderListGroupByDate(LocalDate startTime, LocalDate endTime,Integer shopId) { |
| | | // 查询数据库获取原始数据 |
| | | List<OrderStatisticsDetail> rawData = orderMapper.getOrderListGroupByDate( |
| | | startTime.atTime(0,0, 0), |
| | | endTime.atTime(23,59,59) |
| | | endTime.atTime(23,59,59), |
| | | shopId |
| | | ); |
| | | |
| | | // 创建完整日期范围的映射 |