From 927afebd4a79f9a78759930bfaff9a5ed6abeb6e Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期日, 30 七月 2023 04:50:08 +0800
Subject: [PATCH] 增加企业流水记录

---
 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/RevenueServiceImpl.java         |   21 +++++
 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/dao/mapping/RevenueMapper.xml                |   24 ++++++
 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/dao/RevenueMapper.java                       |   15 +++
 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/dao/mapping/CompanyFundFlowMapper.xml        |   15 +++
 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/IRevenueService.java                 |   15 +++
 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/CompanyFundFlow.java                   |   54 +++++++++++++
 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/ICompanyFundFlowService.java         |   11 ++
 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/CompanyFundFlowServiceImpl.java |   13 +++
 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/dao/CompanyFundFlowMapper.java               |   11 ++
 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java           |   38 +++++++++
 10 files changed, 217 insertions(+), 0 deletions(-)

diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/dao/CompanyFundFlowMapper.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/dao/CompanyFundFlowMapper.java
new file mode 100644
index 0000000..eb45276
--- /dev/null
+++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/dao/CompanyFundFlowMapper.java
@@ -0,0 +1,11 @@
+package com.supersavedriving.user.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.supersavedriving.user.modular.system.model.CompanyFundFlow;
+
+/**
+ * @author zhibing.pu
+ * @Date 2023/7/30 3:05
+ */
+public interface CompanyFundFlowMapper extends BaseMapper<CompanyFundFlow> {
+}
diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/dao/RevenueMapper.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/dao/RevenueMapper.java
index ef9eac1..cf1af8b 100644
--- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/dao/RevenueMapper.java
+++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/dao/RevenueMapper.java
@@ -2,10 +2,25 @@
 
 import com.baomidou.mybatisplus.mapper.BaseMapper;
 import com.supersavedriving.user.modular.system.model.Revenue;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * @author zhibing.pu
  * @date 2023/3/13 10:03
  */
 public interface RevenueMapper extends BaseMapper<Revenue> {
+
+    /**
+     * 获取代理商账户余额
+     * @param companyId
+     * @return
+     */
+    Double queryAgentBalance(@Param("companyId") Integer companyId);
+
+
+    /**
+     * 获取平台账户余额
+     * @return
+     */
+    Double queryCompanyBalance();
 }
diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/dao/mapping/CompanyFundFlowMapper.xml b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/dao/mapping/CompanyFundFlowMapper.xml
new file mode 100644
index 0000000..3e5c794
--- /dev/null
+++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/dao/mapping/CompanyFundFlowMapper.xml
@@ -0,0 +1,15 @@
+<?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.supersavedriving.user.modular.system.dao.CompanyFundFlowMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.supersavedriving.user.modular.system.model.CompanyFundFlow">
+        <id column="id" property="id"/>
+        <result column="type" property="type"/>
+        <result column="objectType" property="objectType"/>
+        <result column="objectId" property="objectId"/>
+        <result column="balance" property="balance"/>
+        <result column="money" property="money"/>
+        <result column="createTime" property="createTime"/>
+    </resultMap>
+</mapper>
\ No newline at end of file
diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/dao/mapping/RevenueMapper.xml b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/dao/mapping/RevenueMapper.xml
index 9ca4713..5ac7f14 100644
--- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/dao/mapping/RevenueMapper.xml
+++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/dao/mapping/RevenueMapper.xml
@@ -13,4 +13,28 @@
         <result column="createTime" property="createTime"/>
     </resultMap>
 
+
+    <select id="queryAgentBalance" resultType="double">
+        select
+        sum(aa.income) - sum(aa.disburse) as balance
+        from (
+        select sum(amount) as income, 0 as disburse from t_revenue where userType = 3 and userId = #{companyId}
+        union all
+        select 0 as ncome, sum(amount) as disburse from t_settlement_record where type = 2 and objectId = #{companyId}
+        ) as aa
+    </select>
+
+
+
+    <select id="queryCompanyBalance" resultType="double">
+        select
+        sum(aa.income) - sum(aa.disburse) + sum(aa.recharge) as balance
+        from (
+        select sum(amount) as income, 0 as disburse, 0 as recharge from t_revenue where userType = 4
+        union all
+        select 0 as ncome, sum(amount) as disburse, 0 as recharge from t_settlement_record where type = 1
+        union all
+        select 0 as ncome, 0 as disburse, sum(surplusDividedAmount) as recharge from t_recharge_record where type = 4 and payStatus = 2
+        ) as aa
+    </select>
 </mapper>
diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/CompanyFundFlow.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/CompanyFundFlow.java
new file mode 100644
index 0000000..fa3123d
--- /dev/null
+++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/CompanyFundFlow.java
@@ -0,0 +1,54 @@
+package com.supersavedriving.user.modular.system.model;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.baomidou.mybatisplus.enums.IdType;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author zhibing.pu
+ * @Date 2023/7/30 3:02
+ */
+@Data
+@TableName("t_company_fund_flow")
+public class CompanyFundFlow {
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+    /**
+     * 变动类型(1=充值,2=提现,3=佣金收入,4=保险收入)
+     */
+    @TableField("type")
+    private Integer type;
+    /**
+     * 对象类型(1=平台,2=代理商)
+     */
+    @TableField("objectType")
+    private Integer objectType;
+    /**
+     * 代理商id
+     */
+    @TableField("objectId")
+    private Integer objectId;
+    /**
+     * 历史账户余额
+     */
+    @TableField("balance")
+    private BigDecimal balance;
+    /**
+     * 变动金额
+     */
+    @TableField("money")
+    private BigDecimal money;
+    /**
+     * 变动时间
+     */
+    @TableField("createTime")
+    private Date createTime;
+}
diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/ICompanyFundFlowService.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/ICompanyFundFlowService.java
new file mode 100644
index 0000000..844590f
--- /dev/null
+++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/ICompanyFundFlowService.java
@@ -0,0 +1,11 @@
+package com.supersavedriving.user.modular.system.service;
+
+import com.baomidou.mybatisplus.service.IService;
+import com.supersavedriving.user.modular.system.model.CompanyFundFlow;
+
+/**
+ * @author zhibing.pu
+ * @Date 2023/7/30 3:09
+ */
+public interface ICompanyFundFlowService extends IService<CompanyFundFlow> {
+}
diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/IRevenueService.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/IRevenueService.java
index e2f102b..ff80b66 100644
--- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/IRevenueService.java
+++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/IRevenueService.java
@@ -8,4 +8,19 @@
  * @date 2023/3/13 10:09
  */
 public interface IRevenueService extends IService<Revenue> {
+
+    /**
+     * 获取代理商账户余额
+     * @param companyId
+     * @return
+     */
+    Double queryAgentBalance(Integer companyId);
+
+
+
+    /**
+     * 获取平台账户余额
+     * @return
+     */
+    Double queryCompanyBalance();
 }
diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/CompanyFundFlowServiceImpl.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/CompanyFundFlowServiceImpl.java
new file mode 100644
index 0000000..37a210a
--- /dev/null
+++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/CompanyFundFlowServiceImpl.java
@@ -0,0 +1,13 @@
+package com.supersavedriving.user.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.supersavedriving.user.modular.system.dao.CompanyFundFlowMapper;
+import com.supersavedriving.user.modular.system.model.CompanyFundFlow;
+import com.supersavedriving.user.modular.system.service.ICompanyFundFlowService;
+
+/**
+ * @author zhibing.pu
+ * @Date 2023/7/30 3:10
+ */
+public class CompanyFundFlowServiceImpl extends ServiceImpl<CompanyFundFlowMapper, CompanyFundFlow> implements ICompanyFundFlowService {
+}
diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java
index 5776513..dc24dcc 100644
--- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java
+++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java
@@ -115,6 +115,9 @@
     @Autowired
     private IOrderService orderService;
 
+    @Autowired
+    private ICompanyFundFlowService companyFundFlowService;
+
     @Value("${wx.appletsAppid}")
     private String appletsAppid;
 
@@ -1488,6 +1491,7 @@
             accountChangeDetailService.saveData(accountChangeDetail);
 
             //补贴中分账
+            Double balance = revenueService.queryCompanyBalance();//平台账户余额
             Double discountedPrice = order.getDiscountedPrice();
             List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
             for (RechargeRecord rechargeRecord : rechargeRecords) {
@@ -1513,6 +1517,13 @@
                 }
             }
 
+            CompanyFundFlow companyFundFlow = new CompanyFundFlow();
+            companyFundFlow.setBalance(new BigDecimal(balance));
+            companyFundFlow.setObjectType(1);
+            companyFundFlow.setType(5);
+            companyFundFlow.setMoney(new BigDecimal(order.getDiscountedPrice()));
+            companyFundFlow.setCreateTime(new Date());
+            companyFundFlowService.insert(companyFundFlow);
         }
     }
 
@@ -1961,6 +1972,7 @@
                     }
                     //处理代理商抽佣
                     if(num3 > 0 && null != driver){
+                        Double balance = revenueService.queryAgentBalance(driver.getAgentId());
                         Revenue revenue = new Revenue();
                         revenue.setType(1);
                         revenue.setUserType(3);
@@ -1994,6 +2006,15 @@
                                 }
                             }
                         }
+
+                        CompanyFundFlow companyFundFlow = new CompanyFundFlow();
+                        companyFundFlow.setType(3);
+                        companyFundFlow.setObjectType(2);
+                        companyFundFlow.setObjectId(driver.getAgentId());
+                        companyFundFlow.setBalance(new BigDecimal(balance));
+                        companyFundFlow.setMoney(new BigDecimal(num3));
+                        companyFundFlow.setCreateTime(new Date());
+                        companyFundFlowService.insert(companyFundFlow);
                     }
                 }
             }
@@ -2079,6 +2100,7 @@
             accountChangeDetailService.saveData(accountChangeDetail);
 
             //补贴中分账
+            Double balance = revenueService.queryCompanyBalance();
             Double discountedPrice = order.getDiscountedPrice();
             List<RechargeRecord> rechargeRecords1 = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
             for (RechargeRecord rechargeRecord : rechargeRecords1) {
@@ -2103,6 +2125,13 @@
                     }
                 }
             }
+            CompanyFundFlow companyFundFlow = new CompanyFundFlow();
+            companyFundFlow.setBalance(new BigDecimal(balance));
+            companyFundFlow.setObjectType(1);
+            companyFundFlow.setType(5);
+            companyFundFlow.setMoney(new BigDecimal(order.getDiscountedPrice()));
+            companyFundFlow.setCreateTime(new Date());
+            companyFundFlowService.insert(companyFundFlow);
 
         }
         // TODO: 2023/6/25 折扣优惠由司机承担
@@ -2243,6 +2272,7 @@
             driverService.updateById(driver);
             accountChangeDetailService.saveData(accountChangeDetail);
             //补贴中分账
+            Double balance = revenueService.queryCompanyBalance();
             Double discountedPrice = order.getDiscountedPrice();
             List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
             for (RechargeRecord rechargeRecord : rechargeRecords) {
@@ -2268,6 +2298,14 @@
                 }
             }
 
+            CompanyFundFlow companyFundFlow = new CompanyFundFlow();
+            companyFundFlow.setBalance(new BigDecimal(balance));
+            companyFundFlow.setObjectType(1);
+            companyFundFlow.setType(5);
+            companyFundFlow.setMoney(new BigDecimal(order.getDiscountedPrice()));
+            companyFundFlow.setCreateTime(new Date());
+            companyFundFlowService.insert(companyFundFlow);
+
         }
     }
 
diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/RevenueServiceImpl.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/RevenueServiceImpl.java
index 82afe9b..ff191b3 100644
--- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/RevenueServiceImpl.java
+++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/RevenueServiceImpl.java
@@ -12,4 +12,25 @@
  */
 @Service
 public class RevenueServiceImpl extends ServiceImpl<RevenueMapper, Revenue> implements IRevenueService {
+
+
+    /**
+     * 获取代理商账户余额
+     * @param companyId
+     * @return
+     */
+    @Override
+    public Double queryAgentBalance(Integer companyId) {
+        return this.baseMapper.queryAgentBalance(companyId);
+    }
+
+
+    /**
+     * 获取平台账户余额
+     * @return
+     */
+    @Override
+    public Double queryCompanyBalance() {
+        return this.baseMapper.queryCompanyBalance();
+    }
 }

--
Gitblit v1.7.1