Helius
2020-08-13 1356cf874d0fac038269d4277afea86d285dd623
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,8 +38,10 @@
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;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -78,7 +67,7 @@
    @Resource
    private MemberWalletAgentDao memberWalletAgentDao;
    @Resource
    MemberAccountMoneyChangeDao memberAccountMoneyChangeDao;
@@ -90,30 +79,35 @@
    @Resource
    private MemberLevelRateDao memberLevelRateDao;
    @Resource
    MemberAuthenticationDao memberAuthenticationDao;
    @Resource
    RedisUtils redisUtils;
    @Resource
    MemberPaymentMethodDao memberPaymentMethodDao;
    @Resource
    PlatformSymbolsCoinDao platformSymbolsCoinDao;
    @Resource
    PlatformFeeSettingDao platformFeeSettingDao;
    @Resource
    MemberCoinAddressDao memberCoinAddressDao;
    @Resource
    private CommonService commonservice;
    @Resource
    MemberCoinWithdrawDao memberCoinWithdrawDao;
    @Resource
    AppVersionDao appVersionDao;
    @Resource
    private MemberSettingDao memberSettingDao;
    @Resource
    private MemberWalletContractSimulateDao memberWalletContractSimulateDao;
@@ -127,31 +121,49 @@
            return Result.fail("账号已存在");
        }
//        boolean isTrue = commonservice.verifyCode(registerDto.getAccount(), registerDto.getCode());
//        if (!isTrue) {
//            return Result.fail(MessageSourceUtils.getString("common_verify_code"));
//        }
        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.setIsForce(0);
        member.setCertifyStatus(MemberEntity.CERTIFY_STATUS_UN_SUBMIT);
        member.setIsForce(1);
        member.setIsProfit(0);
        memberDao.insert(member);
        MemberSettingEntity memberSettingEntity = new MemberSettingEntity();
        memberSettingEntity.setSpread(BigDecimal.ONE);
        memberSettingEntity.setClosingSpread(BigDecimal.ONE);
        memberSettingEntity.setForceParam(BigDecimal.valueOf(0.0015));
        memberSettingEntity.setMemberId(member.getId());
        memberSettingDao.insert(memberSettingEntity);
        String inviteId = ShareCodeUtil.toSerialCode(member.getId());
        member.setInviteId(inviteId);
@@ -185,12 +197,12 @@
        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);
        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);
        // 初始化币币钱包
@@ -212,670 +224,783 @@
        memberWalletAgentDao.insert(walletAgent);
        // 初始化杠杆
        for(SymbolEnum symbolEnum : SymbolEnum.values()) {
        for (SymbolEnum symbolEnum : SymbolEnum.values()) {
            MemberLevelRateEntity levelRate = new MemberLevelRateEntity();
            levelRate.setMemberId(member.getId());
            levelRate.setSymbol(symbolEnum.getValue());
            memberLevelRateDao.insert(levelRate);
        }
        return Result.ok("success");
        return Result.ok(MessageSourceUtils.getString("home_service_0009"));
    }
   @Override
   public Result getMemberInfo() {
      //获取用户ID
      Long memberId = LoginUserUtils.getAppLoginUser().getId();
      MemberEntity memberEntity = memberDao.selectById(memberId);
      MemberInfoVo memberInfoVo = new MemberInfoVo();
    @Override
    public Result getMemberInfo() {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        MemberEntity memberEntity = memberDao.selectById(memberId);
        MemberInfoVo memberInfoVo = new MemberInfoVo();
        if (ObjectUtil.isNotEmpty(memberEntity)) {
           memberInfoVo.setPhone(memberEntity.getPhone());
           memberInfoVo.setInviteId(memberEntity.getInviteId());
            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);
    }
   @Override
   @Transactional
   public Result memberForgetPwd(@Valid MemberForgetPwdDto memberForgetPwdDto) {
      int type = memberForgetPwdDto.getType();
      String account = memberForgetPwdDto.getAccount();
      String code = memberForgetPwdDto.getCode();
      String password = memberForgetPwdDto.getPassword();
      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)) {
    @Override
    @Transactional
    public Result memberForgetPwd(@Valid MemberForgetPwdDto memberForgetPwdDto) {
        int type = memberForgetPwdDto.getType();
        String account = memberForgetPwdDto.getAccount();
        String code = memberForgetPwdDto.getCode();
        String password = memberForgetPwdDto.getPassword();
        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("member_service_0047"));
        }
      boolean flag = commonservice.verifyCode(account, code);
      if(flag) {
         MemberEntity memberEntity = member.get(0);
         memberEntity.setPassword(SecureUtil.md5(password));
         memberDao.updateById(memberEntity);
      }else {
         return Result.fail(MessageSourceUtils.getString("member_service_0045"));
      }
        boolean flag = commonservice.verifyCode(account, code);
        if (flag) {
            MemberEntity memberEntity = member.get(0);
            memberEntity.setPassword(SecureUtil.md5(password));
            memberDao.updateById(memberEntity);
        } else {
            return Result.fail(MessageSourceUtils.getString("member_service_0045"));
        }
        return Result.ok(MessageSourceUtils.getString("member_service_0048"));
    }
   @Override
   @Transactional
   public Result memberUpdatePwd(@Valid MemberUpdatePwdDto memberUpdatePwdDto) {
      //获取用户ID
      Long memberId = LoginUserUtils.getAppLoginUser().getId();
      MemberEntity memberEntity = memberDao.selectById(memberId);
      String code = memberUpdatePwdDto.getCode();
      String password = memberUpdatePwdDto.getPassword();
      String phone = memberUpdatePwdDto.getPhone();
      String email = memberUpdatePwdDto.getEmail();
      int type = memberUpdatePwdDto.getType();
      boolean verificationCode = verificationCode(type, phone, code, email);
      if(verificationCode) {
         memberEntity.setPassword(SecureUtil.md5(password));
         memberDao.updateById(memberEntity);
      }else {
         return Result.fail(MessageSourceUtils.getString("member_service_0041"));
      }
    @Override
    @Transactional
    public Result memberUpdatePwd(@Valid MemberUpdatePwdDto memberUpdatePwdDto) {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        MemberEntity memberEntity = memberDao.selectById(memberId);
        String code = memberUpdatePwdDto.getCode();
        String password = memberUpdatePwdDto.getPassword();
        String phone = memberUpdatePwdDto.getPhone();
        String email = memberUpdatePwdDto.getEmail();
        int type = memberUpdatePwdDto.getType();
        boolean verificationCode = verificationCode(type, phone, code, email);
        if (verificationCode) {
            memberEntity.setPassword(SecureUtil.md5(password));
            memberDao.updateById(memberEntity);
        } else {
            return Result.fail(MessageSourceUtils.getString("member_service_0041"));
        }
        return Result.ok(MessageSourceUtils.getString("member_service_0040"));
    }
   /**
    * 验证输入的验证码
    * @param type   验证类型1:电话2:邮箱
    * @param phone
    * @param email
    * @param code      验证码
    * @return
    */
   private boolean verificationCode(Integer type,String phone,String code,String email) {
      boolean verificationCode = false;
      if(type == 1) {
         String smsCode = redisUtils.get("SMS_" + phone) + "";
         if(code.equals(smsCode)) {
            verificationCode = true;
         }
      }else {
         String emailCode = redisUtils.get("EMAIL_" + email) + "";
         if(code.equals(emailCode)) {
            verificationCode = true;
         }
      }
      return verificationCode;
   }
   @Override
   @Transactional
   public Result memberAuthentication(@Valid MemberAuthenticationDto memberAuthenticationDto) {
      //获取用户ID
      Long memberId = LoginUserUtils.getAppLoginUser().getId();
      MemberEntity member = memberDao.selectById(memberId);
    /**
     * 验证输入的验证码
     *
     * @param type  验证类型1:电话2:邮箱
     * @param phone
     * @param email
     * @param code  验证码
     * @return
     */
    private boolean verificationCode(Integer type, String phone, String code, String email) {
        boolean verificationCode = false;
        if (type == 1) {
            String smsCode = redisUtils.get("SMS_" + phone) + "";
            if (code.equals(smsCode)) {
                verificationCode = true;
            }
        } else {
            String emailCode = redisUtils.get("EMAIL_" + email) + "";
            if (code.equals(emailCode)) {
                verificationCode = true;
            }
        }
        return verificationCode;
    }
    @Override
    @Transactional
    public Result memberAuthentication(@Valid MemberAuthenticationDto memberAuthenticationDto) {
        //获取用户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();
                if (MemberEntity.CERTIFY_STATUS_Y == member.getCertifyStatus()) {
                    return Result.fail(MessageSourceUtils.getString("member_service_0055"));
                }
                if (MemberEntity.CERTIFY_STATUS_ING == member.getCertifyStatus()) {
                    return Result.fail(MessageSourceUtils.getString("member_service_0056"));
                }
                memberAuthenticationEntity.setMemberId(memberId);
                if (StrUtil.isBlank(memberAuthenticationDto.getNation())) {
                    return Result.fail(MessageSourceUtils.getString("member_service_0057"));
                }
                memberAuthenticationEntity.setNation(memberAuthenticationDto.getNation());
                if (StrUtil.isBlank(memberAuthenticationDto.getFirstName())) {
                    return Result.fail(MessageSourceUtils.getString("member_service_0058"));
                }
                memberAuthenticationEntity.setFirstName(memberAuthenticationDto.getFirstName());
                if (StrUtil.isBlank(memberAuthenticationDto.getSecondName())) {
                    return Result.fail(MessageSourceUtils.getString("member_service_0059"));
                }
                memberAuthenticationEntity.setSecondName(memberAuthenticationDto.getSecondName());
                String idCardNo = memberAuthenticationDto.getIdCardNo();
                if (StrUtil.isBlank(idCardNo)) {
                    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"));
                }
                if (StrUtil.isBlank(memberAuthenticationDto.getIdCardFront())
                      || StrUtil.isBlank(memberAuthenticationDto.getIdCardReverse())
                      || StrUtil.isBlank(memberAuthenticationDto.getIdCardImage())) {
                    return Result.fail(MessageSourceUtils.getString("member_service_0061"));
                }
                memberAuthenticationEntity.setIdcardImageFront(memberAuthenticationDto.getIdCardFront());
                memberAuthenticationEntity.setIdcardImageBack(memberAuthenticationDto.getIdCardReverse());
                memberAuthenticationEntity.setIdcardImageInHand(memberAuthenticationDto.getIdCardImage());
            MemberAuthenticationEntity memberAuthenticationEntity = new MemberAuthenticationEntity();
            if (MemberEntity.CERTIFY_STATUS_Y == member.getCertifyStatus()) {
                return Result.fail(MessageSourceUtils.getString("member_service_0055"));
            }
            if (MemberEntity.CERTIFY_STATUS_ING == member.getCertifyStatus()) {
                return Result.fail(MessageSourceUtils.getString("member_service_0056"));
            }
            memberAuthenticationEntity.setMemberId(memberId);
            if (StrUtil.isBlank(memberAuthenticationDto.getNation())) {
                return Result.fail(MessageSourceUtils.getString("member_service_0057"));
            }
            memberAuthenticationEntity.setNation(memberAuthenticationDto.getNation());
            if (StrUtil.isBlank(memberAuthenticationDto.getFirstName())) {
                return Result.fail(MessageSourceUtils.getString("member_service_0058"));
            }
            memberAuthenticationEntity.setFirstName(memberAuthenticationDto.getFirstName());
            if (StrUtil.isBlank(memberAuthenticationDto.getSecondName())) {
                return Result.fail(MessageSourceUtils.getString("member_service_0059"));
            }
            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"));
            }
            memberAuthenticationEntity.setIdcardNo(idCardNo);
            //同一个身份证号码不能重复实名认证
            int count = memberAuthenticationDao.findMemberbyIdCardNoCount(idCardNo);
            if (count > 0) {
                return Result.fail(MessageSourceUtils.getString("member_service_0060"));
            }
            if (StrUtil.isBlank(memberAuthenticationDto.getIdCardFront())
                    || StrUtil.isBlank(memberAuthenticationDto.getIdCardReverse())
                    || StrUtil.isBlank(memberAuthenticationDto.getIdCardImage())) {
                return Result.fail(MessageSourceUtils.getString("member_service_0061"));
            }
            memberAuthenticationEntity.setIdcardImageFront(memberAuthenticationDto.getIdCardFront());
            memberAuthenticationEntity.setIdcardImageBack(memberAuthenticationDto.getIdCardReverse());
            memberAuthenticationEntity.setIdcardImageInHand(memberAuthenticationDto.getIdCardImage());
            Map<String, Object> columnMap = new HashMap<>();
            columnMap.put("member_id", memberId);
            List<MemberAuthenticationEntity> selectByMap = memberAuthenticationDao.selectByMap(columnMap);
            if (CollUtil.isEmpty(selectByMap)) {
                memberAuthenticationDao.insert(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);
               }
            });*/
                return Result.ok(MessageSourceUtils.getString("member_service_0024"));
            } else {
                memberAuthenticationEntity.setId(selectByMap.get(0).getId());
                memberAuthenticationDao.updateById(memberAuthenticationEntity);
            }
            member.setCertifyStatus(MemberEntity.CERTIFY_STATUS_ING);
            member.setIdcardNo(idCardNo);
            memberDao.updateById(member);
            ThreadPoolUtils.sendDingTalk(4);
            return Result.ok(MessageSourceUtils.getString("member_service_0024"));
        }
        return Result.fail(MessageSourceUtils.getString("member_service_0063"));
    }
   @Override
   @Transactional
   public Result memberUpdateTradePwd(@Valid MemberUpdateTradePwdDto memberUpdateTradePwdDto) {
      //获取用户ID
      Long memberId = LoginUserUtils.getAppLoginUser().getId();
      MemberEntity memberEntity = memberDao.selectById(memberId);
      String code = memberUpdateTradePwdDto.getCode();
      String password = memberUpdateTradePwdDto.getPassword();
      String account = memberUpdateTradePwdDto.getAccount();
      String phone = memberEntity.getPhone();
      String email = memberEntity.getEmail();
      int type = memberUpdateTradePwdDto.getType();
      //验证手机号或者邮箱是否是该账户绑定的手机号或者邮箱
      if(MemberEntity.ACCOUNT_TYPE_PHONE.equals(type) && !phone.equals(account)) {
         return Result.fail(MessageSourceUtils.getString("member_service_0041"));
      }
      if(MemberEntity.ACCOUNT_TYPE_EMAIL.equals(type) && !email.equals(account)) {
         return Result.fail(MessageSourceUtils.getString("member_service_0041"));
      }
      boolean flag = commonservice.verifyCode(account, code);
    @Override
    @Transactional
    public Result memberUpdateTradePwd(@Valid MemberUpdateTradePwdDto memberUpdateTradePwdDto) {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        MemberEntity memberEntity = memberDao.selectById(memberId);
        String code = memberUpdateTradePwdDto.getCode();
        String password = memberUpdateTradePwdDto.getPassword();
        String account = memberUpdateTradePwdDto.getAccount();
        String phone = memberEntity.getPhone();
        String email = memberEntity.getEmail();
        int type = memberUpdateTradePwdDto.getType();
        //验证手机号或者邮箱是否是该账户绑定的手机号或者邮箱
        if (MemberEntity.ACCOUNT_TYPE_PHONE.equals(type) && !phone.equals(account)) {
            return Result.fail(MessageSourceUtils.getString("member_service_0041"));
        }
        if (MemberEntity.ACCOUNT_TYPE_EMAIL.equals(type) && !email.equals(account)) {
            return Result.fail(MessageSourceUtils.getString("member_service_0041"));
        }
        boolean flag = commonservice.verifyCode(account, code);
        if (flag) {
           memberEntity.setTradePassword(SecureUtil.md5(password));
           memberDao.updateById(memberEntity);
           return Result.ok(MessageSourceUtils.getString("member_service_0051"));
            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"));
    }
   @Override
   @Transactional
   public Result memberLogout() {
      //获取用户ID
      Long memberId = LoginUserUtils.getAppLoginUser().getId();
      MemberEntity memberEntity = memberDao.selectById(memberId);
         if (ObjectUtil.isEmpty(memberEntity)) {
            return Result.fail(MessageSourceUtils.getString("member_service_0003"));
         }
         return Result.ok(MessageSourceUtils.getString("member_service_0071"));
    @Override
    @Transactional
    public Result memberLogout() {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        MemberEntity memberEntity = memberDao.selectById(memberId);
        if (ObjectUtil.isEmpty(memberEntity)) {
            return Result.fail(MessageSourceUtils.getString("member_service_0003"));
        }
        String token = LoginUserUtils.getAppLoginUserToken();
        redisUtils.del(AppContants.APP_LOGIN_PREFIX + token);
        SecurityContextHolder.clearContext();
        return Result.ok(MessageSourceUtils.getString("member_service_0071"));
    }
   @Override
   @Transactional
   public Result memberTradersPwd(@Valid MemberForgetPwdDto memberForgetPwdDto) {
      //获取用户ID
      Long memberId = LoginUserUtils.getAppLoginUser().getId();
      MemberEntity memberEntity = memberDao.selectById(memberId);
      String code = memberForgetPwdDto.getCode();
      String password = memberForgetPwdDto.getPassword();
      String account = memberForgetPwdDto.getAccount();
      int type = memberForgetPwdDto.getType();
      boolean flag = commonservice.verifyCode(account, code);
      if(flag) {
         memberEntity.setTradePassword(SecureUtil.md5(password));
         memberDao.updateById(memberEntity);
      }else {
         return Result.fail(MessageSourceUtils.getString("member_service_0015"));
      }
    @Override
    @Transactional
    public Result memberTradersPwd(@Valid MemberForgetPwdDto memberForgetPwdDto) {
        //获取用户ID
        MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
        String code = memberForgetPwdDto.getCode();
        String password = memberForgetPwdDto.getPassword();
        String account = memberForgetPwdDto.getAccount();
        int type = memberForgetPwdDto.getType();
        boolean flag = commonservice.verifyCode(account, code);
        if (flag) {
            memberEntity.setTradePassword(SecureUtil.md5(password));
            memberDao.updateById(memberEntity);
            // 重置内存中的用户信息
            LoginUserUtils.resetAppLoginUser(memberEntity);
        } else {
            return Result.fail(MessageSourceUtils.getString("member_service_0015"));
        }
        return Result.ok(MessageSourceUtils.getString("member_service_0068"));
    }
   @Override
   @Transactional
   public Result memberAddPaymethod(@Valid MemberPaymethodDto memberPaymethodDto) {
      //获取用户ID
      Long memberId = LoginUserUtils.getAppLoginUser().getId();
      MemberEntity member = memberDao.selectById(memberId);
      if(!MemberEntity.CERTIFY_STATUS_Y.equals(member.getCertifyStatus())) {
         return Result.fail(MessageSourceUtils.getString("member_service_0077"));
      }
      String account = memberPaymethodDto.getAccount();
      String bank = memberPaymethodDto.getBank();
      String name = memberPaymethodDto.getName();
      String paymentQrcode = memberPaymethodDto.getPaymentQrcode();
      String paymentType = memberPaymethodDto.getPaymentType();
      String subBank = memberPaymethodDto.getSubBank();
      MemberPaymentMethodEntity memberPaymentMethodEntity = new MemberPaymentMethodEntity();
      memberPaymentMethodEntity.setMemberId(memberId);
      memberPaymentMethodEntity.setAccount(account);
      memberPaymentMethodEntity.setBank(bank);
      memberPaymentMethodEntity.setName(name);
      memberPaymentMethodEntity.setPaymentQrcode(paymentQrcode);
      memberPaymentMethodEntity.setPaymentType(paymentType);
      memberPaymentMethodEntity.setSubBank(subBank);
      memberPaymentMethodDao.insert(memberPaymentMethodEntity);
      return Result.ok(MessageSourceUtils.getString("member_service_0024"));
    @Override
    @Transactional
    public Result memberAddPaymethod(@Valid MemberPaymethodDto memberPaymethodDto) {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        MemberEntity member = memberDao.selectById(memberId);
        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();
        String paymentQrcode = memberPaymethodDto.getPaymentQrcode();
        String paymentType = memberPaymethodDto.getPaymentType();
        String subBank = memberPaymethodDto.getSubBank();
        MemberPaymentMethodEntity memberPaymentMethodEntity = new MemberPaymentMethodEntity();
        memberPaymentMethodEntity.setMemberId(memberId);
        memberPaymentMethodEntity.setAccount(account);
        memberPaymentMethodEntity.setBank(bank);
        memberPaymentMethodEntity.setName(name);
        memberPaymentMethodEntity.setPaymentQrcode(paymentQrcode);
        memberPaymentMethodEntity.setPaymentType(paymentType);
        memberPaymentMethodEntity.setSubBank(subBank);
        memberPaymentMethodDao.insert(memberPaymentMethodEntity);
        return Result.ok(MessageSourceUtils.getString("member_service_0024"));
    }
   @Override
   @Transactional
   public Result memberDelPaymethod(@Valid MemberDelPaymethodDto memberDelPaymethodDto) {
      //获取用户ID
      Long memberId = LoginUserUtils.getAppLoginUser().getId();
      Long id = memberDelPaymethodDto.getId();
      Map<String,Object> columnMap = new HashMap<>();
      columnMap.put("id", id);
      columnMap.put("member_id", memberId);
      memberPaymentMethodDao.deleteByMap(columnMap);
      return Result.ok("success");
   }
    @Override
    @Transactional
    public Result memberDelPaymethod(@Valid MemberDelPaymethodDto memberDelPaymethodDto) {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        Long id = memberDelPaymethodDto.getId();
        Map<String, Object> columnMap = new HashMap<>();
        columnMap.put("id", id);
        columnMap.put("member_id", memberId);
        memberPaymentMethodDao.deleteByMap(columnMap);
        return Result.ok("success");
    }
   @Override
   public Result memberPaymethodDetail(long id) {
      //获取用户ID
      Long memberId = LoginUserUtils.getAppLoginUser().getId();
      MemberPaymentMethodEntity memberPaymentMethod = memberPaymentMethodDao.selectById(id);
      MemberPaymethodDetailVo memberPaymethodDetailVo = new MemberPaymethodDetailVo();
      memberPaymethodDetailVo.setAccount(memberPaymentMethod.getAccount());
      memberPaymethodDetailVo.setBank(memberPaymentMethod.getBank());
      memberPaymethodDetailVo.setMemberId(memberId);
      memberPaymethodDetailVo.setName(memberPaymentMethod.getName());
      memberPaymethodDetailVo.setPaymentQrcode(memberPaymentMethod.getPaymentQrcode());
      memberPaymethodDetailVo.setPaymentType(memberPaymentMethod.getPaymentType());
      memberPaymethodDetailVo.setSubBank(memberPaymentMethod.getSubBank());
      return Result.ok(memberPaymethodDetailVo);
   }
    @Override
    public Result memberPaymethodDetail(long id) {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        MemberPaymentMethodEntity memberPaymentMethod = memberPaymentMethodDao.selectById(id);
   @Override
   public Result memberPaymethodDetailList() {
      //获取用户ID
      Long memberId = LoginUserUtils.getAppLoginUser().getId();
      Map<String,Object> columnMap = new HashMap<>();
      columnMap.put("member_id", memberId);
      List<MemberPaymentMethodEntity> selectByMap = memberPaymentMethodDao.selectByMap(columnMap);
      List<MemberPaymethodDetailVo> arrayList = new ArrayList<>();
      if(CollUtil.isNotEmpty(selectByMap)) {
         for(MemberPaymentMethodEntity memberPaymentMethodEntity : selectByMap) {
            MemberPaymethodDetailVo memberPaymethodDetailVo = new MemberPaymethodDetailVo();
            memberPaymethodDetailVo.setId(memberPaymentMethodEntity.getId());
            memberPaymethodDetailVo.setAccount(memberPaymentMethodEntity.getAccount());
            memberPaymethodDetailVo.setBank(memberPaymentMethodEntity.getBank());
            memberPaymethodDetailVo.setMemberId(memberId);
            memberPaymethodDetailVo.setName(memberPaymentMethodEntity.getName());
            memberPaymethodDetailVo.setPaymentQrcode(memberPaymentMethodEntity.getPaymentQrcode());
            memberPaymethodDetailVo.setPaymentType(memberPaymentMethodEntity.getPaymentType());
            memberPaymethodDetailVo.setSubBank(memberPaymentMethodEntity.getSubBank());
            arrayList.add(memberPaymethodDetailVo);
         }
      }
      MemberPaymethodDetailListVo memberPaymethodDetailListVo = new MemberPaymethodDetailListVo();
      memberPaymethodDetailListVo.setMemberPaymethodDetailVo(arrayList);
      return Result.ok(memberPaymethodDetailListVo);
   }
        MemberPaymethodDetailVo memberPaymethodDetailVo = new MemberPaymethodDetailVo();
        memberPaymethodDetailVo.setAccount(memberPaymentMethod.getAccount());
        memberPaymethodDetailVo.setBank(memberPaymentMethod.getBank());
        memberPaymethodDetailVo.setMemberId(memberId);
        memberPaymethodDetailVo.setName(memberPaymentMethod.getName());
        memberPaymethodDetailVo.setPaymentQrcode(memberPaymentMethod.getPaymentQrcode());
        memberPaymethodDetailVo.setPaymentType(memberPaymentMethod.getPaymentType());
        memberPaymethodDetailVo.setSubBank(memberPaymentMethod.getSubBank());
   @Override
   @Transactional
   public Result memberBindPhone(@Valid MemberBindPhoneDto memberBindPhoneDto) {
      //获取用户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"));
        return Result.ok(memberPaymethodDetailVo);
    }
    @Override
    public Result memberPaymethodDetailList() {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        Map<String, Object> columnMap = new HashMap<>();
        columnMap.put("member_id", memberId);
        List<MemberPaymentMethodEntity> selectByMap = memberPaymentMethodDao.selectByMap(columnMap);
        List<MemberPaymethodDetailVo> arrayList = new ArrayList<>();
        if (CollUtil.isNotEmpty(selectByMap)) {
            for (MemberPaymentMethodEntity memberPaymentMethodEntity : selectByMap) {
                MemberPaymethodDetailVo memberPaymethodDetailVo = new MemberPaymethodDetailVo();
                memberPaymethodDetailVo.setId(memberPaymentMethodEntity.getId());
                memberPaymethodDetailVo.setAccount(memberPaymentMethodEntity.getAccount());
                memberPaymethodDetailVo.setBank(memberPaymentMethodEntity.getBank());
                memberPaymethodDetailVo.setMemberId(memberId);
                memberPaymethodDetailVo.setName(memberPaymentMethodEntity.getName());
                memberPaymethodDetailVo.setPaymentQrcode(memberPaymentMethodEntity.getPaymentQrcode());
                memberPaymethodDetailVo.setPaymentType(memberPaymentMethodEntity.getPaymentType());
                memberPaymethodDetailVo.setSubBank(memberPaymentMethodEntity.getSubBank());
                arrayList.add(memberPaymethodDetailVo);
            }
            if (!smsCode.equals(code)) {
        }
        MemberPaymethodDetailListVo memberPaymethodDetailListVo = new MemberPaymethodDetailListVo();
        memberPaymethodDetailListVo.setMemberPaymethodDetailVo(arrayList);
        return Result.ok(memberPaymethodDetailListVo);
    }
    @Override
    @Transactional
    public Result memberBindPhone(@Valid MemberBindPhoneDto memberBindPhoneDto) {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        String phone = memberBindPhoneDto.getPhone();
        String code = memberBindPhoneDto.getCode();
        MemberEntity member = memberDao.selectById(memberId);
        if (ObjectUtil.isNotEmpty(member)) {
            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"));
    }
   @Override
   @Transactional
   public Result memberBindEmail(@Valid MemberBindEmailDto memberBindEmailDto) {
      //获取用户ID
      Long memberId = LoginUserUtils.getAppLoginUser().getId();
      String email = memberBindEmailDto.getEmail();
      String code = memberBindEmailDto.getCode();
      MemberEntity member = memberDao.selectById(memberId);
      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"));
          }
    @Override
    @Transactional
    public Result memberBindEmail(@Valid MemberBindEmailDto memberBindEmailDto) {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        String email = memberBindEmailDto.getEmail();
        String code = memberBindEmailDto.getCode();
        MemberEntity member = memberDao.selectById(memberId);
        boolean flag = commonservice.verifyCode(email, code);
        if (ObjectUtil.isNotEmpty(member)) {
            if (flag) {
                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"));
    }
   @Override
   public Result memberCoinAddressCount() {
      //获取用户ID
      Long memberId = LoginUserUtils.getAppLoginUser().getId();
      List<MemberCoinAddressCountVo> list = platformSymbolsCoinDao.selectCoinAddressCount(memberId);
      MemberCoinAddressCountListVo memberCoinAddressCountListVo = new MemberCoinAddressCountListVo();
      if(CollUtil.isNotEmpty(list)) {
         memberCoinAddressCountListVo.setMemberCoinAddressCountVo(list);
         return Result.ok(memberCoinAddressCountListVo);
      }
    @Override
    public Result memberCoinAddressCount() {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        List<MemberCoinAddressCountVo> list = platformSymbolsCoinDao.selectCoinAddressCount(memberId);
        MemberCoinAddressCountListVo memberCoinAddressCountListVo = new MemberCoinAddressCountListVo();
        if (CollUtil.isNotEmpty(list)) {
            memberCoinAddressCountListVo.setMemberCoinAddressCountVo(list);
            return Result.ok(memberCoinAddressCountListVo);
        }
        return Result.fail(MessageSourceUtils.getString("member_service_0020"));
    }
   @Override
   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);
      MemberCoinAddressListVo memberCoinAddressListVo = new MemberCoinAddressListVo();
      List<MemberCoinAddressVo> arrayList = new ArrayList<>();
      if(CollUtil.isNotEmpty(selectByMap)) {
         for(MemberCoinAddressEntity memberCoinAddressEntity : selectByMap) {
            MemberCoinAddressVo memberCoinAddressVo = new MemberCoinAddressVo();
            memberCoinAddressVo.setId(memberCoinAddressEntity.getId());
            memberCoinAddressVo.setAddress(memberCoinAddressEntity.getAddress());
            memberCoinAddressVo.setIsBiyict(memberCoinAddressEntity.getIsBiyict());
            memberCoinAddressVo.setMemberId(memberCoinAddressEntity.getMemberId());
            memberCoinAddressVo.setPrivateKey(memberCoinAddressEntity.getPrivateKey());
            memberCoinAddressVo.setSymbol(memberCoinAddressEntity.getSymbol());
            memberCoinAddressVo.setLabel(memberCoinAddressEntity.getLabel());
            memberCoinAddressVo.setSymbolscoinId(memberCoinAddressEntity.getSymbolscoinId());
            arrayList.add(memberCoinAddressVo);
         }
      }
      memberCoinAddressListVo.setMemberCoinAddressVo(arrayList);
      return Result.ok(memberCoinAddressListVo);
   }
   @Override
   @Transactional
   public Result memberAddCoinAddress(@Valid MemberAddCoinAddressDto memberAddCoinAddressDto) {
      //获取用户ID
      Long memberId = LoginUserUtils.getAppLoginUser().getId();
      String address = memberAddCoinAddressDto.getAddress();
      String isBiyict = memberAddCoinAddressDto.getIsBiyict();
      Long symbolscoinId = memberAddCoinAddressDto. getSymbolscoinId();
      String remark = memberAddCoinAddressDto.getRemark();
      PlatformSymbolsCoinEntity platformSymbolsCoinEntity = platformSymbolsCoinDao.selectById(symbolscoinId);
      MemberCoinAddressEntity memberCoinAddressEntity = new MemberCoinAddressEntity();
      memberCoinAddressEntity.setAddress(address);
      memberCoinAddressEntity.setMemberId(memberId);
      memberCoinAddressEntity.setIsBiyict(isBiyict);
      memberCoinAddressEntity.setSymbolscoinId(symbolscoinId);
      memberCoinAddressEntity.setLabel(remark);
      memberCoinAddressEntity.setSymbol(platformSymbolsCoinEntity.getName());
      memberCoinAddressDao.insert(memberCoinAddressEntity);
       return Result.ok(MessageSourceUtils.getString("member_service_0024"));
   }
   @Override
   public Result memberSendCodeWay() {
      //获取用户ID
      Long memberId = LoginUserUtils.getAppLoginUser().getId();
      MemberEntity member = memberDao.selectById(memberId);
      MemberSendCodeWayVo memberSendCodeWayVo = new MemberSendCodeWayVo();
      if(ObjectUtil.isNotEmpty(member)) {
         memberSendCodeWayVo.setPhone(member.getPhone());
         memberSendCodeWayVo.setEmail(member.getEmail());
      }
      return Result.ok(memberSendCodeWayVo);
   }
   @Override
   @Transactional
   public Result memberDelCoinAddress(@Valid MemberDelCoinAddressDto memberDelCoinAddressDto) {
      //获取用户ID
      Long memberId = LoginUserUtils.getAppLoginUser().getId();
      MemberEntity member = memberDao.selectById(memberId);
      if(ObjectUtil.isNotEmpty(member)) {
         Long id = memberDelCoinAddressDto.getId();
         memberCoinAddressDao.deleteById(id);
      }
      return Result.ok("success");
   }
   @Override
   public Result memberAuthenticationInfo() {
      //获取用户ID
      Long memberId = LoginUserUtils.getAppLoginUser().getId();
      MemberEntity member = memberDao.selectById(memberId);
      Map<String, Object> columnMap = new HashMap<>();
      columnMap.put("member_id", memberId);
      List<MemberAuthenticationEntity> selectByMap = memberAuthenticationDao.selectByMap(columnMap);
      MemberAuthenticationInfoVo memberAuthnticationInfoVo = new MemberAuthenticationInfoVo();
      memberAuthnticationInfoVo.setCertifyStatus(member.getCertifyStatus());
      if(CollUtil.isNotEmpty(selectByMap)) {
         for(MemberAuthenticationEntity memberAuthenticationEntity : selectByMap) {
            memberAuthnticationInfoVo.setFirstName(memberAuthenticationEntity.getFirstName());
            memberAuthnticationInfoVo.setSecondName(memberAuthenticationEntity.getSecondName());
            memberAuthnticationInfoVo.setNation(memberAuthenticationEntity.getNation());
            memberAuthnticationInfoVo.setIdCardNo(memberAuthenticationEntity.getIdcardNo());
         }
      }
      return Result.ok(memberAuthnticationInfoVo);
   }
   @Override
   public Result memberPersonCenterInfo() {
      //获取用户ID
      Long memberId = LoginUserUtils.getAppLoginUser().getId();
      MemberEntity member = memberDao.selectById(memberId);
      MemberPersonCenterInfoVo memberPersonCenterInfoVo = new MemberPersonCenterInfoVo();
      if(StrUtil.isNotEmpty(member.getPhone())) {
         memberPersonCenterInfoVo.setPhone(1);
      }else {
         memberPersonCenterInfoVo.setPhone(0);
      }
      if(StrUtil.isNotEmpty(member.getEmail())) {
         memberPersonCenterInfoVo.setEmail(1);
      }else {
         memberPersonCenterInfoVo.setEmail(0);
      }
      if(StrUtil.isNotEmpty(member.getTradePassword())) {
         memberPersonCenterInfoVo.setTradePassword(1);
      }else {
         memberPersonCenterInfoVo.setTradePassword(0);
      }
      Integer tradeAgingSetting = member.getTradeAgingSetting();
      if(tradeAgingSetting != null && tradeAgingSetting == MemberPersonCenterInfoVo.PWD_NEED_FORVER) {
         memberPersonCenterInfoVo.setTradeAgingSetting(MemberPersonCenterInfoVo.PWD_NEED_FORVER);
      }else {
         memberPersonCenterInfoVo.setTradeAgingSetting(MemberPersonCenterInfoVo.PWD_NEED_NO);
      }
      return Result.ok(memberPersonCenterInfoVo);
   }
   @Override
   public Result memberCoinInfoList() {
      //获取用户ID
      Long memberId = LoginUserUtils.getAppLoginUser().getId();
      MemberCoinInfoListVo memberCoinInfoListVo = new MemberCoinInfoListVo();
      List<PlatformSymbolsCoinEntity> selectByMap = platformSymbolsCoinDao.selectByMap(new HashMap<>());
      List<MemberCoinInfoVo> arrayList = new ArrayList<>();
      if(CollUtil.isNotEmpty(selectByMap)) {
         for(PlatformSymbolsCoinEntity platformSymbolsCoinEntity : selectByMap) {
            MemberCoinInfoVo memberCoinInfoVo = new MemberCoinInfoVo();
            memberCoinInfoVo.setName(platformSymbolsCoinEntity.getName());
            arrayList.add(memberCoinInfoVo);
         }
      }
      memberCoinInfoListVo.setMemberCoinInfoVo(arrayList);
      return Result.ok(memberCoinInfoListVo);
   }
   @Override
   public Result memberAvivableCoinInfo(String symbol) {
      //获取用户ID
      Long memberId = LoginUserUtils.getAppLoginUser().getId();
        MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, symbol);
        if (ObjectUtil.isEmpty(walletCoin)) {
             return Result.fail(MessageSourceUtils.getString("member_service_0087"));
    @Override
    public Result memberCoinAddressList(String symbol) {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        List<MemberCoinAddressEntity> selectByMap = memberCoinAddressDao.selectCoinAddressListByMap(symbol, memberId);
        MemberCoinAddressListVo memberCoinAddressListVo = new MemberCoinAddressListVo();
        List<MemberCoinAddressVo> arrayList = new ArrayList<>();
        if (CollUtil.isNotEmpty(selectByMap)) {
            for (MemberCoinAddressEntity memberCoinAddressEntity : selectByMap) {
                MemberCoinAddressVo memberCoinAddressVo = new MemberCoinAddressVo();
                memberCoinAddressVo.setId(memberCoinAddressEntity.getId());
                memberCoinAddressVo.setAddress(memberCoinAddressEntity.getAddress());
                memberCoinAddressVo.setIsBiyict(memberCoinAddressEntity.getIsBiyict());
                memberCoinAddressVo.setMemberId(memberCoinAddressEntity.getMemberId());
                memberCoinAddressVo.setPrivateKey(memberCoinAddressEntity.getPrivateKey());
                memberCoinAddressVo.setSymbol(memberCoinAddressEntity.getSymbol());
                memberCoinAddressVo.setLabel(memberCoinAddressEntity.getLabel());
                memberCoinAddressVo.setSymbolscoinId(memberCoinAddressEntity.getSymbolscoinId());
                arrayList.add(memberCoinAddressVo);
            }
        }
        memberCoinAddressListVo.setMemberCoinAddressVo(arrayList);
        MemberAvivableCoinInfoVo memberAvivableCoinInfoVo = new MemberAvivableCoinInfoVo();
        memberAvivableCoinInfoVo.setAvailableBalance(walletCoin.getAvailableBalance());
        PlatformFeeSettingEntity feeSetting = platformFeeSettingDao.getFeeSettingByTypeAndSymbol(2,symbol);
        if(ObjectUtil.isEmpty(feeSetting)) {
           return Result.fail(MessageSourceUtils.getString("member_service_0087"));
        }
        memberAvivableCoinInfoVo.setFee(feeSetting.getFeePrice());
        return Result.ok(memberAvivableCoinInfoVo);
        return Result.ok(memberCoinAddressListVo);
    }
   @Override
   public NeedMoneyMemberVo selectFriendRelationUserByMemberId(Long memberId){
      return memberDao.selectFriendRelationUserByMemberId(memberId);
   }
    @Override
    @Transactional
    public Result memberAddCoinAddress(@Valid MemberAddCoinAddressDto memberAddCoinAddressDto) {
   @Override
   public List<NeedMoneyMemberVo> selectAllNeedMoneyMember(List<String> list) {
      return memberDao.selectAllNeedMoneyMember(list);
   }
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        String address = memberAddCoinAddressDto.getAddress();
        String isBiyict = memberAddCoinAddressDto.getIsBiyict();
        Long symbolscoinId = memberAddCoinAddressDto.getSymbolscoinId();
        String remark = memberAddCoinAddressDto.getRemark();
   @Override
   public MemberEntity selectMemberInfoByInviteId(String inviteId) {
      return memberDao.selectMemberInfoByInviteId(inviteId);
   }
        PlatformSymbolsCoinEntity platformSymbolsCoinEntity = platformSymbolsCoinDao.selectById(symbolscoinId);
   @Override
   @Transactional
   public Result memberUpdateTradersPwdTime(MemberUpdateTradersPwdTimeDto memberUpdateTradersPwdTimeDto) {
      //获取用户ID
      Long memberId = LoginUserUtils.getAppLoginUser().getId();
      MemberEntity member = memberDao.selectById(memberId);
      member.setTradeAgingSetting(memberUpdateTradersPwdTimeDto.getTradeAgingSetting());
      memberDao.updateById(member);
      return Result.ok("success");
   }
        MemberCoinAddressEntity memberCoinAddressEntity = new MemberCoinAddressEntity();
        memberCoinAddressEntity.setAddress(address);
        memberCoinAddressEntity.setMemberId(memberId);
        memberCoinAddressEntity.setIsBiyict(MemberCoinAddressEntity.IS_BIYICT_NO);
        memberCoinAddressEntity.setSymbolscoinId(symbolscoinId);
        memberCoinAddressEntity.setLabel(remark);
        memberCoinAddressEntity.setSymbol(platformSymbolsCoinEntity.getName());
   @Override
   public Result memberSubmitCoinApply(@Valid MemberSubmitCoinApplyDto memberSubmitCoinApplyDto) {
      //获取用户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(memberSubmitCoinApplyDto.getTradePassword()))) {
                        return Result.fail(MessageSourceUtils.getString("member_service_0082"));
                    }
                  boolean flag = commonservice.verifyCode(memberSubmitCoinApplyDto.getAccount(), memberSubmitCoinApplyDto.getCode());
                    if (flag) {
                       MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, memberSubmitCoinApplyDto.getSymbol());
                       BigDecimal availableBalance = walletCoin.getAvailableBalance();
                       BigDecimal coinNumber = memberSubmitCoinApplyDto.getCoinNumber().add(memberSubmitCoinApplyDto.getFeeAmount());
                       if(availableBalance.compareTo(BigDecimal.ZERO) > 0
                             && availableBalance.compareTo(coinNumber) > 0) {
                          //新增提币记录
                          MemberCoinWithdrawEntity memberCoinWithdrawEntity = new MemberCoinWithdrawEntity();
                          memberCoinWithdrawEntity.setAddress(memberSubmitCoinApplyDto.getAddress());
                          memberCoinWithdrawEntity.setAmount(coinNumber);
                          memberCoinWithdrawEntity.setFeeAmount(memberSubmitCoinApplyDto.getFeeAmount());
                          memberCoinWithdrawEntity.setSymbol(memberSubmitCoinApplyDto.getSymbol());
                          memberCoinWithdrawEntity.setMemberId(memberId);
                          memberCoinWithdrawEntity.setStatus(MemberCoinWithdrawEntity.STATUS_DOING);
                          Map<String,Object> columnMap = new HashMap<>();
                          columnMap.put("symbol", memberSubmitCoinApplyDto.getSymbol());
                          columnMap.put("address", memberSubmitCoinApplyDto.getAddress());
                          List<MemberCoinAddressEntity> selectByMap = memberCoinAddressDao.selectByMap(columnMap);
                          if(CollUtil.isEmpty(selectByMap)) {
                             memberCoinWithdrawEntity.setIsInside(MemberCoinWithdrawEntity.ISINSIDE_NO);
                          }else {
                             memberCoinWithdrawEntity.setIsInside(MemberCoinWithdrawEntity.ISINSIDE_YES);
                          }
                          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(memberSubmitCoinApplyDto.getCoinNumber());
                            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);
                         }
                      });
                      */
                            return Result.ok(MessageSourceUtils.getString("member_service_0086"));
                       }else {
                          return Result.fail(MessageSourceUtils.getString("order_service_0040"));
                       }
                    }else {
                       return Result.fail(MessageSourceUtils.getString("member_service_0039"));
                    }
        memberCoinAddressDao.insert(memberCoinAddressEntity);
        return Result.ok(MessageSourceUtils.getString("member_service_0024"));
    }
    @Override
    public Result memberSendCodeWay() {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        MemberEntity member = memberDao.selectById(memberId);
        MemberSendCodeWayVo memberSendCodeWayVo = new MemberSendCodeWayVo();
        if (ObjectUtil.isNotEmpty(member)) {
            memberSendCodeWayVo.setPhone(member.getPhone());
            memberSendCodeWayVo.setEmail(member.getEmail());
        }
        return Result.ok(memberSendCodeWayVo);
    }
    @Override
    @Transactional
    public Result memberDelCoinAddress(@Valid MemberDelCoinAddressDto memberDelCoinAddressDto) {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        MemberEntity member = memberDao.selectById(memberId);
        if (ObjectUtil.isNotEmpty(member)) {
            Long id = memberDelCoinAddressDto.getId();
            memberCoinAddressDao.deleteById(id);
        }
        return Result.ok("success");
    }
    @Override
    public Result memberAuthenticationInfo() {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        MemberEntity member = memberDao.selectById(memberId);
        Map<String, Object> columnMap = new HashMap<>();
        columnMap.put("member_id", memberId);
        List<MemberAuthenticationEntity> selectByMap = memberAuthenticationDao.selectByMap(columnMap);
        MemberAuthenticationInfoVo memberAuthnticationInfoVo = new MemberAuthenticationInfoVo();
        memberAuthnticationInfoVo.setCertifyStatus(member.getCertifyStatus());
        if (CollUtil.isNotEmpty(selectByMap)) {
            for (MemberAuthenticationEntity memberAuthenticationEntity : selectByMap) {
                memberAuthnticationInfoVo.setFirstName(memberAuthenticationEntity.getFirstName());
                memberAuthnticationInfoVo.setSecondName(memberAuthenticationEntity.getSecondName());
                memberAuthnticationInfoVo.setNation(memberAuthenticationEntity.getNation());
                memberAuthnticationInfoVo.setIdCardNo(memberAuthenticationEntity.getIdcardNo());
                memberAuthnticationInfoVo.setType(memberAuthenticationEntity.getType());
            }
        }
        return Result.ok(memberAuthnticationInfoVo);
    }
    @Override
    public Result memberPersonCenterInfo() {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        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 {
            memberPersonCenterInfoVo.setPhone(0);
        }
        if (StrUtil.isNotEmpty(member.getEmail())) {
            memberPersonCenterInfoVo.setEmail(1);
        } else {
            memberPersonCenterInfoVo.setEmail(0);
        }
        if (StrUtil.isNotEmpty(member.getTradePassword())) {
            memberPersonCenterInfoVo.setTradePassword(1);
        } else {
            memberPersonCenterInfoVo.setTradePassword(0);
        }
        Integer tradeAgingSetting = member.getTradeAgingSetting();
        if (tradeAgingSetting != null && tradeAgingSetting == MemberPersonCenterInfoVo.PWD_NEED_FORVER) {
            memberPersonCenterInfoVo.setTradeAgingSetting(MemberPersonCenterInfoVo.PWD_NEED_FORVER);
        } else {
            memberPersonCenterInfoVo.setTradeAgingSetting(MemberPersonCenterInfoVo.PWD_NEED_NO);
        }
        return Result.ok(memberPersonCenterInfoVo);
    }
    @Override
    public Result memberCoinInfoList() {
        MemberCoinInfoListVo memberCoinInfoListVo = new MemberCoinInfoListVo();
        List<PlatformSymbolsCoinEntity> selectByMap = platformSymbolsCoinDao.selectByMap(new HashMap<>());
        List<MemberCoinInfoVo> arrayList = new ArrayList<>();
        if (CollUtil.isNotEmpty(selectByMap)) {
            for (PlatformSymbolsCoinEntity platformSymbolsCoinEntity : selectByMap) {
                MemberCoinInfoVo memberCoinInfoVo = new MemberCoinInfoVo();
                memberCoinInfoVo.setName(platformSymbolsCoinEntity.getName());
                arrayList.add(memberCoinInfoVo);
            }
        }
        memberCoinInfoListVo.setMemberCoinInfoVo(arrayList);
        return Result.ok(memberCoinInfoListVo);
    }
    @Override
    public Result memberAvivableCoinInfo(String symbol) {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, symbol);
        if (ObjectUtil.isEmpty(walletCoin)) {
            return Result.fail(MessageSourceUtils.getString("member_service_0087"));
        }
        List<MemberAvivableCoinInfoVo> arrayList = new ArrayList<>();
        List<PlatformFeeSettingEntity> feeSettingByTypeAndSymbolLable = platformFeeSettingDao.getFeeSettingsByTypeAndSymbol(2, symbol);
        if (CollUtil.isEmpty(feeSettingByTypeAndSymbolLable)) {
            return Result.fail(MessageSourceUtils.getString("member_service_0087"));
        }
        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
    public NeedMoneyMemberVo selectFriendRelationUserByMemberId(Long memberId) {
        return memberDao.selectFriendRelationUserByMemberId(memberId);
    }
    @Override
    public List<NeedMoneyMemberVo> selectAllNeedMoneyMember(List<String> list) {
        return memberDao.selectAllNeedMoneyMember(list);
    }
    @Override
    public MemberEntity selectMemberInfoByInviteId(String inviteId) {
        return memberDao.selectMemberInfoByInviteId(inviteId);
    }
    @Override
    @Transactional
    public Result memberUpdateTradersPwdTime(MemberUpdateTradersPwdTimeDto memberUpdateTradersPwdTimeDto) {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        MemberEntity member = memberDao.selectById(memberId);
        member.setTradeAgingSetting(memberUpdateTradersPwdTimeDto.getTradeAgingSetting());
        memberDao.updateById(member);
        return Result.ok("success");
    }
    @Override
    public Result memberSubmitCoinApply(@Valid MemberSubmitCoinApplyDto memberSubmitCoinApplyDto) {
        //获取用户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(memberSubmitCoinApplyDto.getTradePassword()))) {
            return Result.fail(MessageSourceUtils.getString("member_service_0082"));
        }
        boolean flag = commonservice.verifyCode(memberSubmitCoinApplyDto.getAccount(), memberSubmitCoinApplyDto.getCode());
        if (flag) {
            MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, memberSubmitCoinApplyDto.getSymbol());
            BigDecimal availableBalance = walletCoin.getAvailableBalance();
            BigDecimal coinNumber = memberSubmitCoinApplyDto.getCoinNumber();
            if (availableBalance.compareTo(BigDecimal.ZERO) > 0
                    && availableBalance.compareTo(coinNumber) >= 0) {
                //新增提币记录
                MemberCoinWithdrawEntity memberCoinWithdrawEntity = new MemberCoinWithdrawEntity();
                memberCoinWithdrawEntity.setAddress(memberSubmitCoinApplyDto.getAddress());
                memberCoinWithdrawEntity.setAmount(coinNumber);
                memberCoinWithdrawEntity.setFeeAmount(memberSubmitCoinApplyDto.getFeeAmount());
                memberCoinWithdrawEntity.setSymbol(memberSubmitCoinApplyDto.getSymbol());
                memberCoinWithdrawEntity.setMemberId(memberId);
                memberCoinWithdrawEntity.setStatus(MemberCoinWithdrawEntity.STATUS_DOING);
                Map<String, Object> columnMap = new HashMap<>();
                columnMap.put("symbol", memberSubmitCoinApplyDto.getSymbol());
                columnMap.put("address", memberSubmitCoinApplyDto.getAddress());
                columnMap.put("is_biyict", MemberCoinAddressEntity.IS_BIYICT_YES);
                List<MemberCoinAddressEntity> selectByMap = memberCoinAddressDao.selectByMap(columnMap);
                if (CollUtil.isEmpty(selectByMap)) {
                    memberCoinWithdrawEntity.setIsInside(MemberCoinWithdrawEntity.ISINSIDE_NO);
                } else {
                    memberCoinWithdrawEntity.setIsInside(MemberCoinWithdrawEntity.ISINSIDE_YES);
                }
                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(memberSubmitCoinApplyDto.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 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() {
        MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
        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();
                if ("37059551".equals(memberEntity.getInviteId())) {
                    appVersionVo.setAddress("www.baidu.com");
                    appVersionVo.setType(appVersionEntity.getType());
                    appVersionVo.setVersion(appVersionEntity.getVersion());
                } else {
                    appVersionVo.setAddress(appVersionEntity.getAddress());
                    appVersionVo.setType(appVersionEntity.getType());
                    appVersionVo.setVersion(appVersionEntity.getVersion());
                }
                arrayList.add(appVersionVo);
            }
        }
        return Result.ok(arrayList);
    }
    @Override
    public Result getPcVersionInfo() {
        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);
    }
}