xiaoyong931011
2020-06-01 b30a22e97dfe1a7c098123ec0dbbad1b99b7c885
src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
@@ -12,28 +12,48 @@
import com.xcong.excoin.common.enumerates.SymbolEnum;
import com.xcong.excoin.common.response.Result;
import com.xcong.excoin.common.system.dto.RegisterDto;
import com.xcong.excoin.common.system.service.CommonService;
import com.xcong.excoin.modules.member.dao.*;
import com.xcong.excoin.modules.member.entity.*;
import com.xcong.excoin.modules.member.parameter.dto.MemberAddCoinAddressDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberAuthenticationDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberBindEmailDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberBindPhoneDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberDelCoinAddressDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberDelPaymethodDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberForgetPwdDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberPaymethodDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberUpdatePwdDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberUpdateTradePwdDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberUpdateTradersPwdTimeDto;
import com.xcong.excoin.modules.member.parameter.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;
import com.xcong.excoin.modules.platform.entity.PlatformFeeSettingEntity;
import com.xcong.excoin.modules.platform.entity.PlatformSymbolsCoinEntity;
import com.xcong.excoin.utils.MessageSourceUtils;
import com.xcong.excoin.utils.RedisUtils;
import com.xcong.excoin.utils.ShareCodeUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -68,11 +88,26 @@
    @Resource
    MemberAuthenticationDao memberAuthenticationDao;
    
    @Autowired
    @Resource
    RedisUtils redisUtils;
    
    @Resource
    MemberPaymentMethodDao memberPaymentMethodDao;
    @Resource
    PlatformSymbolsCoinDao platformSymbolsCoinDao;
    @Resource
    PlatformFeeSettingDao platformFeeSettingDao;
    @Resource
    MemberCoinAddressDao memberCoinAddressDao;
    @Resource
    private CommonService commonservice;
    @Resource
    private MemberWalletContractSimulateDao memberWalletContractSimulateDao;
    @Transactional()
    @Override
@@ -117,7 +152,7 @@
        String ids = "";
        while (!flag) {
            ids += ("," + parentId);
            MemberEntity parentMember = memberDao.selectMemberInfoByRefererId(parentId);
            MemberEntity parentMember = memberDao.selectMemberInfoByInviteId(parentId);
            if (parentMember == null) {
                break;
            }
@@ -138,6 +173,15 @@
        walletContract.setBorrowedFund(AppContants.INIT_MONEY);
        walletContract.setWalletCode(CoinTypeEnum.USDT.name());
        memberWalletContractDao.insert(walletContract);
        MemberWalletContractSimulateEntity walletContractSimulate = new MemberWalletContractSimulateEntity();
        walletContractSimulate.setMemberId(member.getId());
      walletContractSimulate.setAvailableBalance(new BigDecimal(AppContants.INIT_SIMULATE_MONEY));
      walletContractSimulate.setTotalBalance(new BigDecimal(AppContants.INIT_SIMULATE_MONEY));
      walletContractSimulate.setFrozenBalance(AppContants.INIT_MONEY);
      walletContractSimulate.setBorrowedFund(AppContants.INIT_MONEY);
      walletContractSimulate.setWalletCode(CoinTypeEnum.USDT.name());
      memberWalletContractSimulateDao.insert(walletContractSimulate);
        // 初始化币币钱包
@@ -186,33 +230,28 @@
   public Result memberForgetPwd(@Valid MemberForgetPwdDto memberForgetPwdDto) {
      
      int type = memberForgetPwdDto.getType();
      String phone = memberForgetPwdDto.getPhone();
      String email = memberForgetPwdDto.getEmail();
      String account = memberForgetPwdDto.getAccount();
      String code = memberForgetPwdDto.getCode();
      String password = memberForgetPwdDto.getPassword();
      
      Map<String, Object> hashMap = new HashMap<>();
      if(type == 1) {
         hashMap.put("phone", phone);
         hashMap.put("phone", account);
      }else {
         hashMap.put("email", email);
         hashMap.put("email", account);
      }
      List<MemberEntity> member = memberDao.selectByMap(hashMap);
      if (CollUtil.isEmpty(member)) {
            return Result.fail(MessageSourceUtils.getString("member_service_0047"));
        }
      boolean verificationCode = verificationCode(type, phone, code, email);
      if(verificationCode) {
      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"));
      }
      if(type == 1) {
         redisUtils.del("SMS_" + phone);
      }else {
         redisUtils.del("EMAIL_" + email);
      }
        return Result.ok(MessageSourceUtils.getString("member_service_0048"));
    }
@@ -235,11 +274,6 @@
         memberDao.updateById(memberEntity);
      }else {
         return Result.fail(MessageSourceUtils.getString("member_service_0041"));
      }
      if(type == 1) {
         redisUtils.del("SMS_" + phone);
      }else {
         redisUtils.del("EMAIL_" + email);
      }
        return Result.ok(MessageSourceUtils.getString("member_service_0040"));
    }
@@ -319,7 +353,7 @@
                memberAuthenticationEntity.setIdcardImageInHand(memberAuthenticationDto.getIdCardImage());
                memberAuthenticationDao.insert(memberAuthenticationEntity);
                
                member.setCertifyStatus(MemberEntity.CERTIFY_STATUS_Y);
                member.setCertifyStatus(MemberEntity.CERTIFY_STATUS_ING);
                member.setIdcardNo(idCardNo);
                memberDao.updateById(member);
                /**
@@ -345,22 +379,27 @@
      
      String code = memberUpdateTradePwdDto.getCode();
      String password = memberUpdateTradePwdDto.getPassword();
      String phone = memberUpdateTradePwdDto.getPhone();
      String email = memberUpdateTradePwdDto.getEmail();
      String account = memberUpdateTradePwdDto.getAccount();
      String phone = memberEntity.getPhone();
      String email = memberEntity.getEmail();
      int type = memberUpdateTradePwdDto.getType();
      boolean verificationCode = verificationCode(type, phone, code, email);
      if(verificationCode) {
         memberEntity.setTradePassword(SecureUtil.md5(password));
         memberDao.updateById(memberEntity);
      }else {
      //验证手机号或者邮箱是否是该账户绑定的手机号或者邮箱
      if(MemberEntity.ACCOUNT_TYPE_PHONE.equals(type) && !phone.equals(account)) {
         return Result.fail(MessageSourceUtils.getString("member_service_0041"));
      }
      if(type == 1) {
         redisUtils.del("SMS_" + phone);
      }else {
         redisUtils.del("EMAIL_" + email);
      if(MemberEntity.ACCOUNT_TYPE_EMAIL.equals(type) && !email.equals(account)) {
         return Result.fail(MessageSourceUtils.getString("member_service_0041"));
      }
        return Result.ok(MessageSourceUtils.getString("member_service_0051"));
      boolean flag = commonservice.verifyCode(account, code);
        if (flag) {
           memberEntity.setTradePassword(SecureUtil.md5(password));
           memberDao.updateById(memberEntity);
           return Result.ok(MessageSourceUtils.getString("member_service_0051"));
        }
        return Result.fail(MessageSourceUtils.getString("member_service_0045"));
    }
   @Override
@@ -371,15 +410,6 @@
      MemberEntity memberEntity = memberDao.selectById(memberId);
         if (ObjectUtil.isEmpty(memberEntity)) {
            return Result.fail(MessageSourceUtils.getString("member_service_0003")); 
         }
         String phone = memberEntity.getPhone();
         if(StrUtil.isEmpty(phone)) {
            redisUtils.del(memberEntity.getPhone());
         }
         String email = memberEntity.getEmail();
         if(StrUtil.isEmpty(email)) {
            redisUtils.del(memberEntity.getPhone());
         }
         
         return Result.ok(MessageSourceUtils.getString("member_service_0071"));
@@ -394,21 +424,17 @@
      
      String code = memberForgetPwdDto.getCode();
      String password = memberForgetPwdDto.getPassword();
      String phone = memberForgetPwdDto.getPhone();
      String email = memberForgetPwdDto.getEmail();
      String account = memberForgetPwdDto.getAccount();
      int type = memberForgetPwdDto.getType();
      boolean verificationCode = verificationCode(type, phone, code, email);
      if(verificationCode) {
      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"));
      }
      if(type == 1) {
         redisUtils.del("SMS_" + phone);
      }else {
         redisUtils.del("EMAIL_" + email);
      }
        return Result.ok(MessageSourceUtils.getString("member_service_0068"));
    }
@@ -428,7 +454,6 @@
      String paymentQrcode = memberPaymethodDto.getPaymentQrcode();
      String paymentType = memberPaymethodDto.getPaymentType();
      String subBank = memberPaymethodDto.getSubBank();
      String isDefualt = memberPaymethodDto.getIsDefualt();
      MemberPaymentMethodEntity memberPaymentMethodEntity = new MemberPaymentMethodEntity();
      memberPaymentMethodEntity.setMemberId(memberId);
      memberPaymentMethodEntity.setAccount(account);
@@ -437,7 +462,6 @@
      memberPaymentMethodEntity.setPaymentQrcode(paymentQrcode);
      memberPaymentMethodEntity.setPaymentType(paymentType);
      memberPaymentMethodEntity.setSubBank(subBank);
      memberPaymentMethodEntity.setIsDefualt(isDefualt);
      memberPaymentMethodDao.insert(memberPaymentMethodEntity);
      return Result.ok(MessageSourceUtils.getString("member_service_0024"));
    }
@@ -484,6 +508,7 @@
      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);
@@ -501,6 +526,7 @@
   }
   @Override
   @Transactional
   public Result memberBindPhone(@Valid MemberBindPhoneDto memberBindPhoneDto) {
      //获取用户ID
      Long memberId = LoginUserUtils.getAppLoginUser().getId();
@@ -519,11 +545,250 @@
            }
            member.setPhone(phone);
            memberDao.updateById(member);
            redisUtils.del("SMS_" + member.getPhone());
            return Result.ok(MessageSourceUtils.getString("member_service_0014"));
        }
      
        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"));
          }
        }
        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);
      }
        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"));
        }
        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);
    }
   @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");
   }
}