Commit 85e38885 by tangyi

重构账号模块

parent 131f4c8e
Version v3.0.0 (2019-7-4)
--------------------------
改进:
* 重构账号模块,将账号表拆分成用户基本信息表,用户授权表
* 基本字段create_date、modify_date改为timestamp类型
Version v3.0.0 (2019-7-2) Version v3.0.0 (2019-7-2)
-------------------------- --------------------------
...@@ -6,7 +14,6 @@ Version v3.0.0 (2019-7-2) ...@@ -6,7 +14,6 @@ Version v3.0.0 (2019-7-2)
* 优化swagger ui配置,增加租户标识请求头 * 优化swagger ui配置,增加租户标识请求头
* 完善手机号登录 * 完善手机号登录
Version v3.0.0 (2019-6-23) Version v3.0.0 (2019-6-23)
-------------------------- --------------------------
......
...@@ -11,7 +11,7 @@ public class CommonConstant { ...@@ -11,7 +11,7 @@ public class CommonConstant {
/** /**
* 正常 * 正常
*/ */
public static final String STATUS_NORMAL = "0"; public static final Integer STATUS_NORMAL = 0;
/** /**
* 异常 * 异常
......
...@@ -17,8 +17,7 @@ public class Log extends BaseEntity<Log> { ...@@ -17,8 +17,7 @@ public class Log extends BaseEntity<Log> {
/** /**
* 日志类型 * 日志类型
*/ */
@NotBlank(message = "日志类型不能为空") private Integer type;
private String type;
/** /**
* 日志标题 * 日志标题
......
...@@ -10,6 +10,7 @@ import org.apache.commons.lang.StringUtils; ...@@ -10,6 +10,7 @@ import org.apache.commons.lang.StringUtils;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Date;
/** /**
* Entity基类 * Entity基类
...@@ -33,7 +34,7 @@ public class BaseEntity<T> implements Serializable { ...@@ -33,7 +34,7 @@ public class BaseEntity<T> implements Serializable {
/** /**
* 创建日期 * 创建日期
*/ */
protected String createDate; protected Date createDate;
/** /**
* 更新者 * 更新者
...@@ -43,7 +44,7 @@ public class BaseEntity<T> implements Serializable { ...@@ -43,7 +44,7 @@ public class BaseEntity<T> implements Serializable {
/** /**
* 更新日期 * 更新日期
*/ */
protected String modifyDate; protected Date modifyDate;
/** /**
* 删除标记 0:正常,1-删除 * 删除标记 0:正常,1-删除
...@@ -107,7 +108,7 @@ public class BaseEntity<T> implements Serializable { ...@@ -107,7 +108,7 @@ public class BaseEntity<T> implements Serializable {
* @param tenantCode 租户编号 * @param tenantCode 租户编号
*/ */
public void setCommonValue(String userCode, String applicationCode, String tenantCode) { public void setCommonValue(String userCode, String applicationCode, String tenantCode) {
String currentDate = DateUtils.localDateToString(LocalDateTime.now()); Date currentDate = DateUtils.asDate(LocalDateTime.now());
if (this.isNewRecord()) { if (this.isNewRecord()) {
this.setId(IdGen.snowflakeId()); this.setId(IdGen.snowflakeId());
this.setNewRecord(true); this.setNewRecord(true);
......
package com.github.tangyi.common.core.utils; package com.github.tangyi.common.core.utils;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.Date;
/** /**
* 日期工具类 * 日期工具类
...@@ -34,4 +38,44 @@ public class DateUtils { ...@@ -34,4 +38,44 @@ public class DateUtils {
public static String localDateMillisToString(LocalDateTime date) { public static String localDateMillisToString(LocalDateTime date) {
return date != null ? date.format(FORMATTER_MILLIS) : ""; return date != null ? date.format(FORMATTER_MILLIS) : "";
} }
/**
* LocalDate转Date
*
* @param localDate localDate
* @return Date
*/
public static Date asDate(LocalDate localDate) {
return Date.from(localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());
}
/**
* LocalDateTime转Date
*
* @param localDateTime localDateTime
* @return Date
*/
public static Date asDate(LocalDateTime localDateTime) {
return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
}
/**
* Date转LocalDate
*
* @param date date
* @return LocalDate
*/
public static LocalDate asLocalDate(Date date) {
return Instant.ofEpochMilli(date.getTime()).atZone(ZoneId.systemDefault()).toLocalDate();
}
/**
* Date转LocalDateTime
*
* @param date date
* @return LocalDateTime
*/
public static LocalDateTime asLocalDateTime(Date date) {
return Instant.ofEpochMilli(date.getTime()).atZone(ZoneId.systemDefault()).toLocalDateTime();
}
} }
...@@ -57,4 +57,18 @@ public class PageUtil { ...@@ -57,4 +57,18 @@ public class PageUtil {
PageHelper.orderBy(orderBy(sort, order)); PageHelper.orderBy(orderBy(sort, order));
return page; return page;
} }
/**
* 复制属性
*
* @param source source
* @param target target
* @author tangyi
* @date 2019/07/03 22:26:18
*/
public static void copyProperties(PageInfo<?> source, PageInfo<?> target) {
target.setTotal(source.getTotal());
target.setPageSize(source.getPageSize());
target.setPageNum(source.getPageNum());
}
} }
...@@ -10,7 +10,7 @@ import lombok.Data; ...@@ -10,7 +10,7 @@ import lombok.Data;
* @date 2018-08-25 13:58 * @date 2018-08-25 13:58
*/ */
@Data @Data
public class Role extends BaseEntity<Role> { public class RoleVo extends BaseEntity<RoleVo> {
private String roleName; private String roleName;
......
...@@ -3,6 +3,7 @@ package com.github.tangyi.common.core.vo; ...@@ -3,6 +3,7 @@ package com.github.tangyi.common.core.vo;
import com.github.tangyi.common.core.persistence.BaseEntity; import com.github.tangyi.common.core.persistence.BaseEntity;
import lombok.Data; import lombok.Data;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
...@@ -15,24 +16,24 @@ import java.util.List; ...@@ -15,24 +16,24 @@ import java.util.List;
public class UserVo extends BaseEntity<UserVo> { public class UserVo extends BaseEntity<UserVo> {
/** /**
* 姓名 * 授权类型,1:用户名密码,2:手机号,3:邮箱,4:微信,5:QQ
*/ */
private String name; private Integer identityType;
/** /**
* 用户名 * 唯一标识,如用户名、手机号
*/ */
private String username; private String identifier;
/** /**
* 密码 * 密码凭证,跟授权类型有关,如密码、第三方系统的token等
*/ */
private String password; private String credential;
/** /**
* 随机盐 * 姓名
*/ */
private String salt; private String name;
/** /**
* 电话号码 * 电话号码
...@@ -52,12 +53,12 @@ public class UserVo extends BaseEntity<UserVo> { ...@@ -52,12 +53,12 @@ public class UserVo extends BaseEntity<UserVo> {
/** /**
* 性别 * 性别
*/ */
private String sex; private Integer sex;
/** /**
* 生日 * 生日
*/ */
private String born; private Date born;
/** /**
* 部门名称 * 部门名称
...@@ -72,17 +73,17 @@ public class UserVo extends BaseEntity<UserVo> { ...@@ -72,17 +73,17 @@ public class UserVo extends BaseEntity<UserVo> {
/** /**
* 角色列表 * 角色列表
*/ */
private List<Role> roleList; private List<RoleVo> roleList;
/** /**
* 备注 * 详细描述
*/ */
private String remark; private String userDesc;
/** /**
* 状态,0-启用,1-禁用 * 状态,0-启用,1-禁用
*/ */
private String status; private Integer status;
} }
package com.github.tangyi.common.feign.config;
import feign.Feign;
import okhttp3.ConnectionPool;
import okhttp3.OkHttpClient;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.cloud.openfeign.FeignAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.concurrent.TimeUnit;
/**
* okHttp配置
*
* @author tangyi
* @date 2019/07/02 22:31
*/
@Configuration
@ConditionalOnClass(Feign.class)
@AutoConfigureBefore(FeignAutoConfiguration.class)
public class FeignOkHttpConfig {
@Bean
public OkHttpClient okHttpClient() {
return new OkHttpClient.Builder()
// 连接超时
.connectTimeout(60, TimeUnit.SECONDS)
// 读超时
.readTimeout(60, TimeUnit.SECONDS)
// 写超时
.writeTimeout(60, TimeUnit.SECONDS)
// 是否自动重连
.retryOnConnectionFailure(true)
.connectionPool(new ConnectionPool())
// 日志拦截器
//.addInterceptor(new LogInterceptor())
.build();
}
}
package com.github.tangyi.common.feign.interceptor;
import okhttp3.Interceptor;
import okhttp3.Request;
import okhttp3.Response;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
/**
* 日志拦截器
*
* @author tangyi
* @date 2019/07/02 23:00
*/
public class LogInterceptor implements Interceptor {
private static Logger logger = LoggerFactory.getLogger(LogInterceptor.class);
@Override
public Response intercept(Chain chain) throws IOException {
long t1 = System.nanoTime();
Request request = chain.request();
logger.debug(String.format("sending %s request %s%n%s", request.method(),
request.url(), request.headers()));
Response response = chain.proceed(request);
long t2 = System.nanoTime();
logger.debug(String.format("received response for %s in %.1fms%n%s", response.request().url(),
(t2 - t1) / 1e6d, response.headers()));
return response;
}
}
...@@ -2,7 +2,7 @@ server: ...@@ -2,7 +2,7 @@ server:
port: 8090 port: 8090
spring: spring:
datasource: datasource:
url: jdbc:mysql://${MYSQL_HOST:localhost}:${MYSQL_PORT:3306}/microservice-auth?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&characterEncoding=UTF-8 url: jdbc:mysql://${MYSQL_HOST:localhost}:${MYSQL_PORT:3306}/microservice-auth?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=CTT&characterEncoding=UTF-8
username: ${MYSQL_USERNAME:root} username: ${MYSQL_USERNAME:root}
password: ${MYSQL_PASSWORD:11} password: ${MYSQL_PASSWORD:11}
type: com.zaxxer.hikari.HikariDataSource type: com.zaxxer.hikari.HikariDataSource
...@@ -34,7 +34,12 @@ spring: ...@@ -34,7 +34,12 @@ spring:
zipkin: zipkin:
base-url: http://${ZIPKIN_HOST:localhost}:${ZIPKIN_PORT:9411} # 指定了Zipkin服务器的地址 base-url: http://${ZIPKIN_HOST:localhost}:${ZIPKIN_PORT:9411} # 指定了Zipkin服务器的地址
# feign相关配置
feign: feign:
httpclient:
enabled: false
okhttp:
enabled: true
hystrix: hystrix:
enabled: true enabled: true
...@@ -83,8 +88,7 @@ ignore: ...@@ -83,8 +88,7 @@ ignore:
- /actuator/** - /actuator/**
- /hystrix.sender - /hystrix.sender
- /v1/sms/** - /v1/sms/**
- /v1/user/findUserBySocial/** - /v1/user/findUserByIdentifier/**
- /v1/user/findUserByUsername/**
- /v1/tenant/findTenantByTenantCode/** - /v1/tenant/findTenantByTenantCode/**
- /v1/user/checkExist/** - /v1/user/checkExist/**
- /v1/user/updatePassword - /v1/user/updatePassword
......
...@@ -2,7 +2,7 @@ server: ...@@ -2,7 +2,7 @@ server:
port: 8098 port: 8098
spring: spring:
datasource: datasource:
url: jdbc:mysql://${MYSQL_HOST:localhost}:${MYSQL_PORT:3306}/microservice-exam?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&characterEncoding=UTF-8 url: jdbc:mysql://${MYSQL_HOST:localhost}:${MYSQL_PORT:3306}/microservice-exam?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=CTT&characterEncoding=UTF-8
username: ${MYSQL_USERNAME:root} username: ${MYSQL_USERNAME:root}
password: ${MYSQL_PASSWORD:11} password: ${MYSQL_PASSWORD:11}
type: com.zaxxer.hikari.HikariDataSource type: com.zaxxer.hikari.HikariDataSource
...@@ -73,7 +73,12 @@ pagehelper: ...@@ -73,7 +73,12 @@ pagehelper:
supportMethodsArguments: true supportMethodsArguments: true
params: count=countSql params: count=countSql
# feign相关配置
feign: feign:
httpclient:
enabled: false
okhttp:
enabled: true
hystrix: hystrix:
enabled: true enabled: true
...@@ -107,8 +112,7 @@ ignore: ...@@ -107,8 +112,7 @@ ignore:
- /actuator/** - /actuator/**
- /hystrix.sender - /hystrix.sender
- /v1/sms/** - /v1/sms/**
- /v1/user/findUserByUsername/** - /v1/user/findUserByIdentifier/**
- /v1/user/findUserBySocial/**
- /v1/tenant/findTenantByTenantCode/** - /v1/tenant/findTenantByTenantCode/**
- /v1/menu/findMenuByRole/** - /v1/menu/findMenuByRole/**
- /v1/menu/findAllMenu - /v1/menu/findAllMenu
......
...@@ -32,7 +32,12 @@ security: ...@@ -32,7 +32,12 @@ security:
encode: encode:
key: '1234567887654321' key: '1234567887654321'
# feign相关配置
feign: feign:
httpclient:
enabled: false
okhttp:
enabled: true
hystrix: hystrix:
enabled: true enabled: true
......
...@@ -8,7 +8,7 @@ spring: ...@@ -8,7 +8,7 @@ spring:
# 单次请求的文件的总大小 # 单次请求的文件的总大小
max-request-size: 100MB max-request-size: 100MB
datasource: datasource:
url: jdbc:mysql://${MYSQL_HOST:localhost}:${MYSQL_PORT:3306}/microservice-user?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&characterEncoding=UTF-8 url: jdbc:mysql://${MYSQL_HOST:localhost}:${MYSQL_PORT:3306}/microservice-user?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=CTT&characterEncoding=UTF-8
username: ${MYSQL_USERNAME:root} username: ${MYSQL_USERNAME:root}
password: ${MYSQL_PASSWORD:11} password: ${MYSQL_PASSWORD:11}
type: com.zaxxer.hikari.HikariDataSource type: com.zaxxer.hikari.HikariDataSource
...@@ -89,15 +89,21 @@ fdfs: ...@@ -89,15 +89,21 @@ fdfs:
width: 150 width: 150
height: 150 height: 150
tracker-list: #TrackerList参数,支持多个 tracker-list: #TrackerList参数,支持多个
- ${FDFS_HOST:118.25.138.130}:${FDFS_PORT:22122} - ${FDFS_HOST:192.168.0.95}:${FDFS_PORT:22122}
# 系统配置 # 系统配置
sys: sys:
fdfsHttpHost: ${ATTACHMENT_HOST:http://118.25.138.130}:${ATTACHMENT_PORT:8080} # fastDfs的HTTP配置 adminUser: ${ADMIN_USER:admin} # 管理员账号,默认是admin
fdfsHttpHost: ${ATTACHMENT_HOST:http://192.168.0.95}:${ATTACHMENT_PORT:8080} # fastDfs的HTTP配置
uploadUrl: api/user/v1/attachment/upload uploadUrl: api/user/v1/attachment/upload
defaultAvatar: https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif?imageView2/1/w/80/h/80 defaultAvatar: https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif?imageView2/1/w/80/h/80
# feign相关配置
feign: feign:
httpclient:
enabled: false
okhttp:
enabled: true
hystrix: hystrix:
enabled: true enabled: true
...@@ -132,8 +138,7 @@ ignore: ...@@ -132,8 +138,7 @@ ignore:
- /hystrix.sender - /hystrix.sender
- /v1/sms/** - /v1/sms/**
- /v1/mobile/** - /v1/mobile/**
- /v1/user/findUserByUsername/** - /v1/user/findUserByIdentifier/**
- /v1/user/findUserBySocial/**
- /v1/tenant/findTenantByTenantCode/** - /v1/tenant/findTenantByTenantCode/**
- /v1/menu/findMenuByRole/** - /v1/menu/findMenuByRole/**
- /v1/menu/findAllMenu - /v1/menu/findAllMenu
......
...@@ -53,6 +53,19 @@ services: ...@@ -53,6 +53,19 @@ services:
- net - net
# --------------------------- # ---------------------------
# 消息服务
# ---------------------------
msc-service:
image: registry.cn-hangzhou.aliyuncs.com/spring-microservice-exam/msc-service:3.0.0
container_name: msc-service
env_file: docker-compose.env # 从文件中获取配置
restart: always
ports:
- "9000:9000"
networks:
- net
# ---------------------------
# 监控服务 # 监控服务
# --------------------------- # ---------------------------
monitor-service: monitor-service:
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
Target Server Version : 50617 Target Server Version : 50617
File Encoding : 65001 File Encoding : 65001
Date: 09/06/2019 16:45:45 Date: 04/07/2019 14:36:21
*/ */
SET NAMES utf8mb4; SET NAMES utf8mb4;
...@@ -36,10 +36,10 @@ CREATE TABLE `oauth_client_details` ( ...@@ -36,10 +36,10 @@ CREATE TABLE `oauth_client_details` (
`additional_information` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `additional_information` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`autoapprove` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `autoapprove` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`creator` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人', `creator` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人',
`create_date` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建时间', `create_date` timestamp(0) NULL DEFAULT NULL COMMENT '创建时间',
`modifier` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '修改人', `modifier` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '修改人',
`modify_date` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '修改时间', `modify_date` timestamp(0) NULL DEFAULT NULL COMMENT '修改时间',
`del_flag` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '删除标记', `del_flag` int(20) NULL DEFAULT NULL COMMENT '删除标记',
`application_code` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '系统编号', `application_code` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '系统编号',
`tenant_code` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '租户编号', `tenant_code` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '租户编号',
PRIMARY KEY (`id`) USING BTREE PRIMARY KEY (`id`) USING BTREE
...@@ -48,6 +48,6 @@ CREATE TABLE `oauth_client_details` ( ...@@ -48,6 +48,6 @@ CREATE TABLE `oauth_client_details` (
-- ---------------------------- -- ----------------------------
-- Records of oauth_client_details -- Records of oauth_client_details
-- ---------------------------- -- ----------------------------
INSERT INTO `oauth_client_details` VALUES ('471037a0c1be4df99b40e3f84141cc56', 'web_app', NULL, 'spring-microservice-exam-secret', '$2a$10$IWLD8r7e0rKMW.ZhGsGCUO./MZUNDKudIswSToa9puXJwty.h59.u', 'read,write', 'password,authorization_code,refresh_token,implicit', NULL, NULL, '3600', '21600', NULL, NULL, 'admin', '2019-03-30 23:43:07', 'admin', '2019-06-07 21:48:31', '0', 'EXAM', NULL); INSERT INTO `oauth_client_details` VALUES ('471037a0c1be4df99b40e3f84141cc56', 'web_app', NULL, 'spring-microservice-exam-secret', '$2a$10$IWLD8r7e0rKMW.ZhGsGCUO./MZUNDKudIswSToa9puXJwty.h59.u', 'read,write', 'password,authorization_code,refresh_token,implicit', NULL, NULL, '3600', '21600', NULL, NULL, 'admin', '2019-03-30 23:43:07', 'admin', '2019-07-04 10:52:15', 0, 'EXAM', NULL);
SET FOREIGN_KEY_CHECKS = 1; SET FOREIGN_KEY_CHECKS = 1;
...@@ -13,6 +13,7 @@ AUTH_SERVICE=$BASE_IMAGE_NAME/auth-service:$BSEE_IMAGE_TAG ...@@ -13,6 +13,7 @@ AUTH_SERVICE=$BASE_IMAGE_NAME/auth-service:$BSEE_IMAGE_TAG
USER_SERVICE=$BASE_IMAGE_NAME/user-service:$BSEE_IMAGE_TAG USER_SERVICE=$BASE_IMAGE_NAME/user-service:$BSEE_IMAGE_TAG
EXAM_SERVICE=$BASE_IMAGE_NAME/exam-service:$BSEE_IMAGE_TAG EXAM_SERVICE=$BASE_IMAGE_NAME/exam-service:$BSEE_IMAGE_TAG
GATEWAY_SERVICE=$BASE_IMAGE_NAME/gateway-service:$BSEE_IMAGE_TAG GATEWAY_SERVICE=$BASE_IMAGE_NAME/gateway-service:$BSEE_IMAGE_TAG
MSC_SERVICE=$BASE_IMAGE_NAME/msc-service:$BSEE_IMAGE_TAG
MONITOR_SERVICE=$BASE_IMAGE_NAME/monitor-service:$BSEE_IMAGE_TAG MONITOR_SERVICE=$BASE_IMAGE_NAME/monitor-service:$BSEE_IMAGE_TAG
UI_SERVICE=$BASE_IMAGE_NAME/spring-microservice-exam-ui:$BSEE_IMAGE_TAG UI_SERVICE=$BASE_IMAGE_NAME/spring-microservice-exam-ui:$BSEE_IMAGE_TAG
WEB_SERVICE=$BASE_IMAGE_NAME/spring-microservice-exam-web:$BSEE_IMAGE_TAG WEB_SERVICE=$BASE_IMAGE_NAME/spring-microservice-exam-web:$BSEE_IMAGE_TAG
...@@ -33,6 +34,7 @@ case "$1" in ...@@ -33,6 +34,7 @@ case "$1" in
time docker pull $USER_SERVICE time docker pull $USER_SERVICE
time docker pull $EXAM_SERVICE time docker pull $EXAM_SERVICE
time docker pull $GATEWAY_SERVICE time docker pull $GATEWAY_SERVICE
time docker pull $MSC_SERVICE
time docker pull $MONITOR_SERVICE time docker pull $MONITOR_SERVICE
echo "* 开始拉取前端镜像..." echo "* 开始拉取前端镜像..."
time docker pull $UI_SERVICE time docker pull $UI_SERVICE
...@@ -61,6 +63,7 @@ case "$1" in ...@@ -61,6 +63,7 @@ case "$1" in
time docker pull $USER_SERVICE time docker pull $USER_SERVICE
time docker pull $EXAM_SERVICE time docker pull $EXAM_SERVICE
time docker pull $GATEWAY_SERVICE time docker pull $GATEWAY_SERVICE
time docker pull $MSC_SERVICE
time docker pull $MONITOR_SERVICE time docker pull $MONITOR_SERVICE
echo "* 开始拉取前端镜像..." echo "* 开始拉取前端镜像..."
time docker pull $UI_SERVICE time docker pull $UI_SERVICE
......
...@@ -5,6 +5,14 @@ ...@@ -5,6 +5,14 @@
#### 考试服务数据库PDM #### 考试服务数据库PDM
![image](产品设计/数据库PDM.jpg) ![image](产品设计/数据库PDM-考试服务.png)
#### 用户服务数据库PDM
![image](产品设计/数据库PDM-用户服务.png)
#### 授权服务数据库PDM
![image](产品设计/数据库PDM-授权服务.png)
如有问题欢迎指出! 如有问题欢迎指出!
\ No newline at end of file
...@@ -26,6 +26,7 @@ import java.nio.charset.StandardCharsets; ...@@ -26,6 +26,7 @@ import java.nio.charset.StandardCharsets;
/** /**
* 解密过滤器 * 解密过滤器
* 对外密码字段的名称是credential,在这里解密,转换成password
* *
* @author tangyi * @author tangyi
* @date 2019/3/18 11:30 * @date 2019/3/18 11:30
...@@ -39,6 +40,10 @@ public class DecodePasswordFilter implements GlobalFilter, Ordered { ...@@ -39,6 +40,10 @@ public class DecodePasswordFilter implements GlobalFilter, Ordered {
private static final String DEFAULT_CIPHER_ALGORITHM = "AES/CBC/NOPadding"; private static final String DEFAULT_CIPHER_ALGORITHM = "AES/CBC/NOPadding";
private static final String CREDENTIAL = "credential";
private static final String PASSWORD = "password";
/** /**
* 约定的key * 约定的key
*/ */
...@@ -57,21 +62,26 @@ public class DecodePasswordFilter implements GlobalFilter, Ordered { ...@@ -57,21 +62,26 @@ public class DecodePasswordFilter implements GlobalFilter, Ordered {
String grantType = request.getQueryParams().getFirst(GatewayConstant.GRANT_TYPE); String grantType = request.getQueryParams().getFirst(GatewayConstant.GRANT_TYPE);
// 授权类型为密码模式则解密 // 授权类型为密码模式则解密
if (CommonConstant.GRANT_TYPE_PASSWORD.equals(grantType) || StrUtil.containsAnyIgnoreCase(uri.getPath(), GatewayConstant.REGISTER)) { if (CommonConstant.GRANT_TYPE_PASSWORD.equals(grantType) || StrUtil.containsAnyIgnoreCase(uri.getPath(), GatewayConstant.REGISTER)) {
String password = request.getQueryParams().getFirst(CommonConstant.GRANT_TYPE_PASSWORD); String credential = request.getQueryParams().getFirst(CREDENTIAL);
if (password == null || password.isEmpty()) { if (credential == null || credential.isEmpty()) {
log.info("password is empty..."); log.info("credential is empty...");
exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED); exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);
return exchange.getResponse().setComplete(); return exchange.getResponse().setComplete();
} }
try { try {
// 开始解密 // 开始解密
password = decryptAES(password, key); credential = decryptAES(credential, key);
password = password.trim(); credential = credential.trim();
log.debug("password decrypt success:{}", password); log.debug("credential decrypt success:{}", credential);
} catch (Exception e) { } catch (Exception e) {
log.error("password decrypt fail:{}", password); log.error("credential decrypt fail:{}", credential);
} }
URI newUri = UriComponentsBuilder.fromUri(uri).replaceQueryParam(CommonConstant.GRANT_TYPE_PASSWORD, password).build(true).toUri(); URI newUri = UriComponentsBuilder.fromUri(uri)
// 替换password字段
.replaceQueryParam(PASSWORD, credential)
// 替换credential字段
.replaceQueryParam(CREDENTIAL, credential)
.build(true).toUri();
request = request.mutate().uri(newUri).build(); request = request.mutate().uri(newUri).build();
return chain.filter(exchange.mutate().request(request).build()); return chain.filter(exchange.mutate().request(request).build());
} }
......
...@@ -48,7 +48,7 @@ public class CustomAuthenticationSuccessHandler { ...@@ -48,7 +48,7 @@ public class CustomAuthenticationSuccessHandler {
Log logInfo = new Log(); Log logInfo = new Log();
logInfo.setCommonValue(username, SysUtil.getSysCode(), tenantCode); logInfo.setCommonValue(username, SysUtil.getSysCode(), tenantCode);
logInfo.setTitle("用户登录"); logInfo.setTitle("用户登录");
logInfo.setType(CommonConstant.STATUS_NORMAL); //logInfo.setType(CommonConstant.STATUS_NORMAL);
// 获取ip、浏览器信息 // 获取ip、浏览器信息
this.initLogInfo(logInfo, event.getSource()); this.initLogInfo(logInfo, event.getSource());
logInfo.setServiceId(ServiceConstant.AUTH_SERVICE); logInfo.setServiceId(ServiceConstant.AUTH_SERVICE);
......
...@@ -4,7 +4,7 @@ import com.github.tangyi.auth.model.CustomUserDetails; ...@@ -4,7 +4,7 @@ import com.github.tangyi.auth.model.CustomUserDetails;
import com.github.tangyi.auth.properties.SysProperties; import com.github.tangyi.auth.properties.SysProperties;
import com.github.tangyi.common.core.constant.CommonConstant; import com.github.tangyi.common.core.constant.CommonConstant;
import com.github.tangyi.common.core.exceptions.TenantNotFoundException; import com.github.tangyi.common.core.exceptions.TenantNotFoundException;
import com.github.tangyi.common.core.vo.Role; import com.github.tangyi.common.core.vo.RoleVo;
import com.github.tangyi.common.core.vo.UserVo; import com.github.tangyi.common.core.vo.UserVo;
import com.github.tangyi.common.security.core.CustomUserDetailsService; import com.github.tangyi.common.security.core.CustomUserDetailsService;
import com.github.tangyi.common.security.core.GrantedAuthorityImpl; import com.github.tangyi.common.security.core.GrantedAuthorityImpl;
...@@ -12,6 +12,7 @@ import com.github.tangyi.user.api.constant.MenuConstant; ...@@ -12,6 +12,7 @@ import com.github.tangyi.user.api.constant.MenuConstant;
import com.github.tangyi.user.api.feign.UserServiceClient; import com.github.tangyi.user.api.feign.UserServiceClient;
import com.github.tangyi.user.api.module.Menu; import com.github.tangyi.user.api.module.Menu;
import com.github.tangyi.user.api.module.Tenant; import com.github.tangyi.user.api.module.Tenant;
import com.google.common.collect.Lists;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
...@@ -24,7 +25,6 @@ import java.util.HashSet; ...@@ -24,7 +25,6 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream;
/** /**
* 从数据库获取用户信息 * 从数据库获取用户信息
...@@ -50,10 +50,10 @@ public class CustomUserDetailsServiceImpl implements CustomUserDetailsService { ...@@ -50,10 +50,10 @@ public class CustomUserDetailsServiceImpl implements CustomUserDetailsService {
@Override @Override
public UserDetails loadUserByUsernameAndTenantCode(String username, String tenantCode) throws UsernameNotFoundException, TenantNotFoundException { public UserDetails loadUserByUsernameAndTenantCode(String username, String tenantCode) throws UsernameNotFoundException, TenantNotFoundException {
Tenant tenant = this.validateTenantCode(tenantCode); Tenant tenant = this.validateTenantCode(tenantCode);
UserVo userVo = userServiceClient.findUserByUsername(username, tenantCode); UserVo userVo = userServiceClient.findUserByIdentifier(username, tenantCode);
if (userVo == null) if (userVo == null)
throw new UsernameNotFoundException("用户名不存在."); throw new UsernameNotFoundException("用户名不存在.");
return new CustomUserDetails(username, userVo.getPassword(), CommonConstant.STATUS_NORMAL.equals(userVo.getStatus()), getAuthority(userVo), userVo.getTenantCode()); return new CustomUserDetails(username, userVo.getCredential(), CommonConstant.STATUS_NORMAL.equals(userVo.getStatus()), getAuthority(userVo), userVo.getTenantCode());
} }
/** /**
...@@ -71,7 +71,7 @@ public class CustomUserDetailsServiceImpl implements CustomUserDetailsService { ...@@ -71,7 +71,7 @@ public class CustomUserDetailsServiceImpl implements CustomUserDetailsService {
UserVo userVo = userServiceClient.findUserBySocial(social, tenantCode); UserVo userVo = userServiceClient.findUserBySocial(social, tenantCode);
if (userVo == null) if (userVo == null)
throw new UsernameNotFoundException("用户手机号未注册."); throw new UsernameNotFoundException("用户手机号未注册.");
return new CustomUserDetails(social, userVo.getPassword(), CommonConstant.STATUS_NORMAL.equals(userVo.getStatus()), getAuthority(userVo), userVo.getTenantCode()); return new CustomUserDetails(social, userVo.getCredential(), CommonConstant.STATUS_NORMAL.equals(userVo.getStatus()), getAuthority(userVo), userVo.getTenantCode());
} }
/** /**
...@@ -101,28 +101,32 @@ public class CustomUserDetailsServiceImpl implements CustomUserDetailsService { ...@@ -101,28 +101,32 @@ public class CustomUserDetailsServiceImpl implements CustomUserDetailsService {
private Set<GrantedAuthority> getAuthority(UserVo userVo) { private Set<GrantedAuthority> getAuthority(UserVo userVo) {
// 权限集合 // 权限集合
Set<GrantedAuthority> authorities = new HashSet<>(); Set<GrantedAuthority> authorities = new HashSet<>();
// 角色 // 根据角色查找菜单权限
List<Role> roleList = userVo.getRoleList(); List<Menu> menus = Lists.newArrayList();
if (CollectionUtils.isNotEmpty(roleList)) { // 判断是否是管理员,是则查找所有菜单权限
roleList.forEach(role -> { if (userVo.getIdentifier().equals(sysProperties.getAdminUser())) {
// 权限如果前缀是ROLE_,security就会认为这是个角色信息,而不是权限,例如ROLE_ADMIN就是ADMIN角色,MENU:ADD就是MENU:ADD权限 // 查找所有菜单权限,因为角色一般是一个,这里只会执行一次
authorities.add(new GrantedAuthorityImpl(role.getRoleCode())); menus = userServiceClient.findAllMenu(userVo.getTenantCode());
// 根据角色查找菜单权限 } else {
Stream<Menu> menuStream; // 根据角色查询菜单权限
// 判断是否是管理员,是则查找所有菜单权限 List<RoleVo> roleList = userVo.getRoleList();
if (userVo.getUsername().equals(sysProperties.getAdminUser())) { if (CollectionUtils.isNotEmpty(roleList)) {
// 查找所有菜单权限,因为角色一般是一个,这里只会执行一次 for (RoleVo role : roleList) {
menuStream = userServiceClient.findAllMenu(userVo.getTenantCode()).stream();
} else {
// 根据角色查找菜单权限 // 根据角色查找菜单权限
menuStream = userServiceClient.findMenuByRole(role.getRoleCode(), userVo.getTenantCode()).stream(); List<Menu> roleMenus = userServiceClient.findMenuByRole(role.getRoleCode(), userVo.getTenantCode());
if (CollectionUtils.isNotEmpty(roleMenus))
menus.addAll(roleMenus);
// 权限如果前缀是ROLE_,security就会认为这是个角色信息,而不是权限,例如ROLE_ADMIN就是ADMIN角色,MENU:ADD就是MENU:ADD权限
authorities.add(new GrantedAuthorityImpl(role.getRoleCode()));
} }
// 菜单权限 }
List<GrantedAuthority> menus = menuStream }
.filter(menu -> MenuConstant.MENU_TYPE_PERMISSION.equals(menu.getType())) if (CollectionUtils.isNotEmpty(menus)) {
.map(menu -> new GrantedAuthorityImpl(menu.getPermission())).collect(Collectors.toList()); // 菜单权限
authorities.addAll(menus); List<GrantedAuthority> authorityList = menus.stream()
}); .filter(menu -> MenuConstant.MENU_TYPE_PERMISSION.equals(menu.getType()))
.map(menu -> new GrantedAuthorityImpl(menu.getPermission())).collect(Collectors.toList());
authorities.addAll(authorityList);
} }
return authorities; return authorities;
} }
......
...@@ -33,7 +33,7 @@ public class ExaminationInitConfig { ...@@ -33,7 +33,7 @@ public class ExaminationInitConfig {
log.info("开始加载考试信息."); log.info("开始加载考试信息.");
// 查询已发布的考试 // 查询已发布的考试
Examination examination = new Examination(); Examination examination = new Examination();
examination.setStatus(CommonConstant.STATUS_NORMAL); //examination.setStatus(CommonConstant.STATUS_NORMAL);
Stream<Examination> examinationStream = examinationService.findList(examination).stream(); Stream<Examination> examinationStream = examinationService.findList(examination).stream();
if (Optional.ofNullable(examinationStream).isPresent()) if (Optional.ofNullable(examinationStream).isPresent())
examinationStream.forEach(tempExamination -> redisTemplate.opsForValue().set("examination::" + tempExamination.getId(), tempExamination)); examinationStream.forEach(tempExamination -> redisTemplate.opsForValue().set("examination::" + tempExamination.getId(), tempExamination));
......
...@@ -293,7 +293,7 @@ public class ExamRecordController extends BaseController { ...@@ -293,7 +293,7 @@ public class ExamRecordController extends BaseController {
ExaminationRecordDto recordDto = new ExaminationRecordDto(); ExaminationRecordDto recordDto = new ExaminationRecordDto();
recordDto.setId(tempExamRecord.getId()); recordDto.setId(tempExamRecord.getId());
recordDto.setExaminationName(examRecordExamination.getExaminationName()); recordDto.setExaminationName(examRecordExamination.getExaminationName());
recordDto.setExamTime(tempExamRecord.getCreateDate()); //recordDto.setExamTime(tempExamRecord.getCreateDate());
recordDto.setScore(tempExamRecord.getScore()); recordDto.setScore(tempExamRecord.getScore());
recordDto.setUserId(tempExamRecord.getUserId()); recordDto.setUserId(tempExamRecord.getUserId());
recordDto.setCorrectNumber(tempExamRecord.getCorrectNumber()); recordDto.setCorrectNumber(tempExamRecord.getCorrectNumber());
......
...@@ -466,12 +466,12 @@ public class AnswerService extends CrudService<AnswerMapper, Answer> { ...@@ -466,12 +466,12 @@ public class AnswerService extends CrudService<AnswerMapper, Answer> {
answer.setExamRecordId(examRecord.getId()); answer.setExamRecordId(examRecord.getId());
List<Answer> answers = this.findList(answer); List<Answer> answers = this.findList(answer);
if (CollectionUtils.isNotEmpty(answers)) { if (CollectionUtils.isNotEmpty(answers)) {
Long correctNumber = answers.stream().filter(tempAnswer -> tempAnswer.getAnswerType().equals(AnswerConstant.RIGHT)).count(); long correctNumber = answers.stream().filter(tempAnswer -> tempAnswer.getAnswerType().equals(AnswerConstant.RIGHT)).count();
// 总分 // 总分
Integer score = answers.stream().mapToInt(Answer::getScore).sum(); Integer score = answers.stream().mapToInt(Answer::getScore).sum();
examRecord.setScore(score); examRecord.setScore(score);
examRecord.setSubmitStatus(ExamExaminationRecordConstant.STATUS_CALCULATED); examRecord.setSubmitStatus(ExamExaminationRecordConstant.STATUS_CALCULATED);
examRecord.setCorrectNumber(correctNumber.intValue()); examRecord.setCorrectNumber((int) correctNumber);
examRecord.setInCorrectNumber(answers.size() - examRecord.getCorrectNumber()); examRecord.setInCorrectNumber(answers.size() - examRecord.getCorrectNumber());
examRecordService.update(examRecord); examRecordService.update(examRecord);
log.debug("批改完成,用户名:{},考试ID:{},总分:{},耗时:{}ms", examRecord.getCreator(), examRecord.getExaminationId(), score, System.currentTimeMillis() - start); log.debug("批改完成,用户名:{},考试ID:{},总分:{},耗时:{}ms", examRecord.getCreator(), examRecord.getExaminationId(), score, System.currentTimeMillis() - start);
......
...@@ -11,9 +11,9 @@ ...@@ -11,9 +11,9 @@
<result column="score" property="score"/> <result column="score" property="score"/>
<result column="mark_status" property="markStatus"/> <result column="mark_status" property="markStatus"/>
<result column="creator" property="creator"/> <result column="creator" property="creator"/>
<result column="create_date" property="createDate"/> <result column="create_date" property="createDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="modifier" property="modifier"/> <result column="modifier" property="modifier"/>
<result column="modify_date" property="modifyDate"/> <result column="modify_date" property="modifyDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="del_flag" property="delFlag"/> <result column="del_flag" property="delFlag"/>
<result column="application_code" property="applicationCode"/> <result column="application_code" property="applicationCode"/>
<result column="tenant_code" property="tenantCode"/> <result column="tenant_code" property="tenantCode"/>
...@@ -109,9 +109,9 @@ ...@@ -109,9 +109,9 @@
#{score}, #{score},
#{markStatus}, #{markStatus},
#{creator}, #{creator},
#{createDate}, #{createDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{modifier}, #{modifier},
#{modifyDate}, #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{delFlag}, #{delFlag},
#{applicationCode}, #{applicationCode},
#{tenantCode} #{tenantCode}
...@@ -145,7 +145,7 @@ ...@@ -145,7 +145,7 @@
del_flag = #{delFlag}, del_flag = #{delFlag},
</if> </if>
modifier = #{modifier}, modifier = #{modifier},
modify_date = #{modifyDate} modify_date = #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date}
WHERE id = #{id} WHERE id = #{id}
</update> </update>
......
...@@ -9,9 +9,9 @@ ...@@ -9,9 +9,9 @@
<result column="teacher" property="teacher"/> <result column="teacher" property="teacher"/>
<result column="course_description" property="courseDescription"/> <result column="course_description" property="courseDescription"/>
<result column="creator" property="creator"/> <result column="creator" property="creator"/>
<result column="create_date" property="createDate"/> <result column="create_date" property="createDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="modifier" property="modifier"/> <result column="modifier" property="modifier"/>
<result column="modify_date" property="modifyDate"/> <result column="modify_date" property="modifyDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="del_flag" property="delFlag"/> <result column="del_flag" property="delFlag"/>
<result column="application_code" property="applicationCode"/> <result column="application_code" property="applicationCode"/>
<result column="tenant_code" property="tenantCode"/> <result column="tenant_code" property="tenantCode"/>
...@@ -91,9 +91,9 @@ ...@@ -91,9 +91,9 @@
#{teacher}, #{teacher},
#{courseDescription}, #{courseDescription},
#{creator}, #{creator},
#{createDate}, #{createDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{modifier}, #{modifier},
#{modifyDate}, #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{delFlag}, #{delFlag},
#{applicationCode}, #{applicationCode},
#{tenantCode} #{tenantCode}
...@@ -121,7 +121,7 @@ ...@@ -121,7 +121,7 @@
del_flag = #{delFlag}, del_flag = #{delFlag},
</if> </if>
modifier = #{modifier}, modifier = #{modifier},
modify_date = #{modifyDate} modify_date = #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date}
WHERE id = #{id} WHERE id = #{id}
</update> </update>
......
...@@ -5,16 +5,16 @@ ...@@ -5,16 +5,16 @@
<id column="id" property="id"/> <id column="id" property="id"/>
<result column="user_id" property="userId"/> <result column="user_id" property="userId"/>
<result column="examination_id" property="examinationId"/> <result column="examination_id" property="examinationId"/>
<result column="start_time" property="startTime"/> <result column="start_time" property="startTime" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="end_time" property="endTime"/> <result column="end_time" property="endTime" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="score" property="score"/> <result column="score" property="score"/>
<result column="correct_number" property="correctNumber"/> <result column="correct_number" property="correctNumber"/>
<result column="incorrect_number" property="inCorrectNumber"/> <result column="incorrect_number" property="inCorrectNumber"/>
<result column="submit_status" property="submitStatus"/> <result column="submit_status" property="submitStatus"/>
<result column="creator" property="creator"/> <result column="creator" property="creator"/>
<result column="create_date" property="createDate"/> <result column="create_date" property="createDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="modifier" property="modifier"/> <result column="modifier" property="modifier"/>
<result column="modify_date" property="modifyDate"/> <result column="modify_date" property="modifyDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="del_flag" property="delFlag"/> <result column="del_flag" property="delFlag"/>
<result column="application_code" property="applicationCode"/> <result column="application_code" property="applicationCode"/>
<result column="tenant_code" property="tenantCode"/> <result column="tenant_code" property="tenantCode"/>
...@@ -107,16 +107,16 @@ ...@@ -107,16 +107,16 @@
#{id}, #{id},
#{userId}, #{userId},
#{examinationId}, #{examinationId},
#{startTime}, #{startTime, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{endTime}, #{endTime, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{score}, #{score},
#{correctNumber}, #{correctNumber},
#{inCorrectNumber}, #{inCorrectNumber},
#{submitStatus}, #{submitStatus},
#{creator}, #{creator},
#{createDate}, #{createDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{modifier}, #{modifier},
#{modifyDate}, #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{delFlag}, #{delFlag},
#{applicationCode}, #{applicationCode},
#{tenantCode} #{tenantCode}
...@@ -132,10 +132,10 @@ ...@@ -132,10 +132,10 @@
examination_id = #{examinationId}, examination_id = #{examinationId},
</if> </if>
<if test="startTime != null"> <if test="startTime != null">
start_time = #{startTime}, start_time = #{startTime, jdbcType=TIMESTAMP, javaType=java.util.Date},
</if> </if>
<if test="endTime != null"> <if test="endTime != null">
end_time = #{endTime}, end_time = #{endTime, jdbcType=TIMESTAMP, javaType=java.util.Date},
</if> </if>
<if test="score != null"> <if test="score != null">
score = #{score}, score = #{score},
...@@ -153,7 +153,7 @@ ...@@ -153,7 +153,7 @@
del_flag = #{delFlag}, del_flag = #{delFlag},
</if> </if>
modifier = #{modifier}, modifier = #{modifier},
modify_date = #{modifyDate} modify_date = #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date}
WHERE id = #{id} WHERE id = #{id}
</update> </update>
......
...@@ -6,17 +6,17 @@ ...@@ -6,17 +6,17 @@
<result column="examination_name" property="examinationName"/> <result column="examination_name" property="examinationName"/>
<result column="type" property="type"/> <result column="type" property="type"/>
<result column="attention" property="attention"/> <result column="attention" property="attention"/>
<result column="start_time" property="startTime"/> <result column="start_time" property="startTime" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="end_time" property="endTime"/> <result column="end_time" property="endTime" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="total_score" property="totalScore"/> <result column="total_score" property="totalScore"/>
<result column="status" property="status"/> <result column="status" property="status"/>
<result column="avatar_id" property="avatarId"/> <result column="avatar_id" property="avatarId"/>
<result column="course_id" property="courseId"/> <result column="course_id" property="courseId"/>
<result column="remark" property="remark"/> <result column="remark" property="remark"/>
<result column="creator" property="creator"/> <result column="creator" property="creator"/>
<result column="create_date" property="createDate"/> <result column="create_date" property="createDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="modifier" property="modifier"/> <result column="modifier" property="modifier"/>
<result column="modify_date" property="modifyDate"/> <result column="modify_date" property="modifyDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="del_flag" property="delFlag"/> <result column="del_flag" property="delFlag"/>
<result column="application_code" property="applicationCode"/> <result column="application_code" property="applicationCode"/>
<result column="tenant_code" property="tenantCode"/> <result column="tenant_code" property="tenantCode"/>
...@@ -114,17 +114,17 @@ ...@@ -114,17 +114,17 @@
#{examinationName}, #{examinationName},
#{type}, #{type},
#{attention}, #{attention},
#{startTime}, #{startTime, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{endTime}, #{endTime, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{totalScore}, #{totalScore},
#{status}, #{status},
#{avatarId}, #{avatarId},
#{courseId}, #{courseId},
#{remark}, #{remark},
#{creator}, #{creator},
#{createDate}, #{createDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{modifier}, #{modifier},
#{modifyDate}, #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{delFlag}, #{delFlag},
#{applicationCode}, #{applicationCode},
#{tenantCode} #{tenantCode}
...@@ -143,10 +143,10 @@ ...@@ -143,10 +143,10 @@
attention = #{attention}, attention = #{attention},
</if> </if>
<if test="startTime != null"> <if test="startTime != null">
start_time = #{startTime}, start_time = #{startTime, jdbcType=TIMESTAMP, javaType=java.util.Date},
</if> </if>
<if test="endTime != null"> <if test="endTime != null">
end_time = #{endTime}, end_time = #{endTime, jdbcType=TIMESTAMP, javaType=java.util.Date},
</if> </if>
<if test="totalScore != null"> <if test="totalScore != null">
total_score = #{totalScore}, total_score = #{totalScore},
...@@ -167,7 +167,7 @@ ...@@ -167,7 +167,7 @@
del_flag = #{delFlag}, del_flag = #{delFlag},
</if> </if>
modifier = #{modifier}, modifier = #{modifier},
modify_date = #{modifyDate} modify_date = #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date}
WHERE id = #{id} WHERE id = #{id}
</update> </update>
......
...@@ -8,9 +8,9 @@ ...@@ -8,9 +8,9 @@
<result column="attachment_id" property="attachmentId"/> <result column="attachment_id" property="attachmentId"/>
<result column="status" property="status"/> <result column="status" property="status"/>
<result column="creator" property="creator"/> <result column="creator" property="creator"/>
<result column="create_date" property="createDate"/> <result column="create_date" property="createDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="modifier" property="modifier"/> <result column="modifier" property="modifier"/>
<result column="modify_date" property="modifyDate"/> <result column="modify_date" property="modifyDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="del_flag" property="delFlag"/> <result column="del_flag" property="delFlag"/>
<result column="application_code" property="applicationCode"/> <result column="application_code" property="applicationCode"/>
<result column="tenant_code" property="tenantCode"/> <result column="tenant_code" property="tenantCode"/>
...@@ -87,9 +87,9 @@ ...@@ -87,9 +87,9 @@
#{attachmentId}, #{attachmentId},
#{status}, #{status},
#{creator}, #{creator},
#{createDate}, #{createDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{modifier}, #{modifier},
#{modifyDate}, #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{delFlag}, #{delFlag},
#{applicationCode}, #{applicationCode},
#{tenantCode} #{tenantCode}
...@@ -114,7 +114,7 @@ ...@@ -114,7 +114,7 @@
del_flag = #{delFlag}, del_flag = #{delFlag},
</if> </if>
modifier = #{modifier}, modifier = #{modifier},
modify_date = #{modifyDate} modify_date = #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date}
WHERE id = #{id} WHERE id = #{id}
</update> </update>
......
...@@ -6,9 +6,9 @@ ...@@ -6,9 +6,9 @@
<result column="picture_address" property="examRecordId"/> <result column="picture_address" property="examRecordId"/>
<result column="attachment_id" property="subjectId"/> <result column="attachment_id" property="subjectId"/>
<result column="creator" property="creator"/> <result column="creator" property="creator"/>
<result column="create_date" property="createDate"/> <result column="create_date" property="createDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="modifier" property="modifier"/> <result column="modifier" property="modifier"/>
<result column="modify_date" property="modifyDate"/> <result column="modify_date" property="modifyDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="del_flag" property="delFlag"/> <result column="del_flag" property="delFlag"/>
<result column="application_code" property="applicationCode"/> <result column="application_code" property="applicationCode"/>
<result column="tenant_code" property="tenantCode"/> <result column="tenant_code" property="tenantCode"/>
...@@ -64,9 +64,9 @@ ...@@ -64,9 +64,9 @@
#{pictureAddress}, #{pictureAddress},
#{attachmentId}, #{attachmentId},
#{creator}, #{creator},
#{createDate}, #{createDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{modifier}, #{modifier},
#{modifyDate}, #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{delFlag}, #{delFlag},
#{applicationCode}, #{applicationCode},
#{tenantCode} #{tenantCode}
...@@ -85,7 +85,7 @@ ...@@ -85,7 +85,7 @@
del_flag = #{delFlag}, del_flag = #{delFlag},
</if> </if>
modifier = #{modifier}, modifier = #{modifier},
modify_date = #{modifyDate} modify_date = #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date}
WHERE id = #{id} WHERE id = #{id}
</update> </update>
......
...@@ -9,9 +9,9 @@ ...@@ -9,9 +9,9 @@
<result column="sort" property="sort"/> <result column="sort" property="sort"/>
<result column="type" property="type"/> <result column="type" property="type"/>
<result column="creator" property="creator"/> <result column="creator" property="creator"/>
<result column="create_date" property="createDate"/> <result column="create_date" property="createDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="modifier" property="modifier"/> <result column="modifier" property="modifier"/>
<result column="modify_date" property="modifyDate"/> <result column="modify_date" property="modifyDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="del_flag" property="delFlag"/> <result column="del_flag" property="delFlag"/>
<result column="application_code" property="applicationCode"/> <result column="application_code" property="applicationCode"/>
<result column="tenant_code" property="tenantCode"/> <result column="tenant_code" property="tenantCode"/>
...@@ -72,9 +72,9 @@ ...@@ -72,9 +72,9 @@
#{sort}, #{sort},
#{type}, #{type},
#{creator}, #{creator},
#{createDate}, #{createDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{modifier}, #{modifier},
#{modifyDate}, #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{delFlag}, #{delFlag},
#{applicationCode}, #{applicationCode},
#{tenantCode} #{tenantCode}
...@@ -118,7 +118,7 @@ ...@@ -118,7 +118,7 @@
del_flag = #{delFlag}, del_flag = #{delFlag},
</if> </if>
modifier = #{modifier}, modifier = #{modifier},
modify_date = #{modifyDate} modify_date = #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date}
WHERE id = #{id} WHERE id = #{id}
</update> </update>
......
...@@ -12,9 +12,9 @@ ...@@ -12,9 +12,9 @@
<result column="analysis" property="analysis"/> <result column="analysis" property="analysis"/>
<result column="level" property="level"/> <result column="level" property="level"/>
<result column="creator" property="creator"/> <result column="creator" property="creator"/>
<result column="create_date" property="createDate"/> <result column="create_date" property="createDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="modifier" property="modifier"/> <result column="modifier" property="modifier"/>
<result column="modify_date" property="modifyDate"/> <result column="modify_date" property="modifyDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="del_flag" property="delFlag"/> <result column="del_flag" property="delFlag"/>
<result column="application_code" property="applicationCode"/> <result column="application_code" property="applicationCode"/>
<result column="tenant_code" property="tenantCode"/> <result column="tenant_code" property="tenantCode"/>
...@@ -120,9 +120,9 @@ ...@@ -120,9 +120,9 @@
#{analysis}, #{analysis},
#{level}, #{level},
#{creator}, #{creator},
#{createDate}, #{createDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{modifier}, #{modifier},
#{modifyDate}, #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{delFlag}, #{delFlag},
#{applicationCode}, #{applicationCode},
#{tenantCode} #{tenantCode}
...@@ -159,7 +159,7 @@ ...@@ -159,7 +159,7 @@
del_flag = #{delFlag}, del_flag = #{delFlag},
</if> </if>
modifier = #{modifier}, modifier = #{modifier},
modify_date = #{modifyDate} modify_date = #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date}
WHERE id = #{id} WHERE id = #{id}
</update> </update>
......
...@@ -7,9 +7,9 @@ ...@@ -7,9 +7,9 @@
<result column="option_name" property="optionName"/> <result column="option_name" property="optionName"/>
<result column="option_content" property="optionContent"/> <result column="option_content" property="optionContent"/>
<result column="creator" property="creator"/> <result column="creator" property="creator"/>
<result column="create_date" property="createDate"/> <result column="create_date" property="createDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="modifier" property="modifier"/> <result column="modifier" property="modifier"/>
<result column="modify_date" property="modifyDate"/> <result column="modify_date" property="modifyDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="del_flag" property="delFlag"/> <result column="del_flag" property="delFlag"/>
<result column="application_code" property="applicationCode"/> <result column="application_code" property="applicationCode"/>
<result column="tenant_code" property="tenantCode"/> <result column="tenant_code" property="tenantCode"/>
...@@ -84,9 +84,9 @@ ...@@ -84,9 +84,9 @@
#{optionName}, #{optionName},
#{optionContent}, #{optionContent},
#{creator}, #{creator},
#{createDate}, #{createDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{modifier}, #{modifier},
#{modifyDate}, #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{delFlag}, #{delFlag},
#{applicationCode}, #{applicationCode},
#{tenantCode} #{tenantCode}
...@@ -115,9 +115,9 @@ ...@@ -115,9 +115,9 @@
#{item.optionName}, #{item.optionName},
#{item.optionContent}, #{item.optionContent},
#{item.creator}, #{item.creator},
#{item.createDate}, #{item.createDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{item.modifier}, #{item.modifier},
#{item.modifyDate}, #{item.modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{item.delFlag}, #{item.delFlag},
#{item.applicationCode}, #{item.applicationCode},
#{item.tenantCode} #{item.tenantCode}
...@@ -140,7 +140,7 @@ ...@@ -140,7 +140,7 @@
del_flag = #{delFlag}, del_flag = #{delFlag},
</if> </if>
modifier = #{modifier}, modifier = #{modifier},
modify_date = #{modifyDate} modify_date = #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date}
WHERE id = #{id} WHERE id = #{id}
</update> </update>
......
...@@ -11,9 +11,9 @@ ...@@ -11,9 +11,9 @@
<result column="analysis" property="analysis"/> <result column="analysis" property="analysis"/>
<result column="level" property="level"/> <result column="level" property="level"/>
<result column="creator" property="creator"/> <result column="creator" property="creator"/>
<result column="create_date" property="createDate"/> <result column="create_date" property="createDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="modifier" property="modifier"/> <result column="modifier" property="modifier"/>
<result column="modify_date" property="modifyDate"/> <result column="modify_date" property="modifyDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="del_flag" property="delFlag"/> <result column="del_flag" property="delFlag"/>
<result column="application_code" property="applicationCode"/> <result column="application_code" property="applicationCode"/>
<result column="tenant_code" property="tenantCode"/> <result column="tenant_code" property="tenantCode"/>
...@@ -111,9 +111,9 @@ ...@@ -111,9 +111,9 @@
#{analysis}, #{analysis},
#{level}, #{level},
#{creator}, #{creator},
#{createDate}, #{createDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{modifier}, #{modifier},
#{modifyDate}, #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{delFlag}, #{delFlag},
#{applicationCode}, #{applicationCode},
#{tenantCode} #{tenantCode}
...@@ -147,7 +147,7 @@ ...@@ -147,7 +147,7 @@
del_flag = #{delFlag}, del_flag = #{delFlag},
</if> </if>
modifier = #{modifier}, modifier = #{modifier},
modify_date = #{modifyDate} modify_date = #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date}
WHERE id = #{id} WHERE id = #{id}
</update> </update>
......
...@@ -29,4 +29,9 @@ public class SysConfig { ...@@ -29,4 +29,9 @@ public class SysConfig {
* 默认头像 * 默认头像
*/ */
private String defaultAvatar; private String defaultAvatar;
/**
* 管理员账号
*/
private String adminUser;
} }
...@@ -13,12 +13,16 @@ import com.github.tangyi.common.security.utils.SecurityUtil; ...@@ -13,12 +13,16 @@ import com.github.tangyi.common.security.utils.SecurityUtil;
import com.github.tangyi.user.api.constant.MenuConstant; import com.github.tangyi.user.api.constant.MenuConstant;
import com.github.tangyi.user.api.dto.MenuDto; import com.github.tangyi.user.api.dto.MenuDto;
import com.github.tangyi.user.api.module.Menu; import com.github.tangyi.user.api.module.Menu;
import com.github.tangyi.user.api.module.Role;
import com.github.tangyi.user.config.SysConfig;
import com.github.tangyi.user.service.MenuService; import com.github.tangyi.user.service.MenuService;
import com.github.tangyi.user.utils.MenuUtil; import com.github.tangyi.user.utils.MenuUtil;
import com.google.common.collect.Lists;
import com.google.common.net.HttpHeaders; import com.google.common.net.HttpHeaders;
import io.swagger.annotations.*; import io.swagger.annotations.*;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -51,6 +55,8 @@ public class MenuController extends BaseController { ...@@ -51,6 +55,8 @@ public class MenuController extends BaseController {
private final MenuService menuService; private final MenuService menuService;
private final SysConfig sysConfig;
/** /**
* 返回当前用户的树形菜单集合 * 返回当前用户的树形菜单集合
* *
...@@ -60,29 +66,41 @@ public class MenuController extends BaseController { ...@@ -60,29 +66,41 @@ public class MenuController extends BaseController {
@ApiOperation(value = "获取当前用户的菜单列表") @ApiOperation(value = "获取当前用户的菜单列表")
public List<MenuDto> userMenu() { public List<MenuDto> userMenu() {
List<MenuDto> menuDtoList = new ArrayList<>(); List<MenuDto> menuDtoList = new ArrayList<>();
String tenantCode = SysUtil.getTenantCode(); String tenantCode = SysUtil.getTenantCode(), identifier = SysUtil.getUser();
// 根据角色code查找菜单 List<Menu> userMenus;
SecurityUtil.getCurrentAuthentication().getAuthorities().stream() // 超级管理员
// 按角色过滤 if (identifier.equals(sysConfig.getAdminUser())) {
.filter(authority -> authority.getAuthority() != null && authority.getAuthority().startsWith("role_")) // 获取角色的菜单
// 查找菜单 Menu menu = new Menu();
.forEach(roleName -> { menu.setTenantCode(tenantCode);
// 获取角色的菜单 menu.setApplicationCode(SysUtil.getSysCode());
Stream<Menu> menuStream = menuService.findMenuByRole(roleName.getAuthority(), tenantCode).stream(); menu.setType(MenuConstant.MENU_TYPE_MENU);
if (Optional.ofNullable(menuStream).isPresent()) { userMenus = menuService.findAllList(menu);
// 筛选出类型为菜单的菜单,放进menuMap,防止重复,用菜单的ID作为key } else {
menuStream List<Role> roleList = SecurityUtil.getCurrentAuthentication().getAuthorities().stream()
// 菜单类型 // 按角色过滤
.filter(menu -> MenuConstant.MENU_TYPE_MENU.equals(menu.getType())) .filter(authority -> authority.getAuthority() != null && authority.getAuthority().startsWith("role_"))
// dto封装 .map(authority -> {
.map(MenuDto::new) Role role = new Role();
// 去重 role.setRoleCode(authority.getAuthority());
.distinct() return role;
.forEach(menuDtoList::add); }).collect(Collectors.toList());
} // 根据角色code批量查找菜单
}); userMenus = menuService.finMenuByRoleList(roleList, tenantCode);
// 排序、构建树形关系 }
return TreeUtil.buildTree(CollUtil.sort(menuDtoList, Comparator.comparingInt(MenuDto::getSort)), "-1"); if (CollectionUtils.isNotEmpty(userMenus)) {
userMenus.stream()
// 菜单类型
.filter(menu -> MenuConstant.MENU_TYPE_MENU.equals(menu.getType()))
// dto封装
.map(MenuDto::new)
// 去重
.distinct()
.forEach(menuDtoList::add);
// 排序、构建树形关系
return TreeUtil.buildTree(CollUtil.sort(menuDtoList, Comparator.comparingInt(MenuDto::getSort)), "-1");
}
return Lists.newArrayList();
} }
/** /**
......
...@@ -47,7 +47,7 @@ public class RoleController extends BaseController { ...@@ -47,7 +47,7 @@ public class RoleController extends BaseController {
* 根据id获取角色 * 根据id获取角色
* *
* @param id id * @param id id
* @return Role * @return RoleVo
* @author tangyi * @author tangyi
* @date 2018/9/14 18:20 * @date 2018/9/14 18:20
*/ */
...@@ -82,7 +82,7 @@ public class RoleController extends BaseController { ...@@ -82,7 +82,7 @@ public class RoleController extends BaseController {
@ApiImplicitParam(name = CommonConstant.PAGE_SIZE, value = "分页大小", defaultValue = CommonConstant.PAGE_SIZE_DEFAULT, dataType = "String"), @ApiImplicitParam(name = CommonConstant.PAGE_SIZE, value = "分页大小", defaultValue = CommonConstant.PAGE_SIZE_DEFAULT, dataType = "String"),
@ApiImplicitParam(name = CommonConstant.SORT, value = "排序字段", defaultValue = CommonConstant.PAGE_SORT_DEFAULT, dataType = "String"), @ApiImplicitParam(name = CommonConstant.SORT, value = "排序字段", defaultValue = CommonConstant.PAGE_SORT_DEFAULT, dataType = "String"),
@ApiImplicitParam(name = CommonConstant.ORDER, value = "排序方向", defaultValue = CommonConstant.PAGE_ORDER_DEFAULT, dataType = "String"), @ApiImplicitParam(name = CommonConstant.ORDER, value = "排序方向", defaultValue = CommonConstant.PAGE_ORDER_DEFAULT, dataType = "String"),
@ApiImplicitParam(name = "role", value = "角色信息", dataType = "Role") @ApiImplicitParam(name = "role", value = "角色信息", dataType = "RoleVo")
}) })
public PageInfo<Role> roleList(@RequestParam(value = CommonConstant.PAGE_NUM, required = false, defaultValue = CommonConstant.PAGE_NUM_DEFAULT) String pageNum, public PageInfo<Role> roleList(@RequestParam(value = CommonConstant.PAGE_NUM, required = false, defaultValue = CommonConstant.PAGE_NUM_DEFAULT) String pageNum,
@RequestParam(value = CommonConstant.PAGE_SIZE, required = false, defaultValue = CommonConstant.PAGE_SIZE_DEFAULT) String pageSize, @RequestParam(value = CommonConstant.PAGE_SIZE, required = false, defaultValue = CommonConstant.PAGE_SIZE_DEFAULT) String pageSize,
...@@ -103,7 +103,7 @@ public class RoleController extends BaseController { ...@@ -103,7 +103,7 @@ public class RoleController extends BaseController {
*/ */
@RequestMapping("allRoles") @RequestMapping("allRoles")
@ApiOperation(value = "获取全部角色列表") @ApiOperation(value = "获取全部角色列表")
@ApiImplicitParam(name = "role", value = "角色信息", dataType = "Role") @ApiImplicitParam(name = "role", value = "角色信息", dataType = "RoleVo")
public ResponseBean<List<Role>> allRoles(Role role) { public ResponseBean<List<Role>> allRoles(Role role) {
role.setApplicationCode(SysUtil.getSysCode()); role.setApplicationCode(SysUtil.getSysCode());
role.setTenantCode(SysUtil.getTenantCode()); role.setTenantCode(SysUtil.getTenantCode());
...@@ -121,7 +121,7 @@ public class RoleController extends BaseController { ...@@ -121,7 +121,7 @@ public class RoleController extends BaseController {
@PutMapping @PutMapping
@PreAuthorize("hasAuthority('sys:role:edit') or hasAnyRole('" + SecurityConstant.ROLE_ADMIN + "')") @PreAuthorize("hasAuthority('sys:role:edit') or hasAnyRole('" + SecurityConstant.ROLE_ADMIN + "')")
@ApiOperation(value = "更新角色信息", notes = "根据角色id更新角色的基本信息") @ApiOperation(value = "更新角色信息", notes = "根据角色id更新角色的基本信息")
@ApiImplicitParam(name = "role", value = "角色实体role", required = true, dataType = "Role") @ApiImplicitParam(name = "role", value = "角色实体role", required = true, dataType = "RoleVo")
@Log("修改角色") @Log("修改角色")
public ResponseBean<Boolean> updateRole(@RequestBody @Valid Role role) { public ResponseBean<Boolean> updateRole(@RequestBody @Valid Role role) {
role.setCommonValue(SysUtil.getUser(), SysUtil.getSysCode(), SysUtil.getTenantCode()); role.setCommonValue(SysUtil.getUser(), SysUtil.getSysCode(), SysUtil.getTenantCode());
...@@ -138,7 +138,7 @@ public class RoleController extends BaseController { ...@@ -138,7 +138,7 @@ public class RoleController extends BaseController {
*/ */
@PutMapping("roleMenuUpdate") @PutMapping("roleMenuUpdate")
@ApiOperation(value = "更新角色菜单信息", notes = "更新角色菜单信息") @ApiOperation(value = "更新角色菜单信息", notes = "更新角色菜单信息")
@ApiImplicitParam(name = "role", value = "角色实体role", required = true, dataType = "Role") @ApiImplicitParam(name = "role", value = "角色实体role", required = true, dataType = "RoleVo")
@Log("更新角色菜单") @Log("更新角色菜单")
public ResponseBean<Boolean> updateRoleMenu(@RequestBody Role role) { public ResponseBean<Boolean> updateRoleMenu(@RequestBody Role role) {
boolean success = false; boolean success = false;
...@@ -163,7 +163,7 @@ public class RoleController extends BaseController { ...@@ -163,7 +163,7 @@ public class RoleController extends BaseController {
@PostMapping @PostMapping
@PreAuthorize("hasAuthority('sys:role:add') or hasAnyRole('" + SecurityConstant.ROLE_ADMIN + "')") @PreAuthorize("hasAuthority('sys:role:add') or hasAnyRole('" + SecurityConstant.ROLE_ADMIN + "')")
@ApiOperation(value = "创建角色", notes = "创建角色") @ApiOperation(value = "创建角色", notes = "创建角色")
@ApiImplicitParam(name = "role", value = "角色实体role", required = true, dataType = "Role") @ApiImplicitParam(name = "role", value = "角色实体role", required = true, dataType = "RoleVo")
@Log("新增角色") @Log("新增角色")
public ResponseBean<Boolean> role(@RequestBody @Valid Role role) { public ResponseBean<Boolean> role(@RequestBody @Valid Role role) {
role.setCommonValue(SysUtil.getUser(), SysUtil.getSysCode(), SysUtil.getTenantCode()); role.setCommonValue(SysUtil.getUser(), SysUtil.getSysCode(), SysUtil.getTenantCode());
...@@ -174,7 +174,7 @@ public class RoleController extends BaseController { ...@@ -174,7 +174,7 @@ public class RoleController extends BaseController {
* 根据id删除角色 * 根据id删除角色
* *
* @param id id * @param id id
* @return Role * @return RoleVo
* @author tangyi * @author tangyi
* @date 2018/9/14 18:24 * @date 2018/9/14 18:24
*/ */
...@@ -202,7 +202,7 @@ public class RoleController extends BaseController { ...@@ -202,7 +202,7 @@ public class RoleController extends BaseController {
@PostMapping("deleteAll") @PostMapping("deleteAll")
@PreAuthorize("hasAuthority('sys:role:del') or hasAnyRole('" + SecurityConstant.ROLE_ADMIN + "')") @PreAuthorize("hasAuthority('sys:role:del') or hasAnyRole('" + SecurityConstant.ROLE_ADMIN + "')")
@ApiOperation(value = "批量删除角色", notes = "根据角色id批量删除角色") @ApiOperation(value = "批量删除角色", notes = "根据角色id批量删除角色")
@ApiImplicitParam(name = "role", value = "角色信息", dataType = "Role") @ApiImplicitParam(name = "role", value = "角色信息", dataType = "RoleVo")
@Log("批量删除角色") @Log("批量删除角色")
public ResponseBean<Boolean> deleteAllRoles(@RequestBody Role role) { public ResponseBean<Boolean> deleteAllRoles(@RequestBody Role role) {
boolean success = false; boolean success = false;
......
package com.github.tangyi.user.controller; package com.github.tangyi.user.controller;
import com.github.tangyi.common.core.web.BaseController; import com.github.tangyi.common.core.web.BaseController;
import com.github.tangyi.common.security.constant.SecurityConstant;
import com.github.tangyi.user.service.UserService; import com.github.tangyi.user.service.UserService;
import com.google.code.kaptcha.Producer; import com.google.code.kaptcha.Producer;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -45,7 +46,7 @@ public class ValidateCodeController extends BaseController { ...@@ -45,7 +46,7 @@ public class ValidateCodeController extends BaseController {
@ApiImplicitParam(name = "tenantCode", value = "租户标识", required = true, dataType = "String") @ApiImplicitParam(name = "tenantCode", value = "租户标识", required = true, dataType = "String")
}) })
@GetMapping("/{random}") @GetMapping("/{random}")
public void produceCode(@PathVariable String random, @RequestParam String tenantCode, HttpServletResponse response) throws Exception { public void produceCode(@PathVariable String random, @RequestParam(required = false, defaultValue = SecurityConstant.DEFAULT_TENANT_CODE) String tenantCode, HttpServletResponse response) throws Exception {
response.setHeader("Cache-Control", "no-store, no-cache"); response.setHeader("Cache-Control", "no-store, no-cache");
response.setContentType("image/jpeg"); response.setContentType("image/jpeg");
// 生成文字验证码 // 生成文字验证码
......
package com.github.tangyi.user.mapper;
import com.github.tangyi.common.core.persistence.CrudMapper;
import com.github.tangyi.user.api.module.UserAuths;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* UserAuthsMapper
*
* @author tangyi
* @date 2019/07/03 11:44
*/
@Mapper
public interface UserAuthsMapper extends CrudMapper<UserAuths> {
/**
* 根据唯一标识查询
*
* @param userAuths userAuths
* @return UserAuths
* @author tangyi
* @date 2019/07/03 11:52:27
*/
UserAuths getByIdentifier(UserAuths userAuths);
/**
* 根据用户id批量查询
*
* @param userIds userIds
* @return List
* @author tangyi
* @date 2019/07/03 22:02:13
*/
List<UserAuths> getListByUserIds(@Param("userIds") String[] userIds);
/**
* 根据唯一标识删除
*
* @param userAuths userAuths
* @return int
* @author tangyi
* @date 2019/07/04 11:39:50
*/
int deleteByIdentifier(UserAuths userAuths);
/**
* 根据用户ID删除
*
* @param userAuths userAuths
* @return int
* @author tangyi
* @date 2019/07/04 11:43:50
*/
int deleteByUserId(UserAuths userAuths);
}
...@@ -4,7 +4,6 @@ import com.github.tangyi.common.core.persistence.CrudMapper; ...@@ -4,7 +4,6 @@ import com.github.tangyi.common.core.persistence.CrudMapper;
import com.github.tangyi.common.core.vo.UserVo; import com.github.tangyi.common.core.vo.UserVo;
import com.github.tangyi.user.api.module.User; import com.github.tangyi.user.api.module.User;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/** /**
* 用户mapper接口 * 用户mapper接口
...@@ -15,26 +14,6 @@ import org.apache.ibatis.annotations.Param; ...@@ -15,26 +14,6 @@ import org.apache.ibatis.annotations.Param;
@Mapper @Mapper
public interface UserMapper extends CrudMapper<User> { public interface UserMapper extends CrudMapper<User> {
UserVo selectUserVo();
/**
* 通过用户名查询用户信息(含有角色信息)
*
* @param username 用户名
* @param tenantCode 租户标识
* @return userVo
*/
UserVo selectUserVoByUsername(@Param("username") String username, @Param("tenantCode") String tenantCode);
/**
* 通过用户手机号查询用户信息(含有角色信息)
*
* @param social 用户手机号
* @param tenantCode 租户标识
* @return userVo
*/
UserVo selectUserVoBySocial(@Param("social") String social, @Param("tenantCode") String tenantCode);
/** /**
* 查询用户数量 * 查询用户数量
* *
......
...@@ -2,10 +2,13 @@ package com.github.tangyi.user.service; ...@@ -2,10 +2,13 @@ package com.github.tangyi.user.service;
import com.github.tangyi.common.core.service.CrudService; import com.github.tangyi.common.core.service.CrudService;
import com.github.tangyi.user.api.module.Dept; import com.github.tangyi.user.api.module.Dept;
import com.github.tangyi.user.api.module.User;
import com.github.tangyi.user.mapper.DeptMapper; import com.github.tangyi.user.mapper.DeptMapper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/** /**
* 部门service * 部门service
* *
...@@ -27,4 +30,18 @@ public class DeptService extends CrudService<DeptMapper, Dept> { ...@@ -27,4 +30,18 @@ public class DeptService extends CrudService<DeptMapper, Dept> {
// 删除部门 // 删除部门
return super.delete(dept); return super.delete(dept);
} }
/**
* 根据用户批量查询
*
* @param userList userList
* @return List
* @author tangyi
* @date 2019/07/03 22:06:50
*/
public List<Dept> getListByUsers(List<User> userList) {
Dept dept = new Dept();
dept.setIds(userList.stream().filter(tempUser -> tempUser.getDeptId() != null).map(User::getDeptId).distinct().toArray(String[]::new));
return this.findListById(dept);
}
} }
...@@ -4,8 +4,11 @@ import com.github.tangyi.common.core.constant.CommonConstant; ...@@ -4,8 +4,11 @@ import com.github.tangyi.common.core.constant.CommonConstant;
import com.github.tangyi.common.core.service.CrudService; import com.github.tangyi.common.core.service.CrudService;
import com.github.tangyi.common.core.utils.SysUtil; import com.github.tangyi.common.core.utils.SysUtil;
import com.github.tangyi.user.api.module.Menu; import com.github.tangyi.user.api.module.Menu;
import com.github.tangyi.user.api.module.Role;
import com.github.tangyi.user.mapper.MenuMapper; import com.github.tangyi.user.mapper.MenuMapper;
import com.google.common.collect.Lists;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -40,6 +43,25 @@ public class MenuService extends CrudService<MenuMapper, Menu> { ...@@ -40,6 +43,25 @@ public class MenuService extends CrudService<MenuMapper, Menu> {
} }
/** /**
* 批量查询菜单
*
* @param roleList roleList
* @param tenantCode tenantCode
* @return List
* @author tangyi
* @date 2019/07/03 23:50:35
*/
public List<Menu> finMenuByRoleList(List<Role> roleList, String tenantCode) {
List<Menu> menus = Lists.newArrayList();
for (Role role : roleList) {
List<Menu> roleMenus = this.findMenuByRole(role.getRoleCode(), tenantCode);
if (CollectionUtils.isNotEmpty(roleMenus))
menus.addAll(roleMenus);
}
return menus;
}
/**
* 查询全部菜单 * 查询全部菜单
* *
* @param menu menu * @param menu menu
......
...@@ -9,6 +9,7 @@ import com.github.tangyi.common.security.constant.SecurityConstant; ...@@ -9,6 +9,7 @@ import com.github.tangyi.common.security.constant.SecurityConstant;
import com.github.tangyi.msc.api.constant.SmsConstant; import com.github.tangyi.msc.api.constant.SmsConstant;
import com.github.tangyi.msc.api.dto.SmsDto; import com.github.tangyi.msc.api.dto.SmsDto;
import com.github.tangyi.msc.api.feign.MscServiceClient; import com.github.tangyi.msc.api.feign.MscServiceClient;
import com.github.tangyi.user.api.enums.IdentityType;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
...@@ -43,7 +44,7 @@ public class MobileService { ...@@ -43,7 +44,7 @@ public class MobileService {
* @date 2019/07/02 09:36:52 * @date 2019/07/02 09:36:52
*/ */
public ResponseBean<Boolean> sendSms(String mobile, String tenantCode) { public ResponseBean<Boolean> sendSms(String mobile, String tenantCode) {
UserVo userVo = userService.selectUserVoBySocial(mobile, tenantCode); UserVo userVo = userService.findUserByIdentifier(IdentityType.PHONE_NUMBER.getValue(), mobile, tenantCode);
if (userVo == null) { if (userVo == null) {
log.info("手机号未注册:{}", mobile); log.info("手机号未注册:{}", mobile);
return new ResponseBean<>(Boolean.FALSE, "手机号未注册."); return new ResponseBean<>(Boolean.FALSE, "手机号未注册.");
......
package com.github.tangyi.user.service;
import com.github.tangyi.common.core.service.CrudService;
import com.github.tangyi.user.api.module.User;
import com.github.tangyi.user.api.module.UserAuths;
import com.github.tangyi.user.mapper.UserAuthsMapper;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* 用户授权Service
*
* @author tangyi
* @date 2019/07/03 11:45
*/
@AllArgsConstructor
@Slf4j
@Service
public class UserAuthsService extends CrudService<UserAuthsMapper, UserAuths> {
/**
* 根据唯一标识查询
*
* @param userAuths userAuths
* @return UserAuths
* @author tangyi
* @date 2019/07/03 11:52:27
*/
public UserAuths getByIdentifier(UserAuths userAuths) {
return this.dao.getByIdentifier(userAuths);
}
/**
* 根据用户批量查询用户权限
*
* @param userList userList
* @return List
* @author tangyi
* @date 2019/07/03 21:58:31
*/
public List<UserAuths> getListByUsers(List<User> userList) {
return this.dao.getListByUserIds(userList.stream().map(User::getId).distinct().toArray(String[]::new));
}
/**
* 根据唯一标识删除
*
* @param userAuths userAuths
* @return int
* @author tangyi
* @date 2019/07/04 11:39:50
*/
@Transactional
public int deleteByIdentifier(UserAuths userAuths) {
return this.dao.deleteByIdentifier(userAuths);
}
/**
* 根据用户ID删除
*
* @param userAuths userAuths
* @return int
* @author tangyi
* @date 2019/07/04 11:42:50
*/
@Transactional
public int deleteByUserId(UserAuths userAuths) {
return this.dao.deleteByUserId(userAuths);
}
}
package com.github.tangyi.user.utils; package com.github.tangyi.user.utils;
import com.github.tangyi.common.core.utils.SpringContextHolder;
import com.github.tangyi.common.core.utils.SysUtil;
import com.github.tangyi.common.core.vo.RoleVo;
import com.github.tangyi.user.api.dto.UserInfoDto;
import com.github.tangyi.user.api.module.Role;
import com.github.tangyi.user.api.module.User;
import com.github.tangyi.user.api.module.UserAuths;
import com.github.tangyi.user.config.SysConfig;
import org.springframework.beans.BeanUtils;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List;
import java.util.stream.Collectors;
/** /**
* 用户工具类 * 用户工具类
...@@ -20,21 +32,75 @@ public class UserUtils { ...@@ -20,21 +32,75 @@ public class UserUtils {
public static LinkedHashMap<String, String> getUserMap() { public static LinkedHashMap<String, String> getUserMap() {
LinkedHashMap<String, String> map = new LinkedHashMap<>(); LinkedHashMap<String, String> map = new LinkedHashMap<>();
map.put("id", "用户id"); map.put("id", "用户id");
map.put("name", "账号"); map.put("identifier", "账号");
map.put("username", "姓名"); map.put("identityType", "账号类型");
map.put("credential", "密码");
map.put("name", "姓名");
map.put("phone", "联系电话"); map.put("phone", "联系电话");
map.put("email", "邮箱"); map.put("email", "邮箱");
map.put("born", "出生日期"); //map.put("born", "出生日期");
map.put("remark", "备注"); map.put("remark", "备注");
map.put("status", "状态"); map.put("status", "状态");
map.put("deptId", "部门ID"); map.put("deptId", "部门ID");
map.put("creator", "创建人");
map.put("createDate", "创建时间");
map.put("modifier", "修改人");
map.put("modifyDate", "修改时间");
map.put("delFlag", "删除标记");
map.put("applicationCode", "系统编码"); map.put("applicationCode", "系统编码");
map.put("tenantCode", "租户标识"); map.put("tenantCode", "租户标识");
return map; return map;
} }
/**
* Role 转 RoleVo
*
* @param roles roles
* @return List
* @author tangyi
* @date 2019/07/03 13:11:05
*/
public static List<RoleVo> rolesToVo(List<Role> roles) {
return roles.stream().map(role -> {
RoleVo roleVo = new RoleVo();
roleVo.setRoleCode(role.getRoleCode());
roleVo.setRoleName(role.getRoleName());
roleVo.setRoleDesc(role.getRoleDesc());
return roleVo;
}).collect(Collectors.toList());
}
/**
* 转DTO
*
* @param userInfoDto userInfoDto
* @param user user
* @param userAuths userAuths
* @return UserInfoDto
* @author tangyi
* @date 2019/07/03 20:23:15
*/
public static void toUserInfoDto(UserInfoDto userInfoDto, User user, UserAuths userAuths) {
BeanUtils.copyProperties(userAuths, userInfoDto);
BeanUtils.copyProperties(user, userInfoDto);
}
/**
* 是否为管理员
*
* @param identifier identifier
* @return boolean
* @author tangyi
* @date 2019/07/04 00:25:11
*/
public static boolean isAdmin(String identifier) {
SysConfig sysConfig = SpringContextHolder.getApplicationContext().getBean(SysConfig.class);
return identifier.equals(sysConfig.getAdminUser());
}
/**
* 是否为管理员
*
* @return boolean
* @author tangyi
* @date 2019/07/04 00:25:11
*/
public static boolean isAdmin() {
return isAdmin(SysUtil.getUser());
}
} }
...@@ -12,9 +12,9 @@ ...@@ -12,9 +12,9 @@
<result column="busi_type" property="busiType"/> <result column="busi_type" property="busiType"/>
<result column="preview_url" property="previewUrl"/> <result column="preview_url" property="previewUrl"/>
<result column="creator" property="creator"/> <result column="creator" property="creator"/>
<result column="create_date" property="createDate"/> <result column="create_date" property="createDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="modifier" property="modifier"/> <result column="modifier" property="modifier"/>
<result column="modify_date" property="modifyDate"/> <result column="modify_date" property="modifyDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="del_flag" property="delFlag"/> <result column="del_flag" property="delFlag"/>
<result column="application_code" property="applicationCode"/> <result column="application_code" property="applicationCode"/>
<result column="tenant_code" property="tenantCode"/> <result column="tenant_code" property="tenantCode"/>
...@@ -110,9 +110,9 @@ ...@@ -110,9 +110,9 @@
#{busiType}, #{busiType},
#{previewUrl}, #{previewUrl},
#{creator}, #{creator},
#{createDate}, #{createDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{modifier}, #{modifier},
#{modifyDate}, #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{delFlag}, #{delFlag},
#{applicationCode}, #{applicationCode},
#{tenantCode} #{tenantCode}
...@@ -149,13 +149,15 @@ ...@@ -149,13 +149,15 @@
del_flag = #{delFlag}, del_flag = #{delFlag},
</if> </if>
modifier = #{modifier}, modifier = #{modifier},
modify_date = #{modifyDate} modify_date = #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date}
WHERE id = #{id} WHERE id = #{id}
</update> </update>
<delete id="delete"> <delete id="delete">
UPDATE sys_attachment SET UPDATE sys_attachment SET
DEL_FLAG = 1 del_flag = 1,
modifier = #{modifier} ,
modify_date = #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date}
WHERE ID = #{id} WHERE ID = #{id}
</delete> </delete>
......
...@@ -8,11 +8,10 @@ ...@@ -8,11 +8,10 @@
<result column="dept_leader" property="deptLeader"/> <result column="dept_leader" property="deptLeader"/>
<result column="parent_id" property="parentId"/> <result column="parent_id" property="parentId"/>
<result column="sort" property="sort"/> <result column="sort" property="sort"/>
<result column="status" property="status"/>
<result column="creator" property="creator"/> <result column="creator" property="creator"/>
<result column="create_date" property="createDate"/> <result column="create_date" property="createDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="modifier" property="modifier"/> <result column="modifier" property="modifier"/>
<result column="modify_date" property="modifyDate"/> <result column="modify_date" property="modifyDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="del_flag" property="delFlag"/> <result column="del_flag" property="delFlag"/>
<result column="application_code" property="applicationCode"/> <result column="application_code" property="applicationCode"/>
<result column="tenant_code" property="tenantCode"/> <result column="tenant_code" property="tenantCode"/>
...@@ -25,7 +24,6 @@ ...@@ -25,7 +24,6 @@
a.dept_leader, a.dept_leader,
a.parent_id, a.parent_id,
a.sort, a.sort,
a.status,
a.creator, a.creator,
a.create_date, a.create_date,
a.modifier, a.modifier,
...@@ -71,14 +69,13 @@ ...@@ -71,14 +69,13 @@
</select> </select>
<insert id="insert"> <insert id="insert">
INSERT INTO sys_dept ( INSERT INTO sys_dept (
id, id,
dept_name, dept_name,
dept_desc, dept_desc,
dept_leader, dept_leader,
parent_id, parent_id,
sort, sort,
status,
creator, creator,
create_date, create_date,
modifier, modifier,
...@@ -93,11 +90,10 @@ ...@@ -93,11 +90,10 @@
#{deptLeader}, #{deptLeader},
#{parentId}, #{parentId},
#{sort}, #{sort},
#{status},
#{creator}, #{creator},
#{createDate}, #{createDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{modifier}, #{modifier},
#{modifyDate}, #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{delFlag}, #{delFlag},
#{applicationCode}, #{applicationCode},
#{tenantCode} #{tenantCode}
...@@ -118,14 +114,11 @@ ...@@ -118,14 +114,11 @@
<if test="sort != null"> <if test="sort != null">
sort = #{sort}, sort = #{sort},
</if> </if>
<if test="status != null">
status = #{status},
</if>
<if test="delFlag != null"> <if test="delFlag != null">
del_flag = #{delFlag}, del_flag = #{delFlag},
</if> </if>
modifier = #{modifier}, modifier = #{modifier},
modify_date = #{modifyDate} modify_date = #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date}
WHERE WHERE
<if test="id != null"> <if test="id != null">
id = #{id} id = #{id}
...@@ -137,7 +130,9 @@ ...@@ -137,7 +130,9 @@
<delete id="delete"> <delete id="delete">
UPDATE sys_dept SET UPDATE sys_dept SET
DEL_FLAG = 1 del_flag = 1,
modifier = #{modifier} ,
modify_date = #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date}
WHERE ID = #{id} WHERE ID = #{id}
</delete> </delete>
</mapper> </mapper>
...@@ -14,9 +14,9 @@ ...@@ -14,9 +14,9 @@
<result column="service_id" property="serviceId"/> <result column="service_id" property="serviceId"/>
<result column="time" property="time"/> <result column="time" property="time"/>
<result column="creator" property="creator"/> <result column="creator" property="creator"/>
<result column="create_date" property="createDate"/> <result column="create_date" property="createDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="modifier" property="modifier"/> <result column="modifier" property="modifier"/>
<result column="modify_date" property="modifyDate"/> <result column="modify_date" property="modifyDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="del_flag" property="delFlag"/> <result column="del_flag" property="delFlag"/>
<result column="application_code" property="applicationCode"/> <result column="application_code" property="applicationCode"/>
<result column="tenant_code" property="tenantCode"/> <result column="tenant_code" property="tenantCode"/>
...@@ -90,9 +90,9 @@ ...@@ -90,9 +90,9 @@
#{serviceId}, #{serviceId},
#{time}, #{time},
#{creator}, #{creator},
#{createDate}, #{createDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{modifier}, #{modifier},
#{modifyDate}, #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{delFlag}, #{delFlag},
#{applicationCode}, #{applicationCode},
#{tenantCode} #{tenantCode}
......
...@@ -15,9 +15,9 @@ ...@@ -15,9 +15,9 @@
<result column="path" property="path"/> <result column="path" property="path"/>
<result column="remark" property="remark"/> <result column="remark" property="remark"/>
<result column="creator" property="creator"/> <result column="creator" property="creator"/>
<result column="create_date" property="createDate"/> <result column="create_date" property="createDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="modifier" property="modifier"/> <result column="modifier" property="modifier"/>
<result column="modify_date" property="modifyDate"/> <result column="modify_date" property="modifyDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="del_flag" property="delFlag"/> <result column="del_flag" property="delFlag"/>
<result column="application_code" property="applicationCode"/> <result column="application_code" property="applicationCode"/>
<result column="tenant_code" property="tenantCode"/> <result column="tenant_code" property="tenantCode"/>
...@@ -103,9 +103,9 @@ ...@@ -103,9 +103,9 @@
#{path}, #{path},
#{remark}, #{remark},
#{creator}, #{creator},
#{createDate}, #{createDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{modifier}, #{modifier},
#{modifyDate}, #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{delFlag}, #{delFlag},
#{applicationCode}, #{applicationCode},
#{tenantCode} #{tenantCode}
...@@ -189,7 +189,7 @@ ...@@ -189,7 +189,7 @@
del_flag = #{delFlag}, del_flag = #{delFlag},
</if> </if>
modifier = #{modifier}, modifier = #{modifier},
modify_date = #{modifyDate} modify_date = #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date}
WHERE WHERE
<if test="id != null"> <if test="id != null">
id = #{id} id = #{id}
...@@ -201,7 +201,9 @@ ...@@ -201,7 +201,9 @@
<delete id="delete"> <delete id="delete">
UPDATE sys_menu SET UPDATE sys_menu SET
del_flag = 1 del_flag = 1,
modifier = #{modifier} ,
modify_date = #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date}
WHERE id = #{id} WHERE id = #{id}
</delete> </delete>
</mapper> </mapper>
...@@ -9,9 +9,9 @@ ...@@ -9,9 +9,9 @@
<result column="status" property="status"/> <result column="status" property="status"/>
<result column="is_default" property="isDefault"/> <result column="is_default" property="isDefault"/>
<result column="creator" property="creator"/> <result column="creator" property="creator"/>
<result column="create_date" property="createDate"/> <result column="create_date" property="createDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="modifier" property="modifier"/> <result column="modifier" property="modifier"/>
<result column="modify_date" property="modifyDate"/> <result column="modify_date" property="modifyDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="del_flag" property="delFlag"/> <result column="del_flag" property="delFlag"/>
<result column="application_code" property="applicationCode"/> <result column="application_code" property="applicationCode"/>
<result column="tenant_code" property="tenantCode"/> <result column="tenant_code" property="tenantCode"/>
...@@ -105,9 +105,9 @@ ...@@ -105,9 +105,9 @@
#{status}, #{status},
#{isDefault}, #{isDefault},
#{creator}, #{creator},
#{createDate}, #{createDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{modifier}, #{modifier},
#{modifyDate}, #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{delFlag}, #{delFlag},
#{applicationCode}, #{applicationCode},
#{tenantCode} #{tenantCode}
...@@ -135,7 +135,7 @@ ...@@ -135,7 +135,7 @@
del_flag = #{delFlag}, del_flag = #{delFlag},
</if> </if>
modifier = #{modifier}, modifier = #{modifier},
modify_date = #{modifyDate} modify_date = #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date}
WHERE WHERE
<if test="id != null"> <if test="id != null">
id = #{id} id = #{id}
...@@ -144,7 +144,9 @@ ...@@ -144,7 +144,9 @@
<delete id="delete"> <delete id="delete">
UPDATE sys_role SET UPDATE sys_role SET
del_flag = 1 del_flag = 1,
modifier = #{modifier} ,
modify_date = #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date}
WHERE id = #{id} WHERE id = #{id}
</delete> </delete>
......
...@@ -11,9 +11,9 @@ ...@@ -11,9 +11,9 @@
<result column="sort" property="sort"/> <result column="sort" property="sort"/>
<result column="status" property="status"/> <result column="status" property="status"/>
<result column="creator" property="creator"/> <result column="creator" property="creator"/>
<result column="create_date" property="createDate"/> <result column="create_date" property="createDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="modifier" property="modifier"/> <result column="modifier" property="modifier"/>
<result column="modify_date" property="modifyDate"/> <result column="modify_date" property="modifyDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="del_flag" property="delFlag"/> <result column="del_flag" property="delFlag"/>
<result column="application_code" property="applicationCode"/> <result column="application_code" property="applicationCode"/>
</resultMap> </resultMap>
...@@ -99,9 +99,9 @@ ...@@ -99,9 +99,9 @@
#{sort}, #{sort},
#{status}, #{status},
#{creator}, #{creator},
#{createDate}, #{createDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{modifier}, #{modifier},
#{modifyDate}, #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{delFlag}, #{delFlag},
#{applicationCode} #{applicationCode}
) )
...@@ -131,7 +131,7 @@ ...@@ -131,7 +131,7 @@
status = #{status}, status = #{status},
</if> </if>
modifier = #{modifier}, modifier = #{modifier},
modify_date = #{modifyDate} modify_date = #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date}
WHERE WHERE
<if test="id != null"> <if test="id != null">
id = #{id} id = #{id}
...@@ -140,7 +140,9 @@ ...@@ -140,7 +140,9 @@
<delete id="delete"> <delete id="delete">
UPDATE sys_route SET UPDATE sys_route SET
del_flag = 1 del_flag = 1,
modifier = #{modifier} ,
modify_date = #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date}
WHERE id = #{id} WHERE id = #{id}
</delete> </delete>
......
...@@ -8,9 +8,9 @@ ...@@ -8,9 +8,9 @@
<result column="tenant_desc" property="tenantDesc"/> <result column="tenant_desc" property="tenantDesc"/>
<result column="status" property="status"/> <result column="status" property="status"/>
<result column="creator" property="creator"/> <result column="creator" property="creator"/>
<result column="create_date" property="createDate"/> <result column="create_date" property="createDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="modifier" property="modifier"/> <result column="modifier" property="modifier"/>
<result column="modify_date" property="modifyDate"/> <result column="modify_date" property="modifyDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="del_flag" property="delFlag"/> <result column="del_flag" property="delFlag"/>
</resultMap> </resultMap>
...@@ -77,9 +77,9 @@ ...@@ -77,9 +77,9 @@
#{tenantDesc}, #{tenantDesc},
#{status}, #{status},
#{creator}, #{creator},
#{createDate}, #{createDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{modifier}, #{modifier},
#{modifyDate}, #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{delFlag} #{delFlag}
) )
</insert> </insert>
...@@ -99,13 +99,15 @@ ...@@ -99,13 +99,15 @@
del_flag = #{delFlag}, del_flag = #{delFlag},
</if> </if>
modifier = #{modifier}, modifier = #{modifier},
modify_date = #{modifyDate} modify_date = #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date}
WHERE id = #{id} WHERE id = #{id}
</update> </update>
<delete id="delete"> <delete id="delete">
UPDATE sys_tenant SET UPDATE sys_tenant SET
DEL_FLAG = 1 del_flag = 1,
modifier = #{modifier} ,
modify_date = #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date}
WHERE ID = #{id} WHERE ID = #{id}
</delete> </delete>
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.github.tangyi.user.mapper.UserAuthsMapper">
<resultMap id="userAuthResultMap" type="com.github.tangyi.user.api.module.UserAuths">
<id column="id" property="id"/>
<result column="user_id" property="userId"/>
<result column="identity_type" property="identityType"/>
<result column="identifier" property="identifier"/>
<result column="credential" property="credential"/>
<result column="creator" property="creator"/>
<result column="create_date" property="createDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="modifier" property="modifier"/>
<result column="modify_date" property="modifyDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="del_flag" property="delFlag"/>
<result column="application_code" property="applicationCode"/>
<result column="tenant_code" property="tenantCode"/>
</resultMap>
<sql id="userAuthColumns">
a.id,
a.user_id,
a.identity_type,
a.identifier,
a.credential,
a.creator,
a.create_date,
a.modifier,
a.modify_date,
a.del_flag,
a.application_code,
a.tenant_code
</sql>
<!-- where 条件 -->
<sql id="whereColumnList">
<if test="identityType != null and identityType != ''">
and a.identity_type = #{identityType}
</if>
<if test="tenantCode != null and tenantCode != ''">
and a.tenant_code = #{tenantCode}
</if>
</sql>
<select id="get" resultMap="userAuthResultMap">
SELECT
<include refid="userAuthColumns"/>
FROM sys_user_auths a
WHERE a.id = #{id}
</select>
<select id="getByIdentifier" resultMap="userAuthResultMap">
SELECT
<include refid="userAuthColumns"/>
FROM sys_user_auths a
WHERE a.identifier = #{identifier} and a.del_flag = 0
<include refid="whereColumnList"/>
</select>
<select id="getListByUserIds" resultMap="userAuthResultMap">
SELECT
<include refid="userAuthColumns"/>
FROM sys_user_auths a
WHERE a.user_id IN
<foreach collection="userIds" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
<select id="findList" resultMap="userAuthResultMap">
SELECT
<include refid="userAuthColumns"/>
FROM sys_user_auths a
WHERE a.del_flag = 0
<include refid="whereColumnList"/>
</select>
<select id="findListById" resultMap="userAuthResultMap">
SELECT
<include refid="userAuthColumns"/>
FROM sys_user_auths a
WHERE a.id IN
<foreach collection="ids" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
<!-- 新增用户 -->
<insert id="insert">
insert into sys_user_auths (
id,
user_id,
identity_type,
identifier,
credential,
creator,
create_date,
modifier,
modify_date,
del_flag,
application_code,
tenant_code
) values (
#{id},
#{userId},
#{identityType},
#{identifier},
#{credential},
#{creator},
#{createDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{modifier},
#{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{delFlag},
#{applicationCode},
#{tenantCode}
);
</insert>
<!-- 更新用户 -->
<update id="update">
update sys_user_auths set
<if test="userId != null">
user_id = #{userId} ,
</if>
<if test="identityType != null">
identity_type = #{identityType} ,
</if>
<if test="identifier != null">
identifier = #{identifier} ,
</if>
<if test="credential != null">
credential = #{credential} ,
</if>
<if test="creator != null">
creator = #{creator} ,
</if>
<if test="createDate != null">
create_date = #{createDate} ,
</if>
<if test="delFlag != null">
del_flag = #{delFlag} ,
</if>
<if test="applicationCode != null">
application_code = #{applicationCode} ,
</if>
modifier = #{modifier} ,
modify_date = #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date}
where id = #{id}
</update>
<update id="delete">
DELETE FROM sys_user_auths WHERE id = #{id}
</update>
<update id="deleteByIdentifier">
DELETE FROM sys_user_auths WHERE identifier = #{identifier}
</update>
<update id="deleteByUserId">
DELETE FROM sys_user_auths WHERE user_id = #{userId}
</update>
<delete id="deleteAll">
DELETE FROM sys_user_auths WHERE id in
<foreach item="item" index="index" collection="array" open="("
separator="," close=")">#{item}
</foreach>
</delete>
</mapper>
...@@ -4,74 +4,32 @@ ...@@ -4,74 +4,32 @@
<resultMap id="userResultMap" type="com.github.tangyi.user.api.module.User"> <resultMap id="userResultMap" type="com.github.tangyi.user.api.module.User">
<id column="id" property="id"/> <id column="id" property="id"/>
<result column="name" property="name"/> <result column="name" property="name"/>
<result column="username" property="username"/>
<result column="password" property="password"/>
<result column="salt" property="salt"/>
<result column="phone" property="phone"/> <result column="phone" property="phone"/>
<result column="avatar_id" property="avatarId"/> <result column="avatar_id" property="avatarId"/>
<result column="email" property="email"/> <result column="email" property="email"/>
<result column="sex" property="sex"/> <result column="sex" property="sex"/>
<result column="born" property="born"/> <result column="born" property="born" jdbcType="DATE" javaType="java.util.Date"/>
<result column="remark" property="remark"/> <result column="user_desc" property="userDesc"/>
<result column="dept_id" property="deptId"/> <result column="dept_id" property="deptId"/>
<result column="status" property="status"/> <result column="status" property="status"/>
<result column="creator" property="creator"/> <result column="creator" property="creator"/>
<result column="create_date" property="createDate"/> <result column="create_date" property="createDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="modifier" property="modifier"/> <result column="modifier" property="modifier"/>
<result column="modify_date" property="modifyDate"/> <result column="modify_date" property="modifyDate" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
<result column="del_flag" property="delFlag"/> <result column="del_flag" property="delFlag"/>
<result column="application_code" property="applicationCode"/> <result column="application_code" property="applicationCode"/>
<result column="tenant_code" property="tenantCode"/> <result column="tenant_code" property="tenantCode"/>
</resultMap> </resultMap>
<resultMap id="userVoResultMap" type="com.github.tangyi.common.core.vo.UserVo">
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="username" property="username"/>
<result column="password" property="password"/>
<result column="salt" property="salt"/>
<result column="phone" property="phone"/>
<result column="avatar_id" property="avatarId"/>
<result column="email" property="email"/>
<result column="sex" property="sex"/>
<result column="born" property="born"/>
<result column="remark" property="remark"/>
<result column="dept_id" property="deptId"/>
<result column="status" property="status"/>
<result column="ucreator" property="creator"/>
<result column="ucreate_date" property="createDate"/>
<result column="umodifier" property="modifier"/>
<result column="umodify_date" property="modifyDate"/>
<result column="udel_flag" property="delFlag"/>
<result column="uapplication_code" property="applicationCode"/>
<result column="utenant_code" property="tenantCode"/>
<collection property="roleList" ofType="com.github.tangyi.common.core.vo.Role">
<id column="roleId" property="id"/>
<result column="role_name" property="roleName"/>
<result column="role_code" property="roleCode"/>
<result column="role_desc" property="roleDesc"/>
<result column="rcreator" property="creator"/>
<result column="rcreate_date" property="createDate"/>
<result column="rmodifier" property="modifier"/>
<result column="rmodify_date" property="modifyDate"/>
<result column="rdel_flag" property="delFlag"/>
<result column="rapplication_code" property="applicationCode"/>
<result column="rtenant_code" property="tenantCode"/>
</collection>
</resultMap>
<sql id="userColumns"> <sql id="userColumns">
a.id, a.id,
a.name, a.name,
a.username,
a.password,
a.salt,
a.phone, a.phone,
a.avatar_id, a.avatar_id,
a.email, a.email,
a.sex, a.sex,
a.born, a.born,
a.remark, a.user_desc,
a.dept_id, a.dept_id,
a.status, a.status,
a.creator, a.creator,
...@@ -86,10 +44,7 @@ ...@@ -86,10 +44,7 @@
<!-- where 条件 --> <!-- where 条件 -->
<sql id="whereColumnList"> <sql id="whereColumnList">
<if test="name != null and name != ''"> <if test="name != null and name != ''">
and a.name like CONCAT('%', #{username},'%') and a.name like CONCAT('%', #{name},'%')
</if>
<if test="username != null and username != ''">
and a.username like #{username}
</if> </if>
<if test="born != null and born != '' "> <if test="born != null and born != '' ">
and a.born like #{born} and a.born like #{born}
...@@ -108,55 +63,6 @@ ...@@ -108,55 +63,6 @@
</if> </if>
</sql> </sql>
<sql id="selectUserVo">
SELECT
`user`.id,
`user`.name,
`user`.username,
`user`.password,
`user`.salt,
`user`.phone,
`user`.avatar_id,
`user`.email,
`user`.sex,
`user`.born,
`user`.remark,
`user`.dept_id,
`user`.status,
`user`.creator as "ucreator",
`user`.create_date as "ucreate_date",
`user`.modifier as "umodifier",
`user`.modify_date as "umodify_date",
`user`.del_flag as "udel_flag",
`user`.application_code as "uapplication_code",
`user`.tenant_code as "utenant_code",
r.id as "roleId",
r.role_name,
r.role_code,
r.role_desc,
r.creator as "rcreator",
r.create_date as "rcreate_date",
r.modifier as "rmodifier",
r.modify_date as "rmodify_date",
r.del_flag as "rdel_flag",
r.application_code as "rapplication_code",
r.tenant_code as "rtenant_code"
FROM
sys_user as `user`
LEFT JOIN sys_user_role ur ON ur.user_id = `user`.id
LEFT JOIN sys_role r ON r.id = ur.role_id
</sql>
<select id="selectUserVoByUsername" resultMap="userVoResultMap">
<include refid="selectUserVo"/>
WHERE `user`.username = #{username} and `user`.tenant_code = #{tenantCode} and `user`.del_flag = 0
</select>
<select id="selectUserVoBySocial" resultMap="userVoResultMap">
<include refid="selectUserVo"/>
WHERE `user`.phone = #{social} and `user`.tenant_code = #{tenantCode} and `user`.del_flag = 0
</select>
<select id="get" resultMap="userResultMap"> <select id="get" resultMap="userResultMap">
SELECT SELECT
<include refid="userColumns"/> <include refid="userColumns"/>
...@@ -189,18 +95,15 @@ ...@@ -189,18 +95,15 @@
<!-- 新增用户 --> <!-- 新增用户 -->
<insert id="insert"> <insert id="insert">
insert into sys_user ( insert into sys_user (
id, id,
name, name,
username,
password,
salt,
phone, phone,
avatar_id, avatar_id,
email, email,
sex, sex,
born, born,
remark, user_desc,
dept_id, dept_id,
status, status,
creator, creator,
...@@ -213,21 +116,18 @@ ...@@ -213,21 +116,18 @@
) values ( ) values (
#{id}, #{id},
#{name}, #{name},
#{username},
#{password},
#{salt},
#{phone}, #{phone},
#{avatarId}, #{avatarId},
#{email}, #{email},
#{sex}, #{sex},
#{born}, #{born, jdbcType=DATE, javaType=java.util.Date},
#{remark}, #{userDesc},
#{deptId}, #{deptId},
#{status}, #{status},
#{creator}, #{creator},
#{createDate}, #{createDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{modifier}, #{modifier},
#{modifyDate}, #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date},
#{delFlag}, #{delFlag},
#{applicationCode}, #{applicationCode},
#{tenantCode} #{tenantCode}
...@@ -240,15 +140,6 @@ ...@@ -240,15 +140,6 @@
<if test="name != null"> <if test="name != null">
name = #{name} , name = #{name} ,
</if> </if>
<if test="username != null">
username = #{username} ,
</if>
<if test="password != null">
password = #{password} ,
</if>
<if test="salt != null">
salt = #{salt} ,
</if>
<if test="phone != null"> <if test="phone != null">
phone = #{phone} , phone = #{phone} ,
</if> </if>
...@@ -264,8 +155,8 @@ ...@@ -264,8 +155,8 @@
<if test="born != null"> <if test="born != null">
born = #{born} , born = #{born} ,
</if> </if>
<if test="remark != null"> <if test="userDesc != null">
remark = #{remark} , user_desc = #{userDesc} ,
</if> </if>
<if test="deptId != null"> <if test="deptId != null">
dept_id = #{deptId} , dept_id = #{deptId} ,
...@@ -286,7 +177,7 @@ ...@@ -286,7 +177,7 @@
application_code = #{applicationCode} , application_code = #{applicationCode} ,
</if> </if>
modifier = #{modifier} , modifier = #{modifier} ,
modify_date = #{modifyDate} modify_date = #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date}
where id = #{id} where id = #{id}
</update> </update>
...@@ -294,7 +185,7 @@ ...@@ -294,7 +185,7 @@
update sys_user set update sys_user set
del_flag = 1, del_flag = 1,
modifier = #{modifier} , modifier = #{modifier} ,
modify_date = #{modifyDate} modify_date = #{modifyDate, jdbcType=TIMESTAMP, javaType=java.util.Date}
where id = #{id} where id = #{id}
</update> </update>
......
...@@ -3,6 +3,8 @@ package com.github.tangyi.exam.api.dto; ...@@ -3,6 +3,8 @@ package com.github.tangyi.exam.api.dto;
import com.github.tangyi.common.core.persistence.BaseEntity; import com.github.tangyi.common.core.persistence.BaseEntity;
import lombok.Data; import lombok.Data;
import java.util.Date;
/** /**
* 考试记录DTO * 考试记录DTO
* *
...@@ -40,17 +42,17 @@ public class ExaminationRecordDto extends BaseEntity<ExaminationRecordDto> { ...@@ -40,17 +42,17 @@ public class ExaminationRecordDto extends BaseEntity<ExaminationRecordDto> {
/** /**
* 当前时间 * 当前时间
*/ */
private String currentTime; private Date currentTime;
/** /**
* 考试开始时间 * 考试开始时间
*/ */
private String startTime; private Date startTime;
/** /**
* 考试结束时间 * 考试结束时间
*/ */
private String endTime; private Date endTime;
/** /**
* 考试持续时间 * 考试持续时间
......
...@@ -4,6 +4,7 @@ import com.github.tangyi.common.core.persistence.BaseEntity; ...@@ -4,6 +4,7 @@ import com.github.tangyi.common.core.persistence.BaseEntity;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import java.util.Date;
/** /**
* 考试 * 考试
...@@ -34,12 +35,12 @@ public class Examination extends BaseEntity<Examination> { ...@@ -34,12 +35,12 @@ public class Examination extends BaseEntity<Examination> {
/** /**
* 考试开始时间 * 考试开始时间
*/ */
private String startTime; private Date startTime;
/** /**
* 考试结束时间 * 考试结束时间
*/ */
private String endTime; private Date endTime;
/** /**
* 总分 * 总分
......
...@@ -4,6 +4,7 @@ import com.github.tangyi.common.core.persistence.BaseEntity; ...@@ -4,6 +4,7 @@ import com.github.tangyi.common.core.persistence.BaseEntity;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import java.util.Date;
/** /**
* 考试记录 * 考试记录
...@@ -29,12 +30,12 @@ public class ExaminationRecord extends BaseEntity<ExaminationRecord> { ...@@ -29,12 +30,12 @@ public class ExaminationRecord extends BaseEntity<ExaminationRecord> {
/** /**
* 开始时间 * 开始时间
*/ */
private String startTime; private Date startTime;
/** /**
* 结束时间 * 结束时间
*/ */
private String endTime; private Date endTime;
/** /**
* 成绩 * 成绩
......
...@@ -8,8 +8,8 @@ package com.github.tangyi.user.api.constant; ...@@ -8,8 +8,8 @@ package com.github.tangyi.user.api.constant;
*/ */
public class RoleConstant { public class RoleConstant {
public static final String IS_DEFAULT_ROLE = "1"; public static final Integer IS_DEFAULT_ROLE = 1;
public static final String NORMAL_ROLE = "0"; public static final Integer NORMAL_ROLE = 0;
} }
...@@ -33,18 +33,12 @@ public class DeptDto extends TreeEntity<DeptDto> { ...@@ -33,18 +33,12 @@ public class DeptDto extends TreeEntity<DeptDto> {
*/ */
private String parentId; private String parentId;
/**
* 状态, 0-启用,1-禁用
*/
private String status;
public DeptDto(Dept dept) { public DeptDto(Dept dept) {
this.id = dept.getId(); this.id = dept.getId();
this.deptName = dept.getDeptName(); this.deptName = dept.getDeptName();
this.deptDesc = dept.getDeptDesc(); this.deptDesc = dept.getDeptDesc();
this.deptLeader = dept.getDeptLeader(); this.deptLeader = dept.getDeptLeader();
this.parentId = dept.getParentId(); this.parentId = dept.getParentId();
this.status = dept.getStatus();
this.sort = Integer.parseInt(dept.getSort()); this.sort = Integer.parseInt(dept.getSort());
this.creator = dept.getCreator(); this.creator = dept.getCreator();
this.createDate = dept.getCreateDate(); this.createDate = dept.getCreateDate();
......
package com.github.tangyi.user.api.dto; package com.github.tangyi.user.api.dto;
import com.github.tangyi.user.api.module.User; import com.github.tangyi.common.core.persistence.BaseEntity;
import com.github.tangyi.user.api.module.Role;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.Email;
import javax.validation.constraints.Pattern;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
...@@ -13,7 +17,22 @@ import java.util.List; ...@@ -13,7 +17,22 @@ import java.util.List;
* @date 2018/8/26 14:36 * @date 2018/8/26 14:36
*/ */
@Data @Data
public class UserDto extends User { public class UserDto extends BaseEntity<UserDto> {
/**
* 授权类型,1:用户名密码,2:手机号,3:邮箱,4:微信,5:QQ
*/
private Integer identityType;
/**
* 唯一标识,如用户名、手机号
*/
private String identifier;
/**
* 密码凭证,跟授权类型有关,如密码、第三方系统的token等
*/
private String credential;
/** /**
* 角色 * 角色
...@@ -26,6 +45,11 @@ public class UserDto extends User { ...@@ -26,6 +45,11 @@ public class UserDto extends User {
private String deptId; private String deptId;
/** /**
* 部门名称
*/
private String deptName;
/**
* 旧密码 * 旧密码
*/ */
private String oldPassword; private String oldPassword;
...@@ -34,4 +58,51 @@ public class UserDto extends User { ...@@ -34,4 +58,51 @@ public class UserDto extends User {
* 新密码 * 新密码
*/ */
private String newPassword; private String newPassword;
/**
* 姓名
*/
private String name;
/**
* 电话
*/
@Pattern(regexp = "^\\d{11}$", message = "请输入11位手机号")
private String phone;
/**
* 头像id
*/
private String avatarId;
/**
* 邮箱
*/
@Email(message = "邮箱格式不正确")
private String email;
/**
* 性别
*/
private Integer sex;
/**
* 出生日期
*/
private Date born;
/**
* 描述
*/
private String userDesc;
/**
* 状态
*/
private Integer status;
/**
* 角色列表
*/
private List<Role> roleList;
} }
package com.github.tangyi.user.api.dto; package com.github.tangyi.user.api.dto;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date;
/** /**
* @author tangyi * @author tangyi
...@@ -16,14 +18,25 @@ public class UserInfoDto implements Serializable { ...@@ -16,14 +18,25 @@ public class UserInfoDto implements Serializable {
private String id; private String id;
/** /**
* 姓名 * 授权类型,1:用户名密码,2:手机号,3:邮箱,4:微信,5:QQ
*/ */
private String name; private Integer identityType;
/**
* 唯一标识,如用户名、手机号
*/
private String identifier;
/**
* 密码
*/
@JsonIgnore
private String credential;
/** /**
* 用户 *
*/ */
private String username; private String name;
/** /**
* 电话号码 * 电话号码
...@@ -48,12 +61,12 @@ public class UserInfoDto implements Serializable { ...@@ -48,12 +61,12 @@ public class UserInfoDto implements Serializable {
/** /**
* 性别 * 性别
*/ */
private String sex; private Integer sex;
/** /**
* 生日 * 生日
*/ */
private String born; private Date born;
/** /**
* 部门名称 * 部门名称
...@@ -73,7 +86,7 @@ public class UserInfoDto implements Serializable { ...@@ -73,7 +86,7 @@ public class UserInfoDto implements Serializable {
/** /**
* 状态,0-启用,1-禁用 * 状态,0-启用,1-禁用
*/ */
private String status; private Integer status;
/** /**
* 权限信息 * 权限信息
...@@ -84,4 +97,14 @@ public class UserInfoDto implements Serializable { ...@@ -84,4 +97,14 @@ public class UserInfoDto implements Serializable {
* 角色信息 * 角色信息
*/ */
private String[] roles; private String[] roles;
/**
* 系统编号
*/
private String applicationCode;
/**
* 租户标识
*/
private String tenantCode;
} }
package com.github.tangyi.user.api.enums;
/**
* 用户授权类型
*
* @author tangyi
* @date 2019/07/03 13:35
*/
public enum IdentityType {
PASSWORD(1, "密码"),
PHONE_NUMBER(2, "手机号"),
EMAIL(3, "邮箱"),
WE_CHAT(4, "微信"),
QQ(5, "QQ");
IdentityType(Integer value, String desc) {
this.value = value;
this.desc = desc;
}
private Integer value;
private String desc;
/**
* 根据类型返回具体的IdentityType
*
* @param type type
* @return IdentityType
*/
public static IdentityType match(Integer type) {
for (IdentityType item : IdentityType.values()) {
if (item.value.equals(type)) {
return item;
}
}
return IdentityType.PASSWORD;
}
public Integer getValue() {
return value;
}
public void setValue(Integer value) {
this.value = value;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
...@@ -28,14 +28,14 @@ public interface UserServiceClient { ...@@ -28,14 +28,14 @@ public interface UserServiceClient {
/** /**
* 根据用户名获取用户详细信息 * 根据用户名获取用户详细信息
* *
* @param username username * @param identifier identifier
* @param tenantCode 租户标识 * @param tenantCode 租户标识
* @return UserVo * @return UserVo
* @author tangyi * @author tangyi
* @date 2019/03/17 12:14 * @date 2019/03/17 12:14
*/ */
@GetMapping("/v1/user/findUserByUsername/{username}") @GetMapping("/v1/user/findUserByIdentifier/{identifier}")
UserVo findUserByUsername(@PathVariable("username") String username, @RequestParam("tenantCode") String tenantCode); UserVo findUserByIdentifier(@PathVariable("identifier") String identifier, @RequestParam("tenantCode") String tenantCode);
/** /**
* 获取当前用户的信息 * 获取当前用户的信息
......
...@@ -31,14 +31,14 @@ public class UserServiceClientFallbackImpl implements UserServiceClient { ...@@ -31,14 +31,14 @@ public class UserServiceClientFallbackImpl implements UserServiceClient {
/** /**
* 根据用户名查询用户信息 * 根据用户名查询用户信息
* *
* @param username username * @param identifier identifier
* @param tenantCode 租户标识 * @param tenantCode 租户标识
* @param tenantCode 租户标识 * @param tenantCode 租户标识
* @return UserVo * @return UserVo
*/ */
@Override @Override
public UserVo findUserByUsername(String username, String tenantCode) { public UserVo findUserByIdentifier(String identifier, String tenantCode) {
log.error("feign 查询用户信息失败:{}, {}, {}", tenantCode, username, throwable); log.error("feign 查询用户信息失败:{}, {}, {}", tenantCode, identifier, throwable);
return null; return null;
} }
......
...@@ -39,10 +39,4 @@ public class Dept extends BaseEntity<Dept> { ...@@ -39,10 +39,4 @@ public class Dept extends BaseEntity<Dept> {
* 排序 * 排序
*/ */
private String sort; private String sort;
/**
* 状态, 0-启用,1-禁用
*/
@NotBlank(message = "部门状态不能为空")
private String status;
} }
...@@ -22,7 +22,7 @@ public class Role extends BaseEntity<Role> { ...@@ -22,7 +22,7 @@ public class Role extends BaseEntity<Role> {
private String roleDesc; private String roleDesc;
private String status; private Integer status;
private String deptName; private String deptName;
...@@ -31,5 +31,5 @@ public class Role extends BaseEntity<Role> { ...@@ -31,5 +31,5 @@ public class Role extends BaseEntity<Role> {
/** /**
* 是否默认 0-否,1-是 * 是否默认 0-否,1-是
*/ */
private String isDefault; private Integer isDefault;
} }
...@@ -4,12 +4,12 @@ import com.github.tangyi.common.core.persistence.BaseEntity; ...@@ -4,12 +4,12 @@ import com.github.tangyi.common.core.persistence.BaseEntity;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.Email; import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern; import javax.validation.constraints.Pattern;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
* 用户实体 * 用户基本信息
* *
* @author tangyi * @author tangyi
* @date 2018-08-25 15:30 * @date 2018-08-25 15:30
...@@ -17,34 +17,51 @@ import java.util.List; ...@@ -17,34 +17,51 @@ import java.util.List;
@Data @Data
public class User extends BaseEntity<User> { public class User extends BaseEntity<User> {
/**
* 姓名
*/
private String name; private String name;
@NotBlank(message = "用户名不能为空") /**
private String username; * 电话
*/
@NotBlank(message = "密码不能为空")
private String password;
private String salt;
@Pattern(regexp = "^\\d{11}$", message = "请输入11位手机号") @Pattern(regexp = "^\\d{11}$", message = "请输入11位手机号")
private String phone; private String phone;
/**
* 头像id
*/
private String avatarId; private String avatarId;
/**
* 邮箱
*/
@Email(message = "邮箱格式不正确") @Email(message = "邮箱格式不正确")
private String email; private String email;
private String sex; /**
* 性别
private String born; */
private Integer sex;
private String remark; /**
* 出生日期
*/
private Date born;
private String status; /**
* 描述
*/
private String userDesc;
private String deptName; /**
* 状态
*/
private Integer status;
/**
* 部门id
*/
private String deptId; private String deptId;
/** /**
......
package com.github.tangyi.user.api.module;
import com.github.tangyi.common.core.persistence.BaseEntity;
import com.github.tangyi.user.api.enums.IdentityType;
import lombok.Data;
/**
* 用户授权信息
*
* @author tangyi
* @date 2019/07/03 11:10
*/
@Data
public class UserAuths extends BaseEntity<UserAuths> {
/**
* 用户id
*/
private String userId;
/**
* 授权类型,1:用户名密码,2:手机号,3:邮箱,4:微信,5:QQ
*/
private Integer identityType = IdentityType.PASSWORD.getValue();
/**
* 唯一标识,如用户名、手机号
*/
private String identifier;
/**
* 密码凭证,跟授权类型有关,如密码、第三方系统的token等
*/
private String credential;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment