fix
Helius
2022-09-10 aa8ea668737a3761ba91167eab8e7a28f1e4afae
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
package cc.mrbird.febs.dapp.service.impl;
 
import cc.mrbird.febs.common.entity.QueryRequest;
import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.common.utils.FebsUtil;
import cc.mrbird.febs.common.utils.Md5Util;
import cc.mrbird.febs.common.utils.ShareCodeUtil;
import cc.mrbird.febs.dapp.entity.DappMemberEntity;
import cc.mrbird.febs.dapp.entity.DappUserMemberRelateEntity;
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.DappUserMemberRelateDao;
import cc.mrbird.febs.dapp.mapper.DappWalletCoinDao;
import cc.mrbird.febs.dapp.mapper.DappWalletMineDao;
import cc.mrbird.febs.dapp.service.DappMemberService;
import cc.mrbird.febs.dapp.service.DappUserService;
import cc.mrbird.febs.system.entity.User;
import cc.mrbird.febs.system.entity.UserRole;
import cc.mrbird.febs.system.mapper.UserMapper;
import cc.mrbird.febs.system.mapper.UserRoleMapper;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
 
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
 
/**
 * @author 
 * @date 2022-03-24
 **/
@Slf4j
@Service
@RequiredArgsConstructor
public class DappUserServiceImpl implements DappUserService {
 
    private final DappMemberDao dappMemberDao;
    private final DappUserMemberRelateDao dappUserMemberRelateDao;
    private final UserMapper userMapper;
    private final UserRoleMapper userRoleMapper;
    private final DappWalletMineDao dappWalletMineDao;
    private final DappWalletCoinDao dappWalletCoinDao;
 
    @Override
    public IPage<User> findInPage(User user, QueryRequest request) {
        Page<User> page = new Page<>(request.getPageNum(), request.getPageSize());
        return userMapper.selectDappUserInPage(user, page);
    }
 
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void add(User user) {
        User currentUser = FebsUtil.getCurrentUser();
        DappMemberEntity member;
        if (StrUtil.isNotBlank(user.getInviteId())) {
            member = dappMemberDao.selectMemberInfoByInviteId(user.getInviteId());
            if (member == null) {
                throw new FebsException("邀请码错误");
            }
 
            if (currentUser.getDeptId() == null) {
                DappUserMemberRelateEntity relate = dappUserMemberRelateDao.selectByUserId(currentUser.getUserId());
                if (!relate.getInviteId().equals(member.getRefererId())) {
                    throw new FebsException("该用户不是直推");
                }
            }
 
            DappUserMemberRelateEntity userMemberRelate = dappUserMemberRelateDao.selectByInviteId(user.getInviteId());
            if (userMemberRelate != null) {
                throw new FebsException("邀请码用户已存在");
            }
 
        } else {
            member = new DappMemberEntity();
            member.setSource(2);
            member.setApproveCnt(0);
            member.setBalance(BigDecimal.ZERO);
            member.setAddress(user.getUsername());
            dappMemberDao.insert(member);
 
            member.setInviteId(ShareCodeUtil.toSerialCode(member.getId()));
            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);
        }
 
        user.setCreateTime(new Date());
        user.setStatus(User.STATUS_VALID);
        user.setAvatar(User.DEFAULT_AVATAR);
        user.setTheme(User.THEME_BLACK);
        user.setIsTab(User.TAB_OPEN);
        user.setPassword(Md5Util.encrypt(user.getUsername(), User.DEFAULT_PASSWORD));
        userMapper.insert(user);
 
        UserRole userRole = new UserRole();
        userRole.setRoleId(81L);
        userRole.setUserId(user.getUserId());
        userRoleMapper.insert(userRole);
 
        DappUserMemberRelateEntity relate = new DappUserMemberRelateEntity();
        relate.setMemberId(member.getId());
        relate.setUserId(user.getUserId());
        relate.setInviteId(member.getInviteId());
        relate.setCreateUser(currentUser.getUserId());
        dappUserMemberRelateDao.insert(relate);
    }
 
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void delete(String ids) {
        List<String> idsList = StrUtil.split(ids, ',');
        userMapper.deleteBatchIds(idsList);
        dappUserMemberRelateDao.deleteByUserIds(idsList);
    }
}