UserServiceImpl.java 4.28 KB
package org.nafmii.service.impl;



import lombok.extern.slf4j.Slf4j;
import org.nafmii.dto.user.LoginDto;
import org.nafmii.dto.user.RegisterDto;
import org.nafmii.entity.user.AppUser;
import org.nafmii.entity.user.AppUserExample;
import org.nafmii.enums.UserEnum;
import org.nafmii.exception.BusinessException;
import org.nafmii.mapper.user.AppUserMapper;
import org.nafmii.response.ApiResponse;
import org.nafmii.service.UserService;
import org.nafmii.utils.GuavaUtil;
import org.nafmii.utils.JwtUtils;
import org.nafmii.utils.SnowFlakeUtil;
import org.nafmii.vo.UserAndRoleVo;
import org.nafmii.vo.UserVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @author:zhoujh
 * @Function:TODO
 * @date 2021/4/25 10:20
 * @ClassName:app用户实现类
 * @version:
 * @remark:
 */
@Service
@Slf4j
public class UserServiceImpl implements UserService {

    @Resource
    private AppUserMapper appUserMapper;
    /**
     * 模拟用户登陆
     * @return
     */
    @Override
    public ApiResponse<UserVO> login() {
        ApiResponse result = new ApiResponse();
        //假设验证数据通过
        UserVO userVO = new UserVO();
        userVO.setLoginPwd("zzz");
        userVO.setUserName("zzz");
        List<UserAndRoleVo> roleList =new ArrayList<>();
        UserAndRoleVo roleVo = new UserAndRoleVo();
        UserAndRoleVo roleTwoVo = new UserAndRoleVo();
        roleVo.setRole("a");
        roleList.add(roleVo);
        roleTwoVo.setRole("b");
        roleList.add(roleTwoVo);
//        userVO.setAuthorities(roleList);
        StringBuilder sbf = new StringBuilder();
        for (UserAndRoleVo role:roleList
             ) {
            sbf=sbf.append(role.getRole()+",");
        }
        //处理字符串
        String sRole = sbf.toString();
        String substring = sRole.substring(0, sRole.lastIndexOf(","));
        String token = JwtUtils.createToken(userVO.getUserName(),substring);
//        userVO.setToken(token);
        result.setData(userVO);
        return result;
    }

    /**
     * app用户注册接口
     * @param registerDto
     * @return
     */
    @Override
    public ApiResponse register(RegisterDto registerDto) {
        //用户实体类
        AppUser appUser = new AppUser();
        appUser.setId(SnowFlakeUtil.nextId());
        appUser.setFaceidFalg(UserEnum.NOTFACE.getCode());
        appUser.setFigerprintFalg(UserEnum.NOTFINGERPRINT.getCode());
        appUser.setHeadPicture(registerDto.getHeadPicture());
        appUser.setIsEnable(UserEnum.ENABLE.getCode());
        appUser.setPhone(registerDto.getPhone());
        //判断注册密码和再次输入密码
        if (!registerDto.getLoginPwd().equals(registerDto.getConfirmPwd())){
            throw new BusinessException("两次密码输入不相同,请再次输入");
        }
        appUser.setLoginPwd(registerDto.getLoginPwd());
        appUser.setCreateTime(new Date());
        appUser.setUpdateTime(new Date());
        log.info("用户注册参数==============>"+registerDto);
        //将验证码放入到缓存当中(过期时间60s)test
//        GuavaUtil.putTrackGuava(registerDto.getPhone(),registerDto.getCode());
        //重缓存中获取(通过手机号获取)
        String code = (String) GuavaUtil.getTrackGuava(registerDto.getPhone());
        log.info("冲缓存中获取的验证码===============》{}",code);
        if (null == code){
            throw new BusinessException("验证码已过期");
        }
        if (!code.equals(registerDto.getCode())){
            throw new BusinessException("验证码错误请重新输入");
        }

        int i = appUserMapper.insertSelective(appUser);
        if (i<0){
            return new ApiResponse().fail("新增失败");
        }
        return new ApiResponse();
    }

    /**
     * 用户登陆接口
     * @param loginDto
     * @return
     */
    @Override
    public Result<UserVO> userLogin(LoginDto loginDto) {
        AppUserExample userExample = new AppUserExample();
        //首先判断登陆方式
        if (loginDto.getType().equals("0")){
            Result<UserVO> userVo = appUserMapper.selectByPassword(loginDto);
        }
        return null;
    }
}