Helius
2022-08-27 c54f0c60faae496e0fd989b281b776b69b65a87a
src/main/java/cc/mrbird/febs/dapp/service/impl/DappUserServiceImpl.java
@@ -1,25 +1,38 @@
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 wzy
 * @author
 * @date 2022-03-24
 **/
@Slf4j
@@ -31,12 +44,62 @@
    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) {
        DappMemberEntity member = dappMemberDao.selectMemberInfoByInviteId(user.getInviteId());
        if(member == null) {
            throw new FebsException("邀请码错误");
        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());
@@ -48,14 +111,23 @@
        userMapper.insert(user);
        UserRole userRole = new UserRole();
        userRole.setRoleId(Long.parseLong(user.getRoleId()));
        userRole.setRoleId(81L);
        userRole.setUserId(user.getUserId());
        userRoleMapper.insert(userRole);
        DappUserMemberRelateEntity relate = new DappUserMemberRelateEntity();
        relate.setMemberId(member.getId());
        relate.setUserId(user.getUserId());
        relate.setInviteId(user.getInviteId());
        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);
    }
}