| | |
| | | import com.zy.asrs.wcs.common.constant.Constants; |
| | | import com.zy.asrs.wcs.sys.entity.Menu; |
| | | import com.zy.asrs.wcs.sys.entity.User; |
| | | import com.zy.asrs.wcs.sys.entity.UserLogin; |
| | | import com.zy.asrs.wcs.sys.service.UserLoginService; |
| | | import com.zy.asrs.wcs.sys.service.UserService; |
| | | import com.zy.asrs.wcs.utils.HttpUtils; |
| | |
| | | try { |
| | | User user; |
| | | if (WHITE_KEY.contains(access_token)) { |
| | | user = userService.getByUsername("openapi", 2); |
| | | user = userService.getByUsername("openapi", 2L); |
| | | if (user == null) { |
| | | throw new UsernameNotFoundException("Username not found"); |
| | | } |
| | |
| | | String token = JwtUtil.buildToken(jwtSubject, configProperties.getTokenExpireTime(), |
| | | configProperties.getTokenKey()); |
| | | response.addHeader(Constants.TOKEN_HEADER_NAME, token); |
| | | userLoginService.saveAsync(user.getUsername(), LoginRecord.TYPE_REFRESH, null, |
| | | user.getTenantId(), request); |
| | | userLoginService.saveAsync(user.getId(), UserLogin.TYPE_REFRESH, null, |
| | | user.getHostId(), request); |
| | | } |
| | | } |
| | | } catch (ExpiredJwtException e) { |
| | |
| | | /** |
| | | * 租户id |
| | | */ |
| | | private Integer tenantId; |
| | | private Long tenantId; |
| | | |
| | | } |
| | |
| | | private String memo; |
| | | |
| | | @TableField(exist = false) |
| | | private List<Role> roles; |
| | | |
| | | @TableField(exist = false) |
| | | private List<Menu> authorities; |
| | | |
| | | public User() {} |
| | |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import com.zy.asrs.framework.common.Cools; |
| | | import com.zy.asrs.framework.common.SpringUtils; |
| | | import com.zy.asrs.wcs.sys.service.HostService; |
| | | import com.zy.asrs.wcs.sys.service.UserService; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | |
| | | @Data |
| | | @TableName("sys_user_login") |
| | | public class UserLogin implements Serializable { |
| | | |
| | | public static final int TYPE_LOGIN = 0; // 登录成功 |
| | | public static final int TYPE_ERROR = 1; // 登录失败 |
| | | public static final int TYPE_LOGOUT = 2; // 退出登录 |
| | | public static final int TYPE_REFRESH = 3; // 续签token |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | |
| | | private Long userId; |
| | | |
| | | /** |
| | | * 所属机构 |
| | | */ |
| | | @ApiModelProperty(value= "所属机构") |
| | | private Long hostId; |
| | | |
| | | /** |
| | | * 密钥 |
| | | */ |
| | | @ApiModelProperty(value= "密钥") |
| | | private String token; |
| | | |
| | | /** |
| | | * 登录ip |
| | | */ |
| | | @ApiModelProperty(value= "登录ip") |
| | | private String ip; |
| | | |
| | | /** |
| | | * 类型 |
| | | */ |
| | | @ApiModelProperty(value= "类型") |
| | | private Integer type; |
| | | |
| | | |
| | | /** |
| | | * 添加时间 |
| | |
| | | @ApiModelProperty(value= "备注") |
| | | private String memo; |
| | | |
| | | public UserLogin() {} |
| | | |
| | | public UserLogin(Long userId,String token,Date createTime,String system,String memo) { |
| | | this.userId = userId; |
| | | this.token = token; |
| | | this.createTime = createTime; |
| | | this.system = system; |
| | | this.memo = memo; |
| | | } |
| | | |
| | | // UserLogin userLogin = new UserLogin( |
| | | // null, // 用户[非空] |
| | | // null, // 密钥 |
| | | // null, // 添加时间 |
| | | // null, // 登录系统 |
| | | // null // 备注 |
| | | // ); |
| | | |
| | | public String getUserId$(){ |
| | | UserService service = SpringUtils.getBean(UserService.class); |
| | | User user = service.getById(this.userId); |
| | |
| | | return null; |
| | | } |
| | | |
| | | public String getHostId$(){ |
| | | HostService service = SpringUtils.getBean(HostService.class); |
| | | Host host = service.getById(this.hostId); |
| | | if (!Cools.isEmpty(host)){ |
| | | return String.valueOf(host.getId()); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public String getCreateTime$(){ |
| | | if (Cools.isEmpty(this.createTime)){ |
| | | return ""; |
| | |
| | | package com.zy.asrs.wcs.sys.mapper; |
| | | |
| | | import com.zy.asrs.wcs.sys.entity.RoleMenu; |
| | | import com.baomidou.mybatisplus.annotation.InterceptorIgnore; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.zy.asrs.wcs.sys.entity.Menu; |
| | | import com.zy.asrs.wcs.sys.entity.RoleMenu; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | import org.springframework.stereotype.Repository; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Mapper |
| | | @Repository |
| | | public interface RoleMenuMapper extends BaseMapper<RoleMenu> { |
| | | |
| | | @InterceptorIgnore(tenantLine = "true") |
| | | List<Menu> listMenuByUserId(@Param("userId") Long userId, @Param("menuType") Integer menuType); |
| | | |
| | | } |
| | |
| | | public interface UserMapper extends BaseMapper<User> { |
| | | |
| | | @InterceptorIgnore(tenantLine = "true") |
| | | User selectByUsername(@Param("username") String username, @Param("hostId") Integer hostId); |
| | | User selectByUsername(@Param("username") String username, @Param("hostId") Long hostId); |
| | | |
| | | } |
| | |
| | | package com.zy.asrs.wcs.sys.mapper; |
| | | |
| | | import com.zy.asrs.wcs.sys.entity.UserRole; |
| | | import com.baomidou.mybatisplus.annotation.InterceptorIgnore; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.zy.asrs.wcs.sys.entity.Role; |
| | | import com.zy.asrs.wcs.sys.entity.UserRole; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | import org.springframework.stereotype.Repository; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Mapper |
| | | @Repository |
| | | public interface UserRoleMapper extends BaseMapper<UserRole> { |
| | | |
| | | @InterceptorIgnore(tenantLine = "true") |
| | | List<Role> selectByUserId(@Param("userId") Long userId); |
| | | |
| | | } |
| | |
| | | package com.zy.asrs.wcs.sys.service; |
| | | |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.zy.asrs.wcs.sys.entity.Menu; |
| | | import com.zy.asrs.wcs.sys.entity.RoleMenu; |
| | | |
| | | import java.util.List; |
| | | |
| | | public interface RoleMenuService extends IService<RoleMenu> { |
| | | |
| | | List<Menu> listMenuByUserId(Long userId, Integer menuType); |
| | | |
| | | } |
| | |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.zy.asrs.wcs.sys.entity.UserLogin; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | |
| | | public interface UserLoginService extends IService<UserLogin> { |
| | | |
| | | void saveAsync(Long userId, Integer type, String comments, Long hostId, HttpServletRequest request); |
| | | |
| | | } |
| | |
| | | package com.zy.asrs.wcs.sys.service; |
| | | |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.zy.asrs.wcs.sys.entity.Role; |
| | | import com.zy.asrs.wcs.sys.entity.UserRole; |
| | | |
| | | import java.util.List; |
| | | |
| | | public interface UserRoleService extends IService<UserRole> { |
| | | |
| | | List<Role> listByUserId(Long userId); |
| | | |
| | | } |
| | |
| | | |
| | | public interface UserService extends IService<User> { |
| | | |
| | | User getByUsername(String username, Integer hostId); |
| | | User getByUsername(String username, Long hostId); |
| | | |
| | | } |
| | |
| | | package com.zy.asrs.wcs.sys.service.impl; |
| | | |
| | | import com.zy.asrs.wcs.sys.mapper.RoleMenuMapper; |
| | | import com.zy.asrs.wcs.sys.entity.RoleMenu; |
| | | import com.zy.asrs.wcs.sys.service.RoleMenuService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.zy.asrs.wcs.sys.entity.Menu; |
| | | import com.zy.asrs.wcs.sys.entity.RoleMenu; |
| | | import com.zy.asrs.wcs.sys.mapper.RoleMenuMapper; |
| | | import com.zy.asrs.wcs.sys.service.RoleMenuService; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Service("roleMenuService") |
| | | public class RoleMenuServiceImpl extends ServiceImpl<RoleMenuMapper, RoleMenu> implements RoleMenuService { |
| | | |
| | | @Override |
| | | public List<Menu> listMenuByUserId(Long userId, Integer menuType) { |
| | | return baseMapper.listMenuByUserId(userId, menuType); |
| | | } |
| | | |
| | | } |
| | |
| | | import com.zy.asrs.wcs.sys.entity.UserLogin; |
| | | import com.zy.asrs.wcs.sys.service.UserLoginService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.springframework.scheduling.annotation.Async; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | |
| | | @Service("userLoginService") |
| | | public class UserLoginServiceImpl extends ServiceImpl<UserLoginMapper, UserLogin> implements UserLoginService { |
| | | |
| | | @Async |
| | | @Override |
| | | public void saveAsync(Long userId, Integer type, String comments, Long hostId, HttpServletRequest request) { |
| | | if (userId == null) { |
| | | return; |
| | | } |
| | | UserLogin userLogin = new UserLogin(); |
| | | userLogin.setUserId(userId); |
| | | userLogin.setType(type); |
| | | userLogin.setMemo(comments); |
| | | userLogin.setHostId(hostId); |
| | | userLogin.setIp(request.getRequestURI()); |
| | | baseMapper.insert(userLogin); |
| | | } |
| | | |
| | | } |
| | |
| | | package com.zy.asrs.wcs.sys.service.impl; |
| | | |
| | | import com.zy.asrs.wcs.sys.mapper.UserRoleMapper; |
| | | import com.zy.asrs.wcs.sys.entity.UserRole; |
| | | import com.zy.asrs.wcs.sys.service.UserRoleService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.zy.asrs.wcs.sys.entity.Role; |
| | | import com.zy.asrs.wcs.sys.entity.UserRole; |
| | | import com.zy.asrs.wcs.sys.mapper.UserRoleMapper; |
| | | import com.zy.asrs.wcs.sys.service.UserRoleService; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Service("userRoleService") |
| | | public class UserRoleServiceImpl extends ServiceImpl<UserRoleMapper, UserRole> implements UserRoleService { |
| | | |
| | | @Override |
| | | public List<Role> listByUserId(Long userId) { |
| | | return baseMapper.selectByUserId(userId); |
| | | } |
| | | |
| | | } |
| | |
| | | private RoleMenuService roleMenuService; |
| | | |
| | | @Override |
| | | public User getByUsername(String username, Integer hostId) { |
| | | public User getByUsername(String username, Long hostId) { |
| | | if (Cools.isEmpty(username)) { |
| | | return null; |
| | | } |
| | | User user = baseMapper.selectByUsername(username, tenantId); |
| | | User user = baseMapper.selectByUsername(username, hostId); |
| | | if (user != null) { |
| | | user.setRoles(userRoleService.listByUserId(user.getUserId())); |
| | | user.setAuthorities(roleMenuService.listMenuByUserId(user.getUserId(), null)); |
| | | user.setRoles(userRoleService.listByUserId(user.getId())); |
| | | user.setAuthorities(roleMenuService.listMenuByUserId(user.getId(), null)); |
| | | } |
| | | return user; |
| | | } |
| | |
| | | package com.zy.asrs.wcs.utils; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.zy.asrs.framework.common.R; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.IOException; |
| | |
| | | response.setContentType("application/json;charset=UTF-8"); |
| | | try { |
| | | PrintWriter out = response.getWriter(); |
| | | out.write(JSON.toJSONString(new ApiResult<>(code, message, null, error))); |
| | | out.write(JSON.toJSONString(R.parse(code + "-" + message))); |
| | | out.flush(); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.zy.asrs.wcs.sys.mapper.RoleMenuMapper"> |
| | | |
| | | <select id="listMenuByUserId" resultType="com.zy.asrs.wcs.sys.entity.Menu"> |
| | | |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.zy.asrs.wcs.sys.mapper.UserRoleMapper"> |
| | | |
| | | <select id="selectByUserId" resultType="com.zy.asrs.wcs.sys.entity.Role"> |
| | | SELECT * |
| | | FROM sys_role |
| | | WHERE role_id IN ( |
| | | SELECT role_id |
| | | FROM sys_user_role |
| | | WHERE user_id = #{userId} |
| | | ) |
| | | AND deleted = 0 |
| | | </select> |
| | | </mapper> |