| | |
| | | import java.math.RoundingMode; |
| | | |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDateTime; |
| | | import java.time.*; |
| | | |
| | | import java.time.ZoneId; |
| | | import java.time.ZoneOffset; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.*; |
| | | |
| | | import java.util.function.Function; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | |
| | | e.printStackTrace(); |
| | | throw new ServiceException("生成核销码失败"); |
| | | } |
| | | if(3!=order.getOrderStatus()){ |
| | | //不属于未使用的,应该有个核销\取消时间 |
| | | orderDetailVO.setEndTime(order.getEndTime()); |
| | | } |
| | | //该商品是否被用户评论 |
| | | Long evaluateId = goodsEvaluateClient.getEvaluateIdByOrderId(order.getId()).getData(); |
| | | orderDetailVO.setEvaluateId(evaluateId); |
| | |
| | | * @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(); |
| | |
| | | } |
| | | |
| | | |
| | | 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()); |
| | | } |
| | | |
| | | } |
| | | return pageInfo.setRecords(list);*/ |
| | | return null; |
| | | return pageInfo.setRecords(list); |
| | | } |
| | | |
| | | /** |
| | |
| | | @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()) { |
| | |
| | | //退款成功再回退积分 |
| | | AppUser appUser = appUserClient.getAppUserById(order.getAppUserId()); |
| | | if (order.getPoint()>0) { |
| | | if(null==appUser.getCancelPoint()){ |
| | | appUser.setCancelPoint(0); |
| | | } |
| | | //返回订单抵扣积分 |
| | | Integer historicalPoint = appUser.getAvailablePoint(); |
| | | Integer availablePoint = appUser.getAvailablePoint() + order.getPoint();//可用积分 |
| | |
| | | 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"))); |
| | |
| | | //判断是否是积分支付 |
| | | if (type == 1) {//现金 |
| | | confirmOrderVo.setOrderMoney(confirmOrderVo.getCash()); |
| | | Integer availablePoint = appUser.getAvailablePoint();//用户可用积分 |
| | | |
| | | BigDecimal maxPointDeductionAmount = getCashByPoint(availablePoint);//最大可抵扣金额 |
| | | |
| | | //计算积分抵扣的金额 将积分转为金额,去掉小数 |
| | | BigDecimal deduction=getCashByPoint(confirmOrderVo.getResidualPoint()); |
| | | //实际抵扣金额 |
| | | BigDecimal deduction= maxPointDeductionAmount.min(confirmOrderVo.getCash()); |
| | | confirmOrderVo.setDeduction(deduction); |
| | | }else {//积分 |
| | | confirmOrderVo.setOrderPoint(good.getIntegral()); |
| | | confirmOrderVo.setOrderPoint(confirmOrderVo.getPoint()); |
| | | } |
| | | //限购检查 |
| | | //判断当前数量是否已经超出限购数量(需要计算已经购买的数量) |
| | |
| | | order.setPointDeductionAmount(pointDeductionAmount.setScale(2, RoundingMode.HALF_EVEN)); |
| | | order.setPaymentAmount(paymentMoney);//实际支付价格 |
| | | order.setPoint(orderPoint);//使用积分 |
| | | order.setPayMethod(orderPayment.getPaymentType());//支付方式 |
| | | if (orderPayment.getPaymentType()==3 && orderPoint>0){//微信支付 但支付的积分也大于0 |
| | | order.setPayMethod(4);//组合支付 |
| | | }else { |
| | | order.setPayMethod(orderPayment.getPaymentType());//积分或者微信 |
| | | } |
| | | order.setPayStatus(1); |
| | | order.setShopId(orderPayment.getShopId()); |
| | | order.setDelFlag(0); |
| | |
| | | } |
| | | //判断积分是否为零,积分支付 |
| | | if (0 != order.getPoint()){ |
| | | if (null==appUser.getAvailablePoint()){ |
| | | appUser.setAvailablePoint(0); |
| | | } |
| | | if (null==appUser.getExchangePoint()){ |
| | | appUser.setExchangePoint(0); |
| | | } |
| | | |
| | | //积分支付 |
| | | Integer historicalPoint = appUser.getAvailablePoint();//历史积分 |
| | | Integer availablePoint = historicalPoint - orderPoint;//可用积分 |
| | |
| | | |
| | | //门店增加冻结资金 即增加余额, 冻结资金=余额-可用资金 |
| | | Shop shop = shopClient.getShopById(order.getShopId()).getData(); |
| | | if (null==shop.getBalance()){ |
| | | shop.setBalance(BigDecimal.ZERO); |
| | | } |
| | | |
| | | BigDecimal historicalBalance=shop.getBalance();//历史余额 |
| | | BigDecimal variableAmount=goods.getSellingPrice();//变动金额 |
| | | BigDecimal balance=shop.getBalance().add(goods.getSellingPrice());//变动后余额 |
| | |
| | | queryWrapper.eq("shop_id", shopId); |
| | | } |
| | | // 添加订单状态条件 |
| | | if (status != null) { |
| | | queryWrapper.eq("order_status", status); |
| | | if (status != null&&status==4) { //4-已完成 8-已评价 |
| | | queryWrapper.in("order_status",Arrays.asList(4,8)); |
| | | } |
| | | if (status != null&&status!=4) {//3-待核销 5-已取消 |
| | | queryWrapper.eq("order_status",status); |
| | | } |
| | | // 模糊查询条件 |
| | | if (StringUtils.isNotBlank(content)) { |
| | |
| | | return R.fail("订单取消失败"); |
| | | } |
| | | order.setOrderStatus(5); |
| | | order.setEndTime(LocalDateTime.now()); |
| | | R r = refundPayMoney(order); |
| | | if (200 == r.getCode()) { |
| | | this.updateById(order); |
| | | } |
| | | return r; |
| | | } |
| | | |
| | | /** |
| | | * 后台-工作台-折线图 |
| | | * @param startTime |
| | | * @param endTime |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<OrderStatisticsDetail> getOrderListGroupByDate(LocalDate startTime, LocalDate endTime) { |
| | | // 查询数据库获取原始数据 |
| | | List<OrderStatisticsDetail> rawData = orderMapper.getOrderListGroupByDate( |
| | | startTime.atTime(0,0, 0), |
| | | endTime.atTime(23,59,59) |
| | | ); |
| | | |
| | | // 创建完整日期范围的映射 |
| | | Map<LocalDate, OrderStatisticsDetail> dateMap = rawData.stream() |
| | | .collect(Collectors.toMap( |
| | | OrderStatisticsDetail::getDateTime, |
| | | Function.identity() |
| | | )); |
| | | |
| | | // 生成完整日期序列并填充缺失数据 |
| | | List<OrderStatisticsDetail> completeList = new ArrayList<>(); |
| | | for (LocalDate date = startTime; !date.isAfter(endTime); date = date.plusDays(1)) { |
| | | if (dateMap.containsKey(date)) { |
| | | completeList.add(dateMap.get(date)); |
| | | } else { |
| | | completeList.add(new OrderStatisticsDetail(date, 0, BigDecimal.ZERO)); |
| | | } |
| | | } |
| | | return completeList; |
| | | } |
| | | |
| | | |
| | | private OrderPageListVo convertToOrderListVo(Order order) { |
| | | OrderPageListVo vo = new OrderPageListVo(); |
| | |
| | | if (user != null) { |
| | | vo.setPhone(user.getPhone()); |
| | | } |
| | | vo.setIdStr(order.getId().toString()); |
| | | return vo; |
| | | } |
| | | |