From d8689abdb2378bdd1c97317ca881173eca26283c Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期三, 14 一月 2026 17:13:52 +0800
Subject: [PATCH] 经销商管理

---
 server/dmmall_service/src/main/java/com/doumee/dao/business/model/Goods.java                      |    3 
 server/dmmall_service/src/main/java/com/doumee/core/utils/Constants.java                          |    9 
 server/dmmall_service/src/main/java/com/doumee/dao/system/dto/PlatformConfigDTO.java              |   10 
 admin/src/assets/style/style.scss                                                                 |    5 
 admin/src/views/business/coupon.vue                                                               |   59 +-
 server/dmmall_service/src/main/java/com/doumee/dao/business/model/Goodsorder.java                 |    2 
 server/dmmall_admin/src/main/java/com/doumee/api/business/GoodsController.java                    |    6 
 admin/src/views/business/integralRuleSet.vue                                                      |  265 ++++++++++++++
 admin/src/api/business/goods.js                                                                   |    5 
 admin/src/components/business/OperaCouponWindow.vue                                               |  267 +++++++++-----
 server/dmmall_service/src/main/java/com/doumee/dao/business/model/Coupon.java                     |   13 
 admin/src/components/business/OperaCouponGoodsWindow.vue                                          |  264 ++++++++++++++
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java        |    9 
 server/dmmall_service/src/main/java/com/doumee/service/system/impl/SystemDictDataServiceImpl.java |   79 ++--
 server/dmmall_service/src/main/java/com/doumee/dao/system/SystemDictDataMapper.java               |    3 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/CouponServiceImpl.java       |   30 +
 16 files changed, 844 insertions(+), 185 deletions(-)

diff --git a/admin/src/api/business/goods.js b/admin/src/api/business/goods.js
index 448ba8b..d3e03c4 100644
--- a/admin/src/api/business/goods.js
+++ b/admin/src/api/business/goods.js
@@ -6,6 +6,11 @@
     trim: true
   })
 }
+export function allList (data) {
+  return request.post('/business/goods/list', data, {
+    trim: true
+  })
+}
 export function detail (id) {
   return request.get(`/business/goods/${id}`)
 }
diff --git a/admin/src/assets/style/style.scss b/admin/src/assets/style/style.scss
index 5201527..b83ba28 100644
--- a/admin/src/assets/style/style.scss
+++ b/admin/src/assets/style/style.scss
@@ -54,11 +54,14 @@
 .red{
   color: red;
 }
+.grey{
+  color: grey;
+}
 .green{
   color: green;
 }
 .blue{
-  color: blue;
+  color: #216EEE;
 }.orange{
    color: orange;
  }
diff --git a/admin/src/components/business/OperaCouponGoodsWindow.vue b/admin/src/components/business/OperaCouponGoodsWindow.vue
new file mode 100644
index 0000000..fd5a9e3
--- /dev/null
+++ b/admin/src/components/business/OperaCouponGoodsWindow.vue
@@ -0,0 +1,264 @@
+<template>
+  <GlobalWindow
+    :title="title"
+    width="80%"
+    :visible.sync="visible"
+    @confirm="confirm"
+  >
+    <TableLayout :permissions="['business:goods:query']">
+      <!-- 鎼滅储琛ㄥ崟 -->
+      <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" style="display: block;" >
+        <el-form-item label="" prop="name" label-width="5px" style="display: inline-block;margin-right: 30px;">
+          <el-input v-model="searchForm.name" style="width: 150px;" placeholder="鍟嗗搧鍚嶇О" clearable @keypress.enter.native="search"></el-input>
+        </el-form-item>
+        <el-form-item label="" prop="categoryId" label-width="5px" style="display: inline-block;margin-right: 30px;" >
+          <el-select v-model="searchForm.categoryId" placeholder="鎵�灞炲垎绫�"    clearable style="width: 150px;"  >
+            <el-option  v-for="item in labels"  :key="item.id" :value="item.id"  :label="item.name" ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="" prop="brandId" label-width="5px" style="display: inline-block">
+          <el-select  v-model="searchForm.brandId"  placeholder="鎵�灞炲搧鐗�"  style="width: 150px;"   >
+            <el-option  v-for="item in brands"   :key="item.id"   :value="item.id"  :label="item.name"    clearable ></el-option>
+          </el-select>
+        </el-form-item>
+        <section>
+          <el-button type="primary" @click="search">鎼滅储</el-button>
+          <el-button @click="reset">閲嶇疆</el-button>
+        </section>
+      </el-form>
+      <!-- 琛ㄦ牸鍜屽垎椤� -->
+      <template v-slot:table-wrap>
+        <div :style="'display: flex;height:'+tabelHeight+'px;'">
+          <div style="flex: 6;">
+            <ul class="toolbar">
+              <li><el-button type="primary"  icon="el-icon-plus"  @click="addAll()" :disabled="!(tableData.selectedRows &&  tableData.selectedRows.length)">鎵归噺娣诲姞</el-button></li>
+            </ul>
+          <el-table
+              ref="singleTable"
+              :height="tabelHeight-80"
+              v-loading="isWorking.search"
+              :data="tableData.list"
+              stripe
+              border
+              @selection-change="handleSelectionChange"
+          >
+            <el-table-column type="selection"  :selectable="checkSelectable" width="55"></el-table-column>
+            <el-table-column prop="imgurl" label="鍒楄〃鍥�" min-width="70px">
+              <template slot-scope="{row}">
+                <el-image style="width: 50px;height: 50px;" v-if="row.imgurl && row.imgurl!=''" :src="row.resourcePath+row.imgurl" :preview-src-list="[row.resourcePath+row.imgurl]"></el-image>
+              </template>
+            </el-table-column>
+            <el-table-column prop="id" label="鍟嗗搧ID"   ></el-table-column>
+            <el-table-column prop="name" label="鍟嗗搧鍚嶇О"   show-overflow-tooltip></el-table-column>
+            <el-table-column prop="categoryName" label="鎵�灞炲垎绫�"  ></el-table-column>
+            <el-table-column prop="brandName" label="鎵�灞炲搧鐗�"  ></el-table-column>
+            <el-table-column prop="price" label="灞曠ず浠锋牸"  ></el-table-column>
+            <el-table-column prop="skuPrice" label="闆跺敭浠�(鍏�)" ></el-table-column>
+            <el-table-column  label="鎿嶄綔"   align="center" min-width="80px"   fixed="right"  >
+              <template slot-scope="{ row }">
+                <el-button style="color: red"  v-if="row.tabStatus === 2" type="text" icon="el-icon-delete" @click="delItem(row)">绉婚櫎</el-button>
+                <el-button v-else type="text" icon="el-icon-plus" @click="add(row)">娣诲姞</el-button>
+              </template>
+            </el-table-column>
+          </el-table>
+          <pagination
+              @size-change="handleSizeChange"
+              @current-change="handlePageChange"
+              :pagination="tableData.pagination"
+          >
+          </pagination>
+          </div>
+          <div  style="flex: 2;margin-left: 20px;border: 1px solid #f2f2f2;padding: 10px;font-size: 12px;">
+              <div style="display: flex;">
+                <div style="flex: 6"> <span>宸查�夋嫨<i class="blue" style="margin: 0 10px">{{selectGoods.length||0}}</i>浠跺晢鍝�</span></div>
+                <div style="flex: 1;text-align: right"> <el-button size="mini" type="danger" class="blue" @click="cleanAll">娓呯┖</el-button></div>
+              </div>
+              <div :style="`display: flex;flex-direction: column;max-height: ${tabelHeight-80}px;overflow: auto`">
+                <div  v-for="(item,index) in selectGoods" style="display: flex;margin: 10px 0;" :key="'selGoods'+item.id">
+                  <div style="flex: 6">{{item.name}}<br><span class="red">锟{item.skuPrice || 0}}</span></div>
+                  <div style="flex: 1;text-align: right;">
+                    <el-button class="blue" style="border: none;color: red" icon="el-icon-delete" @click="del(item,index)"></el-button>
+                  </div>
+                </div>
+              </div>
+          </div>
+        </div>
+      </template>
+    </TableLayout>
+  </GlobalWindow>
+</template>
+
+<script>
+import GlobalWindow from '@/components/common/GlobalWindow'
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import { findAll as labelList } from '@/api/business/labels'
+export default {
+  name: 'OperaCouponGoodsWindow',
+  extends: BaseTable,
+  components: { GlobalWindow, TableLayout, Pagination },
+  data () {
+    return {
+      activeName: 'first',
+      title: '',
+      visible: false,
+      tabelHeight: null,
+      // 鎼滅储
+      searchForm: {
+        name: '',
+        categoryId: '',
+        brandId: '',
+        type: '0', // 骞冲彴鍟嗗搧
+        status: '',
+        isrec: '',
+        labels: ''
+      },
+      labels: [],
+      serials: [],
+      brands: [],
+      selectGoods: []
+    }
+  },
+  mounted() {
+    window.addEventListener('resize', this.handleResize);
+  },
+  beforeDestroy() {
+    window.removeEventListener('resize', this.handleResize);
+  },
+  created () {
+    this.config({
+      module: '鍟嗗搧淇℃伅琛�',
+      api: '/business/goods',
+      'field.id': 'id',
+      'field.main': 'id'
+    })
+    labelList({
+      type: 0 // 鍟嗗搧鍒嗙被
+    }).then(res => {
+      this.labels = res
+    })
+    labelList({
+      type: 1 // 鍟嗗搧鍝佺墝
+    })
+      .then(res => {
+        this.brands = res
+      })
+    this.handleResize()
+  },
+  methods: {
+    handleResize(){
+      this.tabelHeight = window.innerHeight - 300
+    },
+    checkSelectable (row) {
+      return row.tabStatus !== 2
+    },
+    addAll () {
+      if (this.tableData.selectedRows && this.tableData.selectedRows.length) {
+        this.tableData.selectedRows.forEach(item => {
+          this.add(item)
+        })
+        this.$nextTick(() => {
+          if (this.$refs.singleTable) {
+            this.$refs.singleTable.clearSelection()
+          }
+        })
+      }
+    },
+    cleanAll () {
+      this.selectGoods = []
+      this.tableData.list.forEach(item => {
+        item.tabStatus = 1
+      })
+      this.$nextTick(() => {
+        if (this.$refs.singleTable) {
+          this.$refs.singleTable.clearSelection()
+        }
+      })
+    },
+    add (row) {
+      var add = true
+      row.tabStatus = 2
+      console.log(this.tableData.list)
+      this.selectGoods.forEach(item => {
+        if (item.id === row.id) {
+          add = false
+        }
+      })
+      if (add) {
+        this.selectGoods.push(row)
+      }
+    },
+    del (row, index) {
+      this.selectGoods.splice(index, 1)
+      this.tableData.list.forEach(item => {
+        if (item.id === row.id) {
+          item.tabStatus = 1
+        }
+      })
+    },
+    delItem (delItem) {
+      this.selectGoods.forEach((item, index) => {
+        if (item.id === delItem.id) {
+          this.del(item, index)
+        }
+      })
+    },
+    confirm () {
+      this.$emit('success', this.selectGoods)
+      this.visible = false
+    },
+    open (title, goods) {
+      this.title = title
+      this.visible = true
+      this.cleanAll()
+      if (goods && goods.length) {
+        goods.forEach(item => {
+          this.selectGoods.push(item)
+        })
+      }
+      this.search()
+    },
+    handlePageChange (pageIndex) {
+      this.__checkApi()
+      this.tableData.pagination.pageIndex = pageIndex || this.tableData.pagination.pageIndex
+      this.isWorking.search = true
+      this.api.fetchList({
+        page: this.tableData.pagination.pageIndex,
+        capacity: this.tableData.pagination.pageSize,
+        model: this.searchForm,
+        sorts: this.tableData.sorts
+      })
+        .then(data => {
+          this.tableData.list = data.records || []
+          this.tableData.pagination.total = data.total
+          this.tableData.list.forEach(item => {
+            item.tabStatus = 1
+            this.selectGoods.forEach(row => {
+              if (item.id === row.id) {
+                item.tabStatus = 2
+              }
+            })
+          })
+        })
+        .catch(e => {
+          this.$tip.apiFailed(e)
+        })
+        .finally(() => {
+          this.isWorking.search = false
+        })
+    },
+    goPriceSet (row) {
+
+    },
+    handleClick (val) {
+    }
+  }
+}
+</script>
+<style scoped>
+.table-pagination{
+  position: fixed !important;
+  bottom: 50px;
+}
+</style>
diff --git a/admin/src/components/business/OperaCouponWindow.vue b/admin/src/components/business/OperaCouponWindow.vue
index 8e6eb3d..68002b6 100644
--- a/admin/src/components/business/OperaCouponWindow.vue
+++ b/admin/src/components/business/OperaCouponWindow.vue
@@ -1,116 +1,121 @@
 <template>
-  <GlobalAlertWindow
-    :title="title"
-    :visible.sync="visible"
-    :confirm-working="isWorking"
-    @confirm="confirm"
+  <GlobalWindow
+      :title="title"
+      width="80%"
+      :visible.sync="visible"
+      :confirm-working="isWorking"
+      @confirm="confirm"
   >
     <el-form :model="form" ref="form" :rules="rules" label-width="120px" label-suffix="锛�" inline>
+      <p class="tip-header" >鍩烘湰灞炴��</p>
       <el-form-item label="浼樻儬鍒稿悕绉�" prop="name">
         <el-input v-model="form.name" placeholder="璇疯緭鍏ヤ紭鎯犲埜鍚嶇О" :maxlength="12" v-trim/>
       </el-form-item>
-      <el-form-item label="浼樻儬鍒歌鏄�" prop="info">
-        <el-input v-model="form.info" placeholder="璇疯緭鍏ヤ紭鎯犲埜璇存槑" :maxlength="30" v-trim/>
+      <el-form-item label="绫诲瀷" prop="couponType">
+          <el-radio-group v-model="form.couponType">
+            <el-radio :label="0" >婊″噺鍒�</el-radio>
+            <el-radio :label="1">鎶樻墸鍒�</el-radio>
+          </el-radio-group>
       </el-form-item>
-      <el-form-item label="浼樻儬瑙勫垯" prop="couponRule">
+      <el-form-item label="浼樻儬瑙勫垯" prop="couponRule" >
         <div class="coupon-rule">
           <div class="discrep">璁㈠崟婊�</div>
-          <el-input
-            v-model="form.limitPrice"
-            placeholder="璇疯緭鍏�"
-            @input="inputAction(form, 'limitPrice')"
+          <el-input v-model="form.limitPrice"   placeholder="璇疯緭鍏�"     @input="inputAction(form, 'limitPrice')"
           >
             <template slot="append">鍏�</template>
           </el-input>
-          <div class="discrep">鍑�</div>
-          <el-input
-            v-model="form.price"
-            placeholder="璇疯緭鍏�"
-            @input="inputAction(form, 'price')"
-          >
-            <template slot="append">鍏�</template>
+          <div class="discrep" >{{form.couponType === 1?'锛屼韩':'锛屽噺'}}</div>
+          <el-input  v-model="form.price"     placeholder="璇疯緭鍏�"    @input="inputAction(form, 'price')"  >
+            <template slot="append" >{{form.couponType ===1?'鎶�':'鍏�'}}</template>
           </el-input>
         </div>
       </el-form-item>
-      <el-form-item label="鍙戞斁鎬婚噺" prop="num">
-        <div class="num-style">
-          <el-input-number step-strictly v-model="form.num" :controls="false" :min="1" :max="99999" placeholder="璇疯緭鍏ュ彂鏀炬�婚噺(1~99999)" v-trim></el-input-number>
-        </div>
+      <el-form-item label="浼樻儬鍒歌鏄�" prop="info">
+        <el-input type="textarea" v-model="form.info" placeholder="璇疯緭鍏ヤ紭鎯犲埜璇存槑"  v-trim/>
       </el-form-item>
-      <el-form-item v-if="form.type==1" label="鍏戞崲鏉′欢" prop="integral">
-        <el-input-number step-strictly v-model="form.integral" :controls="false" :min="1" :max="99999" placeholder="璇疯緭鍏�" v-trim/> 鍜栬眴鍏戞崲涓�寮犱紭鎯犲埜
+      <p class="tip-header" >浣跨敤闄愬埗</p>
+      <el-form-item label="鏈夋晥鏈�" prop="useType">
+        <el-radio-group v-model="form.useType">
+          <el-radio :label="0">鍥哄畾鏃舵</el-radio>
+          <el-radio :label="1">鍥哄畾鏃堕暱</el-radio>
+        </el-radio-group>
       </el-form-item>
-      <el-form-item label="鍙鍙栨椂闂�" prop="getDate">
+      <el-form-item label="浣跨敤鏃舵" prop="getDate" v-if="form.useType===0">
         <div class="date-style">
           <el-date-picker
-            v-model="getDate"
-            type="datetimerange"
-            value-format="yyyy-MM-dd HH:mm:ss"
-            format="yyyy-MM-dd HH:mm:ss"
-            range-separator="鑷�"
-            start-placeholder="寮�濮嬫椂闂�"
-            end-placeholder="缁撴潫鏃堕棿"
-            @change="selectDate"
+              v-model="getDate"
+              type="datetimerange"
+              value-format="yyyy-MM-dd HH:mm:ss"
+              format="yyyy-MM-dd HH:mm:ss"
+              range-separator="鑷�"
+              start-placeholder="寮�濮嬫椂闂�"
+              end-placeholder="缁撴潫鏃堕棿"
+              @change="selectDate"
           ></el-date-picker>
         </div>
       </el-form-item>
-
-      <el-form-item label="鍙敤鏃堕棿" prop="validDays">
-        <!-- <el-input v-model="form.validDays" placeholder="璇疯緭鍏ラ鍙栧悗鏈夋晥澶╂暟" v-trim/> -->
+      <el-form-item label="鍥哄畾鏃堕暱" prop="validDays" v-if="form.useType===1">
         <div class="coupon-rule">
           <div class="discrep">棰嗗姷鍚�</div>
           <el-input
-            v-model="form.validDays"
-            placeholder="璇疯緭鍏�"
-            @input="inputAction(form, 'validDays')"
+              v-model="form.validDays"
+              placeholder="璇疯緭鍏�"
+              @input="inputAction(form, 'validDays')"
           >
             <template slot="append">澶�</template>
           </el-input>
-          <div class="discrep">鍐呮湁鏁堬紝棰嗗彇鍚庣珛鍗崇敓鏁�</div>
+          <div class="discrep">鏈夋晥</div>
         </div>
       </el-form-item>
-      <el-form-item v-if="form.type==0" label="鍏宠仈搴楅摵" prop="shopId">
-        <el-select
-          v-model="form.shopId"
-          placeholder="璇疯緭鍏ュ簵閾哄悕绉帮紝鍐嶉�夋嫨"
-          filterable
-          remote
-          reserve-keyword
-          :remote-method="remoteMethod"
-          :loading="searchLoading"
-
-        >
-          <el-option
-            v-for="item in shops"
-            :key="item.id"
-            :label="item.name"
-            :value="item.id">
-          </el-option>
+      <el-form-item label="閫傜敤瀵硅薄" prop="applyType">
+        <el-radio-group v-model="form.applyType">
+          <el-radio :label="0">鍏ㄥ満閫氱敤</el-radio>
+          <el-radio :label="1">鎸夊搧绫�</el-radio>
+          <el-radio :label="2">鎸囧畾鍟嗗搧</el-radio>
+        </el-radio-group>
+      </el-form-item>
+      <el-form-item v-if="form.applyType===1" label="閫夋嫨鍝佺被" prop="applyCateIdList" >
+        <el-select v-model="form.applyCateIdList"  placeholder="璇烽�夋嫨,鏀寔澶氶��" filterable multiple clearable >
+          <el-option  v-for="item in categorys" :key="'optCate'+item.id"  :label="item.name"  :value="item.id">  </el-option>
         </el-select>
       </el-form-item>
+      <el-form-item v-if="form.applyType===2" label="閫夋嫨鍟嗗搧" prop="applyIdList" style="display: flex">
+          <span style="font-size: 12px;color: #216EEE"   @click="selectGoods">宸叉寚瀹氥�� {{applyDataList.length}} 銆戜欢鍟嗗搧</span>
+        <el-button style="margin-left:30px;display: inline-block;width: 80px;" type="primary"  @click="selectGoods">鍘婚�夋嫨 </el-button>
+      </el-form-item>
+      <p class="tip-header" >鍙戞斁瑙勫垯</p>
+      <el-form-item label="鍙戞斁鎬婚噺" prop="num">
+        <div class="num-style">
+          <el-input-number  v-model="form.num" :controls="false" :min="1" :max="99999" placeholder="璇疯緭鍏ュ彂鏀炬�婚噺(1~99999)" v-trim></el-input-number>
+        </div>
+      </el-form-item>
     </el-form>
-  </GlobalAlertWindow>
+    <OperaCouponGoodsWindow ref="OperaCouponGoodsWindow" @success="doSelect"/>
+  </GlobalWindow>
 </template>
 
 <script>
 import BaseOpera from '@/components/base/BaseOpera'
-import GlobalAlertWindow from '@/components/common/GlobalAlertWindow'
 import { fetchList as shopList } from '@/api/business/shop'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { findAll as labelList } from '@/api/business/labels'
+import { allList as goodsList} from '@/api/business/goods'
+import OperaCouponGoodsWindow from '@/components/business/OperaCouponGoodsWindow'
 export default {
   name: 'OperaCouponWindow',
   extends: BaseOpera,
-  components: { GlobalAlertWindow },
+  components: { GlobalWindow,OperaCouponGoodsWindow },
   data () {
-    let couponRules = (rule, value, callback) => {
+    const couponRules = (rule, value, callback) => {
       if (!this.form.limitPrice) {
         callback(new Error('璇疯緭鍏ユ弧棰�'))
       } else if (!this.form.price) {
-        callback(new Error('璇疯緭鍏ヤ紭鎯犻噾棰�'))
+        callback(new Error('璇峰畬鍠勪紭鎯犺鍒�'))
       } else {
         callback()
       }
     }
-    let getDateRules = (rule, value, callback) => {
+    const getDateRules = (rule, value, callback) => {
       if (!this.form.startDate) {
         callback(new Error('璇烽�夋嫨寮�濮嬫椂闂�'))
       } else if (!this.form.endDate) {
@@ -119,7 +124,7 @@
         callback()
       }
     }
-    let numRule = (rule, value, callBack) => {
+    const numRule = (rule, value, callBack) => {
       if (value < 0) {
         callBack(new Error())
       } else {
@@ -129,16 +134,24 @@
     return {
       searchLoading: false,
       getDate: [],
+      applyDataList:[],
+      showGoods:false,
       // 琛ㄥ崟鏁版嵁
       form: {
         id: null,
         name: '',
+        couponType: 0,
+        applyType: 0,
+        useType: 0,
         shopId: '',
-        type: '',
+        applyIdList: [],
+        applyCateIdList: [],
+        type: 0,
         limitPrice: '',
         price: '',
         startDate: '',
         endDate: '',
+        applyIds: '',
         validDays: '',
         getMethod: '',
         integral: '',
@@ -147,29 +160,39 @@
         info: ''
       },
       shops: [],
+      categorys: [],
       // 楠岃瘉瑙勫垯
       rules: {
         name: [
           { required: true, message: '璇疯緭鍏ヤ紭鎯犲埜鍚嶇О', tigger: 'blur' }
         ],
         couponRule: [
-          { required: true, validator: couponRules, tigger: 'blur'}
+          { required: true, validator: couponRules, tigger: 'blur' }
+        ],
+        useType: [
+          { required: true, message: '璇烽�夋嫨鏈夋晥鏈熸柟寮�' }
+        ],
+        couponType: [
+          { required: true, message: '璇烽�夋嫨绫诲瀷' }
+        ],
+        applyType: [
+          { required: true, message: '璇烽�夋嫨閫傜敤瀵硅薄绫诲瀷' }
         ],
         num: [
-          { required: true, validator: numRule, message: '璇疯緭鍏ュ彂鏀炬�绘暟', tigger: 'blur'}
+          { required: true, validator: numRule, message: '璇疯緭鍏ュ彂鏀炬�绘暟', tigger: 'blur' }
         ],
-        integral: [
-          { required: true, validator: numRule, message: '璇疯緭鍏ュ厬鎹㈡潯浠�', tigger: 'blur'}
-        ],
-        validDays: [
-          { required: true, message: '璇疯緭鍏ュ彲鐢ㄦ椂闂�', tigger: 'blur'}
-        ],
-        getDate: [
-          { required: true, validator: getDateRules, tigger: 'change'}
-        ],
-        shopId: [
-          { required: true, validator: numRule, message: '璇烽�夋嫨鍏宠仈搴楅摵', tigger: 'change'}
-        ],
+        /*integral: [
+          { required: true, validator: numRule, message: '璇疯緭鍏ュ厬鎹㈡潯浠�', tigger: 'blur' }
+        ],*/
+        // validDays: [
+        //   { required: true, message: '璇疯緭鍏ュ彲鐢ㄦ椂闂�', tigger: 'blur' }
+        // ],
+        // getDate: [
+        //   { required: true, validator: getDateRules, tigger: 'change' }
+        // ],
+        // shopId: [
+        //   { required: true, validator: numRule, message: '璇烽�夋嫨鍏宠仈搴楅摵', tigger: 'change' }
+        // ]
       }
     }
   },
@@ -180,21 +203,62 @@
     })
   },
   methods: {
+    selectGoods(){
+      this.$refs.OperaCouponGoodsWindow.open('閫夋嫨鍟嗗搧', this.applyDataList)
+    },
+    loadLabels(){
+      labelList({
+        type: 0 // 鍟嗗搧鍒嗙被
+      }).then(res => {
+        this.categorys = res || []
+      })
+    },
+    loadSelectGoods(){
+      console.log(this.form.applyIdList)
+      if(!this.form.applyIdList || !this.form.applyIdList.length){
+        return
+      }
+      goodsList({
+        idList: this.form.applyIdList // 鍟嗗搧鍒嗙被
+      }).then(res => {
+        this.applyDataList = res || []
+      })
+    },
+    doSelect(rows){
+      console.log(rows,this.applyDataList)
+      this.applyDataList =[]
+      this.form.applyIdList=[]
+      if(rows && rows.length){
+        rows.forEach(item => {
+          this.applyDataList.push(item)
+          this.form.applyIdList.push(item.id)
+        })
+      }
+    },
     open (title, target, type) {
+      this.showGoods=false
       this.title = title
       this.visible = true
       this.form.type = type
       this.getDate = []
       this.form.startDate = ''
       this.form.endDate = ''
+      this.applyDataList=[]
+      this.form.applyIdList=[]
+      this.form.applyCateIdList=[]
+      this.loadLabels()
+      this.form.limitPrice=null
+      this.form.price=null
+      this.form.startDate=null
+      this.form.endDate=null
+      this.form.num=1
       // 鏂板缓
       if (target == null) {
         this.$nextTick(() => {
           this.$refs.form.resetFields()
-          console.log(this.form);
+          console.log(this.form)
           this.form[this.configData['field.id']] = null
         })
-
         return
       }
       // 缂栬緫
@@ -203,29 +267,42 @@
           this.form[key] = target[key]
         }
         this.getDate = [target.startDate, target.endDate]
+        if(this.form.applyType === 1){
+          this.form.applyCateIdList =[]
+          var ta = this.form.applyIds.split(',')
+          if(ta && ta.length){
+            ta.forEach(tt =>{
+              this.form.applyCateIdList.push(parseInt(tt))
+            })
+          }
+        }
+        if(this.form.applyType === 2){
+          this.form.applyIdList = this.form.applyIds.split(',')
+          this.loadSelectGoods()
+        }
       })
     },
-    selectDate(value) {
+    selectDate (value) {
       this.form.startDate = value[0]
       this.form.endDate = value[1]
     },
-    inputAction(item, key) {
-      if(item[key]<0) {
+    inputAction (item, key) {
+      if (item[key] < 0) {
         item[key] = ''
       } else {
         item[key] = item[key].replace(/[^\d.]/g, '')
-                      .replace(/\.{2,}/g, '.')
-                      .replace('.', '$#$')
-                      .replace(/\./g, '')
-                      .replace('$#$', '.')
-                      .replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3')
-                      .replace(/^\./g, '')
+          .replace(/\.{2,}/g, '.')
+          .replace('.', '$#$')
+          .replace(/\./g, '')
+          .replace('$#$', '.')
+          .replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3')
+          .replace(/^\./g, '')
       }
     },
-    remoteMethod(query) {
+    remoteMethod (query) {
       if (query !== '') {
         this.searchLoading = true
-        let action = this.form.type==2 ? activityList : shopList
+        const action = this.form.type == 2 ? activityList : shopList
         action({
           capacity: 999,
           model: {
@@ -239,8 +316,8 @@
             this.searchLoading = false
           })
       }
-    },
-  },
+    }
+  }
 }
 </script>
 
diff --git a/admin/src/views/business/coupon.vue b/admin/src/views/business/coupon.vue
index 7cdf90a..d306af7 100644
--- a/admin/src/views/business/coupon.vue
+++ b/admin/src/views/business/coupon.vue
@@ -2,19 +2,16 @@
   <TableLayout :permissions="['business:coupon:query']">
     <!-- 鎼滅储琛ㄥ崟 -->
     <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-      <el-form-item label="浼樻儬鍒稿悕绉�" prop="name">
+      <el-form-item label="鍚嶇О" prop="name">
         <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ヤ紭鎯犲埜鍚嶇О" @keypress.enter.native="search"></el-input>
       </el-form-item>
       <!-- 0鍟嗗浼樻儬鍒� 1骞冲彴浼樻儬鍒� -->
-      <!-- <el-form-item label="浼樻儬鍒哥被鍨�" prop="type">
-        <el-select
-          v-model="searchForm.type"
-          placeholder="璇烽�夋嫨浼樻儬鍒哥被鍨�"
-        >
-          <el-option key="0" :value="0" label="鍟嗗浼樻儬鍒�"></el-option>
-          <el-option key="1" :value="1" label="骞冲彴浼樻儬鍒�"></el-option>
+       <el-form-item label="绫诲瀷" prop="couponType">
+        <el-select  v-model="searchForm.couponType" clearable  placeholder="璇烽�夋嫨浼樻儬鍒哥被鍨�" >
+          <el-option key="0" :value="0" label="婊″噺鍒�"></el-option>
+          <el-option key="1" :value="1" label="鎶樻墸鍒�"></el-option>
         </el-select>
-      </el-form-item> -->
+      </el-form-item>
       <section>
         <el-button type="primary" @click="search">鎼滅储</el-button>
         <el-button @click="reset">閲嶇疆</el-button>
@@ -23,9 +20,8 @@
     <!-- 琛ㄦ牸鍜屽垎椤� -->
     <template v-slot:table-wrap>
       <ul class="toolbar" v-permissions="['business:coupon:create', 'business:coupon:delete']">
-        <li><el-button type="primary" @click="$refs.operaCouponWindow.open('鏂板缓骞冲彴浼樻儬鍒�', null, 1)" v-permissions="['business:coupon:create']">鏂板缓骞冲彴浼樻儬鍒�</el-button></li>
-        <li><el-button type="primary" @click="$refs.operaCouponWindow.open('鏂板缓鍟嗗浼樻儬鍒�', null, 0)" v-permissions="['business:coupon:create']">鏂板缓鍟嗗浼樻儬鍒�</el-button></li>
-        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:coupon:delete']">鍒犻櫎</el-button></li>
+        <li><el-button type="primary" icon="el-icon-plus" @click="$refs.operaCouponWindow.open('鏂板缓', null, 1)" v-permissions="['business:coupon:create']">鏂板缓</el-button></li>
+        <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:coupon:delete']">鍒犻櫎</el-button></li>
       </ul>
       <el-table
         v-loading="isWorking.search"
@@ -35,23 +31,21 @@
         @selection-change="handleSelectionChange"
       >
         <el-table-column type="selection" width="55"></el-table-column>
-        <el-table-column prop="name" label="浼樻儬鍒稿悕绉�" align="center" min-width="120px">
+        <el-table-column prop="name" label="浼樻儬鍒稿悕绉�" align="center" min-width="120px"></el-table-column>
+        <el-table-column label="绫诲瀷" align="center" min-width="100px">
           <template slot-scope="{row}">
-            <el-button type="text" @click="showDetail(row)">{{ row.name }}</el-button>
+            <span v-if="row.couponType ===0"> 婊″噺鍒�</span>
+            <span v-if="row.couponType ===1"> 鎶樻墸鍒�</span>
           </template>
         </el-table-column>
-        <el-table-column label="浼樻儬瑙勫垯" align="center" min-width="100px">
+        <el-table-column label="浼樻儬瑙勫垯" align="center" min-width="150px" show-overflow-tooltip>
           <template slot-scope="{row}">
-            {{ `婊�${row.limitPrice}鍑�${row.price}` }}
-          </template>
-        </el-table-column>
-        <el-table-column prop="type" label="浼樻儬鍒哥被鍨�" align="center" min-width="100px">
-          <template slot-scope="{row}">
-            {{ row.type==0?'鍟嗗浼樻儬鍒�':'骞冲彴浼樻儬鍒�' }}
+            <span v-if="row.couponType ===0"> {{ `璁㈠崟婊�${row.limitPrice||0}鍏冿紝鍑�${row.price||0}` }}鍏�</span>
+            <span v-if="row.couponType ===1"> {{ `璁㈠崟婊�${row.limitPrice||0}鍏冿紝浜�${row.price||0}鎶榒 }}</span>
           </template>
         </el-table-column>
         <el-table-column prop="num" label="鍙戞斁鎬婚噺" align="center" min-width="100px"></el-table-column>
-        <el-table-column  label="宸查鍙�" align="center" min-width="100px">
+        <el-table-column  label="宸插彂閫佹暟閲�" align="center" min-width="100px">
           <template slot-scope="{row}">
             <el-button type="text" @click="showCouponUse(row.id)">{{ row.unused + row.used }}</el-button>
           </template>
@@ -62,12 +56,17 @@
           </template>
         </el-table-column>
         <el-table-column prop="used" label="浣跨敤鏁伴噺" align="center" min-width="100px"></el-table-column>
-        <el-table-column prop="validDays" label="棰嗗彇鍚庢湁鏁堝ぉ鏁�" align="center" min-width="110px"></el-table-column>
-        <el-table-column prop="startDate" label="寮�濮嬫椂闂�" align="center" min-width="140px"></el-table-column>
-        <el-table-column prop="endDate" label="缁撴潫鏃堕棿" align="center" min-width="140px"></el-table-column>
-        <el-table-column label="杩涜鐘舵��" align="center" min-width="100px">
+        <el-table-column prop="validDays" label="浣跨敤鏈夋晥鏈�" align="center" min-width="210px">
           <template slot-scope="{row}">
-            {{ row.status==0 ? '鏈紑濮�' : row.status==1 ? '杩涜涓�' : '宸茬粨鏉�' }}
+            <span v-if="row.useType ===0"><li> 璧凤細{{ row.startDate}}</li> <li>姝細{{row.endDate }}</li></span>
+            <span v-if="row.useType ===1"> {{ `棰嗙敤鍚�${row.validDays||0}澶╂湁鏁坄 }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="閫傜敤绫诲瀷" align="center" min-width="100px">
+          <template slot-scope="{row}">
+            <span v-if="row.applyType ===0"> 鍏ㄧ▼閫氱敤</span>
+            <span v-if="row.applyType ===1"> 鎸夊搧绫�</span>
+            <span v-if="row.applyType ===2"> 鎸囧畾鍟嗗搧</span>
           </template>
         </el-table-column>
         <el-table-column prop="status" label="鐘舵��" align="center" min-width="100px">
@@ -87,7 +86,7 @@
           label="鎿嶄綔"
           min-width="120"
           fixed="right"
-          align="center" 
+          align="center"
         >
           <template slot-scope="{row}">
             <el-button type="text" @click="$refs.operaCouponWindow.open('缂栬緫浼樻儬鍒�', row)" icon="el-icon-edit" v-permissions="['business:coupon:update']">缂栬緫</el-button>
@@ -126,7 +125,7 @@
       // 鎼滅储
       searchForm: {
         name: '',
-        type: ''
+        couponType: ''
       }
     }
   },
@@ -144,7 +143,7 @@
       this.$refs.operaCouponDetail.open('浼樻儬鍒歌鎯�', row)
     },
     showCouponUse(id) {
-      
+
       this.$refs.operaCouponUsedDetail.open('浼樻儬鍒搁鍙栬鎯�', id)
     },
     statusChange(row) {
diff --git a/admin/src/views/business/integralRuleSet.vue b/admin/src/views/business/integralRuleSet.vue
new file mode 100644
index 0000000..b5b537b
--- /dev/null
+++ b/admin/src/views/business/integralRuleSet.vue
@@ -0,0 +1,265 @@
+<template>
+  <div class="box" style="max-height:calc(100% - 60px);margin-bottom:50px;overflow-y: auto" >
+    <el-form :model="form" ref="form">
+      <div class="header">
+        <span style="font-size: 15px; font-weight: bold">銆�1銆戞敞鍐屽鍔�</span>
+      </div>
+      <div class="item-content">
+        <el-form-item label="绉垎濂栧姳" label-width="150px"  prop="regIntegralRewardStatus">
+          <el-switch  v-model="form.regIntegralRewardStatus" :active-value="0" :inactive-value="1"    active-color="#13ce66"   inactive-color="#ff4949"  ></el-switch>
+        </el-form-item>
+        <el-form-item label="鏂颁汉娉ㄥ唽閫�" label-width="250px" prop="regIntegralReward">
+          <el-input  style="width: 200px;margin: 0px 20px" type="number"   v-model="form.regIntegralReward"   placeholder="璇疯緭鍏�"   v-trim>
+            <template slot="append">绉垎</template>
+          </el-input>
+        </el-form-item>
+      </div>
+      <div class="item-content">
+        <el-form-item label="浼樻儬鍒稿鍔�" label-width="150px"  prop="regCouponRewardStatus">
+          <el-switch  v-model="form.regCouponRewardStatus" :active-value="0" :inactive-value="1"    active-color="#13ce66"   inactive-color="#ff4949"  ></el-switch>
+        </el-form-item>
+        <div  >
+          <el-form-item label="鏂颁汉娉ㄥ唽閫佷紭鎯犲埜" label-width="250px" prop="regCouponRewardList">
+          </el-form-item>
+          <div  style="margin-left: 150px;border: 1px solid #f2f2f2">
+            <el-table style="width: 600px;"  :data="form.regCouponRewardList">
+              <el-table-column prop="shopPrice" label="浼樻儬鍒�" min-width="300px" align="center">
+                <template slot-scope="{row}" >
+                  <el-select v-model="row.couponId" style="width: 200px;margin: 0px 20px" clearable filterable   placeholder="璇烽�夋嫨浼樻儬鍒�"  >
+                    <el-option v-for="item in couponList"   :label="item.name"  :value="item.id">  </el-option>
+                  </el-select>
+                </template>
+              </el-table-column>
+              <el-table-column prop="num" label="鏁伴噺" min-width="200px" align="center">
+                <template slot-scope="{row}" >
+                  <el-input  style="width: 100px;margin: 0px 20px" type="number"   v-model="row.num"   placeholder="璇疯緭鍏ユ暟閲�"   v-trim/>
+                </template>
+              </el-table-column>
+              <el-table-column  label="鎿嶄綔" min-width="100px" align="center">
+                <template slot-scope="scope" >
+                  <el-button style="color: red;border: none;" @click="delCoupon(0,scope.$index)">鍒犻櫎</el-button>
+                </template>
+              </el-table-column>
+            </el-table>
+            <el-button s type="primary" icon="el-icon-plus" @click="addCoupon(0)" style="height: 30px;margin: 10px;">娣诲姞</el-button>
+          </div>
+        </div>
+      </div>
+      <div class="header">
+        <span style="font-size: 15px; font-weight: bold">銆�2銆戦個璇峰ソ鍙嬪鍔�</span>
+      </div>
+      <div class="item-content">
+        <el-form-item label="绉垎濂栧姳" label-width="150px"  prop="shareIntegralRewardStatus">
+          <el-switch  v-model="form.shareIntegralRewardStatus" :active-value="0" :inactive-value="1"    active-color="#13ce66"   inactive-color="#ff4949"  ></el-switch>
+        </el-form-item>
+        <el-form-item label="濂藉弸鎴愬姛娉ㄥ唽閫侀個璇蜂汉" label-width="250px" prop="shareIntegralReward">
+          <el-input  style="width: 200px;margin: 0px 20px" type="number"   v-model="form.shareIntegralReward"   placeholder="璇疯緭鍏�"   v-trim>
+            <template slot="append">绉垎</template>
+          </el-input>
+        </el-form-item>
+      </div>
+      <div class="item-content">
+        <el-form-item label="浼樻儬鍒稿鍔�" label-width="150px"  prop="shareCouponRewardStatus">
+          <el-switch  v-model="form.shareCouponRewardStatus" :active-value="0" :inactive-value="1"    active-color="#13ce66"   inactive-color="#ff4949"  ></el-switch>
+        </el-form-item>
+        <div  >
+          <el-form-item label="濂藉弸瀹屾垚棣栧崟閫侀個璇蜂汉浼樻儬鍒�" label-width="250px" prop="shareCouponRewardList">
+          </el-form-item>
+          <div  style="margin-left: 150px;border: 1px solid #f2f2f2">
+            <el-table style="width: 600px;"  :data="form.shareCouponRewardList">
+              <el-table-column prop="couponId" label="浼樻儬鍒�" min-width="300px" align="center">
+                <template slot-scope="{row}" >
+                  <el-select v-model="row.couponId" style="width: 200px;margin: 0px 20px"  clearable filterable   placeholder="璇烽�夋嫨浼樻儬鍒�"  >
+                    <el-option v-for="item in couponList"   :label="item.name"  :value="item.id">  </el-option>
+                  </el-select>
+                </template>
+              </el-table-column>
+              <el-table-column prop="num" label="鏁伴噺" min-width="200px" align="center">
+                <template slot-scope="{row}" >
+                  <el-input  style="width: 100px;margin: 0px 20px" type="number"   v-model="row.num"   placeholder="璇疯緭鍏ユ暟閲�"   v-trim/>
+                </template>
+              </el-table-column>
+              <el-table-column  label="鎿嶄綔" min-width="100px" align="center">
+                <template slot-scope="scope" >
+                  <el-button style="color: red;border: none;" @click="delCoupon(1,scope.$index)">鍒犻櫎</el-button>
+                </template>
+              </el-table-column>
+            </el-table>
+            <el-button s type="primary" icon="el-icon-plus" @click="addCoupon(1)" style="height: 30px;margin: 10px;">娣诲姞</el-button>
+          </div>
+        </div>
+      </div>
+      <div class="header">
+        <span style="font-size: 15px; font-weight: bold">銆�3銆戞秷璐硅繑绉垎</span>
+      </div>
+      <div class="item-content">
+        <el-form-item label="杩旂敤鎴风Н鍒�" label-width="150px"  prop="returnMemberIntegralStatus">
+          <el-switch  v-model="form.returnMemberIntegralStatus" :active-value="0" :inactive-value="1"    active-color="#13ce66"   inactive-color="#ff4949"  ></el-switch>
+        </el-form-item>
+        <el-form-item label="璁㈠崟瀹炰粯閲戦姣忔弧" label-width="250px" prop="returnMemberIntegral">
+          <el-input  style="width: 250px;margin: 0px 20px" type="number"   v-model="form.returnMemberIntegral"   placeholder="璇疯緭鍏�"   v-trim>
+            <template slot="append">鍏冭繑鐢ㄦ埛1绉垎</template>
+          </el-input>
+          <p class="tip-warn" style="margin-bottom: 1px;"><i class="el-icon-warning"></i>鎻愰啋锛氬疄浠橀噾棰濆幓闄よ繍璐�</p>
+        </el-form-item>
+      </div>
+      <div class="item-content">
+        <el-form-item label="杩旂粡閿�鍟嗙Н鍒�" label-width="150px"  prop="returnShopIntegralStatus">
+          <el-switch  v-model="form.returnShopIntegralStatus" :active-value="0" :inactive-value="1"    active-color="#13ce66"   inactive-color="#ff4949"  ></el-switch>
+        </el-form-item>
+        <el-form-item label="璁㈠崟瀹炰粯閲戦姣忔弧" label-width="250px" prop="returnShopIntegral">
+          <el-input  style="width: 250px;margin: 0px 20px" type="number"   v-model="form.returnShopIntegral"   placeholder="璇疯緭鍏�"   v-trim>
+            <template slot="append">鍏冭繑缁忛攢鍟�1绉垎</template>
+          </el-input>
+          <p class="tip-warn" style="margin-bottom: 1px;"><i class="el-icon-warning"></i>鎻愰啋锛氬疄浠橀噾棰濆幓闄よ繍璐�</p>
+        </el-form-item>
+      </div>
+      <div class="header">
+        <span style="font-size: 15px; font-weight: bold">銆�4銆戝悎璁′紭鎯犳壙鎷呮瘮渚�</span>
+      </div>
+      <div class="item-content">
+        <el-form-item label="鎬婚儴鎵挎媴" label-width="150px" prop="totalRate">
+          <el-input  style="width: 200px;margin: 0px 20px" type="number"   v-model="form.totalRate"   placeholder="璇疯緭鍏�"   v-trim>
+            <template slot="append">%</template>
+          </el-input>
+          <p class="tip-warn" style="margin-bottom: 1px;"><i class="el-icon-warning"></i>鎻愰啋锛氳缃�婚儴鍜岀粡閿�鍟嗗湪璁㈠崟鍚堣浼樻儬閲戦涓紙浼樻儬鍒�+绉垎鎶垫墸锛夊悇鑷壙鎷呯殑姣斾緥</p>
+        </el-form-item>
+      </div>
+      <el-form-item style="margin-top: 100px;width: 100%;text-align: center">
+        <el-button type="primary" style="width: 300px"  :loading="working" @click="submit">淇濆瓨閰嶇疆椤�</el-button>
+      </el-form-item>
+    </el-form>
+  </div>
+</template>
+
+<script>
+import { getPlatformConfig, updPlatformConfig } from '@/api/system/dictData'
+import {allList} from '@/api/business/coupon'
+export default {
+  name: '',
+  data () {
+    return {
+      uploadData: {
+        folder: ''
+      },
+      isUploading: false,
+      working: false,
+      couponList: [],
+      form: {
+        regIntegralRewardStatus: 0,
+        shareIntegralRewardStatus: 0,
+        regCouponRewardStatus: 0,
+        shareCouponRewardStatus: 0,
+        regIntegralReward: 0,
+        shareIntegralReward: 0,
+        regCouponRewardList: [],
+        shareCouponRewardList: [],
+        returnMemberIntegralStatus: 0,
+        returnShopIntegralStatus: 0,
+        returnMemberIntegral: 0,
+        returnShopIntegral: 0,
+        totalRate: 0
+      }
+    }
+  },
+
+  created () {
+    this.getCouponList()
+    this.getData()
+  },
+
+  methods: {
+    getCouponList () {
+      allList({})
+        .then(res => {
+          if (res) {
+            this.couponList = res || []
+          }
+        })
+    },
+    delCoupon(type,index){
+      if(type ===0){
+        this.form.regCouponRewardList.splice(index,1)
+      }else if(type ===1){
+        this.form.shareCouponRewardList.splice(index,1)
+      }
+    },
+    addCoupon(type){
+      if(type ===0){
+        this.form.regCouponRewardList.push({couponId:null,num:null})
+      }else if(type ===1){
+        this.form.shareCouponRewardList.push({couponId:null,num:null})
+      }
+
+    },
+    getData () {
+      getPlatformConfig({})
+        .then(res => {
+          if (res) {
+            this.form = {
+              regIntegralRewardStatus: res.regIntegralRewardStatus || 0,
+              shareIntegralRewardStatus: res.shareIntegralRewardStatus || 0,
+              regCouponRewardStatus: res.regCouponRewardStatus || 0,
+              shareCouponRewardStatus: res.shareCouponRewardStatus || 0,
+              regIntegralReward: res.regIntegralReward || 0,
+              shareIntegralReward: res.shareIntegralReward || 0,
+              regCouponRewardList: res.regCouponRewardList || [],
+              shareCouponRewardList: res.shareCouponRewardList || [],
+              returnMemberIntegralStatus: res.returnMemberIntegralStatus || 0,
+              returnShopIntegralStatus: res.returnShopIntegralStatus || 0,
+              returnMemberIntegral: res.returnMemberIntegral || 0,
+              returnShopIntegral: res.returnShopIntegral || 0,
+              totalRate: res.totalRate || 0
+            }
+          }
+        })
+    },
+    submit () {
+      console.log(this.form)
+      this.$refs.form.validate((valid) => {
+        if (!valid) {
+          return
+        }
+        // 璋冪敤鏂板缓鎺ュ彛
+        this.isWorking = true
+        updPlatformConfig(this.form).then(res => {
+          this.$message.success('淇濆瓨鎴愬姛')
+          this.getData()
+        })
+          .catch(e => {
+            this.$tip.apiFailed(e)
+          })
+          .finally(() => {
+            this.isWorking = false
+          })
+      })
+    }
+  }
+}
+</script>
+<style lang="scss" scoped>
+.el-container /deep/  .el-main{
+  width: 100%;
+  overflow-y: auto  !important ;
+  height: calc(100% - 94px);
+}
+.item-content{
+  display: flex;
+  width: 100%;
+}
+.header{
+  margin: 20px 0 20px 0;padding:10px;background-color: rgba(140,147,157,0.61);
+}
+/deep/ .el-main{
+  width: 100%;
+  //height: 100%;
+  overflow-y: auto  !important ;
+  height: calc(100% - 94px);
+}
+.box {
+  width: 100%;
+  padding: 30px;
+  box-sizing: border-box;
+  background: #ffffff;
+}
+</style>
diff --git a/server/dmmall_admin/src/main/java/com/doumee/api/business/GoodsController.java b/server/dmmall_admin/src/main/java/com/doumee/api/business/GoodsController.java
index 2d7053c..06d7720 100644
--- a/server/dmmall_admin/src/main/java/com/doumee/api/business/GoodsController.java
+++ b/server/dmmall_admin/src/main/java/com/doumee/api/business/GoodsController.java
@@ -98,6 +98,12 @@
     public ApiResponse<PageData<Goods>> findPage (@RequestBody PageWrap<Goods> pageWrap) {
         return ApiResponse.success(goodsService.findPage(pageWrap));
     }
+    @ApiOperation("鍒楄〃鏌ヨ")
+    @PostMapping("/list")
+    @RequiresPermissions("business:goods:query")
+    public ApiResponse<List<Goods>> findList (@RequestBody  Goods pageWrap) {
+        return ApiResponse.success(goodsService.findList(pageWrap));
+    }
 
 
     @ApiOperation("鏍规嵁涓撳尯鍒嗙被鏌ヨ鍟嗗搧")
diff --git a/server/dmmall_service/src/main/java/com/doumee/core/utils/Constants.java b/server/dmmall_service/src/main/java/com/doumee/core/utils/Constants.java
index 84e39a4..9206f05 100644
--- a/server/dmmall_service/src/main/java/com/doumee/core/utils/Constants.java
+++ b/server/dmmall_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -1,6 +1,7 @@
 package com.doumee.core.utils;
 
 import com.doumee.dao.business.model.Areas;
+import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.collections4.CollectionUtils;
 
 import java.math.BigDecimal;
@@ -30,8 +31,16 @@
      public static final String ORDERSET_RETURN_SHOP_INTEGRAL_STATUS="ORDERSET_RETURN_SHOP_INTEGRAL_STATUS";
      public static final String ORDERSET_RETURN_MEMBER_INTEGRAL="ORDERSET_RETURN_MEMBER_INTEGRAL";
      public static final String ORDERSET_RETURN_SHOP_INTEGRAL="ORDERSET_RETURN_SHOP_INTEGRAL";
+
+     public static final String INTERALSET_DEDUCTINTEGRALLIMIT="INTERALSET_DEDUCTINTEGRALLIMIT";
+     public static final String INTERALSET_MININTEGRALPRICELIMIT="INTERALSET_MININTEGRALPRICELIMIT";
+     public static final String INTERALSET_INTEGRALINVALIDTYPE="INTERALSET_INTEGRALINVALIDTYPE";
+     public static final String INTERALSET_INTEGRALINVALIDCIRCLE="INTERALSET_INTEGRALINVALIDCIRCLE";
+     public static final String INTERALSET_INTEGRALRULEINFO="INTERALSET_INTEGRALRULEINFO";
+
    public static final String ORDERSET_TOTAL_RATE="ORDERSET_TOTAL_RATE";
     public static final String ORDER_SET ="ORDER_SET" ;
+    public static final String INTEGRAL_SET ="INTEGRAL_SET" ;
 
     /**
      * mq tag
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Coupon.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Coupon.java
index 01f5a43..3e73772 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Coupon.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Coupon.java
@@ -11,6 +11,7 @@
 import com.fasterxml.jackson.annotation.JsonFormat;
 import java.util.Date;
 import java.math.BigDecimal;
+import java.util.List;
 
 /**
  * 浼樻儬鍒镐俊鎭〃
@@ -117,7 +118,7 @@
     @ApiModelProperty(value = "閫傜敤绫诲瀷锛�0=鍏ㄥ満;1=鍝佺被锛�2=鎸囧畾鍟嗗搧")
     private Integer applyType;
 
-    @ApiModelProperty(value = "閫傜敤鍏宠仈瀵硅薄淇℃伅涓婚敭")
+    @ApiModelProperty(value = "閫傜敤鍏宠仈瀵硅薄淇℃伅涓婚敭,澶氫釜鑻辨枃閫楀彿闅斿紑")
     private String applyIds;
 
     @ApiModelProperty(value = "鎶樻墸鍗锋弧鍑忎笂闄愰噾棰�")
@@ -145,8 +146,10 @@
     @ApiModelProperty(value = "鏈娇鐢ㄦ暟閲�", example = "1")
     @TableField(exist = false)
     private Integer   unused;
-
-
-
-
+    @ApiModelProperty(value = "閫傜敤鍏宠仈瀵硅薄淇℃伅涓婚敭,澶氫釜鑻辨枃閫楀彿闅斿紑")
+    @TableField(exist = false)
+    private List<Integer> applyIdList;
+    @ApiModelProperty(value = "閫傜敤鍏宠仈鍝佺被淇℃伅涓婚敭,澶氫釜鑻辨枃閫楀彿闅斿紑")
+    @TableField(exist = false)
+    private List<Integer> applyCateIdList;
 }
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Goods.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Goods.java
index c5b7cd7..c0c0ee9 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Goods.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Goods.java
@@ -193,6 +193,9 @@
     @ApiModelProperty(value = "鍟嗗搧sku淇℃伅")
     @TableField(exist = false)
     private List<Sku>  skuList;
+    @ApiModelProperty(value = "鍟嗗搧缂栫爜闆嗗悎")
+    @TableField(exist = false)
+    private List<Integer>  idList;
     @ApiModelProperty(value = "鍟嗗搧sku淇℃伅")
     @TableField(exist = false)
     private List<Labels>  brandList;
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Goodsorder.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Goodsorder.java
index 9005c29..ac62637 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Goodsorder.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Goodsorder.java
@@ -1,3 +1,5 @@
+
+
 package com.doumee.dao.business.model;
 
 import com.baomidou.mybatisplus.annotation.TableField;
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/system/SystemDictDataMapper.java b/server/dmmall_service/src/main/java/com/doumee/dao/system/SystemDictDataMapper.java
index 1a11139..e7fd901 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/system/SystemDictDataMapper.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/system/SystemDictDataMapper.java
@@ -4,10 +4,11 @@
 import com.doumee.dao.system.dto.QuerySystemDictDataDTO;
 import com.doumee.dao.system.model.SystemDictData;
 import com.doumee.dao.system.vo.SystemDictDataListVO;
+import com.github.yulichang.base.MPJBaseMapper;
 
 import java.util.List;
 
-public interface SystemDictDataMapper extends BaseMapper<SystemDictData> {
+public interface SystemDictDataMapper extends MPJBaseMapper<SystemDictData> {
 
     /**
      * 鏌ヨ瀛楀吀鏁版嵁绠$悊鍒楄〃
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/system/dto/PlatformConfigDTO.java b/server/dmmall_service/src/main/java/com/doumee/dao/system/dto/PlatformConfigDTO.java
index f92f32b..ea45030 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/system/dto/PlatformConfigDTO.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/system/dto/PlatformConfigDTO.java
@@ -47,6 +47,16 @@
     private BigDecimal returnShopIntegral;
     @ApiModelProperty(value = "鍚堣浼樻儬鎵挎媴姣斾緥锛�%锛�")
     private BigDecimal totalRate;
+    @ApiModelProperty(value = "澶氬皯绉垎鎶垫墸1鍏�")
+    private Integer deductIntegralLimit;
+    @ApiModelProperty(value = "婊″灏戦噾棰濆彲浣跨敤绉垎")
+    private BigDecimal minIntegralPriceLimit;
+    @ApiModelProperty(value = "绉垎澶辨晥鏂瑰紡 0闀挎湡鏈夋晥 1鎸夌Н鍒嗕骇鐢熸椂闂村け鏁�")
+    private Integer integralInvalidType;
+    @ApiModelProperty(value = "绉垎閿�姣佸懆鏈�")
+    private Integer integralInvalidCircle;
+    @ApiModelProperty(value = "绉垎浣跨敤瑙勫垯璇存槑")
+    private String integralRuleInfo;
 
 
 }
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/CouponServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/CouponServiceImpl.java
index 78e2ed2..53fd9d8 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/CouponServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/CouponServiceImpl.java
@@ -1,5 +1,6 @@
 package com.doumee.service.business.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.exception.BusinessException;
@@ -30,6 +31,7 @@
 import java.util.Date;
 import java.util.List;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * 浼樻儬鍒镐俊鎭〃Service瀹炵幇
@@ -55,24 +57,21 @@
     @Override
     public Integer create(Coupon coupon) {
         LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        coupon.setType(Constants.ONE);
+        coupon.setGetMethod(Constants.ZERO);
         isCreateParamValid(coupon);
 
-        /**骞冲彴浼樻儬鍒告槸鍏戞崲浼樻儬鍒革紝鍟嗗浼樻儬鍒告槸棰嗗彇浼樻儬鍒�*/
-        if(Constants.equalsInteger(coupon.getType(),Constants.ZERO)){
-            coupon.setGetMethod(Constants.ZERO);
-        }else if(Constants.equalsInteger(coupon.getType(),Constants.ONE)){
-          coupon.setGetMethod(Constants.ONE);
-        }
         coupon.setIsdeleted(Constants.ZERO);
         coupon.setCreator(user.getId());
         coupon.setCreateDate(new Date());
-        coupon.setStatus(Constants.ONE);
+        coupon.setEditor(user.getId());
+        coupon.setEditDate(new Date());
+        coupon.setStatus(Constants.ONE);//榛樿绂佺敤
         couponMapper.insert(coupon);
         return coupon.getId();
     }
 
     public void isCreateParamValid(Coupon coupon){
-
         if(StringUtils.isBlank(coupon.getName())
                 || coupon.getType()==null
                 ||coupon.getLimitPrice()==null
@@ -81,7 +80,7 @@
               /*  ||coupon.getIntegral()==null*/
                 ||coupon.getStartDate()==null
                 ||coupon.getEndDate()==null
-                ||coupon.getValidDays()==null
+//                ||coupon.getValidDays()==null
 
         ){
             throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage());
@@ -98,11 +97,17 @@
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鍏宠仈鐨勫簵閾轰笉瀛樺湪锛�");
             }
         }
+        coupon.setApplyIds("");
+        if(Constants.equalsInteger(coupon.getApplyType(),Constants.TWO) && coupon.getApplyIdList()!=null){
+            coupon.setApplyIds(coupon.getApplyIdList().stream().map(String::valueOf).collect(Collectors.joining(",")));//浣跨敤瀵硅薄缂栫爜闆嗗悎
+        }
+        if(Constants.equalsInteger(coupon.getApplyType(),Constants.ONE) && coupon.getApplyCateIdList()!=null){
+            coupon.setApplyIds(coupon.getApplyCateIdList().stream().map(String::valueOf).collect(Collectors.joining(",")));//浣跨敤瀵硅薄缂栫爜闆嗗悎
+        }
     }
 
     @Override
     public void deleteById(Integer id) {
-
         Coupon query= couponMapper.selectById(id);
         initCouponStatus(query);
         if(!Constants.equalsInteger(query.getCouponStatus(),Constants.ZERO)){
@@ -134,9 +139,9 @@
         isCreateParamValid(coupon);
         Coupon query= couponMapper.selectById(coupon.getId());
         initCouponStatus(query);
-        if(!Constants.equalsInteger(query.getCouponStatus(),Constants.ZERO)){
+     /*   if(!Constants.equalsInteger(query.getCouponStatus(),Constants.ZERO)){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "娲诲姩宸插紑濮�/宸茬粨鏉熺姸鎬侊紝涓嶆敮鎸佺紪杈戞搷浣�");
-        }
+        }*/
         coupon.setEditor(user.getId());
         coupon.setEditDate(new Date());
         couponMapper.updateById(coupon);
@@ -207,6 +212,7 @@
         queryWrapper.select("(select count(id) from member_coupon where ISDELETED=0 and COUPON_ID=t.id and STATUS=1) as used");
 
         queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getName()),Coupon::getName,pageWrap.getModel().getName());
+        queryWrapper.eq(pageWrap.getModel().getCouponType()!=null,Coupon::getCouponType,pageWrap.getModel().getCouponType());
         queryWrapper.eq(Coupon::getIsdeleted,Constants.ZERO);
         queryWrapper.orderByDesc(Coupon::getCreateDate);
         IPage<Coupon> result =  couponJoinMapper.selectJoinPage(page,Coupon.class, queryWrapper);
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java
index d558a10..741055a 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java
@@ -710,6 +710,9 @@
     @Override
     public List<Goods> findList(Goods goods) {
         QueryWrapper<Goods> wrapper = new QueryWrapper<>(goods);
+        wrapper.lambda()
+            .in(goods.getIdList() != null && goods.getIdList().size()>0, Goods::getId, goods.getIdList())
+            .eq( Goods::getIsdeleted, Constants.ZERO);
         return goodsMapper.selectList(wrapper);
     }
 
@@ -718,9 +721,7 @@
         IPage<Goods> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
         MPJLambdaWrapper<Goods> queryWrapper = new MPJLambdaWrapper<>();
         Utils.MP.blankToNull(pageWrap.getModel());
-
         queryWrapper.selectAll(Goods.class);
-
         queryWrapper.select("t1.name",Goods::getCategoryName);
         queryWrapper.select("t2.name" ,Goods::getBrandName);
         queryWrapper.select("t3.name" ,Goods::getParentName);
@@ -750,8 +751,8 @@
         queryWrapper.eq(pageWrap.getModel().getParentCategoryId() != null, Goods::getParentCategoryId, pageWrap.getModel().getParentCategoryId());
         queryWrapper.eq(pageWrap.getModel().getBrandId() != null, Goods::getBrandId, pageWrap.getModel().getBrandId());
         queryWrapper.eq(pageWrap.getModel().getStatus() != null, Goods::getStatus, pageWrap.getModel().getStatus());
-
-        queryWrapper.orderByDesc(Goods::getCreateDate);
+        queryWrapper.in(pageWrap.getModel().getIdList() != null && pageWrap.getModel().getIdList().size()>0, Goods::getId, pageWrap.getModel().getIdList());
+        queryWrapper.orderByDesc(Goods::getId);
         IPage<Goods> result = goodsAdminJoinMapper.selectJoinPage(page, Goods.class, queryWrapper);
         initResult(result.getRecords());
         return PageData.from(result);
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/system/impl/SystemDictDataServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/system/impl/SystemDictDataServiceImpl.java
index 2d919f1..4bb1bfc 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/system/impl/SystemDictDataServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/system/impl/SystemDictDataServiceImpl.java
@@ -20,6 +20,7 @@
 import com.doumee.service.system.SystemDictDataService;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -142,30 +143,24 @@
         platformConfigDTO.setReturnMemberIntegralStatus(0);
         platformConfigDTO.setReturnShopIntegralStatus(0);
 
+        platformConfigDTO.setMinIntegralPriceLimit(new BigDecimal(0));
+        platformConfigDTO.setDeductIntegralLimit(0);
+        platformConfigDTO.setIntegralRuleInfo("");
+        platformConfigDTO.setIntegralInvalidType(0);
+        platformConfigDTO.setIntegralInvalidCircle(0);
+
         platformConfigDTO.setTotalRate(new BigDecimal(0));
 
-        SystemDict  dict = systemDictMapper.selectOne(new QueryWrapper<SystemDict>().lambda()
+ /*       SystemDict  dict = systemDictMapper.selectOne(new QueryWrapper<SystemDict>().lambda()
                 .eq(SystemDict::getCode,Constants.ORDER_SET).last("limit 1"));
         if(dict == null){
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏁版嵁瀛楀吀閰嶇疆鏁版嵁鏈夎锛岃鑱旂郴绯荤粺绠$悊鍛樺鐞嗭紒");
         }
-
-        List<SystemDictData> systemDictDataList = systemDictDataMapper.selectList(new QueryWrapper<SystemDictData>()
-                .lambda().eq(SystemDictData::getDictId,dict.getId())
-                .in(SystemDictData::getLabel
-                        , Constants.ORDERSET_REG_INTEGRAL_REWARD_STATUS
-                        , Constants.ORDERSET_SHARE_INTEGRAL_REWARD_STATUS
-                        , Constants.ORDERSET_REG_COUPON_REWARD_STATUS
-                        , Constants.ORDERSET_SHARE_COUPON_REWARD_STATUS
-                        , Constants.ORDERSET_REG_INTEGRAL_REWARD
-                        , Constants.ORDERSET_SHARE_INTEGRAL_REWARD
-                        , Constants.ORDERSET_REG_COUPON_REWARD_LIST
-                        , Constants.ORDERSET_SHARE_COUPON_REWARD_LIST
-                        , Constants.ORDERSET_RETURN_MEMBER_INTEGRAL_STATUS
-                        , Constants.ORDERSET_RETURN_SHOP_INTEGRAL_STATUS
-                        , Constants.ORDERSET_RETURN_MEMBER_INTEGRAL
-                        , Constants.ORDERSET_RETURN_SHOP_INTEGRAL
-                        ,Constants.ORDERSET_TOTAL_RATE )
+*/
+        List<SystemDictData> systemDictDataList = systemDictDataMapper.selectJoinList(SystemDictData.class,new MPJLambdaWrapper<SystemDictData>()
+                .selectAll(SystemDictData.class)
+                .leftJoin(SystemDict.class,SystemDict::getId,SystemDictData::getDictId)
+                .in(SystemDict::getCode,Constants.ORDER_SET,Constants.INTEGRAL_SET)
         );
         if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(systemDictDataList)){
             for (SystemDictData systemDictData:systemDictDataList) {
@@ -195,6 +190,17 @@
                     platformConfigDTO.setReturnShopIntegralStatus(getIntegerValByStr(systemDictData.getCode()));
                 }else if(systemDictData.getLabel().equals(Constants.ORDERSET_TOTAL_RATE)) {
                     platformConfigDTO.setTotalRate(getDecimalValByStr(systemDictData.getCode()));
+                }
+                else if(systemDictData.getLabel().equals(Constants.INTERALSET_INTEGRALINVALIDTYPE)) {
+                    platformConfigDTO.setIntegralInvalidType(getIntegerValByStr(systemDictData.getCode()));
+                }else if(systemDictData.getLabel().equals(Constants.INTERALSET_INTEGRALINVALIDCIRCLE)) {
+                    platformConfigDTO.setIntegralInvalidCircle(getIntegerValByStr(systemDictData.getCode()));
+                }else if(systemDictData.getLabel().equals(Constants.INTERALSET_INTEGRALRULEINFO)) {
+                    platformConfigDTO.setIntegralRuleInfo(systemDictData.getCode());
+                }else if(systemDictData.getLabel().equals(Constants.INTERALSET_DEDUCTINTEGRALLIMIT)) {
+                    platformConfigDTO.setDeductIntegralLimit(getIntegerValByStr(systemDictData.getCode()));
+                }else if(systemDictData.getLabel().equals(Constants.INTERALSET_MININTEGRALPRICELIMIT)) {
+                    platformConfigDTO.setMinIntegralPriceLimit(getDecimalValByStr(systemDictData.getCode()));
                 }
             }
         }
@@ -227,28 +233,15 @@
     @Override
     @Transactional(rollbackFor = {Exception.class, BusinessException.class})
     public void updPlatformConfig(PlatformConfigDTO platformConfigDTO) {
-        SystemDict dict = systemDictMapper.selectOne(new QueryWrapper<SystemDict>().lambda()
+ /*       SystemDict dict = systemDictMapper.selectOne(new QueryWrapper<SystemDict>().lambda()
                 .eq(SystemDict::getCode, Constants.ORDER_SET).last("limit 1"));
         if (dict == null) {
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "鏁版嵁瀛楀吀閰嶇疆鏁版嵁鏈夎锛岃鑱旂郴绯荤粺绠$悊鍛樺鐞嗭紒");
-        }
-        List<SystemDictData> systemDictDataList = systemDictDataMapper.selectList(new QueryWrapper<SystemDictData>()
-                .lambda()
-                .eq(SystemDictData::getDictId, dict.getId())
-                .in(SystemDictData::getLabel
-                        , Constants.ORDERSET_REG_INTEGRAL_REWARD_STATUS
-                        , Constants.ORDERSET_SHARE_INTEGRAL_REWARD_STATUS
-                        , Constants.ORDERSET_REG_COUPON_REWARD_STATUS
-                        , Constants.ORDERSET_SHARE_COUPON_REWARD_STATUS
-                        , Constants.ORDERSET_REG_INTEGRAL_REWARD
-                        , Constants.ORDERSET_SHARE_INTEGRAL_REWARD
-                        , Constants.ORDERSET_REG_COUPON_REWARD_LIST
-                        , Constants.ORDERSET_SHARE_COUPON_REWARD_LIST
-                        , Constants.ORDERSET_RETURN_MEMBER_INTEGRAL_STATUS
-                        , Constants.ORDERSET_RETURN_SHOP_INTEGRAL_STATUS
-                        , Constants.ORDERSET_RETURN_MEMBER_INTEGRAL
-                        , Constants.ORDERSET_RETURN_SHOP_INTEGRAL
-                        , Constants.ORDERSET_TOTAL_RATE)
+        }*/
+        List<SystemDictData> systemDictDataList = systemDictDataMapper.selectJoinList(SystemDictData.class,new MPJLambdaWrapper<SystemDictData>()
+                .selectAll(SystemDictData.class)
+                .leftJoin(SystemDict.class,SystemDict::getId,SystemDictData::getDictId)
+                .in(SystemDict::getCode,Constants.ORDER_SET,Constants.INTEGRAL_SET)
         );
         if (com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(systemDictDataList)) {
             for (SystemDictData systemDictData : systemDictDataList) {
@@ -279,6 +272,18 @@
                 } else if (systemDictData.getLabel().equals(Constants.ORDERSET_TOTAL_RATE)) {
                     systemDictData.setCode(Constants.formatBigdecimal(platformConfigDTO.getTotalRate()).doubleValue() + "");
                 }
+
+                else if(systemDictData.getLabel().equals(Constants.INTERALSET_INTEGRALINVALIDTYPE)) {
+                    systemDictData.setCode(Constants.formatIntegerNum(platformConfigDTO.getIntegralInvalidType()) + "");
+                }else if(systemDictData.getLabel().equals(Constants.INTERALSET_INTEGRALINVALIDCIRCLE)) {
+                    systemDictData.setCode(Constants.formatIntegerNum(platformConfigDTO.getIntegralInvalidCircle()) + "");
+                }else if(systemDictData.getLabel().equals(Constants.INTERALSET_INTEGRALRULEINFO)) {
+                    systemDictData.setCode(platformConfigDTO.getIntegralRuleInfo());
+                }else if(systemDictData.getLabel().equals(Constants.INTERALSET_DEDUCTINTEGRALLIMIT)) {
+                    systemDictData.setCode(Constants.formatIntegerNum(platformConfigDTO.getDeductIntegralLimit()) + "");
+                }else if(systemDictData.getLabel().equals(Constants.INTERALSET_MININTEGRALPRICELIMIT)) {
+                    systemDictData.setCode(Constants.formatBigdecimal(platformConfigDTO.getReturnShopIntegral()).doubleValue() + "");
+                }
                 systemDictDataMapper.update(new UpdateWrapper<SystemDictData>().lambda()
                         .set(SystemDictData::getCode, systemDictData.getCode())
                         .eq(SystemDictData::getId, systemDictData.getId()));

--
Gitblit v1.9.3