From 42e8cb4d1c9655e161df8088473d0b943d879e37 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Tue, 14 Dec 2021 11:54:58 +0800 Subject: [PATCH] 20211214 --- src/main/java/cc/mrbird/febs/video/service/impl/ApiVideoMemberServiceImpl.java | 151 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 151 insertions(+), 0 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/video/service/impl/ApiVideoMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/video/service/impl/ApiVideoMemberServiceImpl.java new file mode 100644 index 0000000..57c6e7e --- /dev/null +++ b/src/main/java/cc/mrbird/febs/video/service/impl/ApiVideoMemberServiceImpl.java @@ -0,0 +1,151 @@ +package cc.mrbird.febs.video.service.impl; + +import cc.mrbird.febs.common.entity.FebsResponse; +import cc.mrbird.febs.common.exception.FebsException; +import cc.mrbird.febs.common.utils.AppContants; +import cc.mrbird.febs.common.utils.RedisUtils; +import cc.mrbird.febs.common.utils.ShareCodeUtil; +import cc.mrbird.febs.video.dto.LoginDto; +import cc.mrbird.febs.video.dto.RegisterDto; +import cc.mrbird.febs.video.entity.VideoMemberEntity; +import cc.mrbird.febs.video.mapper.VideoMemberMapper; +import cc.mrbird.febs.video.service.IApiVideoMemberService; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.crypto.SecureUtil; +import cn.hutool.crypto.asymmetric.KeyType; +import cn.hutool.crypto.asymmetric.RSA; +import com.alibaba.fastjson.JSONObject; +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; +import java.util.HashMap; +import java.util.Map; + +@Slf4j +@Service +@RequiredArgsConstructor +public class ApiVideoMemberServiceImpl extends ServiceImpl<VideoMemberMapper, VideoMemberEntity> implements IApiVideoMemberService { + + private final RedisUtils redisUtils; + + @Override + public FebsResponse register(RegisterDto registerDto) { + VideoMemberEntity videoMember = this.baseMapper.selectInfoByAccount(registerDto.getAccount()); + if (videoMember != null) { + throw new FebsException("该账号已被占用"); + } + +// String account = registerDto.getAccount(); +// String code = registerDto.getCode(); +// boolean flags = commonService.verifyCode(account, code); +// if(!flags) { +// throw new FebsException("验证码错误"); +// } + + videoMember = new VideoMemberEntity(); + videoMember.setPassword(SecureUtil.md5(registerDto.getPassword())); + + // 判断账号类型 + if (AppContants.ACCOUNT_TYPE_MOBILE.equals(registerDto.getType())) { + videoMember.setPhone(registerDto.getAccount()); + } else { + videoMember.setEmail(registerDto.getAccount()); + } + +// Integer count = this.baseMapper.selectCount(null); +// if (count != null && count != 0) { +// MallMember inviteMember = this.baseMapper.selectInfoByInviteId(registerDto.getInviteId()); +// if (inviteMember == null) { +// throw new FebsException("邀请码不存在"); +// } +// +// mallMember.setReferrerId(registerDto.getInviteId()); +// +// } + videoMember.setName(registerDto.getAccount()); + videoMember.setAccountStatus(VideoMemberEntity.ACCOUNT_STATUS_ENABLE); + videoMember.setAccountType(VideoMemberEntity.ACCOUNT_TYPE_NORMAL); + videoMember.setIsVip(VideoMemberEntity.ISVIP_STATUS_NO); + + this.baseMapper.insert(videoMember); + + String inviteId = ShareCodeUtil.toSerialCode(videoMember.getId()); + videoMember.setInviteId(inviteId); + + //推荐人和推荐人链 + boolean flag = false; + String parentId = videoMember.getRefererId(); + if (StrUtil.isBlank(parentId)) { + flag = true; + } + String ids = ""; + while (!flag) { + if (StrUtil.isBlank(ids)) { + ids += parentId; + } else { + ids += ("," + parentId); + } + VideoMemberEntity parentMember = this.baseMapper.selectInfoByInviteId(parentId); + if (parentMember == null) { + break; + } + parentId = parentMember.getRefererId(); + if (StrUtil.isBlank(parentMember.getRefererId())) { + flag = true; + } + } + + if (StrUtil.isNotBlank(ids)) { + videoMember.setRefererIds(ids); + } + this.baseMapper.updateById(videoMember); + +// MallMemberWallet wallet = new MallMemberWallet(); +// wallet.setBalance(BigDecimal.ZERO); +// wallet.setMemberId(mallMember.getId()); +// mallMemberWalletMapper.insert(wallet); + return new FebsResponse().success().message("注册成功"); + } + + @Override + public FebsResponse toLogin(LoginDto loginDto) { + String md5Pwd = SecureUtil.md5(loginDto.getPassword()); + + VideoMemberEntity videoMember = this.baseMapper.selectInfoByAccountAndPwd(loginDto.getAccount(), md5Pwd); + if (videoMember == null) { + throw new FebsException("用户不存在或账号密码错误"); + } + + if (videoMember.ACCOUNT_STATUS_DISABLED.equals(videoMember.getAccountStatus())) { + throw new FebsException("该账号存在异常, 暂限制登录"); + } + + String redisKey = AppContants.APP_LOGIN_PREFIX + videoMember.getId(); + String existToken = redisUtils.getString(redisKey); + if (StrUtil.isNotBlank(existToken)) { + Object o = redisUtils.get(existToken); + if (ObjectUtil.isNotEmpty(o)) { + redisUtils.del(existToken); + } + } + + String token = IdUtil.simpleUUID(); + redisUtils.set(token, JSONObject.toJSONString(videoMember), 360000); + redisUtils.set(redisKey, token, 360000); + Map<String, Object> authInfo = new HashMap<>(); + authInfo.put("token", token); + authInfo.put("rasToken", generateAsaToken(token)); + return new FebsResponse().success().data(authInfo); + } + + + public String generateAsaToken(String token) { + RSA rsa = new RSA(null, AppContants.PUBLIC_KEY); + return rsa.encryptBase64(token + "_" + System.currentTimeMillis(), KeyType.PublicKey); + } +} -- Gitblit v1.9.1