Przeglądaj źródła

垫款 初版1。0

zhaoxian 2 lat temu
rodzic
commit
ff4c5a5030
36 zmienionych plików z 2826 dodań i 0 usunięć
  1. 1 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java
  2. 11 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/common/module/service/IMessageTemplate.java
  3. 93 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/common/module/service/impl/MessageTemplateImpl.java
  4. 245 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/controller/FinancePaymentApplicationController.java
  5. 253 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/controller/FinancePaymentPoolController.java
  6. 165 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/controller/FinancePaymentRechargeApplicationController.java
  7. 179 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/entity/FinancePaymentApplication.java
  8. 71 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/entity/FinancePaymentApplicationRecord.java
  9. 118 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/entity/FinancePaymentPool.java
  10. 93 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/entity/FinancePaymentRechargeAccount.java
  11. 157 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/entity/FinancePaymentRechargeApplication.java
  12. 75 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/entity/FinancePaymentRechargeApplicationRecord.java
  13. 28 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/mapper/FinancePaymentApplicationMapper.java
  14. 17 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/mapper/FinancePaymentApplicationRecordMapper.java
  15. 25 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/mapper/FinancePaymentPoolMapper.java
  16. 24 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/mapper/FinancePaymentRechargeAccountMapper.java
  17. 22 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/mapper/FinancePaymentRechargeApplicationMapper.java
  18. 15 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/mapper/FinancePaymentRechargeApplicationRecordMapper.java
  19. 104 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/mapper/xml/FinancePaymentApplicationMapper.xml
  20. 5 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/mapper/xml/FinancePaymentApplicationRecordMapper.xml
  21. 49 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/mapper/xml/FinancePaymentPoolMapper.xml
  22. 33 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/mapper/xml/FinancePaymentRechargeAccountMapper.xml
  23. 81 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/mapper/xml/FinancePaymentRechargeApplicationMapper.xml
  24. 5 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/mapper/xml/FinancePaymentRechargeApplicationRecordMapper.xml
  25. 14 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/service/IFinancePaymentApplicationRecordService.java
  26. 33 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/service/IFinancePaymentApplicationService.java
  27. 30 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/service/IFinancePaymentPoolService.java
  28. 23 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/service/IFinancePaymentRechargeAccountService.java
  29. 15 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/service/IFinancePaymentRechargeApplicationRecordService.java
  30. 31 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/service/IFinancePaymentRechargeApplicationService.java
  31. 19 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/service/impl/FinancePaymentApplicationRecordServiceImpl.java
  32. 264 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/service/impl/FinancePaymentApplicationServiceImpl.java
  33. 123 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/service/impl/FinancePaymentPoolServiceImpl.java
  34. 36 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/service/impl/FinancePaymentRechargeAccountServiceImpl.java
  35. 19 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/service/impl/FinancePaymentRechargeApplicationRecordServiceImpl.java
  36. 350 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/service/impl/FinancePaymentRechargeApplicationServiceImpl.java

+ 1 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java

@@ -256,6 +256,7 @@ public class ShiroConfig {
 
         filterChainDefinitionMap.put("/designer/**", "anon");
         filterChainDefinitionMap.put("/kuaiShou/promoter/**", "anon");
+        filterChainDefinitionMap.put("/financePayment/**", "anon");
 
         // 添加自己的过滤器并且取名为jwt
         Map<String, Filter> filterMap = new HashMap<>(1);

+ 11 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/common/module/service/IMessageTemplate.java

@@ -1,5 +1,6 @@
 package cn.com.ctop.common.module.service;
 
+import cn.com.ctop.finance.payment.entity.FinancePaymentApplication;
 import com.alibaba.fastjson.JSONObject;
 
 public interface IMessageTemplate {
@@ -90,4 +91,14 @@ public interface IMessageTemplate {
 
     String getDuXiaoManMaterialTemplate(String productName, String projectName, String materialName, String refuseReason, boolean success);
 
+    String getFinancePaymentApplicationMessage(FinancePaymentApplication application);
+
+    String getFinancePaymentApplicationFailMessage(FinancePaymentApplication application);
+
+    String getFinancePaymentApplicationCWRechargeMessage(JSONObject data);
+    String getFinancePaymentApplicationMJRechargeMessage(JSONObject data);
+
+    String getFinancePaymentApplicationCWRechargeRefuseMessage(JSONObject data);
+
+    String getFinancePaymentApplicationMJRechargeRefuseMessage(JSONObject data);
 }

+ 93 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/common/module/service/impl/MessageTemplateImpl.java

@@ -2,6 +2,7 @@ package cn.com.ctop.common.module.service.impl;
 
 import cn.com.ctop.common.module.service.IMessageTemplate;
 import cn.com.ctop.common.module.utils.Check;
+import cn.com.ctop.finance.payment.entity.FinancePaymentApplication;
 import com.alibaba.fastjson.JSONObject;
 import org.springframework.stereotype.Service;
 
@@ -254,5 +255,97 @@ public class MessageTemplateImpl implements IMessageTemplate {
         return text.toString();
     }
 
+    @Override
+    public String getFinancePaymentApplicationMessage(FinancePaymentApplication application) {
+        StringBuilder text = new StringBuilder();
+        text.append("款项申请审核通知").append("<br/>")
+                .append("客户名称:").append(application.getAdvertiserName()).append("<br/>")
+                .append("产品名称:").append(application.getProductName()).append("<br/>")
+                .append("类型:").append("1".equals(application.getPaymentType()) ? "预付款" : "垫款").append("<br/>")
+                .append("金额:").append(application.getCashAmount()).append("<br/>")
+                .append("请及时登录有腾助手平台进行审核");
+        return text.toString();
+    }
+
+    @Override
+    public String getFinancePaymentApplicationFailMessage(FinancePaymentApplication application) {
+        StringBuilder text = new StringBuilder();
+        text.append("款项申请审核被拒通知").append("<br/>")
+                .append("客户名称:").append(application.getAdvertiserName()).append("<br/>")
+                .append("产品名称:").append(application.getProductName()).append("<br/>")
+                .append("类型:").append("1".equals(application.getPaymentType()) ? "预付款" : "垫款").append("<br/>")
+                .append("金额:").append(application.getCashAmount()).append("<br/>")
+                .append("请及时登录有腾助手平台进行修改提交");
+        return text.toString();
+    }
+
+    @Override
+    public String getFinancePaymentApplicationCWRechargeMessage(JSONObject data) {
+        StringBuilder text = new StringBuilder();
+        text.append("充值申请审核通知").append("<br/>")
+                .append("客户名称:").append(data.getString("advertiserName")).append("<br/>")
+                .append("产品名称:").append(data.getString("productName")).append("<br/>")
+                .append("项目名称:").append(data.getString("projectName")).append("<br/>")
+//                .append("类型:").append("1".equals(data.getString("rechargeType")) ? "充值" : "自运营充值").append("<br/>")
+                .append("充值现金金额:").append(data.getBigDecimal("totalAmount")).append("<br/>")
+                .append("请及时登录有腾助手平台进行审核");
+        return text.toString();
+    }
+
+    @Override
+    public String getFinancePaymentApplicationMJRechargeMessage(JSONObject data) {
+        //媒体类型 1-头条、2-快手、7-磁力金牛、9-广点通
+        String paymentMedia = data.getString("paymentMedia");
+        String media = null;
+        switch (paymentMedia) {
+            case "1":
+                media = "头条";
+                break;
+            case "2":
+                media = "快手";
+                break;
+            case "7":
+                media = "磁力金牛";
+                break;
+            case "9":
+                media = "广点通";
+                break;
+        }
+        StringBuilder text = new StringBuilder();
+        text.append("账户充值通知").append("<br/>")
+                .append("产品名称:").append(data.getString("productName")).append("<br/>")
+                .append("项目名称:").append(data.getString("projectName")).append("<br/>")
+                .append("媒体:").append(media).append("<br/>")
+                .append("账户ID:").append(data.getString("accountIds")).append("<br/>")
+                .append("充值现金金额:").append(data.getBigDecimal("totalAmount")).append("<br/>")
+                .append("请及时登录有腾助手平台进行充值");
+        return text.toString();
+    }
+
+    @Override
+    public String getFinancePaymentApplicationCWRechargeRefuseMessage(JSONObject data) {
+        StringBuilder text = new StringBuilder();
+        text.append("充值申请被拒绝通知").append("<br/>")
+                .append("客户名称:").append(data.getString("advertiserName")).append("<br/>")
+                .append("产品名称:").append(data.getString("productName")).append("<br/>")
+                .append("项目名称:").append(data.getString("projectName")).append("<br/>")
+//                .append("充值现金金额:").append(data.getBigDecimal("totalAmount")).append("<br/>")
+                .append("请及时登录有腾助手平台进行修改提交");
+        return text.toString();
+    }
+
+    @Override
+    public String getFinancePaymentApplicationMJRechargeRefuseMessage(JSONObject data) {
+        StringBuilder text = new StringBuilder();
+        text.append("充值申请被拒绝通知").append("<br/>")
+                .append("客户名称:").append(data.getString("advertiserName")).append("<br/>")
+                .append("产品名称:").append(data.getString("productName")).append("<br/>")
+                .append("项目名称:").append(data.getString("projectName")).append("<br/>")
+//                .append("类型:").append("1".equals(data.getString("rechargeType")) ? "充值" : "自运营充值").append("<br/>")
+//                .append("充值现金金额:").append(data.getBigDecimal("totalAmount")).append("<br/>")
+                .append("请及时登录有腾助手平台进行修改提交");
+        return text.toString();
+    }
+
 
 }

+ 245 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/controller/FinancePaymentApplicationController.java

@@ -0,0 +1,245 @@
+package cn.com.ctop.finance.payment.controller;
+
+import cn.com.ctop.common.module.utils.Check;
+import cn.com.ctop.finance.payment.entity.FinancePaymentApplication;
+import cn.com.ctop.finance.payment.service.IFinancePaymentApplicationService;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.modules.system.service.ISysRoleService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * 申请垫款表
+ */
+@Slf4j
+@Api(tags = "申请垫款表")
+@RestController
+@RequestMapping("/financePayment/application")
+public class FinancePaymentApplicationController {
+    @Autowired
+    private IFinancePaymentApplicationService financePaymentApplicationService;
+    @Autowired
+    private ISysRoleService sysRoleService;
+
+    /**
+     * 分页列表查询
+     * 销售、销售AM查看自己数据,其他角色查看所有数据
+     */
+    @ApiOperation(value = "申请垫款表-分页列表查询", notes = "申请垫款表-分页列表查询")
+    @GetMapping(value = "/list")
+    public Result<IPage<FinancePaymentApplication>> queryPageList(FinancePaymentApplication application,
+                                                                  @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                                  @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                                  HttpServletRequest req) {
+        Result<IPage<FinancePaymentApplication>> result = new Result<>();
+        QueryWrapper<FinancePaymentApplication> queryWrapper = QueryGenerator.initQueryWrapper(new FinancePaymentApplication(), req.getParameterMap());
+        //查询用户角色
+        String roleCode = sysRoleService.getRoleCodeByUserId(application.getUserId());
+        if ("sale".equals(roleCode) || "saleAssistant".equals(roleCode) || "saleAm".equals(roleCode)) {
+            if (!Check.isNull(application.getApplicanterId())) {
+                queryWrapper.eq("applicanter_id", application.getApplicanterId());
+            } else {
+                queryWrapper.eq("applicanter_id", application.getUserId());
+            }
+        } else {
+            if (!Check.isNull(application.getApplicanterId())) {
+                queryWrapper.eq("applicanter_id", application.getApplicanterId());
+            }
+        }
+        if (!Check.isNull(application.getAdvertiserName())) {
+            queryWrapper.like("advertiser_name", application.getAdvertiserName());
+        }
+        if (!Check.isNull(application.getProductName())) {
+            queryWrapper.like("product_name", application.getProductName());
+        }
+        if (!Check.isNull(application.getAuditStatus())) {
+            queryWrapper.eq("audit_status", application.getAuditStatus());
+        }
+        if (!Check.isNull(application.getPaymentMedia())) {
+            queryWrapper.eq("payment_media", application.getPaymentMedia());
+        }
+        if (!Check.isNull(application.getPaymentType())) {
+            queryWrapper.eq("payment_type", application.getPaymentType());
+        }
+        if (!Check.isNull(application.getRebateType())) {
+            queryWrapper.eq("rebate_type", application.getRebateType());
+        }
+        if (!Check.isNull(application.getStartDate()) && !Check.isNull(application.getEndDate())) {
+            queryWrapper.ge("create_time", application.getStartDate() + " 00:00:00");
+            queryWrapper.le("create_time", application.getEndDate() + " 23:59:59");
+        }
+        queryWrapper.orderByDesc("update_time");
+        Page<FinancePaymentApplication> page = new Page<FinancePaymentApplication>(pageNo, pageSize);
+        IPage<FinancePaymentApplication> pageList = financePaymentApplicationService.page(page, queryWrapper);
+        result.setSuccess(true);
+        result.setResult(pageList);
+        return result;
+    }
+
+    /**
+     * 添加申请
+     */
+    @PostMapping(value = "/add")
+    public Result<FinancePaymentApplication> add(@RequestBody JSONObject request) {
+        Result<FinancePaymentApplication> result = new Result<>();
+        try {
+            financePaymentApplicationService.add(request);
+            result.success("添加成功!");
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            result.error500("操作失败");
+        }
+        return result;
+    }
+
+    /**
+     * 更新申请
+     */
+    @PostMapping(value = "/edit")
+    public Result<Object> edit(@RequestBody JSONObject request) {
+        try {
+            FinancePaymentApplication application = JSONObject.parseObject(JSONObject.toJSONString(request), FinancePaymentApplication.class);
+            return financePaymentApplicationService.edit(application);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return Result.error("数据异常");
+    }
+
+    /**
+     * 更新状态
+     */
+    @PostMapping(value = "/updateStatus")
+    public Result<Object> updateStatus(@RequestBody JSONObject request) {
+        try {
+            FinancePaymentApplication application = JSONObject.parseObject(JSONObject.toJSONString(request), FinancePaymentApplication.class);
+            return financePaymentApplicationService.updateStatus(application);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return Result.error("数据异常");
+    }
+
+    /**
+     * 上传临时文件,更新状态
+     */
+    @PostMapping(value = "/updateTemporaryFiles")
+    public Result<Object> updateTemporaryFiles(@RequestBody JSONObject request) {
+        try {
+            FinancePaymentApplication application = JSONObject.parseObject(JSONObject.toJSONString(request), FinancePaymentApplication.class);
+            return financePaymentApplicationService.updateTemporaryFiles(application);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return Result.error("数据异常");
+    }
+
+    /**
+     * 通过id删除
+     */
+    @GetMapping(value = "/delete")
+    public Result<?> delete(@RequestParam(name = "id") String id) {
+        try {
+            financePaymentApplicationService.removeById(id);
+        } catch (Exception e) {
+            log.error("删除失败", e.getMessage());
+            return Result.error("删除失败!");
+        }
+        return Result.ok("删除成功!");
+    }
+
+    /**
+     * 通过id查询
+     */
+    @GetMapping(value = "/queryById")
+    public Result<FinancePaymentApplication> queryById(@RequestParam(name = "id", required = true) String id) {
+        Result<FinancePaymentApplication> result = new Result<>();
+        FinancePaymentApplication financePaymentApplication = financePaymentApplicationService.getById(id);
+        if (financePaymentApplication == null) {
+            result.error500("未找到对应实体");
+        } else {
+            result.setResult(financePaymentApplication);
+            result.setSuccess(true);
+        }
+        return result;
+    }
+
+    /**
+     * 充值记录
+     */
+    @GetMapping(value = "/queryPoolInfo")
+    public Result<Object> queryPoolInfo(String advertiserId, String productId, String type) {
+        return financePaymentApplicationService.queryPoolInfo(advertiserId, productId, type);
+    }
+
+    /**
+     * 充值记录
+     */
+    @GetMapping(value = "/queryInfo")
+    public Result<Object> queryInfo(String advertiserId, String productId, String type) {
+        return financePaymentApplicationService.queryInfo(advertiserId, productId, type);
+    }
+
+    /**
+     * 获取广告主
+     */
+    @GetMapping(value = "/getAdvertisers")
+    public Result<Object> getAdvertisers() {
+        try {
+            return financePaymentApplicationService.getAdvertisers();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return Result.error("查询异常");
+    }
+
+    /**
+     * 根据广告主ID集获取产品
+     */
+    @GetMapping(value = "/getProductByAdvertiserIds")
+    public Result<Object> getProductByAdvertiserIds(String ids) {
+        try {
+            if (Check.isNull(ids)) {
+                return Result.error("缺少参数");
+            }
+            return financePaymentApplicationService.getProductByAdvertiserIds(ids);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return Result.error("查询异常");
+    }
+
+
+    /**
+     * 查询审核流程
+     */
+    @GetMapping(value = "/queryAuditProcess")
+    public Result<Object> queryAuditProcess(Long id) {
+        try {
+            if (Check.isNull(id)) {
+                return Result.error("缺少参数");
+            }
+            return financePaymentApplicationService.queryAuditProcess(id);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return Result.error("查询异常");
+    }
+
+
+}

+ 253 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/controller/FinancePaymentPoolController.java

@@ -0,0 +1,253 @@
+package cn.com.ctop.finance.payment.controller;
+
+import cn.com.ctop.common.module.entity.CtopOauthToken;
+import cn.com.ctop.common.module.service.ICtopOauthTokenService;
+import cn.com.ctop.common.module.utils.Check;
+import cn.com.ctop.finance.payment.entity.FinancePaymentPool;
+import cn.com.ctop.finance.payment.service.IFinancePaymentPoolService;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouInterfaceService;
+import cn.com.ctop.toutiao.modules.tool.service.IByteDanceGetAccountFundService;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.modules.system.service.ISysRoleService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Arrays;
+
+/**
+ * 款项池表
+ */
+@Slf4j
+@Api(tags = "款项池表")
+@RestController
+@RequestMapping("/financePayment/pool")
+public class FinancePaymentPoolController {
+    @Autowired
+    private IFinancePaymentPoolService financePaymentPoolService;
+    @Autowired
+    private ISysRoleService sysRoleService;
+
+    /**
+     * 分页列表查询
+     */
+    @ApiOperation(value = "款项池表-分页列表查询", notes = "款项池表-分页列表查询")
+    @GetMapping(value = "/list")
+    public Result<IPage<FinancePaymentPool>> queryPageList(FinancePaymentPool pool,
+                                                           @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                           @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                           HttpServletRequest req) {
+        Result<IPage<FinancePaymentPool>> result = new Result<>();
+        QueryWrapper<FinancePaymentPool> queryWrapper = QueryGenerator.initQueryWrapper(new FinancePaymentPool(), req.getParameterMap());
+        if (!Check.isNull(pool.getAdvertiserName())) {
+            queryWrapper.like("advertiser_name", pool.getAdvertiserName());
+        }
+        if (!Check.isNull(pool.getProductName())) {
+            queryWrapper.like("product_name", pool.getProductName());
+        }
+        if (!Check.isNull(pool.getPaymentMedia())) {
+            queryWrapper.eq("payment_media", pool.getPaymentMedia());
+        }
+        if (!Check.isNull(pool.getPaymentType())) {
+            queryWrapper.eq("payment_type", pool.getPaymentType());
+        }
+        if (!Check.isNull(pool.getRebateType())) {
+            queryWrapper.eq("rebate_type", pool.getRebateType());
+        }
+        if (!Check.isNull(pool.getStartDate()) && !Check.isNull(pool.getEndDate())) {
+            queryWrapper.ge("create_time", pool.getStartDate() + " 00:00:00");
+            queryWrapper.le("create_time", pool.getEndDate() + " 23:59:59");
+        }
+        queryWrapper.orderByDesc("update_time");
+        Page<FinancePaymentPool> page = new Page<FinancePaymentPool>(pageNo, pageSize);
+        IPage<FinancePaymentPool> pageList = financePaymentPoolService.page(page, queryWrapper);
+        result.setSuccess(true);
+        result.setResult(pageList);
+        return result;
+    }
+
+    /**
+     * 添加
+     *
+     * @param financePaymentPool
+     * @return
+     */
+    @ApiOperation(value = "款项池表-添加", notes = "款项池表-添加")
+    @PostMapping(value = "/add")
+    public Result<FinancePaymentPool> add(@RequestBody FinancePaymentPool financePaymentPool) {
+        Result<FinancePaymentPool> result = new Result<>();
+        try {
+            financePaymentPoolService.save(financePaymentPool);
+            result.success("添加成功!");
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            result.error500("操作失败");
+        }
+        return result;
+    }
+
+    /**
+     * 编辑
+     *
+     * @param financePaymentPool
+     * @return
+     */
+    @ApiOperation(value = "款项池表-编辑", notes = "款项池表-编辑")
+    @PutMapping(value = "/edit")
+    public Result<FinancePaymentPool> edit(@RequestBody FinancePaymentPool financePaymentPool) {
+        Result<FinancePaymentPool> result = new Result<FinancePaymentPool>();
+        FinancePaymentPool financePaymentPoolEntity = financePaymentPoolService.getById(financePaymentPool.getId());
+        if (financePaymentPoolEntity == null) {
+            result.error500("未找到对应实体");
+        } else {
+            boolean ok = financePaymentPoolService.updateById(financePaymentPool);
+            if (ok) {
+                result.success("修改成功!");
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * 通过id删除
+     *
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "款项池表-通过id删除", notes = "款项池表-通过id删除")
+    @DeleteMapping(value = "/delete")
+    public Result<?> delete(@RequestParam(name = "id") String id) {
+        try {
+            financePaymentPoolService.removeById(id);
+        } catch (Exception e) {
+            log.error("删除失败", e.getMessage());
+            return Result.error("删除失败!");
+        }
+        return Result.ok("删除成功!");
+    }
+
+    /**
+     * 批量删除
+     *
+     * @param ids
+     * @return
+     */
+    @ApiOperation(value = "款项池表-批量删除", notes = "款项池表-批量删除")
+    @DeleteMapping(value = "/deleteBatch")
+    public Result<FinancePaymentPool> deleteBatch(@RequestParam(name = "ids") String ids) {
+        Result<FinancePaymentPool> result = new Result<>();
+        if (ids == null || "".equals(ids.trim())) {
+            result.error500("参数不识别!");
+        } else {
+            this.financePaymentPoolService.removeByIds(Arrays.asList(ids.split(",")));
+            result.success("删除成功!");
+        }
+        return result;
+    }
+
+    /**
+     * 通过id查询
+     *
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "款项池表-通过id查询", notes = "款项池表-通过id查询")
+    @GetMapping(value = "/queryById")
+    public Result<FinancePaymentPool> queryById(@RequestParam(name = "id", required = true) String id) {
+        Result<FinancePaymentPool> result = new Result<>();
+        FinancePaymentPool financePaymentPool = financePaymentPoolService.getById(id);
+        if (financePaymentPool == null) {
+            result.error500("未找到对应实体");
+        } else {
+            result.setResult(financePaymentPool);
+            result.setSuccess(true);
+        }
+        return result;
+    }
+
+    /**
+     * 查询信息
+     */
+    @GetMapping(value = "/queryPool")
+    public Result<Object> queryPoolAmount(String advertiserId, Long productId, String type) {
+        return financePaymentPoolService.queryPoolAmount(advertiserId, productId, type);
+    }
+
+    /**
+     * 获取项目
+     */
+    @GetMapping(value = "/queryPoolProjectList")
+    public Result<Object> queryPoolProjectList(String advertiserId, Long productId, String type) {
+        return financePaymentPoolService.queryPoolProjectList(advertiserId, productId, type);
+    }
+
+
+    /**
+     * 为充值提供客户,产品等信息
+     */
+    @PostMapping(value = "/querySheetIdAndNameList")
+    public Result<Object> querySheetIdAndNameList(@RequestBody JSONObject data) {
+        try {
+            String tableparameters = data.getString("table");
+            if (tableparameters.indexOf(",") != -1) {
+                return financePaymentPoolService.querySheetIdAndNameList(data);
+            } else {
+                return Result.error("入参格式不正确");
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return Result.error("查询异常");
+    }
+
+    @Autowired
+    private IKuaishouInterfaceService iKuaishouInterfaceService;
+    @Autowired
+    private ICtopOauthTokenService oauthTokenService;
+    @Autowired
+    IByteDanceGetAccountFundService byteDanceGetAccountFundService;
+
+    /**
+     * 查询账户余额
+     * media 媒体类型 1-头条、2-快手、7-磁力金牛、9-广点通
+     */
+    @GetMapping(value = "/queryAccountBalance")
+    public Result<Object> queryAccountBalance(Long accountId, String media) {
+        try {
+            CtopOauthToken oauthToken = oauthTokenService.getTokenByAccountId(accountId);
+            if ("1".equals(media)) {
+                JSONObject fundData = byteDanceGetAccountFundService.getAccountFundBy(oauthToken, accountId);
+                if (Check.isNull(fundData)) {
+                    return Result.ok(0);
+                }
+                return Result.ok(fundData.getBigDecimal("valid_balance"));
+            } else if ("2".equals(media)) {
+                JSONObject fundJson = iKuaishouInterfaceService.fundGet(oauthToken);
+                return Result.ok(fundJson.getBigDecimal("balance"));
+            } else {
+                return Result.error("暂不支持查询磁力金牛和广点通余额");
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return Result.error("查询异常");
+    }
+
+
+}

+ 165 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/controller/FinancePaymentRechargeApplicationController.java

@@ -0,0 +1,165 @@
+package cn.com.ctop.finance.payment.controller;
+
+import cn.com.ctop.common.module.utils.Check;
+import cn.com.ctop.finance.payment.entity.FinancePaymentRechargeApplication;
+import cn.com.ctop.finance.payment.service.IFinancePaymentRechargeApplicationService;
+import com.alibaba.fastjson.JSONObject;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.system.service.ISysRoleService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 充值申请表
+ */
+@Slf4j
+@Api(tags = "充值申请表")
+@RestController
+@RequestMapping("/financePayment/rechargeApplication")
+public class FinancePaymentRechargeApplicationController {
+    @Autowired
+    private IFinancePaymentRechargeApplicationService financePaymentRechargeApplicationService;
+    @Autowired
+    private ISysRoleService sysRoleService;
+
+    /**
+     * 分页列表查询
+     */
+    @ApiOperation(value = "充值申请表-分页列表查询", notes = "充值申请表-分页列表查询")
+    @GetMapping(value = "/list")
+    public Result<Object> queryPageList(FinancePaymentRechargeApplication recharge,
+                                        @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                        @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
+        try {
+            //查询用户角色
+            String roleCode = sysRoleService.getRoleCodeByUserId(recharge.getUserId());
+            if ("sale".equals(roleCode) || "saleAssistant".equals(roleCode) || "saleAm".equals(roleCode)) {
+                recharge.setApplicanterId(recharge.getUserId());
+            }
+            return financePaymentRechargeApplicationService.queryPageList(recharge, pageNo, pageSize);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return Result.error("查询失败!");
+        }
+    }
+
+    /**
+     * 查询充值账户详情
+     */
+    @GetMapping(value = "/queryRechargeAccountDetails")
+    public Result<Object> queryRechargeAccountDetails(Long rechargeId) {
+        try {
+            return financePaymentRechargeApplicationService.queryRechargeAccountDetails(rechargeId);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return Result.error("查询失败!");
+        }
+    }
+
+    /**
+     * 添加
+     */
+    @PostMapping(value = "/add")
+    public Result add(@RequestBody JSONObject data) {
+        try {
+            return financePaymentRechargeApplicationService.add(data);
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+        return Result.error("新增异常");
+    }
+
+    /**
+     * 编辑
+     */
+    @PostMapping(value = "/edit")
+    public Result<Object> edit(@RequestBody JSONObject data) {
+        try {
+            return financePaymentRechargeApplicationService.edit(data);
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+        return Result.error("修改异常");
+    }
+
+    /**
+     * 更改状态
+     */
+    @PostMapping(value = "/updateStatus")
+    public Result<Object> updateStatus(@RequestBody JSONObject data) {
+        try {
+            return financePaymentRechargeApplicationService.updateStatus(data);
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+        return Result.error("修改异常");
+    }
+
+    /**
+     * 通过id删除
+     */
+    @GetMapping(value = "/delete")
+    public Result<?> delete(@RequestParam(name = "id") String id) {
+        try {
+            financePaymentRechargeApplicationService.removeById(id);
+        } catch (Exception e) {
+            log.error("删除失败", e.getMessage());
+            return Result.error("删除失败!");
+        }
+        return Result.ok("删除成功!");
+    }
+
+    /**
+     * 通过id查询
+     */
+    @GetMapping(value = "/queryById")
+    public Result<FinancePaymentRechargeApplication> queryById(@RequestParam(name = "id", required = true) String id) {
+        Result<FinancePaymentRechargeApplication> result = new Result<>();
+        FinancePaymentRechargeApplication financePaymentRechargeApplication = financePaymentRechargeApplicationService.getById(id);
+        if (financePaymentRechargeApplication == null) {
+            result.error500("未找到对应实体");
+        } else {
+            result.setResult(financePaymentRechargeApplication);
+            result.setSuccess(true);
+        }
+        return result;
+    }
+
+    /**
+     * 上传临时文件,更新状态
+     */
+    @PostMapping(value = "/updateTemporaryFiles")
+    public Result<Object> updateTemporaryFiles(@RequestBody JSONObject data) {
+        try {
+            return financePaymentRechargeApplicationService.updateTemporaryFiles(data);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return Result.error("数据异常");
+    }
+
+    /**
+     * 查询审核流程
+     */
+    @GetMapping(value = "/queryAuditProcess")
+    public Result<Object> queryAuditProcess(Long id) {
+        try {
+            if (Check.isNull(id)) {
+                return Result.error("缺少参数");
+            }
+            return financePaymentRechargeApplicationService.queryAuditProcess(id);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return Result.error("查询异常");
+    }
+
+}

+ 179 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/entity/FinancePaymentApplication.java

@@ -0,0 +1,179 @@
+package cn.com.ctop.finance.payment.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+import java.util.Date;
+
+/**
+ * 申请垫款表
+ */
+@Data
+@TableName("finance_payment_application")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "finance_payment_application对象", description = "申请垫款表")
+public class FinancePaymentApplication {
+
+    /**
+     * 主键
+     */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "主键")
+    private Long id;
+    /**
+     * 客户(主体)ID
+     */
+    @Excel(name = "客户(主体)ID", width = 15)
+    @ApiModelProperty(value = "客户(主体)ID")
+    private String advertiserId;
+    /**
+     * 客户(主体)
+     */
+    @Excel(name = "客户(主体) ", width = 15)
+    @ApiModelProperty(value = "客户(主体) ")
+    private String advertiserName;
+    /**
+     * 产品id
+     */
+    @Excel(name = "产品id", width = 15)
+    @ApiModelProperty(value = "产品id")
+    private Long productId;
+    /**
+     * 产品
+     */
+    @Excel(name = "产品", width = 15)
+    @ApiModelProperty(value = "产品")
+    private String productName;
+    /**
+     * 拨款类型:1-预付款、2-垫款
+     */
+    @Excel(name = "拨款类型:1-预付款、2-垫款", width = 15)
+    @ApiModelProperty(value = "拨款类型:1-预付款、2-垫款")
+    private String paymentType;
+    /**
+     * 媒体类型 1-头条、2-快手、7-磁力金牛、9-广点通
+     */
+    @Excel(name = "媒体类型 1-头条、2-快手、7-磁力金牛、9-广点通", width = 15)
+    @ApiModelProperty(value = "媒体类型 1-头条、2-快手、7-磁力金牛、9-广点通")
+    private String paymentMedia;
+    /**
+     * 端口类型:1-汇创、2-骄阳、3-江西五七、4-北京五六七
+     */
+    @Excel(name = "端口类型:1-汇创、2-骄阳、3-江西五七、4-北京五六七", width = 15)
+    @ApiModelProperty(value = "端口类型:1-汇创、2-骄阳、3-江西五七、4-北京五六七")
+    private String paymentPort;
+    /**
+     * 现金金额
+     */
+    @Excel(name = "现金金额", width = 15)
+    @ApiModelProperty(value = "现金金额")
+    private java.math.BigDecimal cashAmount;
+    /**
+     * 账显金额
+     */
+    @Excel(name = "账显金额", width = 15)
+    @ApiModelProperty(value = "账显金额")
+    private java.math.BigDecimal displayAmount;
+    /**
+     * 返点类型:1-返货、2-返现
+     */
+    @Excel(name = "返点类型:1-返货、2-返现", width = 15)
+    @ApiModelProperty(value = "返点类型:1-返货、2-返现")
+    private String rebateType;
+    /**
+     * 返点比例
+     */
+    @Excel(name = "返点比例", width = 15)
+    @ApiModelProperty(value = "返点比例")
+    private Double rebateRate;
+    /**
+     * 状态 1-待审核、2-审核中、3-审核通过、4-临时通过、5-审核拒绝
+     */
+    @Excel(name = "状态 1-待审核、3-审核通过、4-临时通过、5-审核拒绝", width = 15)
+    @ApiModelProperty(value = "状态 1-待审核、3-审核通过、4-临时通过、5-审核拒绝")
+    private String auditStatus;
+    /**
+     * 申请人ID
+     */
+    @Excel(name = "申请人ID", width = 15)
+    @ApiModelProperty(value = "申请人ID")
+    private String applicanterId;
+    /**
+     * 申请人
+     */
+    @Excel(name = "申请人", width = 15)
+    @ApiModelProperty(value = "申请人")
+    private String applicanter;
+    /**
+     * 审核人ID
+     */
+    @Excel(name = "审核人ID", width = 15)
+    @ApiModelProperty(value = "审核人ID")
+    private String reviewederId;
+    /**
+     * 审核人
+     */
+    @Excel(name = "审核人", width = 15)
+    @ApiModelProperty(value = "审核人")
+    private String revieweder;
+    /**
+     * 审核意见
+     */
+    @Excel(name = "审核意见", width = 15)
+    @ApiModelProperty(value = "审核意见")
+    private String approvalContent;
+    /**
+     * 是否临时通过:0-否,1-是
+     */
+    @Excel(name = "是否临时通过:0-否,1-是", width = 15)
+    @ApiModelProperty(value = "是否临时通过:0-否,1-是")
+    private String temporaryPassage;
+    /**
+     * 是否临时垫款:0-否,1-是
+     */
+    @Excel(name = "是否临时垫款:0-否,1-是", width = 15)
+    @ApiModelProperty(value = "是否临时垫款:0-否,1-是")
+    private String temporaryAdvances;
+
+    private String remarks;
+    /**
+     * 附件
+     */
+    @Excel(name = "附件", width = 15)
+    @ApiModelProperty(value = "附件")
+    private String files;
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    /**
+     * 更新时间
+     */
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+    /**
+     * 开始时间
+     */
+    @TableField(exist = false)
+    private String startDate;
+    /**
+     * 结束时间
+     */
+    @TableField(exist = false)
+    private String endDate;
+    /**
+     * 登录人ID
+     */
+    @TableField(exist = false)
+    private String userId;
+}

+ 71 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/entity/FinancePaymentApplicationRecord.java

@@ -0,0 +1,71 @@
+package cn.com.ctop.finance.payment.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+import java.util.Date;
+
+/**
+ * 审核记录表
+ */
+@Data
+@TableName("finance_payment_application_record")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "finance_payment_application_record对象", description = "审核记录表")
+public class FinancePaymentApplicationRecord {
+
+    /**
+     * 主键
+     */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "主键")
+    private Long id;
+    /**
+     * 申请垫款ID
+     */
+    @Excel(name = "申请垫款ID", width = 15)
+    @ApiModelProperty(value = "申请垫款ID")
+    private Long applicationId;
+    /**
+     * 审核人ID
+     */
+    @Excel(name = "审核人ID", width = 15)
+    @ApiModelProperty(value = "审核人ID")
+    private String reviewederId;
+    /**
+     * 状态 1-待审核、2-审核中、3-审核通过、4-临时通过、5-审核拒绝
+     */
+    @Excel(name = "状态 1-待审核、3-审核通过、4-临时通过、5-审核拒绝", width = 15)
+    @ApiModelProperty(value = "状态 1-待审核、3-审核通过、4-临时通过、5-审核拒绝")
+    private String auditStatus;
+    /**
+     * 审核意见
+     */
+    @Excel(name = "审核意见", width = 15)
+    @ApiModelProperty(value = "审核意见")
+    private String approvalContent;
+    /**
+     * 附件
+     */
+    @Excel(name = "附件", width = 15)
+    @ApiModelProperty(value = "附件")
+    private String files;
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    /**
+     * 更新时间
+     */
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+}

+ 118 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/entity/FinancePaymentPool.java

@@ -0,0 +1,118 @@
+package cn.com.ctop.finance.payment.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+import java.util.Date;
+
+/**
+ * 款项池表
+ */
+@Data
+@TableName("finance_payment_pool")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "finance_payment_pool对象", description = "款项池表")
+public class FinancePaymentPool {
+
+    /**
+     * 主键
+     */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "主键")
+    private Long id;
+    /**
+     * 客户(主体)ID
+     */
+    @Excel(name = "客户(主体)ID", width = 15)
+    @ApiModelProperty(value = "客户(主体)ID")
+    private String advertiserId;
+    /**
+     * 客户(主体)
+     */
+    @Excel(name = "客户(主体) ", width = 15)
+    @ApiModelProperty(value = "客户(主体) ")
+    private String advertiserName;
+    /**
+     * 产品id
+     */
+    @Excel(name = "产品id", width = 15)
+    @ApiModelProperty(value = "产品id")
+    private Long productId;
+    /**
+     * 产品
+     */
+    @Excel(name = "产品", width = 15)
+    @ApiModelProperty(value = "产品")
+    private String productName;
+    /**
+     * 拨款类型:1-预付款、2-垫款
+     */
+    @Excel(name = "拨款类型:1-预付款、2-垫款", width = 15)
+    @ApiModelProperty(value = "拨款类型:1-预付款、2-垫款")
+    private String paymentType;
+    /**
+     * 媒体类型 1-头条、2-快手、7-磁力金牛、9-广点通
+     */
+    @Excel(name = "媒体类型 1-头条、2-快手、7-磁力金牛、9-广点通", width = 15)
+    @ApiModelProperty(value = "媒体类型 1-头条、2-快手、7-磁力金牛、9-广点通")
+    private String paymentMedia;
+    /**
+     * 端口类型:1-汇创、2-骄阳、3-江西五七、4-北京五六七
+     */
+    @Excel(name = "端口类型:1-汇创、2-骄阳、3-江西五七、4-北京五六七", width = 15)
+    @ApiModelProperty(value = "端口类型:1-汇创、2-骄阳、3-江西五七、4-北京五六七")
+    private String paymentPort;
+    /**
+     * 现金金额
+     */
+    @Excel(name = "现金金额", width = 15)
+    @ApiModelProperty(value = "现金金额")
+    private java.math.BigDecimal cashAmount;
+    /**
+     * 账显金额
+     */
+    @Excel(name = "账显金额", width = 15)
+    @ApiModelProperty(value = "账显金额")
+    private java.math.BigDecimal displayAmount;
+    /**
+     * 返点类型:1-返货、2-返现
+     */
+    @Excel(name = "返点类型:1-返货、2-返现", width = 15)
+    @ApiModelProperty(value = "返点类型:1-返货、2-返现")
+    private String rebateType;
+    /**
+     * 返点比例
+     */
+    @Excel(name = "返点比例", width = 15)
+    @ApiModelProperty(value = "返点比例")
+    private Double rebateRate;
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    /**
+     * 更新时间
+     */
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+    /**
+     * 开始时间
+     */
+    @TableField(exist = false)
+    private String startDate;
+    /**
+     * 结束时间
+     */
+    @TableField(exist = false)
+    private String endDate;
+}

+ 93 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/entity/FinancePaymentRechargeAccount.java

@@ -0,0 +1,93 @@
+package cn.com.ctop.finance.payment.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+import java.util.Date;
+
+/**
+ * 充值账户表
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2023-04-13
+ */
+@Data
+@TableName("finance_payment_recharge_account")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "finance_payment_recharge_account对象", description = "充值账户表")
+public class FinancePaymentRechargeAccount {
+
+    /**
+     * 主键
+     */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "主键")
+    private Long id;
+    /**
+     * 充值表ID
+     */
+    @Excel(name = "充值表ID", width = 15)
+    @ApiModelProperty(value = "充值表ID")
+    private Long rechargeId;
+    /**
+     * 项目id
+     */
+    @Excel(name = "项目id", width = 15)
+    @ApiModelProperty(value = "项目id")
+    private Long projectId;
+    /**
+     * 账户id
+     */
+    @Excel(name = "账户id", width = 15)
+    @ApiModelProperty(value = "账户id")
+    private Long accountId;
+    /**
+     * 账户名
+     */
+    @Excel(name = "账户名", width = 15)
+    @ApiModelProperty(value = "账户名")
+    private String accountName;
+    /**
+     * 现金金额
+     */
+    @Excel(name = "现金金额", width = 15)
+    @ApiModelProperty(value = "现金金额")
+    private java.math.BigDecimal cashAmount;
+    /**
+     * 到账金额
+     */
+    @Excel(name = "到账金额", width = 15)
+    @ApiModelProperty(value = "到账金额")
+    private java.math.BigDecimal receivedAmount;
+    /**
+     * 返点类型:1-返货、2-返现
+     */
+    @Excel(name = "返点类型:1-返货、2-返现", width = 15)
+    @ApiModelProperty(value = "返点类型:1-返货、2-返现")
+    private String rebateType;
+    /**
+     * 返点比例
+     */
+    @Excel(name = "返点比例", width = 15)
+    @ApiModelProperty(value = "返点比例")
+    private Double rebateRate;
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    /**
+     * 更新时间
+     */
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+}

+ 157 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/entity/FinancePaymentRechargeApplication.java

@@ -0,0 +1,157 @@
+package cn.com.ctop.finance.payment.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+/**
+ * 充值申请表
+ */
+@Data
+@TableName("finance_payment_recharge_application")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "finance_payment_recharge_application对象", description = "充值申请表")
+public class FinancePaymentRechargeApplication {
+
+    /**
+     * 主键
+     */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "主键")
+    private Long id;
+    /**
+     * 款项池ID
+     */
+    @Excel(name = "款项池ID", width = 15)
+    @ApiModelProperty(value = "款项池ID")
+    private Long poolId;
+    /**
+     * 客户(主体)ID
+     */
+    @Excel(name = "客户(主体)ID", width = 15)
+    @ApiModelProperty(value = "客户(主体)ID")
+    private String advertiserId;
+    /**
+     * 广告主名称
+     */
+    @Excel(name = "广告主名称", width = 15)
+    @ApiModelProperty(value = "广告主名称")
+    private String advertiserName;
+    /**
+     * 产品id
+     */
+    @Excel(name = "产品id", width = 15)
+    @ApiModelProperty(value = "产品id")
+    private Long productId;
+    /**
+     * 产品名
+     */
+    @Excel(name = "产品名", width = 15)
+    @ApiModelProperty(value = "产品名")
+    private String productName;
+    /**
+     * 项目id
+     */
+    @Excel(name = "项目id", width = 15)
+    @ApiModelProperty(value = "项目id")
+    private Long projectId;
+    /**
+     * 项目名称
+     */
+    @Excel(name = "项目名称", width = 15)
+    @ApiModelProperty(value = "项目名称")
+    private String projectName;
+    /**
+     * 媒体类型 1-头条、2-快手、7-磁力金牛、9-广点通
+     */
+    @Excel(name = "媒体类型 1-头条、2-快手、7-磁力金牛、9-广点通", width = 15)
+    @ApiModelProperty(value = "媒体类型 1-头条、2-快手、7-磁力金牛、9-广点通")
+    private String paymentMedia;
+    /**
+     * 类型:1-充值、2-自运营充值
+     */
+    @Excel(name = "类型:1-充值、2-自运营充值", width = 15)
+    @ApiModelProperty(value = "类型:1-充值、2-自运营充值")
+    private String rechargeType;
+    /**
+     * 状态 1-待审核、2-待充值、3-充值完成、4-临时充值、5-审核拒绝
+     */
+    @Excel(name = "状态 1-待审核、2-待充值、3-充值完成、4-临时充值、5-审核拒绝", width = 15)
+    @ApiModelProperty(value = "状态 1-待审核、2-待充值、3-充值完成、4-临时充值、5-审核拒绝")
+    private String auditStatus;
+    /**
+     * 申请人ID
+     */
+    @Excel(name = "申请人ID", width = 15)
+    @ApiModelProperty(value = "申请人ID")
+    private String applicanterId;
+    /**
+     * 申请人
+     */
+    @Excel(name = "申请人", width = 15)
+    @ApiModelProperty(value = "申请人")
+    private String applicanter;
+    /**
+     * 审核人ID
+     */
+    @Excel(name = "审核人ID", width = 15)
+    @ApiModelProperty(value = "审核人ID")
+    private String reviewederId;
+    /**
+     * 审核人
+     */
+    @Excel(name = "审核人", width = 15)
+    @ApiModelProperty(value = "审核人")
+    private String revieweder;
+    /**
+     * 财务审核,0-否,1-是
+     */
+    @Excel(name = "财务审核,0-否,1-是", width = 15)
+    @ApiModelProperty(value = "财务审核,0-否,1-是")
+    private String financialReview;
+    /**
+     * 审核意见
+     */
+    @Excel(name = "审核意见", width = 15)
+    @ApiModelProperty(value = "审核意见")
+    private String approvalContent;
+    /**
+     * 附件
+     */
+    @Excel(name = "附件", width = 15)
+    @ApiModelProperty(value = "附件")
+    private String files;
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间")
+    private java.util.Date createTime;
+    /**
+     * 更新时间
+     */
+    @ApiModelProperty(value = "更新时间")
+    private java.util.Date updateTime;
+    /**
+     * 开始时间
+     */
+    @TableField(exist = false)
+    private String startDate;
+    /**
+     * 结束时间
+     */
+    @TableField(exist = false)
+    private String endDate;
+    /**
+     * 登录人ID
+     */
+    @TableField(exist = false)
+    private String userId;
+}

+ 75 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/entity/FinancePaymentRechargeApplicationRecord.java

@@ -0,0 +1,75 @@
+package cn.com.ctop.finance.payment.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+import java.util.Date;
+
+/**
+ * 充值申请审核记录表
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2023-04-13
+ */
+@Data
+@TableName("finance_payment_recharge_application_record")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "finance_payment_recharge_application_record对象", description = "充值申请审核记录表")
+public class FinancePaymentRechargeApplicationRecord {
+
+    /**
+     * 主键
+     */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "主键")
+    private Long id;
+    /**
+     * 充值ID
+     */
+    @Excel(name = "充值ID", width = 15)
+    @ApiModelProperty(value = "充值ID")
+    private Long rechargeId;
+    /**
+     * 审核人ID
+     */
+    @Excel(name = "审核人ID", width = 15)
+    @ApiModelProperty(value = "审核人ID")
+    private String reviewederId;
+    /**
+     * 状态0-创建申请、 1-待审核、2-待充值、3-充值完成、4-临时充值、5-审核拒绝
+     */
+    @Excel(name = "状态0-创建申请、 1-待审核、2-待充值、3-充值完成、4-临时充值、5-审核拒绝", width = 15)
+    @ApiModelProperty(value = "状态0-创建申请、 1-待审核、2-待充值、3-充值完成、4-临时充值、5-审核拒绝")
+    private String auditStatus;
+    /**
+     * 审核说明
+     */
+    @Excel(name = "审核说明", width = 15)
+    @ApiModelProperty(value = "审核说明")
+    private String approvalContent;
+    /**
+     * 附件
+     */
+    @Excel(name = "附件", width = 15)
+    @ApiModelProperty(value = "附件")
+    private String files;
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    /**
+     * 更新时间
+     */
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+}

+ 28 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/mapper/FinancePaymentApplicationMapper.java

@@ -0,0 +1,28 @@
+package cn.com.ctop.finance.payment.mapper;
+
+import cn.com.ctop.finance.payment.entity.FinancePaymentApplication;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 申请垫款表
+ *
+ * @author jeecg-boot
+ * 2023-04-11
+ * @version V1.0
+ */
+public interface FinancePaymentApplicationMapper extends BaseMapper<FinancePaymentApplication> {
+
+    List<JSONObject> getAdvertisers();
+
+    List<JSONObject> getProductByAdvertiserIds(@Param("advertiserIds") List<String> advertiserIds);
+
+    List<FinancePaymentApplication> queryPoolInfo(@Param("advertiserId") String advertiserId, @Param("productId") String productId, @Param("type") String type);
+
+    List<JSONObject> queryAuditProcess(@Param("id") Long id);
+
+    FinancePaymentApplication queryInfo(String advertiserId, String productId, String type);
+}

+ 17 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/mapper/FinancePaymentApplicationRecordMapper.java

@@ -0,0 +1,17 @@
+package cn.com.ctop.finance.payment.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import cn.com.ctop.finance.payment.entity.FinancePaymentApplicationRecord;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 审核记录表
+ * @author jeecg-boot
+ * 2023-04-11
+ * @version V1.0
+ */
+public interface FinancePaymentApplicationRecordMapper extends BaseMapper<FinancePaymentApplicationRecord> {
+
+}

+ 25 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/mapper/FinancePaymentPoolMapper.java

@@ -0,0 +1,25 @@
+package cn.com.ctop.finance.payment.mapper;
+
+import cn.com.ctop.finance.payment.entity.FinancePaymentPool;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 款项池表
+ *
+ * @author jeecg-boot
+ * 2023-04-11
+ * @version V1.0
+ */
+public interface FinancePaymentPoolMapper extends BaseMapper<FinancePaymentPool> {
+
+    FinancePaymentPool queryFinancePaymentPool(@Param("advertiserId") String advertiserId, @Param("productId") Long productId, @Param("paymentMedia") String paymentMedia);
+
+    List<JSONObject> queryIdAndName(Map<String, Object> map);
+
+    List<JSONObject> queryPoolProjectList(@Param("advertiserIds") List<String> advertiserIds,@Param("productId") Long productId,@Param("type") String type);
+}

+ 24 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/mapper/FinancePaymentRechargeAccountMapper.java

@@ -0,0 +1,24 @@
+package cn.com.ctop.finance.payment.mapper;
+
+import cn.com.ctop.finance.payment.entity.FinancePaymentRechargeAccount;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 充值账户表
+ *
+ * @author jeecg-boot
+ * 2023-04-13
+ * @version V1.0
+ */
+public interface FinancePaymentRechargeAccountMapper extends BaseMapper<FinancePaymentRechargeAccount> {
+
+    void delByRechargeId(@Param("rechargeId") Long rechargeId);
+
+    JSONObject queryAmounts(@Param("rechargeId") Long rechargeId);
+
+    List<FinancePaymentRechargeAccount> queryByRechargeId(@Param("rechargeId") Long rechargeId);
+}

+ 22 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/mapper/FinancePaymentRechargeApplicationMapper.java

@@ -0,0 +1,22 @@
+package cn.com.ctop.finance.payment.mapper;
+
+import cn.com.ctop.finance.payment.entity.FinancePaymentRechargeApplication;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 充值申请表
+ *
+ * @author jeecg-boot
+ * 2023-04-11
+ * @version V1.0
+ */
+public interface FinancePaymentRechargeApplicationMapper extends BaseMapper<FinancePaymentRechargeApplication> {
+
+    List<JSONObject> queryAuditProcess(@Param("id") Long id);
+
+    List<JSONObject> queryPageList(FinancePaymentRechargeApplication recharge);
+}

+ 15 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/mapper/FinancePaymentRechargeApplicationRecordMapper.java

@@ -0,0 +1,15 @@
+package cn.com.ctop.finance.payment.mapper;
+
+import cn.com.ctop.finance.payment.entity.FinancePaymentRechargeApplicationRecord;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 充值申请审核记录表
+ *
+ * @author jeecg-boot
+ * 2023-04-13
+ * @version V1.0
+ */
+public interface FinancePaymentRechargeApplicationRecordMapper extends BaseMapper<FinancePaymentRechargeApplicationRecord> {
+
+}

+ 104 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/mapper/xml/FinancePaymentApplicationMapper.xml

@@ -0,0 +1,104 @@
+<?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="cn.com.ctop.finance.payment.mapper.FinancePaymentApplicationMapper">
+
+    <select id="getAdvertisers" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT group_concat(DISTINCT t2.id) as 'advertiserIds', t1.advertiser_name as 'advertiserName'
+        FROM `ctop_cwjs_policy_info` t1
+                 LEFT JOIN
+             ctop_advertiser t2 ON t1.advertiser_name = t2.name
+        WHERE t2.id is not null
+        GROUP BY t1.advertiser_name
+    </select>
+
+    <select id="getProductByAdvertiserIds" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT id as 'productId', product_name as 'productName'
+        FROM ctop_product
+        WHERE advertiser_id in
+        <foreach item="advertiserId" collection="advertiserIds" open="(" close=")" separator=",">
+            #{advertiserId}
+        </foreach>
+    </select>
+
+    <select id="queryPoolInfo" resultType="cn.com.ctop.finance.payment.entity.FinancePaymentApplication">
+        SELECT id,
+               advertiser_id,
+               advertiser_name,
+               product_id,
+               product_name,
+               payment_media,
+               audit_status,
+               payment_type,
+               cash_amount,
+               display_amount,
+               rebate_rate,
+               rebate_type,
+               payment_port,
+               applicanter_id,
+               applicanter,
+               revieweder_id,
+               revieweder,
+               approval_content,
+               temporary_passage,
+               temporary_advances,
+               files
+        FROM finance_payment_application
+        WHERE advertiser_id = #{advertiserId}
+          AND product_id = #{productId}
+          AND payment_media = #{type}
+        order by update_time desc
+    </select>
+
+    <select id="queryInfo" resultType="cn.com.ctop.finance.payment.entity.FinancePaymentApplication">
+        SELECT id,
+               advertiser_id,
+               advertiser_name,
+               product_id,
+               product_name,
+               payment_media,
+               audit_status,
+               payment_type,
+               cash_amount,
+               display_amount,
+               rebate_rate,
+               rebate_type,
+               payment_port,
+               applicanter_id,
+               applicanter,
+               revieweder_id,
+               revieweder,
+               approval_content,
+               temporary_passage,
+               temporary_advances,
+               files
+        FROM finance_payment_application
+        WHERE advertiser_id = #{advertiserId}
+          AND product_id = #{productId}
+          AND payment_media = #{type}
+        order by update_time desc Limit 1;
+    </select>
+
+
+    <select id="queryAuditProcess" resultType="com.alibaba.fastjson.JSONObject">
+        (SELECT t1.audit_status as 'auditStatus', t1.revieweder_id as 'userId', t2.realname as 'userName', t4.role_name as 'roleName', t1.approval_content as 'approvalContent', t1.files as 'files', t1.create_time as 'time'
+         FROM finance_payment_application_record t1
+                  LEFT JOIN sys_user t2 ON t1.revieweder_id = t2.id
+                  LEFT JOIN sys_user_role t3 ON t2.id = t3.user_id
+                  LEFT JOIN sys_role t4 ON t3.role_id = t4.id
+         WHERE t1.application_id = #{id}
+         ORDER BY t1.create_time)
+        UNION ALL
+        SELECT t1.audit_status,
+               t1.applicanter_id,
+               t1.applicanter,
+               t4.role_name,
+               t1.approval_content,
+               t1.files,
+               t1.update_time
+        FROM finance_payment_application t1
+                 LEFT JOIN sys_user_role t3 ON t1.applicanter_id = t3.user_id
+                 LEFT JOIN sys_role t4 ON t3.role_id = t4.id
+        WHERE t1.id = #{id}
+    </select>
+
+</mapper>

+ 5 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/mapper/xml/FinancePaymentApplicationRecordMapper.xml

@@ -0,0 +1,5 @@
+<?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="cn.com.ctop.finance.payment.mapper.FinancePaymentApplicationRecordMapper">
+
+</mapper>

+ 49 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/mapper/xml/FinancePaymentPoolMapper.xml

@@ -0,0 +1,49 @@
+<?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="cn.com.ctop.finance.payment.mapper.FinancePaymentPoolMapper">
+
+    <select id="queryFinancePaymentPool" resultType="cn.com.ctop.finance.payment.entity.FinancePaymentPool">
+        SELECT id,
+               advertiser_id,
+               advertiser_name,
+               product_id,
+               product_name,
+               payment_type,
+               payment_media,
+               payment_port,
+               cash_amount,
+               display_amount,
+               rebate_type,
+               rebate_rate
+        FROM finance_payment_pool
+        WHERE advertiser_id = #{advertiserId}
+          AND product_id = #{productId}
+          AND payment_media = #{paymentMedia}
+    </select>
+
+    <select id="queryIdAndName" resultType="com.alibaba.fastjson.JSONObject">
+        select ${id} as 'id', ${name} as 'name'
+        from ${table}
+        <if test="paramters!=null and paramters.size()>0">
+            <foreach item="o" collection="paramters" open=" WHERE " separator=" AND ">
+                ${o.paramter} = #{o.value}
+            </foreach>
+        </if>
+        GROUP BY ${groupBy}
+    </select>
+
+    <select id="queryPoolProjectList" resultType="com.alibaba.fastjson.JSONObject">
+        select id as 'id', project_name as 'name'
+        from ctop_project
+        Where advertiser_id in
+        <foreach item="item" index="index" collection="advertiserIds"
+                 open="(" separator="," close=")">
+            #{item}
+        </foreach>
+        AND product_id = #{productId}
+        <if test="type!=null ">
+            AND media_id = #{type}
+        </if>
+    </select>
+
+</mapper>

+ 33 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/mapper/xml/FinancePaymentRechargeAccountMapper.xml

@@ -0,0 +1,33 @@
+<?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="cn.com.ctop.finance.payment.mapper.FinancePaymentRechargeAccountMapper">
+
+    <select id="queryAmounts" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT GROUP_CONCAT(account_id) as 'accountIds',SUM(cash_amount) as 'cashAmount', SUM(received_amount) as 'displayAmount'
+        FROM `finance_payment_recharge_account`
+        WHERE recharge_id = #{rechargeId}
+    </select>
+
+    <select id="queryByRechargeId" resultType="cn.com.ctop.finance.payment.entity.FinancePaymentRechargeAccount">
+        SELECT id,
+               recharge_id,
+               project_id,
+               account_id,
+               account_name,
+               cash_amount,
+               received_amount,
+               rebate_type,
+               rebate_rate,
+               create_time,
+               update_time
+        FROM `finance_payment_recharge_account`
+        WHERE recharge_id = #{rechargeId}
+        order by id
+    </select>
+
+    <delete id="delByRechargeId">
+        delete
+        from finance_payment_recharge_account
+        where recharge_id = #{rechargeId}
+    </delete>
+</mapper>

+ 81 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/mapper/xml/FinancePaymentRechargeApplicationMapper.xml

@@ -0,0 +1,81 @@
+<?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="cn.com.ctop.finance.payment.mapper.FinancePaymentRechargeApplicationMapper">
+
+    <select id="queryAuditProcess" resultType="com.alibaba.fastjson.JSONObject">
+        (SELECT t1.audit_status as 'auditStatus', t1.recharge_id as 'userId', t2.realname as 'userName', t4.role_name as 'roleName', t1.approval_content as 'approvalContent', t1.files as 'files', t1.create_time as 'time'
+         FROM finance_payment_recharge_application_record t1
+                  LEFT JOIN sys_user t2 ON t1.revieweder_id = t2.id
+                  LEFT JOIN sys_user_role t3 ON t2.id = t3.user_id
+                  LEFT JOIN sys_role t4 ON t3.role_id = t4.id
+         WHERE t1.recharge_id = #{id}
+         ORDER BY t1.create_time)
+        UNION ALL
+        SELECT t1.audit_status,
+               t1.applicanter_id,
+               t1.applicanter,
+               t4.role_name,
+               t1.approval_content,
+               t1.files,
+               t1.update_time
+        FROM finance_payment_recharge_application t1
+                 LEFT JOIN sys_user_role t3 ON t1.applicanter_id = t3.user_id
+                 LEFT JOIN sys_role t4 ON t3.role_id = t4.id
+        WHERE t1.id = #{id}
+    </select>
+
+
+    <select id="queryPageList" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT t1.id,
+        t1.advertiser_id as 'advertiserId',
+        t1.advertiser_name as 'advertiserName',
+        t1.product_id as 'productId',
+        t1.product_name as 'productName',
+        t1.project_id as 'projectId',
+        t1.project_name as 'projectName',
+        GROUP_CONCAT(t2.account_id) as 'accountIds',
+        SUM(t2.cash_amount) as 'cashAmounts',
+        SUM(t2.received_amount) as 'receivedAmounts',
+        t1.applicanter_id as 'applicanterId',
+        t1.applicanter as 'applicanter',
+        t1.create_time as 'createTime',
+        t1.files as 'files',
+        t1.approval_content as 'approvalContent',
+        t1.audit_status as 'auditStatus',
+        t1.payment_media as 'paymentMedia',
+        t1.recharge_type as 'rechargeType',
+        t2.rebate_rate as 'rebateRate'
+        FROM finance_payment_recharge_application t1
+        LEFT JOIN finance_payment_recharge_account t2 ON t1.id = t2.recharge_id
+        <where>
+            <if test="advertiserName != null and advertiserName != '' ">
+                and t1.advertiser_name like concat('%',#{advertiserName},'%')
+            </if>
+            <if test="productName != null and productName != '' ">
+                and t1.product_name like concat('%',#{productName},'%')
+            </if>
+            <if test="projectName != null and projectName != '' ">
+                and t1.project_name like concat('%',#{projectName},'%')
+            </if>
+            <if test="auditStatus != null and auditStatus != '' ">
+                and t1.audit_status=#{auditStatus}
+            </if>
+            <if test="applicanterId != null and applicanterId != '' ">
+                and t1.applicanter_id=#{applicanterId}
+            </if>
+            <if test="paymentMedia != null and paymentMedia != '' ">
+                and t1.payment_media=#{paymentMedia}
+            </if>
+            <if test="rechargeType != null and rechargeType != '' ">
+                and t1.recharge_type=#{rechargeType}
+            </if>
+            <if test="startDate != null and startDate != '' ">
+                and t1.create_time >= #{startDate}
+                and t1.create_time &lt;= #{endDate}
+            </if>
+        </where>
+        GROUP BY t1.id
+        order by t1.update_time desc
+    </select>
+
+</mapper>

+ 5 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/mapper/xml/FinancePaymentRechargeApplicationRecordMapper.xml

@@ -0,0 +1,5 @@
+<?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="cn.com.ctop.finance.payment.mapper.FinancePaymentRechargeApplicationRecordMapper">
+
+</mapper>

+ 14 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/service/IFinancePaymentApplicationRecordService.java

@@ -0,0 +1,14 @@
+package cn.com.ctop.finance.payment.service;
+
+import cn.com.ctop.finance.payment.entity.FinancePaymentApplicationRecord;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 审核记录表
+ * @author jeecg-boot
+ * 2023-04-11
+ * @version V1.0
+ */
+public interface IFinancePaymentApplicationRecordService extends IService<FinancePaymentApplicationRecord> {
+
+}

+ 33 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/service/IFinancePaymentApplicationService.java

@@ -0,0 +1,33 @@
+package cn.com.ctop.finance.payment.service;
+
+import cn.com.ctop.finance.payment.entity.FinancePaymentApplication;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.common.api.vo.Result;
+
+/**
+ * 申请垫款表
+ * @author jeecg-boot
+ * 2023-04-11
+ * @version V1.0
+ */
+public interface IFinancePaymentApplicationService extends IService<FinancePaymentApplication> {
+
+    void add(JSONObject request);
+
+    Result<Object> getAdvertisers();
+
+    Result<Object> getProductByAdvertiserIds(String ids);
+
+    Result<Object> updateStatus(FinancePaymentApplication application);
+
+    Result<Object> edit(FinancePaymentApplication application);
+
+    Result<Object> queryPoolInfo(String advertiserId, String productId, String type);
+
+    Result<Object> updateTemporaryFiles(FinancePaymentApplication application);
+
+    Result<Object> queryAuditProcess(Long id);
+
+    Result<Object> queryInfo(String advertiserId, String productId, String type);
+}

+ 30 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/service/IFinancePaymentPoolService.java

@@ -0,0 +1,30 @@
+package cn.com.ctop.finance.payment.service;
+
+import cn.com.ctop.finance.payment.entity.FinancePaymentApplication;
+import cn.com.ctop.finance.payment.entity.FinancePaymentPool;
+import cn.com.ctop.finance.payment.entity.FinancePaymentRechargeApplication;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.common.api.vo.Result;
+
+/**
+ * 款项池表
+ *
+ * @author jeecg-boot
+ * 2023-04-11
+ * @version V1.0
+ */
+public interface IFinancePaymentPoolService extends IService<FinancePaymentPool> {
+
+    void add(FinancePaymentRechargeApplication oldRecharge, FinancePaymentApplication oldApplication);
+
+    FinancePaymentPool getIdByUniqueKey(String advertiserId, Long productId, String paymentMedia);
+
+    Result<Object> querySheetIdAndNameList(JSONObject data);
+
+    void reduce(FinancePaymentRechargeApplication oldRecharge, FinancePaymentApplication oldApplication);
+
+    Result<Object> queryPoolAmount(String advertiserId, Long productId, String type);
+
+    Result<Object> queryPoolProjectList(String advertiserId, Long productId, String type);
+}

+ 23 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/service/IFinancePaymentRechargeAccountService.java

@@ -0,0 +1,23 @@
+package cn.com.ctop.finance.payment.service;
+
+import cn.com.ctop.finance.payment.entity.FinancePaymentRechargeAccount;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * 充值账户表
+ *
+ * @author jeecg-boot
+ * 2023-04-13
+ * @version V1.0
+ */
+public interface IFinancePaymentRechargeAccountService extends IService<FinancePaymentRechargeAccount> {
+
+    void delByRechargeId(Long rechargeId);
+
+    JSONObject queryAmounts(Long rechargeId);
+
+    List<FinancePaymentRechargeAccount> queryByRechargeId(Long rechargeId);
+}

+ 15 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/service/IFinancePaymentRechargeApplicationRecordService.java

@@ -0,0 +1,15 @@
+package cn.com.ctop.finance.payment.service;
+
+import cn.com.ctop.finance.payment.entity.FinancePaymentRechargeApplicationRecord;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 充值申请审核记录表
+ *
+ * @author jeecg-boot
+ * 2023-04-13
+ * @version V1.0
+ */
+public interface IFinancePaymentRechargeApplicationRecordService extends IService<FinancePaymentRechargeApplicationRecord> {
+
+}

+ 31 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/service/IFinancePaymentRechargeApplicationService.java

@@ -0,0 +1,31 @@
+package cn.com.ctop.finance.payment.service;
+
+import cn.com.ctop.finance.payment.entity.FinancePaymentRechargeApplication;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.common.api.vo.Result;
+
+/**
+ * 充值申请表
+ *
+ * @author jeecg-boot
+ * 2023-04-11
+ * @version V1.0
+ */
+public interface IFinancePaymentRechargeApplicationService extends IService<FinancePaymentRechargeApplication> {
+
+    Result<Object> queryPageList(FinancePaymentRechargeApplication recharge, Integer pageNo, Integer pageSize);
+
+    Result<Object> queryRechargeAccountDetails(Long rechargeId);
+
+    Result add(JSONObject data);
+
+    Result<Object> edit(JSONObject data);
+
+    Result<Object> updateStatus(JSONObject data);
+
+    Result<Object> updateTemporaryFiles(JSONObject data);
+
+    Result<Object> queryAuditProcess(Long id);
+
+}

+ 19 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/service/impl/FinancePaymentApplicationRecordServiceImpl.java

@@ -0,0 +1,19 @@
+package cn.com.ctop.finance.payment.service.impl;
+
+import cn.com.ctop.finance.payment.entity.FinancePaymentApplicationRecord;
+import cn.com.ctop.finance.payment.mapper.FinancePaymentApplicationRecordMapper;
+import cn.com.ctop.finance.payment.service.IFinancePaymentApplicationRecordService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * 审核记录表
+ * @author jeecg-boot
+ * 2023-04-11
+ * @version V1.0
+ */
+@Service
+public class FinancePaymentApplicationRecordServiceImpl extends ServiceImpl<FinancePaymentApplicationRecordMapper, FinancePaymentApplicationRecord> implements IFinancePaymentApplicationRecordService {
+
+}

+ 264 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/service/impl/FinancePaymentApplicationServiceImpl.java

@@ -0,0 +1,264 @@
+package cn.com.ctop.finance.payment.service.impl;
+
+import cn.com.ctop.common.module.entity.Advertiser;
+import cn.com.ctop.common.module.entity.Product;
+import cn.com.ctop.common.module.service.IMessageTemplate;
+import cn.com.ctop.common.module.service.IProductService;
+import cn.com.ctop.common.module.service.ISendMessageService;
+import cn.com.ctop.common.module.service.ISysUserService;
+import cn.com.ctop.common.module.utils.Check;
+import cn.com.ctop.finance.payment.entity.FinancePaymentApplication;
+import cn.com.ctop.finance.payment.entity.FinancePaymentApplicationRecord;
+import cn.com.ctop.finance.payment.mapper.FinancePaymentApplicationMapper;
+import cn.com.ctop.finance.payment.mapper.FinancePaymentApplicationRecordMapper;
+import cn.com.ctop.finance.payment.service.IFinancePaymentApplicationService;
+import cn.com.ctop.finance.payment.service.IFinancePaymentPoolService;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.entity.SysUser;
+import org.jeecg.modules.ctop.service.IAdvertiserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 申请垫款表
+ *
+ * @author jeecg-boot
+ * 2023-04-11
+ * @version V1.0
+ */
+@Service
+public class FinancePaymentApplicationServiceImpl extends ServiceImpl<FinancePaymentApplicationMapper, FinancePaymentApplication> implements IFinancePaymentApplicationService {
+
+    @Autowired
+    private FinancePaymentApplicationRecordMapper recordMapper;
+    @Autowired
+    private IProductService productService;
+    @Autowired
+    private IFinancePaymentPoolService poolService;
+
+    @Autowired
+    private IAdvertiserService advertiserService;
+
+    @Autowired
+    private ISysUserService userService;
+
+    @Autowired
+    private ISendMessageService sendMessageService;
+
+    @Autowired
+    private IMessageTemplate messageTemplate;
+
+    @Override
+    public void add(JSONObject request) {
+        FinancePaymentApplication application = JSONObject.parseObject(JSONObject.toJSONString(request), FinancePaymentApplication.class);
+        SysUser user = userService.getById(application.getApplicanterId());
+        if (!Check.isNull(user)) {
+            application.setApplicanter(user.getRealname());
+        }
+        Product product = productService.getById(application.getProductId());
+        if (!Check.isNull(product)) {
+            application.setProductName(product.getProductName());
+        }
+
+        List<String> advertiserIds = Arrays.asList(application.getAdvertiserId().split(","));
+        Advertiser advertiser = advertiserService.getById(advertiserIds.get(0));
+        if (!Check.isNull(advertiser)) {
+            application.setAdvertiserName(advertiser.getName());
+        }
+        //获取审核人
+        getRevieweder(application);
+        //添加申请
+        boolean save = this.save(application);
+        if (save) {
+            //添加申请记录 0 创建
+            insertRecord(application.getId(), application.getApplicanterId(), "0", null, application.getFiles());
+            //消息通知内容
+            String message = messageTemplate.getFinancePaymentApplicationMessage(application);
+            //审核人为 财务审核角色
+            if ("financialReview".equals(application.getReviewederId())) {
+                //roleID:32825ea6b43cb61bffa09bf05ad69cf2
+                List<SysUser> users = userService.getUserListByRoleId("32825ea6b43cb61bffa09bf05ad69cf2");
+                for (SysUser u : users) {
+                    sendMessageService.sendMessage(u.getId(), message);
+                }
+            } else {
+                sendMessageService.sendMessage(application.getReviewederId(), message);
+            }
+        }
+    }
+
+    @Override
+    public Result<Object> getAdvertisers() {
+        return Result.ok(baseMapper.getAdvertisers());
+    }
+
+    @Override
+    public Result<Object> getProductByAdvertiserIds(String ids) {
+        List<String> advertiserIds = Arrays.asList(ids.split(","));
+        return Result.ok(baseMapper.getProductByAdvertiserIds(advertiserIds));
+    }
+
+    @Override
+    public Result<Object> updateStatus(FinancePaymentApplication application) {
+        FinancePaymentApplication oldApplication = this.getById(application.getId());
+        if (Check.isNull(oldApplication)) {
+            return Result.error("未查询到申请");
+        }
+        String reviewederId = oldApplication.getReviewederId();
+        String auditStatus = application.getAuditStatus();//1-待审核、3-审核通过、4-临时通过、5-审核拒绝
+        if ("3".equals(auditStatus) || "4".equals(auditStatus)) {
+            if ("financialReview".equals(reviewederId)) {
+                application.setReviewederId(application.getUserId());
+                SysUser user = userService.getById(application.getApplicanterId());
+                if (!Check.isNull(user)) {
+                    application.setApplicanter(user.getRealname());
+                }
+            }
+            this.updateById(application);
+            poolService.add(null, oldApplication);
+        } else if ("5".equals(auditStatus)) {
+            if ("4".equals(oldApplication.getAuditStatus())) {
+                poolService.reduce(null, oldApplication);
+            }
+            application.setFiles(Check.isNull(application.getFiles()) ? "-" : application.getFiles());
+            application.setReviewederId(application.getUserId());
+            SysUser user = userService.getById(application.getApplicanterId());
+            if (!Check.isNull(user)) {
+                application.setApplicanter(user.getRealname());
+            }
+            this.updateById(application);
+            //添加记录
+            insertRecord(application.getId(), application.getUserId(), oldApplication.getAuditStatus(), oldApplication.getApprovalContent(), oldApplication.getFiles());
+            String failMessage = messageTemplate.getFinancePaymentApplicationFailMessage(oldApplication);
+            sendMessageService.sendMessage(oldApplication.getApplicanterId(), failMessage);
+        }
+        return Result.ok();
+    }
+
+    @Override
+    public Result<Object> edit(FinancePaymentApplication application) {
+        FinancePaymentApplication oldApplication = this.getById(application.getId());
+        if (Check.isNull(oldApplication)) {
+            return Result.error("未查询到申请");
+        }
+        application.setAuditStatus("1");//待审核
+        Product product = productService.getById(application.getProductId());
+        if (!Check.isNull(product)) {
+            application.setProductName(product.getProductName());
+        }
+        List<String> advertiserIds = Arrays.asList(application.getAdvertiserId().split(","));
+        Advertiser advertiser = advertiserService.getById(advertiserIds.get(0));
+        if (!Check.isNull(advertiser)) {
+            application.setAdvertiserName(advertiser.getName());
+        }
+        //获取审核人
+        getRevieweder(application);
+        this.updateById(application);
+        //添加修改记录
+        insertRecord(application.getId(), application.getApplicanterId(), "-1", null, application.getFiles());
+        //消息通知内容
+        String message = messageTemplate.getFinancePaymentApplicationMessage(application);
+        //审核人为 财务审核角色
+        if ("financialReview".equals(application.getReviewederId())) {
+            //roleID:32825ea6b43cb61bffa09bf05ad69cf2
+            List<SysUser> users = userService.getUserListByRoleId("32825ea6b43cb61bffa09bf05ad69cf2");
+            for (SysUser u : users) {
+                sendMessageService.sendMessage(u.getId(), message);
+            }
+        } else {
+            sendMessageService.sendMessage(application.getReviewederId(), message);
+        }
+        return Result.ok();
+    }
+
+    @Override
+    public Result<Object> queryPoolInfo(String advertiserId, String productId, String type) {
+        return Result.ok(baseMapper.queryPoolInfo(advertiserId, productId, type));
+    }
+
+    @Override
+    public Result<Object> updateTemporaryFiles(FinancePaymentApplication application) {
+        FinancePaymentApplication oldApplication = this.getById(application.getId());
+        if (Check.isNull(oldApplication)) {
+            return Result.error("未查询到申请");
+        }
+        String auditStatus = oldApplication.getAuditStatus();//4-临时通过
+        if ("4".equals(auditStatus)) {
+            application.setAuditStatus("3");
+            application.setApprovalContent(Check.isNull(application.getApprovalContent()) ? "补传文件" : application.getApprovalContent());
+            application.setReviewederId(application.getUserId());
+            SysUser user = userService.getById(application.getApplicanterId());
+            if (!Check.isNull(user)) {
+                application.setApplicanter(user.getRealname());
+            }
+            this.updateById(application);
+            //添加审核记录
+            insertRecord(application.getId(), oldApplication.getRevieweder(), auditStatus, oldApplication.getApprovalContent(), oldApplication.getFiles());
+        }
+        return Result.ok();
+    }
+
+    @Override
+    public Result<Object> queryAuditProcess(Long id) {
+        return Result.ok(baseMapper.queryAuditProcess(id));
+    }
+
+    @Override
+    public Result<Object> queryInfo(String advertiserId, String productId, String type) {
+        return Result.ok(baseMapper.queryInfo(advertiserId, productId, type));
+    }
+
+    /**
+     * 获取审核人
+     * 1、磁力金牛    垫款        审核人 --吴睿刚(4aba62011120ac565c7f2b9f8f4aa96b)
+     * 2、非磁力金牛  垫款        审核人 --赵旺(00d630a129e4487cba5427788a1f08ce)
+     * 3、非磁力金牛 (临时)垫款  审核人 --丁兆明(b161b7d9793942f980dbfe8c931cd1b0)
+     * 4、所有媒体   预付款      审核人 --财务角色
+     */
+    private void getRevieweder(FinancePaymentApplication application) {
+        String rebateType = application.getPaymentType();//类型:1-预付款、2-垫款
+        if ("1".equals(rebateType)) {
+            //返回财务
+            application.setReviewederId("financialReview");
+        } else {
+            String paymentMedia = application.getPaymentMedia();//媒体类型 1-头条、2-快手、3-磁力金牛、4-广点通
+            if ("3".equals(paymentMedia)) {
+                //吴睿刚(4aba62011120ac565c7f2b9f8f4aa96b)
+//TODO            application.setReviewederId("4aba62011120ac565c7f2b9f8f4aa96b");
+//                application.setRevieweder("吴睿刚");
+                application.setReviewederId("1b3deb8258e84df994f1371a51cfc14a");
+                application.setRevieweder("赵西安");
+            } else {
+                //临时垫款
+                if ("1".equals(application.getTemporaryAdvances())) {
+//TODO                    application.setReviewederId("b161b7d9793942f980dbfe8c931cd1b0");
+//                    application.setRevieweder("丁兆明");
+                    application.setReviewederId("1506873789009489921");
+                    application.setRevieweder("芮珊珊 ");
+                } else {
+//TODO                    application.setReviewederId("00d630a129e4487cba5427788a1f08ce");
+//                    application.setRevieweder("赵旺");
+                    application.setReviewederId("113dee46c7df464da78c07a985e92cd1");
+                    application.setRevieweder("于蒙");
+                }
+            }
+        }
+    }
+
+    private void insertRecord(Long applicationId, String operatorId, String status, String txt, String files) {
+        FinancePaymentApplicationRecord record = new FinancePaymentApplicationRecord();
+        record.setApplicationId(applicationId);
+        record.setReviewederId(operatorId);
+        record.setAuditStatus(status);
+        record.setApprovalContent(txt);
+        record.setFiles(files);
+        recordMapper.insert(record);
+    }
+
+}
+

+ 123 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/service/impl/FinancePaymentPoolServiceImpl.java

@@ -0,0 +1,123 @@
+package cn.com.ctop.finance.payment.service.impl;
+
+import cn.com.ctop.common.module.utils.Check;
+import cn.com.ctop.finance.payment.entity.FinancePaymentApplication;
+import cn.com.ctop.finance.payment.entity.FinancePaymentPool;
+import cn.com.ctop.finance.payment.entity.FinancePaymentRechargeApplication;
+import cn.com.ctop.finance.payment.mapper.FinancePaymentPoolMapper;
+import cn.com.ctop.finance.payment.mapper.FinancePaymentRechargeAccountMapper;
+import cn.com.ctop.finance.payment.service.IFinancePaymentPoolService;
+import cn.hutool.core.bean.BeanUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.jeecg.common.api.vo.Result;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 款项池表
+ *
+ * @author jeecg-boot
+ * 2023-04-11
+ * @version V1.0
+ */
+@Service
+public class FinancePaymentPoolServiceImpl extends ServiceImpl<FinancePaymentPoolMapper, FinancePaymentPool> implements IFinancePaymentPoolService {
+
+    @Autowired
+    private FinancePaymentRechargeAccountMapper accountMapperl;
+
+    @Override
+    public void add(FinancePaymentRechargeApplication recharge, FinancePaymentApplication application) {
+        if (Check.isNull(recharge)) {
+            FinancePaymentPool pool = baseMapper.queryFinancePaymentPool(application.getAdvertiserId(), application.getProductId(), application.getPaymentMedia());
+            if (Check.isNull(pool)) {
+                FinancePaymentPool paymentPool = new FinancePaymentPool();
+                BeanUtil.copyProperties(application, paymentPool);
+                paymentPool.setId(null);
+                paymentPool.setCreateTime(null);
+                paymentPool.setUpdateTime(null);
+                this.save(paymentPool);
+            } else {
+                BigDecimal cashAmount = pool.getCashAmount();
+                BigDecimal displayAmount = pool.getDisplayAmount();
+                pool.setCashAmount(cashAmount.add(application.getCashAmount()));
+                pool.setDisplayAmount(displayAmount.add(application.getDisplayAmount()));
+                this.updateById(pool);
+            }
+        } else {
+            FinancePaymentPool pool = baseMapper.queryFinancePaymentPool(recharge.getAdvertiserId(), recharge.getProductId(), recharge.getPaymentMedia());
+            if (!Check.isNull(pool)) {
+                JSONObject amounts = accountMapperl.queryAmounts(recharge.getId());
+                BigDecimal cashAmount = pool.getCashAmount();
+                BigDecimal displayAmount = pool.getDisplayAmount();
+                pool.setCashAmount(cashAmount.add(amounts.getBigDecimal("cashAmount")));
+                pool.setDisplayAmount(displayAmount.add(amounts.getBigDecimal("displayAmount")));
+                this.updateById(pool);
+            }
+        }
+    }
+
+    @Override
+    public FinancePaymentPool getIdByUniqueKey(String advertiserId, Long productId, String paymentMedia) {
+        return baseMapper.queryFinancePaymentPool(advertiserId, productId, paymentMedia);
+    }
+
+    @Override
+    public Result<Object> querySheetIdAndNameList(JSONObject data) {
+        String tableparameters = data.getString("table");
+        List<String> list = Arrays.asList(tableparameters.split(","));
+        if (list.size() != 3) {
+            return Result.error("入参格式不正确");
+        }
+        Map<String, Object> map = new HashMap<>();
+        map.put("table", list.get(0));
+        map.put("id", list.get(1));
+        map.put("name", list.get(2));
+        map.put("groupBy", data.getString("groupBy"));
+        map.put("paramters", data.getJSONArray("paramters"));
+        return Result.ok(baseMapper.queryIdAndName(map));
+    }
+
+    @Override
+    public void reduce(FinancePaymentRechargeApplication recharge, FinancePaymentApplication application) {
+        if (Check.isNull(application)) {
+            FinancePaymentPool pool = baseMapper.queryFinancePaymentPool(recharge.getAdvertiserId(), recharge.getProductId(), recharge.getPaymentMedia());
+            if (!Check.isNull(pool)) {
+                JSONObject amounts = accountMapperl.queryAmounts(recharge.getId());
+
+                BigDecimal cashAmount = pool.getCashAmount();
+                BigDecimal displayAmount = pool.getDisplayAmount();
+                pool.setCashAmount(cashAmount.subtract(amounts.getBigDecimal("cashAmount")));
+                pool.setDisplayAmount(displayAmount.subtract(amounts.getBigDecimal("displayAmount")));
+                this.updateById(pool);
+            }
+        } else {
+            FinancePaymentPool pool = baseMapper.queryFinancePaymentPool(application.getAdvertiserId(), application.getProductId(), application.getPaymentMedia());
+            if (!Check.isNull(pool)) {
+                BigDecimal cashAmount = pool.getCashAmount();
+                BigDecimal displayAmount = pool.getDisplayAmount();
+                pool.setCashAmount(cashAmount.subtract(application.getCashAmount()));
+                pool.setDisplayAmount(displayAmount.subtract(application.getDisplayAmount()));
+                this.updateById(pool);
+            }
+        }
+    }
+
+    @Override
+    public Result<Object> queryPoolAmount(String advertiserId, Long productId, String type) {
+        return Result.ok(baseMapper.queryFinancePaymentPool(advertiserId, productId, type));
+    }
+
+    @Override
+    public Result<Object> queryPoolProjectList(String advertiserId, Long productId, String type) {
+        List<String> advertiserIds = Arrays.asList(advertiserId.split(","));
+        return Result.ok(baseMapper.queryPoolProjectList(advertiserIds, productId, type));
+    }
+}

+ 36 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/service/impl/FinancePaymentRechargeAccountServiceImpl.java

@@ -0,0 +1,36 @@
+package cn.com.ctop.finance.payment.service.impl;
+
+import cn.com.ctop.finance.payment.entity.FinancePaymentRechargeAccount;
+import cn.com.ctop.finance.payment.mapper.FinancePaymentRechargeAccountMapper;
+import cn.com.ctop.finance.payment.service.IFinancePaymentRechargeAccountService;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 充值账户表
+ *
+ * @author jeecg-boot
+ * 2023-04-13
+ * @version V1.0
+ */
+@Service
+public class FinancePaymentRechargeAccountServiceImpl extends ServiceImpl<FinancePaymentRechargeAccountMapper, FinancePaymentRechargeAccount> implements IFinancePaymentRechargeAccountService {
+
+    @Override
+    public void delByRechargeId(Long rechargeId) {
+        baseMapper.delByRechargeId(rechargeId);
+    }
+
+    @Override
+    public JSONObject queryAmounts(Long rechargeId) {
+        return baseMapper.queryAmounts(rechargeId);
+    }
+
+    @Override
+    public List<FinancePaymentRechargeAccount> queryByRechargeId(Long rechargeId) {
+        return baseMapper.queryByRechargeId(rechargeId);
+    }
+}

+ 19 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/service/impl/FinancePaymentRechargeApplicationRecordServiceImpl.java

@@ -0,0 +1,19 @@
+package cn.com.ctop.finance.payment.service.impl;
+
+import cn.com.ctop.finance.payment.entity.FinancePaymentRechargeApplicationRecord;
+import cn.com.ctop.finance.payment.mapper.FinancePaymentRechargeApplicationRecordMapper;
+import cn.com.ctop.finance.payment.service.IFinancePaymentRechargeApplicationRecordService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * 充值申请审核记录表
+ *
+ * @author jeecg-boot
+ * 2023-04-13
+ * @version V1.0
+ */
+@Service
+public class FinancePaymentRechargeApplicationRecordServiceImpl extends ServiceImpl<FinancePaymentRechargeApplicationRecordMapper, FinancePaymentRechargeApplicationRecord> implements IFinancePaymentRechargeApplicationRecordService {
+
+}

+ 350 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/finance/payment/service/impl/FinancePaymentRechargeApplicationServiceImpl.java

@@ -0,0 +1,350 @@
+package cn.com.ctop.finance.payment.service.impl;
+
+import cn.com.ctop.common.module.entity.Advertiser;
+import cn.com.ctop.common.module.entity.Product;
+import cn.com.ctop.common.module.entity.Project;
+import cn.com.ctop.common.module.service.IMessageTemplate;
+import cn.com.ctop.common.module.service.IProductService;
+import cn.com.ctop.common.module.service.IProjectService;
+import cn.com.ctop.common.module.service.ISendMessageService;
+import cn.com.ctop.common.module.service.ISysUserService;
+import cn.com.ctop.common.module.service.IUserAllocationService;
+import cn.com.ctop.common.module.utils.Check;
+import cn.com.ctop.finance.payment.entity.FinancePaymentPool;
+import cn.com.ctop.finance.payment.entity.FinancePaymentRechargeAccount;
+import cn.com.ctop.finance.payment.entity.FinancePaymentRechargeApplication;
+import cn.com.ctop.finance.payment.entity.FinancePaymentRechargeApplicationRecord;
+import cn.com.ctop.finance.payment.mapper.FinancePaymentRechargeApplicationMapper;
+import cn.com.ctop.finance.payment.mapper.FinancePaymentRechargeApplicationRecordMapper;
+import cn.com.ctop.finance.payment.service.IFinancePaymentPoolService;
+import cn.com.ctop.finance.payment.service.IFinancePaymentRechargeAccountService;
+import cn.com.ctop.finance.payment.service.IFinancePaymentRechargeApplicationService;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.entity.SysUser;
+import org.jeecg.modules.ctop.service.IAdvertiserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 充值申请表
+ */
+@Service
+public class FinancePaymentRechargeApplicationServiceImpl extends ServiceImpl<FinancePaymentRechargeApplicationMapper, FinancePaymentRechargeApplication> implements IFinancePaymentRechargeApplicationService {
+
+    @Autowired
+    private IFinancePaymentPoolService financePaymentPoolService;
+    @Autowired
+    private IAdvertiserService advertiserService;
+    @Autowired
+    private IProductService productService;
+    @Autowired
+    private IProjectService projectService;
+    @Autowired
+    private ISysUserService userService;
+    @Autowired
+    private IUserAllocationService userAllocationService;
+    @Autowired
+    private IFinancePaymentRechargeAccountService rechargeAccountService;
+    @Autowired
+    private ISendMessageService sendMessageService;
+    @Autowired
+    private IMessageTemplate messageTemplate;
+    @Autowired
+    private FinancePaymentRechargeApplicationRecordMapper recordMapper;
+    @Autowired
+    private IFinancePaymentPoolService poolService;
+
+    //财务审核角色ID
+    public static final String FINANCIAL_REVIEW_ROLE_ID = "32825ea6b43cb61bffa09bf05ad69cf2";
+    //媒介审核角色ID
+    public static final String MEIDA_MANAGER_ROLE_ID = "4e9ba2fe611ef62a8ce1d4df086f94c3";
+
+
+    @Override
+    public Result<Object> queryPageList(FinancePaymentRechargeApplication recharge, Integer pageNo, Integer pageSize) {
+        PageHelper.startPage(pageNo, pageSize);
+        List<JSONObject> list = baseMapper.queryPageList(recharge);
+        return Result.ok(new PageInfo<>(list));
+    }
+
+    @Override
+    public Result<Object> queryRechargeAccountDetails(Long rechargeId) {
+        return Result.ok(rechargeAccountService.queryByRechargeId(rechargeId));
+    }
+
+    @Override
+    public Result add(JSONObject data) {
+        JSONArray list = data.getJSONArray("list");
+        FinancePaymentRechargeApplication recharge = JSONObject.parseObject(JSONObject.toJSONString(data), FinancePaymentRechargeApplication.class);
+        FinancePaymentPool pool = financePaymentPoolService.getIdByUniqueKey(recharge.getAdvertiserId(), recharge.getProductId(), recharge.getPaymentMedia());
+        if (Check.isNull(pool) || Check.isNull(list)) {
+            return Result.error("数据异常");
+        }
+        SysUser user = userService.getById(recharge.getApplicanterId());
+        if (!Check.isNull(user)) {
+            recharge.setApplicanter(user.getRealname());
+        }
+        Product product = productService.getById(recharge.getProductId());
+        if (!Check.isNull(product)) {
+            recharge.setProductName(product.getProductName());
+            data.put("productName", product.getProductName());
+        }
+        List<String> advertiserIds = Arrays.asList(recharge.getAdvertiserId().split(","));
+        Advertiser advertiser = advertiserService.getById(advertiserIds.get(0));
+        if (!Check.isNull(advertiser)) {
+            recharge.setAdvertiserName(advertiser.getName());
+            data.put("advertiserName", advertiser.getName());
+        }
+        Project project = projectService.getById(recharge.getProjectId());
+        if (!Check.isNull(project)) {
+            recharge.setProjectName(project.getProjectName());
+            data.put("projectName", project.getProjectName());
+        }
+        //判断审核人和状态
+        getReviewedRole(recharge);
+        recharge.setPoolId(pool.getId());
+        boolean save = this.save(recharge);
+        if (save) {
+            //添加充值账户信息
+            List<FinancePaymentRechargeAccount> accountList = new ArrayList<>();
+            String accountIds = "";
+            for (int i = 0; i < list.size(); i++) {
+                JSONObject obj = list.getJSONObject(i);
+                FinancePaymentRechargeAccount account = new FinancePaymentRechargeAccount();
+                account.setRechargeId(recharge.getId());
+                account.setProjectId(recharge.getProjectId());
+                account.setAccountId(obj.getLong("accountId"));
+                account.setAccountName(userAllocationService.getByAccountId(obj.getLong("accountId")).getAuthName());
+                account.setCashAmount(obj.getBigDecimal("cashAmount"));
+                account.setReceivedAmount(obj.getBigDecimal("receivedAmount"));
+                account.setRebateType(obj.getString("rebateType"));
+                account.setRebateRate(obj.getDouble("rebateRate"));
+                accountList.add(account);
+                accountIds += obj.getLong("accountId") + ",";
+            }
+            rechargeAccountService.saveBatch(accountList);
+            //添加申请记录
+            insertRecord(recharge.getId(), recharge.getApplicanterId(), "0", null, recharge.getFiles());
+            //消息通知内容
+            String message = null;
+            List<SysUser> users = null;
+            if ("financialReview".equals(recharge.getReviewederId())) {
+                //财务
+                message = messageTemplate.getFinancePaymentApplicationCWRechargeMessage(data);
+                users = userService.getUserListByRoleId(FINANCIAL_REVIEW_ROLE_ID);
+            } else {
+                //媒介
+                data.put("accountIds", accountIds.substring(0, accountIds.length() - 1));
+                message = messageTemplate.getFinancePaymentApplicationMJRechargeMessage(data);
+                users = userService.getUserListByRoleId(MEIDA_MANAGER_ROLE_ID);
+            }
+            for (SysUser u : users) {
+                sendMessageService.sendMessage(u.getId(), message);
+            }
+        }
+        return Result.ok();
+    }
+
+    @Override
+    public Result<Object> edit(JSONObject data) {
+        JSONArray list = data.getJSONArray("list");
+        FinancePaymentRechargeApplication recharge = JSONObject.parseObject(JSONObject.toJSONString(data), FinancePaymentRechargeApplication.class);
+        FinancePaymentPool pool = financePaymentPoolService.getIdByUniqueKey(recharge.getAdvertiserId(), recharge.getProductId(), recharge.getPaymentMedia());
+        if (Check.isNull(pool) || Check.isNull(list)) {
+            return Result.error("数据异常");
+        }
+        SysUser user = userService.getById(recharge.getApplicanterId());
+        if (!Check.isNull(user)) {
+            recharge.setApplicanter(user.getRealname());
+        }
+        Product product = productService.getById(recharge.getProductId());
+        if (!Check.isNull(product)) {
+            recharge.setProductName(product.getProductName());
+            data.put("productName", product.getProductName());
+        }
+        List<String> advertiserIds = Arrays.asList(recharge.getAdvertiserId().split(","));
+        Advertiser advertiser = advertiserService.getById(advertiserIds.get(0));
+        if (!Check.isNull(advertiser)) {
+            recharge.setAdvertiserName(advertiser.getName());
+            data.put("advertiserName", advertiser.getName());
+        }
+        Project project = projectService.getById(recharge.getProjectId());
+        if (!Check.isNull(project)) {
+            recharge.setProjectName(project.getProjectName());
+            data.put("projectName", project.getProjectName());
+        }
+        //判断审核人和状态
+        getReviewedRole(recharge);
+        recharge.setPoolId(pool.getId());
+        this.updateById(recharge);
+
+        //添加充值账户信息
+        List<FinancePaymentRechargeAccount> accountList = new ArrayList<>();
+        String accountIds = "";
+        for (int i = 0; i < list.size(); i++) {
+            JSONObject obj = list.getJSONObject(i);
+            FinancePaymentRechargeAccount account = new FinancePaymentRechargeAccount();
+            account.setRechargeId(recharge.getId());
+            account.setProjectId(recharge.getProjectId());
+            account.setAccountId(obj.getLong("accountId"));
+            account.setAccountName(userAllocationService.getByAccountId(obj.getLong("accountId")).getAuthName());
+            account.setCashAmount(obj.getBigDecimal("cashAmount"));
+            account.setReceivedAmount(obj.getBigDecimal("receivedAmount"));
+            account.setRebateType(obj.getString("rebateType"));
+            account.setRebateRate(obj.getDouble("rebateRate"));
+            accountList.add(account);
+            accountIds += obj.getLong("accountId") + ",";
+        }
+        rechargeAccountService.delByRechargeId(recharge.getId());
+        rechargeAccountService.saveBatch(accountList);
+
+        //添加申请记录 -1 退回修改
+        insertRecord(recharge.getId(), recharge.getApplicanterId(), "-1", null, recharge.getFiles());
+        //消息通知内容
+        String message = null;
+        List<SysUser> users = null;
+        if ("financialReview".equals(recharge.getReviewederId())) {
+            //财务
+            message = messageTemplate.getFinancePaymentApplicationCWRechargeMessage(data);
+            users = userService.getUserListByRoleId(FINANCIAL_REVIEW_ROLE_ID);
+        } else {
+            //媒介
+            data.put("accountIds", accountIds.substring(0, accountIds.length() - 1));
+            message = messageTemplate.getFinancePaymentApplicationMJRechargeMessage(data);
+            users = userService.getUserListByRoleId(MEIDA_MANAGER_ROLE_ID);
+        }
+        for (SysUser u : users) {
+            sendMessageService.sendMessage(u.getId(), message);
+        }
+        return Result.ok();
+    }
+
+    @Override
+    public Result<Object> updateStatus(JSONObject data) {
+        JSONArray list = data.getJSONArray("list");
+        FinancePaymentRechargeApplication recharge = JSONObject.parseObject(JSONObject.toJSONString(data), FinancePaymentRechargeApplication.class);
+        FinancePaymentRechargeApplication oldRecharge = this.getById(recharge.getId());
+
+        if (Check.isNull(oldRecharge)) {
+            return Result.error("未查询到申请");
+        }
+        String reviewederId = oldRecharge.getReviewederId();
+        String auditStatus = recharge.getAuditStatus();//1-待审核、2-待充值、3-充值完成、4-临时充值、5-审核拒绝
+        if ("2".equals(auditStatus)) {
+            recharge.setReviewederId(recharge.getUserId());
+            SysUser user = userService.getById(recharge.getUserId());
+            if (!Check.isNull(user)) {
+                recharge.setRevieweder(user.getRealname());
+            }
+            this.updateById(recharge);
+            JSONObject oldData = JSONObject.parseObject(JSONObject.toJSONString(oldRecharge)).toJavaObject(JSONObject.class);
+            JSONObject amount = rechargeAccountService.queryAmounts(recharge.getId());
+            if (!Check.isNull(amount)) {
+                oldData.put("accountIds", amount.getString("accountIds"));
+                oldData.put("totalAmount", amount.getString("cashAmount"));
+            }
+            String message = messageTemplate.getFinancePaymentApplicationMJRechargeMessage(oldData);
+            List<SysUser> users = userService.getUserListByRoleId(MEIDA_MANAGER_ROLE_ID);
+            for (SysUser u : users) {
+                sendMessageService.sendMessage(u.getId(), message);
+            }
+            //添加审核记录 1:财务审核完成
+            insertRecord(recharge.getId(), recharge.getUserId(), "1", recharge.getApprovalContent(), recharge.getFiles());
+        } else if ("3".equals(auditStatus) || "4".equals(auditStatus)) {
+            recharge.setReviewederId(recharge.getUserId());
+            SysUser user = userService.getById(recharge.getUserId());
+            if (!Check.isNull(user)) {
+                recharge.setRevieweder(user.getRealname());
+            }
+            this.updateById(recharge);
+            poolService.reduce(oldRecharge, null);
+        } else if ("5".equals(auditStatus)) {
+            if ("4".equals(recharge.getAuditStatus())) {
+                poolService.add(oldRecharge, null);
+            }
+            recharge.setFiles(Check.isNull(recharge.getFiles()) ? "-" : recharge.getFiles());
+            recharge.setReviewederId(recharge.getUserId());
+            SysUser user = userService.getById(recharge.getUserId());
+            if (!Check.isNull(user)) {
+                recharge.setRevieweder(user.getRealname());
+            }
+            this.updateById(recharge);
+            //添加审核记录
+            insertRecord(recharge.getId(), recharge.getUserId(), oldRecharge.getAuditStatus(), oldRecharge.getApprovalContent(), oldRecharge.getFiles());
+            JSONObject oldData = JSONObject.parseObject(JSONObject.toJSONString(oldRecharge)).toJavaObject(JSONObject.class);
+            String failMessage = null;
+            List<SysUser> users = null;
+            if ("financialReview".equals(oldRecharge.getReviewederId())) {
+                failMessage = messageTemplate.getFinancePaymentApplicationCWRechargeRefuseMessage(oldData);
+                users = userService.getUserListByRoleId(FINANCIAL_REVIEW_ROLE_ID);
+            } else {
+                failMessage = messageTemplate.getFinancePaymentApplicationMJRechargeRefuseMessage(oldData);
+                users = userService.getUserListByRoleId(MEIDA_MANAGER_ROLE_ID);
+            }
+            for (SysUser u : users) {
+                sendMessageService.sendMessage(u.getId(), failMessage);
+            }
+        }
+        return Result.ok();
+    }
+
+    @Override
+    public Result<Object> updateTemporaryFiles(JSONObject data) {
+        FinancePaymentRechargeApplication recharge = JSONObject.parseObject(JSONObject.toJSONString(data), FinancePaymentRechargeApplication.class);
+        FinancePaymentRechargeApplication oldApplication = this.getById(recharge.getId());
+        if (Check.isNull(oldApplication)) {
+            return Result.error("未查询到申请");
+        }
+        String auditStatus = oldApplication.getAuditStatus();//4-临时通过
+        if ("4".equals(auditStatus)) {
+            recharge.setAuditStatus("3");
+            recharge.setApprovalContent(Check.isNull(recharge.getApprovalContent()) ? "补传文件" : recharge.getApprovalContent());
+            recharge.setReviewederId(recharge.getUserId());
+            SysUser user = userService.getById(recharge.getUserId());
+            if (!Check.isNull(user)) {
+                recharge.setRevieweder(user.getRealname());
+            }
+            this.updateById(recharge);
+            //添加审核记录
+            insertRecord(recharge.getId(), oldApplication.getRevieweder(), auditStatus, oldApplication.getApprovalContent(), oldApplication.getFiles());
+        }
+        return Result.ok();
+    }
+
+    @Override
+    public Result<Object> queryAuditProcess(Long id) {
+        return Result.ok(baseMapper.queryAuditProcess(id));
+    }
+
+    private void getReviewedRole(FinancePaymentRechargeApplication recharge) {
+        String financialReview = recharge.getFinancialReview();
+        if (!Check.isNull(financialReview) && "1".equals(financialReview)) {
+            recharge.setReviewederId("financialReview");
+            recharge.setAuditStatus("1");//待审核
+        } else {
+            //媒介
+            recharge.setReviewederId("meidaManager");
+            recharge.setAuditStatus("2");//待充值
+        }
+    }
+
+    private void insertRecord(Long rechargeId, String operatorId, String status, String txt, String files) {
+        FinancePaymentRechargeApplicationRecord record = new FinancePaymentRechargeApplicationRecord();
+        record.setRechargeId(rechargeId);
+        record.setReviewederId(operatorId);
+        record.setAuditStatus(status);
+        record.setApprovalContent(txt);
+        record.setFiles(files);
+        recordMapper.insert(record);
+    }
+
+}