123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- package com.ydd.module.service.impl;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import com.ydd.common.core.domain.entity.SysUser;
- import com.ydd.common.enums.DadaDspWithdrawalStatusEnum;
- import com.ydd.common.exception.CustomException;
- import com.ydd.common.utils.DateUtils;
- import com.ydd.module.domain.DadaDsp;
- import com.ydd.module.domain.DadaDspBankCard;
- import com.ydd.module.domain.DadaDspWithdrawal;
- import com.ydd.module.dto.DadaDspAccountDto;
- import com.ydd.module.dto.DadaDspAccountListDto;
- import com.ydd.module.dto.DadaDspWithdrawalDto;
- import com.ydd.module.expection.CustomWebException;
- import com.ydd.module.mapper.DadaDspWithdrawalMapper;
- import com.ydd.module.service.IDadaDspBankCardService;
- import com.ydd.module.service.IDadaDspService;
- import com.ydd.module.service.IDadaDspWithdrawalService;
- import com.ydd.third.common.utils.StringUtils;
- import lombok.RequiredArgsConstructor;
- import org.apache.commons.compress.utils.Lists;
- import org.springframework.beans.BeanUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import java.math.BigDecimal;
- import java.util.List;
- /**
- * 达达配送商-提现管理serviceImpl
- *
- * @author 叶君翔
- * @date 2021-12-29
- */
- @RequiredArgsConstructor(onConstructor_ = @Autowired)
- @Service
- public class DadaDspWithdrawalServiceImpl extends ServiceImpl<DadaDspWithdrawalMapper, DadaDspWithdrawal> implements IDadaDspWithdrawalService {
- private final IDadaDspService iDadaDspService;
- private final IDadaDspBankCardService iDadaDspBankCardService;
- @Override
- public List<DadaDspWithdrawalDto> queryList(DadaDspAccountListDto accountDto, Long dadaDspId) {
- if (!StringUtils.isEmpty(accountDto.getStartDate())) {
- accountDto.setStartDate(DateUtils.parseToBeginTime(accountDto.getStartDate()));
- }
- if (!StringUtils.isEmpty(accountDto.getEndDate())) {
- accountDto.setEndDate(DateUtils.parseToTomorrowBeginTime(accountDto.getEndDate()));
- }
- List<DadaDspWithdrawalDto> list = baseMapper.queryList(accountDto, dadaDspId);
- list.forEach(dto-> {
- DadaDspBankCard bankCard = iDadaDspBankCardService.getOne(new QueryWrapper<DadaDspBankCard>().eq("dada_dsp_id", dto.getDadaDspId())
- .eq("card_no", dto.getAccount()));
- if (bankCard != null && StringUtils.isNotBlank(bankCard.getBankName())) {
- dto.setBankName(bankCard.getBankName());
- }
- });
- return CollectionUtils.isNotEmpty(list) ? list : Lists.newArrayList();
- }
- @Override
- public DadaDspAccountDto getInfo(Long id) {
- DadaDspAccountDto accountDto = new DadaDspAccountDto();
- DadaDsp dadaDsp = iDadaDspService.getById(id);
- accountDto.setCanWithdrawalAmount(dadaDsp != null ? dadaDsp.getAmount() : BigDecimal.ZERO);
- BigDecimal inWithdrawalAmount = baseMapper.selectTotalAmountByDadaDspId(id);
- accountDto.setInWithdrawalAmount(inWithdrawalAmount != null ? inWithdrawalAmount : BigDecimal.ZERO);
- return accountDto;
- }
- @Override
- public boolean deleteBankCard(Long id) {
- return false;
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public boolean addWithdrawal(DadaDspWithdrawal withdrawal, SysUser user) {
- if (StringUtils.isBlank(withdrawal.getAccount())) {
- throw new CustomWebException("提现账号不可为空!");
- }
- if (StringUtils.isEmpty(withdrawal.getType())) {
- throw new CustomWebException("提现类型不可为空!");
- }
- if (!StringUtils.isBlank(withdrawal.getAccount()) && withdrawal.getType() == 0 && StringUtils.isBlank(withdrawal.getZfbName())) {
- throw new CustomWebException("支付宝提现姓名不可为空!");
- }
- if (StringUtils.isEmpty(withdrawal.getAmount()) || withdrawal.getAmount().compareTo(BigDecimal.ZERO) <= 0) {
- throw new CustomWebException("提现金额必须大于0");
- }
- DadaDsp dadaDsp = iDadaDspService.getById(user.getDadaDspId());
- if (dadaDsp == null){
- throw new CustomWebException("风险操作,已被系统拦截!");
- }
- // 校验余额是否充足
- if (withdrawal.getAmount().compareTo(dadaDsp.getAmount()) > 0){
- throw new CustomWebException("余额不足, 发起提现失败!");
- }
- withdrawal.setDadaDspId(dadaDsp.getId());
- withdrawal.setStatus(DadaDspWithdrawalStatusEnum.WAIT.getType());
- int result1 = baseMapper.insert(withdrawal);
- if (result1 != 1) {
- throw new CustomWebException("发起提现失败!");
- }
- dadaDsp.setAmount(dadaDsp.getAmount().subtract(withdrawal.getAmount()));
- boolean result2 = iDadaDspService.updateById(dadaDsp);
- if (!result2) {
- throw new CustomWebException("发起提现失败!");
- }
- return true;
- }
- @Override
- public List<DadaDspWithdrawalDto> withdrawalList(DadaDspAccountListDto accountDto) {
- if (!StringUtils.isEmpty(accountDto.getStartDate())) {
- accountDto.setStartDate(DateUtils.parseToBeginTime(accountDto.getStartDate()));
- }
- if (!StringUtils.isEmpty(accountDto.getEndDate())) {
- accountDto.setEndDate(DateUtils.parseToTomorrowBeginTime(accountDto.getEndDate()));
- }
- List<DadaDspWithdrawalDto> list = baseMapper.withdrawalList(accountDto);
- list.forEach(dto-> {
- DadaDspBankCard bankCard = iDadaDspBankCardService.getOne(new QueryWrapper<DadaDspBankCard>().eq("dada_dsp_id", dto.getDadaDspId())
- .eq("card_no", dto.getAccount()));
- if (bankCard != null && StringUtils.isNotBlank(bankCard.getBankName())) {
- dto.setBankName(bankCard.getBankName());
- }
- });
- return CollectionUtils.isNotEmpty(list) ? list : Lists.newArrayList();
- }
- @Override
- public DadaDspWithdrawalDto getDadaWithdrawal(Long id) {
- DadaDspWithdrawalDto withdrawalDto = new DadaDspWithdrawalDto();
- DadaDspWithdrawal withdrawal = baseMapper.selectById(id);
- BeanUtils.copyProperties(withdrawal, withdrawalDto);
- DadaDspBankCard bankCard = iDadaDspBankCardService.getOne(new QueryWrapper<DadaDspBankCard>().eq("deleted", 0)
- .eq("dada_dsp_id", withdrawalDto.getDadaDspId())
- .eq("card_no", withdrawalDto.getAccount()));
- if (bankCard != null && StringUtils.isNotBlank(bankCard.getBankName())) {
- withdrawalDto.setBankName(bankCard.getBankName());
- }
- return withdrawalDto;
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public boolean verify(DadaDspWithdrawal withdrawal, SysUser user) {
- DadaDspWithdrawal dadaDspWithdrawal = this.getById(withdrawal.getId());
- if (dadaDspWithdrawal == null) {
- throw new CustomWebException("提现申请记录不存在");
- }
- if (DadaDspWithdrawalStatusEnum.REFUSE.getType().equals(withdrawal.getStatus()) && StringUtils.isBlank(withdrawal.getRemark())) {
- throw new CustomWebException("拒绝提现备注必须填写!");
- }
- DadaDsp dadaDsp = iDadaDspService.getById(dadaDspWithdrawal.getDadaDspId());
- if (dadaDsp == null){
- throw new CustomException("配送商信息不存在");
- }
- dadaDspWithdrawal.setStatus(withdrawal.getStatus());
- dadaDspWithdrawal.setRemark(withdrawal.getRemark());
- // 拒绝提现
- if (DadaDspWithdrawalStatusEnum.REFUSE.getType().equals(withdrawal.getStatus())) {
- // 还原配送商商账户可提现余额
- dadaDsp.setAmount(dadaDsp.getAmount().add(dadaDspWithdrawal.getAmount()));
- iDadaDspService.updateById(dadaDsp);
- }
- this.updateById(dadaDspWithdrawal);
- return true;
- }
- }
|