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