Merge pull request !18 from pikachu/pipi
This commit is contained in:
pikachu 2021-07-27 11:48:19 +00:00 committed by Gitee
commit f798dbf3ec
8 changed files with 95 additions and 75 deletions

View File

@ -1,10 +1,10 @@
package cn.lili.event.impl; package cn.lili.event.impl;
import cn.lili.event.*; import cn.lili.event.*;
import cn.lili.modules.distribution.entity.enums.DistributionCashStatusEnum;
import cn.lili.modules.member.entity.dto.MemberPointMessage; import cn.lili.modules.member.entity.dto.MemberPointMessage;
import cn.lili.modules.member.entity.dto.MemberWithdrawalMessage; import cn.lili.modules.member.entity.dto.MemberWithdrawalMessage;
import cn.lili.modules.member.entity.enums.MemberWithdrawalDestinationEnum; import cn.lili.modules.member.entity.enums.MemberWithdrawalDestinationEnum;
import cn.lili.modules.member.entity.enums.WithdrawStatusEnum;
import cn.lili.modules.message.entity.dto.NoticeMessageDTO; import cn.lili.modules.message.entity.dto.NoticeMessageDTO;
import cn.lili.modules.message.entity.enums.NoticeMessageNodeEnum; import cn.lili.modules.message.entity.enums.NoticeMessageNodeEnum;
import cn.lili.modules.message.entity.enums.NoticeMessageParameterEnum; import cn.lili.modules.message.entity.enums.NoticeMessageParameterEnum;
@ -172,12 +172,10 @@ public class NoticeMessageExecute implements TradeEvent, OrderStatusChangeEvent,
@Override @Override
public void memberWithdrawal(MemberWithdrawalMessage memberWithdrawalMessage) { public void memberWithdrawal(MemberWithdrawalMessage memberWithdrawalMessage) {
//如果提现状态为申请则发送申请提现站内消息
if(memberWithdrawalMessage.getStatus().equals(DistributionCashStatusEnum.APPLY.name())){
//如果提现到余额
if (memberWithdrawalMessage.getDestination().equals(MemberWithdrawalDestinationEnum.WALLET.name())) {
NoticeMessageDTO noticeMessageDTO = new NoticeMessageDTO(); NoticeMessageDTO noticeMessageDTO = new NoticeMessageDTO();
noticeMessageDTO.setMemberId(memberWithdrawalMessage.getMemberId()); noticeMessageDTO.setMemberId(memberWithdrawalMessage.getMemberId());
//如果提现状态为申请则发送申请提现站内消息
if (memberWithdrawalMessage.getStatus().equals(WithdrawStatusEnum.APPLY.name())) {
noticeMessageDTO.setNoticeMessageNodeEnum(NoticeMessageNodeEnum.WALLET_WITHDRAWAL_CREATE); noticeMessageDTO.setNoticeMessageNodeEnum(NoticeMessageNodeEnum.WALLET_WITHDRAWAL_CREATE);
Map<String, String> params = new HashMap<>(2); Map<String, String> params = new HashMap<>(2);
params.put("price", memberWithdrawalMessage.getPrice().toString()); params.put("price", memberWithdrawalMessage.getPrice().toString());
@ -185,21 +183,17 @@ public class NoticeMessageExecute implements TradeEvent, OrderStatusChangeEvent,
//发送提现申请成功消息 //发送提现申请成功消息
noticeMessageService.noticeMessage(noticeMessageDTO); noticeMessageService.noticeMessage(noticeMessageDTO);
} }
}
//如果提现状态为通过则发送审核通过站内消息 //如果提现状态为通过则发送审核通过站内消息
if(memberWithdrawalMessage.getStatus().equals(DistributionCashStatusEnum.PASS.name())){ if (memberWithdrawalMessage.getStatus().equals(WithdrawStatusEnum.VIA_AUDITING.name())) {
//如果提现到余额 //如果提现到余额
if (memberWithdrawalMessage.getDestination().equals(MemberWithdrawalDestinationEnum.WALLET.name())) { if (memberWithdrawalMessage.getDestination().equals(MemberWithdrawalDestinationEnum.WALLET.name())) {
//组织参数 //组织参数
NoticeMessageDTO noticeMessageDTO = new NoticeMessageDTO();
noticeMessageDTO.setMemberId(memberWithdrawalMessage.getMemberId());
Map<String, String> params = new HashMap<>(2); Map<String, String> params = new HashMap<>(2);
params.put("income", memberWithdrawalMessage.getPrice().toString()); params.put("income", memberWithdrawalMessage.getPrice().toString());
noticeMessageDTO.setParameter(params); noticeMessageDTO.setParameter(params);
noticeMessageDTO.setNoticeMessageNodeEnum(NoticeMessageNodeEnum.WALLET_WITHDRAWAL_SUCCESS); noticeMessageDTO.setNoticeMessageNodeEnum(NoticeMessageNodeEnum.WALLET_WITHDRAWAL_SUCCESS);
//发送提现成功消息 //发送提现成功消息
noticeMessageService.noticeMessage(noticeMessageDTO); noticeMessageService.noticeMessage(noticeMessageDTO);
params.put("income", memberWithdrawalMessage.getPrice().toString()); params.put("income", memberWithdrawalMessage.getPrice().toString());
params.put("expenditure", "0"); params.put("expenditure", "0");
noticeMessageDTO.setNoticeMessageNodeEnum(NoticeMessageNodeEnum.WALLET_CHANGE); noticeMessageDTO.setNoticeMessageNodeEnum(NoticeMessageNodeEnum.WALLET_CHANGE);
@ -207,13 +201,25 @@ public class NoticeMessageExecute implements TradeEvent, OrderStatusChangeEvent,
//发送余额变动消息 //发送余额变动消息
noticeMessageService.noticeMessage(noticeMessageDTO); noticeMessageService.noticeMessage(noticeMessageDTO);
} }
//如果提现到微信
if (memberWithdrawalMessage.getDestination().equals(MemberWithdrawalDestinationEnum.WECHAT.name())) {
Map<String, String> params = new HashMap<>(2);
params.put("income", memberWithdrawalMessage.getPrice().toString());
noticeMessageDTO.setParameter(params);
noticeMessageDTO.setNoticeMessageNodeEnum(NoticeMessageNodeEnum.WALLET_WITHDRAWAL_WEICHAT_SUCCESS);
//发送提现成功消息
noticeMessageService.noticeMessage(noticeMessageDTO);
params.put("income", "0");
params.put("expenditure", memberWithdrawalMessage.getPrice().toString());
noticeMessageDTO.setNoticeMessageNodeEnum(NoticeMessageNodeEnum.WALLET_CHANGE);
noticeMessageDTO.setParameter(params);
//发送余额变动消息
noticeMessageService.noticeMessage(noticeMessageDTO);
}
} }
//如果提现状态为拒绝则发送审核拒绝站内消息 //如果提现状态为拒绝则发送审核拒绝站内消息
if(memberWithdrawalMessage.getStatus().equals(DistributionCashStatusEnum.REFUSE.name())){ if (memberWithdrawalMessage.getStatus().equals(WithdrawStatusEnum.FAIL_AUDITING.name())) {
//如果提现到余额
if (memberWithdrawalMessage.getDestination().equals(MemberWithdrawalDestinationEnum.WALLET.name())) {
NoticeMessageDTO noticeMessageDTO = new NoticeMessageDTO();
noticeMessageDTO.setMemberId(memberWithdrawalMessage.getMemberId());
noticeMessageDTO.setNoticeMessageNodeEnum(NoticeMessageNodeEnum.WALLET_WITHDRAWAL_ERROR); noticeMessageDTO.setNoticeMessageNodeEnum(NoticeMessageNodeEnum.WALLET_WITHDRAWAL_ERROR);
Map<String, String> params = new HashMap<>(2); Map<String, String> params = new HashMap<>(2);
params.put("price", memberWithdrawalMessage.getPrice().toString()); params.put("price", memberWithdrawalMessage.getPrice().toString());
@ -221,9 +227,6 @@ public class NoticeMessageExecute implements TradeEvent, OrderStatusChangeEvent,
//发送提现申请成功消息 //发送提现申请成功消息
noticeMessageService.noticeMessage(noticeMessageDTO); noticeMessageService.noticeMessage(noticeMessageDTO);
} }
}
} }

View File

@ -1,7 +1,7 @@
package cn.lili.modules.distribution.entity.dos; package cn.lili.modules.distribution.entity.dos;
import cn.lili.modules.member.entity.enums.WithdrawStatusEnum;
import cn.lili.mybatis.BaseEntity; import cn.lili.mybatis.BaseEntity;
import cn.lili.modules.distribution.entity.enums.DistributionCashStatusEnum;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
@ -59,7 +59,7 @@ public class DistributionCash extends BaseEntity {
this.sn = sn; this.sn = sn;
this.distributionId = distributionId; this.distributionId = distributionId;
this.price = price; this.price = price;
this.distributionCashStatus = DistributionCashStatusEnum.APPLY.name(); this.distributionCashStatus = WithdrawStatusEnum.APPLY.name();
this.distributionName = memberName; this.distributionName = memberName;
} }
} }

View File

@ -1,29 +0,0 @@
package cn.lili.modules.distribution.entity.enums;
/**
* 分销佣金状态
*
* @author pikachu
* @since 2020-03-14 23:04:56
*/
public enum DistributionCashStatusEnum {
/**
* 待处理
*/
APPLY("待处理"),
/**
* 通过
*/
PASS("通过"),
/**
* 拒绝
*/
REFUSE("拒绝");
private final String description;
DistributionCashStatusEnum(String description) {
this.description = description;
}
}

View File

@ -2,6 +2,7 @@ package cn.lili.modules.distribution.serviceimpl;
import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException; import cn.lili.common.exception.ServiceException;
import cn.lili.modules.member.entity.enums.WithdrawStatusEnum;
import cn.lili.rocketmq.RocketmqSendCallbackBuilder; import cn.lili.rocketmq.RocketmqSendCallbackBuilder;
import cn.lili.rocketmq.tags.MemberTagsEnum; import cn.lili.rocketmq.tags.MemberTagsEnum;
import cn.lili.common.utils.CurrencyUtil; import cn.lili.common.utils.CurrencyUtil;
@ -11,7 +12,6 @@ import cn.lili.common.vo.PageVO;
import cn.lili.common.properties.RocketmqCustomProperties; import cn.lili.common.properties.RocketmqCustomProperties;
import cn.lili.modules.distribution.entity.dos.Distribution; import cn.lili.modules.distribution.entity.dos.Distribution;
import cn.lili.modules.distribution.entity.dos.DistributionCash; import cn.lili.modules.distribution.entity.dos.DistributionCash;
import cn.lili.modules.distribution.entity.enums.DistributionCashStatusEnum;
import cn.lili.modules.distribution.entity.enums.DistributionStatusEnum; import cn.lili.modules.distribution.entity.enums.DistributionStatusEnum;
import cn.lili.modules.distribution.entity.vos.DistributionCashSearchParams; import cn.lili.modules.distribution.entity.vos.DistributionCashSearchParams;
import cn.lili.modules.distribution.mapper.DistributionCashMapper; import cn.lili.modules.distribution.mapper.DistributionCashMapper;
@ -84,7 +84,7 @@ public class DistributionCashServiceImpl extends ServiceImpl<DistributionCashMap
memberWithdrawalMessage.setMemberId(distribution.getMemberId()); memberWithdrawalMessage.setMemberId(distribution.getMemberId());
memberWithdrawalMessage.setPrice(applyMoney); memberWithdrawalMessage.setPrice(applyMoney);
memberWithdrawalMessage.setDestination(MemberWithdrawalDestinationEnum.WALLET.name()); memberWithdrawalMessage.setDestination(MemberWithdrawalDestinationEnum.WALLET.name());
memberWithdrawalMessage.setStatus(DistributionCashStatusEnum.APPLY.name()); memberWithdrawalMessage.setStatus(WithdrawStatusEnum.APPLY.name());
String destination = rocketmqCustomProperties.getMemberTopic() + ":" + MemberTagsEnum.MEMBER_WITHDRAWAL.name(); String destination = rocketmqCustomProperties.getMemberTopic() + ":" + MemberTagsEnum.MEMBER_WITHDRAWAL.name();
rocketMQTemplate.asyncSend(destination, memberWithdrawalMessage, RocketmqSendCallbackBuilder.commonCallback()); rocketMQTemplate.asyncSend(destination, memberWithdrawalMessage, RocketmqSendCallbackBuilder.commonCallback());
return true; return true;
@ -125,8 +125,8 @@ public class DistributionCashServiceImpl extends ServiceImpl<DistributionCashMap
if (distribution != null && distributorCash != null && distribution.getDistributionStatus().equals(DistributionStatusEnum.PASS.name())) { if (distribution != null && distributorCash != null && distribution.getDistributionStatus().equals(DistributionStatusEnum.PASS.name())) {
MemberWithdrawalMessage memberWithdrawalMessage = new MemberWithdrawalMessage(); MemberWithdrawalMessage memberWithdrawalMessage = new MemberWithdrawalMessage();
//审核通过 //审核通过
if (result.equals(DistributionCashStatusEnum.PASS.name())) { if (result.equals(WithdrawStatusEnum.VIA_AUDITING.name())) {
memberWithdrawalMessage.setStatus(DistributionCashStatusEnum.PASS.name()); memberWithdrawalMessage.setStatus(WithdrawStatusEnum.VIA_AUDITING.name());
//审核通过需要校验冻结金额不足情况 //审核通过需要校验冻结金额不足情况
if (distribution.getCommissionFrozen() < distributorCash.getPrice()) { if (distribution.getCommissionFrozen() < distributorCash.getPrice()) {
throw new ServiceException(ResultCode.WALLET_WITHDRAWAL_INSUFFICIENT); throw new ServiceException(ResultCode.WALLET_WITHDRAWAL_INSUFFICIENT);
@ -134,17 +134,17 @@ public class DistributionCashServiceImpl extends ServiceImpl<DistributionCashMap
//分销员佣金解冻 //分销员佣金解冻
distribution.setCommissionFrozen(CurrencyUtil.sub(distribution.getCommissionFrozen(), distributorCash.getPrice())); distribution.setCommissionFrozen(CurrencyUtil.sub(distribution.getCommissionFrozen(), distributorCash.getPrice()));
//分销记录操作 //分销记录操作
distributorCash.setDistributionCashStatus(DistributionCashStatusEnum.PASS.name()); distributorCash.setDistributionCashStatus(WithdrawStatusEnum.VIA_AUDITING.name());
distributorCash.setPayTime(new Date()); distributorCash.setPayTime(new Date());
//提现到余额 //提现到余额
memberWalletService.increase(distributorCash.getPrice(), distribution.getMemberId(), "分销佣金提现到余额", DepositServiceTypeEnum.WALLET_COMMISSION.name()); memberWalletService.increase(distributorCash.getPrice(), distribution.getMemberId(), "分销佣金提现到余额", DepositServiceTypeEnum.WALLET_COMMISSION.name());
} else { } else {
memberWithdrawalMessage.setStatus(DistributionCashStatusEnum.REFUSE.name()); memberWithdrawalMessage.setStatus(WithdrawStatusEnum.FAIL_AUDITING.name());
//分销员佣金解冻 //分销员佣金解冻
distribution.setCommissionFrozen(CurrencyUtil.sub(distribution.getCommissionFrozen(), distributorCash.getPrice())); distribution.setCommissionFrozen(CurrencyUtil.sub(distribution.getCommissionFrozen(), distributorCash.getPrice()));
//分销员可提现金额退回 //分销员可提现金额退回
distribution.setCanRebate(CurrencyUtil.add(distribution.getCanRebate(), distributorCash.getPrice())); distribution.setCanRebate(CurrencyUtil.add(distribution.getCanRebate(), distributorCash.getPrice()));
distributorCash.setDistributionCashStatus(DistributionCashStatusEnum.REFUSE.name()); distributorCash.setDistributionCashStatus(WithdrawStatusEnum.FAIL_AUDITING.name());
} }
//分销员金额相关处理 //分销员金额相关处理
distributionService.updateById(distribution); distributionService.updateById(distribution);
@ -169,7 +169,7 @@ public class DistributionCashServiceImpl extends ServiceImpl<DistributionCashMap
@Override @Override
public Integer newDistributionCash() { public Integer newDistributionCash() {
QueryWrapper queryWrapper = Wrappers.query(); QueryWrapper queryWrapper = Wrappers.query();
queryWrapper.eq("distribution_cash_status", DistributionCashStatusEnum.APPLY.name()); queryWrapper.eq("distribution_cash_status", WithdrawStatusEnum.APPLY.name());
return this.count(queryWrapper); return this.count(queryWrapper);
} }
} }

View File

@ -3,6 +3,7 @@ package cn.lili.modules.member.serviceimpl;
import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException; import cn.lili.common.exception.ServiceException;
import cn.lili.common.properties.RocketmqCustomProperties;
import cn.lili.common.security.AuthUser; import cn.lili.common.security.AuthUser;
import cn.lili.common.security.context.UserContext; import cn.lili.common.security.context.UserContext;
import cn.lili.common.utils.CurrencyUtil; import cn.lili.common.utils.CurrencyUtil;
@ -11,6 +12,8 @@ import cn.lili.common.utils.StringUtils;
import cn.lili.modules.member.entity.dos.Member; import cn.lili.modules.member.entity.dos.Member;
import cn.lili.modules.member.entity.dos.MemberWallet; import cn.lili.modules.member.entity.dos.MemberWallet;
import cn.lili.modules.member.entity.dos.MemberWithdrawApply; import cn.lili.modules.member.entity.dos.MemberWithdrawApply;
import cn.lili.modules.member.entity.dto.MemberWithdrawalMessage;
import cn.lili.modules.member.entity.enums.MemberWithdrawalDestinationEnum;
import cn.lili.modules.member.entity.enums.WithdrawStatusEnum; import cn.lili.modules.member.entity.enums.WithdrawStatusEnum;
import cn.lili.modules.member.entity.vo.MemberWalletVO; import cn.lili.modules.member.entity.vo.MemberWalletVO;
import cn.lili.modules.member.mapper.MemberWalletMapper; import cn.lili.modules.member.mapper.MemberWalletMapper;
@ -24,9 +27,12 @@ import cn.lili.modules.system.entity.dos.Setting;
import cn.lili.modules.system.entity.dto.WithdrawalSetting; import cn.lili.modules.system.entity.dto.WithdrawalSetting;
import cn.lili.modules.system.entity.enums.SettingEnum; import cn.lili.modules.system.entity.enums.SettingEnum;
import cn.lili.modules.system.service.SettingService; import cn.lili.modules.system.service.SettingService;
import cn.lili.rocketmq.RocketmqSendCallbackBuilder;
import cn.lili.rocketmq.tags.MemberTagsEnum;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.gson.Gson; import com.google.gson.Gson;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -45,6 +51,12 @@ import java.util.Date;
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public class MemberWalletServiceImpl extends ServiceImpl<MemberWalletMapper, MemberWallet> implements MemberWalletService { public class MemberWalletServiceImpl extends ServiceImpl<MemberWalletMapper, MemberWallet> implements MemberWalletService {
@Autowired
private RocketMQTemplate rocketMQTemplate;
@Autowired
private RocketmqCustomProperties rocketmqCustomProperties;
/** /**
* 预存款日志 * 预存款日志
*/ */
@ -230,6 +242,7 @@ public class MemberWalletServiceImpl extends ServiceImpl<MemberWalletMapper, Mem
*/ */
@Override @Override
public Boolean applyWithdrawal(Double price) { public Boolean applyWithdrawal(Double price) {
MemberWithdrawalMessage memberWithdrawalMessage = new MemberWithdrawalMessage();
AuthUser authUser = UserContext.getCurrentUser(); AuthUser authUser = UserContext.getCurrentUser();
//构建审核参数 //构建审核参数
MemberWithdrawApply memberWithdrawApply = new MemberWithdrawApply(); MemberWithdrawApply memberWithdrawApply = new MemberWithdrawApply();
@ -251,15 +264,24 @@ public class MemberWalletServiceImpl extends ServiceImpl<MemberWalletMapper, Mem
if (memberWalletVO.getMemberWallet() < price) { if (memberWalletVO.getMemberWallet() < price) {
throw new ServiceException(ResultCode.WALLET_WITHDRAWAL_INSUFFICIENT); throw new ServiceException(ResultCode.WALLET_WITHDRAWAL_INSUFFICIENT);
} }
memberWithdrawalMessage.setStatus(WithdrawStatusEnum.VIA_AUDITING.name());
//微信零钱提现 //微信零钱提现
Boolean result = withdrawal(memberWithdrawApply); Boolean result = withdrawal(memberWithdrawApply);
if (result) { if (result) {
this.reduce(price, authUser.getId(), "余额提现成功", DepositServiceTypeEnum.WALLET_WITHDRAWAL.name()); this.reduce(price, authUser.getId(), "余额提现成功", DepositServiceTypeEnum.WALLET_WITHDRAWAL.name());
} }
} else { } else {
memberWithdrawalMessage.setStatus(WithdrawStatusEnum.APPLY.name());
//扣减余额到冻结金额 //扣减余额到冻结金额
this.reduceWithdrawal(price, authUser.getId(), "提现金额已冻结,审核成功后到账", DepositServiceTypeEnum.WALLET_WITHDRAWAL.name()); this.reduceWithdrawal(price, authUser.getId(), "提现金额已冻结,审核成功后到账", DepositServiceTypeEnum.WALLET_WITHDRAWAL.name());
} }
//发送余额提现申请消息
memberWithdrawalMessage.setMemberId(authUser.getId());
memberWithdrawalMessage.setPrice(price);
memberWithdrawalMessage.setDestination(MemberWithdrawalDestinationEnum.WECHAT.name());
String destination = rocketmqCustomProperties.getMemberTopic() + ":" + MemberTagsEnum.MEMBER_WITHDRAWAL.name();
rocketMQTemplate.asyncSend(destination, memberWithdrawalMessage, RocketmqSendCallbackBuilder.commonCallback());
} }
return memberWithdrawApplyService.save(memberWithdrawApply); return memberWithdrawApplyService.save(memberWithdrawApply);
} }

View File

@ -3,7 +3,9 @@ package cn.lili.modules.member.serviceimpl;
import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException; import cn.lili.common.exception.ServiceException;
import cn.lili.common.utils.DateUtil; import cn.lili.common.properties.RocketmqCustomProperties;
import cn.lili.modules.member.entity.dto.MemberWithdrawalMessage;
import cn.lili.modules.member.entity.enums.MemberWithdrawalDestinationEnum;
import cn.lili.mybatis.util.PageUtil; import cn.lili.mybatis.util.PageUtil;
import cn.lili.common.utils.StringUtils; import cn.lili.common.utils.StringUtils;
import cn.lili.common.vo.PageVO; import cn.lili.common.vo.PageVO;
@ -15,9 +17,12 @@ import cn.lili.modules.member.mapper.MemberWithdrawApplyMapper;
import cn.lili.modules.member.service.MemberWalletService; import cn.lili.modules.member.service.MemberWalletService;
import cn.lili.modules.member.service.MemberWithdrawApplyService; import cn.lili.modules.member.service.MemberWithdrawApplyService;
import cn.lili.modules.order.trade.entity.enums.DepositServiceTypeEnum; import cn.lili.modules.order.trade.entity.enums.DepositServiceTypeEnum;
import cn.lili.rocketmq.RocketmqSendCallbackBuilder;
import cn.lili.rocketmq.tags.MemberTagsEnum;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
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.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -35,6 +40,11 @@ import java.util.Date;
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public class MemberWithdrawApplyServiceImpl extends ServiceImpl<MemberWithdrawApplyMapper, MemberWithdrawApply> implements MemberWithdrawApplyService { public class MemberWithdrawApplyServiceImpl extends ServiceImpl<MemberWithdrawApplyMapper, MemberWithdrawApply> implements MemberWithdrawApplyService {
@Autowired
private RocketMQTemplate rocketMQTemplate;
@Autowired
private RocketmqCustomProperties rocketmqCustomProperties;
/** /**
* 会员余额 * 会员余额
*/ */
@ -43,6 +53,7 @@ public class MemberWithdrawApplyServiceImpl extends ServiceImpl<MemberWithdrawAp
@Override @Override
public Boolean audit(String applyId, Boolean result, String remark) { public Boolean audit(String applyId, Boolean result, String remark) {
MemberWithdrawalMessage memberWithdrawalMessage = new MemberWithdrawalMessage();
//查询申请记录 //查询申请记录
MemberWithdrawApply memberWithdrawApply = this.getById(applyId); MemberWithdrawApply memberWithdrawApply = this.getById(applyId);
memberWithdrawApply.setInspectRemark(remark); memberWithdrawApply.setInspectRemark(remark);
@ -60,13 +71,17 @@ public class MemberWithdrawApplyServiceImpl extends ServiceImpl<MemberWithdrawAp
//提现微信提现成功后扣减冻结金额 //提现微信提现成功后扣减冻结金额
Boolean bool = memberWalletService.withdrawal(memberWithdrawApply); Boolean bool = memberWalletService.withdrawal(memberWithdrawApply);
if (bool) { if (bool) {
memberWithdrawalMessage.setStatus(WithdrawStatusEnum.VIA_AUDITING.name());
//保存修改审核记录 //保存修改审核记录
this.updateById(memberWithdrawApply); this.updateById(memberWithdrawApply);
//记录日志 //记录日志
memberWalletService.reduceFrozen(memberWithdrawApply.getApplyMoney(), memberWithdrawApply.getMemberId(), "审核通过,余额提现", DepositServiceTypeEnum.WALLET_WITHDRAWAL.name()); memberWalletService.reduceFrozen(memberWithdrawApply.getApplyMoney(), memberWithdrawApply.getMemberId(), "审核通过,余额提现", DepositServiceTypeEnum.WALLET_WITHDRAWAL.name());
return true; } else {
//如果提现失败则无法审核
throw new ServiceException(ResultCode.WALLET_APPLY_ERROR);
} }
} else { } else {
memberWithdrawalMessage.setStatus(WithdrawStatusEnum.FAIL_AUDITING.name());
//如果审核拒绝 审核备注必填 //如果审核拒绝 审核备注必填
if (StringUtils.isEmpty(remark)) { if (StringUtils.isEmpty(remark)) {
throw new ServiceException(ResultCode.WALLET_REMARK_ERROR); throw new ServiceException(ResultCode.WALLET_REMARK_ERROR);
@ -76,8 +91,15 @@ public class MemberWithdrawApplyServiceImpl extends ServiceImpl<MemberWithdrawAp
this.updateById(memberWithdrawApply); this.updateById(memberWithdrawApply);
//需要从冻结金额扣减到余额 //需要从冻结金额扣减到余额
memberWalletService.increaseWithdrawal(memberWithdrawApply.getApplyMoney(), memberWithdrawApply.getMemberId(), "审核拒绝,提现金额解冻到余额", DepositServiceTypeEnum.WALLET_WITHDRAWAL.name()); memberWalletService.increaseWithdrawal(memberWithdrawApply.getApplyMoney(), memberWithdrawApply.getMemberId(), "审核拒绝,提现金额解冻到余额", DepositServiceTypeEnum.WALLET_WITHDRAWAL.name());
return true;
} }
//发送审核消息
memberWithdrawalMessage.setMemberId(memberWithdrawApply.getMemberId());
memberWithdrawalMessage.setPrice(memberWithdrawApply.getApplyMoney());
memberWithdrawalMessage.setDestination(MemberWithdrawalDestinationEnum.WECHAT.name());
String destination = rocketmqCustomProperties.getMemberTopic() + ":" + MemberTagsEnum.MEMBER_WITHDRAWAL.name();
rocketMQTemplate.asyncSend(destination, memberWithdrawalMessage, RocketmqSendCallbackBuilder.commonCallback());
return true;
} }
throw new ServiceException(ResultCode.WALLET_APPLY_ERROR); throw new ServiceException(ResultCode.WALLET_APPLY_ERROR);
} }

View File

@ -49,7 +49,8 @@ public enum NoticeMessageNodeEnum {
*/ */
WALLET_CHANGE("余额账户变更通知"), WALLET_CHANGE("余额账户变更通知"),
WALLET_WITHDRAWAL_CREATE("提现申请提交成功通知"), WALLET_WITHDRAWAL_CREATE("提现申请提交成功通知"),
WALLET_WITHDRAWAL_SUCCESS("提现成功通知"), WALLET_WITHDRAWAL_SUCCESS("余额提现成功通知"),
WALLET_WITHDRAWAL_WEICHAT_SUCCESS("微信提现成功通知"),
WALLET_WITHDRAWAL_ERROR("提现申请驳回通知"); WALLET_WITHDRAWAL_ERROR("提现申请驳回通知");

View File

@ -11,7 +11,7 @@
Target Server Version : 80023 Target Server Version : 80023
File Encoding : 65001 File Encoding : 65001
Date: 21/07/2021 19:26:53 Date: 27/07/2021 19:42:15
*/ */
SET NAMES utf8mb4; SET NAMES utf8mb4;
@ -57,9 +57,10 @@ INSERT INTO `li_notice_message` VALUES (14, NULL, '2021-07-15 19:39:39.000000',
INSERT INTO `li_notice_message` VALUES (15, NULL, '2021-07-15 19:44:38.000000', NULL, NULL, '2021-07-15 19:44:40.000000', '售后单 #{商品名称} 已经完成,请关注及时关注售后单状态~', '售后完成通知', 'OPEN', '售后完成通知', 'goods'); INSERT INTO `li_notice_message` VALUES (15, NULL, '2021-07-15 19:44:38.000000', NULL, NULL, '2021-07-15 19:44:40.000000', '售后单 #{商品名称} 已经完成,请关注及时关注售后单状态~', '售后完成通知', 'OPEN', '售后完成通知', 'goods');
INSERT INTO `li_notice_message` VALUES (16, NULL, '2021-07-15 19:47:27.000000', NULL, NULL, '2021-07-15 19:47:31.000000', '您当前到账{获得积分}积分,消费#{消费积分} 积分,积分可以抵现金哦,真的很棒棒呢~', '积分变更通知', 'OPEN', '积分变更通知', 'income_points,expenditure_points'); INSERT INTO `li_notice_message` VALUES (16, NULL, '2021-07-15 19:47:27.000000', NULL, NULL, '2021-07-15 19:47:31.000000', '您当前到账{获得积分}积分,消费#{消费积分} 积分,积分可以抵现金哦,真的很棒棒呢~', '积分变更通知', 'OPEN', '积分变更通知', 'income_points,expenditure_points');
INSERT INTO `li_notice_message` VALUES (17, NULL, '2021-07-15 19:53:10.000000', NULL, NULL, '2021-07-15 19:53:13.000000', '您的余额账户今日收入¥#{收入金额},支出¥#{支出金额},如遇异常变动,请及时联系我们哦~', '余额账户变更通知', 'OPEN', '余额账户变更通知', 'income,expenditure'); INSERT INTO `li_notice_message` VALUES (17, NULL, '2021-07-15 19:53:10.000000', NULL, NULL, '2021-07-15 19:53:13.000000', '您的余额账户今日收入¥#{收入金额},支出¥#{支出金额},如遇异常变动,请及时联系我们哦~', '余额账户变更通知', 'OPEN', '余额账户变更通知', 'income,expenditure');
INSERT INTO `li_notice_message` VALUES (18, NULL, '2021-07-15 19:57:01.000000', NULL, NULL, '2021-07-15 19:57:04.000000', '恭喜您,您的提处理成功,提现金额为¥#{收入金额}将在1-3工作日内到账', '提现成功通知', 'OPEN', '提现成功通知', 'income'); INSERT INTO `li_notice_message` VALUES (18, NULL, '2021-07-15 19:57:01.000000', NULL, NULL, '2021-07-15 19:57:04.000000', '恭喜您,您的提处理成功,提现金额为¥#{收入金额}请及时关注余额变动哦~', '余额提现成功通知', 'OPEN', '余额提现成功通知', 'income');
INSERT INTO `li_notice_message` VALUES (19, NULL, '2021-07-21 18:58:10.000000', NULL, NULL, '2021-07-21 18:58:13.000000', '恭喜您,您的提现金额为¥#{金额}的申请已经提交审核,请及时关注审核动态哦~', '提现申请提交成功通知', 'OPEN', '提现申请提交成功通知', 'price'); INSERT INTO `li_notice_message` VALUES (19, NULL, '2021-07-21 18:58:10.000000', NULL, NULL, '2021-07-21 18:58:13.000000', '恭喜您,您的提现金额为¥#{金额}的申请已经提交审核,请及时关注审核动态哦~', '提现申请提交成功通知', 'OPEN', '提现申请提交成功通知', 'price');
INSERT INTO `li_notice_message` VALUES (20, NULL, '2021-07-21 19:16:58.000000', NULL, NULL, '2021-07-21 19:17:02.000000', '很抱歉,您的提现金额为¥#{金额}的申请已被拒绝,如有问题请及时联系管理员哦~', '提现申请驳回通知', 'OPEN', '提现申请驳回通知', 'price'); INSERT INTO `li_notice_message` VALUES (20, NULL, '2021-07-21 19:16:58.000000', NULL, NULL, '2021-07-21 19:17:02.000000', '很抱歉,您的提现金额为¥#{金额}的申请已被拒绝,如有问题请及时联系管理员哦~', '提现申请驳回通知', 'OPEN', '提现申请驳回通知', 'price');
INSERT INTO `li_notice_message` VALUES (21, NULL, '2021-07-26 18:59:00.000000', NULL, NULL, '2021-07-26 18:59:03.000000', '恭喜您,您的提处理成功,提现金额为¥#{收入金额}将在1-3个工作日内到账~', '微信提现成功通知', 'OPEN', '微信提现成功通知', 'income');
COMMIT; COMMIT;
SET FOREIGN_KEY_CHECKS = 1; SET FOREIGN_KEY_CHECKS = 1;