From 707a7b28f6955c0cf9de2d90b6361ddc6a468d59 Mon Sep 17 00:00:00 2001 From: gao <gaoleox@163> Date: Tue, 16 Jun 2020 16:08:57 +0800 Subject: [PATCH] Merge branch 'master' of https://chonggaoxiao:xcg523511090712@gitee.com/chonggaoxiao/new_excoin_manage.git --- src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java | 309 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 308 insertions(+), 1 deletions(-) diff --git a/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java b/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java index 72f4d90..867a793 100644 --- a/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java +++ b/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java @@ -6,19 +6,37 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xcong.excoin.common.entity.FebsResponse; import com.xcong.excoin.common.entity.QueryRequest; +import com.xcong.excoin.modules.member.dto.MemberDetailConfirmDto; import com.xcong.excoin.modules.member.entity.MemberAccountMoneyChangeEntity; +import com.xcong.excoin.modules.member.entity.MemberCoinAddressEntity; +import com.xcong.excoin.modules.member.entity.MemberCoinChargeEntity; +import com.xcong.excoin.modules.member.entity.MemberCoinWithdrawEntity; import com.xcong.excoin.modules.member.entity.MemberEntity; import com.xcong.excoin.modules.member.entity.MemberQuickBuySaleEntity; import com.xcong.excoin.modules.member.entity.MemberWalletCoinEntity; import com.xcong.excoin.modules.member.mapper.MemberAccountMoneyChangeMapper; +import com.xcong.excoin.modules.member.mapper.MemberAuthenticationMapper; +import com.xcong.excoin.modules.member.mapper.MemberCoinAddressMapper; +import com.xcong.excoin.modules.member.mapper.MemberCoinChargeMapper; +import com.xcong.excoin.modules.member.mapper.MemberCoinWithdrawMapper; import com.xcong.excoin.modules.member.mapper.MemberMapper; import com.xcong.excoin.modules.member.mapper.MemberQuickBuySaleMapper; import com.xcong.excoin.modules.member.mapper.MemberWalletCoinMapper; import com.xcong.excoin.modules.member.service.IMemberService; +import com.xcong.excoin.modules.member.vo.MemberAuthenticationVo; +import com.xcong.excoin.modules.member.vo.MemberCoinChargeVo; +import com.xcong.excoin.modules.member.vo.MemberCoinWithdrawVo; import com.xcong.excoin.modules.member.vo.MemberQuickBuySaleVo; +import com.xcong.excoin.modules.member.vo.MemberQuickSaleVo; import lombok.RequiredArgsConstructor; import java.math.BigDecimal; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.validation.Valid; import javax.validation.constraints.NotNull; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -31,11 +49,21 @@ @RequiredArgsConstructor public class MemberServiceImpl extends ServiceImpl<MemberMapper, MemberEntity> implements IMemberService { + private final MemberMapper memberMapper; + private final MemberQuickBuySaleMapper memberQuickBuySaleMapper; private final MemberWalletCoinMapper memberWalletCoinMapper; private final MemberAccountMoneyChangeMapper memberAccountMoneyChangeMapper; + + private final MemberCoinChargeMapper memberCoinChargeMapper; + + private final MemberCoinWithdrawMapper memberCoinWithdrawMapper; + + private final MemberCoinAddressMapper memberCoinAddressMapper; + + private final MemberAuthenticationMapper memberAuthenticationMapper; @Override @@ -90,6 +118,11 @@ memberAccountMoneyChangeEntity.setStatus(MemberAccountMoneyChangeEntity.STATUS_SUCCESS_INTEGER); memberAccountMoneyChangeEntity.setSymbol("USDT"); memberAccountMoneyChangeEntity.setType(MemberAccountMoneyChangeEntity.TYPE_WALLET_COIN); + memberAccountMoneyChangeEntity.setCreateBy(selectById.getCreateBy()); + memberAccountMoneyChangeEntity.setCreateTime(new Date()); + memberAccountMoneyChangeEntity.setUpdateBy(selectById.getCreateBy()); + memberAccountMoneyChangeEntity.setUpdateTime(new Date()); + memberAccountMoneyChangeMapper.insert(memberAccountMoneyChangeEntity); /** * todo @@ -101,7 +134,7 @@ SmsUtils.hxSmsSend(member.getPhone(), smsContent); */ - return new FebsResponse().message("拨币成功"); + return new FebsResponse().success(); } @Override @@ -121,4 +154,278 @@ return new FebsResponse().success(); } + + @Override + public IPage<MemberQuickSaleVo> findmemberQuickSaleListInPage(MemberQuickBuySaleEntity memberQuickBuySaleEntity, + QueryRequest request) { + Page<MemberQuickBuySaleEntity> page = new Page<>(request.getPageNum(), request.getPageSize()); + IPage<MemberQuickSaleVo> findmemberQuickBuySaleListInPage = memberQuickBuySaleMapper.findmemberQuickSaleListInPage(page, memberQuickBuySaleEntity); + return findmemberQuickBuySaleListInPage; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public FebsResponse memberExtractUsdtCancel(@NotNull(message = "{required}") Long id) { + MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleMapper.selectById(id); + + if(!MemberQuickBuySaleEntity.CHARGE_STATUS_CREATE.equals(memberQuickBuySaleEntity.getOrderStatus())) { + return new FebsResponse().message("只允许待付款状态操作"); + } + + Long memberId = memberQuickBuySaleEntity.getMemberId(); + BigDecimal amountUsdt = memberQuickBuySaleEntity.getAmountUsdt(); + String walletCode = "USDT"; + + MemberEntity selectById = this.baseMapper.selectById(memberId); + if(ObjectUtils.isEmpty(selectById)) { + return new FebsResponse().message("用户已不存在"); + } + //获取币币钱包 + MemberWalletCoinEntity memberWalletCoinEntity = memberWalletCoinMapper.findWalletCoinByMemberIdAndWalletCode(memberId,walletCode); + BigDecimal frozenBalance = memberWalletCoinEntity.getFrozenBalance(); + BigDecimal availableBalance = memberWalletCoinEntity.getAvailableBalance(); + BigDecimal totalBalance = memberWalletCoinEntity.getTotalBalance(); + memberWalletCoinEntity.setFrozenBalance(frozenBalance.subtract(amountUsdt)); + memberWalletCoinEntity.setAvailableBalance(availableBalance.add(amountUsdt)); + memberWalletCoinEntity.setTotalBalance(totalBalance.add(amountUsdt)); + // 更新 + memberWalletCoinMapper.updateById(memberWalletCoinEntity); + // 更新状态 + memberQuickBuySaleEntity.setOrderStatus(MemberQuickBuySaleEntity.CHARGE_STATUS_CANCEL_SYSTEM); + memberQuickBuySaleMapper.updateById(memberQuickBuySaleEntity); + + /** + * todo + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + String chargeTime = format.format(memberQuickBuySaleEntity.getChargeTime()); // 将当前时间袼式化为指定的格式 + String usdt = memberQuickBuySaleEntity.getAmountUsdt()+"USDT"; + //发送短信提醒 + String smsContent = "【Excoin】尊敬的用户您好!您于"+chargeTime+"充值"+usdt+"已成功到账,请您及时查收!订单号为:"+memberChargeUsdt.getOrderCode()+"。"; + SmsUtils.hxSmsSend(member.getPhone(), smsContent); + + */ + return new FebsResponse().success(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public FebsResponse memberExtractUsdtConfirm(@NotNull(message = "{required}") Long id) { + + MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleMapper.selectById(id); + + if(!MemberQuickBuySaleEntity.CHARGE_STATUS_CREATE.equals(memberQuickBuySaleEntity.getOrderStatus())) { + return new FebsResponse().message("只允许待付款状态操作"); + } + + Long memberId = memberQuickBuySaleEntity.getMemberId(); + BigDecimal amountUsdt = memberQuickBuySaleEntity.getAmountUsdt(); + String walletCode = "USDT"; + + MemberEntity selectById = this.baseMapper.selectById(memberId); + if(ObjectUtils.isEmpty(selectById)) { + return new FebsResponse().message("用户已不存在"); + } + + //获取币币钱包 + MemberWalletCoinEntity memberWalletCoinEntity = memberWalletCoinMapper.findWalletCoinByMemberIdAndWalletCode(memberId,walletCode); + BigDecimal frozenBalance = memberWalletCoinEntity.getFrozenBalance(); + memberWalletCoinEntity.setFrozenBalance(frozenBalance.subtract(amountUsdt)); + memberWalletCoinMapper.updateById(memberWalletCoinEntity); + + memberQuickBuySaleEntity.setOrderStatus(MemberQuickBuySaleEntity.CHARGE_STATUS_PAID); + memberQuickBuySaleMapper.updateById(memberQuickBuySaleEntity); + + //添加币币资金划转历史记录 + MemberAccountMoneyChangeEntity memberAccountMoneyChangeEntity = new MemberAccountMoneyChangeEntity(); + memberAccountMoneyChangeEntity.setContent("提现"); + memberAccountMoneyChangeEntity.setMemberId(memberId); + memberAccountMoneyChangeEntity.setAmount(amountUsdt); + memberAccountMoneyChangeEntity.setStatus(MemberAccountMoneyChangeEntity.STATUS_SUCCESS_INTEGER); + memberAccountMoneyChangeEntity.setSymbol(walletCode); + memberAccountMoneyChangeEntity.setType(MemberAccountMoneyChangeEntity.TYPE_WALLET_COIN); + memberAccountMoneyChangeEntity.setCreateBy(selectById.getCreateBy()); + memberAccountMoneyChangeEntity.setCreateTime(new Date()); + memberAccountMoneyChangeEntity.setUpdateBy(selectById.getCreateBy()); + memberAccountMoneyChangeEntity.setUpdateTime(new Date()); + memberAccountMoneyChangeMapper.insert(memberAccountMoneyChangeEntity); + + /** + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + String chargeTime = format.format(memberQuickBuySaleEntity.getUpdateTime()); // 将当前时间袼式化为指定的格式 + String usdt = amountUsdt+"USDT"; + //发送短信提醒 + String smsContent = "【Excoin】尊敬的用户您好!您于"+chargeTime+"提现"+usdt+"已成功到账,请您及时查收!订单号为:"+memberQuickBuySaleEntity.getOrderCode()+"。"; + SmsUtils.hxSmsSend(selectById.getPhone(), smsContent); + * + */ + + return new FebsResponse().success(); + } + + @Override + public IPage<MemberCoinChargeVo> findMemberApplyCoinListInPage(MemberCoinChargeEntity memberCoinChargeEntity, + QueryRequest request) { + Page<MemberCoinChargeEntity> page = new Page<>(request.getPageNum(), request.getPageSize()); + IPage<MemberCoinChargeVo> findmemberQuickBuySaleListInPage = memberCoinChargeMapper.findMemberApplyCoinListInPage(page, memberCoinChargeEntity); + return findmemberQuickBuySaleListInPage; + } + + @Override + public IPage<MemberCoinWithdrawVo> findmemberWithdrawCoinListInPage( + MemberCoinWithdrawEntity memberCoinWithdrawEntity, QueryRequest request) { + Page<MemberCoinWithdrawEntity> page = new Page<>(request.getPageNum(), request.getPageSize()); + IPage<MemberCoinWithdrawVo> findmemberQuickBuySaleListInPage = memberCoinWithdrawMapper.findmemberWithdrawCoinListInPage(page, memberCoinWithdrawEntity); + return findmemberQuickBuySaleListInPage; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public FebsResponse memberWithdrawCoinConfirm(@NotNull(message = "{required}") Long id) { + + MemberCoinWithdrawEntity selectById = memberCoinWithdrawMapper.selectById(id); + Long memberId = selectById.getMemberId(); + String symbol = selectById.getSymbol(); + String address = selectById.getAddress(); + int status = selectById.getStatus(); + if(status != 1) { + return new FebsResponse().fail().message("只有等待审核的状态才能确认!"); + } + + // 查询币币钱包 + MemberWalletCoinEntity walletCoin = memberWalletCoinMapper.findWalletCoinByMemberIdAndWalletCode(memberId, symbol); + + BigDecimal total = walletCoin.getTotalBalance().subtract(selectById.getAmount()).subtract(selectById.getFeeAmount()); + walletCoin.setTotalBalance(total); + BigDecimal frozen = walletCoin.getFrozenBalance().subtract(selectById.getAmount()).subtract(selectById.getFeeAmount()); + walletCoin.setFrozenBalance(frozen); + + memberWalletCoinMapper.updateById(walletCoin); + + if ("Y".equals(selectById.getIsInside())) { + Map<String, Object> columnMap = new HashMap<>(); + columnMap.put("symbol", symbol); + columnMap.put("address", address); + // 如果是内部转账 则需要将币加到内部地址 + List<MemberCoinAddressEntity> selectByMap = memberCoinAddressMapper.selectByMap(columnMap); + if(selectByMap == null || selectByMap.isEmpty()) { + return new FebsResponse().fail().message("地址有误,请拒绝!"); + } + Long aimMemberId = selectByMap.get(0).getMemberId(); + MemberWalletCoinEntity aimWalletCoin = memberWalletCoinMapper.findWalletCoinByMemberIdAndWalletCode(aimMemberId, symbol); + + BigDecimal addTotal = aimWalletCoin.getTotalBalance().add(selectById.getAmount()); + BigDecimal addAvailable = aimWalletCoin.getAvailableBalance().add(selectById.getAmount()); + aimWalletCoin.setTotalBalance(addTotal); + aimWalletCoin.setAvailableBalance(addAvailable); + + memberWalletCoinMapper.updateById(aimWalletCoin); + + MemberAccountMoneyChangeEntity memberAccountMoneyChangeEntity = new MemberAccountMoneyChangeEntity(); + memberAccountMoneyChangeEntity.setContent("收款"); + memberAccountMoneyChangeEntity.setMemberId(aimMemberId); + memberAccountMoneyChangeEntity.setAmount(selectById.getAmount()); + memberAccountMoneyChangeEntity.setStatus(MemberAccountMoneyChangeEntity.STATUS_SUCCESS_INTEGER); + memberAccountMoneyChangeEntity.setSymbol(selectById.getSymbol()); + memberAccountMoneyChangeEntity.setType(MemberAccountMoneyChangeEntity.TYPE_WALLET_COIN); + memberAccountMoneyChangeEntity.setCreateBy(selectById.getCreateBy()); + memberAccountMoneyChangeEntity.setCreateTime(new Date()); + memberAccountMoneyChangeEntity.setUpdateBy(selectById.getCreateBy()); + memberAccountMoneyChangeEntity.setUpdateTime(new Date()); + memberAccountMoneyChangeMapper.insert(memberAccountMoneyChangeEntity); + } + + MemberAccountMoneyChangeEntity memberAccountMoneyChangeEntity = new MemberAccountMoneyChangeEntity(); + memberAccountMoneyChangeEntity.setContent("提币"); + memberAccountMoneyChangeEntity.setMemberId(memberId); + memberAccountMoneyChangeEntity.setAmount(selectById.getAmount()); + memberAccountMoneyChangeEntity.setStatus(MemberAccountMoneyChangeEntity.STATUS_SUCCESS_INTEGER); + memberAccountMoneyChangeEntity.setSymbol(selectById.getSymbol()); + memberAccountMoneyChangeEntity.setType(MemberAccountMoneyChangeEntity.TYPE_WALLET_COIN); + memberAccountMoneyChangeEntity.setCreateBy(selectById.getCreateBy()); + memberAccountMoneyChangeEntity.setCreateTime(new Date()); + memberAccountMoneyChangeEntity.setUpdateBy(selectById.getCreateBy()); + memberAccountMoneyChangeEntity.setUpdateTime(new Date()); + memberAccountMoneyChangeMapper.insert(memberAccountMoneyChangeEntity); + + selectById.setStatus(MemberCoinWithdrawEntity.IS_STATUS_Y); + memberCoinWithdrawMapper.updateById(selectById); + /** + //短信提醒 + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + String chargeTime = format.format(new Date()); // 将当前时间袼式化为指定的格式 + String usdt = selectById.getAmount()+"USDT"; + * 发送短信提醒 todo + String smsContent = "【Excoin】尊敬的用户您好!您于"+chargeTime+"提现"+usdt+"已成功到账,请您及时查收!"; + SmsUtils.hxSmsSend(member.getPhone(), smsContent); + */ + return new FebsResponse().success(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public FebsResponse memberWithdrawCoinCancel(@NotNull(message = "{required}") Long id) { + + MemberCoinWithdrawEntity selectById = memberCoinWithdrawMapper.selectById(id); + Long memberId = selectById.getMemberId(); + String symbol = selectById.getSymbol(); + int status = selectById.getStatus(); + if(status != 1) { + return new FebsResponse().fail().message("只有等待审核的状态才能拒绝!"); + } + // 查询币币钱包 + MemberWalletCoinEntity walletCoin = memberWalletCoinMapper.findWalletCoinByMemberIdAndWalletCode(memberId, symbol); + + BigDecimal available = walletCoin.getAvailableBalance().add(selectById.getAmount()).add(selectById.getFeeAmount()); + walletCoin.setAvailableBalance(available); + BigDecimal frozen = walletCoin.getFrozenBalance().subtract(selectById.getAmount()).subtract(selectById.getFeeAmount()); + walletCoin.setFrozenBalance(frozen); + + memberWalletCoinMapper.updateById(walletCoin); + + // 提币退款记录 + MemberAccountMoneyChangeEntity memberAccountMoneyChangeEntity = new MemberAccountMoneyChangeEntity(); + memberAccountMoneyChangeEntity.setContent("提币"); + memberAccountMoneyChangeEntity.setMemberId(memberId); + memberAccountMoneyChangeEntity.setAmount(selectById.getAmount()); + memberAccountMoneyChangeEntity.setStatus(MemberAccountMoneyChangeEntity.STATUS_FAIL_INTEGER); + memberAccountMoneyChangeEntity.setSymbol(selectById.getSymbol()); + memberAccountMoneyChangeEntity.setType(MemberAccountMoneyChangeEntity.TYPE_WALLET_COIN); + memberAccountMoneyChangeEntity.setCreateBy(selectById.getCreateBy()); + memberAccountMoneyChangeEntity.setCreateTime(new Date()); + memberAccountMoneyChangeEntity.setUpdateBy(selectById.getCreateBy()); + memberAccountMoneyChangeEntity.setUpdateTime(new Date()); + memberAccountMoneyChangeMapper.insert(memberAccountMoneyChangeEntity); + + selectById.setStatus(MemberCoinWithdrawEntity.IS_STATUS_N); + memberCoinWithdrawMapper.updateById(selectById); + return new FebsResponse().success(); + } + + @Override + public MemberAuthenticationVo selectMemberAuthenticationById(long id) { + MemberAuthenticationVo memberAuthenticationEntity = memberAuthenticationMapper.findMemberAuthenticationByMemberId(id); + String firstName = memberAuthenticationEntity.getFirstName(); + String secondName = memberAuthenticationEntity.getSecondName(); + memberAuthenticationEntity.setRealName(firstName+"-"+secondName); + return memberAuthenticationEntity; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public FebsResponse memberDetailConfirm(@Valid MemberDetailConfirmDto memberDetailConfirmDto) { + Long id = memberDetailConfirmDto.getId(); + MemberEntity selectById = memberMapper.selectById(id); + Integer certifyStatus = selectById.getCertifyStatus(); + if(!MemberEntity.CERTIFY_STATUS_ING.equals(certifyStatus)) { + return new FebsResponse().fail().message("只有【待审核】状态才能提交!"); + } + + MemberAuthenticationVo memberAuthenticationEntity = memberAuthenticationMapper.findMemberAuthenticationByMemberId(id); + selectById.setCertifyStatus(MemberEntity.CERTIFY_STATUS_Y); + selectById.setIdcardNo(memberAuthenticationEntity.getIdcardNo()); + + memberMapper.updateById(selectById); + return new FebsResponse().success(); + } + } -- Gitblit v1.9.1