会员管理

This commit is contained in:
cun-nan 2023-10-16 18:04:58 +08:00
parent 3f93a5fa53
commit e0385816b3
25 changed files with 1438 additions and 216 deletions

View File

@ -0,0 +1,19 @@
import request from '@/utils/request'
// 查询会员详细
export function getChainStoreConfig(id) {
return request({
url: '/business/userManager/chainStoreConfig',
method: 'get'
})
}
// 修改会员
export function updateChainStoreConfig(data) {
return request({
url: '/business/userManager/chainStoreConfig',
method: 'put',
data: data
})
}

View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询会员列表
export function listUser(query) {
return request({
url: '/business/userManager/user/list',
method: 'get',
params: query
})
}
// 查询会员详细
export function getUser(id) {
return request({
url: '/business/userManager/user/' + id,
method: 'get'
})
}
// 新增会员
export function addUser(data) {
return request({
url: '/business/userManager/user',
method: 'post',
data: data
})
}
// 修改会员
export function updateUser(data) {
return request({
url: '/business/userManager/user',
method: 'put',
data: data
})
}
// 删除会员
export function delUser(id) {
return request({
url: '/business/userManager/user/' + id,
method: 'delete'
})
}

View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询会员等级列表
export function listUserGrade(query) {
return request({
url: '/business/userManager/userGrade/list',
method: 'get',
params: query
})
}
// 查询会员等级详细
export function getUserGrade(id) {
return request({
url: '/business/userManager/userGrade/' + id,
method: 'get'
})
}
// 新增会员等级
export function addUserGrade(data) {
return request({
url: '/business/userManager/userGrade',
method: 'post',
data: data
})
}
// 修改会员等级
export function updateUserGrade(data) {
return request({
url: '/business/userManager/userGrade',
method: 'put',
data: data
})
}
// 删除会员等级
export function delUserGrade(id) {
return request({
url: '/business/userManager/userGrade/' + id,
method: 'delete'
})
}

View File

@ -1,6 +1,6 @@
<template>
<div>
<div style="margin: 20px 0px">
<div style="margin: 20px 0px" ref="pform">
<div style="display: flex">
<p style="margin-right: 34px">省市区</p>
<el-cascader
@ -15,12 +15,10 @@
<div id="container" class="container" clearable style="margin-top: 15px"></div>
</div>
</div>
{{form.lng}}
{{form.lat}}
{{form.address}}
<p>详细地址<el-input v-model="form.address"
placeholder="请输入内容"
style="width: 50%"
@blur="getLngLat"
></el-input></p>
</div>
</template>
@ -69,16 +67,19 @@ export default {
this.getOption();
},
mounted() {
this.initAMap();
},
methods:{
pasVal(){
this.$emit('pform', this.form); // custom-event
// this.$refs.pform.pasVal()
},
changeOption(val){
this.remoteMethod(val[2]);
},
getOption(){
let _this = this;
getClient().then(response => {
this.options = response.data.list;
_this.options = response.data.list;
})
},
initAMap() {
@ -93,6 +94,7 @@ export default {
zoom: 11, //
center: [_this.form.lng, _this.form.lat], //
});
// console.log(this.map.center)
//
this.geoCoder = new AMap.Geocoder({
city: "010", //
@ -161,6 +163,7 @@ export default {
_this.form.lng = result.districtList[0].center.lng
_this.form.lat = result.districtList[0].center.lat
_this.toGeoCoder();
_this.pasVal();
_this.initAMap();
});
}, 200);
@ -169,6 +172,23 @@ export default {
this.initAMap();
}
},
getLngLat(){
let _this = this;
const geocoder = new AMap.Geocoder()
// ,cName:
geocoder.getLocation(this.form.address, (status, result) => {
if (status === 'complete' && result.info === 'OK') {
//
_this.form.lng = result.geocodes[0].location.lng
_this.form.lat = result.geocodes[0].location.lat
_this.toGeoCoder();
_this.pasVal();
_this.initAMap();
} else {
this.$modal.msgError("定位失败");
}
})
},
//
currentSelect(val) {
//

View File

@ -1,15 +1,7 @@
<template>
<div class="app-container">
<el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="会员ID" prop="id">
<el-input
v-model="queryParams.id"
placeholder="请输入会员ID"
clearable
style="width: 240px;"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-card >
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="会员号" prop="userNo">
<el-input
v-model="queryParams.userNo"
@ -97,106 +89,126 @@
>新增</el-button>
</el-form-item>
</el-form>
</el-card>
<el-table ref="tables" v-loading="loading" :data="list" @selection-change="handleSelectionChange" :default-sort="defaultSort" @sort-change="handleSortChange">
<el-table-column label="会员ID" prop="id" min-width="70"/>
<el-table-column label="头像" align="center" width="80">
<template slot-scope="scope">
<img v-if="scope.row.avatar" class="list-avatar" :src="scope.row.avatar">
<img v-else class="list-avatar" src="@/assets/images/avatar.png">
</template>
</el-table-column>
<el-table-column label="会员号" prop="userNo" width="150"/>
<el-table-column label="名称" align="center" prop="name" />
<el-table-column label="手机号" align="center" prop="mobile" width="100">
<template slot-scope="scope">
<span>{{ scope.row.mobile ? scope.row.mobile : '-' }}</span>
</template>
</el-table-column>
<el-table-column label="会员等级" align="center" prop="gradeId" width="80">
<template slot-scope="scope">
<span>{{ scope.row.gradeId ? getName(userGradeList, scope.row.gradeId) : '-' }}</span>
</template>
</el-table-column>
<el-table-column label="所属店铺" align="center" prop="storeId" width="120">
<template slot-scope="scope">
<span>{{ scope.row.storeId ? scope.row.storeName: '-' }}</span>
</template>
</el-table-column>
<el-table-column label="余额" align="center" prop="balance">
<template slot-scope="scope">
<div><span style="color:red;">{{ scope.row.balance ? scope.row.balance.toFixed(2) : '0.00' }}</span></div>
<el-button
class="mini-btn"
type="primary"
size="mini"
@click="handleBalance(scope.row.id)"
v-hasPermi="['balance:modify']"
>充值</el-button>
</template>
</el-table-column>
<el-table-column label="积分" align="center" prop="point">
<template slot-scope="scope">
<div><span>{{ scope.row.point ? scope.row.point : '0.00' }}</span></div>
<el-button
class="mini-btn"
type="primary"
size="mini"
@click="handlePoint(scope.row.id)"
v-hasPermi="['point:modify']"
>变更</el-button>
</template>
</el-table-column>
<el-table-column label="注册时间" align="center" width="160" prop="createTime">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="活跃时间" align="center" width="160" prop="updateTime">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.updateTime) }}</span>
</template>
</el-table-column>
<el-table-column label="状态" align="center" prop="status">
<template slot-scope="scope">
<el-switch
v-model="scope.row.status"
active-value="A"
inactive-value="N"
@change="handleStatusChange(scope.row)"
></el-switch>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="120" fixed='right'>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
v-hasPermi="['member:add']"
@click="handleUpdate(scope.row)"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
v-hasPermi="['member:add']"
@click="handleDelete(scope.row)"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<el-card style="margin-top: 20px">
<el-table ref="tables" v-loading="loading" :data="list" @selection-change="handleSelectionChange" :default-sort="defaultSort" @sort-change="handleSortChange">
<el-table-column label="会员ID" prop="id" align="center" width="60"/>
<el-table-column label="头像" align="center" width="70">
<template slot-scope="scope">
<img v-if="scope.row.avatar" class="list-avatar" :src="scope.row.avatar">
<img v-else class="list-avatar" src="@/assets/images/avatar.png">
</template>
</el-table-column>
<el-table-column label="会员号" align="center" prop="userNo" width="150"/>
<el-table-column label="名称" align="center" prop="name" />
<el-table-column label="手机号" align="center" prop="mobile" width="110">
<template slot-scope="scope">
<span>{{ scope.row.mobile ? scope.row.mobile : '-' }}</span>
</template>
</el-table-column>
<el-table-column label="会员等级" align="center" prop="gradeId" width="80">
<template slot-scope="scope">
<span>{{ scope.row.gradeId ? getName(userGradeList, scope.row.gradeId) : '-' }}</span>
</template>
</el-table-column>
<el-table-column label="储值卡" align="center" prop="balance">
<template slot-scope="scope">
<div>{{ scope.row.balance ? scope.row.balance.toFixed(2) : '0.00' }}</div>
<!-- <el-button-->
<!-- class="mini-btn"-->
<!-- type="primary"-->
<!-- size="mini"-->
<!-- @click="handleBalance(scope.row.id)"-->
<!-- v-hasPermi="['balance:modify']"-->
<!-- >充值</el-button>-->
</template>
</el-table-column>
<el-table-column label="升数卡" align="center" prop="balance">
<template slot-scope="scope">
<div>{{ scope.row.literCard ? scope.row.literCard.toFixed(2) : '0.00' }}</div>
<!-- <el-button-->
<!-- class="mini-btn"-->
<!-- type="primary"-->
<!-- size="mini"-->
<!-- @click="handleBalance(scope.row.id)"-->
<!-- v-hasPermi="['balance:modify']"-->
<!-- >充值</el-button>-->
</template>
</el-table-column>
<el-table-column label="加油金" align="center" prop="balance">
<template slot-scope="scope">
<div>{{ scope.row.refuelMoney ? scope.row.refuelMoney.toFixed(2) : '0.00' }}</div>
</template>
</el-table-column>
<el-table-column label="积分" align="center" prop="point">
<template slot-scope="scope">
<div><span>{{ scope.row.point ? scope.row.point : '0.00' }}</span></div>
<!-- <el-button-->
<!-- class="mini-btn"-->
<!-- type="primary"-->
<!-- size="mini"-->
<!-- @click="handlePoint(scope.row.id)"-->
<!-- v-hasPermi="['point:modify']"-->
<!-- >变更</el-button>-->
</template>
</el-table-column>
<el-table-column label="加油次数" align="center" prop="balance">
<template slot-scope="scope">
<div>{{ scope.row.consumeNum }}</div>
</template>
</el-table-column>
<el-table-column label="注册时间" align="center" width="160" prop="createTime">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="状态" align="center" prop="status">
<template slot-scope="scope">
<el-switch
v-model="scope.row.status"
active-value="A"
inactive-value="N"
@change="handleStatusChange(scope.row)"
></el-switch>
</template>
</el-table-column>
<el-table-column label="公众号" align="center" prop="official">
<template slot-scope="scope">
<dict-tag :options="dict.type.official" :value="scope.row.official"/>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="120" fixed='right'>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
v-hasPermi="['member:add']"
@click="handleUpdate(scope.row)"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
v-hasPermi="['member:add']"
@click="handleDelete(scope.row)"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.page"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.page"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</el-card>
<!-- 添加或修改对话框 -->
<el-dialog :title="title" :visible.sync="open" class="common-dialog" width="800px" append-to-body>
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<el-col :span="24">
@ -334,9 +346,11 @@
import { getMemberList, updateMemberStatus, getMemberInfo, saveMember, deleteMember } from "@/api/member";
import balanceRecharge from "./balanceRecharge";
import pointRecharge from "./pointRecharge";
import {listUser} from "@/api/staff/user/user";
export default {
name: "MemberIndex",
components: { balanceRecharge, pointRecharge },
dicts: ['official'],
data() {
return {
//
@ -401,15 +415,22 @@ export default {
//
getList() {
this.loading = true;
this.queryParams.storeIds = this.storeIds ? this.storeIds.join(",") : '';
getMemberList(this.addDateRange(this.queryParams, this.dateRange)).then( response => {
this.list = response.data.paginationResponse.content;
this.total = response.data.paginationResponse.totalElements;
this.userGradeList = response.data.userGradeList;
this.storeList = response.data.storeList;
this.loading = false;
}
);
listUser().then( response => {
this.list = response.data.records;
this.total = response.data.total;
this.loading = false;
});
// this.loading = true;
// this.queryParams.storeIds = this.storeIds ? this.storeIds.join(",") : '';
// getMemberList(this.addDateRange(this.queryParams, this.dateRange)).then( response => {
// this.list = response.data.paginationResponse.content;
// this.total = response.data.paginationResponse.totalElements;
// this.userGradeList = response.data.userGradeList;
// this.storeList = response.data.storeList;
// this.loading = false;
// }
// );
},
//
handleQuery() {
@ -536,3 +557,10 @@ export default {
};
</script>
<style scoped>
.app-container{
width: 100%;
height: 100vh;
background: #f6f8f9;
}
</style>

View File

@ -544,7 +544,7 @@ import {getDuty, listDuty} from "@/api/staff/duty";
export default {
name: "StaffList",
dicts: ['ywqx','write_off','special_prem','display','zhzt','transaction','time_frame','handover','handover_quit',
dicts: ['ywqx','write_off','display','zhzt','transaction','time_frame','handover','handover_quit',
'jbjl','official','notice','special_prem','role'],
data() {
return {

View File

@ -1,16 +1,11 @@
<template>
<div>
<div class="app-container">
<el-card class="card">
<div slot="header" class="clearfix">
<span>{{ store.oilStationName }}({{ store.description }})</span>
</div>
<map-componment :pform="form"></map-componment>
<p>详细地址<el-input v-model="store.address"
placeholder="请输入内容"
style="width: 50%"
></el-input></p>
<map-componment :pform="form" ref="mapRef" @pform="getForm"></map-componment>
<div style="display: flex;margin-bottom: 20px">
<span style="margin-right: 10px">店铺福利</span>
<el-checkbox-group v-model="welfare" ref="" @change="getCheckbox">
@ -24,6 +19,7 @@
</div>
<el-button type="primary" @click="submitStore">保存信息</el-button>
</el-card>
<el-card class="card">
<div slot="header" class="clearfix">
<span>门店二维码</span>
@ -35,6 +31,7 @@
下载门店二维码
</el-button>
</el-card>
<el-card class="card">
<div slot="header" class="clearfix">
<span>收款二维码</span>
@ -102,8 +99,16 @@ export default {
created() {
this.getQRCodeInfo();
this.getStore();
this.getForm()
},
methods: {
getForm(data){
if (data != undefined){
this.form.lat = data.lat;
this.form.lng = data.lng;
this.form.address = data.address;
}
},
//
getStore() {
ljStoreInfo().then(response => {
@ -112,6 +117,7 @@ export default {
this.form.lng = this.store.longitude;
this.form.address = this.store.address;
this.welfare = this.store.welfare.split(",")
this.$refs.mapRef.initAMap();
})
},
@ -120,6 +126,9 @@ export default {
},
submitStore(){
this.store.latitude = this.form.lat;
this.store.longitude = this.form.lng;
this.store.address = this.form.address;
updateStore(this.store).then(response => {
this.$modal.msgSuccess("修改成功");
this.getStore();
@ -181,9 +190,11 @@ export default {
</script>
<style lang="scss" scoped>
.app-container{
background: #f6f8f9;
}
.card{
width: 96%;
margin: 30px auto;
margin: 15px auto;
}
.qrcode{
width: 180px;

View File

@ -1,79 +1,228 @@
<template>
<div class="app-container">
<el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="等级名称" prop="name">
<el-input
v-model="queryParams.name"
placeholder="请输入等级名称"
clearable
style="width: 240px;"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="升级方式" prop="catchType">
<el-select
v-model="queryParams.catchType"
clearable
placeholder="升级方式"
>
<el-option v-for="catchType in catchTypeList" :key="catchType.key" :label="catchType.name" :value="catchType.value"/>
</el-select>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select
v-model="queryParams.status"
placeholder="状态"
clearable
>
<el-option key="A" label="启用" value="A"/>
<el-option key="N" label="禁用" value="N"/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['userGrade:add']"
>新增</el-button>
</el-form-item>
</el-form>
<el-card>
<div slot="header" class="clearfix">
<span>等级配置</span>
</div>
<div>
<div style="display: flex;justify-content: space-between">
<span style="color: grey;">会员等级规则说明</span>
<el-button type="success" round>开启等级功能</el-button>
</div>
<el-alert
type="warning"
style="margin-top: 15px"
:closable="false">
<p>
1用户每次消费后根据成长值计算方式中的规则获得相应的成长值并根据会员等级配置的规则自动更新用户的会员等级
</p>
<p>
2会员等级区分汽油柴油天然气会员加油或加气将按照对应的等级进行优惠
</p>
<p>
3当成长值累计达到下一个等级时实时升级升级后的等级规则将生效
</p>
<p>
4开启会员等级功能系统将按照规则及成长值进行处理如关闭等级功能用户等级将失效,将无法享受对应优惠规则成长值将暂停增加或减少但不影响会员已有成长值
</p>
</el-alert>
</div>
<div style="margin-top: 15px">
<span style="color: grey;">等级清算规则</span>
<div style="margin-top: 10px">
<template>
<el-radio v-model="clear" label="clear_month">按月清算</el-radio>
<el-radio v-model="clear" label="clear_no">不清算</el-radio>
</template>
<el-button type="primary" round @click="updateClearConfig">保存</el-button>
</div>
<el-alert
type="warning"
style="margin-top: 15px"
:closable="false">
<p>
清算说明
</p>
<p>
1油站可根据自身运营情况选择并设置会员等级的清算规则保存后实时生效不影响会员已有成长值规则不影响会员的成长值增减
</p>
<p>
2按月清算: 以月为周期动态调整会员成长值等级清算,如本月所属会员等级则按照上月成长值计算本月所得成长值下月有效
</p>
<p>
3不清算: 按照成长值累计只升不降且用户等级按照用户获得的成长值实时计算所属会员等级
</p>
</el-alert>
</div>
<div style="margin-top: 15px">
<span style="color: grey;">成长值计算方式</span>
<div style="display: flex;justify-content: space-between">
<div style="margin-top: 10px;display: flex;width: 30%">
<el-input
placeholder="汽油成长值比例,每消费1元积"
:disabled="true" style="width: 800px">
</el-input>
<el-input
placeholder="1"
:disabled="true">
</el-input>
<el-input
placeholder="成长值"
:disabled="true">
</el-input>
</div>
<div style="margin-top: 10px;display: flex;width: 30%">
<el-input
placeholder="柴油成长值比例,每消费1元积"
:disabled="true" style="width: 800px">
</el-input>
<el-input
placeholder="1"
:disabled="true">
</el-input>
<el-input
placeholder="成长值"
:disabled="true">
</el-input>
</div>
<div style="margin-top: 10px;display: flex;width: 30%">
<el-input
placeholder="天然气成长值比例,每消费1元积"
:disabled="true" style="width: 800px">
</el-input>
<el-input
placeholder="1"
:disabled="true">
</el-input>
<el-input
placeholder="成长值"
:disabled="true">
</el-input>
</div>
</div>
<el-alert
type="warning"
style="margin-top: 15px"
:closable="false">
<p>
1支付成功订单增加成长值退款成功订单扣减成长值
</p>
<p>
2成长值按照加油或加气订单消费金额计算(非实付金额)商品订单不包含在内
</p>
<p>
3汽油柴油天然气成长值默认为1:1进行计算,如加油金额消费99.6,将累计99个成长值不足1元的部分直接舍掉),成长值比例暂不支持更改
</p>
</el-alert>
</div>
</el-card>
<el-table ref="tables" v-loading="loading" :data="list" @selection-change="handleSelectionChange" :default-sort="defaultSort" @sort-change="handleSortChange">
<!-- <el-card class="card">-->
<!-- <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">-->
<!-- <el-form-item label="等级名称" prop="name">-->
<!-- <el-input-->
<!-- v-model="queryParams.name"-->
<!-- placeholder="请输入等级名称"-->
<!-- clearable-->
<!-- style="width: 240px;"-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="升级方式" prop="catchType">-->
<!-- <el-select-->
<!-- v-model="queryParams.catchType"-->
<!-- clearable-->
<!-- placeholder="升级方式"-->
<!-- >-->
<!-- <el-option v-for="catchType in catchTypeList" :key="catchType.key" :label="catchType.name" :value="catchType.value"/>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="状态" prop="status">-->
<!-- <el-select-->
<!-- v-model="queryParams.status"-->
<!-- placeholder="状态"-->
<!-- clearable-->
<!-- >-->
<!-- <el-option key="A" label="启用" value="A"/>-->
<!-- <el-option key="N" label="禁用" value="N"/>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item>-->
<!-- <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>-->
<!-- <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>-->
<!-- <el-button-->
<!-- type="primary"-->
<!-- plain-->
<!-- icon="el-icon-plus"-->
<!-- size="mini"-->
<!-- @click="handleAdd"-->
<!-- v-hasPermi="['userGrade:add']"-->
<!-- >新增</el-button>-->
<!-- </el-form-item>-->
<!-- </el-form>-->
<!-- </el-card>-->
<el-card class="card">
<el-table ref="tables" v-loading="loading" :data="list" @selection-change="handleSelectionChange" :default-sort="defaultSort" @sort-change="handleSortChange">
<el-table-column label="等级" prop="grade" width="55"/>
<el-table-column label="等级名称" align="center" prop="name" />
<el-table-column label="升级方式" align="center" prop="catchType" />
<el-table-column label="升级条件值" align="center" prop="catchValue">
<template slot-scope="scope">
<span v-if="scope.row.catchValue > 0">
<span>{{ scope.row.catchValue }}</span>
</span>
<span v-else>无条件</span>
</template>
</el-table-column>
<el-table-column label="有效天数" align="center" prop="validDay">
<template slot-scope="scope">
<span v-if="scope.row.validDay > 0">{{ scope.row.validDay + '' }}</span>
<span v-else>永久</span>
</template>
</el-table-column>
<el-table-column label="支付折扣" align="center" prop="discount">
<template slot-scope="scope">
<span v-if="scope.row.discount > 0">{{ scope.row.discount + '' }}</span>
<span v-else>无折扣</span>
</template>
</el-table-column>
<el-table-column label="积分加速" align="center" prop="speedPoint">
<template slot-scope="scope">
<span v-if="scope.row.speedPoint > 0">{{ scope.row.speedPoint + '倍数' }}</span>
<span v-else>不加倍</span>
</template>
</el-table-column>
<el-table-column label="状态" align="center" prop="status">
<el-table-column label="汽油成长值" align="center" prop="gasoline" />
<el-table-column label="柴油成长值" align="center" prop="dieselOil" />
<el-table-column label="天然气成长值" align="center" prop="naturalGas" />
<!-- <el-table-column label="升级条件值" align="center" prop="catchValue">-->
<!-- <template slot-scope="scope">-->
<!-- <span v-if="scope.row.catchValue > 0">-->
<!-- <span>{{ scope.row.catchValue }}</span>-->
<!-- </span>-->
<!-- <span v-else>无条件</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column label="有效天数" align="center" prop="validDay">-->
<!-- <template slot-scope="scope">-->
<!-- <span v-if="scope.row.validDay > 0">{{ scope.row.validDay + '' }}</span>-->
<!-- <span v-else>永久</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column label="支付折扣" align="center" prop="discount">-->
<!-- <template slot-scope="scope">-->
<!-- <span v-if="scope.row.discount > 0">{{ scope.row.discount + '' }}</span>-->
<!-- <span v-else>无折扣</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column label="积分加速" align="center" prop="speedPoint">-->
<!-- <template slot-scope="scope">-->
<!-- <span v-if="scope.row.speedPoint > 0">{{ scope.row.speedPoint + '倍数' }}</span>-->
<!-- <span v-else>不加倍</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column label="优惠类型" align="center" prop="preferential" >
<template slot-scope="scope">
<dict-tag :options="dict.type.yhlx" :value="scope.row.preferential"/>
</template>
</el-table-column>
<el-table-column label="特权信息" align="center">
<template slot-scope="scope">
<div v-show="scope.row.preferential=='自定义优惠'">
<p>
汽油
<span style="margin-left: 10px">{{ scope.row.gasolineDiscount }}</span>
</p>
<p>
柴油
<span style="margin-left: 10px">{{ scope.row.dieselDiscount }}</span>
</p>
<p>
天然气
<span style="margin-left: 10px">{{ scope.row.naturalGasDiscount }}</span>
</p>
</div>
<div v-show="scope.row.preferential=='优惠活动组'">
优惠活动组
<span style="margin-left: 10px">{{ scope.row.promotionGroup }}</span>
</div>
</template>
</el-table-column>
<el-table-column label="状态" align="center" prop="status">
<template slot-scope="scope">
<el-switch
v-model="scope.row.status"
@ -103,13 +252,14 @@
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.page"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.page"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</el-card>
<!-- 添加或修改对话框 -->
<el-dialog :title="title" :visible.sync="open" class="common-dialog" width="700px" append-to-body>
@ -204,10 +354,14 @@
<script>
import { getUserGradeList, updateUserGradeStatus, getUserGradeInfo, saveUserGrade, deleteUserGrade } from "@/api/userGrade";
import {listUserGrade} from "@/api/staff/user/usergrade";
import {getChainStoreConfig, updateChainStoreConfig} from "@/api/staff/user/chainstoreconfig";
export default {
name: "UserGradeIndex",
dicts: ['yhlx'],
data() {
return {
clear:'',
//
loading: true,
//
@ -268,18 +422,36 @@ export default {
},
created() {
this.getList();
this.getClearConfig();
},
methods: {
//
getClearConfig(){
getChainStoreConfig().then(response => {
this.clear = response.data.levelClearRule;
})
},
updateClearConfig(){
updateChainStoreConfig({'levelClearRule':this.clear}).then(response => {
this.$modal.msgSuccess("修改成功");
console.log(response)
});
this.getClearConfig();
},
//
getList() {
this.loading = true;
getUserGradeList(this.queryParams).then( response => {
this.list = response.data.paginationResponse.content;
this.total = response.data.paginationResponse.totalElements;
this.catchTypeList = response.data.catchTypeList
this.loading = false;
}
);
listUserGrade().then(response => {
this.list = response.data.records;
this.total = response.data.total;
this.loading = false;
})
// getUserGradeList(this.queryParams).then( response => {
// this.list = response.data.paginationResponse.content;
// this.total = response.data.paginationResponse.totalElements;
// this.catchTypeList = response.data.catchTypeList
// }
// );
},
//
handleQuery() {
@ -387,3 +559,13 @@ export default {
};
</script>
<style scoped>
.app-container{
//width: 100%;
//height: 100vh;
background: #f6f8f9;
}
.card{
margin-top: 15px;
}
</style>

View File

@ -0,0 +1,39 @@
package com.fuint.business.userManager.controller;
import com.fuint.business.userManager.entity.ChainStoreConfig;
import com.fuint.business.userManager.service.ChainStoreConfigService;
import com.fuint.framework.web.BaseController;
import com.fuint.framework.web.ResponseObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
* 连锁店配置信息 controller层
*/
@RestController
@RequestMapping("/business/userManager/chainStoreConfig")
public class ChainStoreConfigController extends BaseController {
@Autowired
private ChainStoreConfigService chainStoreConfigService;
/**
* 根据id查询连锁店配置信息
* @return
*/
@GetMapping
public ResponseObject chainStoreConfigInfo(){
ChainStoreConfig chainStoreConfig = chainStoreConfigService.selectChainStoreConfigById();
return getSuccessResult(chainStoreConfig);
}
/**
* 修改连锁店配置信息
* @param chainStoreConfig
* @return
*/
@PutMapping
public ResponseObject edit(@Validated @RequestBody ChainStoreConfig chainStoreConfig){
return getSuccessResult(chainStoreConfigService.updateChainStoreConfig(chainStoreConfig));
}
}

View File

@ -0,0 +1,78 @@
package com.fuint.business.userManager.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fuint.business.userManager.entity.LJUser;
import com.fuint.business.userManager.service.LJUserService;
import com.fuint.framework.web.BaseController;
import com.fuint.framework.web.ResponseObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
* 会员信息 controller层
*/
@RestController
@RequestMapping("/business/userManager/user")
public class LJUserController extends BaseController {
@Autowired
private LJUserService userService;
/**
* 根据条件分页查询会员信息
* @param user
* @param pageNo
* @param pageSize
* @return
*/
@GetMapping("/list")
public ResponseObject list(LJUser user,
@RequestParam(value = "pageNo",defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize",defaultValue = "10") Integer pageSize){
Page page =new Page(pageNo,pageSize);
IPage<LJUser> list = userService.selectUserList(page,user);
return getSuccessResult(list);
}
/**
* 根据id查询会员信息
* @param id
* @return
*/
@GetMapping("/{id}")
public ResponseObject userInfo(@PathVariable Integer id){
LJUser user = userService.selectUserById(id);
return getSuccessResult(user);
}
/**
* 批量删除会员信息
* @return
*/
@DeleteMapping("/{id}")
public ResponseObject remove(@PathVariable Integer id){
userService.deleteUserById(id);
return getSuccessResult("操作成功");
}
/**
* 添加会员信息
* @param user
* @return
*/
@PostMapping
public ResponseObject add(@Validated @RequestBody LJUser user){
return getSuccessResult(userService.insertUser(user));
}
/**
* 修改会员信息
* @param user
* @return
*/
@PutMapping
public ResponseObject edit(@Validated @RequestBody LJUser user){
return getSuccessResult(userService.updateUser(user));
}
}

View File

@ -0,0 +1,78 @@
package com.fuint.business.userManager.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fuint.business.userManager.entity.LJUserGrade;
import com.fuint.business.userManager.service.LJUserGradeService;
import com.fuint.framework.web.BaseController;
import com.fuint.framework.web.ResponseObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
* 会员等级信息 controller层
*/
@RestController
@RequestMapping("/business/userManager/userGrade")
public class LJUserGradeController extends BaseController {
@Autowired
private LJUserGradeService userGradeService;
/**
* 根据条件分页查询会员等级信息
* @param userGrade
* @param pageNo
* @param pageSize
* @return
*/
@GetMapping("/list")
public ResponseObject list(LJUserGrade userGrade,
@RequestParam(value = "pageNo",defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize",defaultValue = "10") Integer pageSize){
Page page =new Page(pageNo,pageSize);
IPage<LJUserGrade> list = userGradeService.selectUserGradeList(page,userGrade);
return getSuccessResult(list);
}
/**
* 根据id查询会员等级信息
* @param id
* @return
*/
@GetMapping("/{id}")
public ResponseObject staffInfo(@PathVariable Integer id){
LJUserGrade userGrade = userGradeService.selectUserGradeById(id);
return getSuccessResult(userGrade);
}
/**
* 批量删除会员等级信息
* @return
*/
@DeleteMapping("/{id}")
public ResponseObject remove(@PathVariable Integer id){
userGradeService.deleteUserGradeById(id);
return getSuccessResult("操作成功");
}
/**
* 添加会员等级信息
* @param userGrade
* @return
*/
@PostMapping
public ResponseObject add(@Validated @RequestBody LJUserGrade userGrade){
return getSuccessResult(userGradeService.insertUserGrade(userGrade));
}
/**
* 修改会员等级信息
* @param userGrade
* @return
*/
@PutMapping
public ResponseObject edit(@Validated @RequestBody LJUserGrade userGrade){
return getSuccessResult(userGradeService.updateUserGrade(userGrade));
}
}

View File

@ -0,0 +1,37 @@
package com.fuint.business.userManager.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fuint.framework.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
/**
* 连锁店配置信息
*
* Created by FSQ
* CopyRight https://www.fuint.cn
*/
@Getter
@Setter
@TableName("chain_store_config")
@ApiModel(value = "ChainStoreConfig", description = "连锁店配置信息")
public class ChainStoreConfig extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("连锁店配置类ID")
@TableId(value = "ID", type = IdType.AUTO)
private Integer id;
@ApiModelProperty("连锁店id")
private Integer chainStoreId;
@ApiModelProperty("等级清算规则")
private String levelClearRule;
}

View File

@ -0,0 +1,117 @@
package com.fuint.business.userManager.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fuint.framework.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* 会员个人信息
*
* Created by FSQ
* CopyRight https://www.fuint.cn
*/
@Getter
@Setter
@TableName("mt_user")
@ApiModel(value = "MtUser对象", description = "会员个人信息")
public class LJUser extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("会员ID")
@TableId(value = "ID", type = IdType.AUTO)
private Integer id;
@ApiModelProperty("会员号")
private String userNo;
@ApiModelProperty("头像")
private String avatar;
@ApiModelProperty("称呼")
private String name;
@ApiModelProperty("微信open_id")
private String openId;
@ApiModelProperty("手机号码")
private String mobile;
@ApiModelProperty("证件号码")
private String idcard;
@ApiModelProperty("等级ID")
private String gradeId;
@ApiModelProperty("会员开始时间")
@TableField(strategy = FieldStrategy.IGNORED)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date startTime;
@ApiModelProperty("会员结束时间")
@TableField(strategy=FieldStrategy.IGNORED)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date endTime;
@ApiModelProperty("余额")
private BigDecimal balance;
@ApiModelProperty("积分")
private Integer point;
@ApiModelProperty("性别 1男0女")
private Integer sex;
@ApiModelProperty("出生日期")
private String birthday;
@ApiModelProperty("车牌号")
private String carNo;
@ApiModelProperty("来源渠道")
private String source;
@ApiModelProperty("密码")
private String password;
@ApiModelProperty("salt")
private String salt;
@ApiModelProperty("地址")
private String address;
@ApiModelProperty("所属商户ID")
private Integer merchantId;
@ApiModelProperty("默认店铺")
private Integer storeId;
@ApiModelProperty("状态A激活N禁用D删除")
private String status;
@ApiModelProperty("备注信息")
private String description;
@ApiModelProperty("最后操作人")
private String operator;
@ApiModelProperty("升数卡")
private BigDecimal literCard;
@ApiModelProperty("公众号")
private String official;
@ApiModelProperty("加油金")
private BigDecimal refuelMoney;
@ApiModelProperty("加油次数")
private BigDecimal consumeNum;
}

View File

@ -0,0 +1,89 @@
package com.fuint.business.userManager.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fuint.framework.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* 会员等级表
*
* Created by FSQ
* CopyRight https://www.fuint.cn
*/
@Getter
@Setter
@TableName("mt_user_grade")
@ApiModel(value = "MtUserGrade对象", description = "")
public class LJUserGrade extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("自增ID")
@TableId(value = "ID", type = IdType.AUTO)
private Integer id;
@ApiModelProperty("商户ID")
private Integer merchantId;
@ApiModelProperty("等级")
private Integer grade;
@ApiModelProperty("等级名称")
private String name;
@ApiModelProperty("升级会员等级条件描述")
private String catchCondition;
@ApiModelProperty("升级会员等级条件init:默认获取;pay:付费升级frequency:消费次数amount:累积消费金额升级")
private String catchType;
@ApiModelProperty("达到升级条件的值")
private BigDecimal catchValue;
@ApiModelProperty("会员权益描述")
private String userPrivilege;
@ApiModelProperty("有效期")
private Integer validDay;
@ApiModelProperty("享受折扣")
private Float discount;
@ApiModelProperty("积分加速")
private Float speedPoint;
@ApiModelProperty("状态")
private String status;
@ApiModelProperty("汽油成长值")
private Integer gasoline;
@ApiModelProperty("柴油成长值")
private Integer dieselOil;
@ApiModelProperty("天然气成长值")
private Integer naturalGas;
@ApiModelProperty("优惠类型,自定义优惠,优惠活动组")
private String preferential;
@ApiModelProperty("汽油优惠,无优惠,满减优惠,每升优惠")
private String gasolineDiscount;
@ApiModelProperty("柴油优惠,无优惠,满减优惠,每升优惠")
private String dieselDiscount;
@ApiModelProperty("天然气优惠,无优惠,满减优惠,每单位优惠")
private String naturalGasDiscount;
@ApiModelProperty("优惠活动组")
private String promotionGroup;
}

View File

@ -0,0 +1,10 @@
package com.fuint.business.userManager.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.fuint.business.userManager.entity.ChainStoreConfig;
/**
* 连锁店配置类 mapper层
*/
public interface ChainStoreConfigMapper extends BaseMapper<ChainStoreConfig> {
}

View File

@ -0,0 +1,21 @@
package com.fuint.business.userManager.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fuint.business.userManager.entity.LJUser;
import com.fuint.business.userManager.entity.LJUserGrade;
import org.apache.ibatis.annotations.Param;
/**
* 会员等级信息 mapper层
*/
public interface LJUserGradeMapper extends BaseMapper<LJUserGrade> {
/**
* 根据条件分页查询会员等级信息
* @param page
* @param userGrade
* @return
*/
public IPage<LJUserGrade> selectUserGradeList(Page page, @Param("userGrade") LJUserGrade userGrade);
}

View File

@ -0,0 +1,20 @@
package com.fuint.business.userManager.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fuint.business.userManager.entity.LJUser;
import org.apache.ibatis.annotations.Param;
/**
* 会员信息 mapper层
*/
public interface LJUserMapper extends BaseMapper<LJUser> {
/**
* 根据条件分页查询会员信息
* @param page
* @param user
* @return
*/
public IPage<LJUser> selectUserList(Page page, @Param("user") LJUser user);
}

View File

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.fuint.business.userManager.mapper.LJUserGradeMapper">
<resultMap id="UserGradeResult" type="com.fuint.business.userManager.entity.LJUserGrade">
<id property="id" column="id" />
<result property="merchantId" column="merchant_id" />
<result property="name" column="name" />
<result property="grade" column="grade" />
<result property="catchCondition" column="catch_condition" />
<result property="catchType" column="catch_type" />
<result property="catchValue" column="catch_value" />
<result property="userPrivilege" column="user_privilege" />
<result property="validDay" column="valid_day" />
<result property="discount" column="discount" />
<result property="speedPoint" column="speed_point" />
<result property="status" column="status" />
<result property="createTime" column="create_time" />
<result property="updateTime" column="update_time" />
<result property="createBy" column="create_by" />
<result property="updateBy" column="update_by" />
<result property="gasoline" column="gasoline" />
<result property="dieselOil" column="diesel_oil" />
<result property="naturalGas" column="natural_gas" />
<result property="preferential" column="preferential" />
<result property="gasolineDiscount" column="gasoline_discount" />
<result property="dieselDiscount" column="diesel_discount" />
<result property="naturalGasDiscount" column="natural_gas_discount" />
<result property="promotionGroup" column="promotion_group" />
</resultMap>
<sql id="selectUserGrade">
select id, merchant_id, grade, name, catch_condition, catch_type, catch_value, user_privilege, valid_day, discount,
speed_point, status, create_time, update_time, create_by, update_by, gasoline, diesel_oil, natural_gas,
preferential, gasoline_discount, diesel_discount, natural_gas_discount,promotion_group from mt_user_grade
</sql>
<select id="selectUserGradeList" resultMap="UserGradeResult">
<include refid="selectUserGrade"></include>
<!-- <where>-->
<!-- store_id = #{user.storeId}-->
<!-- <if test="userGrade.mobile != null and userGrade.mobile != ''">-->
<!-- and mobile like concat('%', #{userGrade.mobile}, '%')-->
<!-- </if>-->
<!-- <if test="userGrade.userNo != null and userGrade.userNo != ''">-->
<!-- and user_no like concat('%', #{userGrade.userNo}, '%')-->
<!-- </if>-->
<!-- <if test="userGrade.name != null and userGrade.name != ''">-->
<!-- and name like concat('%', #{userGrade.name}, '%')-->
<!-- </if>-->
<!-- <if test="userGrade.gradeId != null and userGrade.gradeId != ''">-->
<!-- and grade_id = #{userGrade.gradeId}-->
<!-- </if>-->
<!-- </where>-->
</select>
</mapper>

View File

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.fuint.business.userManager.mapper.LJUserMapper">
<resultMap id="UserResult" type="com.fuint.business.userManager.entity.LJUser">
<id property="id" column="id" />
<result property="merchantId" column="merchant_id" />
<result property="storeId" column="store_id" />
<result property="userNo" column="user_no" />
<result property="avatar" column="avatar" />
<result property="name" column="name" />
<result property="openId" column="open_id" />
<result property="idcard" column="idcard" />
<result property="gradeId" column="grade_id" />
<result property="startTime" column="start_time" />
<result property="endTime" column="end_time" />
<result property="mobile" column="mobile" />
<result property="balance" column="balance" />
<result property="point" column="point" />
<result property="sex" column="sex" />
<result property="birthday" column="birthday" />
<result property="carNo" column="car_no" />
<result property="source" column="source" />
<result property="password" column="password" />
<result property="salt" column="salt" />
<result property="address" column="address" />
<result property="status" column="status" />
<result property="operator" column="operator" />
<result property="description" column="description" />
<result property="official" column="official" />
<result property="literCard" column="liter_card" />
<result property="refuelMoney" column="refuel_money" />
<result property="consumeNum" column="consume_num" />
<result property="createTime" column="create_time" />
<result property="updateTime" column="update_time" />
<result property="createBy" column="create_by" />
<result property="updateBy" column="update_by" />
</resultMap>
<sql id="selectUser">
select id, mobile, user_no, avatar, name, open_id, idcard, grade_id, start_time, end_time, balance, point,
sex, birthday, car_no, source, password, salt, address, merchant_id, store_id, create_time, update_time,
status, description, operator,official,liter_card,refuel_money,consume_num from mt_user
</sql>
<select id="selectUserList" resultMap="UserResult">
<include refid="selectUser"></include>
<where>
store_id = #{user.storeId}
<if test="user.mobile != null and user.mobile != ''">
and mobile like concat('%', #{user.mobile}, '%')
</if>
<if test="user.userNo != null and user.userNo != ''">
and user_no like concat('%', #{user.userNo}, '%')
</if>
<if test="user.name != null and user.name != ''">
and name like concat('%', #{user.name}, '%')
</if>
<if test="user.gradeId != null and user.gradeId != ''">
and grade_id = #{user.gradeId}
</if>
</where>
</select>
</mapper>

View File

@ -0,0 +1,21 @@
package com.fuint.business.userManager.service;
import com.fuint.business.userManager.entity.ChainStoreConfig;
/**
* 连锁店配置信息 业务层
*/
public interface ChainStoreConfigService {
/**
* 根据id查询连锁店配置信息
* @return
*/
public ChainStoreConfig selectChainStoreConfigById();
/**
* 根据id修改连锁店配置信息
* @param chainStoreConfig
* @return
*/
public int updateChainStoreConfig(ChainStoreConfig chainStoreConfig);
}

View File

@ -0,0 +1,44 @@
package com.fuint.business.userManager.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fuint.business.userManager.entity.LJUserGrade;
/**
* 会员等级信息 业务层
*/
public interface LJUserGradeService {
/**
* 根据条件分页查询员工信息
* @param page
* @return
*/
public IPage<LJUserGrade> selectUserGradeList(Page page, LJUserGrade userGrade);
/**
* 根据id查询员工信息
* @param id
* @return
*/
public LJUserGrade selectUserGradeById(int id);
/**
* 根据id删除员工信息
* @param id
*/
public void deleteUserGradeById(Integer id);
/**
* 增加员工信息
* @param userGrade
* @return
*/
public int insertUserGrade(LJUserGrade userGrade);
/**
* 修改员工信息
* @param userGrade
* @return
*/
public int updateUserGrade(LJUserGrade userGrade);
}

View File

@ -0,0 +1,44 @@
package com.fuint.business.userManager.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fuint.business.userManager.entity.LJUser;
/**
* 会员信息 业务层
*/
public interface LJUserService {
/**
* 根据条件分页查询员工信息
* @param page
* @return
*/
public IPage<LJUser> selectUserList(Page page, LJUser user);
/**
* 根据id查询员工信息
* @param id
* @return
*/
public LJUser selectUserById(int id);
/**
* 根据id删除员工信息
* @param id
*/
public void deleteUserById(Integer id);
/**
* 增加员工信息
* @param user
* @return
*/
public int insertUser(LJUser user);
/**
* 修改员工信息
* @param user
* @return
*/
public int updateUser(LJUser user);
}

View File

@ -0,0 +1,44 @@
package com.fuint.business.userManager.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fuint.business.member.entity.LJStaff;
import com.fuint.business.storeInformation.entity.LJStore;
import com.fuint.business.storeInformation.service.ILJStoreService;
import com.fuint.business.userManager.entity.ChainStoreConfig;
import com.fuint.business.userManager.mapper.ChainStoreConfigMapper;
import com.fuint.business.userManager.service.ChainStoreConfigService;
import com.fuint.common.dto.AccountInfo;
import com.fuint.common.util.TokenUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class ChainStoreConfigServiceImpl extends ServiceImpl<ChainStoreConfigMapper, ChainStoreConfig> implements ChainStoreConfigService {
@Autowired
private ILJStoreService storeService;
/**
* 根据id查询连锁店配置信息
* @return
*/
@Override
public ChainStoreConfig selectChainStoreConfigById() {
LJStore store = storeService.selectStoreById();
Integer id = store.getChainStoreId();
return baseMapper.selectById(id);
}
/**
* 根据id修改连锁店配置信息
* @param chainStoreConfig
* @return
*/
@Override
public int updateChainStoreConfig(ChainStoreConfig chainStoreConfig) {
LJStore store = storeService.selectStoreById();
Integer id = store.getChainStoreId();
chainStoreConfig.setChainStoreId(id);
System.out.println(chainStoreConfig.getLevelClearRule());
int row = baseMapper.updateById(chainStoreConfig);
return row;
}
}

View File

@ -0,0 +1,39 @@
package com.fuint.business.userManager.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fuint.business.userManager.entity.LJUserGrade;
import com.fuint.business.userManager.mapper.LJUserGradeMapper;
import com.fuint.business.userManager.service.LJUserGradeService;
import org.springframework.stereotype.Service;
@Service
public class LJUserGradeServiceImpl extends ServiceImpl<LJUserGradeMapper, LJUserGrade> implements LJUserGradeService {
@Override
public IPage<LJUserGrade> selectUserGradeList(Page page, LJUserGrade userGrade) {
return baseMapper.selectUserGradeList(page,userGrade);
}
@Override
public LJUserGrade selectUserGradeById(int id) {
return baseMapper.selectById(id);
}
@Override
public void deleteUserGradeById(Integer id) {
baseMapper.deleteById(id);
}
@Override
public int insertUserGrade(LJUserGrade userGrade) {
int row = baseMapper.insert(userGrade);
return row;
}
@Override
public int updateUserGrade(LJUserGrade userGrade) {
int row = baseMapper.updateById(userGrade);
return row;
}
}

View File

@ -0,0 +1,75 @@
package com.fuint.business.userManager.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fuint.business.userManager.entity.LJUser;
import com.fuint.business.userManager.mapper.LJUserMapper;
import com.fuint.business.userManager.service.LJUserService;
import com.fuint.common.dto.AccountInfo;
import com.fuint.common.util.TokenUtil;
import org.springframework.stereotype.Service;
/**
* 会员信息 业务层
*/
@Service
public class LJUserServiceImpl extends ServiceImpl<LJUserMapper, LJUser> implements LJUserService {
/**
* 根据条件分页查询会员信息
* @param page
* @param user
* @return
*/
@Override
public IPage<LJUser> selectUserList(Page page, LJUser user) {
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
Integer storeId = nowAccountInfo.getStoreId();
user.setStoreId(storeId);
return baseMapper.selectUserList(page,user);
}
/**
* 根据id查询会员信息
* @param id
* @return
*/
@Override
public LJUser selectUserById(int id) {
return baseMapper.selectById(id);
}
/**
* 根据id删除会员信息
* @param id
*/
@Override
public void deleteUserById(Integer id) {
baseMapper.deleteById(id);
}
/**
* 添加会员信息
* @param user
* @return
*/
@Override
public int insertUser(LJUser user) {
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
Integer storeId = nowAccountInfo.getStoreId();
user.setStoreId(storeId);
int row = baseMapper.insert(user);
return row;
}
/**
* 修改会员信息
* @param user
* @return
*/
@Override
public int updateUser(LJUser user) {
int row = baseMapper.updateById(user);
return row;
}
}