Merge branch 'dev' into test

yun-zuoyi
wynne1005 4 years ago
commit 6864f585b9

@ -0,0 +1,17 @@
package cn.estsh.i3plus.core.api.iservice.busi;
import cn.estsh.i3plus.pojo.platform.bean.SysLogRoleChange;
import java.util.List;
/**
* @Description :
* @Reference :
* @Author : yunhao
* @CreateDate : 2020-08-31 11:47
* @Modify:
**/
public interface ISysLogRoleChangeService {
List<SysLogRoleChange> findLogsBetweenDatetime(String startDatetime, String endDatetime);
}

@ -3,6 +3,8 @@ package cn.estsh.i3plus.core.api.iservice.busi;
import cn.estsh.i3plus.pojo.platform.bean.SysPojoVersion;
import cn.estsh.impp.framework.base.service.ICrudService;
import java.util.List;
/**
* @Description :
* @Reference :
@ -14,4 +16,6 @@ public interface ISysPojoVersionService extends ICrudService<SysPojoVersion> {
SysPojoVersion getPojoVersion(SysPojoVersion bean);
List<SysPojoVersion> findPojoVersionByUserBetweenTime(String userName, String startDate, String endDate);
}

@ -40,6 +40,9 @@ public interface ISysRoleService extends ICrudService<SysRole> {
@ApiOperation(value = "查信角色信息", notes = "根据ID + 角色状态查询角色信息")
List<SysRole> findSysRoleByInIdAndStatus(Long[] ids, Integer status);
@ApiOperation(value = "查有效的角色信息", notes = "根据ID + 查有效的角色信息")
List<SysRole> findValidSysRole();
@ApiOperation(value = "查信用户的所有角色信息", notes = "查信用户的所有角色信息")
List<SysRole> findSysRoleByUser(SysUser user);

@ -105,6 +105,26 @@ public interface ISysUserService {
SysLogUserLogin insertSysLogUserLogin(SysLogUserLogin sysLogUserLogin);
/**
*
*
* @param startTime
* @param endTime
* @return
*/
@ApiOperation(value = "查询用户登录日志")
List<SysLogUserLogin> queryUserMonthlyLoginLog(String startTime, String endTime);
/**
*
*
* @param startTime
* @param endTime
* @return
*/
@ApiOperation(value = "查询用户登录失败日志")
List<SysLogUserLogin> queryUserMonthlyFailedLoginLog(String startTime, String endTime);
/**
*
*
* @param sysUser
@ -317,4 +337,10 @@ public interface ISysUserService {
*/
@ApiOperation(value = "根据用户名查询密码是否正确")
SysUser validatePasswordByLoginNameAndReturnUser(String loginName, String password);
@ApiOperation(value = "查询有效的用户与角色关系")
List<SysRefUserRole> findValidUserRoleRef();
@ApiOperation(value = "查询所有用户")
List<SysUser> findAll();
}

Binary file not shown.

@ -61,6 +61,19 @@ public class BackstageController extends CoreBaseController {
}
}
@GetMapping(value = "/redis-put-pojo-version-plan")
@ApiOperation(value = "重新加载所有缓存数据",notes = "重新加载所有缓存数据")
public ResultBean redisPutPojoVersionPlan(){
try {
systemInitService.reloadPojoVersionPlan();
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
}catch(ImppBusiException busExcep){
return ResultBean.fail(busExcep);
}catch(Exception e){
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@GetMapping(value = "/redis-put-system-language")
@ApiOperation(value = "重新加载语言数据",notes = "重新加载语言数据")
public ResultBean redisPutSystemLanguage(){

@ -0,0 +1,123 @@
package cn.estsh.i3plus.core.apiservice.controller.busi;
import cn.estsh.i3plus.core.api.iservice.busi.ISysLogRoleChangeService;
import cn.estsh.i3plus.platform.common.tool.ExcelTool;
import cn.estsh.i3plus.platform.common.tool.StringTool;
import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.platform.common.util.FileContentTypeTool;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.platform.bean.SysLogRoleChange;
import cn.estsh.impp.framework.base.controller.CoreBaseController;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ImppRedis;
import cn.estsh.impp.framework.boot.util.ResultBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.io.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.persistence.EntityManager;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.LinkedHashMap;
import java.util.List;
/**
* @Description :
* @Reference :
* @Author : yunhao
* @CreateDate : 2020-08-31 11:45
* @Modify:
**/
@RestController
@Api(tags = "用户登录日志")
@RequestMapping(PlatformConstWords.BASE_URL + "/sys-log-role-change")
public class SysLogRoleChangeController extends CoreBaseController {
private static final Logger LOGGER = LoggerFactory.getLogger(SysLogRoleChangeController.class);
@Autowired
private ISysLogRoleChangeService logRoleChangeService;
@Autowired
private EntityManager entityManager;
@Resource(name = CommonConstWords.IMPP_REDIS_RES)
private ImppRedis redisRes;
@GetMapping(value = "/export/user-role-change")
@ApiOperation(value = "导出用户角色变更记录")
public ResultBean exportUserRoleChangedLog(HttpServletResponse response, String startDate, String endDate) {
File file = null;
try {
final String ZERO_TIME = " 00:00:00";
// 获取当月第一天和最后一天
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String firstDay, nextMonthFirstDay;
// 获取前月的第一天
Calendar cale = Calendar.getInstance();
cale.setTime(format.parse(startDate));
cale.add(Calendar.MONTH, 0);
cale.set(Calendar.DAY_OF_MONTH, 1);
firstDay = format.format(cale.getTime());
// 获取前月的最后一天
cale = Calendar.getInstance();
cale.setTime(format.parse(endDate));
cale.add(Calendar.MONTH, 1);
cale.set(Calendar.DAY_OF_MONTH, 1);
nextMonthFirstDay = format.format(cale.getTime());
firstDay += ZERO_TIME;
nextMonthFirstDay += ZERO_TIME;
List<SysLogRoleChange> logRoleChanges = logRoleChangeService.findLogsBetweenDatetime(firstDay, nextMonthFirstDay);
ExcelTool excelTool = new ExcelTool(entityManager, redisRes);
String fileName = "user-role-changed-" + System.currentTimeMillis() + ".xls";
file = new File(fileName);
file.createNewFile();
excelTool.exportData(file, logRoleChanges, SysLogRoleChange.class
, (LinkedHashMap<String, String>) ExcelTool.getColName(SysLogRoleChange.class));
response.setContentType("application/force-download"); // 设置强制下载不打开
response.addHeader("Content-Disposition", "attachment;fileName=" + fileName); // 设置文件名
response.addHeader("Content-type", FileContentTypeTool.getContentType(StringTool.getStringFileSuffix(fileName, true)));
// 设置文件名
try (BufferedInputStream bis = new BufferedInputStream(new DataInputStream(new FileInputStream(file)))) {
OutputStream os = response.getOutputStream();
byte[] buffer = new byte[1024];
int i = bis.read(buffer);
while (i != -1) {
os.write(buffer, 0, i);
i = bis.read(buffer);
}
} catch (Exception e) {
LOGGER.error("用户权限变更日志导出异常", e);
}
return ResultBean.success().setResultList(logRoleChanges);
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
} finally {
if (file != null) {
FileUtils.deleteQuietly(file);
}
}
}
}

@ -1,6 +1,7 @@
package cn.estsh.i3plus.core.apiservice.controller.busi;
import cn.estsh.i3plus.core.api.iservice.busi.ISysLogUserLoginService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysUserService;
import cn.estsh.i3plus.platform.common.tool.ExcelTool;
import cn.estsh.i3plus.platform.common.tool.StringTool;
import cn.estsh.i3plus.platform.common.util.CommonConstWords;
@ -18,6 +19,8 @@ import cn.estsh.impp.framework.boot.util.ResultBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.io.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@ -26,7 +29,13 @@ import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.persistence.EntityManager;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.LinkedHashMap;
import java.util.List;
@ -42,6 +51,11 @@ import java.util.List;
@RequestMapping(PlatformConstWords.BASE_URL + "/sys-log-user-login")
public class SysLogUserLoginController extends CoreBaseController {
private static final Logger LOGGER = LoggerFactory.getLogger(SysLogUserLoginController.class);
@Autowired
private ISysUserService userService;
@Autowired
private ISysLogUserLoginService sysLogUserLoginService;
@ -98,4 +112,66 @@ public class SysLogUserLoginController extends CoreBaseController {
}
}
@GetMapping(value = "/export/month/user-fail-login")
@ApiOperation(value = "根据语言代码查询资源")
public ResultBean exportMonthlyUserFailLoginReport(HttpServletResponse response, String date) {
File file = null;
try {
final String ZERO_TIME = " 00:00:00";
// 获取当月第一天和最后一天
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String firstDay, nextMonthFirstDay;
// 获取前月的第一天
Calendar cale = Calendar.getInstance();
cale.setTime(format.parse(date));
cale.add(Calendar.MONTH, 0);
cale.set(Calendar.DAY_OF_MONTH, 1);
firstDay = format.format(cale.getTime());
// 获取前月的最后一天
cale = Calendar.getInstance();
cale.setTime(format.parse(date));
cale.add(Calendar.MONTH, 1);
cale.set(Calendar.DAY_OF_MONTH, 1);
nextMonthFirstDay = format.format(cale.getTime());
firstDay += ZERO_TIME;
nextMonthFirstDay += ZERO_TIME;
List<SysLogUserLogin> sysLogUserLogins = userService.queryUserMonthlyFailedLoginLog(firstDay, nextMonthFirstDay);
ExcelTool excelTool = new ExcelTool(entityManager, redisRes);
String fileName = "user-login-log-" + System.currentTimeMillis() + ".xls";
file = new File(fileName);
file.createNewFile();
excelTool.exportData(file, sysLogUserLogins, SysLogUserLogin.class
, (LinkedHashMap<String, String>) ExcelTool.getColName(SysLogUserLogin.class));
response.setContentType("application/force-download"); // 设置强制下载不打开
response.addHeader("Content-Disposition", "attachment;fileName=" + fileName); // 设置文件名
response.addHeader("Content-type", FileContentTypeTool.getContentType(StringTool.getStringFileSuffix(fileName, true)));
// 设置文件名
try (BufferedInputStream bis = new BufferedInputStream(new DataInputStream(new FileInputStream(file)))) {
OutputStream os = response.getOutputStream();
byte[] buffer = new byte[1024];
int i = bis.read(buffer);
while (i != -1) {
os.write(buffer, 0, i);
i = bis.read(buffer);
}
} catch (Exception e) {
LOGGER.error("用户日志导出异常", e);
}
return ResultBean.success().setResultList(sysLogUserLogins);
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}finally {
if(file!=null){
FileUtils.deleteQuietly(file);
}
}
}
}

@ -1,7 +1,10 @@
package cn.estsh.i3plus.core.apiservice.controller.busi;
import cn.estsh.i3plus.core.api.iservice.busi.ISysPojoVersionService;
import cn.estsh.i3plus.platform.common.tool.ExcelTool;
import cn.estsh.i3plus.platform.common.tool.StringTool;
import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.platform.common.util.FileContentTypeTool;
import cn.estsh.i3plus.pojo.base.bean.BaseResultBean;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.model.common.CloudPagerModel;
@ -10,15 +13,31 @@ import cn.estsh.impp.framework.base.controller.CrudBaseController;
import cn.estsh.impp.framework.base.service.ICrudService;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ImppRedis;
import cn.estsh.impp.framework.boot.util.ResultBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.io.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.persistence.EntityManager;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.util.LinkedHashMap;
import java.util.List;
/**
* @Description :
* @Reference :
@ -30,9 +49,17 @@ import org.springframework.web.bind.annotation.RestController;
@Api(tags = "对象历史记录")
@RequestMapping(CommonConstWords.BASE_URL_CORE + "/pojo-version")
public class SysPojoVersionController extends CrudBaseController<SysPojoVersion> {
private static final Logger LOGGER = LoggerFactory.getLogger(SysPojoVersionController.class);
@Autowired
private ISysPojoVersionService pojoVersionService;
@Autowired
private EntityManager entityManager;
@Resource(name = CommonConstWords.IMPP_REDIS_RES)
private ImppRedis redisRes;
@Override
public ICrudService getCrudService() {
return pojoVersionService;
@ -53,4 +80,50 @@ public class SysPojoVersionController extends CrudBaseController<SysPojoVersion>
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@GetMapping("/export-user-operation")
@ApiOperation(value = "导出用户操作数据", notes = "导出用户操作数据")
BaseResultBean<SysPojoVersion> exportUserOperation(HttpServletResponse response, String userName, String startDate, String endDate) {
File file =null;
try {
final String ZERO_TIME = " 00:00:00";
startDate += ZERO_TIME;
endDate += ZERO_TIME;
List<SysPojoVersion> pojoVersions = pojoVersionService.findPojoVersionByUserBetweenTime(userName, startDate, endDate);
ExcelTool excelTool = new ExcelTool(entityManager, redisRes);
String fileName = "user-operation-" + System.currentTimeMillis() + ".xls";
file = new File(fileName);
file.createNewFile();
excelTool.exportData(file, pojoVersions, SysPojoVersion.class
, (LinkedHashMap<String, String>) ExcelTool.getColName(SysPojoVersion.class));
response.setContentType("application/force-download"); // 设置强制下载不打开
response.addHeader("Content-Disposition", "attachment;fileName=" + fileName); // 设置文件名
response.addHeader("Content-type", FileContentTypeTool.getContentType(StringTool.getStringFileSuffix(fileName, true)));
// 设置文件名
try (BufferedInputStream bis = new BufferedInputStream(new DataInputStream(new FileInputStream(file)))) {
OutputStream os = response.getOutputStream();
byte[] buffer = new byte[1024];
int i = bis.read(buffer);
while (i != -1) {
os.write(buffer, 0, i);
i = bis.read(buffer);
}
} catch (Exception e) {
LOGGER.error("数据变更日志导出异常", e);
}
return ResultBean.success().setResultList(pojoVersions);
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}finally {
if(file!=null){
FileUtils.deleteQuietly(file);
}
}
}
}

@ -4,8 +4,12 @@ import cn.estsh.i3plus.core.api.iservice.busi.IPersonnelService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysRoleService;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.platform.common.tool.ExcelTool;
import cn.estsh.i3plus.platform.common.tool.StringTool;
import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.platform.common.util.FileContentTypeTool;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.base.bean.BaseBean;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
@ -18,17 +22,35 @@ import cn.estsh.impp.framework.base.service.ICrudService;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ImppRedis;
import cn.estsh.impp.framework.boot.util.ResultBean;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.collections.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.persistence.EntityManager;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Description :
@ -50,6 +72,12 @@ public class SysRoleController extends CrudBaseController<SysRole> {
@Autowired
private IPersonnelService personnelService;
@Autowired
private EntityManager entityManager;
@Resource(name = CommonConstWords.IMPP_REDIS_RES)
private ImppRedis redisRes;
@Override
public ICrudService getCrudService() {
return sysRoleService;
@ -106,6 +134,7 @@ public class SysRoleController extends CrudBaseController<SysRole> {
/**
*
*
* @param ids id
* @return
*/
@ -124,6 +153,7 @@ public class SysRoleController extends CrudBaseController<SysRole> {
/**
*
*
* @param roleId id
* @return
*/
@ -144,6 +174,53 @@ public class SysRoleController extends CrudBaseController<SysRole> {
}
}
@GetMapping(value = "/export/ref-role-menu")
@ApiOperation(value = "导出角色菜单关系", notes = "导出角色菜单关系")
public ResultBean exportRoleMenu(HttpServletResponse response) {
try {
List<Long> roleIds = sysRoleService.findValidSysRole().stream().map(BaseBean::getId).collect(Collectors.toList());
List<SysRefRoleMenu> list = new ArrayList<>();
for (Long roleId : roleIds) {
list.addAll(sysRoleService.findSysRefRoleMenuByRoleId(roleId));
}
if (CollectionUtils.isEmpty(list)) {
return ResultBean.success("系统中不存在角色与菜单的关系。");
}
ExcelTool excelTool = new ExcelTool(entityManager, redisRes);
String fileName = "role-menu-ref-" + System.currentTimeMillis() + ".xls";
File file = new File(fileName);
file.createNewFile();
File excel = excelTool.exportData(file, list, SysRefRoleMenu.class
, (LinkedHashMap<String, String>) ExcelTool.getColName(SysRefRoleMenu.class));
response.setContentType("application/force-download"); // 设置强制下载不打开
response.addHeader("Content-Disposition", "attachment;fileName=" + fileName); // 设置文件名
response.addHeader("Content-type", FileContentTypeTool.getContentType(StringTool.getStringFileSuffix(fileName, true)));
// 设置文件名
try (BufferedInputStream bis = new BufferedInputStream(new DataInputStream(new FileInputStream(excel)))) {
OutputStream os = response.getOutputStream();
byte[] buffer = new byte[1024];
int i = bis.read(buffer);
while (i != -1) {
os.write(buffer, 0, i);
i = bis.read(buffer);
}
} catch (Exception e) {
LOGGER.error("用户角色关联导出异常", e);
}
return ResultBean.success("操作成功")
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode())
.setResultList(list);
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@Override
@GetMapping(value = "/query")
@ApiOperation(value = "查询角色", notes = "组合查询角色,外带分页功能")
@ -171,6 +248,7 @@ public class SysRoleController extends CrudBaseController<SysRole> {
/**
*
*
* @param id id
* @param status
* @return
@ -199,6 +277,7 @@ public class SysRoleController extends CrudBaseController<SysRole> {
/**
*
*
* @param ids ids
* @param status
* @return
@ -273,6 +352,7 @@ public class SysRoleController extends CrudBaseController<SysRole> {
/**
*
*
* @param roleId id
* @param softType ID
* @return
@ -299,6 +379,7 @@ public class SysRoleController extends CrudBaseController<SysRole> {
/**
*
*
* @param roleIds id
* @param menuIds id
* @return

@ -3,15 +3,18 @@ package cn.estsh.i3plus.core.apiservice.controller.busi;
import cn.estsh.i3plus.core.api.iservice.busi.ICoreMemTreeService;
import cn.estsh.i3plus.core.api.iservice.busi.IPersonnelService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysMessageService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysRoleService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysUserInfoService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysUserPasswordService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysUserService;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.platform.common.tool.EncryptTool;
import cn.estsh.i3plus.platform.common.tool.ExcelTool;
import cn.estsh.i3plus.platform.common.tool.StringTool;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.platform.common.util.FileContentTypeTool;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
@ -22,16 +25,19 @@ import cn.estsh.i3plus.pojo.platform.bean.SessionUser;
import cn.estsh.i3plus.pojo.platform.bean.SysMessage;
import cn.estsh.i3plus.pojo.platform.bean.SysRefUserDepartment;
import cn.estsh.i3plus.pojo.platform.bean.SysRefUserRole;
import cn.estsh.i3plus.pojo.platform.bean.SysRole;
import cn.estsh.i3plus.pojo.platform.bean.SysUser;
import cn.estsh.i3plus.pojo.platform.bean.SysUserInfo;
import cn.estsh.impp.framework.base.controller.CoreBaseController;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ImppRedis;
import cn.estsh.impp.framework.boot.util.ResultBean;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.RandomStringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -44,7 +50,16 @@ import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.persistence.EntityManager;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
/**
@ -79,6 +94,15 @@ public class SysUserController extends CoreBaseController {
@Autowired
private ISysUserPasswordService userPasswordService;
@Autowired
private ISysRoleService roleService;
@Autowired
private EntityManager entityManager;
@Resource(name = CommonConstWords.IMPP_REDIS_RES)
private ImppRedis redisRes;
/**
*
*
@ -310,6 +334,49 @@ public class SysUserController extends CoreBaseController {
}
}
@GetMapping(value = "/export/ref-user-role")
@ApiOperation(value = "导出用户角色关系", notes = "导出用户角色关系")
public ResultBean exportUserRoleRef(HttpServletResponse response) {
File file = null;
try {
List<SysRefUserRole> list = sysUserService.findValidUserRoleRef();
ExcelTool excelTool = new ExcelTool(entityManager, redisRes);
String fileName = "user-role-ref-" + System.currentTimeMillis() + ".xls";
file = new File(fileName);
file.createNewFile();
excelTool.exportData(file, list, SysRefUserRole.class
, (LinkedHashMap<String, String>) ExcelTool.getColName(SysRefUserRole.class));
response.setContentType("application/force-download"); // 设置强制下载不打开
response.addHeader("Content-Disposition", "attachment;fileName=" + fileName); // 设置文件名
response.addHeader("Content-type", FileContentTypeTool.getContentType(StringTool.getStringFileSuffix(fileName, true)));
// 设置文件名
try (BufferedInputStream bis = new BufferedInputStream(new DataInputStream(new FileInputStream(file)))) {
OutputStream os = response.getOutputStream();
byte[] buffer = new byte[1024];
int i = bis.read(buffer);
while (i != -1) {
os.write(buffer, 0, i);
i = bis.read(buffer);
}
} catch (Exception e) {
LOGGER.error("用户角色关联导出异常", e);
}
return ResultBean.success("操作成功")
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode())
.setResultList(list);
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
} finally {
if (file != null) {
FileUtils.deleteQuietly(file);
}
}
}
/**
*
*
@ -370,6 +437,20 @@ public class SysUserController extends CoreBaseController {
}
@GetMapping(value = "/role/list")
@ApiOperation(value = "查询所有角色", notes = "查询所有系统角色")
public ResultBean findRoleAll() {
try {
List<SysRole> list = roleService.findAll();
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(list);
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
/**
*
*

@ -165,13 +165,15 @@ public class PojoVersionQueueReceiver {
}
}
} catch (Exception e) {
LOGGER.error("pojoVersion 消息处理失败{}", new String(message.getBody()), e);
e.printStackTrace();
isNack = true;
} finally {
try {
if (isNack) {
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, true);
} else {
channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, false);
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
}
} catch (Exception e) {
LOGGER.error("Pojo Version MQ ACK Error Message :{}", e.getMessage());

@ -3,6 +3,7 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.core.api.iservice.base.ISystemInitService;
import cn.estsh.i3plus.core.api.iservice.busi.*;
import cn.estsh.i3plus.core.apiservice.util.HqlModelPack;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.platform.common.tool.StringTool;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
@ -25,6 +26,7 @@ import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ImppRedis;
import cn.estsh.impp.framework.boot.util.RedisCacheTool;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.slf4j.Logger;
@ -34,6 +36,7 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Description :
@ -104,6 +107,9 @@ public class PersonnelServiceService implements IPersonnelService {
@Autowired
private ISystemInitService systemInitService;
@Autowired
private SysLogRoleChangeRepository logRoleChangeRepository;
@Override
public SysUser saveSysUser(SysUser user) {
LOGGER.info("平台账号 SysUser user:{}", user);
@ -973,14 +979,22 @@ public class PersonnelServiceService implements IPersonnelService {
}
}
}
@Override
public void refreshRefSysUserRole(Long userId, Long[] roleIds) {
LOGGER.info("账号角色关系信息 RefSysUserRole userId:{} roleIds:{} ", userId, roleIds);
SysUser user = userRDao.getById(userId);
String previousRole = "";
String currentRole = "";
if (user != null) {
// 根据IDS 查询所有的角色信息
List<SysRole> list = roleService.findByIdList(Arrays.asList(roleIds));
DdlPackBean packBean = DdlPackBean.getDdlPackBean();
DdlPreparedPack.getNumEqualPack(userId, "userId", packBean);
List<SysRefUserRole> refUserRoleList = refUserRoleRDao.findByHqlWhere(packBean);
List<String> rolesRdds = refUserRoleList.stream().map(SysRefUserRole::getRoleNameRdd).collect(Collectors.toList());
previousRole = StringUtils.join(rolesRdds, ",");
// 删除角色关系信息
refUserRoleRDao.deleteByProperty("userId", user.getId()); // 删除用户角色关系
@ -1000,6 +1014,15 @@ public class PersonnelServiceService implements IPersonnelService {
refUserRole.setOrganizeCode(AuthUtil.getOrganize().getOrganizeCode());
refUserRoles.add(refUserRole);
}
List<String> roleRdds = refUserRoles.stream().map(SysRefUserRole::getRoleNameRdd).collect(Collectors.toList());
currentRole = StringUtils.join(roleRdds, ",");
SysLogRoleChange logRoleChange=new SysLogRoleChange();
logRoleChange.setUserName(user.getUserName());
logRoleChange.setUserId(userId);
logRoleChange.setPreviousRoles(previousRole);
logRoleChange.setCurrentRoles(currentRole);
ConvertBean.serviceModelInitialize(logRoleChange,AuthUtil.getSessionUser().getUserName());
logRoleChangeRepository.save(logRoleChange);
refUserRoleRDao.saveAll(refUserRoles);
userRDao.save(user);
@ -1261,6 +1284,7 @@ public class PersonnelServiceService implements IPersonnelService {
/**
*
*
* @param userLoginName
* @param userId
* @return

@ -0,0 +1,33 @@
package cn.estsh.i3plus.core.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.core.api.iservice.busi.ISysLogRoleChangeService;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.platform.bean.SysLogRoleChange;
import cn.estsh.i3plus.pojo.platform.repository.SysLogRoleChangeRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @Description :
* @Reference :
* @Author : yunhao
* @CreateDate : 2020-08-31 11:51
* @Modify:
**/
@Service
public class SysLogRoleChangeService implements ISysLogRoleChangeService {
@Autowired
private SysLogRoleChangeRepository logRoleChangeRepository;
@Override
public List<SysLogRoleChange> findLogsBetweenDatetime(String startDatetime, String endDatetime) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean();
DdlPreparedPack.timeBuilder(startDatetime, endDatetime, "createDatetime", true, true, packBean);
return logRoleChangeRepository.findByHqlWhere(packBean);
}
}

@ -4,15 +4,19 @@ import cn.estsh.i3plus.core.api.iservice.busi.ISysPojoVersionDetailService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysPojoVersionService;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.jpa.dao.BaseRepository;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.platform.bean.SysPojoVersion;
import cn.estsh.i3plus.pojo.platform.bean.SysPojoVersionPlan;
import cn.estsh.i3plus.pojo.platform.repository.SysPojoVersionPlanRepository;
import cn.estsh.i3plus.pojo.platform.repository.SysPojoVersionRepository;
import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack;
import cn.estsh.impp.framework.base.service.CrudService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
/**
* @Description :
@ -25,6 +29,9 @@ import java.util.Objects;
public class SysPojoVersionService extends CrudService<SysPojoVersion> implements ISysPojoVersionService {
@Autowired
private SysPojoVersionPlanRepository pojoVersionPlanRepository;
@Autowired
private SysPojoVersionRepository pojoVersionRDao;
@Autowired
@ -42,6 +49,24 @@ public class SysPojoVersionService extends CrudService<SysPojoVersion> implement
}
@Override
public List<SysPojoVersion> findPojoVersionByUserBetweenTime(String userName, String startDate, String endDate) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean();
DdlPreparedPack.getStringEqualPack(userName, "modifyUser", packBean);
DdlPreparedPack.timeBuilder(startDate, endDate, "modifyDatetime", true, false, packBean);
List<SysPojoVersion> pojoVersions = pojoVersionRDao.findByHqlWhere(packBean);
DdlPackBean planPackBean = DdlPackBean.getDdlPackBean();
List<SysPojoVersionPlan> pojoVersionPlans = pojoVersionPlanRepository.findByHqlWhere(planPackBean);
pojoVersions.stream().parallel().forEach(d -> {
Optional<SysPojoVersionPlan> plan = pojoVersionPlans.stream().filter(p -> d.getPlanId().equals(p.getId())).findFirst();
plan.ifPresent(c -> d.setPojoClassTitle(c.getRefClassTitle()));
});
return pojoVersions;
}
@Override
public SysPojoVersion packGetBean(SysPojoVersion bean) {
if (Objects.nonNull(bean)) {
bean.setVersionDetail(pojoVersionDetailService.get(bean.getPojoDetailId()));

@ -14,7 +14,11 @@ import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.jpa.dao.BaseRepository;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.base.tool.HqlPack;
import cn.estsh.i3plus.pojo.platform.bean.*;
import cn.estsh.i3plus.pojo.platform.bean.SessionUser;
import cn.estsh.i3plus.pojo.platform.bean.SysMenu;
import cn.estsh.i3plus.pojo.platform.bean.SysRefRoleMenu;
import cn.estsh.i3plus.pojo.platform.bean.SysRole;
import cn.estsh.i3plus.pojo.platform.bean.SysUser;
import cn.estsh.i3plus.pojo.platform.repository.SysRefRoleMenuRepository;
import cn.estsh.i3plus.pojo.platform.repository.SysRefUserRoleRepository;
import cn.estsh.i3plus.pojo.platform.repository.SysRoleRepository;
@ -242,6 +246,12 @@ public class SysRoleService extends CrudService<SysRole> implements ISysRoleServ
}
@Override
public List<SysRole> findValidSysRole() {
DdlPackBean packBean = DdlPackBean.getDdlPackBean();
return roleRDao.findByHqlWhere(packBean);
}
@Override
@ApiOperation(value = "查信用户的所有角色信息", notes = "查信用户的所有角色信息")
public List<SysRole> findSysRoleByUser(SysUser user) {
LOGGER.info("系统角色 查询用户所有角色");

@ -310,6 +310,23 @@ public class SysUserService implements ISysUserService {
}
@Override
public List<SysLogUserLogin> queryUserMonthlyLoginLog(String startTime, String endTime) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean();
DdlPreparedPack.timeBuilder(startTime, endTime, "logLoginDateTime", true, false, packBean);
List<SysLogUserLogin> loginLogs = logUserLoginRDao.findByHqlWhere(packBean);
return loginLogs;
}
@Override
public List<SysLogUserLogin> queryUserMonthlyFailedLoginLog(String startTime, String endTime) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean();
DdlPreparedPack.timeBuilder(startTime, endTime, "logLoginDateTime", true, false, packBean);
DdlPreparedPack.getNumNOEqualPack(CommonEnumUtil.USER_LOGIN_STATUS.LOGIN_SUCCESS.getValue(), "logLoginStatus", packBean);
List<SysLogUserLogin> loginLogs = logUserLoginRDao.findByHqlWhere(packBean);
return loginLogs;
}
@Override
@ApiOperation(value = "新增账号", notes = "新增账号信息")
public void refreshSysRefUserRole(SysUser sysUser, Long[] roleIds, String userName) {
LOGGER.debug("平台用户 SYS_USER SysUser:{}", sysUser);
@ -772,6 +789,17 @@ public class SysUserService implements ISysUserService {
return userDb;
}
@Override
public List<SysRefUserRole> findValidUserRoleRef() {
DdlPackBean packBean = DdlPackBean.getDdlPackBean();
return refUserRoleRDao.findByHqlWhere(packBean);
}
@Override
public List<SysUser> findAll() {
return userRDao.findAll();
}
/**
*
*

Loading…
Cancel
Save