天津it审核需求

yun-zuoyi
wynne1005 4 years ago
parent d9ea9c63ee
commit 0beaca750a

@ -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);
}

@ -31,19 +31,22 @@ public interface ISysRoleService extends ICrudService<SysRole> {
void refreshSysRoleRef(Long roleId,Integer softType,List<Long> idList,String userName);
@ApiOperation(value = "查信角色菜单关系",notes = "查询 ID 查询角色菜单关系")
@ApiOperation(value = "查信角色菜单关系", notes = "查询 ID 查询角色菜单关系")
List<SysRefRoleMenu> findSysRefRoleMenuByRoleId(Long roleId);
@ApiOperation(value = "查信角色菜单关系",notes = "查询 ID 查询角色菜单关系")
List<SysRefRoleMenu> findSysRefRoleMenuByRoleId(Long roleId,Integer softType);
@ApiOperation(value = "查信角色菜单关系", notes = "查询 ID 查询角色菜单关系")
List<SysRefRoleMenu> findSysRefRoleMenuByRoleId(Long roleId, Integer softType);
@ApiOperation(value = "查信角色信息",notes = "根据ID + 角色状态查询角色信息")
List<SysRole> findSysRoleByInIdAndStatus(Long[] ids,Integer status);
@ApiOperation(value = "查信角色信息", notes = "根据ID + 角色状态查询角色信息")
List<SysRole> findSysRoleByInIdAndStatus(Long[] ids, Integer status);
@ApiOperation(value = "查信用户的所有角色信息",notes = "查信用户的所有角色信息")
@ApiOperation(value = "查有效的角色信息", notes = "根据ID + 查有效的角色信息")
List<SysRole> findValidSysRole();
@ApiOperation(value = "查信用户的所有角色信息", notes = "查信用户的所有角色信息")
List<SysRole> findSysRoleByUser(SysUser user);
@ApiOperation(value = "查信角色信息",notes = "查询角色信息(分页/组合)")
@ApiOperation(value = "查信角色信息", notes = "查询角色信息(分页/组合)")
ListPager<SysRole> querySysRole(SysRole role, List<Long> idList, Pager pager);
/***

@ -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,7 @@ public interface ISysUserService {
*/
@ApiOperation(value = "根据用户名查询密码是否正确")
SysUser validatePasswordByLoginNameAndReturnUser(String loginName, String password);
@ApiOperation(value = "查询有效的用户与角色关系")
List<SysRefUserRole> findValidUserRoleRef();
}

@ -0,0 +1,117 @@
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.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) {
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 file = new File(fileName);
file.createNewFile();
File excel = 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(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().setResultList(logRoleChanges);
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
}

@ -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,13 +51,18 @@ 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;
@Autowired
private EntityManager entityManager;
@Resource(name= CommonConstWords.IMPP_REDIS_RES)
@Resource(name = CommonConstWords.IMPP_REDIS_RES)
private ImppRedis redisRes;
@GetMapping("/query")
@ -98,4 +112,61 @@ public class SysLogUserLoginController extends CoreBaseController {
}
}
@GetMapping(value = "/export/month/user-fail-login")
@ApiOperation(value = "根据语言代码查询资源")
public ResultBean exportMonthlyUserFailLoginReport(HttpServletResponse response, String date) {
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 file = new File(fileName);
file.createNewFile();
File excel = 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(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().setResultList(sysLogUserLogins);
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
}

@ -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,30 @@ 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.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 :
@ -28,11 +46,19 @@ import org.springframework.web.bind.annotation.RestController;
**/
@RestController
@Api(tags = "对象历史记录")
@RequestMapping(CommonConstWords.BASE_URL_CORE+"/pojo-version")
@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;
@ -40,7 +66,7 @@ public class SysPojoVersionController extends CrudBaseController<SysPojoVersion>
@PostMapping("/cloud-query")
@ApiOperation(value = "查询数据", notes = "复杂查询,分页,排序")
BaseResultBean<SysPojoVersion> queryPojoVersionByPagerCloud(@RequestBody CloudPagerModel<SysPojoVersion> model){
BaseResultBean<SysPojoVersion> queryPojoVersionByPagerCloud(@RequestBody CloudPagerModel<SysPojoVersion> model) {
try {
SysPojoVersion bean = packQueryPager(model.getObj());
@ -53,4 +79,45 @@ 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) {
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 file = new File(fileName);
file.createNewFile();
File excel = 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(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().setResultList(pojoVersions);
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
}

@ -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;
@ -89,7 +117,7 @@ public class SysRoleController extends CrudBaseController<SysRole> {
@ApiOperation(value = "查询角色", notes = "查询用户所拥有的角色信息")
public ResultBean findSysRoleByUser() {
try {
if(!AuthUtil.getUserType().equals(CommonEnumUtil.USER_TYPE.ADMIN)){
if (!AuthUtil.getUserType().equals(CommonEnumUtil.USER_TYPE.ADMIN)) {
List<SysRole> result = personnelService.findSysRoleByUserId(getSessionUser().getUser().getId());
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode())
.setResultList(result);
@ -99,13 +127,14 @@ public class SysRoleController extends CrudBaseController<SysRole> {
.setResultList(sysRoleService.findAll());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
/**
*
*
* @param ids id
* @return
*/
@ -117,13 +146,14 @@ public class SysRoleController extends CrudBaseController<SysRole> {
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(list);
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
/**
*
*
* @param roleId id
* @return
*/
@ -144,17 +174,64 @@ 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="组合查询角色,外带分页功能")
@GetMapping(value = "/query")
@ApiOperation(value = "查询角色", notes = "组合查询角色,外带分页功能")
public ResultBean queryPager(SysRole bean, Pager pager) {
try{
try {
ListPager result = null;
if(AuthUtil.getUserType().equals(CommonEnumUtil.USER_TYPE.ADMIN)){
result = sysRoleService.findPager(bean,pager);
}else {
if (AuthUtil.getUserType().equals(CommonEnumUtil.USER_TYPE.ADMIN)) {
result = sysRoleService.findPager(bean, pager);
} else {
List<SysRefUserRole> refList = personnelService.findSysRefUserRole(getSessionUser().getUser().getId());
if(refList != null && refList.size() > 0){
if (refList != null && refList.size() > 0) {
List<Long> idList = new ArrayList<>(refList.size());
refList.forEach(ref -> idList.add(ref.getRoleId()));
@ -162,16 +239,17 @@ public class SysRoleController extends CrudBaseController<SysRole> {
}
}
return ResultBean.success("操作成功").setListPager(result).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
}catch(ImppBusiException busExcep){
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
}catch(Exception e){
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
/**
*
* @param id id
*
* @param id id
* @param status
* @return
*/
@ -184,9 +262,9 @@ public class SysRoleController extends CrudBaseController<SysRole> {
ValidatorBean.checkNotZero(status, "角色状态不能为空");
SysRole role = sysRoleService.get(id);
ValidatorBean.checkNotNull(role,"不存在的角色信息");
ValidatorBean.checkNotNull(role, "不存在的角色信息");
role.setRoleStatus(status);
ConvertBean.modelUpdate(role,getSessionUser());
ConvertBean.modelUpdate(role, getSessionUser());
sysRoleService.update(role);
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
@ -199,24 +277,25 @@ public class SysRoleController extends CrudBaseController<SysRole> {
/**
*
* @param ids ids
*
* @param ids ids
* @param status
* @return
*/
@PutMapping(value = "/batch-status")
@ApiOperation(value = "批量修改系统角色状态", notes = "根据ID修改系统角色状态")
public ResultBean updateBatchStatus(Long[] ids,int status) {
public ResultBean updateBatchStatus(Long[] ids, int status) {
try {
// 数据校验
ValidatorBean.checkNotNull(ids, "角色id 不能为空");
ValidatorBean.checkNotZero(status, "角色状态不能为空");
sysRoleService.updateSysRoleStatusByIds(ids,status,AuthUtil.getSessionUser());
sysRoleService.updateSysRoleStatusByIds(ids, status, AuthUtil.getSessionUser());
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch(ImppBusiException busExcep){
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
}catch(Exception e){
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@ -230,21 +309,21 @@ public class SysRoleController extends CrudBaseController<SysRole> {
*/
@PutMapping(value = "/ref-menu/insert")
@ApiOperation(value = "新增角色权限关系", notes = "新增角色权限关系")
public ResultBean insertRefMenu(Long roleId,String[] refIds) {
public ResultBean insertRefMenu(Long roleId, String[] refIds) {
try {
startMultiService();
// 数据校验
ValidatorBean.checkNotNull(roleId, "角色roleId 不能为空");
ConvertBean.modelSafeArrayNumber(refIds,true);
ConvertBean.modelSafeArrayNumber(refIds, true);
sysRoleService.refreshSysRoleRef(roleId,StringTool.getArrayLong(refIds),AuthUtil.getSessionUser().getUserName());
sysRoleService.refreshSysRoleRef(roleId, StringTool.getArrayLong(refIds), AuthUtil.getSessionUser().getUserName());
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch(ImppBusiException busExcep){
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
}catch(Exception e){
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@ -256,16 +335,16 @@ public class SysRoleController extends CrudBaseController<SysRole> {
try {
// 数据校验
ValidatorBean.beginValid(refRoleMenu)
.notNull("roleId",refRoleMenu.getRoleId())
.notNull("softType",refRoleMenu.getSoftType());
.notNull("roleId", refRoleMenu.getRoleId())
.notNull("softType", refRoleMenu.getSoftType());
sysRoleService.refreshSysRoleRef(refRoleMenu.getRoleId(),refRoleMenu.getSoftType(),refRoleMenu.getMenuIdList()
,AuthUtil.getSessionUser().getUserName());
sysRoleService.refreshSysRoleRef(refRoleMenu.getRoleId(), refRoleMenu.getSoftType(), refRoleMenu.getMenuIdList()
, AuthUtil.getSessionUser().getUserName());
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch(ImppBusiException busExcep){
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
}catch(Exception e){
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@ -273,7 +352,8 @@ public class SysRoleController extends CrudBaseController<SysRole> {
/**
*
* @param roleId id
*
* @param roleId id
* @param softType ID
* @return
*/
@ -290,32 +370,33 @@ public class SysRoleController extends CrudBaseController<SysRole> {
return ResultBean.success("操作成功")
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode())
.setResultList(sysRefRoleMenuList);
} catch(ImppBusiException busExcep){
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
}catch(Exception e){
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
/**
*
*
* @param roleIds id
* @param menuIds id
* @return
*/
@PutMapping(value = "/ref-menu/batch-insert")
@ApiOperation(value = "批量新增角色权限关系", notes = "批量新增角色权限关系")
public ResultBean insertBatchRefMenu(String[] roleIds,String[] menuIds) {
public ResultBean insertBatchRefMenu(String[] roleIds, String[] menuIds) {
try {
startMultiService();
roleIds = ConvertBean.modelSafeArrayNumber(roleIds,true);
menuIds = ConvertBean.modelSafeArrayNumber(menuIds,true);
roleIds = ConvertBean.modelSafeArrayNumber(roleIds, true);
menuIds = ConvertBean.modelSafeArrayNumber(menuIds, true);
// 数据校验
ValidatorBean.checkNotNull(roleIds, "角色roleIds 不能为空");
if(roleIds.length == 0){
if (roleIds.length == 0) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
@ -324,21 +405,21 @@ public class SysRoleController extends CrudBaseController<SysRole> {
}
List<SysRole> roleList = sysRoleService.findSysRoleByInIdAndStatus(StringTool.getArrayLong(roleIds), CommonEnumUtil.DATA_STATUS.DISABLE.getValue());
if(roleList != null && roleList.size() > 0){
if (roleList != null && roleList.size() > 0) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
.setErrorDetail("["+roleList.get(0).getName()+"]角色已禁用,不允许操作")
.setErrorDetail("[" + roleList.get(0).getName() + "]角色已禁用,不允许操作")
.setErrorSolution("请重新操作")
.build();
}
sysRoleService.refreshBatchSysRoleRef(StringTool.getArrayLong(roleIds),StringTool.getArrayLong(menuIds),
sysRoleService.refreshBatchSysRoleRef(StringTool.getArrayLong(roleIds), StringTool.getArrayLong(menuIds),
AuthUtil.getSessionUser().getUserName());
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch(ImppBusiException busExcep){
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
}catch(Exception e){
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}

@ -9,9 +9,11 @@ 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;
@ -28,6 +30,7 @@ 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;
@ -44,7 +47,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 +91,12 @@ public class SysUserController extends CoreBaseController {
@Autowired
private ISysUserPasswordService userPasswordService;
@Autowired
private EntityManager entityManager;
@Resource(name = CommonConstWords.IMPP_REDIS_RES)
private ImppRedis redisRes;
/**
*
*
@ -310,6 +328,44 @@ public class SysUserController extends CoreBaseController {
}
}
@GetMapping(value = "/export/ref-user-role")
@ApiOperation(value = "导出用户角色关系", notes = "导出用户角色关系")
public ResultBean exportUserRoleRef(HttpServletResponse response) {
try {
List<SysRefUserRole> list = sysUserService.findValidUserRoleRef();
ExcelTool excelTool = new ExcelTool(entityManager, redisRes);
String fileName = "user-role-ref-" + System.currentTimeMillis() + ".xls";
File file = new File(fileName);
file.createNewFile();
File excel = 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(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);
}
}
/**
*
*

@ -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,8 +49,26 @@ 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)){
if (Objects.nonNull(bean)) {
bean.setVersionDetail(pojoVersionDetailService.get(bean.getPojoDetailId()));
}
return bean;

@ -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;
@ -234,15 +238,21 @@ public class SysRoleService extends CrudService<SysRole> implements ISysRoleServ
@Override
public List<SysRole> findSysRoleByInIdAndStatus(Long[] ids, Integer status) {
LOGGER.info("系统角色 SYS_ROLE findSysRoleByInIdAndStatus ids:{} , status:{}",ids,status);
LOGGER.info("系统角色 SYS_ROLE findSysRoleByInIdAndStatus ids:{} , status:{}", ids, status);
StringBuffer findWhere = new StringBuffer();
HqlPack.getInPack(StringUtils.join(ids,","),"id",findWhere);
HqlPack.getNumEqualPack(status,"roleStatus",findWhere);
HqlPack.getInPack(StringUtils.join(ids, ","), "id", findWhere);
HqlPack.getNumEqualPack(status, "roleStatus", findWhere);
return roleRDao.findByHqlWhere(findWhere.toString());
}
@Override
@ApiOperation(value = "查信用户的所有角色信息",notes = "查信用户的所有角色信息")
public List<SysRole> findValidSysRole() {
DdlPackBean packBean = DdlPackBean.getDdlPackBean();
return roleRDao.findByHqlWhere(packBean);
}
@Override
@ApiOperation(value = "查信用户的所有角色信息", notes = "查信用户的所有角色信息")
public List<SysRole> findSysRoleByUser(SysUser user) {
LOGGER.info("系统角色 查询用户所有角色");
return userPermissionDao.findSysRoleByUser(user);

@ -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,12 @@ public class SysUserService implements ISysUserService {
return userDb;
}
@Override
public List<SysRefUserRole> findValidUserRoleRef() {
DdlPackBean packBean = DdlPackBean.getDdlPackBean();
return refUserRoleRDao.findByHqlWhere(packBean);
}
/**
*
*

Loading…
Cancel
Save