huangyao 2021-01-12 22:49:34 +08:00
commit c7e145d607
19 changed files with 213 additions and 63 deletions

View File

@ -110,16 +110,6 @@ public class AuthConfigExpander {
return ConfigContext.me().getSysConfigValueWithDefault("SYS_AUTH_PARAM_NAME", String.class, DEFAULT_AUTH_PARAM_NAME);
}
/**
*
*
* @author luojie
* @date 2020/11/6 10:05
*/
public static String getDefaultPassWord() {
return ConfigContext.me().getSysConfigValueWithDefault("SYS_DEFAULT_PASSWORD", String.class, DEFAULT_PASSWORD);
}
/**
* cookie
* <p>

View File

@ -48,6 +48,13 @@
<version>1.0.0</version>
</dependency>
<!--log-sdk-db-->
<dependency>
<groupId>cn.stylefeng.roses</groupId>
<artifactId>log-sdk-db</artifactId>
<version>1.0.0</version>
</dependency>
<!--web模块-->
<dependency>
<groupId>org.springframework.boot</groupId>

View File

@ -2,6 +2,7 @@ package cn.stylefeng.roses.kernel.log.modular.manage.controller;
import cn.stylefeng.roses.kernel.log.api.LogManagerApi;
import cn.stylefeng.roses.kernel.log.api.pojo.manage.LogManagerParam;
import cn.stylefeng.roses.kernel.log.db.service.SysLogService;
import cn.stylefeng.roses.kernel.resource.api.annotation.ApiResource;
import cn.stylefeng.roses.kernel.resource.api.annotation.GetResource;
import cn.stylefeng.roses.kernel.resource.api.annotation.PostResource;
@ -29,6 +30,12 @@ public class LogManagerController {
@Resource
private LogManagerApi logManagerApi;
/**
* service
*/
@Resource
private SysLogService sysLogService;
/**
*
*
@ -63,4 +70,15 @@ public class LogManagerController {
return new SuccessResponseData();
}
/**
*
*
* @author TSQ
* @date 2021/1/11 17:36
*/
@GetResource(name = "查看日志详情", path = "/logManager/detail")
public ResponseData detail(@Validated(LogManagerParam.detail.class) LogManagerParam logManagerParam) {
return new SuccessResponseData(sysLogService.detail(logManagerParam));
}
}

View File

@ -1,8 +1,6 @@
package cn.stylefeng.roses.kernel.log.db;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory;
@ -106,7 +104,9 @@ public class DbLogManagerServiceImpl implements LogManagerApi {
private void createQueryCondition(LogManagerParam logManagerParam, LambdaQueryWrapper<SysLog> sysLogLambdaQueryWrapper) {
// 设置查询条件的起始时间和结束时间
sysLogLambdaQueryWrapper.between(SysLog::getCreateTime, logManagerParam.getBeginDateTime(), logManagerParam.getEndDateTime());
if (StrUtil.isNotBlank(logManagerParam.getBeginDateTime()) && StrUtil.isNotBlank(logManagerParam.getEndDateTime())) {
sysLogLambdaQueryWrapper.between(SysLog::getCreateTime, logManagerParam.getBeginDateTime(), logManagerParam.getEndDateTime());
}
// 根据日志名称查询
String name = logManagerParam.getLogName();
@ -179,17 +179,6 @@ public class DbLogManagerServiceImpl implements LogManagerApi {
logManagerParam.setPageSize(DEFAULT_PAGE_SIZE);
}
// 开始时间为空则用当天时间开始时间
if (StrUtil.isEmpty(logManagerParam.getBeginDateTime())) {
String beginDateTime = DateUtil.beginOfDay(DateUtil.date()).toString(DatePattern.NORM_DATETIME_FORMAT);
logManagerParam.setBeginDateTime(beginDateTime);
}
// 结束时间为空则默认用当前时间加一天
if (StrUtil.isEmpty(logManagerParam.getEndDateTime())) {
String endDateTime = DateUtil.beginOfDay(DateUtil.tomorrow()).toString(DatePattern.NORM_DATETIME_FORMAT);
logManagerParam.setEndDateTime(endDateTime);
}
}
}

View File

@ -1,5 +1,6 @@
package cn.stylefeng.roses.kernel.log.db.service;
import cn.stylefeng.roses.kernel.log.api.pojo.manage.LogManagerParam;
import cn.stylefeng.roses.kernel.log.db.entity.SysLog;
import com.baomidou.mybatisplus.extension.service.IService;
@ -11,4 +12,12 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface SysLogService extends IService<SysLog> {
/**
*
*
* @author TSQ
* @date 2021/1/11 17:51
*/
SysLog detail(LogManagerParam logManagerParam);
}

View File

@ -1,5 +1,6 @@
package cn.stylefeng.roses.kernel.log.db.service.impl;
import cn.stylefeng.roses.kernel.log.api.pojo.manage.LogManagerParam;
import cn.stylefeng.roses.kernel.log.db.entity.SysLog;
import cn.stylefeng.roses.kernel.log.db.mapper.SysLogMapper;
import cn.stylefeng.roses.kernel.log.db.service.SysLogService;
@ -15,4 +16,19 @@ import org.springframework.stereotype.Service;
@Service
public class SysLogServiceImpl extends ServiceImpl<SysLogMapper, SysLog> implements SysLogService {
@Override
public SysLog detail(LogManagerParam logManagerParam) {
return this.querySysLog(logManagerParam);
}
/**
*
*
* @author TSQ
* @date 2021/1/11 17:54
*/
private SysLog querySysLog(LogManagerParam logManagerParam) {
return this.getById(logManagerParam.getLogId());
}
}

View File

@ -8,6 +8,22 @@ package cn.stylefeng.roses.kernel.timer.api;
*/
public interface TimerExeService {
/**
*
*
* @author fengshuonan
* @date 2021/1/12 20:33
*/
void start();
/**
*
*
* @author fengshuonan
* @date 2021/1/12 20:33
*/
void stop();
/**
*
* <p>

View File

@ -0,0 +1,47 @@
package cn.stylefeng.roses.kernel.timer.modular.listener;
import cn.hutool.extra.spring.SpringUtil;
import cn.stylefeng.roses.kernel.timer.api.TimerExeService;
import cn.stylefeng.roses.kernel.timer.api.enums.TimerJobStatusEnum;
import cn.stylefeng.roses.kernel.timer.modular.entity.SysTimers;
import cn.stylefeng.roses.kernel.timer.modular.param.SysTimersParam;
import cn.stylefeng.roses.kernel.timer.modular.service.SysTimersService;
import org.springframework.boot.context.event.ApplicationStartedEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.core.Ordered;
import java.util.List;
/**
*
*
* @author fengshuonan
* @date 2021/1/12 20:40
*/
public class TaskRunListener implements ApplicationListener<ApplicationStartedEvent>, Ordered {
@Override
public void onApplicationEvent(ApplicationStartedEvent event) {
SysTimersService sysTimersService = SpringUtil.getBean(SysTimersService.class);
TimerExeService timerExeService = SpringUtil.getBean(TimerExeService.class);
// 开启任务调度
timerExeService.start();
// 获取数据库所有开启状态的任务
SysTimersParam sysTimersParam = new SysTimersParam();
sysTimersParam.setJobStatus(TimerJobStatusEnum.RUNNING.getCode());
List<SysTimers> list = sysTimersService.list(sysTimersParam);
// 添加定时任务到调度器
for (SysTimers sysTimers : list) {
timerExeService.startTimer(String.valueOf(sysTimers.getTimerId()), sysTimers.getCron(), sysTimers.getActionClass());
}
}
@Override
public int getOrder() {
return LOWEST_PRECEDENCE;
}
}

View File

@ -19,6 +19,20 @@ import lombok.extern.slf4j.Slf4j;
@Slf4j
public class HutoolTimerExeServiceImpl implements TimerExeService {
@Override
public void start() {
// 设置秒级别的启用
CronUtil.setMatchSecond(true);
// 启动定时器执行器
CronUtil.start();
}
@Override
public void stop() {
CronUtil.stop();
}
@Override
public void startTimer(String taskId, String cron, String className) {

View File

@ -1,2 +1,4 @@
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
cn.stylefeng.roses.kernel.timer.starter.GunsTimerAutoConfiguration
cn.stylefeng.roses.kernel.timer.starter.GunsTimerAutoConfiguration
org.springframework.context.ApplicationListener=\
cn.stylefeng.roses.kernel.timer.modular.listener.TaskRunListener

View File

@ -3,6 +3,8 @@ package cn.stylefeng.roses.kernel.system.expander;
import cn.stylefeng.roses.kernel.config.api.context.ConfigContext;
import cn.stylefeng.roses.kernel.system.constants.SystemConstants;
import static cn.stylefeng.roses.kernel.auth.api.constants.AuthConstants.DEFAULT_PASSWORD;
/**
*
*
@ -51,4 +53,14 @@ public class SystemConfigExpander {
return ConfigContext.me().getSysConfigValueWithDefault("SYS_SYSTEM_NAME", String.class, SystemConstants.DEFAULT_SYSTEM_NAME);
}
/**
*
*
* @author luojie
* @date 2020/11/6 10:05
*/
public static String getDefaultPassWord() {
return ConfigContext.me().getSysConfigValueWithDefault("SYS_DEFAULT_PASSWORD", String.class, DEFAULT_PASSWORD);
}
}

View File

@ -6,8 +6,6 @@ import cn.stylefeng.roses.kernel.validator.validators.unique.TableUniqueValue;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
@ -78,48 +76,46 @@ public class SysMenuRequest extends BaseRequest {
@NotNull(message = "排序不能为空", groups = {add.class, edit.class})
private BigDecimal menuSort;
/**
*
*/
private String icon;
/**
*
*/
private String router;
/**
*
*/
private String component;
/**
* 1-2-
*/
@Min(value = 1, message = "打开方式格式错误请检查openType参数", groups = {add.class, edit.class})
@Max(value = 2, message = "打开方式格式错误请检查openType参数", groups = {add.class, edit.class})
private Integer linkOpenType;
/**
*
*/
private String linkUrl;
/**
*
*/
private String remark;
/**
* layui-beetl
* layui-beetl
*/
private String layuiPath;
/**
* layui-beetl
* layui-beetl
*/
private String layuiIcon;
/**
* URL/menuantd vue
*/
private String antdvRouter;
/**
* antd vue
*/
private String antdvIcon;
/**
* antd vue
*/
private String antdvComponent;
/**
* 1-2-antd vue
*/
private Integer antdvLinkOpenType;
/**
* antd vue
*/
private String antdvLinkUrl;
/**
* Antd Vue
*/

View File

@ -47,7 +47,7 @@ public class AntdMenusFactory {
// 填充哪个角色绑定了这个菜单
List<SimpleRoleInfo> roles = antdSysMenuResponse.getRoles();
AuthorityItem authorityItem = new AuthorityItem();
if (roles != null) {
if (roles != null && roles.size() > 0) {
ArrayList<String> auths = new ArrayList<>();
for (SimpleRoleInfo role : roles) {
auths.add(role.getRoleCode());

View File

@ -3,11 +3,11 @@ package cn.stylefeng.roses.kernel.system.modular.user.factory;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.extra.spring.SpringUtil;
import cn.stylefeng.roses.kernel.auth.api.expander.AuthConfigExpander;
import cn.stylefeng.roses.kernel.auth.api.password.PasswordStoredEncryptApi;
import cn.stylefeng.roses.kernel.rule.enums.SexEnum;
import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum;
import cn.stylefeng.roses.kernel.system.enums.UserStatusEnum;
import cn.stylefeng.roses.kernel.system.expander.SystemConfigExpander;
import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUser;
import cn.stylefeng.roses.kernel.system.pojo.user.request.SysUserRequest;
@ -36,7 +36,7 @@ public class SysUserCreateFactory {
// 密码为空则设置为默认密码
PasswordStoredEncryptApi passwordStoredEncryptApi = SpringUtil.getBean(PasswordStoredEncryptApi.class);
if (ObjectUtil.isEmpty(sysUser.getPassword())) {
String defaultPassword = AuthConfigExpander.getDefaultPassWord();
String defaultPassword = SystemConfigExpander.getDefaultPassWord();
sysUser.setPassword(passwordStoredEncryptApi.encrypt(defaultPassword));
} else {
// 密码不为空,则将密码加密存储到库中

View File

@ -31,7 +31,7 @@
and suser.status_flag like concat('%',#{sysUserRequest.statusFlag},'%')
</if>
<if test="sysUserRequest.orgId != null and sysUserRequest.orgId != ''">
and suorg.org_id = #{sysUserRequest.orgId}
and suorg.org_id in(select org_id from hr_organization where org_pids like CONCAT('%[',#{sysUserRequest.orgId},']%') or org_id=#{sysUserRequest.orgId})
</if>
and suser.del_flag = 'N'
order by suser.create_time desc

View File

@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
*
@ -80,4 +81,8 @@ public class SysUserResponse {
*/
private Integer statusFlag;
/**
* id
*/
private List<Long> grantRoleIdList;
}

View File

@ -23,6 +23,16 @@ public interface SysUserRoleService extends IService<SysUserRole> {
*/
List<SysUserRole> getUserRoles(Long userId);
/**
* id
*
* @param userId id
* @return id
* @author chenjinlong
* @date 2021/1/12 19:42
*/
List<Long> getUserRoleIds(Long userId);
/**
*
*

View File

@ -4,8 +4,8 @@ import cn.stylefeng.roses.kernel.system.exception.SystemModularException;
import cn.stylefeng.roses.kernel.system.exception.enums.SysUserExceptionEnum;
import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUserRole;
import cn.stylefeng.roses.kernel.system.modular.user.mapper.SysUserRoleMapper;
import cn.stylefeng.roses.kernel.system.pojo.user.request.SysUserRequest;
import cn.stylefeng.roses.kernel.system.modular.user.service.SysUserRoleService;
import cn.stylefeng.roses.kernel.system.pojo.user.request.SysUserRequest;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@ -13,6 +13,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* service
@ -37,6 +38,14 @@ public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUs
return list;
}
@Override
public List<Long> getUserRoleIds(Long userId) {
LambdaQueryWrapper<SysUserRole> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SysUserRole::getUserId, userId);
List<SysUserRole> list = this.list(wrapper);
return list.stream().map(SysUserRole::getRoleId).collect(Collectors.toList());
}
@Override
@Transactional(rollbackFor = Exception.class)
public void grantRole(SysUserRequest sysUserRequest) {

View File

@ -5,7 +5,6 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.stylefeng.roses.kernel.auth.api.SessionManagerApi;
import cn.stylefeng.roses.kernel.auth.api.context.LoginContext;
import cn.stylefeng.roses.kernel.auth.api.expander.AuthConfigExpander;
import cn.stylefeng.roses.kernel.auth.api.password.PasswordStoredEncryptApi;
import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser;
import cn.stylefeng.roses.kernel.auth.api.pojo.login.basic.SimpleUserInfo;
@ -23,6 +22,7 @@ import cn.stylefeng.roses.kernel.system.RoleServiceApi;
import cn.stylefeng.roses.kernel.system.enums.UserStatusEnum;
import cn.stylefeng.roses.kernel.system.exception.SystemModularException;
import cn.stylefeng.roses.kernel.system.exception.enums.SysUserExceptionEnum;
import cn.stylefeng.roses.kernel.system.expander.SystemConfigExpander;
import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUser;
import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUserDataScope;
import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUserRole;
@ -39,10 +39,12 @@ import cn.stylefeng.roses.kernel.system.pojo.organization.DataScopeResponse;
import cn.stylefeng.roses.kernel.system.pojo.role.response.SysRoleResponse;
import cn.stylefeng.roses.kernel.system.pojo.user.OnlineUserResponse;
import cn.stylefeng.roses.kernel.system.pojo.user.SysUserDTO;
import cn.stylefeng.roses.kernel.system.pojo.user.SysUserDTO;
import cn.stylefeng.roses.kernel.system.pojo.user.SysUserOrgResponse;
import cn.stylefeng.roses.kernel.system.pojo.user.UserLoginInfoDTO;
import cn.stylefeng.roses.kernel.system.pojo.user.request.OnlineUserRequest;
import cn.stylefeng.roses.kernel.system.pojo.user.request.SysUserRequest;
import cn.stylefeng.roses.kernel.system.pojo.user.request.SysUserRequest;
import cn.stylefeng.roses.kernel.system.util.DataScopeUtil;
import com.alibaba.excel.support.ExcelTypeEnum;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@ -213,7 +215,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
SysUser sysUser = this.querySysUser(sysUserRequest);
// 获取系统配置的默认密码
String password = AuthConfigExpander.getDefaultPassWord();
String password = SystemConfigExpander.getDefaultPassWord();
sysUser.setPassword(passwordStoredEncryptApi.encrypt(password));
this.updateById(sysUser);
@ -317,6 +319,9 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
sysUserResponse.setOrgId(userOrgInfo.getOrgId());
sysUserResponse.setPositionId(userOrgInfo.getPositionId());
// 获取用户角色信息
sysUserResponse.setGrantRoleIdList(sysUserRoleService.getUserRoleIds(sysUser.getUserId()));
return sysUserResponse;
}
@ -576,6 +581,11 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
if (ObjectUtil.isNotNull(sysUserRequest)) {
// 组装账号的查询条件
if (ObjectUtil.isNotEmpty(sysUserRequest.getUserId())) {
queryWrapper.eq(SysUser::getUserId, sysUserRequest.getUserId());
}
// 组装账号的查询条件
if (ObjectUtil.isNotEmpty(sysUserRequest.getAccount())) {
queryWrapper.like(SysUser::getAccount, sysUserRequest.getAccount());