فهرست منبع

订单统计从订单中获取

tianyunperfect 3 سال پیش
والد
کامیت
c987dd5a87

+ 2 - 2
book-dao/src/main/java/com/book/dao/polardb/mapper/SunUserActive2Mapper.java

@@ -14,14 +14,14 @@ import java.util.List;
 public interface SunUserActive2Mapper {
     int selectActiveCountByDate(@Param("date") String date);
 
-    HashMap<String,String> selectRechargeByDate(@Param("date") String date);
+    HashMap<String,String> selectRechargeByDate(@Param("startDate") String startDate,@Param("endDate") String endDate);
 
     /**
      * 充值用户,分渠道统计
      * @param date
      * @return
      */
-    List<HashMap<String, String>> selectRechargeByDateGroupByChannel(@Param("date") String date);
+    List<HashMap<String, String>> selectRechargeByDateGroupByChannel(@Param("startDate") String startDate,@Param("endDate") String endDate);
 
     /**
      * 活跃用户,分渠道统计

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

@@ -3,9 +3,9 @@
 <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 SUM(t.active_count) as active_count,SUM(t.recharge_user_count) as recharge_user_count,ROUND(SUM(t.recharge_sum),2) as recharge_sum from sun_static_order_day t;
     </select>
     <select id="selectUserHistory" resultType="java.util.HashMap">
-        SELECT SUM(new_all_user) as new_all_user ,sum(new_recharge_user) as  new_recharge_user,sum(new_recharge_sum) as new_recharge_sum  from sun_static_user_day;
+        SELECT SUM(new_all_user) as new_all_user ,sum(new_recharge_user) as  new_recharge_user,ROUND(sum(new_recharge_sum),2) as new_recharge_sum  from sun_static_user_day;
     </select>
 </mapper>

+ 8 - 12
book-dao/src/main/resources/mapper/polar/SunUserActive2Mapper.xml

@@ -6,24 +6,20 @@
     select count(DISTINCT(t.openid)) as active_count FROM sun_user_active t where t.collect_date = #{date}
   </select>
   <select id="selectRechargeByDate" resultType="java.util.HashMap">
-    select count(DISTINCT(t.openid)) as recharge_user_count,sum(t.recharge_amount) as recharge_sum,sum(t.recharge_num) as recharge_count FROM sun_user_active t where t.collect_date = #{date} and t.recharge_num>0;
-  </select>
+    <![CDATA[
+    SELECT COUNT(DISTINCT(t.openid)) as recharge_user_count,COUNT(1) as recharge_count, SUM(t.money) as recharge_sum FROM sun_order t WHERE t.create_time > #{startDate} and t.create_time <= #{endDate} and t.state='完成';
+    ]]>
+</select>
   <select id="selectRechargeByDateGroupByChannel" resultType="java.util.HashMap">
+    <![CDATA[
     SELECT t1.*,t2.channel_name FROM
       (
-        SELECT
-          t.channel_id,
-          count(DISTINCT ( t.openid )) AS recharge_user_count,
-          sum( t.recharge_amount ) AS recharge_sum,
-          sum( t.recharge_num ) AS recharge_count
-        FROM
-          sun_user_active t
-        WHERE
-          t.collect_date = #{date}
-          AND t.recharge_num > 0
+        SELECT t.channel_id, COUNT(DISTINCT (t.openid)) AS recharge_user_count,COUNT(1) AS recharge_count,SUM(t.money) AS recharge_sum FROM sun_order t
+        WHERE t.create_time> #{startDate} AND t.create_time<=#{endDate} AND t.state='完成'
         GROUP BY
           t.channel_id
       ) t1 left JOIN sun_channel t2 on t2.channel_id=t1.channel_id;
+    ]]>
   </select>
   <select id="selectActiveCountByDateGroupByChannel" resultType="java.util.HashMap">
     SELECT

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

@@ -113,12 +113,12 @@ public class SunDataController extends BaseController {
     /**
      * 订单统计-重置某天
      *
-     * @param date
+     * @param dateStr
      * @return
      */
     @GetMapping("/orderStaticByDate-F891088E-7A75-4F4B-AEB4-A9D1697F5AD3")
-    public Result orderStaticByDate(String date) {
-        sunDataService.orderStaticDate(date);
+    public Result orderStaticByDate(String dateStr) throws ParseException {
+        sunDataService.orderStaticDate(dateStr,TimeUtil.getNextDay(dateStr));
         return Result.success();
     }
 

+ 1 - 2
book-server/src/main/java/com/book/server/service/SunDataService.java

@@ -34,9 +34,8 @@ public interface SunDataService {
 
     /**
      * 统计指定日期的订单
-     * @param date yyyy-MM-dd
      */
-    void orderStaticDate(String date);
+    void orderStaticDate(String startDate,String endDate);
 
 
     SunStaticOrderDay getTodayOrderStatic();

+ 18 - 15
book-server/src/main/java/com/book/server/service/impl/SunDataServiceImpl.java

@@ -290,15 +290,18 @@ public class SunDataServiceImpl implements SunDataService {
     }
 
     private float getFloatFromDb(Object obj) {
+        if (obj == null) {
+            return 0f;
+        }
         return Float.parseFloat(String.valueOf(obj));
     }
 
-    private SunStaticOrderDay getSunOrderByDate(String date) {
-        int i = sunUserActive2Mapper.selectActiveCountByDate(date);
+    private SunStaticOrderDay getSunOrderByDate(String startDate,String endDate) {
+        int i = sunUserActive2Mapper.selectActiveCountByDate(startDate);
         if (i <= 0) {
             return null;
         }
-        HashMap<String, String> map = sunUserActive2Mapper.selectRechargeByDate(date);
+        HashMap<String, String> map = sunUserActive2Mapper.selectRechargeByDate(startDate,endDate);
         int recharge_count = getIntFromDb(map.get("recharge_count"));
         float recharge_sum = getFloatFromDb(map.get("recharge_sum"));
         float avg = 0;
@@ -306,7 +309,7 @@ public class SunDataServiceImpl implements SunDataService {
             avg = recharge_sum / recharge_count;
         }
         SunStaticOrderDay staticOrderDay = SunStaticOrderDay.builder()
-                .staticDate(date)
+                .staticDate(startDate)
                 .activeCount(i)
                 .rechargeUserCount(getIntFromDb(map.get("recharge_user_count")))
                 .rechargeCount(recharge_count)
@@ -317,14 +320,14 @@ public class SunDataServiceImpl implements SunDataService {
         return staticOrderDay;
     }
 
-    private List<SunStaticOrderDayChannel> getSunOrderByDateChannels(String date) {
+    private List<SunStaticOrderDayChannel> getSunOrderByDateChannels(String startDate,String endDate) {
         HashMap<String, Integer> activeMap = new HashMap<>();
-        List<HashMap<String, String>> activeList = sunUserActive2Mapper.selectActiveCountByDateGroupByChannel(date);
+        List<HashMap<String, String>> activeList = sunUserActive2Mapper.selectActiveCountByDateGroupByChannel(startDate);
         for (HashMap<String, String> hashMap : activeList) {
             activeMap.put(hashMap.get("channel_id"), getIntFromDb(hashMap.get("active_user_count")));
         }
 
-        List<HashMap<String, String>> recharges = sunUserActive2Mapper.selectRechargeByDateGroupByChannel(date);
+        List<HashMap<String, String>> recharges = sunUserActive2Mapper.selectRechargeByDateGroupByChannel(startDate,endDate);
         ArrayList<SunStaticOrderDayChannel> sunStaticOrderDayChannels = new ArrayList<>();
         for (HashMap<String, String> recharge : recharges) {
             int recharge_count1 = getIntFromDb(recharge.get("recharge_count"));
@@ -334,7 +337,7 @@ public class SunDataServiceImpl implements SunDataService {
                 avg1 = recharge_sum1 / recharge_count1;
             }
             SunStaticOrderDayChannel dayChannel = SunStaticOrderDayChannel.builder()
-                    .staticDate(date)
+                    .staticDate(startDate)
                     .channelId(recharge.get("channel_id"))
                     .channelName(recharge.get("channel_name"))
                     .activeCount(activeMap.getOrDefault(recharge.get("channel_id"), 0))
@@ -350,18 +353,18 @@ public class SunDataServiceImpl implements SunDataService {
     }
 
     @Override
-    public void orderStaticDate(String date) {
+    public void orderStaticDate(String startDate,String endDate) {
         /*
          * 清除指定日期的统计,因为可能重新计算
          */
-        sunStaticOrderDayMapper.deleteByExample(SunStaticOrderDayExample.newAndCreateCriteria().andStaticDateEqualTo(date).example());
-        sunStaticOrderDayChannelMapper.deleteByExample(SunStaticOrderDayChannelExample.newAndCreateCriteria().andStaticDateEqualTo(date).example());
+        sunStaticOrderDayMapper.deleteByExample(SunStaticOrderDayExample.newAndCreateCriteria().andStaticDateEqualTo(startDate).example());
+        sunStaticOrderDayChannelMapper.deleteByExample(SunStaticOrderDayChannelExample.newAndCreateCriteria().andStaticDateEqualTo(startDate).example());
 
         /*
         开始统计
          */
         // 先不分渠道
-        SunStaticOrderDay staticOrderDay = getSunOrderByDate(date);
+        SunStaticOrderDay staticOrderDay = getSunOrderByDate(startDate,endDate);
         if (staticOrderDay == null) {
             return;
         } else {
@@ -370,12 +373,12 @@ public class SunDataServiceImpl implements SunDataService {
         /*
         分渠道统计
          */
-        sunStaticOrderDayChannelMapper.batchInsert(getSunOrderByDateChannels(date));
+        sunStaticOrderDayChannelMapper.batchInsert(getSunOrderByDateChannels(startDate,endDate));
     }
 
     @Override
     public SunStaticOrderDay getTodayOrderStatic() {
-        return getSunOrderByDate(TimeUtil.getTodayStr());
+        return getSunOrderByDate(TimeUtil.getTodayStr(),TimeUtil.getTomorrowStr());
     }
 
     @Override
@@ -391,7 +394,7 @@ public class SunDataServiceImpl implements SunDataService {
 
     @Override
     public List<SunStaticOrderDayChannel> getTodayOrderStaticByChannel() {
-        return getSunOrderByDateChannels(TimeUtil.getTodayStr());
+        return getSunOrderByDateChannels(TimeUtil.getTodayStr(),TimeUtil.getTomorrowStr());
     }
 
     @Override

+ 1 - 1
book-server/src/main/java/com/book/server/task/SunDataTask.java

@@ -111,7 +111,7 @@ public class SunDataTask {
     @Scheduled(cron = "1 15 0 * * ?")
     public void OrderStaticYesterday() {
         String yesterdayStr = TimeUtil.getYesterdayStr();
-        sunDataService.orderStaticDate(yesterdayStr);
+        sunDataService.orderStaticDate(yesterdayStr,TimeUtil.getTodayStr());
     }
     /**
      * 用户昨日统计