修改登录
This commit is contained in:
parent
7c1bb7511b
commit
9a61aeb568
|
|
@ -1,4 +1,4 @@
|
||||||
package com.bonus.waterdesign.controller.common;
|
package com.bonus.base.controller.common;
|
||||||
|
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.bonus.waterdesign.controller.common;
|
package com.bonus.base.controller.common;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.bonus.waterdesign.controller.monitor;
|
package com.bonus.base.controller.monitor;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.bonus.waterdesign.controller.monitor;
|
package com.bonus.base.controller.monitor;
|
||||||
|
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.bonus.waterdesign.controller.monitor;
|
package com.bonus.base.controller.monitor;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.bonus.waterdesign.controller.monitor;
|
package com.bonus.base.controller.monitor;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.bonus.waterdesign.controller.monitor;
|
package com.bonus.base.controller.monitor;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.bonus.waterdesign.controller.system;
|
package com.bonus.base.controller.system;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.bonus.waterdesign.controller.system;
|
package com.bonus.base.controller.system;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.apache.commons.lang3.ArrayUtils;
|
import org.apache.commons.lang3.ArrayUtils;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.bonus.waterdesign.controller.system;
|
package com.bonus.base.controller.system;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.bonus.waterdesign.controller.system;
|
package com.bonus.base.controller.system;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.bonus.waterdesign.controller.system;
|
package com.bonus.base.controller.system;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
package com.bonus.waterdesign.controller.system;
|
package com.bonus.base.controller.system;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
|
@ -39,6 +40,16 @@ public class SysLoginController
|
||||||
@Autowired
|
@Autowired
|
||||||
private TokenService tokenService;
|
private TokenService tokenService;
|
||||||
|
|
||||||
|
|
||||||
|
@PostMapping("/sendPhone")
|
||||||
|
public AjaxResult sendPhone(@RequestBody String phone) {
|
||||||
|
// 下发短信
|
||||||
|
AjaxResult ajax= loginService.sendPhone(phone);
|
||||||
|
|
||||||
|
return ajax;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 登录方法
|
* 登录方法
|
||||||
*
|
*
|
||||||
|
|
@ -46,12 +57,18 @@ public class SysLoginController
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
@PostMapping("/login")
|
@PostMapping("/login")
|
||||||
public AjaxResult login(@RequestBody LoginBody loginBody)
|
public AjaxResult login(@RequestBody LoginBody loginBody) {
|
||||||
{
|
String token;
|
||||||
AjaxResult ajax = AjaxResult.success();
|
AjaxResult ajax = AjaxResult.success();
|
||||||
|
if("2".equals(loginBody.getLoginType())){
|
||||||
|
token = loginService.login(loginBody.getUsername(), loginBody.getCode());
|
||||||
|
}else{
|
||||||
|
token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
|
||||||
|
loginBody.getUuid());
|
||||||
|
}
|
||||||
|
|
||||||
// 生成令牌
|
// 生成令牌
|
||||||
String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
|
|
||||||
loginBody.getUuid());
|
|
||||||
ajax.put(Constants.TOKEN, token);
|
ajax.put(Constants.TOKEN, token);
|
||||||
return ajax;
|
return ajax;
|
||||||
}
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.bonus.waterdesign.controller.system;
|
package com.bonus.base.controller.system;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.bonus.waterdesign.controller.system;
|
package com.bonus.base.controller.system;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.bonus.waterdesign.controller.system;
|
package com.bonus.base.controller.system;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.bonus.waterdesign.controller.system;
|
package com.bonus.base.controller.system;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.bonus.waterdesign.controller.system;
|
package com.bonus.base.controller.system;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.bonus.waterdesign.controller.system;
|
package com.bonus.base.controller.system;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.bonus.waterdesign.controller.system;
|
package com.bonus.base.controller.system;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.bonus.waterdesign.controller.tool;
|
package com.bonus.base.controller.tool;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.bonus.waterdesign.core.config;
|
package com.bonus.base.core.config;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -16,7 +16,11 @@
|
||||||
</description>
|
</description>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>cn.hutool</groupId>
|
||||||
|
<artifactId>hutool-all</artifactId>
|
||||||
|
<version>5.8.22</version>
|
||||||
|
</dependency>
|
||||||
<!-- Spring框架基本的核心工具 -->
|
<!-- Spring框架基本的核心工具 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework</groupId>
|
<groupId>org.springframework</groupId>
|
||||||
|
|
@ -118,6 +122,11 @@
|
||||||
<groupId>javax.servlet</groupId>
|
<groupId>javax.servlet</groupId>
|
||||||
<artifactId>javax.servlet-api</artifactId>
|
<artifactId>javax.servlet-api</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.projectlombok</groupId>
|
||||||
|
<artifactId>lombok</artifactId>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,20 @@
|
||||||
package com.bonus.common.core.domain.model;
|
package com.bonus.common.core.domain.model;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户登录对象
|
* 用户登录对象
|
||||||
*
|
*
|
||||||
* @author ruoyi
|
* @author ruoyi
|
||||||
*/
|
*/
|
||||||
public class LoginBody
|
@Data
|
||||||
{
|
public class LoginBody {
|
||||||
|
/**
|
||||||
|
* 登录方式
|
||||||
|
* 1账号密码登录
|
||||||
|
* 2验证码登录
|
||||||
|
*/
|
||||||
|
private String loginType;
|
||||||
/**
|
/**
|
||||||
* 用户名
|
* 用户名
|
||||||
*/
|
*/
|
||||||
|
|
@ -21,49 +29,10 @@ public class LoginBody
|
||||||
* 验证码
|
* 验证码
|
||||||
*/
|
*/
|
||||||
private String code;
|
private String code;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 唯一标识
|
* 唯一标识
|
||||||
*/
|
*/
|
||||||
private String uuid;
|
private String uuid;
|
||||||
|
|
||||||
public String getUsername()
|
|
||||||
{
|
|
||||||
return username;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setUsername(String username)
|
|
||||||
{
|
|
||||||
this.username = username;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getPassword()
|
|
||||||
{
|
|
||||||
return password;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPassword(String password)
|
|
||||||
{
|
|
||||||
this.password = password;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCode()
|
|
||||||
{
|
|
||||||
return code;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCode(String code)
|
|
||||||
{
|
|
||||||
this.code = code;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getUuid()
|
|
||||||
{
|
|
||||||
return uuid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setUuid(String uuid)
|
|
||||||
{
|
|
||||||
this.uuid = uuid;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,102 @@
|
||||||
|
package com.bonus.common.utils;
|
||||||
|
|
||||||
|
import cn.hutool.http.HttpRequest;
|
||||||
|
import com.sun.org.apache.bcel.internal.generic.NEW;
|
||||||
|
import org.hibernate.validator.internal.util.StringHelper;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 第三方依赖
|
||||||
|
* <dependency>
|
||||||
|
* <groupId>cn.hutool</groupId>
|
||||||
|
* <artifactId>hutool-all</artifactId>
|
||||||
|
* <version>5.8.22</version>
|
||||||
|
* </dependency>
|
||||||
|
* 手机 短信 下发工具类
|
||||||
|
* @author 黑子
|
||||||
|
*/
|
||||||
|
public class PhoneUtils {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 短信验证码 发送地址 及账号
|
||||||
|
*/
|
||||||
|
public static String url="http://api.ktsms.cn/sms_token?ddtkey=bonus&secretkey=KtyBns@Admin2023!";
|
||||||
|
|
||||||
|
public static final String STRING_OK = "ok";
|
||||||
|
/**
|
||||||
|
* 验证码时长
|
||||||
|
* 分钟
|
||||||
|
*/
|
||||||
|
public static final String TIMES = "5";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 系统平台名称
|
||||||
|
*/
|
||||||
|
public static final String SYSTEM_NAME = "博诺思公共微服务平台";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 短信签名
|
||||||
|
*/
|
||||||
|
public static final String PHONE_HEAD = "【博诺思】";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发送短信验证吗
|
||||||
|
* @param phone 手机号码
|
||||||
|
* @param msg 消息内容
|
||||||
|
* 如果msg不传 会使用默认值
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static Map<String,String> sendPhoneMsg(String phone, String msg){
|
||||||
|
Map<String,String> map=new HashMap<>(4);
|
||||||
|
map.put("phone",phone);
|
||||||
|
if (!isValidPhoneNumber(phone)) {
|
||||||
|
map.put("code","201");
|
||||||
|
map.put("msg","手机号格式错误,请输入11位数字号码");
|
||||||
|
}
|
||||||
|
|
||||||
|
StringBuilder sb=new StringBuilder();
|
||||||
|
sb.append(url).append("&mobile=").append(phone);
|
||||||
|
sb.append("&content=");
|
||||||
|
if(StringHelper.isNullOrEmptyString(msg)){
|
||||||
|
String code = getSixBitCode();
|
||||||
|
map.put("captcha",code);
|
||||||
|
sb.append(PHONE_HEAD);
|
||||||
|
sb.append("您正在进行短信验证,验证码:").append(code).append(",请在").append(TIMES).append("分钟内完成验证,切勿将验证码泄漏于他人。");
|
||||||
|
map.put("times",TIMES);
|
||||||
|
sb.append("发送时间:").append(DateUtils.getTime()).append("。(");
|
||||||
|
sb.append(SYSTEM_NAME).append(")");
|
||||||
|
}else{
|
||||||
|
sb.append(msg);
|
||||||
|
}
|
||||||
|
String body = HttpRequest.post(sb.toString()).execute(false).body();
|
||||||
|
if (body == null || !body.contains(STRING_OK)) {
|
||||||
|
map.put("code","201");
|
||||||
|
map.put("msg","短信发送失败");
|
||||||
|
}else{
|
||||||
|
; map.put("code","200");
|
||||||
|
map.put("msg","发送成功");
|
||||||
|
}
|
||||||
|
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static boolean isValidPhoneNumber(String phoneNumber) {
|
||||||
|
// 定义中国的手机号正则表达式
|
||||||
|
String regex = "^1[3-9]\\d{9}$";
|
||||||
|
return phoneNumber.matches(regex);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private static String getSixBitCode() {
|
||||||
|
//随机数
|
||||||
|
Random random = new Random();
|
||||||
|
return String.valueOf(random.nextInt(900000) + 100000);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -111,7 +111,7 @@ public class SecurityConfig
|
||||||
.authorizeHttpRequests((requests) -> {
|
.authorizeHttpRequests((requests) -> {
|
||||||
permitAllUrl.getUrls().forEach(url -> requests.antMatchers(url).permitAll());
|
permitAllUrl.getUrls().forEach(url -> requests.antMatchers(url).permitAll());
|
||||||
// 对于登录login 注册register 验证码captchaImage 允许匿名访问
|
// 对于登录login 注册register 验证码captchaImage 允许匿名访问
|
||||||
requests.antMatchers("/login", "/register", "/captchaImage").permitAll()
|
requests.antMatchers("/login", "/sendPhone","/register", "/captchaImage").permitAll()
|
||||||
// 静态资源,可匿名访问
|
// 静态资源,可匿名访问
|
||||||
.antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
|
.antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
|
||||||
.antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
|
.antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,61 @@
|
||||||
|
package com.bonus.framework.web.service;
|
||||||
|
|
||||||
|
import com.bonus.common.core.domain.entity.SysUser;
|
||||||
|
import com.bonus.common.core.domain.model.LoginUser;
|
||||||
|
import com.bonus.common.enums.UserStatus;
|
||||||
|
import com.bonus.common.exception.ServiceException;
|
||||||
|
import com.bonus.common.utils.MessageUtils;
|
||||||
|
import com.bonus.common.utils.StringUtils;
|
||||||
|
import com.bonus.system.service.ISysUserService;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.security.core.userdetails.UserDetails;
|
||||||
|
import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author 黑子
|
||||||
|
* 用户登录
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class LoginUserService {
|
||||||
|
private static final Logger log = LoggerFactory.getLogger(UserDetailsServiceImpl.class);
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ISysUserService userService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private SysPasswordService passwordService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private SysPermissionService permissionService;
|
||||||
|
|
||||||
|
public LoginUser loadUserByUsername(String username) throws UsernameNotFoundException
|
||||||
|
{
|
||||||
|
SysUser user = userService.selectUserByUserName(username);
|
||||||
|
if (StringUtils.isNull(user))
|
||||||
|
{
|
||||||
|
log.info("登录用户:{} 不存在.", username);
|
||||||
|
throw new ServiceException(MessageUtils.message("登录用户不存在"));
|
||||||
|
}
|
||||||
|
else if (UserStatus.DELETED.getCode().equals(user.getDelFlag()))
|
||||||
|
{
|
||||||
|
log.info("登录用户:{} 已被删除.", username);
|
||||||
|
throw new ServiceException(MessageUtils.message("登录用户已被删除"));
|
||||||
|
}
|
||||||
|
else if (UserStatus.DISABLE.getCode().equals(user.getStatus()))
|
||||||
|
{
|
||||||
|
log.info("登录用户:{} 已被停用.", username);
|
||||||
|
throw new ServiceException(MessageUtils.message("登录用户已被删除"));
|
||||||
|
}
|
||||||
|
|
||||||
|
passwordService.validate(user);
|
||||||
|
return createLoginUser(user);
|
||||||
|
}
|
||||||
|
|
||||||
|
public LoginUser createLoginUser(SysUser user)
|
||||||
|
{
|
||||||
|
return new LoginUser(user.getUserId(), user.getDeptId(), user, permissionService.getMenuPermission(user));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,11 +1,15 @@
|
||||||
package com.bonus.framework.web.service;
|
package com.bonus.framework.web.service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
import com.bonus.common.core.domain.AjaxResult;
|
||||||
|
import com.bonus.common.utils.PhoneUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.security.authentication.AuthenticationManager;
|
import org.springframework.security.authentication.AuthenticationManager;
|
||||||
import org.springframework.security.authentication.BadCredentialsException;
|
import org.springframework.security.authentication.BadCredentialsException;
|
||||||
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
||||||
import org.springframework.security.core.Authentication;
|
import org.springframework.security.core.Authentication;
|
||||||
|
import org.springframework.security.core.userdetails.UserDetails;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import com.bonus.common.constant.CacheConstants;
|
import com.bonus.common.constant.CacheConstants;
|
||||||
import com.bonus.common.constant.Constants;
|
import com.bonus.common.constant.Constants;
|
||||||
|
|
@ -29,6 +33,10 @@ import com.bonus.framework.security.context.AuthenticationContextHolder;
|
||||||
import com.bonus.system.service.ISysConfigService;
|
import com.bonus.system.service.ISysConfigService;
|
||||||
import com.bonus.system.service.ISysUserService;
|
import com.bonus.system.service.ISysUserService;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Random;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 登录校验方法
|
* 登录校验方法
|
||||||
*
|
*
|
||||||
|
|
@ -52,6 +60,11 @@ public class SysLoginService
|
||||||
@Autowired
|
@Autowired
|
||||||
private ISysConfigService configService;
|
private ISysConfigService configService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
LoginUserService loginUserService;
|
||||||
|
|
||||||
|
public static Integer TIMES=2;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 登录验证
|
* 登录验证
|
||||||
*
|
*
|
||||||
|
|
@ -95,11 +108,39 @@ public class SysLoginService
|
||||||
}
|
}
|
||||||
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
|
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
|
||||||
LoginUser loginUser = (LoginUser) authentication.getPrincipal();
|
LoginUser loginUser = (LoginUser) authentication.getPrincipal();
|
||||||
|
//记录登录信息
|
||||||
recordLoginInfo(loginUser.getUserId());
|
recordLoginInfo(loginUser.getUserId());
|
||||||
// 生成token
|
// 生成token
|
||||||
return tokenService.createToken(loginUser);
|
return tokenService.createToken(loginUser);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 手机验证码登录
|
||||||
|
* @param code
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public String login(String phone, String code) {
|
||||||
|
if(StringUtils.isEmpty(phone)){
|
||||||
|
throw new ServiceException("请输入正确的手机号!");
|
||||||
|
}
|
||||||
|
if(StringUtils.isEmpty(code)){
|
||||||
|
throw new ServiceException("验证码不正确!");
|
||||||
|
}
|
||||||
|
String data=redisCache.getCacheObject("code_"+phone);
|
||||||
|
if(StringUtils.isEmpty(data)){
|
||||||
|
throw new ServiceException("验证码已过期!");
|
||||||
|
}else {
|
||||||
|
if(data.equals(code)){
|
||||||
|
throw new ServiceException("验证码不正确!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//执行登录方法
|
||||||
|
LoginUser loginUser= loginUserService.loadUserByUsername(phone);
|
||||||
|
////记录登录信息
|
||||||
|
recordLoginInfo(loginUser.getUserId());
|
||||||
|
// 生成token
|
||||||
|
return tokenService.createToken(loginUser);
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* 校验验证码
|
* 校验验证码
|
||||||
*
|
*
|
||||||
|
|
@ -178,4 +219,45 @@ public class SysLoginService
|
||||||
sysUser.setLoginDate(DateUtils.getNowDate());
|
sysUser.setLoginDate(DateUtils.getNowDate());
|
||||||
userService.updateUserProfile(sysUser);
|
userService.updateUserProfile(sysUser);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 下发短信
|
||||||
|
* @param phone
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public AjaxResult sendPhone(String phone) {
|
||||||
|
//验证手机手机号是否存在
|
||||||
|
String thisUser=userService.getUserInfo(phone);
|
||||||
|
if(!phone.equals(thisUser)){
|
||||||
|
AjaxResult ajax = AjaxResult.error();
|
||||||
|
ajax.put("msg", "手机号不存在或手机号不正确");
|
||||||
|
return ajax;
|
||||||
|
}
|
||||||
|
StringBuilder sb=new StringBuilder();
|
||||||
|
String code=getSixBitCode();
|
||||||
|
sb.append("【博诺思】验证码:").append(code).append(",验证码有效期").append(TIMES).append("分钟,切勿将验证码泄漏于他人。");
|
||||||
|
sb.append("发送时间:").append(DateUtils.getTime());
|
||||||
|
sb.append("。(安徽博诺思公共微服务平台)");
|
||||||
|
Map<String,String> map= PhoneUtils.sendPhoneMsg(phone,sb.toString());
|
||||||
|
if ("200".equals(map.get("code"))){
|
||||||
|
AjaxResult ajax = AjaxResult.success();
|
||||||
|
redisCache.setCacheObject("code_"+phone,code,TIMES, TimeUnit.MINUTES);
|
||||||
|
ajax.put("times", TIMES);
|
||||||
|
ajax.put("msg", "发送成功");
|
||||||
|
return ajax;
|
||||||
|
}else{
|
||||||
|
AjaxResult ajax = AjaxResult.error();
|
||||||
|
ajax.put("times", TIMES);
|
||||||
|
ajax.put("msg", "发送失败,请检查网络!");
|
||||||
|
return ajax;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String getSixBitCode() {
|
||||||
|
//随机数
|
||||||
|
Random random = new Random();
|
||||||
|
return String.valueOf(random.nextInt(900000) + 100000);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -41,21 +41,20 @@ public class UserDetailsServiceImpl implements UserDetailsService
|
||||||
if (StringUtils.isNull(user))
|
if (StringUtils.isNull(user))
|
||||||
{
|
{
|
||||||
log.info("登录用户:{} 不存在.", username);
|
log.info("登录用户:{} 不存在.", username);
|
||||||
throw new ServiceException(MessageUtils.message("user.not.exists"));
|
throw new ServiceException(MessageUtils.message("登录用户不存在"));
|
||||||
}
|
}
|
||||||
else if (UserStatus.DELETED.getCode().equals(user.getDelFlag()))
|
else if (UserStatus.DELETED.getCode().equals(user.getDelFlag()))
|
||||||
{
|
{
|
||||||
log.info("登录用户:{} 已被删除.", username);
|
log.info("登录用户:{} 已被删除.", username);
|
||||||
throw new ServiceException(MessageUtils.message("user.password.delete"));
|
throw new ServiceException(MessageUtils.message("登录用户已被删除"));
|
||||||
}
|
}
|
||||||
else if (UserStatus.DISABLE.getCode().equals(user.getStatus()))
|
else if (UserStatus.DISABLE.getCode().equals(user.getStatus()))
|
||||||
{
|
{
|
||||||
log.info("登录用户:{} 已被停用.", username);
|
log.info("登录用户:{} 已被停用.", username);
|
||||||
throw new ServiceException(MessageUtils.message("user.blocked"));
|
throw new ServiceException(MessageUtils.message("登录用户已被删除"));
|
||||||
}
|
}
|
||||||
|
|
||||||
passwordService.validate(user);
|
passwordService.validate(user);
|
||||||
|
|
||||||
return createLoginUser(user);
|
return createLoginUser(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -124,4 +124,11 @@ public interface SysUserMapper
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public SysUser checkEmailUnique(String email);
|
public SysUser checkEmailUnique(String email);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询人员信息数据
|
||||||
|
* @param phone
|
||||||
|
*/
|
||||||
|
|
||||||
|
String getUserInfo(@Param("phone") String phone);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -203,4 +203,6 @@ public interface ISysUserService
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName);
|
public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName);
|
||||||
|
|
||||||
|
String getUserInfo(String phone);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -547,4 +547,16 @@ public class SysUserServiceImpl implements ISysUserService
|
||||||
}
|
}
|
||||||
return successMsg.toString();
|
return successMsg.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getUserInfo(String phone) {
|
||||||
|
try{
|
||||||
|
return userMapper.getUserInfo(phone);
|
||||||
|
}catch (Exception e){
|
||||||
|
log.error(e.toString(), e);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -122,7 +122,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
|
||||||
<select id="selectUserByUserName" parameterType="String" resultMap="SysUserResult">
|
<select id="selectUserByUserName" parameterType="String" resultMap="SysUserResult">
|
||||||
<include refid="selectUserVo"/>
|
<include refid="selectUserVo"/>
|
||||||
where u.user_name = #{userName} and u.del_flag = '0'
|
where u.phonenumber = #{userName} and u.del_flag = '0'
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="selectUserById" parameterType="Long" resultMap="SysUserResult">
|
<select id="selectUserById" parameterType="Long" resultMap="SysUserResult">
|
||||||
|
|
@ -141,8 +141,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<select id="checkEmailUnique" parameterType="String" resultMap="SysUserResult">
|
<select id="checkEmailUnique" parameterType="String" resultMap="SysUserResult">
|
||||||
select user_id, email from sys_user where email = #{email} and del_flag = '0' limit 1
|
select user_id, email from sys_user where email = #{email} and del_flag = '0' limit 1
|
||||||
</select>
|
</select>
|
||||||
|
<select id="getUserInfo" resultType="String">
|
||||||
<insert id="insertUser" parameterType="SysUser" useGeneratedKeys="true" keyProperty="userId">
|
select phonenumber from sys_user where phonenumber = #{phone} and del_flag = '0' limit 1
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<insert id="insertUser" parameterType="SysUser" useGeneratedKeys="true" keyProperty="userId">
|
||||||
insert into sys_user(
|
insert into sys_user(
|
||||||
<if test="userId != null and userId != 0">user_id,</if>
|
<if test="userId != null and userId != 0">user_id,</if>
|
||||||
<if test="deptId != null and deptId != 0">dept_id,</if>
|
<if test="deptId != null and deptId != 0">dept_id,</if>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue