瀏覽代碼

订单统计部分查询接口

tianyunperfect 3 年之前
父節點
當前提交
3e99ae2262

+ 17 - 0
book-dao/src/main/java/com/book/dao/polardb/mapper/SunStaticOrderDay2Mapper.java

@@ -0,0 +1,17 @@
+package com.book.dao.polardb.mapper;
+
+import com.book.dao.polardb.entity.SunStaticOrderDay;
+import com.book.dao.polardb.pojo.example.SunStaticOrderDayExample;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.HashMap;
+import java.util.List;
+
+@Mapper
+@Repository
+public interface SunStaticOrderDay2Mapper {
+    HashMap selectHistory();
+
+}

+ 8 - 0
book-dao/src/main/resources/mapper/polar/SunStaticOrderDay2Mapper.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.book.dao.polardb.mapper.SunStaticOrderDay2Mapper">
+
+    <select id="selectHistory" resultType="java.util.HashMap">
+        SELECT SUM(t.active_count) as active_count,SUM(t.recharge_user_count) as recharge_user_count,SUM(t.recharge_sum) as recharge_sum from sun_static_order_day t;
+    </select>
+</mapper>

+ 53 - 0
book-server/src/main/java/com/book/server/controller/SunDataController.java

@@ -115,6 +115,59 @@ public class SunDataController extends BaseController {
         return Result.success();
     }
 
+    /**
+     * 获取今天订单统计
+     * @return
+     */
+    @GetMapping("/getTodayOrderStatic")
+    public Result getTodayOrderStatic() {
+        return Result.success(sunDataService.getTodayOrderStatic());
+    }
+
+    /**
+     * 获取今天订单统计按渠道
+     * @return
+     */
+    @GetMapping("/getTodayOrderStaticByChannel")
+    public Result getTodayOrderStaticByChannel() {
+        return Result.success(sunDataService.getTodayOrderStaticByChannel());
+    }
+
+    /**
+     * 获取昨天订单统计
+     * @return
+     */
+    @GetMapping("/getYesterdayOrderStatic")
+    public Result getYesterdayOrderStatic() {
+        return Result.success(sunDataService.getYesterdayOrderStatic());
+    }
+
+    /**
+     * 获取历史订单统计
+     * @return
+     */
+    @GetMapping("/getHistoryOrderStatic")
+    public Result getHistoryOrderStatic() {
+        return Result.success(sunDataService.getHistoryOrderStatic());
+    }
+
+    /**
+     * 订单统计-按天排序
+     * @return
+     */
+    @GetMapping("/getOrderStatics")
+    public Result getOrderStatics(int page,int size) {
+        return Result.success(sunDataService.getOrderStatics(page,size));
+    }
+    /**
+     * 订单统计-渠道-按天查询
+     * @return
+     */
+    @GetMapping("/getOrderStaticByDateAndChannel")
+    public Result getOrderStaticByDateAndChannel(String date,String channelId) {
+        return Result.success(sunDataService.getOrderStaticByDateAndChannel(date,channelId));
+    }
+
 
     public static void main(String[] args) {
         System.out.println(UUID.randomUUID().toString());

+ 16 - 4
book-server/src/main/java/com/book/server/service/SunDataService.java

@@ -1,16 +1,16 @@
 package com.book.server.service;
 
 import com.book.dao.VO.SunVO;
-import com.book.dao.polardb.entity.SunChannel;
-import com.book.dao.polardb.entity.SunOrder;
-import com.book.dao.polardb.entity.SunOrderCollect;
-import com.book.dao.polardb.entity.SunUserCollect;
+import com.book.dao.polardb.entity.*;
 import com.book.server.common.entity.PageResult;
 import com.book.server.common.entity.Result;
 import com.book.server.config.SunTypeEnum;
 import com.book.server.vo.SunNotifyRequest;
 import com.book.server.vo.SunRequest;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * created in 2021/9/28
  * Project: book-store
@@ -38,4 +38,16 @@ public interface SunDataService {
      */
     void orderStaticDate(String date);
 
+
+    SunStaticOrderDay getTodayOrderStatic();
+
+    SunStaticOrderDay getYesterdayOrderStatic();
+
+    Map getHistoryOrderStatic();
+
+    List<SunStaticOrderDayChannel> getTodayOrderStaticByChannel();
+
+    PageResult<SunStaticOrderDay> getOrderStatics(int page,int size);
+
+    List<SunStaticOrderDayChannel> getOrderStaticByDateAndChannel(String date, String channelId);
 }

+ 81 - 24
book-server/src/main/java/com/book/server/service/impl/SunDataServiceImpl.java

@@ -281,30 +281,22 @@ public class SunDataServiceImpl implements SunDataService {
     @Autowired
     private SunStaticOrderDayMapper sunStaticOrderDayMapper;
     @Autowired
+    private SunStaticOrderDay2Mapper sunStaticOrderDay2Mapper;
+    @Autowired
     private SunStaticOrderDayChannelMapper sunStaticOrderDayChannelMapper;
 
     private int getIntFromDb(Object obj) {
         return Integer.parseInt(String.valueOf(obj));
     }
+
     private float getFloatFromDb(Object obj) {
         return Float.parseFloat(String.valueOf(obj));
     }
 
-    @Override
-    public void orderStaticDate(String date) {
-        /*
-         * 清除指定日期的统计,因为可能重新计算
-         */
-        sunStaticOrderDayMapper.deleteByExample(SunStaticOrderDayExample.newAndCreateCriteria().andStaticDateEqualTo(date).example());
-        sunStaticOrderDayChannelMapper.deleteByExample(SunStaticOrderDayChannelExample.newAndCreateCriteria().andStaticDateEqualTo(date).example());
-
-        /*
-        开始统计
-         */
-        // 先不分渠道
+    private SunStaticOrderDay getSunOrderByDate(String date) {
         int i = sunUserActive2Mapper.selectActiveCountByDate(date);
         if (i <= 0) {
-            return;
+            return null;
         }
         HashMap<String, String> map = sunUserActive2Mapper.selectRechargeByDate(date);
         int recharge_count = getIntFromDb(map.get("recharge_count"));
@@ -322,10 +314,10 @@ public class SunDataServiceImpl implements SunDataService {
                 .rechargeAvg(String.format("%.2f", avg))
                 .createTime(TimeUtil.getCurrentTimestamp())
                 .build();
-        sunStaticOrderDayMapper.insert(staticOrderDay);
-        /*
-        分渠道统计
-         */
+        return staticOrderDay;
+    }
+
+    private List<SunStaticOrderDayChannel> getSunOrderByDateChannels(String date) {
         HashMap<String, Integer> activeMap = new HashMap<>();
         List<HashMap<String, String>> activeList = sunUserActive2Mapper.selectActiveCountByDateGroupByChannel(date);
         for (HashMap<String, String> hashMap : activeList) {
@@ -335,18 +327,18 @@ public class SunDataServiceImpl implements SunDataService {
         List<HashMap<String, String>> recharges = sunUserActive2Mapper.selectRechargeByDateGroupByChannel(date);
         ArrayList<SunStaticOrderDayChannel> sunStaticOrderDayChannels = new ArrayList<>();
         for (HashMap<String, String> recharge : recharges) {
-            int recharge_count1 = getIntFromDb(map.get("recharge_count"));
-            float recharge_sum1 = getFloatFromDb(map.get("recharge_sum"));
+            int recharge_count1 = getIntFromDb(recharge.get("recharge_count"));
+            float recharge_sum1 = getFloatFromDb(recharge.get("recharge_sum"));
             float avg1 = 0;
-            if (recharge_count > 0) {
-                avg1 = recharge_sum / recharge_count;
+            if (recharge_count1 > 0) {
+                avg1 = recharge_sum1 / recharge_count1;
             }
             SunStaticOrderDayChannel dayChannel = SunStaticOrderDayChannel.builder()
                     .staticDate(date)
                     .channelId(recharge.get("channel_id"))
                     .channelName(recharge.get("channel_name"))
-                    .activeCount(activeMap.getOrDefault(recharge.get("channel_id"),0))
-                    .rechargeUserCount(getIntFromDb(map.get("recharge_user_count")))
+                    .activeCount(activeMap.getOrDefault(recharge.get("channel_id"), 0))
+                    .rechargeUserCount(getIntFromDb(recharge.get("recharge_user_count")))
                     .rechargeSum(String.valueOf(recharge_sum1))
                     .rechargeCount(recharge_count1)
                     .rechargeAvg(String.format("%.2f", avg1))
@@ -354,7 +346,72 @@ public class SunDataServiceImpl implements SunDataService {
                     .build();
             sunStaticOrderDayChannels.add(dayChannel);
         }
-        sunStaticOrderDayChannelMapper.batchInsert(sunStaticOrderDayChannels);
+        return sunStaticOrderDayChannels;
+    }
+
+    @Override
+    public void orderStaticDate(String date) {
+        /*
+         * 清除指定日期的统计,因为可能重新计算
+         */
+        sunStaticOrderDayMapper.deleteByExample(SunStaticOrderDayExample.newAndCreateCriteria().andStaticDateEqualTo(date).example());
+        sunStaticOrderDayChannelMapper.deleteByExample(SunStaticOrderDayChannelExample.newAndCreateCriteria().andStaticDateEqualTo(date).example());
+
+        /*
+        开始统计
+         */
+        // 先不分渠道
+        SunStaticOrderDay staticOrderDay = getSunOrderByDate(date);
+        if (staticOrderDay == null) {
+            return;
+        } else {
+            sunStaticOrderDayMapper.insert(staticOrderDay);
+        }
+        /*
+        分渠道统计
+         */
+        sunStaticOrderDayChannelMapper.batchInsert(getSunOrderByDateChannels(date));
+    }
+
+    @Override
+    public SunStaticOrderDay getTodayOrderStatic() {
+        return getSunOrderByDate(TimeUtil.getTodayStr());
+    }
+
+    @Override
+    public SunStaticOrderDay getYesterdayOrderStatic() {
+        return sunStaticOrderDayMapper.selectOneByExample(SunStaticOrderDayExample.newAndCreateCriteria()
+                .andStaticDateEqualTo(TimeUtil.getYesterdayStr()).example());
+    }
+
+    @Override
+    public Map getHistoryOrderStatic() {
+        return sunStaticOrderDay2Mapper.selectHistory();
+    }
+
+    @Override
+    public List<SunStaticOrderDayChannel> getTodayOrderStaticByChannel() {
+        return getSunOrderByDateChannels(TimeUtil.getTodayStr());
+    }
+
+    @Override
+    public PageResult<SunStaticOrderDay> getOrderStatics(int page, int size) {
+        SunStaticOrderDayExample example = SunStaticOrderDayExample.newAndCreateCriteria().example();
+        long l = sunStaticOrderDayMapper.countByExample(example);
+        example.page(page, size);
+        example.orderBy(SunStaticOrderDay.Column.staticDate.desc());
+        List<SunStaticOrderDay> sunStaticOrderDays = sunStaticOrderDayMapper.selectByExample(example);
+        return new PageResult<>(l, sunStaticOrderDays);
+    }
+
+    @Override
+    public List<SunStaticOrderDayChannel> getOrderStaticByDateAndChannel(String date, String channelId) {
+        return sunStaticOrderDayChannelMapper.selectByExample(
+                SunStaticOrderDayChannelExample.newAndCreateCriteria()
+                        .andStaticDateEqualTo(date)
+                        .andChannelIdEqualTo(channelId)
+                        .example()
+        );
     }
 
     private void handleOrder(List<String> list, Integer taskId) {