123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- package com.caimei.service.impl;
- import com.caimei.components.RedisService;
- import com.caimei.mapper.UserMapper;
- import com.caimei.model.ResponseJson;
- import com.caimei.model.dto.PasswordDto;
- import com.caimei.model.vo.UserLoginVo;
- import com.caimei.service.UserService;
- import com.caimei.utils.JwtUtil;
- import com.caimei.utils.Md5Util;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.stereotype.Service;
- import javax.annotation.Resource;
- /**
- * Description
- *
- * @author : Aslee
- * @date : 2021/5/11
- */
- @Slf4j
- @Service
- public class UserServiceImpl implements UserService {
- @Resource
- private RedisService redisService;
- @Resource
- private UserMapper userMapper;
- /**
- * 登录(用户名/手机号,密码)
- * @param mobileOrName 手机号或用户名
- * @param password 密码
- * @return UserLoginVo
- */
- @Override
- public ResponseJson<UserLoginVo> passwordLogin(String mobileOrName, String password) {
- if (StringUtils.isEmpty(mobileOrName)) {
- return ResponseJson.error("请填写账户名", null);
- }
- if (StringUtils.isEmpty(password)) {
- return ResponseJson.error("请填写密码", null);
- }
- // 根据账户名和手机号获取管理员账号和供应商账号
- UserLoginVo adminUser = userMapper.getAdminUserByName(mobileOrName);
- UserLoginVo shopUser = userMapper.getShopUserByMobile(mobileOrName);
- // 密码校验
- Boolean passwordVerify;
- if (adminUser != null) {
- // 管理员登录
- // 比对密码
- passwordVerify = passwordVerify(password, adminUser.getPassword());
- if (passwordVerify) {
- return logonVerify(adminUser);
- } else if (shopUser != null) {
- // 管理员登录失败,尝试供应商登录
- passwordVerify = passwordVerify(password, shopUser.getPassword());
- if (passwordVerify) {
- return logonVerify(shopUser);
- }
- }
- } else if (shopUser != null) {
- // 供应商登录
- passwordVerify = passwordVerify(password, shopUser.getPassword());
- if (passwordVerify) {
- return logonVerify(shopUser);
- }
- }
- return ResponseJson.error("输入的密码和账户名不匹配", null);
- }
- @Override
- public ResponseJson updatePassword(PasswordDto passwordDto) {
- Integer authUserId = passwordDto.getAuthUserId();
- String oldPassword = passwordDto.getOldPassword();
- String newPassword = passwordDto.getNewPassword();
- String confirmPwd = passwordDto.getConfirmPwd();
- // 参数校验
- if (authUserId == null) {
- return ResponseJson.error("用户id不能为空");
- }
- if (StringUtils.isEmpty(oldPassword)) {
- return ResponseJson.error("请输入旧密码");
- }
- if (StringUtils.isEmpty(newPassword)) {
- return ResponseJson.error("请输入新密码");
- }
- if (StringUtils.isEmpty(confirmPwd)) {
- return ResponseJson.error("请确认密码");
- }
- if (!newPassword.equals(confirmPwd)) {
- return ResponseJson.error("新密码与确认密码不一致");
- }
- // 验证输入的旧密码与数据库中的密码是否相同
- String dbPassword = userMapper.getPasswordByUserId(authUserId);
- Boolean passwordVerify = passwordVerify(oldPassword, dbPassword);
- if (!passwordVerify) {
- return ResponseJson.error("旧密码输入不正确");
- }
- // 更新密码
- newPassword = Md5Util.md5(newPassword);
- userMapper.updatePasswordByUserId(authUserId, newPassword);
- return ResponseJson.success("密码修改成功");
- }
- /**
- * 登录校验
- *
- * @param loginUser 用户信息
- * @return UserLoginVo
- */
- private ResponseJson<UserLoginVo> logonVerify(UserLoginVo loginUser) {
- // 生成token给用户
- String token = JwtUtil.createToken(loginUser.getAuthUserId());
- // 为了过期续签,将token存入redis,并设置超时时间
- redisService.set(token, token, JwtUtil.getExpireTime());
- loginUser.setToken(token);
- // 供应商
- if (null != loginUser.getShopStatus() && null != loginUser.getUserIdentity() && 2 == loginUser.getUserIdentity()) {
- if (0 == loginUser.getShopStatus()) {
- return ResponseJson.error(-2, "您的企业账号已被冻结,请联系客服处理", null);
- }
- }
- // 清除密码
- loginUser.setPassword(null);
- return ResponseJson.success("登录成功", loginUser);
- }
- /**
- * 密码校验
- */
- private Boolean passwordVerify(String password, String dbPassword) {
- String md5Password = Md5Util.md5(password);
- return md5Password.equals(dbPassword);
- }
- }
|