xiaoyong931011
2020-05-29 e46725dbcd18577593fe9c6d8fedee3ce29e6dc8
src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
@@ -4,7 +4,6 @@
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.digest.MD5;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xcong.excoin.common.LoginUserUtils;
@@ -15,19 +14,35 @@
import com.xcong.excoin.common.system.dto.RegisterDto;
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.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.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.utils.MessageSourceUtils;
import com.xcong.excoin.utils.RedisUtils;
import com.xcong.excoin.utils.ShareCodeUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -63,6 +78,15 @@
    
    @Autowired
    RedisUtils redisUtils;
    @Resource
    MemberPaymentMethodDao memberPaymentMethodDao;
    @Resource
    PlatformSymbolsCoinDao platformSymbolsCoinDao;
    @Resource
    MemberCoinAddressDao memberCoinAddressDao;
    @Transactional()
    @Override
@@ -172,6 +196,7 @@
    }
   
   @Override
   @Transactional
   public Result memberForgetPwd(@Valid MemberForgetPwdDto memberForgetPwdDto) {
      
      int type = memberForgetPwdDto.getType();
@@ -204,6 +229,33 @@
         redisUtils.del("EMAIL_" + email);
      }
        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"));
      }
      if(type == 1) {
         redisUtils.del("SMS_" + phone);
      }else {
         redisUtils.del("EMAIL_" + email);
      }
        return Result.ok(MessageSourceUtils.getString("member_service_0040"));
    }
   
   /**
@@ -298,4 +350,265 @@
        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 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 {
         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_0051"));
    }
   @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 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"));
    }
   @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 phone = memberForgetPwdDto.getPhone();
      String email = memberForgetPwdDto.getEmail();
      int type = memberForgetPwdDto.getType();
      boolean verificationCode = verificationCode(type, phone, code, email);
      if(verificationCode) {
         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"));
    }
   @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();
      String isDefualt = memberPaymethodDto.getIsDefualt();
      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);
      memberPaymentMethodEntity.setIsDefualt(isDefualt);
      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
   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 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.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);
   }
   @Override
   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"));
            }
            if (!smsCode.equals(code)) {
                return Result.fail(MessageSourceUtils.getString("member_service_0013"));
            }
            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
   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);
      String verifyCode = (String)redisUtils.get("EMAIL_" + email);
      if (ObjectUtil.isNotEmpty(member)) {
         if (StringUtils.isBlank(verifyCode)) {
              return Result.fail(MessageSourceUtils.getString("member_service_0012"));
          }
          if (!code.equals(verifyCode)) {
              return Result.fail(MessageSourceUtils.getString("member_service_0039"));
          }
            member.setEmail(email);
            memberDao.updateById(member);
            redisUtils.del("EMAIL_" + member.getPhone());
            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());
            arrayList.add(memberCoinAddressVo);
         }
      }
      memberCoinAddressListVo.setMemberCoinAddressVo(arrayList);
      return Result.ok(memberCoinAddressListVo);
   }
   @Override
   public Result memberAddCoinAddress(@Valid MemberAddCoinAddressDto memberAddCoinAddressDto) {
      // TODO Auto-generated method stub
      return null;
   }
}