From 28db820caf0ed90f4326d29cb0fa7a19cba92775 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期五, 27 二月 2026 16:33:03 +0800
Subject: [PATCH] 经销商管理

---
 server/dmmall_admin/src/main/java/com/doumee/api/business/BannerController.java                   |    9 +
 server/dmmall_service/src/main/java/com/doumee/dao/business/model/MemberCoupon.java               |    4 
 admin/src/components/business/OperaShopInfoWindow.vue                                             |    2 
 admin/src/api/business/banner.js                                                                  |    3 
 server/dmmall_service/src/main/java/com/doumee/service/business/BannerService.java                |    1 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/BannerServiceImpl.java       |   15 ++
 admin/src/components/business/OperaCouponUsedDetail.vue                                           |   18 ++-
 admin/src/views/business/goodsorder.vue                                                           |   13 +-
 admin/src/views/business/coupon.vue                                                               |   16 ++-
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java   |    3 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java |    3 
 admin/src/views/business/banner.vue                                                               |   59 ++++++++---
 admin/src/components/business/OperaBannerWindow.vue                                               |   42 ++++++--
 admin/src/components/business/OperaCouponWindow.vue                                               |   73 ++++++++------
 admin/src/components/business/OperaCouponGoodsWindow.vue                                          |    5 
 admin/src/views/business/information.vue                                                          |    2 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java        |    1 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/CouponServiceImpl.java       |   13 ++
 18 files changed, 194 insertions(+), 88 deletions(-)

diff --git a/admin/src/api/business/banner.js b/admin/src/api/business/banner.js
index fcad362..b622e2f 100644
--- a/admin/src/api/business/banner.js
+++ b/admin/src/api/business/banner.js
@@ -16,6 +16,9 @@
 export function updateById (data) {
   return request.post('/business/banner/updateById', data)
 }
+export function updateStatus (data) {
+  return request.post('/business/banner/updateStatus', data)
+}
 
 // 鍒犻櫎
 export function deleteById (id) {
diff --git a/admin/src/components/business/OperaBannerWindow.vue b/admin/src/components/business/OperaBannerWindow.vue
index 261d6ba..c198293 100644
--- a/admin/src/components/business/OperaBannerWindow.vue
+++ b/admin/src/components/business/OperaBannerWindow.vue
@@ -1,7 +1,8 @@
 <template>
-  <GlobalAlertWindow
+  <GlobalWindow
     v-loading="isUploading"
     :title="title"
+    width="60%"
     :visible.sync="visible"
     :confirm-working="isWorking"
     @confirm="confirm"
@@ -31,7 +32,7 @@
           @uploadBegin="isUploading = true"
         />
       </el-form-item>
-      <el-form-item label="灞曠ず鍩庡競" prop="cityId">
+      <el-form-item label="灞曠ず鍩庡競" prop="cityId" v-if="1==2">
         <div class="address">
           <el-select v-model="form.provinceId" placeholder="璇烽�夋嫨鐪佷唤" filterable @change="selectProvince">
             <el-option
@@ -51,11 +52,24 @@
           </el-select>
         </div>
       </el-form-item>
+      <el-form-item label="鎺掑簭鐮�(鍗囧簭)" prop="sortnum">
+        <el-input v-model="form.sortnum" type="number"  placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
+      </el-form-item>
+      <el-form-item label="鐘舵��" prop="status">
+        <el-switch
+            v-model="form.status"
+            active-color="#13ce66"
+            inactive-color="#999"
+            :active-value="0"
+            :inactive-value="1"
+        ></el-switch>
+      </el-form-item>
       <el-form-item label="璺宠浆绫诲瀷" prop="type">
         <el-select
           v-model="form.type"
           placeholder="璇烽�夋嫨璺宠浆绫诲瀷"
           @change="selectType"
+          clearable
         >
           <el-option
             v-for="item in types()"
@@ -67,10 +81,15 @@
       </el-form-item>
       <!-- //  0瀵屾枃鏈� 1澶栭摼 2娲诲姩 3鍟嗗 -->
       <el-form-item v-if="form.type==0" label="瀵屾枃鏈唴瀹�" prop="content">
-        <RichEditor :content="{ content : form.content}"  @edit="form.content=$event" />
+        <RichEditor  :richData="form.content" :styleEditor="'border: 1px solid #ccc;display: inline-block;height:500px;'" @getWangedditor="getWangedditor" :readonly="false"/>
+
+<!--
+        <RichEditor :styleEditor="'border: 1px solid #ccc;display: inline-block;height:500px;'"  :content="{ content : form.content}"  @edit="form.content=$event" />
+-->
       </el-form-item>
       <el-form-item v-if="form.type==1" label="閾炬帴" prop="content">
         <el-input v-model="form.content" placeholder="璇疯緭鍏ラ摼鎺�" v-trim/>
+        <p class="tip-warn" style="margin-bottom: 1px;"><i class="el-icon-warning"></i>鎻愰啋锛氬鏋滈厤缃叕浼楀彿閾炬帴锛岃烦杞殑鍏紬鍙烽渶瑕佸厛璺熷皬绋嬪簭杩涜缁戝畾锛屾柟鍙疄鐜拌烦杞�</p>
       </el-form-item>
       <el-form-item v-if="form.type==2" label="娲诲姩鍚嶇О" prop="content">
         <el-select
@@ -110,16 +129,13 @@
           </el-option>
         </el-select>
       </el-form-item>
-      <el-form-item label="鎺掑簭鐮�" prop="sortnum">
-        <el-input v-model="form.sortnum" type="number"  placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
-      </el-form-item>
     </el-form>
-  </GlobalAlertWindow>
+  </GlobalWindow>
 </template>
 
 <script>
 import BaseOpera from '@/components/base/BaseOpera'
-import GlobalAlertWindow from '@/components/common/GlobalAlertWindow'
+import GlobalWindow from '@/components/common/GlobalWindow'
 import RichEditor from '@/components/common/RichEditor'
 import UploadAvatarImage from '@/components/common/UploadAvatarImage'
 import { listByParentId } from '@/api/business/areas'
@@ -128,7 +144,7 @@
 export default {
   name: 'OperaBannerWindow',
   extends: BaseOpera,
-  components: { GlobalAlertWindow, RichEditor, UploadAvatarImage },
+  components: { GlobalWindow, RichEditor, UploadAvatarImage },
   data () {
     let positionRule = (rule, value, callBack) => {
       // debugger
@@ -155,10 +171,10 @@
         info: '',
         title: '',
         sortnum: '',
-        status: '',
+        status: 0,
         imgurl: '',
         imgFullUrl: '',
-        type: 0,
+        type: '',
         position: '',
         provinceId: '',
         cityId: '',
@@ -182,6 +198,7 @@
   },
   inject: ['postions', 'types'],
   created () {
+
     this.config({
       api: '/business/banner',
       'field.id': 'id'
@@ -192,6 +209,9 @@
       })
   },
   methods: {
+    getWangedditor (val) {
+      this.form.content = val
+    },
     open (title, target) {
 
       this.title = title
diff --git a/admin/src/components/business/OperaCouponGoodsWindow.vue b/admin/src/components/business/OperaCouponGoodsWindow.vue
index b2e00ad..6c14332 100644
--- a/admin/src/components/business/OperaCouponGoodsWindow.vue
+++ b/admin/src/components/business/OperaCouponGoodsWindow.vue
@@ -104,12 +104,15 @@
     return {
       title: '',
       visible: false,
+      selectGoods:[],
       // 鎼滅储
       searchForm: {
         id: '',
         bindShopId: ''
       },
-      shops: []
+      shops: [],
+      brands:[],
+      labels:[]
     }
   },
   created () {
diff --git a/admin/src/components/business/OperaCouponUsedDetail.vue b/admin/src/components/business/OperaCouponUsedDetail.vue
index b15a70e..549fa26 100644
--- a/admin/src/components/business/OperaCouponUsedDetail.vue
+++ b/admin/src/components/business/OperaCouponUsedDetail.vue
@@ -1,6 +1,7 @@
 <template>
   <GlobalWindow
     :title="title"
+    :with-footer="false"
     :visible.sync="visible"
     @confirm="confirm"
   >
@@ -28,7 +29,7 @@
       </el-form>
       <!-- 琛ㄦ牸鍜屽垎椤� -->
       <template v-slot:table-wrap>
-        
+
         <el-table
           v-loading="isWorking.search"
           :data="tableData.list"
@@ -49,11 +50,11 @@
               {{ row.type==0?'棰嗗彇':'鍏戞崲' }}
             </template>
           </el-table-column>
-          <el-table-column prop="num" label="鍜栬眴鏁伴噺" align="center" min-width="100px">
+<!--          <el-table-column prop="num" label="鏁伴噺" align="center" min-width="100px">
             <template slot-scope="{row}">
               {{ row.num || '-' }}
             </template>
-          </el-table-column>
+          </el-table-column>-->
           <el-table-column label="鐘舵��" align="center" min-width="100px">
             <template slot-scope="{row}">
               {{ row.status==0 ? '鏈娇鐢�' : row.status==1 ? '宸蹭娇鐢�' : '宸茶繃鏈�' }}
@@ -83,18 +84,19 @@
   extends: BaseTable,
   components: { GlobalWindow, TableLayout, Pagination },
   data () {
-    
+
     return {
       visible: false,
       title: '',
       getDate: [],
       // 琛ㄥ崟鏁版嵁
       searchForm: {
-        id: null,
+        couponId: null,
         member: '',
+        methodList:[0,1],
         status: '',
       },
-      
+
     }
   },
   created () {
@@ -109,10 +111,10 @@
       this.visible = true
       this.$nextTick(() => {
         this.$refs.searchForm.resetFields()
-        this.searchForm.id = target
+        this.searchForm.couponId = target
         this.search()
       })
-      
+
     },
     handlePageChange (pageIndex) {
       // debugger
diff --git a/admin/src/components/business/OperaCouponWindow.vue b/admin/src/components/business/OperaCouponWindow.vue
index 68002b6..2f1df05 100644
--- a/admin/src/components/business/OperaCouponWindow.vue
+++ b/admin/src/components/business/OperaCouponWindow.vue
@@ -28,10 +28,14 @@
           <el-input  v-model="form.price"     placeholder="璇疯緭鍏�"    @input="inputAction(form, 'price')"  >
             <template slot="append" >{{form.couponType ===1?'鎶�':'鍏�'}}</template>
           </el-input>
+          <div class="discrep"  v-if="form.couponType === 1" >锛屾姌鎵d紭鎯犻噾棰濅笂闄�</div>
+          <el-input  v-model="form.maxPrice"     v-if="form.couponType === 1"  placeholder="璇疯緭鍏�"    @input="inputAction(form, 'maxPrice')"  >
+            <template slot="append" >鍏�</template>
+          </el-input>
         </div>
       </el-form-item>
       <el-form-item label="浼樻儬鍒歌鏄�" prop="info">
-        <el-input type="textarea" v-model="form.info" placeholder="璇疯緭鍏ヤ紭鎯犲埜璇存槑"  v-trim/>
+        <el-input type="textarea" v-model="form.info" placeholder="璇疯緭鍏ヤ紭鎯犲埜璇存槑" maxlength="500"  v-trim/>
       </el-form-item>
       <p class="tip-header" >浣跨敤闄愬埗</p>
       <el-form-item label="鏈夋晥鏈�" prop="useType">
@@ -75,7 +79,7 @@
         </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-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>
@@ -86,8 +90,9 @@
       <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>
+          <el-input-number  v-model="form.num" :controls="false" :min="0" :max="99999" placeholder="璇疯緭鍏ュ彂鏀炬�婚噺(0~99999)" v-trim></el-input-number>
         </div>
+        <p class="tip-warn" style="margin-bottom: 1px;"><i class="el-icon-warning"></i>鎻愰啋锛氬彂鏀炬�婚噺涓�0琛ㄧず涓嶉檺鍒�</p>
       </el-form-item>
     </el-form>
     <OperaCouponGoodsWindow ref="OperaCouponGoodsWindow" @success="doSelect"/>
@@ -99,18 +104,20 @@
 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 { allList as goodsList } from '@/api/business/goods'
 import OperaCouponGoodsWindow from '@/components/business/OperaCouponGoodsWindow'
 export default {
   name: 'OperaCouponWindow',
   extends: BaseOpera,
-  components: { GlobalWindow,OperaCouponGoodsWindow },
+  components: { GlobalWindow, OperaCouponGoodsWindow },
   data () {
     const couponRules = (rule, value, callback) => {
       if (!this.form.limitPrice) {
         callback(new Error('璇疯緭鍏ユ弧棰�'))
       } else if (!this.form.price) {
         callback(new Error('璇峰畬鍠勪紭鎯犺鍒�'))
+      } else if (this.form.couponType == 1 && (this.form.price <= 0 || this.form.price >= 10)) {
+        callback(new Error('浼樻儬鎶樻墸鍙兘涓� (0,10)鑼冨洿鍐�'))
       } else {
         callback()
       }
@@ -134,8 +141,8 @@
     return {
       searchLoading: false,
       getDate: [],
-      applyDataList:[],
-      showGoods:false,
+      applyDataList: [],
+      showGoods: false,
       // 琛ㄥ崟鏁版嵁
       form: {
         id: null,
@@ -180,10 +187,10 @@
         ],
         num: [
           { required: true, validator: numRule, message: '璇疯緭鍏ュ彂鏀炬�绘暟', tigger: 'blur' }
-        ],
-        /*integral: [
+        ]
+        /* integral: [
           { required: true, validator: numRule, message: '璇疯緭鍏ュ厬鎹㈡潯浠�', tigger: 'blur' }
-        ],*/
+        ], */
         // validDays: [
         //   { required: true, message: '璇疯緭鍏ュ彲鐢ㄦ椂闂�', tigger: 'blur' }
         // ],
@@ -203,19 +210,19 @@
     })
   },
   methods: {
-    selectGoods(){
+    selectGoods () {
       this.$refs.OperaCouponGoodsWindow.open('閫夋嫨鍟嗗搧', this.applyDataList)
     },
-    loadLabels(){
+    loadLabels () {
       labelList({
         type: 0 // 鍟嗗搧鍒嗙被
       }).then(res => {
         this.categorys = res || []
       })
     },
-    loadSelectGoods(){
+    loadSelectGoods () {
       console.log(this.form.applyIdList)
-      if(!this.form.applyIdList || !this.form.applyIdList.length){
+      if (!this.form.applyIdList || !this.form.applyIdList.length) {
         return
       }
       goodsList({
@@ -224,11 +231,11 @@
         this.applyDataList = res || []
       })
     },
-    doSelect(rows){
-      console.log(rows,this.applyDataList)
-      this.applyDataList =[]
-      this.form.applyIdList=[]
-      if(rows && rows.length){
+    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)
@@ -236,22 +243,22 @@
       }
     },
     open (title, target, type) {
-      this.showGoods=false
+      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.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
+      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(() => {
@@ -267,16 +274,16 @@
           this.form[key] = target[key]
         }
         this.getDate = [target.startDate, target.endDate]
-        if(this.form.applyType === 1){
-          this.form.applyCateIdList =[]
+        if (this.form.applyType === 1) {
+          this.form.applyCateIdList = []
           var ta = this.form.applyIds.split(',')
-          if(ta && ta.length){
-            ta.forEach(tt =>{
+          if (ta && ta.length) {
+            ta.forEach(tt => {
               this.form.applyCateIdList.push(parseInt(tt))
             })
           }
         }
-        if(this.form.applyType === 2){
+        if (this.form.applyType === 2) {
           this.form.applyIdList = this.form.applyIds.split(',')
           this.loadSelectGoods()
         }
diff --git a/admin/src/components/business/OperaShopInfoWindow.vue b/admin/src/components/business/OperaShopInfoWindow.vue
index 8584528..6f8a6a3 100644
--- a/admin/src/components/business/OperaShopInfoWindow.vue
+++ b/admin/src/components/business/OperaShopInfoWindow.vue
@@ -21,7 +21,7 @@
           <div v-if="info.status ==1" class="header-red">绂佺敤</div>
         </div>
         <div class="info-item">
-          <div class="info-item-a">缁忛攢鍟嗗悕绉帮細<span>{{info.name || ''}}</span><span class="blue header-blue">{{ info.saleType == 1?'鑷敱閲囪喘':'骞冲彴閾鸿揣'}}</span></div>
+          <div class="info-item-a">缁忛攢鍟嗗悕绉帮細<span>{{info.name || ''}}</span><span class="blue header-blue">{{ info.saleType == 1?'鑷富閲囪喘':'骞冲彴閾鸿揣'}}</span></div>
           <div class="info-item-a">闂ㄥ簵ID锛�<span>{{info.code || ''}}</span></div>
           <div class="info-item-a">鐧诲綍璐﹀彿锛�<span>{{info.username || ''}}</span></div>
         </div>
diff --git a/admin/src/views/business/banner.vue b/admin/src/views/business/banner.vue
index 6e53154..bf0c8c8 100644
--- a/admin/src/views/business/banner.vue
+++ b/admin/src/views/business/banner.vue
@@ -55,7 +55,18 @@
             <el-image :src="row.imgFullUrl" :preview-src-list="[row.imgFullUrl]"></el-image>
           </template>
         </el-table-column>
-        <el-table-column prop="cityName" label="灞曠ず鍩庡競" align="center" min-width="100px"></el-table-column>
+        <el-table-column prop="status" label="鐘舵��" align="center" min-width="100px">
+          <template slot-scope="{row}">
+            <el-switch
+                v-model="row.status"
+                active-color="#13ce66"
+                inactive-color="#999"
+                :active-value="0"
+                :inactive-value="1"
+                @change="statusChange(row)"
+            ></el-switch>
+          </template>
+        </el-table-column>
         <el-table-column prop="type" label="璺宠浆鍔熻兘" align="center" min-width="100px">
            <template slot-scope="{row}">
             {{ typeToStr(row.type) }}
@@ -64,9 +75,10 @@
         <el-table-column prop="content" label="鍐呭" align="center" min-width="100px">
           <template slot-scope="{row}">
             <el-button v-if="row.type==0" type="text" @click="$refs.showRich.open('璇︽儏',row)">鏌ョ湅璇︽儏</el-button>
-            <template v-else>
+            <el-button v-if="row.type==1 && row.content" type="text"  @click="goLink(row)" :title="row.content">璺宠浆澶栭摼</el-button>
+<!--            <template v-else>
               {{ row.content }}
-            </template>
+            </template>-->
           </template>
         </el-table-column>
         <el-table-column prop="sortnum" label="鎺掑簭鐮�" align="center" min-width="100px"></el-table-column>
@@ -113,27 +125,27 @@
       // 鎼滅储
       searchForm: {
         position: '',
-        type: '',
+        type: ''
       },
       postions: [
         // 0棣栭〉 1鎺ㄨ崘搴楅摵 2鍟嗗煄棣栭〉
         { label: '棣栭〉', id: 0 },
         { label: '鎺ㄨ崘搴楅摵', id: 1 },
-        { label: '鍟嗗煄棣栭〉', id: 2 },
+        { label: '鍟嗗煄棣栭〉', id: 2 }
       ],
       types: [
         //  0瀵屾枃鏈� 1澶栭摼 2娲诲姩 3鍟嗗
         { label: '瀵屾枃鏈�', id: 0 },
-        { label: '澶栭摼', id: 1 },
-        { label: '娲诲姩', id: 2 },
-        { label: '鍟嗗', id: 3 },
+        { label: '澶栭摼', id: 1 }
+      /*  { label: '娲诲姩', id: 2 },
+        { label: '鍟嗗', id: 3 }, */
       ]
     }
   },
-  provide() {
+  provide () {
     return {
       postions: () => this.postions,
-      types: () => this.types,
+      types: () => this.types
     }
   },
   created () {
@@ -146,15 +158,30 @@
     this.search()
   },
   methods: {
-    postionToStr(postion) {
+    statusChange (row) {
+      this.api.updateStatus(row)
+        .then(() => {
+          this.$tip.success('鎿嶄綔鎴愬姛')
+        })
+        .catch(e => {
+          this.$tip.error(e)
+        })
+        .finally(() => {
+          this.handlePageChange()
+        })
+    },
+    goLink(row){
+      window.open(row.content)
+    },
+    postionToStr (postion) {
       // console.log(postion);
-      let temp = this.postions.find(item => item.id == postion)
+      const temp = this.postions.find(item => item.id == postion)
       return temp ? temp.label : '-'
     },
-    typeToStr(type) {
-      let temp = this.types.find(item => item.id == type)
+    typeToStr (type) {
+      const temp = this.types.find(item => item.id == type)
       return temp ? temp.label : '-'
-    },
-  },
+    }
+  }
 }
 </script>
diff --git a/admin/src/views/business/coupon.vue b/admin/src/views/business/coupon.vue
index cc9f372..f31ec01 100644
--- a/admin/src/views/business/coupon.vue
+++ b/admin/src/views/business/coupon.vue
@@ -38,21 +38,28 @@
             <span v-if="row.couponType ===1"> 鎶樻墸鍒�</span>
           </template>
         </el-table-column>
-        <el-table-column label="浼樻儬瑙勫垯" align="center" min-width="150px" show-overflow-tooltip>
+        <el-table-column label="浼樻儬瑙勫垯" align="center" min-width="200px" show-overflow-tooltip>
           <template slot-scope="{row}">
             <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>
+            <span v-if="row.couponType ===1"> {{ `璁㈠崟婊�${row.limitPrice||0}鍏冿紝浜�${row.price||0}鎶橈紝`}}</span><br>
+            <span v-if="row.couponType ===1"> {{ `浼樻儬閲戦涓婇檺${row.maxPrice||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">
           <template slot-scope="{row}">
             <el-button type="text" @click="showCouponUse(row.id)">{{ row.received||0 }}</el-button>
           </template>
         </el-table-column>
+        <el-table-column prop="num" label="鍙戞斁鎬婚噺" align="center" min-width="100px">
+          <template slot-scope="{row}">
+            <span v-if="row.num "> {{ row.num}}</span>
+            <span v-if="!row.num ||row.num<=0 ">涓嶉檺</span><br>
+          </template>
+        </el-table-column>
         <el-table-column label="鍓╀綑鏁伴噺" align="center" min-width="100px">
           <template slot-scope="{row}">
-            {{ (row.num||0) - (row.received||0) }}
+              <span v-if="row.num ">  {{ (row.num||0) - (row.received||0) }}</span>
+              <span v-if="!row.num ||row.num<=0 ">涓嶉檺</span><br>
           </template>
         </el-table-column>
 <!--
@@ -145,7 +152,6 @@
       this.$refs.operaCouponDetail.open('浼樻儬鍒歌鎯�', row)
     },
     showCouponUse(id) {
-
       this.$refs.operaCouponUsedDetail.open('浼樻儬鍒搁鍙栬鎯�', id)
     },
     statusChange(row) {
diff --git a/admin/src/views/business/goodsorder.vue b/admin/src/views/business/goodsorder.vue
index 3bb2c4c..c01082a 100644
--- a/admin/src/views/business/goodsorder.vue
+++ b/admin/src/views/business/goodsorder.vue
@@ -31,6 +31,9 @@
           <el-option :key="1" :value="1" label="鑷彁"></el-option>
         </el-select>
       </el-form-item>
+      <el-form-item label="鍟嗗搧鍚嶇О" prop="shopName">
+        <el-input v-model="searchForm.goodsName" placeholder="璇疯緭鍏ュ晢鍝佸悕绉�" clearable @keypress.enter.native="search"></el-input>
+      </el-form-item>
       <el-form-item label="褰掑睘缁忛攢鍟�" prop="shopName">
         <el-input v-model="searchForm.shopName" placeholder="璇疯緭鍏ョ粡閿�鍟嗗悕绉�" clearable @keypress.enter.native="search"></el-input>
       </el-form-item>
@@ -40,7 +43,7 @@
       <div class="date-style" style="display: inline">
         <el-form-item label="璁㈠崟鏃堕棿" prop="starttime" >
           <el-date-picker
-              style="width: 160px"
+              style="width: 180px"
               clearable
               @change="search"
               v-model="searchForm.starttime"
@@ -53,7 +56,7 @@
         </el-form-item>
         <el-form-item label="-" label-width="10px" prop="endtime" >
           <el-date-picker
-              style="width: 160px"
+              style="width: 180px"
               clearable
               v-model="searchForm.endtime"
               type="datetime"
@@ -67,8 +70,8 @@
       </div>
       <section>
         <el-button type="primary" @click="search">鎼滅储</el-button>
-        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:goodsorder:exportExcel']" @click="exportExcel">瀵煎嚭</el-button>
         <el-button @click="reset">閲嶇疆</el-button>
+        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:goodsorder:exportExcel']" @click="exportExcel">瀵煎嚭</el-button>
       </section>
     </el-form>
     <!-- 琛ㄦ牸鍜屽垎椤� -->
@@ -190,7 +193,7 @@
         status: '',
         nickName: '',
         starttime: null,
-        enttime: null
+        endtime: null
       }
     }
   },
@@ -238,7 +241,7 @@
     reset () {
       this.createDate = []
       this.searchForm.starttime = ''
-      this.searchForm.enttime = ''
+      this.searchForm.endtime = ''
       this.$refs.searchForm.resetFields()
       this.search()
     },
diff --git a/admin/src/views/business/information.vue b/admin/src/views/business/information.vue
index ff61e15..a286f83 100644
--- a/admin/src/views/business/information.vue
+++ b/admin/src/views/business/information.vue
@@ -73,7 +73,7 @@
         <el-table-column prop="name" label="鏍囬" align="center" min-width="100px"></el-table-column>
         <el-table-column prop="lablesName" label="鎵�灞炲垎绫�" align="center" min-width="100px"></el-table-column>
         <el-table-column prop="brandName" label="鎵�灞炲搧鐗�" align="center" min-width="100px"></el-table-column>
-        <el-table-column prop="content" label="鏁版嵁鍊�" min-width="100px">
+        <el-table-column prop="content" label="璇︽儏" min-width="100px">
           <template slot-scope="{row}">
             <div v-if="row.content">
               <el-button v-if="row.contentType == 1" title="鐐瑰嚮璺宠浆澶栭摼鏌ョ湅" type="text" @click="openUrl(row)" >鐐瑰嚮璺宠浆</el-button>
diff --git a/server/dmmall_admin/src/main/java/com/doumee/api/business/BannerController.java b/server/dmmall_admin/src/main/java/com/doumee/api/business/BannerController.java
index 7edae0c..f9487fe 100644
--- a/server/dmmall_admin/src/main/java/com/doumee/api/business/BannerController.java
+++ b/server/dmmall_admin/src/main/java/com/doumee/api/business/BannerController.java
@@ -7,6 +7,7 @@
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.model.PageData;
 import com.doumee.dao.business.model.Banner;
+import com.doumee.dao.business.model.Coupon;
 import com.doumee.service.business.BannerService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -37,7 +38,13 @@
     public ApiResponse create(@RequestBody Banner banner) {
         return ApiResponse.success(bannerService.create(banner));
     }
-
+    @ApiOperation("鏍规嵁ID淇敼鐘舵��")
+    @PostMapping("/updateStatus")
+    @RequiresPermissions("business:banner:update")
+    public ApiResponse updateStatus(@RequestBody Banner coupon) {
+        bannerService.updateStatus(coupon);
+        return ApiResponse.success(null);
+    }
     @ApiOperation("鏍规嵁ID鍒犻櫎")
     @GetMapping("/delete/{id}")
     @RequiresPermissions("business:banner:delete")
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/MemberCoupon.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/MemberCoupon.java
index 1b3922e..c573ce9 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/MemberCoupon.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/MemberCoupon.java
@@ -14,6 +14,7 @@
 import com.fasterxml.jackson.annotation.JsonFormat;
 import java.util.Date;
 import java.math.BigDecimal;
+import java.util.List;
 import java.util.Objects;
 
 /**
@@ -137,6 +138,9 @@
     @ApiModelProperty(value = "鐢ㄦ埛鎵嬫満鍙�")
     @TableField(exist = false)
     private String memberPhone;
+    @ApiModelProperty(value = "棰嗗彇鏂瑰紡闆嗗悎")
+    @TableField(exist = false)
+    private List<Integer> methodList;
 
     @ApiModelProperty(value = "浼樻儬閲戦锛堝厓锛�", example = "1")
     @ExcelColumn(name="浼樻儬閲戦锛堝厓锛�",width = 10,index = 7)
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/BannerService.java b/server/dmmall_service/src/main/java/com/doumee/service/business/BannerService.java
index aa1e1b2..e94aa4f 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/BannerService.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/BannerService.java
@@ -138,4 +138,5 @@
     PageData<ShopSimpleDTO> findRecommendShopPage(PageWrap<Banner> pageWrap);
 
 
+    void updateStatus(Banner coupon);
 }
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/BannerServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/BannerServiceImpl.java
index f20fe70..53e6716 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/BannerServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/BannerServiceImpl.java
@@ -11,10 +11,7 @@
 import com.doumee.dao.business.BannerMapper;
 import com.doumee.dao.business.LabelsMapper;
 import com.doumee.dao.business.join.BannerJoinMapper;
-import com.doumee.dao.business.model.Areas;
-import com.doumee.dao.business.model.Banner;
-import com.doumee.dao.business.model.Goods;
-import com.doumee.dao.business.model.Labels;
+import com.doumee.dao.business.model.*;
 import com.doumee.dao.web.dto.ArticleDTO;
 import com.doumee.dao.web.dto.BannerDTO;
 import com.doumee.dao.web.dto.LabelsBannerDTO;
@@ -290,6 +287,16 @@
 
 
     @Override
+    public void updateStatus(Banner coupon) {
+        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        if(coupon.getId()==null||coupon.getStatus()==null){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage());
+        }
+        coupon.setEditor(user.getId());
+        coupon.setEditDate(new Date());
+        bannerMapper.updateById(coupon);
+    }
+    @Override
     public PageData<ShopSimpleDTO> findRecommendShopPage(PageWrap<Banner> pageWrap) {
         IPage<Banner> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
         QueryWrapper<Banner> queryWrapper = new QueryWrapper<>();
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 efc0335..7a43d37 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
@@ -76,10 +76,19 @@
                 || coupon.getType()==null
                 ||coupon.getLimitPrice()==null
                 ||coupon.getPrice()==null
+                ||coupon.getUseType() ==null
                 ||coupon.getNum()==null
+                ||(coupon.getUseType() ==0 &&(
+                    coupon.getStartDate()==null
+                    ||coupon.getEndDate()==null
+                  ))
+                ||(coupon.getUseType() ==1 &&(
+                    coupon.getValidDays()==null
+                    || coupon.getValidDays()<=0
+                  ))
               /*  ||coupon.getIntegral()==null*/
-                ||coupon.getStartDate()==null
-                ||coupon.getEndDate()==null
+//                ||coupon.getStartDate()==null
+//                ||coupon.getEndDate()==null
 //                ||coupon.getValidDays()==null
 
         ){
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 3818ffc..84737ea 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
@@ -861,6 +861,7 @@
                     " INNER JOIN goods g on  g.id=gs.GOODS_ID " +
                     " where gs.STOCK<=0 and gs.ISDELETED=0 and g.id=t.id ");
         }
+
         queryWrapper.eq(!Constants.equalsInteger(pageWrap.getModel().getTabStatus(), 3), Goods::getIsdeleted, Constants.ZERO);
         queryWrapper.eq(Constants.equalsInteger(pageWrap.getModel().getTabStatus(), 3), Goods::getIsdeleted, Constants.ONE);
 
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
index a3c68ff..1e7013c 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
@@ -507,6 +507,9 @@
         queryWrapper.le(pageWrap.getModel().getEndtime()!=null,Goodsorder::getCreateDate, pageWrap.getModel().getEndtime());
         queryWrapper.eq(pageWrap.getModel().getReceiveType()!=null,Goodsorder::getReceiveType,pageWrap.getModel().getReceiveType());
         queryWrapper.eq(pageWrap.getModel().getPayOrderId()!=null,Goodsorder::getPayOrderId,pageWrap.getModel().getPayOrderId());
+        if (StringUtils.isNotBlank(pageWrap.getModel().getGoodsName())) {
+            queryWrapper.exists("select gs.id  from goodsorder_detail gs  where gs.order_id=t.id and gs.isdeleted=0 and gs.NAME like '%"+pageWrap.getModel().getGoodsName()+"%' ");
+        }
     }
 
 
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java
index 1d68d20..f51ae78 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java
@@ -332,6 +332,9 @@
             queryWrapper.eq( MemberCoupon::getStatus, Constants.ZERO);
             queryWrapper.lt( MemberCoupon::getEndDate, new Date());
         }
+
+        queryWrapper.in(pageWrap.getModel().getMethodList()!=null,MemberCoupon::getGetMethod, pageWrap.getModel().getMethodList());
+        queryWrapper.eq(pageWrap.getModel().getCouponId()!=null,MemberCoupon::getCouponId, pageWrap.getModel().getCouponId());
         queryWrapper.eq(pageWrap.getModel().getOrderCode()!=null,Goodsorder::getCode, pageWrap.getModel().getOrderCode());
         queryWrapper.eq(pageWrap.getModel().getGetMethod()!=null,MemberCoupon::getGetMethod, pageWrap.getModel().getGetMethod());
         queryWrapper.and(StringUtils.isNotBlank(pageWrap.getModel().getNikeName()),ms -> ms.like( Member::getNickname,  pageWrap.getModel().getNikeName()).

--
Gitblit v1.9.3