完整管理员登陆接口的开发
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
package cn.iocoder.mall.systemservice.convert.admin;
|
||||
|
||||
import cn.iocoder.common.framework.vo.PageResult;
|
||||
import cn.iocoder.mall.systemservice.dal.mysql.dataobject.admin.AdminDO;
|
||||
import cn.iocoder.mall.systemservice.rpc.admin.vo.AdminVO;
|
||||
import cn.iocoder.mall.systemservice.service.admin.bo.AdminBO;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.Mapping;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
@Mapper
|
||||
public interface AdminConvert {
|
||||
|
||||
AdminConvert INSTANCE = Mappers.getMapper(AdminConvert.class);
|
||||
|
||||
AdminBO convert(AdminDO bean);
|
||||
|
||||
@Mapping(source = "records", target = "list")
|
||||
PageResult<AdminBO> convertPage(IPage<AdminDO> bean);
|
||||
|
||||
AdminVO convert(AdminBO adminBO);
|
||||
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
package cn.iocoder.mall.systemservice.convert;
|
||||
@@ -0,0 +1,23 @@
|
||||
package cn.iocoder.mall.systemservice.manager.admin;
|
||||
|
||||
import cn.iocoder.mall.systemservice.convert.admin.AdminConvert;
|
||||
import cn.iocoder.mall.systemservice.rpc.admin.dto.AdminVerifyPasswordDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.admin.vo.AdminVO;
|
||||
import cn.iocoder.mall.systemservice.service.admin.AdminService;
|
||||
import cn.iocoder.mall.systemservice.service.admin.bo.AdminBO;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class AdminManager {
|
||||
|
||||
@Autowired
|
||||
private AdminService adminService;
|
||||
|
||||
public AdminVO verifyPassword(AdminVerifyPasswordDTO verifyPasswordDTO) {
|
||||
AdminBO adminBO = adminService.verifyPassword(verifyPasswordDTO.getUsername(),
|
||||
verifyPasswordDTO.getPassword(), verifyPasswordDTO.getIp());
|
||||
return AdminConvert.INSTANCE.convert(adminBO);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
package cn.iocoder.mall.systemservice.manager;
|
||||
@@ -0,0 +1,23 @@
|
||||
package cn.iocoder.mall.systemservice.rpc.admin;
|
||||
|
||||
import cn.iocoder.common.framework.vo.CommonResult;
|
||||
import cn.iocoder.mall.systemservice.manager.admin.AdminManager;
|
||||
import cn.iocoder.mall.systemservice.rpc.admin.dto.AdminVerifyPasswordDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.admin.vo.AdminVO;
|
||||
import org.apache.dubbo.config.annotation.Service;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import static cn.iocoder.common.framework.vo.CommonResult.success;
|
||||
|
||||
@Service(version = "${dubbo.provider.AdminRpc.version}", validation = "false")
|
||||
public class AdminRpcImpl implements AdminRpc {
|
||||
|
||||
@Autowired
|
||||
private AdminManager adminManager;
|
||||
|
||||
@Override
|
||||
public CommonResult<AdminVO> verifyPassword(AdminVerifyPasswordDTO verifyPasswordDTO) {
|
||||
return success(adminManager.verifyPassword(verifyPasswordDTO));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
package cn.iocoder.mall.systemservice.rpc;
|
||||
@@ -0,0 +1,39 @@
|
||||
package cn.iocoder.mall.systemservice.service.admin;
|
||||
|
||||
import cn.iocoder.common.framework.util.DigestUtils;
|
||||
import cn.iocoder.common.framework.util.ServiceExceptionUtil;
|
||||
import cn.iocoder.mall.systemservice.convert.admin.AdminConvert;
|
||||
import cn.iocoder.mall.systemservice.dal.mysql.dataobject.admin.AdminDO;
|
||||
import cn.iocoder.mall.systemservice.dal.mysql.mapper.admin.AdminMapper;
|
||||
import cn.iocoder.mall.systemservice.enums.SystemErrorCodeEnum;
|
||||
import cn.iocoder.mall.systemservice.enums.admin.AdminStatusEnum;
|
||||
import cn.iocoder.mall.systemservice.service.admin.bo.AdminBO;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class AdminService {
|
||||
|
||||
@Autowired
|
||||
private AdminMapper adminMapper;
|
||||
|
||||
public AdminBO verifyPassword(String username, String password, String ip) {
|
||||
AdminDO adminDO = adminMapper.selectByUsername(username);
|
||||
if (adminDO == null) {
|
||||
throw ServiceExceptionUtil.exception(SystemErrorCodeEnum.ADMIN_NOT_FOUND);
|
||||
}
|
||||
// 校验密码是否正确
|
||||
String encodedPassword = DigestUtils.bcrypt(password, adminDO.getPasswordSalt());
|
||||
if (encodedPassword.equals(adminDO.getPassword())) {
|
||||
// TODO 需要补充密码错误上限
|
||||
throw ServiceExceptionUtil.exception(SystemErrorCodeEnum.ADMIN_PASSWORD_ERROR);
|
||||
}
|
||||
// 账号被禁用
|
||||
if (!AdminStatusEnum.ACTIVE.getStatus().equals(adminDO.getStatus())) {
|
||||
throw ServiceExceptionUtil.exception(SystemErrorCodeEnum.ADMIN_IS_DISABLE);
|
||||
}
|
||||
// 返回
|
||||
return AdminConvert.INSTANCE.convert(adminDO);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
package cn.iocoder.mall.systemservice.service.admin.bo;
|
||||
|
||||
import cn.iocoder.mall.systemservice.dal.mysql.dataobject.admin.DepartmentDO;
|
||||
import cn.iocoder.mall.systemservice.enums.admin.AdminStatusEnum;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 管理员信息 BO
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class AdminBO {
|
||||
|
||||
/**
|
||||
* 管理员编号
|
||||
*/
|
||||
private Integer id;
|
||||
/**
|
||||
* 真实名字
|
||||
*/
|
||||
private String name;
|
||||
/**
|
||||
* 部门编号
|
||||
*
|
||||
* 关联 {@link DepartmentDO#getId()}
|
||||
*/
|
||||
private Integer departmentId;
|
||||
/**
|
||||
* 在职状态
|
||||
*
|
||||
* 枚举 {@link AdminStatusEnum}
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 登陆账号
|
||||
*/
|
||||
private String username;
|
||||
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
package cn.iocoder.mall.systemservice.service;
|
||||
Reference in New Issue
Block a user