Helius
2020-05-31 7127fcdd537e41b41a4b6ada979457f6f9a6b478
src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
@@ -12,8 +12,10 @@
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;
@@ -24,11 +26,14 @@
import com.xcong.excoin.modules.member.parameter.dto.MemberUpdateTradePwdDto;
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.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.service.MemberService;
import com.xcong.excoin.modules.platform.dao.PlatformSymbolsCoinDao;
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;
@@ -39,6 +44,7 @@
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;
@@ -73,7 +79,7 @@
    @Resource
    MemberAuthenticationDao memberAuthenticationDao;
    
    @Autowired
    @Resource
    RedisUtils redisUtils;
    
    @Resource
@@ -81,6 +87,15 @@
    
    @Resource
    PlatformSymbolsCoinDao platformSymbolsCoinDao;
    @Resource
    MemberCoinAddressDao memberCoinAddressDao;
    @Resource
    private CommonService commonservice;
    @Resource
    private MemberWalletContractSimulateDao memberWalletContractSimulateDao;
    @Transactional()
    @Override
@@ -147,6 +162,15 @@
        walletContract.setWalletCode(CoinTypeEnum.USDT.name());
        memberWalletContractDao.insert(walletContract);
        MemberWalletContractSimulateEntity walletContractSimulate = new MemberWalletContractSimulateEntity();
        walletContractSimulate.setMemberId(member.getId());
      walletContractSimulate.setAvailableBalance(new BigDecimal(AppContants.INIT_SIMULATE_MONEY));
      walletContractSimulate.setTotalBalance(new BigDecimal(AppContants.INIT_SIMULATE_MONEY));
      walletContractSimulate.setFrozenBalance(AppContants.INIT_MONEY);
      walletContractSimulate.setBorrowedFund(AppContants.INIT_MONEY);
      walletContractSimulate.setWalletCode(CoinTypeEnum.USDT.name());
      memberWalletContractSimulateDao.insert(walletContractSimulate);
        // 初始化币币钱包
        for (CoinTypeEnum coinTypeEnum : CoinTypeEnum.values()) {
@@ -194,23 +218,23 @@
   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);
@@ -218,9 +242,9 @@
         return Result.fail(MessageSourceUtils.getString("member_service_0045"));
      }
      if(type == 1) {
         redisUtils.del("SMS_" + phone);
         redisUtils.del("SMS_" + account);
      }else {
         redisUtils.del("EMAIL_" + email);
         redisUtils.del("EMAIL_" + account);
      }
        return Result.ok(MessageSourceUtils.getString("member_service_0048"));
    }
@@ -353,22 +377,32 @@
      
      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);
           if(MemberEntity.ACCOUNT_TYPE_PHONE.equals(type)) {
              redisUtils.del("SMS_" + phone);
           }else {
              redisUtils.del("EMAIL_" + email);
           }
           return Result.ok(MessageSourceUtils.getString("member_service_0051"));
        }
        return Result.fail(MessageSourceUtils.getString("member_service_0041"));
    }
   @Override
@@ -402,20 +436,21 @@
      
      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);
         redisUtils.del("SMS_" + account);
      }else {
         redisUtils.del("EMAIL_" + email);
         redisUtils.del("EMAIL_" + account);
      }
        return Result.ok(MessageSourceUtils.getString("member_service_0068"));
    }
@@ -509,6 +544,7 @@
   }
   @Override
   @Transactional
   public Result memberBindPhone(@Valid MemberBindPhoneDto memberBindPhoneDto) {
      //获取用户ID
      Long memberId = LoginUserUtils.getAppLoginUser().getId();
@@ -535,6 +571,7 @@
    }
   @Override
   @Transactional
   public Result memberBindEmail(@Valid MemberBindEmailDto memberBindEmailDto) {
      
      //获取用户ID
@@ -572,4 +609,59 @@
        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"));
   }
}