Browse Source

提交

master
zzc 3 months ago
parent
commit
93181b5fbb
  1. 71
      acupuncture-admin/src/main/java/com/acupuncture/web/controller/system/SysLoginController.java
  2. 2
      acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/AdminDmsUserController.java
  3. 21
      acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/DmsLoginController.java
  4. 3
      acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/FmsFollowupController.java
  5. 2
      acupuncture-framework/src/main/java/com/acupuncture/framework/config/SecurityConfig.java
  6. 48
      acupuncture-framework/src/main/java/com/acupuncture/framework/web/service/SysLoginService.java
  7. 48
      acupuncture-framework/src/main/java/com/acupuncture/framework/web/service/WebDmsLoginService.java
  8. 1
      acupuncture-system/src/main/java/com/acupuncture/system/service/FmsFollowupQueueService.java
  9. 12
      acupuncture-system/src/main/resources/mapper/system/SysUserMapper.xml

71
acupuncture-admin/src/main/java/com/acupuncture/web/controller/system/SysLoginController.java

@ -3,6 +3,8 @@ package com.acupuncture.web.controller.system;
import java.util.List;
import java.util.Set;
import com.acupuncture.common.annotation.DataSource;
import com.acupuncture.common.enums.DataSourceType;
import com.acupuncture.system.domain.po.DmsTenant;
import com.acupuncture.system.persist.mapper.DmsTenantMapper;
import com.acupuncture.system.service.ISysUserService;
@ -66,23 +68,41 @@ public class SysLoginController
return ajax;
}
/**
* 登录方法
*
* @param loginBody 登录信息
* @return 结果
*/
@PostMapping("/loginSimple")
public AjaxResult loginSimple(@RequestBody LoginBody loginBody)
{
AjaxResult ajax = AjaxResult.success();
// 生成令牌
String token = loginService.loginSimple(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
loginBody.getUuid());
ajax.put(Constants.TOKEN, token);
return ajax;
}
/**
* 获取用户信息
*
*
* @return 用户信息
*/
@GetMapping("getInfo")
public AjaxResult getInfo()
{
LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser user = sysUserService.selectUserByTenantId(null, loginUser.getUsername());
if (user.getTenantId() != null) {
DmsTenant dmsTenant = dmsTenantMapper.selectByPrimaryKey(user.getTenantId());
if (dmsTenant != null) {
user.setTenantName(dmsTenant.getName());
user.setTenantPhone(dmsTenant.getContactPhone());
}
}
SysUser user = sysUserService.selectUserById(loginUser.getUser().getUserId());
// SysUser user = sysUserService.selectUserByTenantId(null, loginUser.getUsername());
// if (user.getTenantId() != null) {
// DmsTenant dmsTenant = dmsTenantMapper.selectByPrimaryKey(user.getTenantId());
// if (dmsTenant != null) {
// user.setTenantName(dmsTenant.getName());
// user.setTenantPhone(dmsTenant.getContactPhone());
// }
// }
// 角色集合
Set<String> roles = permissionService.getRolePermission(user);
// 权限集合
@ -99,6 +119,39 @@ public class SysLoginController
return ajax;
}
// /**
// * 获取用户信息
// *
// * @return 用户信息
// */
// @GetMapping("getInfo")
// public AjaxResult getInfo()
// {
// LoginUser loginUser = SecurityUtils.getLoginUser();
// SysUser user = sysUserService.selectUserByTenantId(null, loginUser.getUsername());
// if (user.getTenantId() != null) {
// DmsTenant dmsTenant = dmsTenantMapper.selectByPrimaryKey(user.getTenantId());
// if (dmsTenant != null) {
// user.setTenantName(dmsTenant.getName());
// user.setTenantPhone(dmsTenant.getContactPhone());
// }
// }
// // 角色集合
// Set<String> roles = permissionService.getRolePermission(user);
// // 权限集合
// Set<String> permissions = permissionService.getMenuPermission(user);
// if (!loginUser.getPermissions().equals(permissions))
// {
// loginUser.setPermissions(permissions);
// tokenService.refreshToken(loginUser);
// }
// AjaxResult ajax = AjaxResult.success();
// ajax.put("user", user);
// ajax.put("roles", roles);
// ajax.put("permissions", permissions);
// return ajax;
// }
/**
* 获取路由信息
*

2
acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/AdminDmsUserController.java

@ -103,6 +103,8 @@ public class AdminDmsUserController {
user.setCreateBy(SecurityUtils.getUsername());
user.setPhonenumber(dto.getContactPhone());
user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
user.setTenantName(dmsTenant.getName());
user.setTenantPhone(dmsTenant.getContactPhone());
int insert = userService.insertUser(user);
//销毁切换数据源

21
acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/DmsLoginController.java

@ -1,5 +1,6 @@
package com.acupuncture.web.controller.web;
import com.acupuncture.common.annotation.DataSource;
import com.acupuncture.common.annotation.Log;
import com.acupuncture.common.constant.Constants;
import com.acupuncture.common.core.domain.AjaxResult;
@ -8,6 +9,7 @@ import com.acupuncture.common.core.domain.entity.SysUser;
import com.acupuncture.common.core.domain.model.LoginBody;
import com.acupuncture.common.core.domain.model.LoginUser;
import com.acupuncture.common.enums.BusinessType;
import com.acupuncture.common.enums.DataSourceType;
import com.acupuncture.common.utils.SecurityUtils;
import com.acupuncture.framework.web.service.SysPermissionService;
import com.acupuncture.framework.web.service.TokenService;
@ -52,6 +54,7 @@ public class DmsLoginController {
* @param loginBody 登录信息
* @return 结果
*/
@DataSource(DataSourceType.MASTER)
@PostMapping("/login")
public AjaxResult login(@RequestBody LoginBody loginBody) {
AjaxResult ajax = AjaxResult.success();
@ -62,6 +65,24 @@ public class DmsLoginController {
return ajax;
}
/**
* 登录方法
*
* @param loginBody 登录信息
* @return 结果
*/
@DataSource(DataSourceType.MASTER)
@PostMapping("/loginSimple")
public AjaxResult loginSimple(@RequestBody LoginBody loginBody) {
AjaxResult ajax = AjaxResult.success();
// 生成令牌
String token = webDmsLoginService.loginSimple(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
loginBody.getUuid());
ajax.put(Constants.TOKEN, token);
return ajax;
}
/**
* 获取用户信息
*

3
acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/FmsFollowupController.java

@ -4,8 +4,10 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.IdUtil;
import com.acupuncture.common.annotation.Anonymous;
import com.acupuncture.common.annotation.DataSource;
import com.acupuncture.common.core.domain.BaseDto;
import com.acupuncture.common.core.domain.JsonResponse;
import com.acupuncture.common.enums.DataSourceType;
import com.acupuncture.common.utils.SecurityUtils;
import com.acupuncture.framework.datasource.DynamicDataSourceContextHolder;
import com.acupuncture.system.domain.dto.FmsFollowupDto;
@ -56,6 +58,7 @@ public class FmsFollowupController {
@ApiOperation("查询公共队列")
@PostMapping("/commonQueue")
@Anonymous
@DataSource(DataSourceType.MASTER)
public JsonResponse<PageInfo<FmsFollowupVo.FollowupQueueVO>> queryCommonQueue(@RequestBody @Validated BaseDto<FmsFollowupDto.QueueQuery> dto) {
if (dto.getPageNum() > 0) {
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());

2
acupuncture-framework/src/main/java/com/acupuncture/framework/config/SecurityConfig.java

@ -114,7 +114,7 @@ public class SecurityConfig
.authorizeHttpRequests((requests) -> {
permitAllUrl.getUrls().forEach(url -> requests.antMatchers(url).permitAll());
// 对于登录login 注册register 验证码captchaImage 允许匿名访问
requests.antMatchers("/login", "/register", "/captchaImage", "/web/login", "/web/queryTenantById", "/api/http/getUserInfo", "/api/http/addReportImage", "/api/http/uploadMemberInfo", "/task/task").permitAll()
requests.antMatchers("/login", "/register", "/captchaImage", "/web/login", "/web/queryTenantById", "/api/http/getUserInfo", "/api/http/addReportImage", "/api/http/uploadMemberInfo", "/task/task", "/loginSimple").permitAll()
// 静态资源,可匿名访问
.antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**", "/static/**").permitAll()
.antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()

48
acupuncture-framework/src/main/java/com/acupuncture/framework/web/service/SysLoginService.java

@ -100,6 +100,54 @@ public class SysLoginService
return tokenService.createToken(loginUser);
}
/**
* 登录验证
*
* @param username 用户名
* @param password 密码
* @param code 验证码
* @param uuid 唯一标识
* @return 结果
*/
public String loginSimple(String username, String password, String code, String uuid)
{
// 验证码校验
// validateCaptcha(username, code, uuid);
// 登录前置校验
loginPreCheck(username, password);
// 用户验证
Authentication authentication = null;
try
{
UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username, password);
AuthenticationContextHolder.setContext(authenticationToken);
// 该方法会去调用UserDetailsServiceImpl.loadUserByUsername
authentication = authenticationManager.authenticate(authenticationToken);
}
catch (Exception e)
{
if (e instanceof BadCredentialsException)
{
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
throw new UserPasswordNotMatchException();
}
else
{
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage()));
throw new ServiceException(e.getMessage());
}
}
finally
{
AuthenticationContextHolder.clearContext();
}
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
LoginUser loginUser = (LoginUser) authentication.getPrincipal();
recordLoginInfo(loginUser.getUserId());
// 生成token
return tokenService.createToken(loginUser);
}
/**
* 登录验证
*

48
acupuncture-framework/src/main/java/com/acupuncture/framework/web/service/WebDmsLoginService.java

@ -98,6 +98,54 @@ public class WebDmsLoginService
return tokenService.createToken(loginUser);
}
/**
* 登录验证
*
* @param username 用户名
* @param password 密码
* @param code 验证码
* @param uuid 唯一标识
* @return 结果
*/
public String loginSimple(String username, String password, String code, String uuid)
{
// 验证码校验
validateCaptcha(username, code, uuid);
// 登录前置校验
loginPreCheck(username, password);
// 用户验证
Authentication authentication = null;
try
{
DmsUserAuthenticationToken authenticationToken = new DmsUserAuthenticationToken(username, password);
AuthenticationContextHolder.setContext(authenticationToken);
// 该方法会去调用UserDetailsServiceImpl.loadUserByUsername
authentication = authenticationManager.authenticate(authenticationToken);
}
catch (Exception e)
{
if (e instanceof BadCredentialsException)
{
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
throw new UserPasswordNotMatchException();
}
else
{
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage()));
throw new ServiceException(e.getMessage());
}
}
finally
{
AuthenticationContextHolder.clearContext();
}
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
LoginUser loginUser = (LoginUser) authentication.getPrincipal();
recordLoginInfo(loginUser.getUserId());
// 生成token
return tokenService.createToken(loginUser);
}
/**
* 登录验证
*

1
acupuncture-system/src/main/java/com/acupuncture/system/service/FmsFollowupQueueService.java

@ -19,7 +19,6 @@ public interface FmsFollowupQueueService {
* 查询公共队列
* @return
*/
@DataSource(DataSourceType.MASTER)
List<FmsFollowupVo.FollowupQueueVO> queryCommonQueue(String name);
}

12
acupuncture-system/src/main/resources/mapper/system/SysUserMapper.xml

@ -25,6 +25,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="updateTime" column="update_time" />
<result property="remark" column="remark" />
<result property="slaverAdmin" column="slaver_admin" />
<result property="tenantName" column="tenant_name" />
<result property="tenantPhone" column="tenant_phone" />
<association property="dept" javaType="SysDept" resultMap="deptResult" />
<collection property="roles" javaType="java.util.List" resultMap="RoleResult" />
</resultMap>
@ -49,7 +51,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectUserVo">
select u.user_id, u.tenant_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, u.slaver_admin,
select u.user_id, u.tenant_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, u.slaver_admin, u.tenant_name, u.tenant_phone,
d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status,
r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status
from sys_user u
@ -168,7 +170,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="status != null and status != ''">status,</if>
<if test="createBy != null and createBy != ''">create_by,</if>
<if test="remark != null and remark != ''">remark,</if>
<if test="slaverAdmin != null">slaver_admin,</if>
<if test="slaverAdmin != null">slaver_admin,</if>
<if test="tenantName != null and tenantName != ''">tenant_name,</if>
<if test="tenantPhone != null and tenantPhone != ''">tenant_phone,</if>
create_time
)values(
<if test="userId != null and userId != ''">#{userId},</if>
@ -184,7 +188,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="status != null and status != ''">#{status},</if>
<if test="createBy != null and createBy != ''">#{createBy},</if>
<if test="remark != null and remark != ''">#{remark},</if>
<if test="slaverAdmin != null">#{slaverAdmin},</if>
<if test="slaverAdmin != null">#{slaverAdmin},</if>
<if test="tenantName != null and tenantName != ''">#{tenantName},</if>
<if test="tenantPhone != null and tenantPhone != ''">#{tenantPhone},</if>
sysdate()
)
</insert>

Loading…
Cancel
Save