fix
Helius
2022-03-21 aee924088e000a462f581ba850d32834351c12dd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
package cc.mrbird.febs.dapp.service.impl;
 
import cc.mrbird.febs.common.entity.QueryRequest;
import cc.mrbird.febs.common.utils.ShareCodeUtil;
import cc.mrbird.febs.dapp.dto.ApproveDto;
import cc.mrbird.febs.dapp.entity.DappMemberEntity;
import cc.mrbird.febs.dapp.entity.DappWalletCoinEntity;
import cc.mrbird.febs.dapp.entity.DappWalletMineEntity;
import cc.mrbird.febs.dapp.mapper.DappMemberDao;
import cc.mrbird.febs.dapp.mapper.DappWalletCoinDao;
import cc.mrbird.febs.dapp.mapper.DappWalletMineDao;
import cc.mrbird.febs.dapp.service.DappMemberService;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
 
import java.math.BigDecimal;
 
/**
 * @author wzy
 * @date 2022-03-17
 **/
@Service
@RequiredArgsConstructor
public class DappMemberServiceImpl extends ServiceImpl<DappMemberDao, DappMemberEntity> implements DappMemberService {
 
    private final DappMemberDao dappMemberDao;
    private final DappWalletCoinDao dappWalletCoinDao;
    private final DappWalletMineDao dappWalletMineDao;
 
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void approve(ApproveDto approveDto) {
        DappMemberEntity member = new DappMemberEntity();
        member.setAddress(approveDto.getAddress());
 
        // TODO 判断地址是否被授权,并获取地址余额
        member.setBalance(BigDecimal.ZERO);
        dappMemberDao.insert(member);
 
        member.setInviteId(ShareCodeUtil.toSerialCode(member.getId()));
 
        if (StrUtil.isNotBlank(approveDto.getRefererId())){
            boolean flag = false;
            String parentId = approveDto.getRefererId();
            String ids = "";
            while (!flag && StringUtils.isNotBlank(parentId)) {
                ids += ("," + parentId);
                DappMemberEntity parentMember = dappMemberDao.selectMemberInfoByInviteId(parentId);
                if (parentMember == null) {
                    break;
                }
                parentId = parentMember.getRefererId();
                if(StringUtils.isBlank(parentId)){
                    break;
                }
                if (parentMember.getRefererId().equals(parentMember.getInviteId())) {
                    flag = true;
                }
            }
            member.setRefererIds(ids);
        }
        dappMemberDao.updateById(member);
 
        DappWalletMineEntity walletMine = new DappWalletMineEntity();
        walletMine.setMemberId(member.getId());
        walletMine.setTotalAmount(BigDecimal.ZERO);
        walletMine.setAvailableAmount(BigDecimal.ZERO);
        walletMine.setFrozenAmount(BigDecimal.ZERO);
        dappWalletMineDao.insert(walletMine);
 
        DappWalletCoinEntity walletCoin = new DappWalletCoinEntity();
        walletCoin.setMemberId(member.getId());
        walletCoin.setTotalAmount(BigDecimal.ZERO);
        walletCoin.setAvailableAmount(BigDecimal.ZERO);
        walletCoin.setFrozenAmount(BigDecimal.ZERO);
        dappWalletCoinDao.insert(walletCoin);
    }
 
    @Override
    public boolean isApprove(String address) {
        DappMemberEntity memberEntity = dappMemberDao.selectByAddress(address);
        if (memberEntity != null) {
            return true;
        }
        return false;
    }
 
    @Override
    public IPage<DappMemberEntity> selectInPage(DappMemberEntity member, QueryRequest request) {
        Page<DappMemberEntity> page = new Page<>(request.getPageNum(), request.getPageSize());
        return dappMemberDao.selectInPage(member, page);
    }
}