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 findInPage(User user, QueryRequest request) { Page 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 idsList = StrUtil.split(ids, ','); userMapper.deleteBatchIds(idsList); dappUserMemberRelateDao.deleteByUserIds(idsList); } }