zainali5120
2021-03-14 0f4df6c351d87054ded6bd54f0c6b9f6253ea56f
src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
@@ -15,20 +15,10 @@
import com.xcong.excoin.common.system.service.CommonService;
import com.xcong.excoin.modules.coin.dao.MemberAccountMoneyChangeDao;
import com.xcong.excoin.modules.coin.entity.MemberAccountMoneyChange;
import com.xcong.excoin.modules.contract.entity.ContractEntrustOrderEntity;
import com.xcong.excoin.modules.member.dao.*;
import com.xcong.excoin.modules.member.entity.*;
import com.xcong.excoin.modules.member.parameter.dto.MemberAddCoinAddressDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberAuthenticationDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberBindEmailDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberBindPhoneDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberDelCoinAddressDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberDelPaymethodDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberForgetPwdDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberPaymethodDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberSubmitCoinApplyDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberUpdatePwdDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberUpdateTradePwdDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberUpdateTradersPwdTimeDto;
import com.xcong.excoin.modules.member.parameter.dto.*;
import com.xcong.excoin.modules.member.parameter.vo.*;
import com.xcong.excoin.modules.member.service.MemberService;
import com.xcong.excoin.modules.platform.dao.PlatformFeeSettingDao;
@@ -97,6 +87,9 @@
    @Resource
    MemberCoinAddressDao memberCoinAddressDao;
    @Resource
    MemberCoinAddressInDao memberCoinAddressInDao;
    @Resource
    private CommonService commonservice;
@@ -156,6 +149,7 @@
        member.setCertifyStatus(MemberEntity.CERTIFY_STATUS_UN_SUBMIT);
        member.setIsForce(1);
        member.setIsProfit(0);
        member.setContractPositionType(ContractEntrustOrderEntity.POSITION_TYPE_ALL);
        memberDao.insert(member);
        MemberSettingEntity memberSettingEntity = new MemberSettingEntity();
@@ -185,6 +179,15 @@
        member.setRefererIds(ids);
        memberDao.updateById(member);
        MemberWalletContractSimulateEntity walletContractSimulate = new MemberWalletContractSimulateEntity();
        walletContractSimulate.setMemberId(member.getId());
        walletContractSimulate.setAvailableBalance(new BigDecimal(AppContants.INIT_SIMULATE_MONEY));
        walletContractSimulate.setTotalBalance(new BigDecimal(AppContants.INIT_SIMULATE_MONEY));
        walletContractSimulate.setFrozenBalance(AppContants.INIT_MONEY);
        walletContractSimulate.setBorrowedFund(AppContants.INIT_MONEY);
        walletContractSimulate.setWalletCode(CoinTypeEnum.USDT.name());
        memberWalletContractSimulateDao.insert(walletContractSimulate);
        //初始化合约钱包
        MemberWalletContractEntity walletContract = new MemberWalletContractEntity();
        walletContract.setMemberId(member.getId());
@@ -195,18 +198,8 @@
        walletContract.setWalletCode(CoinTypeEnum.USDT.name());
        memberWalletContractDao.insert(walletContract);
        MemberWalletContractSimulateEntity walletContractSimulate = new MemberWalletContractSimulateEntity();
        walletContractSimulate.setMemberId(member.getId());
        walletContractSimulate.setAvailableBalance(new BigDecimal(AppContants.INIT_SIMULATE_MONEY));
        walletContractSimulate.setTotalBalance(new BigDecimal(AppContants.INIT_SIMULATE_MONEY));
        walletContractSimulate.setFrozenBalance(AppContants.INIT_MONEY);
        walletContractSimulate.setBorrowedFund(AppContants.INIT_MONEY);
        walletContractSimulate.setWalletCode(CoinTypeEnum.USDT.name());
        memberWalletContractSimulateDao.insert(walletContractSimulate);
        // 初始化币币钱包
        for (CoinTypeEnum coinTypeEnum : CoinTypeEnum.values()) {
            // 初始化币币钱包
            MemberWalletCoinEntity walletCoin = new MemberWalletCoinEntity();
            walletCoin.setWalletCode(coinTypeEnum.name());
            walletCoin.setMemberId(member.getId());
@@ -684,10 +677,10 @@
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        String address = memberAddCoinAddressDto.getAddress();
        String isBiyict = memberAddCoinAddressDto.getIsBiyict();
        Long symbolscoinId = memberAddCoinAddressDto.getSymbolscoinId();
        String symbol = memberAddCoinAddressDto.getSymbol();
        String remark = memberAddCoinAddressDto.getRemark();
        PlatformSymbolsCoinEntity platformSymbolsCoinEntity = platformSymbolsCoinDao.selectById(symbolscoinId);
        PlatformSymbolsCoinEntity platformSymbolsCoinEntity = platformSymbolsCoinDao.selectOneBySymbol(symbol);
        Long symbolscoinId = platformSymbolsCoinEntity.getId();
        MemberCoinAddressEntity memberCoinAddressEntity = new MemberCoinAddressEntity();
        memberCoinAddressEntity.setAddress(address);
@@ -797,6 +790,9 @@
            memberPersonCenterInfoVo.setTradeAgingSetting(MemberPersonCenterInfoVo.PWD_NEED_NO);
        }
        Integer fingerprintState = member.getFingerprintState();
        memberPersonCenterInfoVo.setFingerprintState(fingerprintState);
        return Result.ok(memberPersonCenterInfoVo);
    }
@@ -903,6 +899,7 @@
                memberCoinWithdrawEntity.setFeeAmount(memberSubmitCoinApplyDto.getFeeAmount());
                memberCoinWithdrawEntity.setSymbol(memberSubmitCoinApplyDto.getSymbol());
                memberCoinWithdrawEntity.setMemberId(memberId);
                memberCoinWithdrawEntity.setLabel(memberSubmitCoinApplyDto.getLable());
                memberCoinWithdrawEntity.setStatus(MemberCoinWithdrawEntity.STATUS_DOING);
                Map<String, Object> columnMap = new HashMap<>();
@@ -1001,6 +998,172 @@
        }
        return Result.ok(arrayList);
    }
   @Override
   public Result memberSubmitCoinApplyIn(@Valid MemberSubmitCoinApplyInDto memberSubmitCoinApplyInDto) {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        MemberEntity member = memberDao.selectById(memberId);
        if (member.getCertifyStatus() != MemberEntity.CERTIFY_STATUS_Y) {
            return Result.fail(MessageSourceUtils.getString("member_service_0077"));
        }
        if (StrUtil.isEmpty(member.getTradePassword())) {
            return Result.fail(MessageSourceUtils.getString("member_service_0081"));
        }
        if (member.getTradePassword() == null) {
            return Result.fail(MessageSourceUtils.getString("member_service_0082"));
        }
        if (!member.getTradePassword().equals(SecureUtil.md5(memberSubmitCoinApplyInDto.getTradePassword()))) {
            return Result.fail(MessageSourceUtils.getString("member_service_0082"));
        }
        boolean flag = commonservice.verifyCode(memberSubmitCoinApplyInDto.getAccount(), memberSubmitCoinApplyInDto.getCode());
        if (flag) {
           //获取到账地址
           String address = memberSubmitCoinApplyInDto.getAddress();
         //根据账号获取会员信息
           MemberEntity selectMemberInfoByAccount = memberDao.selectMemberInfoByAccount(address);
           if(ObjectUtil.isEmpty(selectMemberInfoByAccount)) {
              return Result.fail(MessageSourceUtils.getString("member_service_0087"));
           }
           Long memberInfoId = selectMemberInfoByAccount.getId();
           String symbol = memberSubmitCoinApplyInDto.getSymbol();
           Map<String, Object> columnMapAddress = new HashMap<>();
           columnMapAddress.put("member_id", memberInfoId);
           columnMapAddress.put("symbol", symbol);
         List<MemberCoinAddressEntity> selectByMap2 = memberCoinAddressDao.selectByMap(columnMapAddress );
         if(CollUtil.isEmpty(selectByMap2)) {
            return Result.fail(MessageSourceUtils.getString("member_service_0087"));
         }
         MemberCoinAddressEntity memberCoinAddressEntity = selectByMap2.get(0);
         String addressIn = memberCoinAddressEntity.getAddress();
            MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, memberSubmitCoinApplyInDto.getSymbol());
            BigDecimal availableBalance = walletCoin.getAvailableBalance();
            BigDecimal coinNumber = memberSubmitCoinApplyInDto.getCoinNumber();
            if (availableBalance.compareTo(BigDecimal.ZERO) > 0
                    && availableBalance.compareTo(coinNumber) >= 0) {
                //新增提币记录
                MemberCoinWithdrawEntity memberCoinWithdrawEntity = new MemberCoinWithdrawEntity();
                memberCoinWithdrawEntity.setAddress(addressIn);
                memberCoinWithdrawEntity.setAmount(coinNumber);
                memberCoinWithdrawEntity.setFeeAmount(BigDecimal.ZERO);
                memberCoinWithdrawEntity.setSymbol(memberSubmitCoinApplyInDto.getSymbol());
                memberCoinWithdrawEntity.setMemberId(memberId);
                memberCoinWithdrawEntity.setStatus(MemberCoinWithdrawEntity.STATUS_DOING);
                memberCoinWithdrawEntity.setIsInside(MemberCoinWithdrawEntity.ISINSIDE_YES);
                memberCoinWithdrawEntity.setLabel(memberSubmitCoinApplyInDto.getLable());
                memberCoinWithdrawDao.insert(memberCoinWithdrawEntity);
                BigDecimal subtract = walletCoin.getAvailableBalance().subtract(coinNumber);
                walletCoin.setAvailableBalance(subtract);
                BigDecimal add = walletCoin.getFrozenBalance().add(coinNumber);
                walletCoin.setFrozenBalance(add);
                memberWalletCoinDao.updateById(walletCoin);
                MemberAccountMoneyChange accountRecord = new MemberAccountMoneyChange();
                accountRecord.setContent("提币");
                accountRecord.setMemberId(memberId);
                accountRecord.setAmount(coinNumber);
                accountRecord.setWithdrawId(memberCoinWithdrawEntity.getId());
                accountRecord.setStatus(MemberAccountMoneyChange.STATUS_WAIT_INTEGER);
                accountRecord.setSymbol(memberSubmitCoinApplyInDto.getSymbol());
                accountRecord.setType(MemberAccountMoneyChange.TYPE_WALLET_COIN);
                memberAccountMoneyChangeDao.insert(accountRecord);
                ThreadPoolUtils.sendDingTalk(3);
                return Result.ok(MessageSourceUtils.getString("member_service_0086"));
            } else {
                return Result.fail(MessageSourceUtils.getString("member_service_0005"));
            }
        } else {
            return Result.fail(MessageSourceUtils.getString("member_service_0039"));
        }
    }
   @Override
   public Result memberAddCoinAddressIn(@Valid MemberAddCoinAddressInDto memberAddCoinAddressDto) {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        String address = memberAddCoinAddressDto.getAddress();
        String remark = memberAddCoinAddressDto.getRemark();
        MemberCoinAddressInEntity memberCoinAddressInEntity = new MemberCoinAddressInEntity();
        memberCoinAddressInEntity.setAccount(address);
        memberCoinAddressInEntity.setMemberId(memberId);
        memberCoinAddressInEntity.setContent(remark);
        memberCoinAddressInDao.insert(memberCoinAddressInEntity);
        return Result.ok(MessageSourceUtils.getString("member_service_0024"));
    }
   @Override
   public Result memberDelCoinAddressIn(@Valid MemberDelCoinAddressDto memberDelCoinAddressDto) {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        MemberEntity member = memberDao.selectById(memberId);
        if (ObjectUtil.isNotEmpty(member)) {
            Long id = memberDelCoinAddressDto.getId();
            memberCoinAddressInDao.deleteById(id);
        }
        return Result.ok("success");
    }
   @Override
   public Result memberCoinAddressInList() {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        Map<String, Object> columnMap = new HashMap<>();
        columnMap.put("member_id", memberId);
      List<MemberCoinAddressInEntity> selectByMap = memberCoinAddressInDao.selectByMap(columnMap );
        List<MemberCoinAddressInListVo> arrayList = new ArrayList<>();
        if (CollUtil.isNotEmpty(selectByMap)) {
            for (MemberCoinAddressInEntity memberCoinAddressInEntity : selectByMap) {
               MemberCoinAddressInListVo memberCoinAddressInListVo = new MemberCoinAddressInListVo();
                memberCoinAddressInListVo.setId(memberCoinAddressInEntity.getId());
                memberCoinAddressInListVo.setAccount(memberCoinAddressInEntity.getAccount());
                memberCoinAddressInListVo.setContent(memberCoinAddressInEntity.getContent());
                arrayList.add(memberCoinAddressInListVo);
            }
        }
        return Result.ok(arrayList);
    }
    @Override
    public Result memberFingerprintState(@Valid MemberFingerprintStateDto memberFingerprintStateDto) {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        String password = SecureUtil.md5(memberFingerprintStateDto.getPassword());
        MemberEntity member = memberDao.selectById(memberId);
        if(password.equals(member.getPassword())){
            Integer fingerprintState = memberFingerprintStateDto.getFingerprintState();
            MemberEntity memberEntity = memberDao.selectById(memberId);
            memberEntity.setFingerprintState(fingerprintState);
            memberDao.updateById(memberEntity);
            return Result.ok(MessageSourceUtils.getString("member_service_0024"));
        }else{
            return Result.fail(MessageSourceUtils.getString("home_service_0005"));
        }
    }
    @Override
    @Transactional
    public Result memberMessageReminder() {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        MemberMessageReminderVo memberMessageReminderVo = new MemberMessageReminderVo();
        MemberSettingEntity selectById = memberSettingDao.selectMemberSettingByMemberId(memberId);
        if(ObjectUtil.isNotEmpty(selectById)) {
           memberMessageReminderVo.setMessageReminder(selectById.getMessageReminder());
        }
        return Result.ok(memberMessageReminderVo);
    }
}