zhangchen 4 mesiacov pred
rodič
commit
79a074260e

+ 6 - 0
alien-entity/src/main/java/shop/alien/mapper/ManagementInfoMapper.java

@@ -98,4 +98,10 @@ public interface ManagementInfoMapper {
 
     //获取退款金额
     ManagementInfoVo getRefundAmount(@Param("dataTime") String dataTime);
+
+    ManagementInfoVo getWithdrawalAmount(@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("storeId") String storeId);
+    ManagementInfoVo getOrderAmount(@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("storeId") String storeId);
+    ManagementInfoVo getTransactionAmount(@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("storeId") String storeId);
+    ManagementInfoVo getWrittenOffAmount(@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("storeId") String storeId);
+
 }

+ 41 - 8
alien-entity/src/main/resources/mapper/ManagementInfoMapper.xml

@@ -10,16 +10,16 @@
             store.store_name,
             IFNULL(meal.coupon_count, 0)  AS meal_coupon_count,
             IFNULL(meal.order_count, 0) AS meal_order_count,
-            ROUND(IFNULL(meal.order_amount, 0) / 100,2) AS meal_order_amount,
+            ROUND(IFNULL(meal.order_amount, 0) / 1000000,2) AS meal_order_amount,
             IFNULL(meal.income_count, 0) AS meal_income_count,
-            ROUND(IFNULL(meal.income_money, 0) / 100,2) AS meal_income_money,
+            ROUND(IFNULL(meal.income_money, 0) / 1000000,2) AS meal_income_money,
             IFNULL(coupon.coupon_count, 0) AS coupon_coupon_count,
             IFNULL(coupon.order_count, 0) AS coupon_order_count,
-            ROUND(IFNULL(coupon.order_amount, 0) / 100,2) AS coupon_order_amount,
+            ROUND(IFNULL(coupon.order_amount, 0) / 1000000,2) AS coupon_order_amount,
             IFNULL(coupon.income_count, 0) AS coupon_income_count,
-            ROUND(IFNULL(coupon.income_money, 0) / 100,2) AS coupon_income_money,
-            ROUND(IFNULL(allInfo.cash_out_money, 0) / 100,2) AS cashout_money,
-            ROUND(IFNULL(allInfo.account_frozen, 0) / 100,2) AS account_frozen
+            ROUND(IFNULL(coupon.income_money, 0) / 1000000,2) AS coupon_income_money,
+            ROUND(IFNULL(allInfo.cash_out_money, 0) / 1000000,2) AS cashout_money,
+            ROUND(IFNULL(allInfo.account_frozen, 0) / 1000000,2) AS account_frozen
         FROM
             store_info store
                 LEFT JOIN merchant_reconciliation_coupon coupon ON store.id = coupon.store_id
@@ -34,7 +34,7 @@
         SELECT
             store.id,
             store.store_name,
-            ROUND(IFNULL( sum( money ), 0 ) / 100,2) AS income_money
+            ROUND(IFNULL( sum( money ), 0 ) / 1000000,2) AS income_money
         FROM
             store_info store
                 LEFT JOIN ( SELECT * FROM store_income_details_record WHERE created_time > #{startDate} AND created_time < #{endDate} ) income ON store.id = income.store_id
@@ -63,6 +63,14 @@
             AND store_id = #{storeId}
         </if>
     </select>
+    <select id="getTransactionAmount" resultType="shop.alien.entity.store.vo.ManagementInfoVo">
+        SELECT
+        ROUND(IFNULL(SUM( money ),0) / 100,2) AS totalTransactionAmount
+        FROM
+        store_income_details_record income
+        WHERE
+        created_time > #{startDate} AND created_time &lt; #{endDate}
+    </select>
     <select id="getTransactionNumber" resultType="shop.alien.entity.store.vo.ManagementInfoVo">
         SELECT
         COUNT(1) AS transactionNumber
@@ -82,6 +90,14 @@
             AND store_id = #{storeId}
         </if>
     </select>
+    <select id="getOrderAmount" resultType="shop.alien.entity.store.vo.ManagementInfoVo">
+        SELECT
+        ROUND(IFNULL(SUM( final_price ),0) / 100,2) AS allOrderAmount
+        FROM
+        life_user_order
+        where
+        created_time > #{startDate} AND created_time &lt; #{endDate}
+    </select>
     <select id="getAllWrittenOffAmount" resultType="shop.alien.entity.store.vo.ManagementInfoVo">
         SELECT
             ROUND(IFNULL(SUM( money ),0) / 100,2) AS allWrittenOffAmount
@@ -93,6 +109,14 @@
             AND store_id = #{storeId}
         </if>
     </select>
+    <select id="getWrittenOffAmount" resultType="shop.alien.entity.store.vo.ManagementInfoVo">
+        SELECT
+        ROUND(IFNULL(SUM( money ),0) / 100,2) AS allWrittenOffAmount
+        FROM
+        store_income_details_record
+        where
+        created_time > #{startDate} AND created_time &lt; #{endDate}
+    </select>
     <select id="getTotalWithdrawalAmount" resultType="shop.alien.entity.store.vo.ManagementInfoVo">
         SELECT
             ROUND(IFNULL(SUM( money ),0) / 100,2) AS totalWithdrawalAmount
@@ -104,6 +128,14 @@
             AND store_id = #{storeId}
         </if>
     </select>
+    <select id="getWithdrawalAmount" resultType="shop.alien.entity.store.vo.ManagementInfoVo">
+        SELECT
+        ROUND(IFNULL(SUM( money ),0) / 100,2) AS totalWithdrawalAmount
+        FROM
+        store_cash_out_record cash
+        where payment_status = 1 and
+        created_time > #{startDate} AND created_time &lt; #{endDate}
+    </select>
     <select id="getStoreOrderDetail" resultType="shop.alien.entity.store.vo.ManagementInfoVo">
         SELECT
             userOrder.id,
@@ -136,7 +168,8 @@
                     "待退款"
                 WHEN 4 THEN
                     "已退款"
-                END AS status_name
+                END AS status_name,
+        userOrder.order_no
         FROM
             life_user_order userOrder
                 LEFT JOIN life_coupon coupon ON coupon.id = userOrder.id

+ 63 - 15
alien-store/src/main/java/shop/alien/store/service/impl/ManagementInfoServiceImpl.java

@@ -81,6 +81,7 @@ public class ManagementInfoServiceImpl implements ManagementInfoService {
             for (StoreIncomeDetailsRecord storeIncomeDetailsRecord : storeIncomeDetailsRecords) {
                 storeIncomeDetailsCount += storeIncomeDetailsRecord.getMoney();
             }
+            storeIncomeDetailsCount = Math.floor(storeIncomeDetailsCount/1000000*100)/100;
             managementInfo.setAccountFrozen(storeIncomeDetailsCount);
         }
         return allManagementInfo;
@@ -119,31 +120,47 @@ public class ManagementInfoServiceImpl implements ManagementInfoService {
         ManagementInfoVo allWrittenOffAmount = managementInfoMapper.getAllWrittenOffAmount(startDate, endDate, null);
         //查询总提现金额
         ManagementInfoVo totalWithdrawalAmount = managementInfoMapper.getTotalWithdrawalAmount(startDate, endDate, null);
-        //查询已解冻金额
+        //查询已提现金额(根据时间查询)
+        ManagementInfoVo withdrawalAmount = managementInfoMapper.getWithdrawalAmount(startDate, endDate, null);
+        //查询总订单金额(根据时间查询)
+        ManagementInfoVo orderAmount = managementInfoMapper.getOrderAmount(startDate, endDate, null);
+        //查询总交易金额(根据时间查询)
+        ManagementInfoVo transactionAmount = managementInfoMapper.getTransactionAmount(startDate, endDate, null);
+        //查询总核销金额(根据时间查询)
+        ManagementInfoVo writtenOffAmount = managementInfoMapper.getWrittenOffAmount(startDate, endDate, null);
+
+        //查询已冻结金额
         List<StoreIncomeDetailsRecord> storeIncomeDetailsRecords = storeIncomeDetailsRecordMapper
                 .selectList(
                         new LambdaQueryWrapper<StoreIncomeDetailsRecord>()
                                 .gt(StoreIncomeDetailsRecord::getCreatedTime, threeDaysAgoMidnight)
+                                .gt(StoreIncomeDetailsRecord::getCreatedTime, startDate)
+                                .lt(StoreIncomeDetailsRecord::getCreatedTime, endDate)
                 );
         Double storeIncomeDetailsCount = 0d;
         for (StoreIncomeDetailsRecord storeIncomeDetailsRecord : storeIncomeDetailsRecords) {
             storeIncomeDetailsCount += storeIncomeDetailsRecord.getMoney();
         }
+
         //存入账单排名
         result.put("billingRanking", billingRanking);
         //存入已付款金额
-        result.put("amountPaid", amountPaid.getAmountPaid());
-        //存入总交易金额
-        result.put("totalTransactionAmount", totalTransactionAmount.getTotalTransactionAmount());
-        //存入交易笔数
-        result.put("transactionNumber", transactionNumber.getTransactionNumber());
+        result.put("amountPaid", Math.floor(amountPaid.getAmountPaid()/10000*100)/100);
+
+        //存入冻结未提现金额
+        result.put("unwithdrawnAmountsFrozen", Math.floor((withdrawalAmount.getTotalWithdrawalAmount() - storeIncomeDetailsCount)/10000*100)/100);
+        //存入未解冻金额
+        result.put("freezeAmounts", Math.floor(storeIncomeDetailsCount/10000*100)/100);
+        // 已提现金额
+        result.put("withdrawalAmount", Math.floor(withdrawalAmount.getTotalWithdrawalAmount()/10000*100)/100);
         //存入未核销金额
-        result.put("amountNotWrittenOff", allOrderAmount.getAllOrderAmount() - allWrittenOffAmount.getAllWrittenOffAmount());
+        result.put("amountNotWrittenOff", Math.floor((orderAmount.getAllOrderAmount() - writtenOffAmount.getAllWrittenOffAmount())/10000*100)/100);
+        //存入交易笔数
+        result.put("transactionNumber", Math.floor(transactionNumber.getTransactionNumber()/10000*100)/100);
         //存入已核销金额
-        result.put("amountWrittenOff", allWrittenOffAmount.getAllWrittenOffAmount());
-        //存入已冻结未提现金额
-        result.put("unwithdrawnAmountsFrozen", totalWithdrawalAmount.getTotalWithdrawalAmount() - storeIncomeDetailsCount);
-
+        result.put("amountWrittenOff", Math.floor(writtenOffAmount.getAllWrittenOffAmount()/10000*100)/100);
+        //存入总交易金额
+        result.put("totalTransactionAmount", Math.floor(transactionAmount.getTotalTransactionAmount()/10000*100)/100);
         return result;
     }
 
@@ -163,6 +180,13 @@ public class ManagementInfoServiceImpl implements ManagementInfoService {
 
     @Override
     public HashMap<String, Object> storeDetailBillingStatistics(String storeId) {
+        // 获取当前日期
+        LocalDate currentDate = LocalDate.now();
+        // 计算三天前的日期
+        LocalDate threeDaysAgo = currentDate.minusDays(3);
+        // 设置时间为当天的 0 点
+        LocalDateTime threeDaysAgoMidnight = threeDaysAgo.atStartOfDay();
+
         HashMap<String, Object> result = new HashMap<>();
         //查询总交易金额
         ManagementInfoVo allOrderAmount = managementInfoMapper.getAllOrderAmount(null, null, storeId);
@@ -173,15 +197,39 @@ public class ManagementInfoServiceImpl implements ManagementInfoService {
         //查询核验金额
         ManagementInfoVo verificationAmount = managementInfoMapper.getVerificationAmount(storeId);
 
+        //查询已提现金额
+        ManagementInfoVo totalWithdrawalAmount = managementInfoMapper.getTotalWithdrawalAmount(null, null, storeId);
+
+        //查询冻结金额
+        List<StoreIncomeDetailsRecord> storeIncomeDetailsRecords = storeIncomeDetailsRecordMapper
+                .selectList(
+                        new LambdaQueryWrapper<StoreIncomeDetailsRecord>()
+                                .gt(StoreIncomeDetailsRecord::getCreatedTime, threeDaysAgoMidnight)
+                                .eq(StoreIncomeDetailsRecord::getStoreId, storeId)
+                );
+        Double storeIncomeDetailsCount = 0d;
+        for (StoreIncomeDetailsRecord storeIncomeDetailsRecord : storeIncomeDetailsRecords) {
+            storeIncomeDetailsCount += storeIncomeDetailsRecord.getMoney();
+        }
+
+
         //存入已付款金额
-        result.put("allOrderAmount", allOrderAmount.getAllOrderAmount());
+        result.put("allOrderAmount", Math.floor(allOrderAmount.getAllOrderAmount()/10000*100)/100);
         //存入总交易金额
         result.put("userCount", userCount.getUserCount());
         //存入交易笔数
-        result.put("orderTransactionNumber", orderTransactionNumber.getOrderTransactionNumber());
-        //存入交易笔数
-        result.put("verificationAmount", verificationAmount.getVerificationAmount());
+        result.put("orderTransactionNumber", Math.floor(orderTransactionNumber.getOrderTransactionNumber()/10000*100)/100);
+        //存入核验金额
+        result.put("verificationAmount", Math.floor(verificationAmount.getVerificationAmount()/10000*100)/100);
+
+        //已提现金额
+        result.put("totalWithdrawalAmount", Math.floor(totalWithdrawalAmount.getTotalWithdrawalAmount()/10000*100)/100);
+
+        //冻结金额
+        result.put("freezeAmounts", Math.floor(storeIncomeDetailsCount/10000*100)/100);
 
+        //冻结待提现金额
+        result.put("unwithdrawnAmountsFrozen", Math.floor(storeIncomeDetailsCount/10000*100)/100);
         return result;
     }