gao
2020-06-16 de971add14a7479aa9b18eadf8d6fad5be381d38
src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
@@ -1,18 +1,27 @@
package com.xcong.excoin.modules.member.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xcong.excoin.common.entity.FebsResponse;
import com.xcong.excoin.common.entity.QueryRequest;
import com.xcong.excoin.modules.member.entity.MemberAccountMoneyChangeEntity;
import com.xcong.excoin.modules.member.entity.MemberEntity;
import com.xcong.excoin.modules.member.entity.MemberQuickBuySaleEntity;
import com.xcong.excoin.modules.member.entity.MemberWalletCoinEntity;
import com.xcong.excoin.modules.member.mapper.MemberAccountMoneyChangeMapper;
import com.xcong.excoin.modules.member.mapper.MemberMapper;
import com.xcong.excoin.modules.member.mapper.MemberQuickBuySaleMapper;
import com.xcong.excoin.modules.member.mapper.MemberWalletCoinMapper;
import com.xcong.excoin.modules.member.service.IMemberService;
import com.xcong.excoin.modules.member.vo.MemberQuickBuySaleVo;
import lombok.RequiredArgsConstructor;
import java.math.BigDecimal;
import javax.validation.constraints.NotNull;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
 * @author wzy
@@ -23,6 +32,11 @@
public class MemberServiceImpl extends ServiceImpl<MemberMapper, MemberEntity> implements IMemberService {
   
   private final MemberQuickBuySaleMapper memberQuickBuySaleMapper;
   private final MemberWalletCoinMapper memberWalletCoinMapper;
   private final MemberAccountMoneyChangeMapper memberAccountMoneyChangeMapper;
    @Override
    public IPage<MemberEntity> findMemberListInPage(MemberEntity memberEntity, QueryRequest request) {
@@ -31,9 +45,80 @@
    }
   @Override
   public IPage<MemberQuickBuySaleEntity> findmemberQuickBuySaleListInPage(
   public IPage<MemberQuickBuySaleVo> findmemberQuickBuySaleListInPage(
         MemberQuickBuySaleEntity memberQuickBuySaleEntity, QueryRequest request) {
      Page<MemberQuickBuySaleEntity> page = new Page<>(request.getPageNum(), request.getPageSize());
        return memberQuickBuySaleMapper.findmemberQuickBuySaleListInPage(page, memberQuickBuySaleEntity);
      IPage<MemberQuickBuySaleVo> findmemberQuickBuySaleListInPage = memberQuickBuySaleMapper.findmemberQuickBuySaleListInPage(page, memberQuickBuySaleEntity);
        return findmemberQuickBuySaleListInPage;
    }
   @Override
   @Transactional(rollbackFor = Exception.class)
   public FebsResponse memberChargeUsdtConfirm(Long id) {
      MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleMapper.selectById(id);
      if(!MemberQuickBuySaleEntity.CHARGE_STATUS_PAID.equals(memberQuickBuySaleEntity.getOrderStatus())) {
         return new FebsResponse().message("只允许已付款状态操作");
      }
      Long memberId = memberQuickBuySaleEntity.getMemberId();
      BigDecimal amountUsdt = memberQuickBuySaleEntity.getAmountUsdt();
      String walletCode = "USDT";
      MemberEntity selectById = this.baseMapper.selectById(memberId);
      if(ObjectUtils.isEmpty(selectById)) {
         return new FebsResponse().message("用户已不存在");
      }
      //获取币币钱包
      MemberWalletCoinEntity memberWalletCoinEntity = memberWalletCoinMapper.findWalletCoinByMemberIdAndWalletCode(memberId,walletCode);
      BigDecimal availableBalance = memberWalletCoinEntity.getAvailableBalance();
      BigDecimal totalBalance = memberWalletCoinEntity.getTotalBalance();
      memberWalletCoinEntity.setAvailableBalance(availableBalance.add(amountUsdt));
      memberWalletCoinEntity.setTotalBalance(totalBalance.add(amountUsdt));
      // 更新
      memberWalletCoinMapper.updateById(memberWalletCoinEntity);
      // 更新状态
      memberQuickBuySaleEntity.setOrderStatus(MemberQuickBuySaleEntity.CHARGE_STATUS_CHECKED);
      memberQuickBuySaleMapper.updateById(memberQuickBuySaleEntity);
       //添加币币资金划转历史记录
      MemberAccountMoneyChangeEntity memberAccountMoneyChangeEntity = new MemberAccountMoneyChangeEntity();
        memberAccountMoneyChangeEntity.setContent("OTC转入");
        memberAccountMoneyChangeEntity.setMemberId(memberId);
        memberAccountMoneyChangeEntity.setAmount(amountUsdt);
        memberAccountMoneyChangeEntity.setStatus(MemberAccountMoneyChangeEntity.STATUS_SUCCESS_INTEGER);
        memberAccountMoneyChangeEntity.setSymbol("USDT");
        memberAccountMoneyChangeEntity.setType(MemberAccountMoneyChangeEntity.TYPE_WALLET_COIN);
        memberAccountMoneyChangeMapper.insert(memberAccountMoneyChangeEntity);
        /**
         * todo
      SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
      String chargeTime = format.format(memberQuickBuySaleEntity.getChargeTime()); // 将当前时间袼式化为指定的格式
      String usdt = memberQuickBuySaleEntity.getAmountUsdt()+"USDT";
      //发送短信提醒
      String smsContent = "【Excoin】尊敬的用户您好!您于"+chargeTime+"充值"+usdt+"已成功到账,请您及时查收!订单号为:"+memberChargeUsdt.getOrderCode()+"。";
      SmsUtils.hxSmsSend(member.getPhone(), smsContent);
         */
      return new FebsResponse().message("拨币成功");
   }
   @Override
   @Transactional(rollbackFor = Exception.class)
   public FebsResponse memberChargeUsdtCancel(@NotNull(message = "{required}") Long id) {
      MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleMapper.selectById(id);
      if(MemberQuickBuySaleEntity.CHARGE_STATUS_CHECKED.equals(memberQuickBuySaleEntity.getOrderStatus())
            || MemberQuickBuySaleEntity.CHARGE_STATUS_CANCEL_USER.equals(memberQuickBuySaleEntity.getOrderStatus())
            || MemberQuickBuySaleEntity.CHARGE_STATUS_CANCEL_SYSTEM.equals(memberQuickBuySaleEntity.getOrderStatus())) {
         return new FebsResponse().message("不允许系统撤单操作");
      }
      memberQuickBuySaleEntity.setOrderStatus(MemberQuickBuySaleEntity.CHARGE_STATUS_CANCEL_SYSTEM);
      memberQuickBuySaleMapper.updateById(memberQuickBuySaleEntity);
      return new FebsResponse().success();
   }
}