package cc.mrbird.febs.user.service.Impl;
|
|
import cc.mrbird.febs.common.entity.FebsResponse;
|
import cc.mrbird.febs.common.enumerates.YesOrNoEnum;
|
import cc.mrbird.febs.common.exception.FebsException;
|
import cc.mrbird.febs.common.utils.AppContants;
|
import cc.mrbird.febs.common.utils.ShareCodeUtil;
|
import cc.mrbird.febs.mall.entity.MallMember;
|
import cc.mrbird.febs.mall.entity.MallMemberWallet;
|
import cc.mrbird.febs.mall.entity.RunVip;
|
import cc.mrbird.febs.user.entity.ChatMember;
|
import cc.mrbird.febs.user.mapper.ChatMemberMapper;
|
import cc.mrbird.febs.user.req.ApiRegisterDto;
|
import cc.mrbird.febs.user.service.IChatMemberService;
|
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.crypto.SecureUtil;
|
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 org.springframework.transaction.annotation.Transactional;
|
|
import java.math.BigDecimal;
|
import java.util.List;
|
|
@Slf4j
|
@Service
|
@RequiredArgsConstructor
|
@Transactional
|
public class ChatMemberServiceImpl extends ServiceImpl<ChatMemberMapper, ChatMember> implements IChatMemberService {
|
|
@Override
|
public FebsResponse register(ApiRegisterDto apiRegisterDto) {
|
String account = apiRegisterDto.getAccount();
|
|
MallMember mallMember = this.baseMapper.selectInfoByAccount(account);
|
if (mallMember != null) {
|
throw new FebsException("手机号已注册");
|
}
|
/**
|
* 验证两次密码是否一致
|
*/
|
String password = registerDto.getPassword();
|
String passwordAgain = registerDto.getPasswordAgain();
|
if(!password.equals(passwordAgain)){
|
throw new FebsException("密码不一致");
|
}
|
|
//邀请码为admin的时候(后台添加用户),不需要验证验证码
|
if (!"admin".equals(registerDto.getRegistType())) {
|
String code = registerDto.getCode();
|
boolean flags = commonService.verifyCode(account, code);
|
if (!flags) {
|
throw new FebsException("验证码错误");
|
}
|
}
|
|
mallMember = new MallMember();
|
mallMember.setPassword(SecureUtil.md5(registerDto.getPassword()));
|
|
// 判断账号类型
|
if (AppContants.ACCOUNT_TYPE_MOBILE.equals(registerDto.getType())) {
|
mallMember.setPhone(registerDto.getAccount());
|
} else {
|
mallMember.setEmail(registerDto.getAccount());
|
}
|
//对于邀请码的验证和上级联系人的验证
|
Integer count = this.baseMapper.selectCount(null);
|
if (count != null && count != 0) {
|
if(StrUtil.isEmpty(registerDto.getInviteId())){
|
throw new FebsException("请输入邀请码");
|
}
|
String inviteId = registerDto.getInviteId();
|
MallMember inviteMember = this.baseMapper.selectInfoByInviteId(inviteId);
|
if (inviteMember == null) {
|
throw new FebsException("邀请码不存在");
|
}
|
mallMember.setReferrerId(registerDto.getInviteId());
|
// if(!StrUtil.isEmpty(registerDto.getInviteId())){
|
// String inviteId = registerDto.getInviteId();
|
// MallMember inviteMember = this.baseMapper.selectInfoByInviteId(inviteId);
|
// if (inviteMember == null) {
|
// throw new FebsException("邀请码不存在");
|
// }
|
// mallMember.setReferrerId(registerDto.getInviteId());
|
// }
|
}
|
mallMember.setName(account);
|
mallMember.setAvatar("https://res.runstep.cc/rslogo.png");
|
mallMember.setAccountStatus(YesOrNoEnum.YES.getValue());
|
mallMember.setAccountType(MallMember.ACCOUNT_TYPE_NORMAL);
|
mallMember.setSex("男");
|
mallMember.setDirector(YesOrNoEnum.NO.getValue());
|
mallMember.setDirectorTime(DateUtil.date());
|
mallMember.setBindPhone(account);
|
|
this.baseMapper.insert(mallMember);
|
|
String inviteId = ShareCodeUtil.toSerialCode(mallMember.getId());
|
mallMember.setInviteId(inviteId);
|
|
//推荐人和推荐人链
|
boolean flag = false;
|
String parentId = mallMember.getReferrerId();
|
if (StrUtil.isBlank(parentId)) {
|
flag = true;
|
}
|
String ids = "";
|
while (!flag) {
|
if (StrUtil.isBlank(ids)) {
|
ids += parentId;
|
} else {
|
ids += ("," + parentId);
|
}
|
MallMember parentMember = this.baseMapper.selectInfoByInviteId(parentId);
|
if (parentMember == null) {
|
break;
|
}
|
parentId = parentMember.getReferrerId();
|
if (StrUtil.isBlank(parentMember.getReferrerId())) {
|
flag = true;
|
}
|
}
|
|
if (StrUtil.isNotBlank(ids)) {
|
mallMember.setReferrerIds(ids);
|
}
|
//会员VIP等级
|
List<RunVip> runVips = runVipMapper.selectList(new LambdaQueryWrapper<RunVip>().orderByAsc(RunVip::getOrderNumber));
|
if (StrUtil.isBlank(mallMember.getLevel()) && CollUtil.isNotEmpty(runVips)) {
|
RunVip runVip = runVips.get(0);
|
mallMember.setLevel(runVip.getVipCode());
|
}
|
this.baseMapper.updateById(mallMember);
|
|
MallMemberWallet wallet = new MallMemberWallet();
|
wallet.setBalance(BigDecimal.ZERO);
|
wallet.setMemberId(mallMember.getId());
|
mallMemberWalletMapper.insert(wallet);
|
|
agentProducer.sendNodeUpMsg(mallMember.getId());
|
return new FebsResponse().success().message("注册成功");
|
}
|
}
|