1. 调整 新增修改时 添加 create_by 以及 update_By
This commit is contained in:
parent
14c4218f17
commit
f0a3a39f57
|
|
@ -30,6 +30,10 @@ public interface SecurityConstants {
|
||||||
* 用户名字段
|
* 用户名字段
|
||||||
*/
|
*/
|
||||||
String DETAILS_USERNAME = "username";
|
String DETAILS_USERNAME = "username";
|
||||||
|
/**
|
||||||
|
* 登录端
|
||||||
|
*/
|
||||||
|
String APP_CODE = "appCode";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 授权信息字段
|
* 授权信息字段
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.chushang.security.context;
|
package com.chushang.common.core.context;
|
||||||
|
|
||||||
import com.alibaba.ttl.TransmittableThreadLocal;
|
import com.alibaba.ttl.TransmittableThreadLocal;
|
||||||
import com.chushang.common.core.constant.SecurityConstants;
|
import com.chushang.common.core.constant.SecurityConstants;
|
||||||
|
|
@ -9,7 +9,7 @@ import java.util.Map;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取当前线程变量中的 用户id、用户名称、Token等信息
|
* 获取当前线程变量中的 用户id、用户名称、Token等信息
|
||||||
* 注意: 必须在网关通过请求头的方法传入,同时在HeaderInterceptor拦截器设置值。 否则这里无法获取
|
* 注意: 必须在网关通过请求头的方法传入,同时在HeaderInterceptor拦截器设置值。 否则这里无法获取
|
||||||
*
|
*
|
||||||
* @author ruoyi
|
* @author ruoyi
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
//
|
||||||
|
// Source code recreated from a .class file by IntelliJ IDEA
|
||||||
|
// (powered by FernFlower decompiler)
|
||||||
|
//
|
||||||
|
|
||||||
|
package com.chushang.common.core.enums;
|
||||||
|
|
||||||
|
import com.chushang.common.core.exception.ResultException;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
public enum PassCodeEnum {
|
||||||
|
PUBLIC("PUBLIC", "公开", false),
|
||||||
|
PLATFORM("PLATFORM", "管理平台", true),
|
||||||
|
MINI("MINI", "小程序", true),
|
||||||
|
APP("APP", "应用", true),
|
||||||
|
;
|
||||||
|
|
||||||
|
private final String code;
|
||||||
|
private final String name;
|
||||||
|
private final Boolean openReg;
|
||||||
|
|
||||||
|
private PassCodeEnum(String code, String name, boolean openReg) {
|
||||||
|
this.code = code;
|
||||||
|
this.name = name;
|
||||||
|
this.openReg = openReg;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static PassCodeEnum getEnumByCode(String code) {
|
||||||
|
PassCodeEnum[] var1 = values();
|
||||||
|
for (PassCodeEnum e : var1) {
|
||||||
|
if (e.getCode().equals(code)) {
|
||||||
|
return e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
throw new ResultException("非法的应用");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -9,7 +9,7 @@ import com.chushang.datascope.annotation.DataScope;
|
||||||
import com.chushang.datascope.constants.ScopeConstants;
|
import com.chushang.datascope.constants.ScopeConstants;
|
||||||
import com.chushang.datascope.entity.DataScopeEntity;
|
import com.chushang.datascope.entity.DataScopeEntity;
|
||||||
import com.chushang.datascope.enums.ScopeKeyWord;
|
import com.chushang.datascope.enums.ScopeKeyWord;
|
||||||
import com.chushang.security.context.SecurityContextHolder;
|
import com.chushang.common.core.context.SecurityContextHolder;
|
||||||
import com.chushang.security.utils.SecurityUtils;
|
import com.chushang.security.utils.SecurityUtils;
|
||||||
import com.chushang.security.entity.vo.LoginUser;
|
import com.chushang.security.entity.vo.LoginUser;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ package com.chushang.common.mybatis.config;
|
||||||
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
|
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
|
||||||
|
import com.chushang.common.core.context.SecurityContextHolder;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.ibatis.reflection.MetaObject;
|
import org.apache.ibatis.reflection.MetaObject;
|
||||||
import org.springframework.util.ClassUtils;
|
import org.springframework.util.ClassUtils;
|
||||||
|
|
@ -23,7 +24,9 @@ public class MybatisPlusMetaObjectHandler implements MetaObjectHandler {
|
||||||
log.debug("mybatis plus start insert fill ....");
|
log.debug("mybatis plus start insert fill ....");
|
||||||
}
|
}
|
||||||
LocalDateTime now = LocalDateTime.now();
|
LocalDateTime now = LocalDateTime.now();
|
||||||
|
// 修改人, 创建人
|
||||||
|
Long userId = SecurityContextHolder.getUserId();
|
||||||
|
fillValIfNullByName("createBy", userId, metaObject, true);
|
||||||
fillValIfNullByName("createTime", now, metaObject, false);
|
fillValIfNullByName("createTime", now, metaObject, false);
|
||||||
fillValIfNullByName("updateTime", now, metaObject, false);
|
fillValIfNullByName("updateTime", now, metaObject, false);
|
||||||
}
|
}
|
||||||
|
|
@ -32,6 +35,8 @@ public class MybatisPlusMetaObjectHandler implements MetaObjectHandler {
|
||||||
public void updateFill(MetaObject metaObject) {
|
public void updateFill(MetaObject metaObject) {
|
||||||
log.debug("mybatis plus start update fill ....");
|
log.debug("mybatis plus start update fill ....");
|
||||||
fillValIfNullByName("updateTime", LocalDateTime.now(), metaObject, true);
|
fillValIfNullByName("updateTime", LocalDateTime.now(), metaObject, true);
|
||||||
|
Long userId = SecurityContextHolder.getUserId();
|
||||||
|
fillValIfNullByName("updateBy", userId, metaObject, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ package com.chushang.security.auth;
|
||||||
import com.chushang.security.annotation.Logical;
|
import com.chushang.security.annotation.Logical;
|
||||||
import com.chushang.security.annotation.RequiresPermissions;
|
import com.chushang.security.annotation.RequiresPermissions;
|
||||||
import com.chushang.security.annotation.RequiresRoles;
|
import com.chushang.security.annotation.RequiresRoles;
|
||||||
import com.chushang.security.context.SecurityContextHolder;
|
import com.chushang.common.core.context.SecurityContextHolder;
|
||||||
import com.chushang.security.service.TokenService;
|
import com.chushang.security.service.TokenService;
|
||||||
import com.chushang.security.utils.SecurityUtils;
|
import com.chushang.security.utils.SecurityUtils;
|
||||||
import com.chushang.common.core.exception.auth.NotLoginException;
|
import com.chushang.common.core.exception.auth.NotLoginException;
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package com.chushang.security.interceptor;
|
package com.chushang.security.interceptor;
|
||||||
|
|
||||||
import com.chushang.security.auth.AuthUtil;
|
import com.chushang.security.auth.AuthUtil;
|
||||||
import com.chushang.security.context.SecurityContextHolder;
|
import com.chushang.common.core.context.SecurityContextHolder;
|
||||||
import com.chushang.security.utils.SecurityUtils;
|
import com.chushang.security.utils.SecurityUtils;
|
||||||
import com.chushang.common.core.constant.SecurityConstants;
|
import com.chushang.common.core.constant.SecurityConstants;
|
||||||
import com.chushang.common.core.util.ServletUtils;
|
import com.chushang.common.core.util.ServletUtils;
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ public class TokenService
|
||||||
/**
|
/**
|
||||||
* 创建令牌
|
* 创建令牌
|
||||||
*/
|
*/
|
||||||
public Map<String, Object> createToken(LoginUser loginUser)
|
public Map<String, Object> createToken(LoginUser loginUser, String appCode)
|
||||||
{
|
{
|
||||||
String token = IdUtils.getId(31);
|
String token = IdUtils.getId(31);
|
||||||
Long userId = loginUser.getUserId();
|
Long userId = loginUser.getUserId();
|
||||||
|
|
@ -55,6 +55,7 @@ public class TokenService
|
||||||
claimsMap.put(SecurityConstants.USER_KEY, tokenKey);
|
claimsMap.put(SecurityConstants.USER_KEY, tokenKey);
|
||||||
claimsMap.put(SecurityConstants.DETAILS_USER_ID, userId);
|
claimsMap.put(SecurityConstants.DETAILS_USER_ID, userId);
|
||||||
claimsMap.put(SecurityConstants.DETAILS_USERNAME, username);
|
claimsMap.put(SecurityConstants.DETAILS_USERNAME, username);
|
||||||
|
claimsMap.put(SecurityConstants.APP_CODE, appCode);
|
||||||
|
|
||||||
// 接口返回信息
|
// 接口返回信息
|
||||||
Map<String, Object> rspMap = new HashMap<>();
|
Map<String, Object> rspMap = new HashMap<>();
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
package com.chushang.security.utils;
|
package com.chushang.security.utils;
|
||||||
|
|
||||||
import com.chushang.security.context.SecurityContextHolder;
|
import com.chushang.common.core.context.SecurityContextHolder;
|
||||||
import com.chushang.common.core.constant.SecurityConstants;
|
import com.chushang.common.core.constant.SecurityConstants;
|
||||||
import com.chushang.common.core.constant.TokenConstants;
|
import com.chushang.common.core.constant.TokenConstants;
|
||||||
import com.chushang.common.core.util.ServletUtils;
|
import com.chushang.common.core.util.ServletUtils;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package com.chushang.auth.controller;
|
package com.chushang.auth.controller;
|
||||||
|
|
||||||
import com.chushang.auth.service.UserService;
|
import com.chushang.auth.service.UserService;
|
||||||
|
import com.chushang.common.core.enums.PassCodeEnum;
|
||||||
import com.chushang.common.core.util.JwtUtils;
|
import com.chushang.common.core.util.JwtUtils;
|
||||||
import com.chushang.common.core.util.StringUtils;
|
import com.chushang.common.core.util.StringUtils;
|
||||||
import com.chushang.common.core.web.AjaxResult;
|
import com.chushang.common.core.web.AjaxResult;
|
||||||
|
|
@ -31,13 +32,40 @@ public class UserController
|
||||||
final TokenService tokenService;
|
final TokenService tokenService;
|
||||||
final UserService userService;
|
final UserService userService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 后台登录
|
||||||
|
*/
|
||||||
@PostMapping("login")
|
@PostMapping("login")
|
||||||
public AjaxResult login(@RequestBody LoginBody form)
|
public AjaxResult login(@RequestBody LoginBody form)
|
||||||
{
|
{
|
||||||
// 用户登录
|
// 用户登录
|
||||||
LoginUser<SysUser, DataScopeEntity> loginUser = userService.login(form.getUsername(), form.getPassword());
|
LoginUser<SysUser, DataScopeEntity> loginUser = userService.login(form.getUsername(), form.getPassword(), PassCodeEnum.PLATFORM.getCode());
|
||||||
// 获取登录token
|
// 获取登录token
|
||||||
return AjaxResult.success(tokenService.createToken(loginUser));
|
return AjaxResult.success(tokenService.createToken(loginUser, PassCodeEnum.PLATFORM.getCode()));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 前台登录
|
||||||
|
*/
|
||||||
|
@PostMapping("/app/login")
|
||||||
|
public AjaxResult appLogin(@RequestBody LoginBody form)
|
||||||
|
{
|
||||||
|
// 用户登录
|
||||||
|
LoginUser<SysUser, DataScopeEntity> loginUser = userService.login(form.getUsername(), form.getPassword(), PassCodeEnum.APP.getCode());
|
||||||
|
// 获取登录token
|
||||||
|
return AjaxResult.success(tokenService.createToken(loginUser, PassCodeEnum.APP.getCode()));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 小程序登录
|
||||||
|
*/
|
||||||
|
@PostMapping("/mini/login")
|
||||||
|
public AjaxResult miniLogin(@RequestBody LoginBody form)
|
||||||
|
{
|
||||||
|
// 用户登录
|
||||||
|
LoginUser<SysUser, DataScopeEntity> loginUser = userService.login(form.getUsername(), form.getPassword(), PassCodeEnum.MINI.getCode());
|
||||||
|
// 获取登录token
|
||||||
|
return AjaxResult.success(tokenService.createToken(loginUser, PassCodeEnum.MINI.getCode()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@DeleteMapping("logout")
|
@DeleteMapping("logout")
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package com.chushang.auth.service;
|
package com.chushang.auth.service;
|
||||||
|
|
||||||
|
import com.chushang.common.core.enums.PassCodeEnum;
|
||||||
import com.chushang.common.core.constant.SecurityConstants;
|
import com.chushang.common.core.constant.SecurityConstants;
|
||||||
import com.chushang.common.core.exception.ResultException;
|
import com.chushang.common.core.exception.ResultException;
|
||||||
import com.chushang.common.core.util.IPUtils;
|
import com.chushang.common.core.util.IPUtils;
|
||||||
|
|
@ -34,38 +35,47 @@ public class UserService {
|
||||||
/**
|
/**
|
||||||
* 登录
|
* 登录
|
||||||
*/
|
*/
|
||||||
public LoginUser<SysUser, DataScopeEntity> login(String username, String password)
|
public LoginUser<SysUser, DataScopeEntity> login(String username, String password, String appCode)
|
||||||
{
|
{
|
||||||
// 查询用户信息
|
PassCodeEnum pce = PassCodeEnum.getEnumByCode(appCode);
|
||||||
long start = System.currentTimeMillis();
|
if (pce.getOpenReg()) {
|
||||||
Result<LoginUser<SysUser, DataScopeEntity>> rLoginUser = remoteUserService.getUserInfo(username, SecurityConstants.INNER);
|
// 查询用户信息
|
||||||
long end = System.currentTimeMillis();
|
long start = System.currentTimeMillis();
|
||||||
log.info("time : {}",end - start);
|
Result<LoginUser<SysUser, DataScopeEntity>> rLoginUser = remoteUserService.getUserInfo(username, SecurityConstants.INNER);
|
||||||
if (Result.FAIL_CODE == rLoginUser.getCode()){
|
long end = System.currentTimeMillis();
|
||||||
throw new ResultException(rLoginUser.getMsg());
|
log.info("time : {}",end - start);
|
||||||
|
if (Result.FAIL_CODE == rLoginUser.getCode()){
|
||||||
|
throw new ResultException(rLoginUser.getMsg());
|
||||||
|
}
|
||||||
|
if (ObjectUtils.isEmpty(rLoginUser) || ObjectUtils.isEmpty(rLoginUser.getData()) ){
|
||||||
|
recordLoginInfo(username, LoginStatusEnum.ACCOUNT_EMPTY);
|
||||||
|
throw new ResultException("登录用户:" + username + " 不存在");
|
||||||
|
}
|
||||||
|
LoginUser<SysUser, DataScopeEntity> loginUser = rLoginUser.getData();
|
||||||
|
SysUser sysUser = loginUser.getSysUser();
|
||||||
|
Boolean isPlatform = sysUser.getIsPlatform();
|
||||||
|
if (!isPlatform && !PassCodeEnum.PLATFORM.equals(pce)){
|
||||||
|
recordLoginInfo(username, LoginStatusEnum.ACCOUNT_TYPE_ERROR);
|
||||||
|
throw new ResultException("对不起,您的账号:" + username + " 不是平台账号");
|
||||||
|
}
|
||||||
|
Boolean status = sysUser.getStatus();
|
||||||
|
if (!status)
|
||||||
|
{
|
||||||
|
recordLoginInfo(username, LoginStatusEnum.ACCOUNT_STATUS_ERROR);
|
||||||
|
throw new ResultException("对不起,您的账号:" + username + " 已停用");
|
||||||
|
}
|
||||||
|
// 进行比较了
|
||||||
|
if (!SecurityUtils.matchesPassword(password, sysUser.getSalt(), sysUser.getPassword()))
|
||||||
|
{
|
||||||
|
recordLoginInfo(username, LoginStatusEnum.LOGIN_FAIL_STATUS);
|
||||||
|
throw new ResultException("用户不存在/密码错误");
|
||||||
|
}
|
||||||
|
recordLoginInfo(username, LoginStatusEnum.LOGIN_SUCCESS);
|
||||||
|
loginUser.setSysUser(sysUser);
|
||||||
|
return loginUser;
|
||||||
|
} else {
|
||||||
|
throw new ResultException("非法请求端");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ObjectUtils.isEmpty(rLoginUser) || ObjectUtils.isEmpty(rLoginUser.getData()) ){
|
|
||||||
recordLoginInfo(username, LoginStatusEnum.ACCOUNT_EMPTY);
|
|
||||||
throw new ResultException("登录用户:" + username + " 不存在");
|
|
||||||
}
|
|
||||||
LoginUser<SysUser, DataScopeEntity> loginUser = rLoginUser.getData();
|
|
||||||
SysUser sysUser = loginUser.getSysUser();
|
|
||||||
Boolean status = sysUser.getStatus();
|
|
||||||
if (!status)
|
|
||||||
{
|
|
||||||
recordLoginInfo(username, LoginStatusEnum.ACCOUNT_STATUS_ERROR);
|
|
||||||
throw new ResultException("对不起,您的账号:" + username + " 已停用");
|
|
||||||
}
|
|
||||||
// 进行比较了
|
|
||||||
if (!SecurityUtils.matchesPassword(password, sysUser.getSalt(), sysUser.getPassword()))
|
|
||||||
{
|
|
||||||
recordLoginInfo(username, LoginStatusEnum.LOGIN_FAIL_STATUS);
|
|
||||||
throw new ResultException("用户不存在/密码错误");
|
|
||||||
}
|
|
||||||
recordLoginInfo(username, LoginStatusEnum.LOGIN_SUCCESS);
|
|
||||||
loginUser.setSysUser(sysUser);
|
|
||||||
return loginUser;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 网关鉴权
|
* 网关鉴权
|
||||||
*
|
*
|
||||||
* @author ruoyi
|
* @author ruoyi
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
|
|
@ -84,6 +84,11 @@ public class AuthFilter implements GlobalFilter, Ordered
|
||||||
}
|
}
|
||||||
String userid = JwtUtils.getUserId(claims);
|
String userid = JwtUtils.getUserId(claims);
|
||||||
String username = JwtUtils.getUserName(claims);
|
String username = JwtUtils.getUserName(claims);
|
||||||
|
// appCode 用于区分 小程序,app以及平台请求, 应当不同的请求有不同的code, 根据code 判断是否允许创建
|
||||||
|
String appCode = JwtUtils.getValue(claims, SecurityConstants.APP_CODE);
|
||||||
|
// todo 此处应该根据appCode 判断url 是否允许
|
||||||
|
log.info("appCode {}", appCode);
|
||||||
|
|
||||||
if (StringUtils.isEmpty(userid) || StringUtils.isEmpty(username))
|
if (StringUtils.isEmpty(userid) || StringUtils.isEmpty(username))
|
||||||
{
|
{
|
||||||
return unauthorizedResponse(exchange, "令牌验证失败");
|
return unauthorizedResponse(exchange, "令牌验证失败");
|
||||||
|
|
@ -93,6 +98,7 @@ public class AuthFilter implements GlobalFilter, Ordered
|
||||||
addHeader(mutate, SecurityConstants.USER_KEY, userkey);
|
addHeader(mutate, SecurityConstants.USER_KEY, userkey);
|
||||||
addHeader(mutate, SecurityConstants.DETAILS_USER_ID, userid);
|
addHeader(mutate, SecurityConstants.DETAILS_USER_ID, userid);
|
||||||
addHeader(mutate, SecurityConstants.DETAILS_USERNAME, username);
|
addHeader(mutate, SecurityConstants.DETAILS_USERNAME, username);
|
||||||
|
addHeader(mutate, SecurityConstants.APP_CODE, appCode);
|
||||||
// 内部请求来源参数清除
|
// 内部请求来源参数清除
|
||||||
removeHeader(mutate);
|
removeHeader(mutate);
|
||||||
|
|
||||||
|
|
@ -162,4 +168,4 @@ public class AuthFilter implements GlobalFilter, Ordered
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ public enum LoginStatusEnum implements IEnum<Integer> {
|
||||||
ACCOUNT_EMPTY(3, "登录用户不存在"),
|
ACCOUNT_EMPTY(3, "登录用户不存在"),
|
||||||
ACCOUNT_STATUS_ERROR(4, "用户已停用,请联系管理员"),
|
ACCOUNT_STATUS_ERROR(4, "用户已停用,请联系管理员"),
|
||||||
ACCOUNT_PASS_ERROR(5, "用户密码错误"),
|
ACCOUNT_PASS_ERROR(5, "用户密码错误"),
|
||||||
|
ACCOUNT_TYPE_ERROR(7, "非平台账号登录"),
|
||||||
;
|
;
|
||||||
|
|
||||||
@JsonValue
|
@JsonValue
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
*
|
*
|
||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @author author
|
* @author author
|
||||||
|
|
@ -88,9 +88,10 @@ public class SysUser extends BaseEntity {
|
||||||
*/
|
*/
|
||||||
@TableField(updateStrategy = FieldStrategy.NOT_NULL)
|
@TableField(updateStrategy = FieldStrategy.NOT_NULL)
|
||||||
private String updateBy;
|
private String updateBy;
|
||||||
|
/**
|
||||||
|
* 是否可以登录平台, true 可以, false 不可以, 默认true
|
||||||
private String deptName;
|
*/
|
||||||
|
private Boolean isPlatform;
|
||||||
|
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private SysDept dept;
|
private SysDept dept;
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
<result property="nickName" column="nick_name"/>
|
<result property="nickName" column="nick_name"/>
|
||||||
<result property="gender" column="gender"/>
|
<result property="gender" column="gender"/>
|
||||||
<result property="avatar" column="avatar"/>
|
<result property="avatar" column="avatar"/>
|
||||||
|
<result property="isPlatform" column="is_platform"/>
|
||||||
<association property="dept" resultMap="deptResult"/>
|
<association property="dept" resultMap="deptResult"/>
|
||||||
<collection property="roles" javaType="java.util.List" resultMap="RoleResult"/>
|
<collection property="roles" javaType="java.util.List" resultMap="RoleResult"/>
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
@ -41,7 +42,7 @@
|
||||||
|
|
||||||
<sql id="selectUserVo">
|
<sql id="selectUserVo">
|
||||||
select u.user_id, u.dept_id, u.username, u.password, u.status, u.del_state, u.create_by, u.create_time,u.update_time,u.salt,
|
select u.user_id, u.dept_id, u.username, u.password, u.status, u.del_state, u.create_by, u.create_time,u.update_time,u.salt,
|
||||||
u.phone,u.nick_name,u.gender,u.avatar,u.email,
|
u.phone,u.nick_name,u.gender,u.avatar,u.email, u.is_platform,
|
||||||
d.parent_dept_id, d.ancestors, d.dept_name, d.order_num as dept_order_num,d.status as dept_status,
|
d.parent_dept_id, d.ancestors, d.dept_name, d.order_num as dept_order_num,d.status as dept_status,
|
||||||
r.role_id, r.role_name, r.role_key,r.order_num as role_order_num, r.data_scope, r.status as role_status
|
r.role_id, r.role_name, r.role_key,r.order_num as role_order_num, r.data_scope, r.status as role_status
|
||||||
from sys_user u
|
from sys_user u
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue