From ae1471f378f399f76518539ec8992e64a3673436 Mon Sep 17 00:00:00 2001 From: 陶杰 <1378534974@qq.com> Date: 星期三, 08 一月 2025 15:26:06 +0800 Subject: [PATCH] 1.订单提交:订单最小金额配置 --- src/main/java/com/mzl/flower/service/statistics/StatisticsService.java | 100 ++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 88 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/mzl/flower/service/statistics/StatisticsService.java b/src/main/java/com/mzl/flower/service/statistics/StatisticsService.java index a2c7a37..0677b95 100644 --- a/src/main/java/com/mzl/flower/service/statistics/StatisticsService.java +++ b/src/main/java/com/mzl/flower/service/statistics/StatisticsService.java @@ -1,30 +1,40 @@ package com.mzl.flower.service.statistics; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.mzl.flower.config.exception.ValidationException; +import com.mzl.flower.config.security.SecurityUtils; import com.mzl.flower.constant.Constants; import com.mzl.flower.dto.request.flower.FlowerQueryDTO; import com.mzl.flower.dto.request.payment.OrderItemSalesQueryDTO; import com.mzl.flower.dto.request.payment.OrderQueryDTO; +import com.mzl.flower.dto.response.payment.OrderStatusCountDTO; import com.mzl.flower.dto.response.statistics.FlowerStatisticsDTO; import com.mzl.flower.dto.response.statistics.OrderStatisticsDTO; import com.mzl.flower.dto.response.statistics.RateStatisticsDTO; import com.mzl.flower.dto.response.statistics.SaleStatisticsDTO; +import com.mzl.flower.dto.response.wallet.WalletWithdrawVO; import com.mzl.flower.entity.customer.Customer; +import com.mzl.flower.entity.ip.UserAccess; import com.mzl.flower.entity.payment.Order; import com.mzl.flower.entity.supplier.Supplier; import com.mzl.flower.mapper.customer.CustomerMapper; import com.mzl.flower.mapper.flower.FlowerMapper; +import com.mzl.flower.mapper.ip.UserAccessMapper; import com.mzl.flower.mapper.payment.*; import com.mzl.flower.mapper.supplier.SupplierMapper; +import com.mzl.flower.mapper.wallet.WalletMapper; import com.mzl.flower.service.BaseService; +import com.mzl.flower.utils.IpUtil; import io.micrometer.core.instrument.util.StringUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDate; @@ -54,6 +64,12 @@ @Autowired private CustomerMapper customerMapper; + + @Autowired + private UserAccessMapper userAccessMapper; + + @Autowired + private WalletMapper walletMapper; public SaleStatisticsDTO getSaleStatistics(String date){ if(StringUtils.isEmpty(date)){ @@ -95,14 +111,27 @@ .eq("is_enabled", 1) .eq("status", "P") .eq("deleted", 0)); - dto.setSupplierCount(sc.longValue());//用户管理:统计商户列表已启用的全部用户(点击跳转到商户列表) + dto.setSupplierCount(sc.longValue()); - Integer oc = orderMapper.selectCount(new QueryWrapper<Order>() - .eq("deleted", 0) - .isNotNull("payment_time") - .isNull("cancel_time") - .isNull("refund_time")); - dto.setOrderCount(oc.longValue());//订单管理:全部订单数量-待付款-已取消-已退款(点击跳转到订单列表) + Integer cc = customerMapper.selectCount(new QueryWrapper<Customer>() + .eq("is_enabled", 1) + .eq("deleted", 0)); + dto.setCustomerCount(cc.longValue());//用户管理:统计商户列表已启用的全部用户(点击跳转到商户列表) + + //订单管理:全部订单数量-待付款-已取消-已退款(点击跳转到订单列表) + List<OrderStatusCountDTO> ll = orderMapper.getOrderStatusCount(new OrderQueryDTO()); + Integer oc = 0; + if (ll != null && ll.size() > 0) { + for (OrderStatusCountDTO c : ll) { + if(Constants.ORDER_STATUS_BACKEND.PENDING.name().equals(c.getValue()) + || Constants.ORDER_STATUS_BACKEND.CANCEL.name().equals(c.getValue()) + || Constants.ORDER_STATUS_BACKEND.REFUND.name().equals(c.getValue())){ + continue; + } + oc += c.getOrderCount(); + } + } + dto.setOrderCount(oc.longValue()); page = new Page(1, 1); OrderQueryDTO oq = new OrderQueryDTO(); @@ -143,8 +172,13 @@ dto.setTotalSaleAmount(a); dto.setTotalSaleFlowerCount(c == null ? 0 : c.longValue()); - dto.setSupplierPendingAmount(new BigDecimal(0));//TODO 供应商待提现:结算列表待结算(供应商)+供应商钱包余额 - dto.setSupplierCompleteAmount(new BigDecimal(0));//TODO 供应商已提现:结算列表已结算(供应商)+供应商钱包已提现金额 + WalletWithdrawVO withdrawTotal = walletMapper.getSumWithdrawTotal(); + BigDecimal sumHistoryWithdrawTotal = walletMapper.getSumHistoryWithdrawTotal(); + dto.setSupplierPendingAmount(withdrawTotal.getSupplierPendingAmount().add(sumHistoryWithdrawTotal)); + dto.setSupplierCompleteAmount(withdrawTotal.getSupplierCompleteAmount().add(sumHistoryWithdrawTotal)); + +// dto.setSupplierPendingAmount(new BigDecimal(0));//TODO 供应商待提现:结算列表待结算(供应商)+供应商钱包余额 +// dto.setSupplierCompleteAmount(new BigDecimal(0));//TODO 供应商已提现:结算列表已结算(供应商)+供应商钱包已提现金额 return dto; } @@ -297,8 +331,22 @@ LocalDateTime beginY = begin.plusDays(-1); RateStatisticsDTO dto = new RateStatisticsDTO(); - //TODO 用户访问量:点击到交易大厅或者商品详情页面计算,同一个用户,每天只计算一次(包含游客)(并计算新增量,计算日环比) + //用户访问量:点击到交易大厅或者商品详情页面计算,同一个用户,每天只计算一次(包含游客)(并计算新增量,计算日环比) + Integer c = userAccessMapper.selectCount(new QueryWrapper<UserAccess>()); + dto.setCount(c.longValue()); + + Integer cT = userAccessMapper.selectCount(new QueryWrapper<UserAccess>() + .gt("create_time", begin) + .le("create_time", end) + ); + dto.setCountToday(cT.longValue()); + + Integer cY = userAccessMapper.selectCount(new QueryWrapper<UserAccess>() + .gt("create_time", beginY) + .le("create_time", endY) + ); + dto.setCountRate(getRate(cT, cY)); return dto; } @@ -334,7 +382,7 @@ sq = new OrderItemSalesQueryDTO(); sq.setStatusList(statusList); sq.setSalesStartDate(begin); - sq.setSalesStartDate(end); + sq.setSalesEndDate(end); orderItemSalesMapper.selectItemSalesList(page, sq); dto.setCountToday(page.getTotal()); @@ -342,7 +390,7 @@ sq = new OrderItemSalesQueryDTO(); sq.setStatusList(statusList); sq.setSalesStartDate(beginY); - sq.setSalesStartDate(endY); + sq.setSalesEndDate(endY); orderItemSalesMapper.selectItemSalesList(page, sq); dto.setCountRate(getRate(dto.getCountToday().intValue(), (int)page.getTotal())); @@ -356,8 +404,36 @@ BigDecimal yy = BigDecimal.valueOf(yesterday); BigDecimal rate = ttyy.divide(yy, 2, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)); return rate.doubleValue(); + } else if (today <= 0) { + return 0D; } return 100D; } + + + public void addUserAccessRecord(HttpServletRequest request){ + String userId = SecurityUtils.getUserId(); + String ip = null; + try { + ip = IpUtil.getIpAddress(request); + } catch (IOException e) { + ip = "127.0.0.1"; + } + String ipId = ip+":"+(StringUtils.isBlank(userId)?"0":userId); + + LocalDate localDate = LocalDate.now(); + LocalDateTime end = localDate.atTime(23, 59, 59); + LocalDateTime begin = localDate.atTime(0, 0, 0); + int count = userAccessMapper.selectCount(new LambdaQueryWrapper<UserAccess>() + .eq(UserAccess::getIpId, ipId) + .gt(UserAccess::getCreateTime, begin) + .le(UserAccess::getCreateTime, end)); + if(count==0){ + UserAccess record = new UserAccess(); + record.setIpId(ipId); + record.setCreateTime(LocalDateTime.now()); + userAccessMapper.insert(record); + } + } } -- Gitblit v1.9.3