后管充值本金

This commit is contained in:
2023-11-08 10:55:02 +08:00
parent fcddbd6377
commit 72ee14e71d
5 changed files with 550 additions and 522 deletions

View File

@@ -1,6 +1,5 @@
package com.jsowell.web.controller.pile; package com.jsowell.web.controller.pile;
import cn.hutool.core.util.PageUtil;
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSON;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
@@ -27,6 +26,7 @@ import com.jsowell.pile.vo.uniapp.MemberVO;
import com.jsowell.pile.vo.uniapp.MemberWalletLogVO; import com.jsowell.pile.vo.uniapp.MemberWalletLogVO;
import com.jsowell.pile.vo.web.MemberTransactionVO; import com.jsowell.pile.vo.web.MemberTransactionVO;
import com.jsowell.pile.vo.web.PlatformTesterVO; import com.jsowell.pile.vo.web.PlatformTesterVO;
import com.jsowell.pile.vo.web.UpdateMemberBalanceDTO;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
@@ -59,7 +59,7 @@ public class MemberBasicInfoController extends BaseController {
@PreAuthorize("@ss.hasPermi('member:info:list')") @PreAuthorize("@ss.hasPermi('member:info:list')")
@PostMapping("/list") @PostMapping("/list")
public TableDataInfo list(@RequestBody QueryMemberInfoDTO dto) { public TableDataInfo list(@RequestBody QueryMemberInfoDTO dto) {
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
// List<MemberVO> list = memberBasicInfoService.selectMemberList(memberBasicInfo.getMobileNumber(), memberBasicInfo.getNickName()); // List<MemberVO> list = memberBasicInfoService.selectMemberList(memberBasicInfo.getMobileNumber(), memberBasicInfo.getNickName());
List<MemberVO> list = memberBasicInfoService.selectMemberList(dto); List<MemberVO> list = memberBasicInfoService.selectMemberList(dto);
return getDataTable(list); return getDataTable(list);
@@ -141,14 +141,14 @@ public class MemberBasicInfoController extends BaseController {
/** /**
* 充值/扣款余额 * 充值/扣款余额
*/ */
// @PreAuthorize("@ss.hasPermi('member:balance:update')") @PreAuthorize("@ss.hasPermi('member:balance:update')")
// @Log(title = "会员充值/扣款余额", businessType = BusinessType.UPDATE) @Log(title = "会员充值/扣款余额", businessType = BusinessType.UPDATE)
// @PutMapping("/updateGiftBalance") @PutMapping("/updateMemberBalance")
// public AjaxResult updateGiftBalance(@RequestBody UpdateMemberBalanceDTO dto) { public AjaxResult updateMemberBalance(@RequestBody UpdateMemberBalanceDTO dto) {
// logger.info("后管充值/扣款余额 param:{}", dto.toString()); logger.info("后管充值/扣款余额 param:{}", dto.toString());
// // 判断入参 // 判断入参
// return toAjax(memberBasicInfoService.updateMemberBalance(dto)); return toAjax(memberBasicInfoService.updateMemberBalance(dto));
// } }
/** /**
* 查询会员钱包流水 * 查询会员钱包流水

View File

@@ -1,5 +1,6 @@
package com.jsowell.pile.service.impl; package com.jsowell.pile.service.impl;
import com.github.pagehelper.PageHelper;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.jsowell.common.constant.CacheConstants; import com.jsowell.common.constant.CacheConstants;
import com.jsowell.common.constant.Constants; import com.jsowell.common.constant.Constants;
@@ -18,6 +19,7 @@ import com.jsowell.pile.mapper.MemberPlateNumberRelationMapper;
import com.jsowell.pile.mapper.MemberWalletInfoMapper; import com.jsowell.pile.mapper.MemberWalletInfoMapper;
import com.jsowell.pile.mapper.MemberWalletLogMapper; import com.jsowell.pile.mapper.MemberWalletLogMapper;
import com.jsowell.pile.service.IMemberBasicInfoService; import com.jsowell.pile.service.IMemberBasicInfoService;
import com.jsowell.pile.service.IMemberTransactionRecordService;
import com.jsowell.pile.service.IPileBasicInfoService; import com.jsowell.pile.service.IPileBasicInfoService;
import com.jsowell.pile.service.IPileMerchantInfoService; import com.jsowell.pile.service.IPileMerchantInfoService;
import com.jsowell.pile.vo.base.MerchantInfoVO; import com.jsowell.pile.vo.base.MerchantInfoVO;
@@ -31,6 +33,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.StopWatch;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
@@ -66,6 +69,9 @@ public class MemberBasicInfoServiceImpl implements IMemberBasicInfoService {
@Autowired @Autowired
private IPileMerchantInfoService pileMerchantInfoService; private IPileMerchantInfoService pileMerchantInfoService;
@Autowired
private IMemberTransactionRecordService memberTransactionRecordService;
/** /**
* 查询会员基础信息 * 查询会员基础信息
* *
@@ -249,6 +255,9 @@ public class MemberBasicInfoServiceImpl implements IMemberBasicInfoService {
if (CollectionUtils.isNotEmpty(logList)) { if (CollectionUtils.isNotEmpty(logList)) {
memberWalletLogMapper.batchInsert(logList); memberWalletLogMapper.batchInsert(logList);
} }
// 记录会员交易流水
// memberTransactionRecordService.insertSelective(memberTransactionRecord);
return i; return i;
} }
@@ -308,6 +317,9 @@ public class MemberBasicInfoServiceImpl implements IMemberBasicInfoService {
*/ */
@Override @Override
public List<MemberVO> selectMemberList(QueryMemberInfoDTO dto) { public List<MemberVO> selectMemberList(QueryMemberInfoDTO dto) {
StopWatch sw = new StopWatch("查询会员列表");
sw.start("获取登录账号信息");
// 获取登录账号信息 // 获取登录账号信息
AuthorizedDeptVO authorizedMap = SecurityUtils.getAuthorizedMap(); AuthorizedDeptVO authorizedMap = SecurityUtils.getAuthorizedMap();
if (authorizedMap == null) { if (authorizedMap == null) {
@@ -317,14 +329,23 @@ public class MemberBasicInfoServiceImpl implements IMemberBasicInfoService {
if (CollectionUtils.isNotEmpty(merchantDeptIds)) { if (CollectionUtils.isNotEmpty(merchantDeptIds)) {
dto.setMerchantDeptIds(merchantDeptIds); dto.setMerchantDeptIds(merchantDeptIds);
} }
sw.stop();
sw.start("获取一级运营商信息");
PileMerchantInfo pileMerchantInfo = pileMerchantInfoService.queryInfoByDeptId(authorizedMap.getDeptId()); PileMerchantInfo pileMerchantInfo = pileMerchantInfoService.queryInfoByDeptId(authorizedMap.getDeptId());
if (pileMerchantInfo != null) { if (pileMerchantInfo != null) {
String id = pileMerchantInfoService.getFirstLevelMerchantIdByMerchantId(pileMerchantInfo.getId() + ""); String id = pileMerchantInfoService.getFirstLevelMerchantIdByMerchantId(pileMerchantInfo.getId() + "");
dto.setMerchantId(id); dto.setMerchantId(id);
} }
sw.stop();
return memberBasicInfoMapper.selectMemberList(dto); sw.start("查询数据库会员信息");
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
List<MemberVO> memberVOS = memberBasicInfoMapper.selectMemberList(dto);
sw.stop();
log.info("查询耗时:{}", sw.prettyPrint());
return memberVOS;
} }
/** /**

View File

@@ -210,7 +210,9 @@
member_basic_info t1 member_basic_info t1
JOIN member_wallet_info t2 ON t1.member_id = t2.member_id and t2.del_flag = '0' JOIN member_wallet_info t2 ON t1.member_id = t2.member_id and t2.del_flag = '0'
JOIN pile_merchant_info t3 ON t1.merchant_id = t3.id and t3.del_flag = '0' JOIN pile_merchant_info t3 ON t1.merchant_id = t3.id and t3.del_flag = '0'
left join member_plate_number_relation t4 on t4.member_id = t1.member_id and t4.del_flag = '0' <if test="dto.vinCode != null">
join member_plate_number_relation t4 on t4.member_id = t1.member_id and t4.del_flag = '0'
</if>
where where
t1.del_flag = '0' t1.del_flag = '0'
<if test="dto.mobileNumber != null and dto.mobileNumber != ''">and t1.mobile_number like '%${dto.mobileNumber}%'</if> <if test="dto.mobileNumber != null and dto.mobileNumber != ''">and t1.mobile_number like '%${dto.mobileNumber}%'</if>
@@ -226,6 +228,7 @@
<if test="dto.vinCode != null"> <if test="dto.vinCode != null">
and t4.vin_code like '%${dto.vinCode}%' and t4.vin_code like '%${dto.vinCode}%'
</if> </if>
GROUP BY (t1.member_id)
</select> </select>
<select id="getMerchantListByAuth" resultType="com.jsowell.pile.vo.base.MerchantInfoVO"> <select id="getMerchantListByAuth" resultType="com.jsowell.pile.vo.base.MerchantInfoVO">

View File

@@ -52,9 +52,9 @@ export function delInfo(id) {
} }
// 修改会员基础信息 // 修改会员基础信息
export function updateGiftBalance(data) { export function updateMemberBalance(data) {
return request({ return request({
url: '/member/info/updateGiftBalance', url: '/member/info/updateMemberBalance',
method: 'put', method: 'put',
data: data data: data
}) })

View File

@@ -3,7 +3,7 @@
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
label-width="68px"> label-width="68px">
<el-form-item label="运营商" prop="merchantId"> <!-- <el-form-item label="运营商1" prop="merchantId">
<el-select <el-select
v-model="queryParams.merchantId" v-model="queryParams.merchantId"
clearable placeholder="请选择运营商" clearable placeholder="请选择运营商"
@@ -15,12 +15,12 @@
:value="item.merchantId"> :value="item.merchantId">
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>-->
<el-form-item label="会员id" prop="memberId"> <el-form-item label="会员ID" prop="memberId">
<el-input <el-input
v-model="queryParams.memberId" v-model="queryParams.memberId"
placeholder="请输入会员id" placeholder="请输入会员ID"
clearable clearable
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
@@ -142,21 +142,22 @@
<el-table-column label="备注" align="center" prop="remark"/> <el-table-column label="备注" align="center" prop="remark"/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <!-- <el-button
size="mini" size="mini"
type="text" type="text"
icon="el-icon-edit" icon="el-icon-edit"
@click="handleUpdate(scope.row)" @click="handleUpdate(scope.row)"
v-hasPermi="['member:info:edit']" v-hasPermi="['member:info:edit']"
>修改 >修改
</el-button>-->
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdateBalance(scope.row)"
v-hasPermi="['member:balance:update']"
>充值/扣款
</el-button> </el-button>
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-edit"-->
<!-- @click="handleUpdateGiftBalance(scope.row)"-->
<!-- v-hasPermi="['member:balance:update']"-->
<!-- >充值/扣款</el-button>-->
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
@@ -195,12 +196,6 @@
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注"/> <el-input v-model="form.remark" placeholder="请输入备注"/>
</el-form-item> </el-form-item>
<!--<el-form-item label="本金余额" prop="principalBalance">
<el-input v-model="form.principalBalance" placeholder="请输入本金余额" />
</el-form-item>
<el-form-item label="赠送余额" prop="giftBalance">
<el-input v-model="form.giftBalance" placeholder="请输入赠送余额" />
</el-form-item>-->
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button> <el-button type="primary" @click="submitForm"> </el-button>
@@ -209,7 +204,7 @@
</el-dialog> </el-dialog>
<!-- 添加或修改会员余额对话框 --> <!-- 添加或修改会员余额对话框 -->
<el-dialog title="会员充值/扣款" @close="closeUpdateGiftBalance" :visible.sync="openUpdateGiftBalance" width="500px" <el-dialog title="会员充值/扣款" @close="closeUpdateBalance" :visible.sync="openUpdateBalance" width="500px"
append-to-body> append-to-body>
<p>后管平台只能充值赠送余额本金余额只能客户通过手机端充值</p> <p>后管平台只能充值赠送余额本金余额只能客户通过手机端充值</p>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="80px">
@@ -217,21 +212,29 @@
<el-radio v-model="type" label="1" border>充值</el-radio> <el-radio v-model="type" label="1" border>充值</el-radio>
<el-radio v-model="type" label="2" border>扣款</el-radio> <el-radio v-model="type" label="2" border>扣款</el-radio>
</el-form-item> </el-form-item>
<el-form-item label="金额" prop="giftBalance"> <el-form-item label="金额" prop="balance">
<el-input-number v-model="updateGiftBalance" placeholder="请输入金额" :min="0" :controls="false" <el-input-number v-model="updatePrincipalBalance" placeholder="请输入金额" :min="0" :controls="false"
:precision="2"></el-input-number> :precision="2"></el-input-number>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitUpdateGiftBalance"> </el-button> <el-button type="primary" @click="submitUpdateBalance"> </el-button>
<el-button @click="resetGiftBalance"> </el-button> <el-button @click="resetBalance"> </el-button>
</div> </div>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
<script> <script>
import {listInfo, getInfo, delInfo, addInfo, updateInfo, updateGiftBalance, getMerchantList} from "@/api/member/info"; import {
listInfo,
getInfo,
delInfo,
addInfo,
updateInfo,
updateMemberBalance,
getMerchantList,
} from "@/api/member/info";
export default { export default {
name: "Info", name: "Info",
@@ -259,9 +262,9 @@ export default {
title: "", title: "",
// 是否显示弹出层 // 是否显示弹出层
open: false, open: false,
openUpdateGiftBalance: false, // 控制充值扣款对话框 openUpdateBalance: false, // 控制充值扣款对话框
updateGiftBalance: "", // 充值扣款金额 updatePrincipalBalance: "", // 充值扣款金额
updateGiftBalanceMemberId: "", // 需要充值扣款的会员id updateBalanceMemberId: "", // 需要充值扣款的会员id
type: '1', // 操作类型 1-充值2-扣款 type: '1', // 操作类型 1-充值2-扣款
// 查询参数 // 查询参数
queryParams: { queryParams: {
@@ -317,10 +320,10 @@ export default {
}, },
// 获取运营商列表 // 获取运营商列表
getMerchantList() { getMerchantList() {
getMerchantList().then((response) =>{ // getMerchantList().then((response) =>{
console.log("response", response) // console.log("response", response)
this.merchantList = response.obj // this.merchantList = response.obj
}) // })
}, },
// 取消按钮 // 取消按钮
cancel() { cancel() {
@@ -379,44 +382,45 @@ export default {
}); });
}, },
// 重置 充值赠送金额相关 // 重置 充值赠送金额相关
resetGiftBalance() { resetBalance() {
console.log("重置 充值赠送金额相关"); console.log("重置 充值赠送金额相关");
this.openUpdateGiftBalance = false; this.openUpdateBalance = false;
this.updateGiftBalance = ""; this.updateBalance = "";
this.updateGiftBalanceMemberId = ""; this.updateBalanceMemberId = "";
this.type = "1"; this.type = "1";
}, },
// changeInput() { // changeInput() {
// const pattern = /^[1-9][0-9]*$/; // 正整数的正则表达式 // const pattern = /^[1-9][0-9]*$/; // 正整数的正则表达式
// // 不符合正整数时 // // 不符合正整数时
// if (!pattern.test(this.updateGiftBalance)) { // if (!pattern.test(this.updateBalance)) {
// // input 框绑定的内容为空 // // input 框绑定的内容为空
// this.updateGiftBalance = '' // this.updateBalance = ''
// } // }
// }, // },
// 关闭赠送余额 对话框 // 关闭赠送余额 对话框
closeUpdateGiftBalance() { closeUpdateBalance() {
console.log("关闭赠送余额 对话框"); console.log("关闭赠送余额 对话框");
this.resetGiftBalance(); this.resetBalance();
}, },
// 点击充值按钮 // 点击充值按钮
handleUpdateGiftBalance(row) { handleUpdateBalance(row) {
this.openUpdateGiftBalance = true; this.openUpdateBalance = true;
this.updateGiftBalanceMemberId = row.memberId; this.updateBalanceMemberId = row.memberId;
}, },
// 点击对话框确认按钮 // 点击对话框确认按钮
submitUpdateGiftBalance() { submitUpdateBalance() {
const param = { const param = {
memberId: this.updateGiftBalanceMemberId, memberId: this.updateBalanceMemberId,
updateGiftBalance: this.updateGiftBalance, updatePrincipalBalance: this.updatePrincipalBalance,
type: this.type, type: this.type,
subType: this.subType subType: this.subType
}; };
console.log("修改会员赠送余额 param:", param); console.log("修改会员本金余额 param:", param);
updateGiftBalance(param).then(response => { updateMemberBalance(param).then(response => {
console.log("修改会员赠送余额 response:", response); console.log("修改会员本金余额 response:", response);
this.$modal.msgSuccess("充值成功"); this.$modal.msgSuccess("充值成功");
this.openUpdateGiftBalance = false; this.openUpdateBalance = false;
this.getList(); this.getList();
}); });
}, },