package cn.lili.modules.statistics.serviceimpl; import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateTime; import cn.lili.common.security.context.UserContext; import cn.lili.common.security.enums.UserEnums; import cn.lili.common.utils.BeanUtil; import cn.lili.modules.goods.entity.enums.GoodsAuthEnum; import cn.lili.modules.goods.entity.enums.GoodsStatusEnum; import cn.lili.modules.order.order.entity.enums.FlowTypeEnum; import cn.lili.modules.order.order.entity.enums.OrderStatusEnum; import cn.lili.modules.order.trade.entity.enums.AfterSaleTypeEnum; import cn.lili.modules.statistics.entity.dto.GoodsStatisticsQueryParam; import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam; import cn.lili.modules.statistics.entity.enums.SearchTypeEnum; import cn.lili.modules.statistics.entity.vo.*; import cn.lili.modules.statistics.service.*; import cn.lili.modules.statistics.util.StatisticsDateUtil; import cn.lili.modules.store.entity.enums.BillStatusEnum; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Date; import java.util.List; import java.util.Map; import java.util.Objects; /** * 首页统计数据业务层实现 * * @author Bulbasaur * @since 2020/12/15 17:57 */ @Service public class IndexStatisticsServiceImpl implements IndexStatisticsService { /** * 订单统计 */ @Autowired private OrderStatisticsService orderStatisticsService; /** * 会员统计 */ @Autowired private MemberStatisticsService memberStatisticsService; /** * 商品统计 */ @Autowired private GoodsStatisticsService goodsStatisticsService; /** * 商品统计 */ @Autowired private StoreFlowStatisticsService storeFlowStatisticsService; /** * 店铺 */ @Autowired private StoreStatisticsService storeStatisticsService; /** * 店铺 */ @Autowired private MemberEvaluationStatisticsService memberEvaluationStatisticsService; /** * 售后 */ @Autowired private AfterSaleStatisticsService afterSaleStatisticsService; /** * 投诉 */ @Autowired private OrderComplaintStatisticsService orderComplaintStatisticsService; /** * 分销员提现 */ @Autowired private DistributionCashStatisticsService distributionCashStatisticsService; /** * 平台PV统计 */ @Autowired private PlatformViewService platformViewService; /** * 结算单 */ @Autowired private BillStatisticsService billStatisticsService; /** * 秒杀活动 */ @Autowired private SeckillStatisticsService seckillStatisticsService; @Override public IndexNoticeVO indexNotice() { IndexNoticeVO indexNoticeVO = new IndexNoticeVO(); //商品审核 indexNoticeVO.setGoods(goodsStatisticsService.goodsNum(null, GoodsAuthEnum.TOBEAUDITED)); //店铺入驻审核 indexNoticeVO.setStore(storeStatisticsService.auditNum()); //售后申请 indexNoticeVO.setRefund(afterSaleStatisticsService.applyNum(null)); //投诉审核 indexNoticeVO.setComplain(orderComplaintStatisticsService.waitComplainNum()); //分销员提现审核 indexNoticeVO.setDistributionCash(distributionCashStatisticsService.newDistributionCash()); //待处理商家结算 indexNoticeVO.setWaitPayBill(billStatisticsService.billNum(BillStatusEnum.CHECK)); return indexNoticeVO; } @Override public IndexStatisticsVO indexStatistics() { //首页统计内容 IndexStatisticsVO indexStatisticsVO = new IndexStatisticsVO(); //获取总订单数量 indexStatisticsVO.setOrderNum(orderStatisticsService.orderNum(null)); //获取总会员数量 indexStatisticsVO.setMemberNum(memberStatisticsService.getMemberCount()); //获取总上架商品数量 indexStatisticsVO.setGoodsNum(goodsStatisticsService.goodsNum(GoodsStatusEnum.UPPER, GoodsAuthEnum.PASS)); //获取总店铺数量 indexStatisticsVO.setStoreNum(storeStatisticsService.storeNum()); //下单统计 Map map = storeFlowStatisticsService.getOrderStatisticsPrice(); //今日下单数 indexStatisticsVO.setTodayOrderNum(map.get("num") == null ? 0L : Long.parseLong(map.get("num").toString())); //今日下单金额 indexStatisticsVO.setTodayOrderPrice(map.get("price") == null ? 0D : Double.parseDouble(map.get("price").toString())); //今日新增会员数量 indexStatisticsVO.setTodayMemberNum(memberStatisticsService.todayMemberNum()); //今日新增商品数量 indexStatisticsVO.setTodayGoodsNum(goodsStatisticsService.todayUpperNum()); //今日新增店铺数量 indexStatisticsVO.setTodayStoreNum(storeStatisticsService.todayStoreNum()); //今日新增评论数量 indexStatisticsVO.setTodayMemberEvaluation(memberEvaluationStatisticsService.todayMemberEvaluation()); //当前在线人数 indexStatisticsVO.setCurrentNumberPeopleOnline(platformViewService.online()); //流量统计 StatisticsQueryParam queryParam = new StatisticsQueryParam(); //今日uv queryParam.setSearchType(SearchTypeEnum.TODAY.name()); indexStatisticsVO.setTodayUV(platformViewService.countUv(queryParam)); // 昨日访问数UV queryParam.setSearchType(SearchTypeEnum.YESTERDAY.name()); indexStatisticsVO.setYesterdayUV(platformViewService.countUv(queryParam)); // 前七日访问数UV queryParam.setSearchType(SearchTypeEnum.LAST_SEVEN.name()); indexStatisticsVO.setLastSevenUV(platformViewService.countUv(queryParam)); // 三十日访问数UV queryParam.setSearchType(SearchTypeEnum.LAST_THIRTY.name()); indexStatisticsVO.setLastThirtyUV(platformViewService.countUv(queryParam)); return indexStatisticsVO; } @Override public StoreIndexStatisticsVO storeIndexStatistics() { String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId(); StoreIndexStatisticsVO storeIndexStatisticsVO = new StoreIndexStatisticsVO(); //商品总数量 storeIndexStatisticsVO.setGoodsNum(goodsStatisticsService.goodsNum(GoodsStatusEnum.UPPER, null)); //订单总数量、订单总金额 Map map = storeFlowStatisticsService.getOrderStatisticsPrice(); storeIndexStatisticsVO.setOrderNum(Convert.toInt(map.get("num").toString())); storeIndexStatisticsVO.setOrderPrice(map.get("price") != null ? Double.parseDouble(map.get("price").toString()) : 0.0); storeIndexStatisticsVO.setAlertQuantityNum(goodsStatisticsService.alertQuantityNum()); //访问量 StatisticsQueryParam queryParam = new StatisticsQueryParam(); queryParam.setSearchType(SearchTypeEnum.TODAY.name()); queryParam.setStoreId(storeId); PlatformViewVO platformViewVO = platformViewService.list(queryParam).get(0); storeIndexStatisticsVO.setStoreUV(platformViewVO.getUvNum().intValue()); //待付款订单数量 storeIndexStatisticsVO.setUnPaidOrder(orderStatisticsService.orderNum(OrderStatusEnum.UNPAID.name())); //待发货订单数量 storeIndexStatisticsVO.setUnDeliveredOrder(orderStatisticsService.orderNum(OrderStatusEnum.UNDELIVERED.name())); //待收货订单数量 storeIndexStatisticsVO.setDeliveredOrder(orderStatisticsService.orderNum(OrderStatusEnum.DELIVERED.name())); //待自提数量 storeIndexStatisticsVO.setSelfPickNum(orderStatisticsService.orderNum(OrderStatusEnum.STAY_PICKED_UP.name())); //待处理退货数量 storeIndexStatisticsVO.setReturnGoods(afterSaleStatisticsService.applyNum(AfterSaleTypeEnum.RETURN_GOODS.name())); //待处理退款数量 storeIndexStatisticsVO.setReturnMoney(afterSaleStatisticsService.applyNum(AfterSaleTypeEnum.RETURN_MONEY.name())); //待回复评价数量 storeIndexStatisticsVO.setMemberEvaluation(memberEvaluationStatisticsService.getWaitReplyNum()); //待处理投诉数量 storeIndexStatisticsVO.setComplaint(orderComplaintStatisticsService.waitComplainNum()); //待上架商品数量 storeIndexStatisticsVO.setWaitUpper(goodsStatisticsService.goodsNum(GoodsStatusEnum.DOWN, null)); //待审核商品数量 storeIndexStatisticsVO.setWaitAuth(goodsStatisticsService.goodsNum(null, GoodsAuthEnum.TOBEAUDITED)); //可参与秒杀活动数量 storeIndexStatisticsVO.setSeckillNum(seckillStatisticsService.getApplyNum()); //待处理商家结算 storeIndexStatisticsVO.setWaitPayBill(billStatisticsService.billNum(BillStatusEnum.OUT)); return storeIndexStatisticsVO; } @Override public List goodsStatistics(GoodsStatisticsQueryParam statisticsQueryParam) { //查询商品 return storeFlowStatisticsService.getGoodsStatisticsData(statisticsQueryParam, 10); } @Override public List storeStatistics(StatisticsQueryParam statisticsQueryParam) { QueryWrapper queryWrapper = Wrappers.query(); Date[] dates = StatisticsDateUtil.getDateArray(statisticsQueryParam); Date startTime = dates[0], endTime = dates[1]; queryWrapper.between("create_time", startTime, endTime); queryWrapper.orderByDesc("price"); queryWrapper.groupBy("store_id,store_name "); queryWrapper.eq("flow_type", FlowTypeEnum.PAY.name()); //查询前十条记录 Page page = new Page(1, 10); return storeFlowStatisticsService.getStoreStatisticsData(page, queryWrapper); } /** * 获取当月查询参数 * * @return 当月查询参数 */ private StatisticsQueryParam getStatisticsQueryParam() { StatisticsQueryParam statisticsQueryParam = new StatisticsQueryParam(); return statisticsQueryParam; } /** * 获取当月订单查询条件 * * @return 当月订单查询参数 */ private GoodsStatisticsQueryParam getGoodsStatisticsQueryParam() { GoodsStatisticsQueryParam goodsStatisticsQueryParam = new GoodsStatisticsQueryParam(); StatisticsQueryParam statisticsQueryParam = this.getStatisticsQueryParam(); BeanUtil.copyProperties(goodsStatisticsQueryParam, statisticsQueryParam); //如果登录是商家的账号,获取商家相关统计内容 if (UserContext.getCurrentUser().getRole().equals(UserEnums.STORE)) { goodsStatisticsQueryParam.setStoreId(UserContext.getCurrentUser().getStoreId()); } DateTime dateTime = new DateTime(); goodsStatisticsQueryParam.setYear(dateTime.year()); goodsStatisticsQueryParam.setMonth(dateTime.monthBaseOne()); return goodsStatisticsQueryParam; } }