فهرست منبع

Merge remote-tracking branch 'origin/金牛明医' into 金牛明医

# Conflicts:
#	src/views/system/config/integralConfig.vue
ct 3 روز پیش
والد
کامیت
f903602867

+ 53 - 0
src/api/adv/profit.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询广告分佣列表
+export function listProfit(query) {
+  return request({
+    url: '/adv/profit/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询广告分佣详细
+export function getProfit(id) {
+  return request({
+    url: '/adv/profit/' + id,
+    method: 'get'
+  })
+}
+
+// 新增广告分佣
+export function addProfit(data) {
+  return request({
+    url: '/adv/profit',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改广告分佣
+export function updateProfit(data) {
+  return request({
+    url: '/adv/profit',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除广告分佣
+export function delProfit(id) {
+  return request({
+    url: '/adv/profit/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出广告分佣
+export function exportProfit(query) {
+  return request({
+    url: '/adv/profit/export',
+    method: 'get',
+    params: query
+  })
+}

+ 344 - 0
src/views/adv/profit/index.vue

@@ -0,0 +1,344 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="用户id" prop="userId">
+        <el-input
+          v-model="queryParams.userId"
+          placeholder="请输入用户id"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="用户昵称" prop="nickName">
+        <el-input
+          v-model="queryParams.nickName"
+          placeholder="请输入用户昵称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="公司" prop="companyName">
+        <el-input
+          v-model="queryParams.companyName"
+          placeholder="请输入公司"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="分佣时间" prop="firstLoginTime">
+        <el-date-picker v-model="firstLoginTime" size="small" style="width: 220px" value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" @change="changeLoginTime"></el-date-picker>
+      </el-form-item>
+
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+<!--      <el-col :span="1.5">-->
+<!--        <el-button-->
+<!--          type="primary"-->
+<!--          plain-->
+<!--          icon="el-icon-plus"-->
+<!--          size="mini"-->
+<!--          @click="handleAdd"-->
+<!--          v-hasPermi="['adv:profit:add']"-->
+<!--        >新增</el-button>-->
+<!--      </el-col>-->
+<!--      <el-col :span="1.5">-->
+<!--        <el-button-->
+<!--          type="success"-->
+<!--          plain-->
+<!--          icon="el-icon-edit"-->
+<!--          size="mini"-->
+<!--          :disabled="single"-->
+<!--          @click="handleUpdate"-->
+<!--          v-hasPermi="['adv:profit:edit']"-->
+<!--        >修改</el-button>-->
+<!--      </el-col>-->
+<!--      <el-col :span="1.5">-->
+<!--        <el-button-->
+<!--          type="danger"-->
+<!--          plain-->
+<!--          icon="el-icon-delete"-->
+<!--          size="mini"-->
+<!--          :disabled="multiple"-->
+<!--          @click="handleDelete"-->
+<!--          v-hasPermi="['adv:profit:remove']"-->
+<!--        >删除</el-button>-->
+<!--      </el-col>-->
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          :loading="exportLoading"
+          @click="handleExport"
+          v-hasPermi="['adv:profit:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table border v-loading="loading" :data="profitList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="回调ID" align="center" prop="adTransId" />
+      <el-table-column label="结算总金额" align="center" prop="sumMoney" />
+      <el-table-column label="分佣时间" align="center" prop="createTime" />
+      <el-table-column label="用户昵称" align="center" prop="nickName" />
+      <el-table-column label="用户分润" align="center" prop="userMoney" />
+      <el-table-column label="公司" align="center" prop="companyName" />
+      <el-table-column label="公司分润" align="center" prop="companyMoney" />
+      <el-table-column label="互医分润" align="center" prop="huyiMoney" />
+      <el-table-column label="云联分润" align="center" prop="yunlianMoney" />
+<!--      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">-->
+<!--        <template slot-scope="scope">-->
+<!--          <el-button-->
+<!--            size="mini"-->
+<!--            type="text"-->
+<!--            icon="el-icon-edit"-->
+<!--            @click="handleUpdate(scope.row)"-->
+<!--            v-hasPermi="['adv:profit:edit']"-->
+<!--          >修改</el-button>-->
+<!--          <el-button-->
+<!--            size="mini"-->
+<!--            type="text"-->
+<!--            icon="el-icon-delete"-->
+<!--            @click="handleDelete(scope.row)"-->
+<!--            v-hasPermi="['adv:profit:remove']"-->
+<!--          >删除</el-button>-->
+<!--        </template>-->
+<!--      </el-table-column>-->
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改广告分佣对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+<!--        <el-form-item label="广告回调唯一交易ID" prop="adTransId">-->
+<!--          <el-input v-model="form.adTransId" placeholder="请输入广告回调唯一交易ID" />-->
+<!--        </el-form-item>-->
+<!--        <el-form-item label="广告任务id" prop="adTaskId">-->
+<!--          <el-input v-model="form.adTaskId" placeholder="请输入广告任务id" />-->
+<!--        </el-form-item>-->
+        <el-form-item label="总金额" prop="sumMoney">
+          <el-input v-model="form.sumMoney" placeholder="请输入广告平台结算总金额" />
+        </el-form-item>
+        <el-form-item label="用户id" prop="userId">
+          <el-input v-model="form.userId" placeholder="请输入用户id" />
+        </el-form-item>
+        <el-form-item label="用户分润" prop="userMoney">
+          <el-input v-model="form.userMoney" placeholder="请输入用户分润" />
+        </el-form-item>
+        <el-form-item label="公司id" prop="companyId">
+          <el-input v-model="form.companyId" placeholder="请输入公司id" />
+        </el-form-item>
+        <el-form-item label="公司分润" prop="companyMoney">
+          <el-input v-model="form.companyMoney" placeholder="请输入公司分润" />
+        </el-form-item>
+        <el-form-item label="互医分润" prop="huyiMoney">
+          <el-input v-model="form.huyiMoney" placeholder="请输入互医分润" />
+        </el-form-item>
+        <el-form-item label="云联分润" prop="yunlianMoney">
+          <el-input v-model="form.yunlianMoney" placeholder="请输入云联分润" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listProfit, getProfit, delProfit, addProfit, updateProfit, exportProfit } from "@/api/adv/profit";
+
+export default {
+  name: "Profit",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 导出遮罩层
+      exportLoading: false,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 广告分佣表格数据
+      profitList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      firstLoginTime: null,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        userId: null,
+        nickName: null,
+        companyName: null,
+        sTime:null,
+        eTime:null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        adTransId: [
+          { required: true, message: "广告回调唯一交易ID不能为空", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    changeLoginTime(){
+      if(this.firstLoginTime!=null){
+        this.queryParams.sTime=this.firstLoginTime[0];
+        this.queryParams.eTime=this.firstLoginTime[1];
+      }else{
+        this.queryParams.sTime=null;
+        this.queryParams.eTime=null;
+      }
+    },
+    /** 查询广告分佣列表 */
+    getList() {
+      this.loading = true;
+      listProfit(this.queryParams).then(response => {
+        this.profitList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        adTransId: null,
+        adTaskId: null,
+        sumMoney: null,
+        userId: null,
+        userMoney: null,
+        companyId: null,
+        companyMoney: null,
+        huyiMoney: null,
+        yunlianMoney: null,
+        createTime: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.firstLoginTime = null;
+      this.queryParams.sTime = null;
+      this.queryParams.eTime = null;
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加广告分佣";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getProfit(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改广告分佣";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateProfit(this.form).then(response => {
+              this.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addProfit(this.form).then(response => {
+              this.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$confirm('是否确认删除广告分佣编号为"' + ids + '"的数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delProfit(ids);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm('是否确认导出所有广告分佣数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(() => {
+          this.exportLoading = true;
+          return exportProfit(queryParams);
+        }).then(response => {
+          this.download(response.msg);
+          this.exportLoading = false;
+        }).catch(() => {});
+    }
+  }
+};
+</script>

+ 38 - 0
src/views/his/merchantAppConfig/index.vue

@@ -317,6 +317,37 @@
               <el-input v-model="hfConfig.hfOnlineRefundNotifyUrl" placeholder="汇付分账回调地址"></el-input>
             </el-form-item>
           </div>
+
+          <!-- app官方支付配置 -->
+          <div v-else-if="form.merchantType === 'appPay'">
+            <el-form-item label="支付宝应用id" prop="aliAppId">
+              <el-input v-model="appPayConfig.aliAppId" placeholder="支付宝应用id"></el-input>
+            </el-form-item>
+            <el-form-item label="支付宝应用私钥" prop="aliPrivateKey">
+              <el-input v-model="appPayConfig.aliPrivateKey" placeholder="支付宝应用私钥"></el-input>
+            </el-form-item>
+            <el-form-item label="支付宝公钥" prop="aliPublicKey">
+              <el-input v-model="appPayConfig.aliPublicKey" placeholder="请输入支付宝公钥"></el-input>
+            </el-form-item>
+            <el-form-item label="支付宝回调地址" prop="aliNotifyUrl">
+              <el-input v-model="appPayConfig.aliNotifyUrl" placeholder="支付宝回调地址"></el-input>
+            </el-form-item>
+            <el-form-item label="微信appid" prop="wxAppAppId">
+              <el-input v-model="appPayConfig.wxAppAppId" placeholder="微信appid"></el-input>
+            </el-form-item>
+            <el-form-item label="微信商户号" prop="wxAppMchId">
+              <el-input v-model="appPayConfig.wxAppMchId" placeholder="微信商户号"></el-input>
+            </el-form-item>
+            <el-form-item label="微信Key" prop="wxAppMchKey">
+              <el-input v-model="appPayConfig.wxAppMchKey" placeholder="微信Key"></el-input>
+            </el-form-item>
+            <el-form-item label="微信回调地址" prop="wxAppNotifyUrl">
+              <el-input v-model="appPayConfig.wxAppNotifyUrl" placeholder="微信回调地址"></el-input>
+            </el-form-item>
+            <el-form-item label="微信商户api证书" prop="wxAppKeyPath">
+              <el-input v-model="appPayConfig.wxAppKeyPath" placeholder="微信商户api证书"></el-input>
+            </el-form-item>
+          </div>
         </div>
       </el-form>
 
@@ -378,6 +409,7 @@ export default {
       tzConfig: {}, // 台州银行配置
       wxConfig: {}, // 微信配置
       hfConfig: {}, // 汇付配置
+      appPayConfig: {}, // 汇付配置
       // 表单参数
       form: {
         id: null,
@@ -526,6 +558,9 @@ export default {
             case 'hf':
               configData = { ...this.hfConfig };
               break;
+            case 'appPay':
+              configData = { ...this.appPayConfig };
+              break;
           }
 
           // 正确处理多选应用ID转字符串
@@ -598,6 +633,9 @@ export default {
               case 'hf':
                 this.hfConfig = { ...configData };
                 break;
+              case "appPay":
+                this.appPayConfig = { ...configData };
+                break;
             }
           } catch (e) {
             console.error('解析配置详情失败:', e);

+ 28 - 0
src/views/system/config/config.vue

@@ -606,6 +606,7 @@
               <el-radio label="tz">台州银行</el-radio>
               <el-radio label="wx">微信</el-radio>
               <el-radio label="hf">汇付</el-radio>
+              <el-radio label="appPay">跳转app支付</el-radio>
             </el-radio-group>
           </el-form-item>
           <el-form-item label="appId" prop="appId">
@@ -687,6 +688,33 @@
           <el-form-item v-if="form9.type=='hf'" label="汇付大额退款回调地址" prop="hfOnlineRefundNotifyUrl">
             <el-input v-model="form9.hfOnlineRefundNotifyUrl" label="汇付分账回调地址"></el-input>
           </el-form-item>
+          <el-form-item v-if="form9.type=='appPay'" label="支付宝应用id" prop="aliAppId">
+            <el-input v-model="form9.aliAppId" label="请输入支付宝应用id"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form9.type=='appPay'" label="支付宝应用私钥" prop="aliPrivateKey">
+            <el-input v-model="form9.aliPrivateKey" label="请输入支付宝应用私钥"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form9.type=='appPay'" label="支付宝公钥" prop="aliPublicKey">
+            <el-input v-model="form9.aliPublicKey" label="请输入支付宝公钥"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form9.type=='appPay'" label="支付宝回调地址" prop="aliNotifyUrl">
+            <el-input v-model="form9.aliNotifyUrl" label="请输入支付宝回调地址"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form9.type=='appPay'" label="微信appid" prop="wxAppAppId">
+            <el-input v-model="form9.wxAppAppId" label="请输入微信appid"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form9.type=='appPay'" label="微信商户号" prop="wxAppMchId">
+            <el-input v-model="form9.wxAppMchId" label="请输入微信商户号"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form9.type=='appPay'" label="微信Key" prop="wxAppMchKey">
+            <el-input v-model="form9.wxAppMchKey" label="请输入微信Key"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form9.type=='appPay'" label="微信回调地址" prop="wxAppNotifyUrl">
+            <el-input v-model="form9.wxAppNotifyUrl" label="请输入微信回调地址"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form9.type=='appPay'" label="微信商户api证书" prop="wxAppKeyPath">
+            <el-input v-model="form9.wxAppKeyPath" label="请输入微信商户api证书地址"></el-input>
+          </el-form-item>
           <div class="footer">
             <el-button type="primary" @click="submitForm9">提 交</el-button>
           </div>

+ 51 - 0
src/views/system/config/integralConfig.vue

@@ -180,6 +180,52 @@
           </el-form-item>
         </div>
       </el-card>
+
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="用户分润比例" prop="integralUserRatio">
+            <el-tooltip class="item" effect="dark" content="广告联盟用户分润比例" placement="top-end">
+              <el-input-number v-model="form11.integralUserRatio" :precision="2" :step="0.1"></el-input-number>
+            </el-tooltip>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="公司分润比例" prop="integralCompanyRatio">
+            <el-tooltip class="item" effect="dark" content="广告联盟公司分润比例" placement="top-end" :precision="2"
+                        :step="0.1">
+              <el-input-number v-model="form11.integralCompanyRatio"></el-input-number>
+            </el-tooltip>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="互医分润比例" prop="integralHuYiRatio">
+            <el-tooltip class="item" effect="dark" content="广告联盟互医分润比例" placement="top-end" :precision="2"
+                        :step="0.1">
+              <el-input-number v-model="form11.integralHuYiRatio"></el-input-number>
+            </el-tooltip>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="云联分润比例" prop="integralYunLianRatio">
+            <el-tooltip class="item" effect="dark" content="广告联盟云联分润比例" placement="top-end" :precision="2"
+                        :step="0.1">
+              <el-input-number v-model="form11.integralYunLianRatio"></el-input-number>
+            </el-tooltip>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-form-item label="用户保底收益" prop="minimumIntegral">
+          <el-tooltip class="item" effect="dark" content="广告联盟用户保底收益" placement="top-end" :precision="2"
+                      :step="0.1">
+            <el-input-number v-model="form11.minimumIntegral"></el-input-number>
+          </el-tooltip>
+        </el-form-item>
+      </el-row>
+
+
       <div style="display: flex; justify-content: flex-end;">
         <el-button type="primary" :disabled="saveLoading" :loading="saveLoading" @click="submitForm11">提  交</el-button>
       </div>
@@ -217,6 +263,11 @@ export default {
         integralArticle: null,
         integralTypeByOneDay: null,
         integralSubscriptCourse: null,
+        integralUserRatio: 0,
+        integralCompanyRatio: 0,
+        integralHuYiRatio: 0,
+        integralYunLianRatio: 0,
+        minimumIntegral: 0
       },
       saveLoading: false,
     }