Helius
2020-07-09 3d9f9f1d6c76dd78e14723d959ae31f2304b463d
src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
@@ -30,19 +30,6 @@
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.vo.*;
import com.xcong.excoin.modules.member.parameter.vo.MemberAuthenticationInfoVo;
import com.xcong.excoin.modules.member.parameter.vo.MemberAvivableCoinInfoVo;
import com.xcong.excoin.modules.member.parameter.vo.MemberCoinAddressCountListVo;
import com.xcong.excoin.modules.member.parameter.vo.MemberCoinAddressCountVo;
import com.xcong.excoin.modules.member.parameter.vo.MemberCoinAddressListVo;
import com.xcong.excoin.modules.member.parameter.vo.MemberCoinAddressVo;
import com.xcong.excoin.modules.member.parameter.vo.MemberCoinInfoListVo;
import com.xcong.excoin.modules.member.parameter.vo.MemberCoinInfoVo;
import com.xcong.excoin.modules.member.parameter.vo.MemberInfoVo;
import com.xcong.excoin.modules.member.parameter.vo.MemberPaymethodDetailListVo;
import com.xcong.excoin.modules.member.parameter.vo.MemberPaymethodDetailVo;
import com.xcong.excoin.modules.member.parameter.vo.MemberPersonCenterInfoVo;
import com.xcong.excoin.modules.member.parameter.vo.MemberSendCodeWayVo;
import com.xcong.excoin.modules.member.service.MemberService;
import com.xcong.excoin.modules.platform.dao.PlatformFeeSettingDao;
import com.xcong.excoin.modules.platform.dao.PlatformSymbolsCoinDao;
@@ -51,6 +38,7 @@
import com.xcong.excoin.utils.MessageSourceUtils;
import com.xcong.excoin.utils.RedisUtils;
import com.xcong.excoin.utils.ShareCodeUtil;
import com.xcong.excoin.utils.ThreadPoolUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.core.context.SecurityContextHolder;
@@ -117,6 +105,9 @@
    MemberCoinWithdrawDao memberCoinWithdrawDao;
    @Resource
    AppVersionDao appVersionDao;
    @Resource
    private MemberWalletContractSimulateDao memberWalletContractSimulateDao;
    @Transactional()
@@ -128,30 +119,47 @@
            return Result.fail("账号已存在");
        }
//        boolean isTrue = commonservice.verifyCode(registerDto.getAccount(), registerDto.getCode());
//        if (!isTrue) {
//            return Result.fail(MessageSourceUtils.getString("common_verify_code"));
//        }
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        member = new MemberEntity();
        member.setPassword(SecureUtil.md5(registerDto.getPassword()));
        // 判断账号类型
        if (MemberEntity.ACCOUNT_TYPE_PHONE == registerDto.getType()) {
        if (MemberEntity.ACCOUNT_TYPE_PHONE.equals(registerDto.getType())) {
            member.setPhone(registerDto.getAccount());
        } else if (MemberEntity.ACCOUNT_TYPE_EMAIL == registerDto.getType()) {
        } else if (MemberEntity.ACCOUNT_TYPE_EMAIL.equals(registerDto.getType())) {
            member.setEmail(registerDto.getAccount());
        } else {
            return Result.fail("账号类型错误");
        }
        // 判断是否拥有推荐人,若为空则默认系统
        if (StrUtil.isBlank(registerDto.getRefererId())) {
            registerDto.setRefererId(AppContants.SYSTEM_REFERER);
//        if (StrUtil.isBlank(registerDto.getRefererId())) {
//            registerDto.setRefererId(AppContants.SYSTEM_REFERER);
//        }
        if (!AppContants.SYSTEM_REFERER.equals(registerDto.getRefererId())) {
            MemberEntity isExist = memberDao.selectMemberInfoByInviteId(registerDto.getRefererId());
            if (isExist == null) {
                return Result.fail("推荐人不存在");
            }
        }
        member.setRefererId(registerDto.getRefererId());
        member.setAccountStatus(MemberEntity.ACCOUNT_STATUS_ENABLE);
        member.setAccountType(registerDto.getType());
        member.setAccountType(MemberEntity.ACCOUNT_TYPE_NORMAL);
        member.setAgentLevel(MemberEntity.ACCOUNT_AGENT_LEVEL);
        member.setCertifyStatus(MemberEntity.CERTIFY_STATUS_ING);
        member.setCertifyStatus(MemberEntity.CERTIFY_STATUS_UN_SUBMIT);
        member.setIsForce(0);
        member.setIsProfit(0);
        member.setSpread(BigDecimal.ZERO);
        memberDao.insert(member);
        String inviteId = ShareCodeUtil.toSerialCode(member.getId());
@@ -219,7 +227,8 @@
            levelRate.setSymbol(symbolEnum.getValue());
            memberLevelRateDao.insert(levelRate);
        }
        return Result.ok("success");
        return Result.ok(MessageSourceUtils.getString("home_service_0009"));
    }
    @Override
@@ -229,7 +238,14 @@
        MemberEntity memberEntity = memberDao.selectById(memberId);
        MemberInfoVo memberInfoVo = new MemberInfoVo();
        if (ObjectUtil.isNotEmpty(memberEntity)) {
            memberInfoVo.setPhone(memberEntity.getPhone());
            String email = memberEntity.getEmail();
            String phone = memberEntity.getPhone();
            if (StrUtil.isNotEmpty(phone)) {
                memberInfoVo.setPhone(phone);
            } else if (StrUtil.isNotEmpty(email)) {
                memberInfoVo.setPhone(email);
            }
            memberInfoVo.setInviteId(memberEntity.getInviteId());
        }
        return Result.ok(memberInfoVo);
@@ -319,8 +335,13 @@
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        MemberEntity member = memberDao.selectById(memberId);
      if(MemberEntity.CERTIFY_STATUS_ING.equals(member.getCertifyStatus())) {
         return Result.fail(MessageSourceUtils.getString("member_service_4000"));
      }
        if (ObjectUtil.isNotEmpty(member)) {
            MemberAuthenticationEntity memberAuthenticationEntity = new MemberAuthenticationEntity();
           MemberAuthenticationEntity memberAuthenticationEntity = new MemberAuthenticationEntity();
            if (MemberEntity.CERTIFY_STATUS_Y == member.getCertifyStatus()) {
                return Result.fail(MessageSourceUtils.getString("member_service_0055"));
            }
@@ -344,15 +365,18 @@
            }
            memberAuthenticationEntity.setSecondName(memberAuthenticationDto.getSecondName());
            String type = memberAuthenticationDto.getType();
            memberAuthenticationEntity.setType(type);
            String idCardNo = memberAuthenticationDto.getIdCardNo();
            if (StrUtil.isBlank(idCardNo)) {
                return Result.fail(MessageSourceUtils.getString("member_service_0060"));
               return Result.fail(MessageSourceUtils.getString("member_service_0060"));
            }
            memberAuthenticationEntity.setIdcardNo(idCardNo);
            //同一个身份证号码不能重复实名认证
            int count = memberAuthenticationDao.findMemberbyIdCardNoCount(idCardNo);
            if (count > 0) {
                return Result.fail(MessageSourceUtils.getString("member_service_0060"));
               return Result.fail(MessageSourceUtils.getString("member_service_0060"));
            }
            if (StrUtil.isBlank(memberAuthenticationDto.getIdCardFront())
                    || StrUtil.isBlank(memberAuthenticationDto.getIdCardReverse())
@@ -362,19 +386,22 @@
            memberAuthenticationEntity.setIdcardImageFront(memberAuthenticationDto.getIdCardFront());
            memberAuthenticationEntity.setIdcardImageBack(memberAuthenticationDto.getIdCardReverse());
            memberAuthenticationEntity.setIdcardImageInHand(memberAuthenticationDto.getIdCardImage());
            memberAuthenticationDao.insert(memberAuthenticationEntity);
            Map<String, Object> columnMap = new HashMap<>();
           columnMap.put("member_id", memberId);
           List<MemberAuthenticationEntity> selectByMap = memberAuthenticationDao.selectByMap(columnMap);
           if(CollUtil.isEmpty(selectByMap)) {
              memberAuthenticationDao.insert(memberAuthenticationEntity);
           }else {
              memberAuthenticationEntity.setId(selectByMap.get(0).getId());
              memberAuthenticationDao.updateById(memberAuthenticationEntity);
           }
            member.setCertifyStatus(MemberEntity.CERTIFY_STATUS_ING);
            member.setIdcardNo(idCardNo);
            memberDao.updateById(member);
            /**
             *  TODO dingtalk
             Constant.excutor.execute(new Runnable() {
            @Override public void run() {
            DingTalkUtils.sendActionCard(4);
            }
            });*/
            ThreadPoolUtils.sendDingTalk(4);
            return Result.ok(MessageSourceUtils.getString("member_service_0024"));
        }
        return Result.fail(MessageSourceUtils.getString("member_service_0063"));
@@ -406,6 +433,7 @@
        if (flag) {
            memberEntity.setTradePassword(SecureUtil.md5(password));
            memberDao.updateById(memberEntity);
            LoginUserUtils.resetAppLoginUser(memberEntity);
            return Result.ok(MessageSourceUtils.getString("member_service_0051"));
        }
        return Result.fail(MessageSourceUtils.getString("member_service_0045"));
@@ -431,8 +459,7 @@
    @Transactional
    public Result memberTradersPwd(@Valid MemberForgetPwdDto memberForgetPwdDto) {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        MemberEntity memberEntity = memberDao.selectById(memberId);
        MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
        String code = memberForgetPwdDto.getCode();
        String password = memberForgetPwdDto.getPassword();
@@ -443,6 +470,8 @@
        if (flag) {
            memberEntity.setTradePassword(SecureUtil.md5(password));
            memberDao.updateById(memberEntity);
            // 重置内存中的用户信息
            LoginUserUtils.resetAppLoginUser(memberEntity);
        } else {
            return Result.fail(MessageSourceUtils.getString("member_service_0015"));
        }
@@ -460,6 +489,17 @@
        if (!MemberEntity.CERTIFY_STATUS_Y.equals(member.getCertifyStatus())) {
            return Result.fail(MessageSourceUtils.getString("member_service_0077"));
        }
        Map<String, Object> columnMap = new HashMap<>();
        columnMap.put("member_id", memberId);
      List<MemberPaymentMethodEntity> selectByMap = memberPaymentMethodDao.selectByMap(columnMap);
      if(CollUtil.isNotEmpty(selectByMap)) {
         for(MemberPaymentMethodEntity memberPaymentMethodEntity : selectByMap) {
            if(memberPaymethodDto.getAccount().equals(memberPaymentMethodEntity.getAccount())) {
               return Result.fail(MessageSourceUtils.getString("member_service_0097"));
            }
         }
      }
        String account = memberPaymethodDto.getAccount();
        String bank = memberPaymethodDto.getBank();
        String name = memberPaymethodDto.getName();
@@ -540,24 +580,27 @@
    @Override
    @Transactional
    public Result memberBindPhone(@Valid MemberBindPhoneDto memberBindPhoneDto) {
        //获取用户ID
       //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        String phone = memberBindPhoneDto.getPhone();
        String code = memberBindPhoneDto.getCode();
        MemberEntity member = memberDao.selectById(memberId);
        String smsCode = redisUtils.get("SMS_" + phone) + "";
        if (ObjectUtil.isNotEmpty(member)) {
            if (StrUtil.isEmpty(smsCode)) {
                return Result.fail(MessageSourceUtils.getString("member_service_0038"));
            }
            if (!smsCode.equals(code)) {
            if (!commonservice.verifyCode(phone, code)) {
                return Result.fail(MessageSourceUtils.getString("member_service_0013"));
            }
            member.setPhone(phone);
            memberDao.updateById(member);
            return Result.ok(MessageSourceUtils.getString("member_service_0014"));
            Map<String, Object> columnMap = new HashMap<>();
            columnMap.put("phone", phone);
         List<MemberEntity> selectByMap = memberDao.selectByMap(columnMap );
            if(CollUtil.isEmpty(selectByMap)) {
               member.setPhone(phone);
               memberDao.updateById(member);
               return Result.ok(MessageSourceUtils.getString("member_service_0014"));
            }else {
               return Result.fail(MessageSourceUtils.getString("member_service_1400"));
            }
        }
        return Result.fail(MessageSourceUtils.getString("member_service_0015"));
@@ -567,7 +610,7 @@
    @Transactional
    public Result memberBindEmail(@Valid MemberBindEmailDto memberBindEmailDto) {
        //获取用户ID
       //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        String email = memberBindEmailDto.getEmail();
        String code = memberBindEmailDto.getCode();
@@ -576,9 +619,16 @@
        boolean flag = commonservice.verifyCode(email, code);
        if (ObjectUtil.isNotEmpty(member)) {
            if (flag) {
                member.setEmail(email);
                memberDao.updateById(member);
                return Result.ok(MessageSourceUtils.getString("member_service_0018"));
               Map<String, Object> columnMap = new HashMap<>();
                columnMap.put("email", email);
             List<MemberEntity> selectByMap = memberDao.selectByMap(columnMap );
                if(CollUtil.isEmpty(selectByMap)) {
                   member.setEmail(email);
                    memberDao.updateById(member);
                    return Result.ok(MessageSourceUtils.getString("member_service_0018"));
                }else {
                   return Result.fail(MessageSourceUtils.getString("member_service_1400"));
                }
            }
        }
        return Result.fail(MessageSourceUtils.getString("member_service_0019"));
@@ -601,10 +651,7 @@
    public Result memberCoinAddressList(String symbol) {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        Map<String, Object> columnMap = new HashMap<>();
        columnMap.put("member_id", memberId);
        columnMap.put("symbol", symbol);
        List<MemberCoinAddressEntity> selectByMap = memberCoinAddressDao.selectByMap(columnMap);
        List<MemberCoinAddressEntity> selectByMap = memberCoinAddressDao.selectCoinAddressListByMap(symbol, memberId);
        MemberCoinAddressListVo memberCoinAddressListVo = new MemberCoinAddressListVo();
        List<MemberCoinAddressVo> arrayList = new ArrayList<>();
        if (CollUtil.isNotEmpty(selectByMap)) {
@@ -696,6 +743,7 @@
                memberAuthnticationInfoVo.setSecondName(memberAuthenticationEntity.getSecondName());
                memberAuthnticationInfoVo.setNation(memberAuthenticationEntity.getNation());
                memberAuthnticationInfoVo.setIdCardNo(memberAuthenticationEntity.getIdcardNo());
                memberAuthnticationInfoVo.setType(memberAuthenticationEntity.getType());
            }
        }
        return Result.ok(memberAuthnticationInfoVo);
@@ -708,6 +756,19 @@
        MemberEntity member = memberDao.selectById(memberId);
        MemberPersonCenterInfoVo memberPersonCenterInfoVo = new MemberPersonCenterInfoVo();
        Integer certifyStatus = member.getCertifyStatus();
        memberPersonCenterInfoVo.setCertifyStatus(certifyStatus);
        Map<String, Object> columnMap = new HashMap<>();
        columnMap.put("member_id", memberId);
        List<MemberPaymentMethodEntity> selectByMap = memberPaymentMethodDao.selectByMap(columnMap);
        if(CollUtil.isEmpty(selectByMap)) {
           memberPersonCenterInfoVo.setMemberPaymentMethod(0);
        }else {
           memberPersonCenterInfoVo.setMemberPaymentMethod(1);
        }
        if (StrUtil.isNotEmpty(member.getPhone())) {
            memberPersonCenterInfoVo.setPhone(1);
        } else {
@@ -738,8 +799,6 @@
    @Override
    public Result memberCoinInfoList() {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        MemberCoinInfoListVo memberCoinInfoListVo = new MemberCoinInfoListVo();
        List<PlatformSymbolsCoinEntity> selectByMap = platformSymbolsCoinDao.selectByMap(new HashMap<>());
@@ -765,15 +824,22 @@
            return Result.fail(MessageSourceUtils.getString("member_service_0087"));
        }
        MemberAvivableCoinInfoVo memberAvivableCoinInfoVo = new MemberAvivableCoinInfoVo();
        memberAvivableCoinInfoVo.setAvailableBalance(walletCoin.getAvailableBalance());
        List<MemberAvivableCoinInfoVo> arrayList = new ArrayList<>();
        PlatformFeeSettingEntity feeSetting = platformFeeSettingDao.getFeeSettingByTypeAndSymbol(2, symbol);
        if (ObjectUtil.isEmpty(feeSetting)) {
      List<PlatformFeeSettingEntity> feeSettingByTypeAndSymbolLable = platformFeeSettingDao.getFeeSettingsByTypeAndSymbol(2, symbol);
        if (CollUtil.isEmpty(feeSettingByTypeAndSymbolLable)) {
            return Result.fail(MessageSourceUtils.getString("member_service_0087"));
        }
        memberAvivableCoinInfoVo.setFee(feeSetting.getFeePrice());
        return Result.ok(memberAvivableCoinInfoVo);
        for(PlatformFeeSettingEntity platformFeeSettingEntity : feeSettingByTypeAndSymbolLable) {
           MemberAvivableCoinInfoVo memberAvivableCoinInfoVo = new MemberAvivableCoinInfoVo();
           memberAvivableCoinInfoVo.setAvailableBalance(walletCoin.getAvailableBalance());
           memberAvivableCoinInfoVo.setFee(platformFeeSettingEntity.getFeePrice());
           memberAvivableCoinInfoVo.setLable(platformFeeSettingEntity.getLable());
           arrayList.add(memberAvivableCoinInfoVo);
        }
        return Result.ok(arrayList);
    }
    @Override
@@ -824,9 +890,9 @@
        if (flag) {
            MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, memberSubmitCoinApplyDto.getSymbol());
            BigDecimal availableBalance = walletCoin.getAvailableBalance();
            BigDecimal coinNumber = memberSubmitCoinApplyDto.getCoinNumber().add(memberSubmitCoinApplyDto.getFeeAmount());
            BigDecimal coinNumber = memberSubmitCoinApplyDto.getCoinNumber();
            if (availableBalance.compareTo(BigDecimal.ZERO) > 0
                    && availableBalance.compareTo(coinNumber) > 0) {
                    && availableBalance.compareTo(coinNumber) >= 0) {
                //新增提币记录
                MemberCoinWithdrawEntity memberCoinWithdrawEntity = new MemberCoinWithdrawEntity();
                memberCoinWithdrawEntity.setAddress(memberSubmitCoinApplyDto.getAddress());
@@ -855,22 +921,16 @@
                MemberAccountMoneyChange accountRecord = new MemberAccountMoneyChange();
                accountRecord.setContent("提币");
                accountRecord.setMemberId(memberId);
                accountRecord.setAmount(memberSubmitCoinApplyDto.getCoinNumber());
                accountRecord.setAmount(coinNumber);
                accountRecord.setStatus(MemberAccountMoneyChange.STATUS_WAIT_INTEGER);
                accountRecord.setSymbol(memberSubmitCoinApplyDto.getSymbol());
                accountRecord.setType(MemberAccountMoneyChange.TYPE_WALLET_COIN);
                memberAccountMoneyChangeDao.insert(accountRecord);
                /**
                 *  TODO dingtalk
                 Constant.excutor.execute(new Runnable() {
                @Override public void run() {
                DingTalkUtils.sendActionCard(3);
                }
                });
                 */
                ThreadPoolUtils.sendDingTalk(3);
                return Result.ok(MessageSourceUtils.getString("member_service_0086"));
            } else {
                return Result.fail(MessageSourceUtils.getString("order_service_0040"));
                return Result.fail(MessageSourceUtils.getString("member_service_0005"));
            }
        } else {
@@ -878,6 +938,39 @@
        }
    }
    @Override
    public Result getMemberAccountInfo(String account, int type) {
        Map<String, Object> hashMap = new HashMap<>();
        if (type == 1) {
            hashMap.put("phone", account);
        } else {
            hashMap.put("email", account);
        }
        List<MemberEntity> member = memberDao.selectByMap(hashMap);
        if (CollUtil.isEmpty(member)) {
            return Result.fail(MessageSourceUtils.getString("home_service_0003"));
        }
        return Result.ok("");
    }
   @Override
   public Result getAppVersionInfo() {
   Map<String, Object> columnMap = new HashMap<>();
   List<AppVersionEntity> selectByMap = appVersionDao.selectByMap(columnMap);
   List<Object> arrayList = new ArrayList<>();
      if(CollUtil.isNotEmpty(selectByMap)) {
         for(AppVersionEntity appVersionEntity : selectByMap) {
               AppVersionVo appVersionVo = new AppVersionVo();
               appVersionVo.setAddress(appVersionEntity.getAddress());
               appVersionVo.setType(appVersionEntity.getType());
               appVersionVo.setVersion(appVersionEntity.getVersion());
               arrayList.add(appVersionVo);
            }
         }
   return Result.ok(arrayList);
   }
}