package cc.mrbird.febs.user.service.Impl;
|
|
import cc.mrbird.febs.user.entity.ChatMember;
|
import cc.mrbird.febs.user.entity.ChatWallet;
|
import cc.mrbird.febs.user.mapper.ChatMemberMapper;
|
import cc.mrbird.febs.user.mapper.ChatWalletMapper;
|
import cc.mrbird.febs.user.service.AsyncService;
|
import cn.hutool.core.util.StrUtil;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import lombok.RequiredArgsConstructor;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.stereotype.Service;
|
|
import java.math.BigDecimal;
|
|
@Slf4j
|
@Service
|
@RequiredArgsConstructor
|
public class AsyncServiceImpl extends ServiceImpl<ChatMemberMapper, ChatMember> implements AsyncService {
|
|
private final ChatWalletMapper chatWalletMapper;
|
@Override
|
public void initWallet(Long memberId) {
|
ChatWallet wallet = new ChatWallet();
|
wallet.setBalance(BigDecimal.ZERO);
|
wallet.setMemberId(memberId);
|
chatWalletMapper.insert(wallet);
|
}
|
|
@Override
|
public void initMemberReferrerIds(Long memberId, String parentId) {
|
boolean flag = false;
|
if (StrUtil.isBlank(parentId)) {
|
flag = true;
|
}
|
String ids = "";
|
while (!flag) {
|
if (StrUtil.isBlank(ids)) {
|
ids += parentId;
|
} else {
|
ids += ("," + parentId);
|
}
|
ChatMember chatMemberParent = this.baseMapper.selectOne(new LambdaQueryWrapper<ChatMember>().eq(ChatMember::getInviteId, parentId));
|
if (chatMemberParent == null) {
|
break;
|
}
|
parentId = chatMemberParent.getReferrerId();
|
if (StrUtil.isBlank(chatMemberParent.getReferrerId())) {
|
flag = true;
|
}
|
}
|
|
ChatMember chatMember = this.baseMapper.selectById(memberId);
|
if (StrUtil.isNotBlank(ids)) {
|
chatMember.setReferrerIds(ids);
|
this.baseMapper.updateById(chatMember);
|
}
|
}
|
}
|