| | |
| | | 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.response.statistics.RateStatisticsDTO; |
| | | import com.mzl.flower.dto.response.statistics.SaleStatisticsDTO; |
| | | 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.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; |
| | |
| | | |
| | | @Autowired |
| | | private CustomerMapper customerMapper; |
| | | |
| | | @Autowired |
| | | private UserAccessMapper userAccessMapper; |
| | | |
| | | public SaleStatisticsDTO getSaleStatistics(String date){ |
| | | if(StringUtils.isEmpty(date)){ |
| | |
| | | |
| | | RateStatisticsDTO dto = new RateStatisticsDTO(); |
| | | //TODO 用户访问量:点击到交易大厅或者商品详情页面计算,同一个用户,每天只计算一次(包含游客)(并计算新增量,计算日环比) |
| | | 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; |
| | | } |
| | | |
| | |
| | | |
| | | 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); |
| | | } |
| | | } |
| | | } |