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);
|
}
|
}
|