后台登陆功能完善
This commit is contained in:
parent
b101fc742d
commit
0078c8cbd6
1
pom.xml
1
pom.xml
|
@ -91,6 +91,7 @@
|
||||||
<artifactId>commons-pool2</artifactId>
|
<artifactId>commons-pool2</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<build>
|
<build>
|
||||||
<plugins>
|
<plugins>
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
package com.yzdx.AiInterviewer.comment;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class R<T>{
|
||||||
|
private Integer code;
|
||||||
|
private String message;
|
||||||
|
private Object data;
|
||||||
|
|
||||||
|
|
||||||
|
public static<T> R<T> success(T object){
|
||||||
|
R r= new R<>();
|
||||||
|
r.code=0;
|
||||||
|
r.data=object;
|
||||||
|
r.message="成功";
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
public static<T> R<T> error(String message){
|
||||||
|
R r=new R<>();
|
||||||
|
|
||||||
|
r.code=1;
|
||||||
|
r.message=message;
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
public static<T> R<T> error(Integer code,String message){
|
||||||
|
R r=new R<>();
|
||||||
|
|
||||||
|
r.code=code;
|
||||||
|
r.message=message;
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
public R() {
|
||||||
|
}
|
||||||
|
}
|
|
@ -19,7 +19,7 @@ public class WebMvcConfig implements WebMvcConfigurer {
|
||||||
// 需要拦截的请求
|
// 需要拦截的请求
|
||||||
.addPathPatterns("/**")
|
.addPathPatterns("/**")
|
||||||
// 需要放行的请求
|
// 需要放行的请求
|
||||||
.excludePathPatterns("/user/login","/user/register","/user/sendCode")
|
.excludePathPatterns("/admin/login")
|
||||||
// 添加swagger-ui的放行路径
|
// 添加swagger-ui的放行路径
|
||||||
.excludePathPatterns("/swagger-resources/**", "/webjars/**", "/v2/**", "/swagger-ui.html/**","/doc.html/**")
|
.excludePathPatterns("/swagger-resources/**", "/webjars/**", "/v2/**", "/swagger-ui.html/**","/doc.html/**")
|
||||||
;
|
;
|
||||||
|
|
|
@ -1,36 +0,0 @@
|
||||||
package com.yzdx.AiInterviewer.controller;
|
|
||||||
|
|
||||||
import io.swagger.annotations.ApiOperation;
|
|
||||||
import io.swagger.annotations.ApiParam;
|
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/hello")
|
|
||||||
public class HelloController {
|
|
||||||
|
|
||||||
@GetMapping("/hello")
|
|
||||||
public String hello(){
|
|
||||||
return "hello";
|
|
||||||
}
|
|
||||||
|
|
||||||
@ApiOperation("用户登录")
|
|
||||||
@PostMapping("/test")
|
|
||||||
public Map<String ,Object> testLogin(@ApiParam("用户名") String username ,@ApiParam("密码")String password){
|
|
||||||
|
|
||||||
|
|
||||||
Map<String ,Object> result=new HashMap<>();
|
|
||||||
|
|
||||||
result.put("code",0);
|
|
||||||
result.put("message","登陆成功");
|
|
||||||
result.put("data","username:"+username+","+"password:"+password);
|
|
||||||
|
|
||||||
return result;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
package com.yzdx.AiInterviewer.controller;
|
||||||
|
|
||||||
|
import com.yzdx.AiInterviewer.comment.R;
|
||||||
|
import com.yzdx.AiInterviewer.service.UserService;
|
||||||
|
import io.swagger.annotations.ApiParam;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/admin")
|
||||||
|
public class UserController {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UserService userService;
|
||||||
|
|
||||||
|
@PostMapping("/login")
|
||||||
|
public R adminLogin(@RequestBody @ApiParam("传入的值,phone,encoding,password") Map<String,Object> loginForm){
|
||||||
|
if(loginForm.size()==0){
|
||||||
|
return R.error("传来的数据有误,请检查输入");
|
||||||
|
|
||||||
|
}
|
||||||
|
String phone=(String)loginForm.get("phone");
|
||||||
|
String encoding=(String)loginForm.get("encoding");
|
||||||
|
String password=(String)loginForm.get("password");
|
||||||
|
return userService.adminLogin(phone, encoding, password);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
package com.yzdx.AiInterviewer.entity;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
@Data
|
||||||
|
public class BaseEntity {
|
||||||
|
@ApiModelProperty("电子邮箱")
|
||||||
|
private Date createTime;
|
||||||
|
@ApiModelProperty("电子邮箱")
|
||||||
|
private Date updateTime;
|
||||||
|
@ApiModelProperty("电子邮箱")
|
||||||
|
private Integer createUser;
|
||||||
|
@ApiModelProperty("电子邮箱")
|
||||||
|
private Integer updateUser;
|
||||||
|
}
|
|
@ -0,0 +1,45 @@
|
||||||
|
package com.yzdx.AiInterviewer.entity;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@ApiModel("公司主体类")
|
||||||
|
@TableName("company")
|
||||||
|
public class Company extends BaseEntity{
|
||||||
|
@ApiModelProperty("公司id")
|
||||||
|
@TableId(type = IdType.AUTO)
|
||||||
|
private Integer id;
|
||||||
|
@ApiModelProperty("公司名称")
|
||||||
|
private String companyName;
|
||||||
|
@ApiModelProperty("公司全称")
|
||||||
|
@TableField(value = "company_allname")
|
||||||
|
private String companyAllName;
|
||||||
|
@ApiModelProperty("公司详情")
|
||||||
|
private String companyDetail;
|
||||||
|
@ApiModelProperty("公司类型")
|
||||||
|
private String type;
|
||||||
|
@ApiModelProperty("公司地址")
|
||||||
|
private String address;
|
||||||
|
@ApiModelProperty("公司待遇")
|
||||||
|
private String treatment;
|
||||||
|
@ApiModelProperty("法定代表人")
|
||||||
|
private String legalRepresentative;
|
||||||
|
@ApiModelProperty("注册资本")
|
||||||
|
private String registeredCapital;
|
||||||
|
@ApiModelProperty("成立日期")
|
||||||
|
private Date established;
|
||||||
|
@ApiModelProperty("统一信用编码")
|
||||||
|
private String creditCode;
|
||||||
|
@ApiModelProperty("公司图片")
|
||||||
|
private String images;
|
||||||
|
@ApiModelProperty("公司使用的登陆编码")
|
||||||
|
private String encoding;
|
||||||
|
}
|
|
@ -1,12 +1,35 @@
|
||||||
package com.yzdx.AiInterviewer.entity;
|
package com.yzdx.AiInterviewer.entity;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
@ApiModel("用户实体类")
|
@ApiModel("用户实体类")
|
||||||
public class User {
|
@Data
|
||||||
|
@TableName("user")
|
||||||
|
public class User extends BaseEntity{
|
||||||
|
@ApiModelProperty("用户id")
|
||||||
|
@TableId(type = IdType.AUTO)
|
||||||
|
private Integer id;
|
||||||
@ApiModelProperty("用户名")
|
@ApiModelProperty("用户名")
|
||||||
public String username;
|
private String username;
|
||||||
@ApiModelProperty("密码")
|
@ApiModelProperty("密码")
|
||||||
public String password;
|
private String password;
|
||||||
|
@ApiModelProperty("盐值")
|
||||||
|
private String salt;
|
||||||
|
@ApiModelProperty("角色")
|
||||||
|
private String role;
|
||||||
|
@ApiModelProperty("手机号码")
|
||||||
|
private String phone;
|
||||||
|
@ApiModelProperty("性别")
|
||||||
|
private String sex;
|
||||||
|
@ApiModelProperty("年龄")
|
||||||
|
private String age;
|
||||||
|
@ApiModelProperty("头像地址")
|
||||||
|
private String avatar;
|
||||||
|
@ApiModelProperty("电子邮箱")
|
||||||
|
private String email;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
package com.yzdx.AiInterviewer.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.yzdx.AiInterviewer.entity.Company;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
public interface CompanyMapper extends BaseMapper<Company> {
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
package com.yzdx.AiInterviewer.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.yzdx.AiInterviewer.entity.User;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
public interface UserMapper extends BaseMapper<User> {
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
package com.yzdx.AiInterviewer.service;
|
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.yzdx.AiInterviewer.comment.R;
|
||||||
|
import com.yzdx.AiInterviewer.entity.User;
|
||||||
|
|
||||||
|
public interface UserService extends IService<User> {
|
||||||
|
|
||||||
|
/** 管理员登录业务
|
||||||
|
* @param phone,encoding,password
|
||||||
|
* @return boolean,ture登陆成功,false:登陆失败
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
R adminLogin(String phone, String encoding, String password);
|
||||||
|
}
|
|
@ -0,0 +1,76 @@
|
||||||
|
package com.yzdx.AiInterviewer.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.yzdx.AiInterviewer.comment.R;
|
||||||
|
import com.yzdx.AiInterviewer.entity.Company;
|
||||||
|
import com.yzdx.AiInterviewer.entity.User;
|
||||||
|
import com.yzdx.AiInterviewer.mapper.CompanyMapper;
|
||||||
|
import com.yzdx.AiInterviewer.mapper.UserMapper;
|
||||||
|
import com.yzdx.AiInterviewer.service.UserService;
|
||||||
|
import com.yzdx.AiInterviewer.utiles.JWT;
|
||||||
|
import com.yzdx.AiInterviewer.utiles.MD5Util;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UserMapper userMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private CompanyMapper companyMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public R adminLogin(String phone, String encoding, String password) {
|
||||||
|
|
||||||
|
LambdaQueryWrapper<User> queryWrapper=new LambdaQueryWrapper();
|
||||||
|
|
||||||
|
queryWrapper.eq(User::getPhone,phone);
|
||||||
|
|
||||||
|
User user = userMapper.selectOne(queryWrapper);
|
||||||
|
|
||||||
|
//若查询用户为空
|
||||||
|
if(user==null){
|
||||||
|
return R.error("账号不存在,请检查输入");
|
||||||
|
}
|
||||||
|
if (user.getRole().equals("3") || user.getRole().equals("4")) {
|
||||||
|
return R.error("输入的账号或密码错误");
|
||||||
|
}
|
||||||
|
//查询的用户存在,检查密码是否正确
|
||||||
|
String salt=user.getSalt();
|
||||||
|
|
||||||
|
String findPassword=user.getPassword();
|
||||||
|
|
||||||
|
password= MD5Util.GetMD5Password(password,salt);
|
||||||
|
|
||||||
|
if(!findPassword.equals(password)){
|
||||||
|
return R.error("输入的账号或密码错误");
|
||||||
|
}
|
||||||
|
|
||||||
|
//密码和账户都输入正确,检查公司编码是否正确
|
||||||
|
LambdaQueryWrapper<Company> queryWrapper1=new LambdaQueryWrapper();
|
||||||
|
|
||||||
|
queryWrapper1.eq(Company::getEncoding,encoding);
|
||||||
|
|
||||||
|
Company findCompany= companyMapper.selectOne(queryWrapper1);
|
||||||
|
|
||||||
|
if(findCompany==null){
|
||||||
|
|
||||||
|
return R.error("输入的公司编码有误,请检查输入");
|
||||||
|
}
|
||||||
|
|
||||||
|
//均正确,返回token密钥
|
||||||
|
String token=JWT.getJWToken(user.getId());
|
||||||
|
|
||||||
|
Map<String,Object> data=new HashMap<>();
|
||||||
|
|
||||||
|
data.put("token",token);
|
||||||
|
|
||||||
|
return R.success(data);
|
||||||
|
}
|
||||||
|
}
|
|
@ -35,7 +35,7 @@ public class JWT {
|
||||||
JWTCreator.Builder builder = com.auth0.jwt.JWT.create();
|
JWTCreator.Builder builder = com.auth0.jwt.JWT.create();
|
||||||
|
|
||||||
// 指定标识字段
|
// 指定标识字段
|
||||||
builder.withClaim("lawyerId", id);
|
builder.withClaim("userid", id);
|
||||||
|
|
||||||
// 指定过期时间
|
// 指定过期时间
|
||||||
token = builder.withExpiresAt(instance.getTime())
|
token = builder.withExpiresAt(instance.getTime())
|
||||||
|
@ -63,6 +63,6 @@ public class JWT {
|
||||||
// 从token中获取用户id
|
// 从token中获取用户id
|
||||||
public static int getTokenId(String token){
|
public static int getTokenId(String token){
|
||||||
DecodedJWT verify = com.auth0.jwt.JWT.require(Algorithm.HMAC256(SING)).build().verify(token);
|
DecodedJWT verify = com.auth0.jwt.JWT.require(Algorithm.HMAC256(SING)).build().verify(token);
|
||||||
return verify.getClaim("Id").asInt();
|
return verify.getClaim("userid").asInt();
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -3,9 +3,9 @@ server:
|
||||||
|
|
||||||
spring:
|
spring:
|
||||||
datasource:
|
datasource:
|
||||||
url: jdbc:mysql://localhost:3306/shop?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
|
url: jdbc:mysql://101.43.255.47:3306/ai_interviewer?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
|
||||||
username: root
|
username: root
|
||||||
password: root
|
password: 2002811
|
||||||
|
|
||||||
jackson:
|
jackson:
|
||||||
default-property-inclusion: non_null
|
default-property-inclusion: non_null
|
||||||
|
|
Loading…
Reference in New Issue