From 666a942f5f2b59209cf422bb202f6548fbbe212e Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期一, 19 一月 2026 15:58:32 +0800
Subject: [PATCH] 经销商管理
---
server/dmmall_service/src/main/java/com/doumee/dao/system/vo/ShopMoneyVO.java | 40 ++
admin/src/components/business/OperaMemberDetail.vue | 10
server/dmmall_service/src/main/java/com/doumee/core/utils/Constants.java | 1
admin/src/components/business/OperaShopInfoWindow.vue | 416 ++++++++++++++++++++++++++
server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java | 54 ++
admin/src/api/business/shopMoney.js | 14
server/dmmall_service/src/main/java/com/doumee/service/business/impl/IntegralServiceImpl.java | 26
server/dmmall_admin/src/main/java/com/doumee/api/business/IntegralController.java | 10
server/dmmall_admin/src/main/java/com/doumee/api/business/ShopController.java | 14
admin/src/components/business/OperaChangeIntegralWindow.vue | 4
admin/src/views/business/shopMoney.vue | 93 +++++
server/dmmall_service/src/main/java/com/doumee/dao/business/model/Integral.java | 19
admin/src/views/business/integral.vue | 10
admin/src/views/business/shop.vue | 12
server/dmmall_service/src/main/java/com/doumee/service/business/ShopService.java | 2
admin/src/components/business/OperaShopGoodsWindow.vue | 2
admin/src/components/business/OperaIntegralShopMoneyWindow.vue | 181 +++++++++++
17 files changed, 849 insertions(+), 59 deletions(-)
diff --git a/admin/src/api/business/shopMoney.js b/admin/src/api/business/shopMoney.js
new file mode 100644
index 0000000..cd37508
--- /dev/null
+++ b/admin/src/api/business/shopMoney.js
@@ -0,0 +1,14 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+ return request.post('/business/shop/pageMoney', data, {
+ trim: true
+ })
+}
+export function exportExcel (data) {
+ return request.post('/business/shop/exportExcelMoney', data, {
+ trim: true,
+ download: true
+ })
+}
diff --git a/admin/src/components/business/OperaChangeIntegralWindow.vue b/admin/src/components/business/OperaChangeIntegralWindow.vue
index ec60a63..8a86c23 100644
--- a/admin/src/components/business/OperaChangeIntegralWindow.vue
+++ b/admin/src/components/business/OperaChangeIntegralWindow.vue
@@ -76,7 +76,7 @@
this.$emit('success')
})
.catch(e => {
- this.$tip.apiFailed(e)
+ // this.$tip.apiFailed(e)
})
.finally(() => {
this.isWorking = false
@@ -88,7 +88,7 @@
this.visible = true
this.info = target
this.form.type = 0
- this.form.userType = 0
+ this.form.userType = userType || 0
this.form.memberId = target.id
this.form.num = null
this.form.remark = null
diff --git a/admin/src/components/business/OperaIntegralShopMoneyWindow.vue b/admin/src/components/business/OperaIntegralShopMoneyWindow.vue
new file mode 100644
index 0000000..1a0024d
--- /dev/null
+++ b/admin/src/components/business/OperaIntegralShopMoneyWindow.vue
@@ -0,0 +1,181 @@
+<template>
+ <GlobalWindow
+ :title="title"
+ width="80%"
+ :visible.sync="visible"
+ >
+ <TableLayout :permissions="['business:integral:query']">
+ <!-- 鎼滅储琛ㄥ崟 -->
+ <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+ <el-form-item label="" prop="type">
+ <el-select v-model="searchForm.type" placeholder="璇烽�夋嫨鏀舵敮绫诲瀷" @change="search" >
+ <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 label="" prop="orderCode">
+ <el-input v-model="searchForm.orderCode" placeholder="璇疯緭鍏ヨ鍗曞彿" @keypress.enter.native="search"></el-input>
+ </el-form-item>
+ <el-form-item label="" prop="objType">
+ <el-select v-model="searchForm.objType" placeholder="璇烽�夋嫨娑堣垂绫诲瀷" @change="search" >
+ <el-option :key="16" :value="16" label="璁㈠崟缁撶畻"></el-option>
+ <el-option :key="17" :value="17" label="浣欓鎻愮幇"></el-option>
+ <el-option :key="19" :value="19" label="鎻愮幇閫�鍥�"></el-option>
+ <el-option :key="20" :value="20" label="璁㈠崟缁撶畻閫�鍥�"></el-option>
+ </el-select>
+ </el-form-item>
+ <div class="date-style" style="display: inline">
+ <el-form-item label="浜ゆ槗鏃堕棿" prop="starttime" >
+ <el-date-picker
+ style="width: 160px"
+ v-model="searchForm.starttime"
+ type="datetime"
+ value-format="yyyy-MM-dd HH:mm:ss"
+ format="yyyy-MM-dd HH:mm:ss"
+ range-separator="鑷�"
+ placeholder="寮�濮嬫椂闂�"
+ ></el-date-picker>
+ </el-form-item>
+ <el-form-item label="-" label-width="10px" prop="endtime" >
+ <el-date-picker
+ style="width: 160px"
+ v-model="searchForm.endtime"
+ type="datetime"
+ value-format="yyyy-MM-dd HH:mm:ss"
+ format="yyyy-MM-dd HH:mm:ss"
+ range-separator="鑷�"
+ placeholder="鎴鏃堕棿"
+ ></el-date-picker>
+ </el-form-item>
+ </div>
+ <section>
+ <el-button type="primary" @click="search">鎼滅储</el-button>
+ <el-button type="primary" :loading="isWorking.export" v-permissions="['business:integral:exportExcel']" @click="exportExcel">瀵煎嚭</el-button>
+ <el-button @click="reset">閲嶇疆</el-button>
+ </section>
+ </el-form>
+ <!-- 琛ㄦ牸鍜屽垎椤� -->
+ <template v-slot:table-wrap>
+ <el-table
+ v-loading="isWorking.search"
+ :data="tableData.list"
+ stripe
+ border
+ >
+ <el-table-column prop="createDate" align="center" label="浜ゆ槗鏃堕棿" min-width="100px"></el-table-column>
+ <el-table-column prop="type" align="center" label="鏀舵敮绫诲瀷" min-width="100px">
+ <template slot-scope="{row}">
+ <span v-if="row.type==0" class="green">鏀跺叆</span>
+ <span v-else class="red">鏀嚭</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="num" align="center" label="閲戦锛堝厓锛�" min-width="100px"></el-table-column>
+ <el-table-column prop="totalNum" align="center" label="褰撳墠浣欓锛堝厓锛�" min-width="100px"></el-table-column>
+ <el-table-column prop="strObjType" align="center" label="浜ゆ槗绫诲瀷" min-width="100px"></el-table-column>
+ <el-table-column prop="orderCode" align="center" label="浜ゆ槗鍗曞彿" min-width="100px"></el-table-column>
+ <el-table-column prop="content" align="center" label="浜ゆ槗璇存槑" min-width="150px" show-overflow-tooltip></el-table-column>
+ </el-table>
+ <pagination
+ @size-change="handleSizeChange"
+ @current-change="handlePageChange"
+ :pagination="tableData.pagination"
+ >
+ </pagination>
+ </template>
+ </TableLayout>
+ <template v-slot:footer>
+ <el-button @click="visible=false">杩斿洖</el-button>
+ </template>
+ </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'
+export default {
+ name: 'OperaIntegralShopMoneyWindow',
+ extends: BaseTable,
+ components: { GlobalWindow, TableLayout, Pagination},
+ data () {
+ return {
+ title: '',
+ visible: false,
+ tabelHeight: null,
+ info: {},
+ // 鎼滅储
+ searchForm: {
+ memberId: null,
+ userType: 2,
+ type: '',
+ starttime: '',
+ objType: null,
+ endtime: '',
+ orderCode: ''
+ }
+ }
+ },
+
+ created () {
+ this.config({
+ module: '鐢ㄦ埛淇℃伅琛�',
+ api: '/business/integral',
+ 'field.id': 'id',
+ 'field.main': 'id'
+ })
+ },
+ methods: {
+ open (title, info) {
+ this.title = title
+ this.visible = true
+ this.info = info
+ this.searchForm.memberId = info.id
+ this.search()
+ }
+ }
+}
+</script>
+<style scoped>
+.table-pagination{
+ position: fixed !important;
+ bottom: 50px;
+}
+.header-b{
+ display: inline-block;
+ font-size: 16px;
+ font-weight: bold;
+}
+.header-blue{
+ display: inline-block;
+ font-size: 12px;
+ border: 1px solid #216EEE;
+ padding: 2px 10px;
+ margin-left: 20px;
+ color: #216EEE;
+ border-radius: 5px ;
+}
+.header-btn{
+ display: inline-block;
+ border: none;
+ padding: 2px 10px;
+ margin-left: 20px;
+}
+.info-item{
+ display: flex;
+ width: 100%;
+ margin: 15px;
+}
+.info-item-a{
+ flex: 1;
+ font-size: 14px;
+
+}
+.info-item-a span{
+ font-weight: 600;
+}
+.info-item-a .btn{
+ font-size: 12px !important;
+ cursor: pointer !important;
+}
+</style>
diff --git a/admin/src/components/business/OperaMemberDetail.vue b/admin/src/components/business/OperaMemberDetail.vue
index f7ac9a6..33dbd37 100644
--- a/admin/src/components/business/OperaMemberDetail.vue
+++ b/admin/src/components/business/OperaMemberDetail.vue
@@ -21,10 +21,10 @@
</div>
<div class="info-item"></div>
</div>
- <div style="display: block">
+ <div style="display: block;margin-bottom: 50px;">
<div class="header">
<div class="header-b">绉垎鏄庣粏</div>
- <div v-if="info.phone!=null && info.phone!=''" class="header-btn">
+ <div class="header-btn">
<el-button style="display: inline" type="primary" @click="changeIntegral">绉垎璋冩暣</el-button>
</div>
</div>
@@ -55,10 +55,12 @@
>
<el-table-column prop="type" label="鑾峰緱/鎵i櫎" align="center" min-width="150px">
<template slot-scope="{row}">
- {{ row.saleType == 1?'鎵i櫎':'鑾峰緱'}}
- </template>
+ <span v-if="row.type==0" class="green">鑾峰緱</span>
+ <span v-else class="red">鎵i櫎</span>
+ </template>
</el-table-column>
<el-table-column prop="num" label="鏁伴噺" fixed align="center" min-width="100px"> </el-table-column>
+ <el-table-column prop="totalNum" label="浣欓" fixed align="center" min-width="100px"> </el-table-column>
<el-table-column prop="strObjType" label="娑堣垂绫诲瀷" align="center" min-width="100px"></el-table-column>
<el-table-column prop="content" label="娑堣垂鍐呭" align="center" min-width="150px" show-overflow-tooltip></el-table-column>
<el-table-column prop="orderCode" label="鍏宠仈璁㈠崟" align="center" min-width="150px"></el-table-column>
diff --git a/admin/src/components/business/OperaShopGoodsWindow.vue b/admin/src/components/business/OperaShopGoodsWindow.vue
index 736be16..121181f 100644
--- a/admin/src/components/business/OperaShopGoodsWindow.vue
+++ b/admin/src/components/business/OperaShopGoodsWindow.vue
@@ -180,7 +180,7 @@
row.oldGoodsPrice = row.goodsPrice
},
blurEvent (row, curIndex, column) {
- if(this.price >= row.goodsPrice) {
+ if(this.price <= row.goodsPrice) {
this.$tip.error('渚涜揣浠蜂笉鑳戒綆浜庨攢鍞环')
row.isPriceSelected = !row.isPriceSelected
row.goodsPrice = row.oldGoodsPrice// 浠锋牸杩樺師
diff --git a/admin/src/components/business/OperaShopInfoWindow.vue b/admin/src/components/business/OperaShopInfoWindow.vue
new file mode 100644
index 0000000..4cee567
--- /dev/null
+++ b/admin/src/components/business/OperaShopInfoWindow.vue
@@ -0,0 +1,416 @@
+<template>
+ <GlobalWindow
+ :title="title"
+ width="100%"
+ :visible.sync="visible"
+ >
+ <div style="display: block;">
+ <div class="platgroup_tabs">
+ <div class="tab" :class="{ active: activeGroup === item.id }" @click="groupClick(item)"
+ v-for="(item, i) in groupList" :key="i">
+ {{ item.name }}
+ </div>
+ </div>
+ </div>
+ <template v-if="activeGroup ==0">
+ <div style="display: block;">
+ <div class="header">
+ <div class="header-b">鍩烘湰淇℃伅</div>
+ <div v-if="info.status !=1" class="header-green">姝e父</div>
+ <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">闂ㄥ簵ID锛�<span>{{info.code || ''}}</span></div>
+ <div class="info-item-a">鐧诲綍璐﹀彿锛�<span>{{info.username || ''}}</span></div>
+ </div>
+ <div class="info-item">
+ <div class="info-item-a">鎵�灞炲湴鍖猴細<span>{{info.bigAreaName || ''}}</span></div>
+ <div class="info-item-a">鐪佸競鍖猴細<span v-if="info.areas">{{(info.areas.provinceName||'') + (info.areas.cityName||'') + (info.areas.name||'')}}</span></div>
+ <div class="info-item-a">璇︾粏鍦板潃锛�<span>{{info.addr || ''}}</span></div>
+ </div>
+ <div class="info-item">
+ <div class="info-item-a">鑱旂郴浜猴細<span>{{info.realname || ''}}</span></div>
+ <div class="info-item-a">鎵嬫満鍙凤細<span>{{info.phone || ''}}</span></div>
+ <div class="info-item-a">鍒涘缓鏃堕棿锛�<span>{{info.createDate || ''}}</span></div>
+ </div>
+ <div class="info-item">
+ <div class="info-item-a">瀹氫綅淇℃伅锛�<span>缁忓害锛歿{info.longitude || '-'}} 缁村害锛歿{info.latitude|| '-'}}</span></div>
+ <div class="info-item-a">钀ヤ笟鏃堕棿锛�<span>{{info.startTime || ''}}</span></div>
+ <div class="info-item-a"></div>
+ </div>
+ <div class="info-item">
+ <div class="info-item-a">闂ㄥご鍥撅細
+ <div> <el-image v-if="info.imgurlfull" style="margin-left: 100px; width: 100px; height: 100px; border-radius: 2px;" :src="info.imgurlfull" :preview-src-list="[info.imgurlfull]"></el-image></div>
+ </div>
+ <div class="info-item-a"></div>
+ <div class="info-item-a"></div>
+ </div>
+ <div class="info-item"></div>
+ </div>
+ <div style="display: block">
+ <div class="header">
+ <div class="header-b">璧勮川淇℃伅</div>
+ </div>
+ <div class="info-item">
+ <div class="info-item-a">娉曚汉濮撳悕锛�<span>{{info.legalPersonName || ''}}</span></div>
+ <div class="info-item-a">鑱旂郴鐢佃瘽锛�<span>{{info.legalPersonPhone || ''}}</span></div>
+ <div class="info-item-a"></div>
+ </div>
+ <div class="info-item">
+ <div class="info-item-a"> 韬唤璇侊細
+ <div style="display: inline-block;width: 300px;margin-left: 100px;">
+ <el-image v-if="info.idcardImg" style="width: 100px; height: 100px; border-radius: 2px;display: inline-block;"
+ :src="info.imgFullUrl +info.idcardImg"
+ :preview-src-list="[info.imgFullUrl +info.idcardImg]"></el-image>
+ <el-image v-if="info.idcardImgBack" style="margin-left:10px;width: 100px; height: 100px; border-radius: 2px;display: inline-block;"
+ :src="info.imgFullUrl +info.idcardImgBack"
+ :preview-src-list="[info.imgFullUrl +info.idcardImgBack]"></el-image>
+ </div>
+ </div>
+ <div class="info-item-a">钀ヤ笟鎵х収锛�
+ <div style="display: inline-block;width: 300px;margin-left: 100px;">
+ <el-image v-if="info.businessImg" style="width: 100px; height: 100px; border-radius: 2px;"
+ :src="info.imgFullUrl +info.businessImg"
+ :preview-src-list="[info.imgFullUrl +info.businessImg]"></el-image>
+ </div>
+ </div>
+ <div class="info-item-a"></div>
+ </div>
+ <div class="info-item"></div>
+ </div>
+ <div style="display: block;margin-bottom: 50px;">
+ <div class="header">
+ <div class="header-b">閿�鍞ā寮忓彉鏇磋褰�</div>
+ </div>
+ <TableLayout >
+ <!-- 琛ㄦ牸鍜屽垎椤� -->
+ <template v-slot:table-wrap>
+ <el-table
+ v-loading="isWorking.search0"
+ :data="tableData0.list"
+ stripe
+ border
+ >
+ <el-table-column prop="type" label="鍙樻洿绫诲瀷" fixed align="center" min-width="150px">閿�鍞ā寮�</el-table-column>
+ <el-table-column prop="beforeInfo" label="鍙樻洿鍓�" fixed align="center" min-width="150px"> </el-table-column>
+ <el-table-column prop="afterInfo" label="鍙樻洿鍚�" fixed align="center" min-width="150px"> </el-table-column>
+ <el-table-column prop="remark" label="澶囨敞" align="center" min-width="300px"></el-table-column>
+ <el-table-column prop="createName" label="鎿嶄綔浜�" align="center" min-width="100px"></el-table-column>
+ <el-table-column prop="createDate" label="鎿嶄綔鏃堕棿" align="center" min-width="150px"></el-table-column>
+ </el-table>
+ <pagination
+ @size-change="handleSizeChange0"
+ @current-change="handlePageChange0"
+ :pagination="tableData0.pagination"
+ >
+ </pagination>
+ </template>
+ </TableLayout>
+ </div>
+ </template>
+ <template v-else-if="activeGroup == 2">
+ <div style="display: block;margin-bottom: 50px;">
+ <div class="header">
+ <div class="header-b">绉垎鏄庣粏</div>
+ <div class="header-btn">
+ <el-button style="display: inline" type="primary" @click="changeIntegral">绉垎璋冩暣</el-button>
+ </div>
+ </div>
+ <TableLayout >
+ <!-- 琛ㄦ牸鍜屽垎椤� -->
+ <template v-slot:table-wrap>
+ <div >
+ <div style="float: left; margin-bottom: 20px;width:50%;">
+ <div class="info-item">
+ <div class="info-item-a">鐜版湁绉垎锛�<span>{{info.integral || 0}}</span></div>
+ <div class="info-item-a">绱绉垎锛�<span>{{info.totalIntegral || 0}}</span></div>
+ </div>
+ </div>
+ <div style="float: right; margin-bottom: 20px;">
+ <el-select v-model="searchForm2.type" placeholder="鍏ㄩ儴" clearable @change="search" style="width: 120px;" >
+ <el-option :key="0" :value="0" label="鑾峰緱" ></el-option>
+ <el-option :key="1" :value="1" label="鎵i櫎" ></el-option>
+ </el-select>
+ <el-button @click="handlePageChange2(1)" type="鐐瑰嚮鍒锋柊" icon="el-icon-refresh" style="margin-left: 10px;" ></el-button>
+ </div>
+ </div>
+ <el-table
+ v-loading="isWorking.search2"
+ :data="tableData2.list"
+ stripe
+ border
+ >
+ <el-table-column prop="type" label="鑾峰緱/鎵i櫎" align="center" min-width="150px">
+ <template slot-scope="{row}">
+ <span v-if="row.type==0" class="green">鑾峰緱</span>
+ <span v-else class="red">鎵i櫎</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="num" label="鏁伴噺" fixed align="center" min-width="100px"> </el-table-column>
+ <el-table-column prop="totalNum" label="浣欓" fixed align="center" min-width="100px"> </el-table-column>
+ <el-table-column prop="strObjType" label="娑堣垂绫诲瀷" align="center" min-width="100px"></el-table-column>
+ <el-table-column prop="content" label="鏉ユ簮" align="center" min-width="150px" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="remark" label="澶囨敞" align="center" min-width="200px"></el-table-column>
+ <el-table-column prop="orderCode" label="鍏宠仈璁㈠崟" align="center" min-width="150px"></el-table-column>
+ <el-table-column prop="createDate" label="鍙樺姩鏃堕棿" align="center" min-width="200px"></el-table-column>
+ </el-table>
+ <pagination
+ @size-change="handleSizeChange2"
+ @current-change="handlePageChange2"
+ :pagination="tableData2.pagination"
+ >
+ </pagination>
+ </template>
+ </TableLayout>
+ </div>
+ </template>
+ <template v-slot:footer>
+ <el-button @click="visible=false">杩斿洖</el-button>
+ </template>
+ <OperaChangeShopRecordWindow ref="OperaChangeShopRecordWindow"/>
+ <OperaChangeIntegralWindow ref="OperaChangeIntegralWindow" @success="successBiz"/>
+ </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 OperaChangeShopRecordWindow from '@/components/business/OperaChangeShopRecordWindow'
+import OperaChangeIntegralWindow from '@/components/business/OperaChangeIntegralWindow'
+import { shopDetail as detail } from '@/api/business/shop'
+import { fetchList as actionList } from '@/api/business/userAction'
+import { fetchList as integralList } from '@/api/business/integral'
+export default {
+ name: 'OperaShopInfoWindow',
+ extends: BaseTable,
+ components: { GlobalWindow, TableLayout, Pagination, OperaChangeShopRecordWindow, OperaChangeIntegralWindow },
+ data () {
+ return {
+ title: '',
+ visible: false,
+ tabelHeight: null,
+ activeGroup: -1,
+ groupList: [{ id: 0, name: '鍩烘湰淇℃伅' }, { id: 1, name: '閿�鍞俊鎭�' }, { id: 2, name: '绉垎淇℃伅' }],
+ info: {},
+ // 鎼滅储
+ searchForm2: {
+ memberId: '',
+ userType: 1,
+ type: null
+ },
+ isWorking: {
+ search0: false,
+ search1: false,
+ search2: false
+ },
+ tableData0: {
+ // 宸查�変腑鐨勬暟鎹�
+ selectedRows: [],
+ // 鎺掑簭鐨勫瓧娈�
+ sorts: [],
+ // 褰撳墠椤垫暟鎹�
+ list: [],
+ // 鍒嗛〉
+ pagination: {
+ pageIndex: 1,
+ pageSize: 10,
+ total: 0
+ }
+ },
+ tableData2: {
+ // 宸查�変腑鐨勬暟鎹�
+ selectedRows: [],
+ // 鎺掑簭鐨勫瓧娈�
+ sorts: [],
+ // 褰撳墠椤垫暟鎹�
+ list: [],
+ // 鍒嗛〉
+ pagination: {
+ pageIndex: 1,
+ pageSize: 10,
+ total: 0
+ }
+ }
+ }
+ },
+
+ created () {
+ this.config({
+ module: '鐢ㄦ埛淇℃伅琛�',
+ api: '/business/integral',
+ 'field.id': 'id',
+ 'field.main': 'id'
+ })
+ },
+ methods: {
+ groupClick(item){
+ this.activeGroup = item.id
+ },
+ successBiz () {
+ this.handlePageChange2(1)
+ this.loadInfo()
+ this.$emit('success')
+ },
+ loadInfo () {
+ detail(this.info.id).then(res => {
+ this.info = res || this.info
+ })
+ },
+ showChangeRecord () {
+ if (this.info) {
+ this.$refs.OperaChangeShopRecordWindow.open('瀹㈡埛缁忛攢鍟嗗彉鏇磋褰�', this.info)
+ }
+ },
+ changeIntegral () {
+ if (this.info) {
+ this.$refs.OperaChangeIntegralWindow.open('缁忛攢鍟嗙Н鍒嗚皟鏁�', this.info, 1)
+ }
+ },
+ open (title, info) {
+ this.title = title
+ this.visible = true
+ this.info = info
+ this.activeGroup = 0
+ this.searchForm2.memberId = info.id
+ if (this.info.imgurl) {
+ this.info.imgurlfull = this.info.imgFullUrl + this.info.imgurl
+ }
+ this.handlePageChange0(1)
+ this.handlePageChange2(1)
+ },
+ handleSizeChange0 (pageSize) {
+ this.tableData0.pagination.pageSize = pageSize
+ this.search0()
+ },
+ // 椤电爜鍙樻洿澶勭悊
+ handlePageChange0 (pageIndex) {
+ this.tableData0.pagination.pageIndex = pageIndex || this.tableData0.pagination.pageIndex
+ this.isWorking.search0 = true
+ actionList({
+ page: this.tableData0.pagination.pageIndex,
+ capacity: this.tableData0.pagination.pageSize,
+ model: { type: 1, memberId: this.info.id }, // 閿�鍞ā寮忓彉鏇�
+ sorts: this.tableData0.sorts
+ })
+ .then(data => {
+ this.tableData0.list = data.records
+ this.tableData0.pagination.total = data.total
+ })
+ .catch(e => {
+ this.$tip.apiFailed(e)
+ })
+ .finally(() => {
+ this.isWorking.search0 = false
+ })
+ },
+ handleSizeChange2 (pageSize) {
+ this.tableData0.pagination.pageSize = pageSize
+ this.search0()
+ },
+ // 椤电爜鍙樻洿澶勭悊
+ handlePageChange2 (pageIndex) {
+ this.tableData2.pagination.pageIndex = pageIndex || this.tableData2.pagination.pageIndex
+ this.isWorking.search2 = true
+ integralList({
+ page: this.tableData0.pagination.pageIndex,
+ capacity: this.tableData0.pagination.pageSize,
+ model: this.searchForm2, // 閿�鍞ā寮忓彉鏇�
+ sorts: this.tableData2.sorts
+ })
+ .then(data => {
+ this.tableData2.list = data.records
+ this.tableData2.pagination.total = data.total
+ })
+ .catch(e => {
+ this.$tip.apiFailed(e)
+ })
+ .finally(() => {
+ this.isWorking.search2 = false
+ })
+ }
+ }
+}
+</script>
+<style lang="scss" scoped>
+.platgroup_tabs {
+ flex: 1;
+ display: flex;
+ border-bottom: 1px solid #dfe2e8;
+ margin-bottom: 30px;
+ .tab {
+ color: #666666;
+ margin-right: 40px;
+ cursor: pointer;
+ padding-bottom: 10px;
+ border-bottom: 2px solid #fff;
+ }
+
+ .active {
+ font-weight: 500;
+ font-size: 15px;
+ color: #216EEE;
+ border-bottom: 2px solid #216EEE;
+ }
+}
+.table-pagination{
+ position: fixed !important;
+ bottom: 50px;
+}
+.header-b{
+ display: inline-block;
+ font-size: 16px;
+ font-weight: bold;
+}
+.header-green{
+ display: inline-block;
+ font-size: 12px;
+ border: 1px solid green;
+ padding: 2px 10px;
+ margin-left: 20px;
+ color: green;
+ border-radius: 5px ;
+}
+.header-red{
+ display: inline-block;
+ font-size: 12px;
+ border: 1px solid red;
+ padding: 2px 10px;
+ margin-left: 20px;
+ color: red;
+ border-radius: 5px ;
+}
+.header-blue{
+ display: inline-block;
+ font-size: 12px;
+ border: 1px solid #216EEE;
+ padding: 2px 10px;
+ margin-left: 20px;
+ color: #216EEE;
+ border-radius: 5px ;
+}
+.header-btn{
+ display: inline-block;
+ border: none;
+ padding: 2px 10px;
+ margin-left: 20px;
+}
+.info-item{
+ display: flex;
+ width: 100%;
+ margin: 15px;
+}
+.info-item-a{
+ flex: 1;
+ font-size: 14px;
+
+}
+.info-item-a span{
+ font-weight: 600;
+}
+.info-item-a .btn{
+ font-size: 12px !important;
+ cursor: pointer !important;
+}
+</style>
diff --git a/admin/src/views/business/integral.vue b/admin/src/views/business/integral.vue
index 012a1a3..090e6cd 100644
--- a/admin/src/views/business/integral.vue
+++ b/admin/src/views/business/integral.vue
@@ -52,7 +52,9 @@
</div>
<section>
<el-button type="primary" @click="search">鎼滅储</el-button>
+<!--
<el-button type="primary" :loading="isWorking.export" v-permissions="['business:integral:exportExcel']" @click="exportExcel">瀵煎嚭</el-button>
+-->
<el-button @click="reset">閲嶇疆</el-button>
</section>
</el-form>
@@ -64,19 +66,20 @@
stripe
border
>
- <el-table-column prop="remark" label="娴佹按鍙�" align="center" min-width="100px"></el-table-column>
+<!-- <el-table-column prop="remark" label="娴佹按鍙�" align="center" min-width="100px"></el-table-column>-->
<el-table-column prop="nickName" label="鐢ㄦ埛" align="center" min-width="100px"> </el-table-column>
<el-table-column prop="phone" align="center" label="鎵嬫満鍙�" min-width="100px"></el-table-column>
<el-table-column prop="type" align="center" label="鏀舵敮绫诲瀷" min-width="100px">
<template slot-scope="{row}">
- {{ row.type==0?'鏀跺叆':'鏀嚭' }}
+ <span v-if="row.type==0" class="green">鑾峰緱</span>
+ <span v-else class="red">鎵i櫎</span>
</template>
</el-table-column>
<el-table-column prop="num" align="center" label="鏁伴噺" min-width="100px"></el-table-column>
<el-table-column prop="totalNum" align="center" label="褰撳墠浣欓" min-width="100px"></el-table-column>
<el-table-column prop="strObjType" align="center" label="娑堣垂绫诲瀷" min-width="100px"></el-table-column>
+ <el-table-column prop="content" align="center" label="鍙樺姩鍐呭" min-width="150px" show-overflow-tooltip></el-table-column>
<el-table-column prop="orderCode" align="center" label="浜ゆ槗鍗曞彿" min-width="100px"></el-table-column>
- <el-table-column prop="content" align="center" label="鏀舵敮璇存槑" min-width="100px"></el-table-column>
<el-table-column prop="createDate" align="center" label="鍙樺姩鏃堕棿" min-width="100px"></el-table-column>
</el-table>
<pagination
@@ -106,6 +109,7 @@
userType: 0,
type: '',
starttime: '',
+ objType: null,
endtime: '',
orderCode: ''
}
diff --git a/admin/src/views/business/shop.vue b/admin/src/views/business/shop.vue
index 6dc4b7e..3f77ae9 100644
--- a/admin/src/views/business/shop.vue
+++ b/admin/src/views/business/shop.vue
@@ -30,7 +30,7 @@
<!-- 琛ㄦ牸鍜屽垎椤� -->
<template v-slot:table-wrap>
<ul class="toolbar" v-permissions="['business:shop:create', 'business:shop:delete']">
- <li><el-button type="primary" @click="$refs.operaShopWindow.open('鏂板缓搴楅摵')" icon="el-icon-plus" v-permissions="['business:shop:create']">鏂板缓</el-button></li>
+ <li><el-button type="primary" @click="$refs.operaShopWindow.open('鏂板缓缁忛攢鍟�')" icon="el-icon-plus" v-permissions="['business:shop:create']">鏂板缓</el-button></li>
<!-- <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:shop:delete']">鍒犻櫎</el-button></li> -->
</ul>
<el-table
@@ -114,7 +114,7 @@
</template>
<!-- 鏂板缓/淇敼 -->
<OperaShopWindow ref="operaShopWindow" @success="handlePageChange"/>
- <OperaShopDetailWindow ref="operaShopDetailWindow" />
+ <OperaShopInfoWindow ref="OperaShopInfoWindow" />
<ResetPwdShopWindow ref="resetPwdWindow"/>
</TableLayout>
</template>
@@ -124,13 +124,13 @@
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaShopWindow from '@/components/business/OperaShopWindow'
-import OperaShopDetailWindow from '@/components/business/OperaShopDetailWindow'
+import OperaShopInfoWindow from '@/components/business/OperaShopInfoWindow'
import { resetPwd, updateIsRecById } from '@/api/business/shop'
import ResetPwdShopWindow from '@/components/business/ResetPwdShopWindow'
export default {
name: 'Shop',
extends: BaseTable,
- components: { TableLayout, Pagination, OperaShopWindow, OperaShopDetailWindow, ResetPwdShopWindow },
+ components: { TableLayout, Pagination, OperaShopWindow, OperaShopInfoWindow, ResetPwdShopWindow },
data () {
return {
@@ -146,7 +146,7 @@
},
created () {
this.config({
- module: '搴楅摵鍩烘湰淇℃伅琛�',
+ module: '缁忛攢鍟嗗熀鏈俊鎭〃',
api: '/business/shop',
'field.id': 'id',
'field.main': 'id'
@@ -184,7 +184,7 @@
})
},
showDetail (row) {
- this.$refs.operaShopDetailWindow.open('搴楅摵璇︽儏', row)
+ this.$refs.OperaShopInfoWindow.open('缁忛攢鍟嗚鎯�', row)
}
}
}
diff --git a/admin/src/views/business/shopMoney.vue b/admin/src/views/business/shopMoney.vue
new file mode 100644
index 0000000..d755f8b
--- /dev/null
+++ b/admin/src/views/business/shopMoney.vue
@@ -0,0 +1,93 @@
+<template>
+ <TableLayout :permissions="['business:integral:query']">
+ <!-- 鎼滅储琛ㄥ崟 -->
+ <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+ <el-form-item label="缁忛攢鍟嗗悕绉�" prop="name">
+ <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ョ粡閿�鍟嗗悕绉�" @keypress.enter.native="search"></el-input>
+ </el-form-item>
+ <el-form-item label="闂ㄥ簵ID" prop="code">
+ <el-input v-model="searchForm.code" placeholder="璇疯緭鍏ラ棬搴桰D" @keypress.enter.native="search"></el-input>
+ </el-form-item>
+ <section>
+ <el-button type="primary" @click="search">鎼滅储</el-button>
+ <el-button type="primary" :loading="isWorking.export" v-permissions="['business:shop:exportExcel']" @click="exportExcel">瀵煎嚭</el-button>
+ <el-button @click="reset">閲嶇疆</el-button>
+ </section>
+ </el-form>
+ <!-- 琛ㄦ牸鍜屽垎椤� -->
+ <template v-slot:table-wrap>
+ <el-table
+ v-loading="isWorking.search"
+ :data="tableData.list"
+ stripe
+ border
+ >
+ <el-table-column prop="name" label="缁忛攢鍟嗗悕绉�" align="center" min-width="150px"> </el-table-column>
+ <el-table-column prop="code" label="闂ㄥ簵ID" align="center" min-width="150px"> </el-table-column>
+ <el-table-column prop="amount" align="center" label="璐︽埛浣欓锛堝厓锛�" min-width="150px">
+ <template slot-scope="{row}">{{row.amount || 0}}</template>
+ </el-table-column>
+ <el-table-column prop="jiesuanIng" align="center" label="寰呯粨绠楋紙鍏冿級" min-width="150px">
+ <template slot-scope="{row}">{{row.jiesuanIng || 0}}</template>
+ </el-table-column>
+ <el-table-column prop="withdrawIng" align="center" label="鎻愮幇涓紙鍏冿級" min-width="150px">
+ <template slot-scope="{row}">{{row.withdrawIng || 0}}</template>
+ </el-table-column>
+ <el-table-column prop="withdrawTotal" align="center" label="绱鎻愮幇锛堝厓锛�" min-width="150px">
+ <template slot-scope="{row}">{{row.withdrawTotal || 0}}</template>
+ </el-table-column>
+ <el-table-column prop="withdrawDate" align="center" label="鏈�杩戞彁鐜版椂闂�" min-width="150px"></el-table-column>
+ <el-table-column
+ label="鎿嶄綔"
+ min-width="100"
+ fixed="right"
+ align="center"
+ >
+ <template slot-scope="{row}">
+ <el-button type="text" @click="$refs.OperaIntegralShopMoneyWindow.open('鏌ヨ缁忛攢鍟嗕綑棰濇槑缁�', row)" icon="el-icon-edit" >鏌ヨ鏄庣粏</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <pagination
+ @size-change="handleSizeChange"
+ @current-change="handlePageChange"
+ :pagination="tableData.pagination"
+ >
+ </pagination>
+ </template>
+ <OperaIntegralShopMoneyWindow ref="OperaIntegralShopMoneyWindow"/>
+ </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaIntegralShopMoneyWindow from '@/components/business/OperaIntegralShopMoneyWindow'
+export default {
+ name: 'Integral',
+ extends: BaseTable,
+ components: { TableLayout, Pagination ,OperaIntegralShopMoneyWindow},
+ data () {
+ return {
+ createDate: [],
+ // 鎼滅储
+ searchForm: {
+ code: '',
+ name: ''
+ }
+ }
+ },
+ created () {
+ this.config({
+ module: '缁忛攢鍟嗚处鎴锋槑缁�',
+ api: '/business/shopMoney',
+ 'field.id': 'id',
+ 'field.main': 'id'
+ })
+ this.search()
+ },
+ methods: {
+ }
+}
+</script>
diff --git a/server/dmmall_admin/src/main/java/com/doumee/api/business/IntegralController.java b/server/dmmall_admin/src/main/java/com/doumee/api/business/IntegralController.java
index 3d8ebd4..aef8815 100644
--- a/server/dmmall_admin/src/main/java/com/doumee/api/business/IntegralController.java
+++ b/server/dmmall_admin/src/main/java/com/doumee/api/business/IntegralController.java
@@ -88,15 +88,7 @@
@RequiresPermissions("business:integral:exportExcel")
public void exportExcel (@RequestBody PageWrap<Integral> pageWrap, HttpServletResponse response) throws Exception {
List<Integral> list=integralService.findPage(pageWrap).getRecords();
- for(Integral model:list){
- if(Constants.equalsInteger(model.getType(),Constants.ZERO)){
- model.setStrType("鏀跺叆");
- }else if(Constants.equalsInteger(model.getType(),Constants.ONE)){
- model.setStrType("鏀嚭");
- }
- model.setStrObjType(Constants.IntegralObjType.getName(model.getObjType()));
- }
- ExcelExporter.build(Integral.class).export(list, "鐢ㄦ埛绉垎鏄庣粏"+ DateUtil.getNowLongTime(), response);
+ ExcelExporter.build(Integral.class).export(list, "缁忛攢鍟嗕綑棰濇槑缁�"+ DateUtil.getNowLongTime(), response);
}
@ApiOperation("鏍规嵁ID鏌ヨ")
diff --git a/server/dmmall_admin/src/main/java/com/doumee/api/business/ShopController.java b/server/dmmall_admin/src/main/java/com/doumee/api/business/ShopController.java
index 758da45..90d1978 100644
--- a/server/dmmall_admin/src/main/java/com/doumee/api/business/ShopController.java
+++ b/server/dmmall_admin/src/main/java/com/doumee/api/business/ShopController.java
@@ -8,6 +8,7 @@
import com.doumee.core.model.PageWrap;
import com.doumee.core.model.PageData;
import com.doumee.dao.business.model.Shop;
+import com.doumee.dao.system.vo.ShopMoneyVO;
import com.doumee.dao.web.dto.ResetSystemUserPwdDTO;
import com.doumee.service.business.ShopService;
import io.swagger.annotations.Api;
@@ -94,6 +95,13 @@
return ApiResponse.success(shopService.findPage(pageWrap));
}
+ @ApiOperation("鍒嗛〉鏌ヨ璐﹀彿鏄庣粏")
+ @PostMapping("/pageMoney")
+ @RequiresPermissions("business:shop:query")
+ public ApiResponse<PageData<ShopMoneyVO>> findPageMoney (@RequestBody PageWrap<Shop> pageWrap) {
+ return ApiResponse.success(shopService.findPageMoney(pageWrap));
+ }
+
@ApiOperation("鏌ヨ鎵�鏈夋暟鎹�")
@PostMapping("/findAll")
@RequiresPermissions("business:shop:query")
@@ -108,6 +116,12 @@
public void exportExcel (@RequestBody PageWrap<Shop> pageWrap, HttpServletResponse response) {
ExcelExporter.build(Shop.class).export(shopService.findPage(pageWrap).getRecords(), "搴楅摵鍩烘湰淇℃伅琛�", response);
}
+ @ApiOperation("瀵煎嚭Excel")
+ @PostMapping("/exportExcelMoney")
+ @RequiresPermissions("business:shop:exportExcel")
+ public void exportExcelMoney (@RequestBody PageWrap<Shop> pageWrap, HttpServletResponse response) {
+ ExcelExporter.build(ShopMoneyVO.class).export(shopService.findPageMoney(pageWrap).getRecords(), "缁忛攢鍟嗚处鍙锋槑缁�", response);
+ }
@ApiOperation("鏍规嵁ID鏌ヨ")
@GetMapping("/{id}")
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 d7b26b3..844909d 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
@@ -1176,6 +1176,7 @@
public enum UserActionType {
CHANGE_SHOP(0, "缁忛攢鍟嗘洿鎹�","鐢便��${param1}銆戜簬銆�${param2}銆戯紝杩涜銆愮粡閿�鍟嗘洿鎹€��" ),
+ CHANGE_SALETYPE(1, "缁忛攢鍟嗘洿鎹㈤攢鍞ā寮�","鐢便��${param1}銆戜簬銆�${param2}銆戯紝杩涜銆愰攢鍞ā寮忓彉鏇淬��" ),
;
// 鎴愬憳鍙橀噺
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Integral.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Integral.java
index 868c4b0..91b9fc5 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Integral.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Integral.java
@@ -31,7 +31,7 @@
private Integer creator;
@ApiModelProperty(value = "鍒涘缓鏃堕棿")
- @ExcelColumn(name="鍒涘缓鏃堕棿" ,index = 8,width = 10)
+ @ExcelColumn(name="浜ゆ槗鏃堕棿" ,index =1,width = 10)
private Date createDate;
@ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
@@ -54,7 +54,7 @@
private String title;
@ApiModelProperty(value = "鍐呭")
- @ExcelColumn(name="鏀舵敮璇存槑",index =7,width = 10)
+ @ExcelColumn(name="浜ゆ槗璇存槑",index =7,width = 10)
private String content;
@ApiModelProperty(value = "瀵硅薄缂栫爜 0骞冲彴娉ㄥ唽 1绛惧埌 2鍒嗕韩閭�璇� 3閭�璇锋柊鐢ㄦ埛 4鍏戞崲鍟嗗搧", example = "1")
@@ -64,24 +64,25 @@
private Integer objType;
@ApiModelProperty(value = "鏀舵敮绫诲瀷 0鏀跺叆 1鏀嚭", example = "1")
+ @ExcelColumn(name="鏀舵敮绫诲瀷",index =2,width = 10,valueMapping = "0=鏀跺叆;1=鏀嚭;")
private Integer type;
@ApiModelProperty(value = "鏁伴噺", example = "1")
- @ExcelColumn(name="鏀舵敮閲戦",index =4,width = 10)
+ @ExcelColumn(name="鏀舵敮閲戦(鍏�)",index =3,width = 10)
private BigDecimal num;
@ApiModelProperty(value = "褰撳墠浣欓", example = "1")
- @ExcelColumn(name="褰撳墠浣欓",index =5,width = 10)
+ @ExcelColumn(name="褰撳墠浣欓(鍏�)",index =4,width = 10)
private BigDecimal totalNum;
@ApiModelProperty(value = "浜ゆ槗鍗曞彿")
+ @ExcelColumn(name="鍏宠仈璁㈠崟鍙�",index =6,width = 10)
private String orderCode;
@ApiModelProperty(value = "鐢ㄦ埛鏁版嵁绫诲瀷锛�0=娑堣垂鑰呯Н鍒嗭紱1=缁忛攢鍟嗙Н鍒嗭紱2=缁忛攢鍟嗙粨绠楅噾棰濓紱")
private Integer userType;
@ApiModelProperty(value = "鐢ㄦ埛鏄电О")
- @ExcelColumn(name="鐢ㄦ埛",index =1,width = 10)
@TableField(exist = false)
private String nickName;
@@ -91,13 +92,7 @@
@ApiModelProperty(value = "鐢ㄦ埛鎵嬫満鍙�")
@TableField(exist = false)
- @ExcelColumn(name="鎵嬫満鍙�",index =2,width = 10)
private String phone;
-
- @TableField(exist = false)
- @ExcelColumn(name="鏀舵敮绫诲瀷",index =3,width = 10)
- private String strType;
-
@ApiModelProperty(value = "寮�濮嬫椂闂� ")
@TableField(exist = false)
@@ -108,7 +103,7 @@
private Date endtime;
@TableField(exist = false)
- @ExcelColumn(name="绫诲瀷",index =6,width = 10)
+ @ExcelColumn(name="浜ゆ槗绫诲瀷",index =5,width = 10)
private String strObjType;
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/system/vo/ShopMoneyVO.java b/server/dmmall_service/src/main/java/com/doumee/dao/system/vo/ShopMoneyVO.java
new file mode 100644
index 0000000..5eee4ba
--- /dev/null
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/system/vo/ShopMoneyVO.java
@@ -0,0 +1,40 @@
+package com.doumee.dao.system.vo;
+
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@ApiModel("缁忛攢鍟嗚处鎴锋槑缁嗗璞�")
+public class ShopMoneyVO {
+
+ @ApiModelProperty(value = "涓婚敭", example = "1")
+ private Integer id;
+
+ @ApiModelProperty(value = "搴楅摵鍚嶇О")
+ @ExcelColumn(name="缁忛攢鍟嗗悕绉�",width = 10,index = 1)
+ private String name;
+ @ApiModelProperty(value = "闂ㄥ簵ID")
+ @ExcelColumn(name="闂ㄥ簵ID",width = 10,index = 2)
+ private String code;
+ @ApiModelProperty(value = "鍙彁鐜伴噾棰�")
+ @ExcelColumn(name="璐﹀彿浣欓锛堝厓锛�",width = 10,index = 3)
+ private BigDecimal amount;
+ @ApiModelProperty(value = "缁撶畻涓�")
+ @ExcelColumn(name="缁撶畻涓紙鍏冿級",width = 10,index = 4)
+ private BigDecimal jiesuanIng;
+ @ApiModelProperty(value = "鎻愮幇涓噾棰�")
+ @ExcelColumn(name="鎻愮幇涓紙鍏冿級",width = 10,index = 5)
+ private BigDecimal withdrawIng;
+ @ApiModelProperty(value = "绱鎻愮幇閲戦")
+ @ExcelColumn(name="绱鎻愮幇锛堝厓锛�",width = 10,index =6 )
+ private BigDecimal withdrawTotal;
+ @ApiModelProperty(value = "鏈�杩戞彁鐜版椂闂�")
+ @ExcelColumn(name="鏈�杩戞彁鐜版椂闂�",width = 10,index =7,dateFormat = "yyyy-MM-dd HH:mm:ss")
+ private Date withdrawDate;
+}
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/ShopService.java b/server/dmmall_service/src/main/java/com/doumee/service/business/ShopService.java
index 9aa503c..21c700c 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/ShopService.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/ShopService.java
@@ -5,6 +5,7 @@
import com.doumee.dao.business.model.Integral;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.model.Shop;
+import com.doumee.dao.system.vo.ShopMoneyVO;
import com.doumee.dao.web.dto.MemberDTO;
import com.doumee.dao.web.dto.ResetSystemUserPwdDTO;
import com.doumee.dao.web.dto.ShopLoginDTO;
@@ -214,4 +215,5 @@
String setGoodsPrice(Shop shop);
+ PageData<ShopMoneyVO> findPageMoney(PageWrap<Shop> pageWrap);
}
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/IntegralServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/IntegralServiceImpl.java
index 0ba089a..a235dde 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/IntegralServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/IntegralServiceImpl.java
@@ -317,14 +317,14 @@
Utils.MP.blankToNull(pageWrap.getModel());
queryWrapper.selectAll(Integral.class);
- queryWrapper.selectAs(Member::getNickname, Fund::getNickName);
- queryWrapper.selectAs(Member::getImgurl, Fund::getImgurl);
- queryWrapper.selectAs(Member::getPhone, Fund::getPhone);
-
+ queryWrapper.selectAs(Member::getNickname, Integral::getNickName);
+ queryWrapper.selectAs(Member::getImgurl, Integral::getImgurl);
+ queryWrapper.selectAs(Member::getPhone, Integral::getPhone);
queryWrapper.leftJoin(Member.class, Member::getId, Integral::getMemberId);
-
queryWrapper.eq(pageWrap.getModel().getMemberId() != null, Integral::getMemberId, pageWrap.getModel().getMemberId());
queryWrapper.eq(pageWrap.getModel().getType() != null, Integral::getType, pageWrap.getModel().getType());
+ queryWrapper.eq(pageWrap.getModel().getUserType() != null, Integral::getUserType, pageWrap.getModel().getUserType());
+ queryWrapper.eq( pageWrap.getModel().getObjType() !=null, Integral::getObjType, pageWrap.getModel().getObjType());
queryWrapper.and(StringUtils.isNotBlank(pageWrap.getModel().getNickName()), ms -> ms.like(Member::getNickname, pageWrap.getModel().getNickName())
.or().like(Member::getPhone, pageWrap.getModel().getNickName())
);
@@ -416,7 +416,7 @@
if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(result.getRecords())){
for (Integral integral:result.getRecords()) {
- integral.setStrType(Constants.IntegralObjType.getName(integral.getObjType()));
+ integral.setStrObjType(Constants.IntegralObjType.getName(integral.getObjType()));
}
}
return PageData.from(result);
@@ -436,7 +436,7 @@
Date date = new Date();
Integral integral = new Integral();
Constants.IntegralObjType integralObjType =null;
- if(Constants.equalsInteger(param.getUserType(), Constants.ZERO)){
+ if(Constants.equalsInteger(param.getUserType(), Constants.ZERO)){//鐢ㄦ埛璐﹀彿
MPJLambdaWrapper<Member> queryWrapper =new MPJLambdaWrapper<>();
queryWrapper.selectAll(Member.class);
queryWrapper.selectAs(Shop::getName,Member::getShopName);
@@ -463,8 +463,9 @@
.setSql(param.getType() == 1,"integral = ifnull(integral,0)-" + param.getNum()));
integralObjType = param.getType()==0?Constants.IntegralObjType.SYSTEM_RECHARGE:Constants.IntegralObjType.SYSTEM_DEDUCT;
- integral.setTotalNum(param.getType() == 0? Constants.formatBigdecimal(model.getIntegral()).add(integral.getNum()):Constants.formatBigdecimal(model.getIntegral()).subtract(integral.getNum()));
- }else{
+ integral.setTotalNum(param.getType() == 0? Constants.formatBigdecimal(model.getIntegral()).add(param.getNum()):Constants.formatBigdecimal(model.getIntegral()).subtract(param.getNum()));
+ integral.setUserType(Constants.ZERO);
+ }else{//缁忛攢鍟嗚处鎴�
Shop model = shopMapper.selectById(param.getMemberId());
if(model == null ||Constants.equalsObject(model.getIsdeleted(),Constants.ONE)){
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"缁忛攢鍟嗕俊鎭煡璇㈡棤鏁堬紒");
@@ -483,9 +484,9 @@
.setSql(param.getType() == 0,"total_integral = ifnull(total_integral,0)+" + num)//绱澧炲姞
.setSql(param.getType() == 0,"integral = ifnull(integral,0)+" + param.getNum())
.setSql(param.getType() == 1,"integral = ifnull(integral,0)-" + param.getNum()));
-
- integralObjType = param.getType()==0?Constants.IntegralObjType.SHOP_SYSTEM_RECHARGE:Constants.IntegralObjType.SHOP_SYSTEM_DEDUCT;
- integral.setTotalNum(param.getType() == 0? Constants.formatBigdecimal(model.getIntegral()).add(integral.getNum()):Constants.formatBigdecimal(model.getIntegral()).subtract(integral.getNum()));
+ integralObjType = param.getType()==0?Constants.IntegralObjType.SHOP_SYSTEM_RECHARGE:Constants.IntegralObjType.SHOP_SYSTEM_DEDUCT;
+ integral.setTotalNum(param.getType() == 0? Constants.formatBigdecimal(model.getIntegral()).add(param.getNum()):Constants.formatBigdecimal(model.getIntegral()).subtract(param.getNum()));
+ integral.setUserType(Constants.ONE);
}
integral.setCreateDate(new Date());
integral.setCreator(user.getId());
@@ -499,7 +500,6 @@
integral.setType(param.getType());
integral.setRemark(param.getRemark());
integral.setOrderCode(null);
- integral.setUserType(Constants.ZERO);
integralMapper.insert(integral);
}
@Override
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java
index 895268e..d468a1c 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java
@@ -1,6 +1,6 @@
package com.doumee.service.business.impl;
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.alibaba.fastjson.JSONObject;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.config.Jwt.JwtPayLoad;
import com.doumee.config.Jwt.JwtTokenUtil;
@@ -11,11 +11,11 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.*;
import com.doumee.dao.business.join.GoodsorderJoinMapper;
import com.doumee.dao.business.join.MemberJoinMapper;
-import com.doumee.dao.business.*;
import com.doumee.dao.business.join.ProductLabelJoinMapper;
import com.doumee.dao.business.model.*;
import com.doumee.dao.business.model.Labels;
@@ -24,6 +24,7 @@
import com.doumee.dao.business.model.ShopScan;
import com.doumee.dao.system.SystemUserMapper;
import com.doumee.dao.system.model.SystemUser;
+import com.doumee.dao.system.vo.ShopMoneyVO;
import com.doumee.dao.web.dto.*;
import com.doumee.dao.web.dto.shop.*;
import com.doumee.dao.web.request.MyCustomerRequest;
@@ -39,12 +40,9 @@
import org.apache.shiro.SecurityUtils;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.lang3.StringUtils;
-import org.apache.xpath.operations.Bool;
-import org.checkerframework.checker.units.qual.C;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationEventPublisher;
-import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
@@ -64,6 +62,9 @@
@Autowired
private ShopMapper shopMapper;
+ @Autowired
+ private UserActionMapper userActionMapper;
+
@Autowired
private GoodsMapper goodsMapper;
@Autowired
@@ -222,15 +223,33 @@
}
@Override
+ @Transactional
public void updateById(Shop shop) {
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
if(shop.getId()==null ){
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage());
}
isCreateParamValid(shop,user);
+ Shop model = shopMapper.selectById(shop.getId());
+ if(model.getId()==null || Constants.equalsInteger(model.getIsdeleted(),Constants.ONE) ){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
+ }
shop.setEditor(user.getId());
shop.setEditDate(new Date());
+
shopMapper.updateById(shop);
+ if(shop.getSaleType() !=null && !Constants.equalsInteger(shop.getSaleType(),model.getSaleType())){
+ //濡傛灉閿�鍞ā寮忓彂鐢熺紪鐮侊紝璁板綍鍙樻洿璁板綍
+ //鏇存崲鏃ュ織璁板綍
+ UserActionServiceImpl.saveUserActionBiz(user,shop.getId(),
+ Constants.UserActionType.CHANGE_SALETYPE,
+ userActionMapper,
+ shop.getEditDate(),
+ new String[]{user.getUsername(), DateUtil.getPlusTime2(shop.getEditDate())},
+ JSONObject.toJSONString(shop) ,
+ Constants.equalsInteger(model.getSaleType(),Constants.ONE)?"鑷敱閲囪喘":"骞冲彴閾鸿揣",
+ Constants.equalsInteger(shop.getSaleType(),Constants.ONE)?"鑷敱閲囪喘":"骞冲彴閾鸿揣");
+ }
}
@@ -320,9 +339,7 @@
Shop shop= shopJoinMapper.selectJoinOne(Shop.class,queryWrapper);
String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode()
+ systemDictDataBiz.queryByCode(Constants.OSS, Constants.SHOP_FILE).getCode();
- if(Objects.nonNull(shop)&&StringUtils.isNotBlank(shop.getImgurl())){
- shop.setImgFullUrl(path+shop.getImgurl());
- }
+ shop.setImgFullUrl(path);
shop.setAreas(AreasServiceImpl.getAddressByAreaId(shop.getAreaId()));
if(shop.getLatitude()!=null && shop.getLongitude()!=null){
shop.setLocationInfo(shop.getLatitude().doubleValue()+","+shop.getLongitude().doubleValue());
@@ -392,6 +409,25 @@
}
}
+ return PageData.from(result );
+ }
+ @Override
+ public PageData<ShopMoneyVO> findPageMoney(PageWrap<Shop> pageWrap){
+ IPage<Shop> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+ MPJLambdaWrapper<Shop> queryWrapper = new MPJLambdaWrapper<>();
+ Utils.MP.blankToNull(pageWrap.getModel());
+ queryWrapper
+ .selectAll(Shop.class)
+ .select("(select sum(price) from goodsorder g where g.DISTRIBUTION_SHOP_ID=t.id and g.status in (1,2) and g.isdeleted=0) as jiesuanIng" )
+ .select("(select g.create_date from withdraw_record g where g.MEMBER_ID=t.id and g.isdeleted=0 order by g.id desc limit 1 ) as withdrawDate" )
+ .select("(select sum(g.amount) from withdraw_record g where g.MEMBER_ID=t.id and g.status=1 and g.isdeleted=0 ) as withdrawTotal" )
+ .select("(select sum(g.amount) from withdraw_record g where g.MEMBER_ID=t.id and g.status=0 and g.isdeleted=0 ) as withdrawIng" );
+ queryWrapper.eq(Shop::getIsdeleted, Constants.ZERO);
+ queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getCode()) ,Shop::getCode,pageWrap.getModel().getCode());
+ queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getUsername()) ,Shop::getName,pageWrap.getModel().getUsername());
+ queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getName()) ,Shop::getName,pageWrap.getModel().getName());
+ queryWrapper.orderByDesc(Shop::getId);
+ IPage<ShopMoneyVO> result = shopJoinMapper.selectJoinPage(page, ShopMoneyVO.class, queryWrapper);
return PageData.from(result );
}
@@ -864,7 +900,7 @@
}
//榛樿sku淇℃伅
GoodsSku goodsSku = goodsSkuList.get(0);
- if(Constants.formatBigdecimal(goodsSku.getPrice()).compareTo(Constants.formatBigdecimal(dto.getGoodsPrice())) >=0){
+ if(Constants.formatBigdecimal(goodsSku.getPrice()).compareTo(Constants.formatBigdecimal(dto.getGoodsPrice()))<=0){
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝渚涜揣浠蜂笉鍏佽澶т簬鍟嗗搧閿�鍞环锛�");
}
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
--
Gitblit v1.9.3