Merge remote-tracking branch 'origin/master'

This commit is contained in:
guofeihu
2024-08-29 16:24:47 +08:00
32 changed files with 258 additions and 64 deletions

View File

@@ -41,7 +41,7 @@ public class ResponsibilityController extends BaseController {
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/responsibilityList")
@ApiOperation("列表分页")
@ApiOperation("查询责任划分列表分页")
@ApiImplicitParam(name = "queryParam", value = "查询参数", required = true)
public HttpResult<Page<RespDataDTO>> responsibilityList(@RequestBody @Validated BaseParam queryParam) {
String methodDescribe = getMethodDescribe("responsibilityList");

View File

@@ -47,7 +47,7 @@ public class UserDataController extends BaseController {
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/userDataList")
@ApiOperation("列表分页")
@ApiOperation("查询用户列表分页")
@ApiImplicitParam(name = "queryParam", value = "查询参数", required = true)
public HttpResult<Page<RespUserData>> userDataList(@RequestBody @Validated BaseParam queryParam) {
String methodDescribe = getMethodDescribe("userDataList");

View File

@@ -75,4 +75,6 @@ public class LogInfoDTO implements Serializable {
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
}

View File

@@ -129,6 +129,31 @@ public class FileUtil {
return false;
}
/**
* 判断文件是否为excel格式
*
* @param fileName 文件名
*/
public static boolean judgeFileIsZip(String fileName) {
// 检查文件名是否为空
if (StrUtil.isBlank(fileName)) {
return false;
}
// 获取文件扩展名
String fileExtension = getFileExtension(fileName);
// 定义支持的文件类型
String[] allowedExtensions = {"zip", "rar"};
// 检查扩展名是否在允许的列表中
for (String ext : allowedExtensions) {
if (ext.equalsIgnoreCase(fileExtension)) {
return true;
}
}
return false;
}
/**
* 从文件名中提取扩展名
*

View File

@@ -34,7 +34,13 @@ public enum RedisKeyEnum {
/***
* MQ消息key缓存时间默认72小时 * 60 * 60
*/
ROCKET_MQ_KEY("ROCKET_MQ", 259200L);
ROCKET_MQ_KEY("ROCKET_MQ", 259200L),
/***
* 存放用户的角色关系
*/
USER_ROLE_TYPE_KEY("USER_ROLE_TYPE_KEY", -1L);
private final String key;

View File

@@ -49,6 +49,7 @@ public class LogServiceImpl implements ILogService {
private final MqttPublisher publisher;
/**
* 异步记录controller中返回的信息内容
*

View File

@@ -20,6 +20,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import liquibase.pro.packaged.S;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -60,7 +61,7 @@ public class SupvFileController extends BaseController {
) {
String methodDescribe = getMethodDescribe("planUpload");
String originalFilename = file.getOriginalFilename();
if (FileUtil.judgeFileIsWord(originalFilename) || FileUtil.judgeFileIsPdf(originalFilename) || FileUtil.judgeFileIsExcel(originalFilename)) {
if (FileUtil.judgeFileIsWord(originalFilename) || FileUtil.judgeFileIsPdf(originalFilename) || FileUtil.judgeFileIsExcel(originalFilename)||FileUtil.judgeFileIsZip(originalFilename)) {
if (!StrUtil.isAllNotBlank(planId, uploaderId, uploaderName, attachmentType, uploadTime) || type == null) {
throw new BusinessException("必填字段不能为空");
}
@@ -89,5 +90,16 @@ public class SupvFileController extends BaseController {
iSupvFileService.detail(response, busId, type, attachmentType);
return null;
}
@PostMapping("delFile")
@OperateInfo(info = LogEnum.BUSINESS_COMMON, operateType = OperateType.DELETE)
@ApiOperation("监督计划问题附件下载")
public HttpResult<Object> delFile(@RequestBody List<String> ids) {
String methodDescribe = getMethodDescribe("delFile");
iSupvFileService.delFile(ids);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
}
}

View File

@@ -4,6 +4,7 @@ package com.njcn.process.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.process.pojo.param.SupvFileParam;
import com.njcn.process.pojo.po.SupvFile;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
@@ -36,4 +37,7 @@ public interface ISupvFileService extends IService<SupvFile> {
String detail(HttpServletResponse response,String busId,Integer type,String attachmentType);
Boolean delFile(List<String> ids);
}

View File

@@ -106,6 +106,16 @@ public class SupvFileServiceImpl extends ServiceImpl<SupvFileMapper, SupvFile> i
}
}
@Override
public Boolean delFile(List<String> ids) {
List<SupvFile> supvFiles = this.listByIds(ids);
for(SupvFile supvFile : supvFiles){
fileStorageUtil.deleteFile(supvFile.getFileUrl());
}
this.removeByIds(ids);
return true;
}
/**
* @Description:
* @param type 区分问题计划

View File

@@ -84,6 +84,7 @@ public class UserLog {
@ExcelProperty(value = "事件类型")
private Integer type;
/**
* 模块名
*/

View File

@@ -46,7 +46,7 @@ public class AreaController extends BaseController {
/**
* 分页查询行政区域
*/
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@PostMapping("/list")
@ApiOperation("查询企业区域")
@ApiImplicitParam(name = "queryParam", value = "查询参数", required = true)
@@ -63,7 +63,7 @@ public class AreaController extends BaseController {
* @param id 行政区域id
* @return 行政区域详情
*/
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@GetMapping("/selectIdArea/{id}")
@ApiOperation("根据行政区域id查询详情")
@ApiImplicitParam(name = "id", value = "查询参数", required = true)
@@ -161,7 +161,7 @@ public class AreaController extends BaseController {
* @param ids 行政区域ids
* @return 行政区域查看所有子节点
*/
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@PostMapping("/selectPid")
@ApiOperation("根据行政区域id查询")
@ApiImplicitParam(name = "ids", value = "查询参数", required = true)
@@ -247,7 +247,7 @@ public class AreaController extends BaseController {
* @param name 行政区域名称
* @return 行政区域详情
*/
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@GetMapping("/selectAreaByName/{name}")
@ApiOperation("根据行政区域名称查询详细")
@ApiImplicitParam(name = "name", value = "查询参数", required = true)

View File

@@ -43,7 +43,7 @@ public class AuditController extends BaseController {
private final AuditService auditService;
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@PostMapping("/getAuditLog")
@ApiOperation("审计日志列表")
@ApiImplicitParam(name = "auditParam", value = "审计日志参数", required = true)
@@ -54,7 +54,7 @@ public class AuditController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS,result,methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@PostMapping("/logFileWriter")
@ApiOperation("日志文件备份")
public HttpResult logFileWriter(){
@@ -63,7 +63,7 @@ public class AuditController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS,null,methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@PostMapping("/recoverLogFile")
@ApiOperation("日志文件恢复")
public HttpResult recoverLogFile() {
@@ -72,7 +72,7 @@ public class AuditController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS,null,methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@PostMapping("/censusAuditLog")
@ApiOperation("审计日志统计")
@ApiImplicitParam(name = "auditParam", value = "审计日志参数", required = true)

View File

@@ -65,7 +65,7 @@ public class ConfigController extends BaseController {
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@GetMapping("/getSysConfigData")
@ApiOperation("获取系统配置列表")
public HttpResult<List<Config>> getSysConfigData() {
@@ -80,7 +80,7 @@ public class ConfigController extends BaseController {
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@GetMapping("/getSysConfigById")
@ApiOperation("根据配置Id获取系统配置")
@ApiImplicitParam(name = "id", value = "参数id", required = true)
@@ -96,7 +96,7 @@ public class ConfigController extends BaseController {
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@GetMapping("/updateSysConfigById")
@ApiOperation("根据配置Id更改(激活)系统状态")
@ApiImplicitParam(name = "id", value = "参数id", required = true)
@@ -116,7 +116,7 @@ public class ConfigController extends BaseController {
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@GetMapping("/removeSysConfigById")
@ApiOperation("根据配置Id删除系统配置")
@ApiImplicitParam(name = "id", value = "参数id", required = true)
@@ -155,7 +155,7 @@ public class ConfigController extends BaseController {
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON, operateType = OperateType.UPDATE)
@OperateInfo(info = LogEnum.SYSTEM_COMMON, operateType = OperateType.UPDATE)
@PostMapping("/updateSysConfig")
@ApiOperation("修改系统配置")
@ApiImplicitParam(name = "configUpdateParam", value = "更新配置实体", required = true)

View File

@@ -133,7 +133,7 @@ public class DictDataController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@GetMapping("/getDicDataById")
@ApiOperation("根据字典id查询字典数据")
@ApiImplicitParam(name = "dicIndex", value = "查询参数", required = true)
@@ -143,7 +143,7 @@ public class DictDataController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@GetMapping("/getDicDataByTypeName")
@ApiOperation("根据字典类型名称查询字典数据")
@ApiImplicitParam(name = "dictTypeName", value = "查询参数", required = true)
@@ -153,7 +153,7 @@ public class DictDataController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@GetMapping("/getDicDataByName")
@ApiOperation("根据字典名称查询字典数据")
@ApiImplicitParam(name = "dicName", value = "查询参数", required = true)
@@ -163,7 +163,7 @@ public class DictDataController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@GetMapping("/getDicDataByNameAndType")
@ApiOperation("根据字典名称查询字典数据")
@ApiImplicitParams({
@@ -176,7 +176,7 @@ public class DictDataController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@GetMapping("/getDicDataByCodeAndType")
@ApiOperation("根据字典Code和字典类型查询字典数据")
@ApiImplicitParams({
@@ -188,7 +188,7 @@ public class DictDataController extends BaseController {
DictData result = dictDataService.getDicDataByCodeAndType(dicCode,typeCode);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@GetMapping("/getDicDataByCode")
@ApiOperation("根据字典code查询字典数据")
@ApiImplicitParam(name = "code", value = "查询参数", required = true)
@@ -201,7 +201,7 @@ public class DictDataController extends BaseController {
/**
* 根据系统类型获取不同指标参数
*/
@OperateInfo
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@GetMapping("/getLoadTypeBySys")
@ApiOperation("根据系统类型获取不同指标参数")
@ApiIgnore
@@ -220,7 +220,7 @@ public class DictDataController extends BaseController {
* @return 新增后的字典数据
*/
@ApiIgnore
@OperateInfo
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@GetMapping("/addDicData")
@ApiOperation("后台新增字典数据")
public HttpResult<DictData> addDicData(String dicTypeName, String dicDataName) {
@@ -236,7 +236,7 @@ public class DictDataController extends BaseController {
* @return 字典数据
*/
@ApiIgnore
@OperateInfo
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@GetMapping("/getDicDataByNameAndTypeName")
@ApiOperation("根据字典类型名称&数据名称获取字典数据")
public HttpResult<DictData> getDicDataByNameAndTypeName(String dicTypeName, String dicDataName) {
@@ -245,7 +245,7 @@ public class DictDataController extends BaseController {
}
@ApiIgnore
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@GetMapping("/getDicDataByTypeCode")
@ApiOperation("根据字典类型code查询字典数据")
@ApiImplicitParam(name = "dictTypeCode", value = "查询参数", required = true)

View File

@@ -97,7 +97,7 @@ public class EleEpdPqdController extends BaseController {
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@PostMapping("/list")
@ApiOperation("列表分页")
@ApiOperation("查询模板列表分页")
@ApiImplicitParam(name = "queryParam", value = "查询参数", required = true)
public HttpResult<Page<EleEpdPqdVO>> getList(@RequestBody @Validated EleEpdPqdParam.EleEpdPqdQueryParam queryParam) {
String methodDescribe = getMethodDescribe("getList");

View File

@@ -3,23 +3,30 @@ package com.njcn.system.handler;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import com.github.tocrhz.mqtt.annotation.MqttSubscribe;
import com.github.tocrhz.mqtt.annotation.Payload;
import com.njcn.common.pojo.constant.PatternRegex;
import com.njcn.common.pojo.dto.LogInfoDTO;
import com.njcn.common.utils.PubUtils;
import com.njcn.redis.pojo.enums.RedisKeyEnum;
import com.njcn.redis.utils.RedisUtil;
import com.njcn.system.service.IUserLogService;
import com.njcn.user.api.UserFeignClient;
import com.njcn.user.pojo.po.User;
import com.njcn.web.utils.EmailUtil;
import io.swagger.models.auth.In;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.springframework.data.redis.core.BoundHashOperations;
import org.springframework.stereotype.Component;
import java.nio.charset.StandardCharsets;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
@@ -37,12 +44,33 @@ public class MqttMessageHandler {
private final UserFeignClient userFeignClient;
private final EmailUtil emailUtil;
private final RedisUtil redisUtil;
private JSONObject jsonObject = null;
/**
* 订阅审计日志的记录,并进行入库操作
*/
@MqttSubscribe(value = "/userLog")
public void subUserLog(String topic, MqttMessage message, @Payload String payload) {
if(Objects.isNull(jsonObject)){
jsonObject = (JSONObject) redisUtil.getObjectByKey(RedisKeyEnum.USER_ROLE_TYPE_KEY.getKey());
if(Objects.isNull(jsonObject)){
userFeignClient.userRoleList();
}
}
LogInfoDTO logInfoDTO = PubUtils.json2obj(new String(message.getPayload(), StandardCharsets.UTF_8),LogInfoDTO.class);
String loginName = logInfoDTO.getLoginName();
if(StrUtil.isNotBlank(loginName) && jsonObject.containsKey(loginName)){
if((Integer) jsonObject.get(loginName)==2){
logInfoDTO.setType(0);
}else {
logInfoDTO.setType(1);
};
}else {
logInfoDTO.setType(1);
}
userLogService.addUserLog(logInfoDTO);
}

View File

@@ -111,7 +111,8 @@ public class AuditServiceImpl extends ServiceImpl<UserLogMapper, UserLog> implem
QueryWrapper<UserLog> queryWrapper = new QueryWrapper<>();
queryWrapper
.between("sys_user_log.create_time", DateUtil.beginOfDay(DateUtil.parse(auditParam.getSearchBeginTime())),
DateUtil.endOfDay(DateUtil.parse(auditParam.getSearchEndTime())));
DateUtil.endOfDay(DateUtil.parse(auditParam.getSearchEndTime())))
.ne("sys_user_log.login_name", UNKNOWN_USER);
if (StrUtil.isNotBlank(auditParam.getLoginName())) {
queryWrapper.eq("sys_user_log.login_name", auditParam.getLoginName());
}
@@ -187,12 +188,14 @@ public class AuditServiceImpl extends ServiceImpl<UserLogMapper, UserLog> implem
userIndex = RequestUtil.getUserIndex(request);
String result = CommonResponseEnum.SUCCESS.getMessage();
String ip = RequestUtil.getRealIp(request);
String type = LogEnum.BUSINESS_COMMON.getOperateType();
String level = LogEnum.BUSINESS_COMMON.getOperateLevel();
String type = LogEnum.SYSTEM_COMMON.getOperateType();
String level = LogEnum.SYSTEM_COMMON.getOperateLevel();
String operateType = OperateType.QUERY;
Integer severity = levelStringToNumber(level);
if (auditParam.isExport()) {
methodDescribe = "审计日志列表导出";
LogInfoDTO logInfoDTO = new LogInfoDTO(loginName, userName, ip, methodDescribe, operateType, result.equalsIgnoreCase("失败") ? 0 : 1, "", severity, type.equalsIgnoreCase("业务事件") ? 0 : 1, generalInfo.getMicroServiceName(), userIndex, LocalDateTime.now());
publisher.send("/userLog", PubUtils.obj2json(logInfoDTO), 2, false);
}else {
if (StrUtil.isNotBlank(auditParam.getSortBy()) && StrUtil.isNotBlank(auditParam.getOrderBy())) {
methodDescribe = methodDescribe.concat("并以")
@@ -200,10 +203,13 @@ public class AuditServiceImpl extends ServiceImpl<UserLogMapper, UserLog> implem
.concat("进行")
.concat(auditParam.getOrderBy().equalsIgnoreCase("desc") ? "降序" : "升序")
.concat("查询");
}
}
LogInfoDTO logInfoDTO = new LogInfoDTO(loginName, userName, ip, methodDescribe, operateType, result.equalsIgnoreCase("失败") ? 0 : 1, "", severity, type.equalsIgnoreCase("业务事件") ? 0 : 1, generalInfo.getMicroServiceName(), userIndex, LocalDateTime.now());
publisher.send("/userLog", PubUtils.obj2json(logInfoDTO), 2, false);
}
}
}
@Override

View File

@@ -131,4 +131,7 @@ public interface UserFeignClient {
@GetMapping("/getColleaguesIdByUserId")
HttpResult<List<String>> getColleaguesIdByUserId(@RequestParam("id") String id);
@GetMapping("/userRoleList")
HttpResult<Boolean> userRoleList();
}

View File

@@ -123,6 +123,12 @@ public class UserFeignClientFallbackFactory implements FallbackFactory<UserFeign
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<Boolean> userRoleList() {
log.error("{}异常,降级处理,异常为:{}","获取所有用户角色",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
};
}
}

View File

@@ -0,0 +1,16 @@
package com.njcn.user.pojo.dto;
import lombok.Data;
/**
* pqs
*
* @author cdf
* @date 2024/8/29
*/
@Data
public class UserRoleLogsDTO {
private String loginName;
private Integer roleType;
}

View File

@@ -2,6 +2,7 @@ package com.njcn.user.controller;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.pojo.response.HttpResult;
@@ -41,7 +42,7 @@ public class AuthClientController extends BaseController {
private final IAuthClientService authClientService;
@OperateInfo
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@GetMapping("/getAuthClientByName/{clientName}")
@ApiOperation("根据客户端名查询信息")
@ApiImplicitParam(name = "clientName", value = "客户端名称", required = true)

View File

@@ -98,7 +98,7 @@ public class ComponentController extends BaseController {
}
}
@OperateInfo
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@GetMapping("/componentTree")
@ApiOperation("组件树")
public HttpResult<List<ComponentVO>> getComponentTree(){
@@ -107,7 +107,7 @@ public class ComponentController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS,list,methodDescribe);
}
@OperateInfo
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@GetMapping("/userComponentTree")
@ApiOperation("用户组件树")
public HttpResult<List<ComponentVO>> getUserComponentTree(){
@@ -116,7 +116,7 @@ public class ComponentController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS,list,methodDescribe);
}
@OperateInfo
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@GetMapping("/getFatherComponent")
@ApiOperation("获取父组件节点")
public HttpResult<List<Component>> getFatherComponent(@RequestParam @Validated String systemType){

View File

@@ -58,7 +58,7 @@ public class DeptController extends BaseController {
/**
* 分页查询部门信息
*/
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@PostMapping("/list")
@ApiOperation("查询部门信息")
@ApiImplicitParam(name = "queryParam", value = "查询参数", required = true)
@@ -233,7 +233,7 @@ public class DeptController extends BaseController {
* 根据条件获取后代部门索引
*
*/
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@PostMapping("/getDeptDescendantIndexes")
@ApiOperation("获取后代部门索引")
@ApiImplicitParams({
@@ -257,7 +257,7 @@ public class DeptController extends BaseController {
* @author xy
* @date 2022/2/14 15:04
*/
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@GetMapping("/getDeptIdByArea")
@ApiOperation("根据区域索引获取部门索引")
@ApiIgnore
@@ -281,7 +281,7 @@ public class DeptController extends BaseController {
* @author denghuajun
* @date 2022/2/24 15:04
*/
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@GetMapping("/getAreaIdByDeptId")
@ApiOperation("根据区域索引获取部门索引")
@ApiImplicitParam(name = "deptId", value = "部门id", required = true)
@@ -379,7 +379,7 @@ public class DeptController extends BaseController {
@GetMapping("/getDepSonSelfCodetByDeptId")
@ApiOperation("根据部门id获取所有子部门以及自身的code")
public HttpResult<List<String>> getDepSonSelfCodetByDeptId(@RequestParam("deptId")String deptId) {
String methodDescribe = getMethodDescribe("getDepSonSelfIdtByDeptId");
String methodDescribe = getMethodDescribe("getDepSonSelfCodetByDeptId");
List<String> deptList = deptService.getDepSonSelfCodetByDeptId(deptId);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, deptList, methodDescribe);
}

View File

@@ -34,7 +34,7 @@ import org.springframework.web.bind.annotation.RestController;
@AllArgsConstructor
public class PassWordRuleController extends BaseController {
private final PassWordRuleService passWordRuleService;
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@ApiOperation("密码规则修改")
@RequestMapping(value = "/ruleUpdate", method = RequestMethod.POST)
public HttpResult<Boolean> ruleUpdate(@RequestBody @Validated PassWordRuleParam passWordRuleParam) {
@@ -44,7 +44,7 @@ public class PassWordRuleController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, flag, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@ApiOperation("获取密码规则")
@RequestMapping(value = "/getRule", method = RequestMethod.POST)
public HttpResult<PassWordRuleParam> getRule() {
@@ -54,7 +54,7 @@ public class PassWordRuleController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, passWordRuleParam, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@ApiOperation("获取用户策略")
@RequestMapping(value = "/getUserStrategy", method = RequestMethod.POST)
public HttpResult<UserStrategy> getUserStrategy() {

View File

@@ -50,7 +50,7 @@ public class RoleController extends BaseController {
/**
* 分页查询角色信息
*/
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@PostMapping("/list")
@ApiOperation("查询角色信息")
@ApiImplicitParam(name = "queryParam", value = "查询参数", required = true)

View File

@@ -6,6 +6,7 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.constant.LogInfo;
@@ -73,7 +74,7 @@ public class UserController extends BaseController {
private final RedisUtil redisUtil;
@OperateInfo
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@GetMapping("/getUserByName/{loginName}")
@ApiOperation("根据登录名查询用户信息")
@ApiImplicitParam(name = "loginName", value = "登录名", required = true)
@@ -90,7 +91,7 @@ public class UserController extends BaseController {
}
@OperateInfo
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@ApiIgnore
@GetMapping("/getUserByPhone/{phone}")
@ApiOperation("根据手机号查询用户信息")
@@ -107,7 +108,7 @@ public class UserController extends BaseController {
}
}
@OperateInfo
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@GetMapping("/judgeUserStatus/{loginName}")
@ApiOperation("认证后根据用户名判断用户状态")
@ApiImplicitParam(name = "loginName", value = "登录名", required = true)
@@ -133,6 +134,10 @@ public class UserController extends BaseController {
String methodDescribe = getMethodDescribe("add");
LogUtil.njcnDebug(log, "{},用户数据为:{}", methodDescribe, addUserParam);
boolean result = userService.addUser(addUserParam);
//更新redis数据
userService.userRoleList();
if (result) {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
} else {
@@ -153,6 +158,8 @@ public class UserController extends BaseController {
String methodDescribe = getMethodDescribe("delete");
LogUtil.njcnDebug(log, "{}用户id为{}", methodDescribe, id);
boolean result = userService.deleteUser(id);
//更新redis数据
userService.userRoleList();
if (result) {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
} else {
@@ -173,6 +180,8 @@ public class UserController extends BaseController {
String methodDescribe = getMethodDescribe("update");
LogUtil.njcnDebug(log, "{},用户数据为:{}", methodDescribe, updateUserParam);
boolean result = userService.updateUser(updateUserParam);
//更新redis数据
userService.userRoleList();
if (result) {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
} else {
@@ -195,7 +204,7 @@ public class UserController extends BaseController {
}
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON, operateType = OperateType.UPLOAD)
@OperateInfo(info = LogEnum.SYSTEM_COMMON, operateType = OperateType.UPLOAD)
@PostMapping("/uploadImage")
@ApiOperation("上传头像")
public HttpResult<MinIoUploadResDTO> uploadImage(MultipartFile issuesFile) {
@@ -204,7 +213,7 @@ public class UserController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, new MinIoUploadResDTO(issuesFile.getOriginalFilename(), filePath), methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON, operateType = OperateType.UPLOAD)
@OperateInfo(info = LogEnum.SYSTEM_COMMON, operateType = OperateType.UPLOAD)
@PostMapping("/getUrl")
@ApiOperation("获取头像url")
public HttpResult<String> getUrl(@RequestParam("headSculpture") String headSculpture) {
@@ -216,7 +225,7 @@ public class UserController extends BaseController {
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@PostMapping("/list")
@ApiOperation("列表分页")
@ApiOperation("查询用户列表分页")
@ApiImplicitParam(name = "queryParam", value = "查询参数", required = true)
public HttpResult<Page<UserVO>> getUserList(@RequestBody @Validated UserParam.UserQueryParam queryParam) {
String methodDescribe = getMethodDescribe("getUserList");
@@ -344,7 +353,7 @@ public class UserController extends BaseController {
}
}
@OperateInfo
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@GetMapping("/generateSm2Key")
@ApiOperation("根据登录名获取公钥")
@ApiImplicitParam(name = "loginName", value = "登录名", required = true)
@@ -433,7 +442,7 @@ public class UserController extends BaseController {
* @param id 用户ID
* @return
*/
@OperateInfo
@OperateInfo(info = LogEnum.SYSTEM_COMMON, operateType = OperateType.UPDATE)
@PutMapping("/activateUser")
@ApiOperation("用户激活")
@ApiImplicitParam(name = "id", value = "用户id")
@@ -573,7 +582,7 @@ public class UserController extends BaseController {
* @author cdf
* @date 2023/7/31
*/
@OperateInfo(info = LogEnum.SYSTEM_SERIOUS)
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@GetMapping("/getUserListByRoleCode")
@ApiOperation("根据角色Code集合查询用户信息")
@ApiImplicitParam(name = "roleCode", value = "角色Code", required = true)
@@ -624,5 +633,18 @@ public class UserController extends BaseController {
List<User> result = userService.simpleList(true);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
/**
* 查询用户的角色
* @author cdf
* @date 2024/8/29
*/
@GetMapping("/userRoleList")
@ApiOperation("获取所有用户角色")
public HttpResult<Boolean> userRoleList(){
String methodDescribe = getMethodDescribe("userRoleList");
userService.userRoleList();
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
}
}

View File

@@ -18,5 +18,12 @@ import com.njcn.web.controller.BaseController;
@RequestMapping("/userRole")
public class UserRoleController extends BaseController {
/**
*
* @author cdf
* @date 2024/8/29
*/
}

View File

@@ -1,6 +1,8 @@
package com.njcn.user.init;
import com.njcn.user.service.IFunctionService;
import com.njcn.user.service.IUserService;
import com.njcn.user.service.impl.UserServiceImpl;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.CommandLineRunner;
@@ -19,8 +21,11 @@ public class InitPermissionRoles implements CommandLineRunner {
private final IFunctionService functionService;
private final IUserService iUserService;
@Override
public void run(String... args) {
functionService.refreshRolesFunctionsCache();
iUserService.userRoleList();
}
}

View File

@@ -3,12 +3,14 @@ package com.njcn.user.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.user.pojo.dto.UserRoleLogsDTO;
import com.njcn.user.pojo.dto.excel.UserExcel;
import com.njcn.user.pojo.po.User;
import com.njcn.user.pojo.vo.UserVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* <p>
@@ -58,4 +60,6 @@ public interface UserMapper extends BaseMapper<User> {
List<UserExcel> queryExportUser(@Param("ew") QueryWrapper<UserExcel> queryWrapper);
List<UserVO> getUserVOByIdList(@Param("ids") List<String> ids);
List<UserRoleLogsDTO> userRoleList();
}

View File

@@ -88,4 +88,20 @@
<select id="userRoleList" resultType="UserRoleLogsDTO">
SELECT
sys_user.login_name loginName,
min( sys_role.type ) roleType
FROM
sys_user,
sys_user_role,
sys_role
WHERE
sys_user.id = sys_user_role.User_Id
AND sys_user_role.Role_Id = sys_role.id
GROUP BY
login_name
</select>
</mapper>

View File

@@ -14,6 +14,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;
/**
* <p>
@@ -201,4 +202,7 @@ public interface IUserService extends IService<User> {
List<String> getColleaguesIdByUserId(String id);
Boolean userRoleList();
}

View File

@@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -23,6 +24,8 @@ import com.njcn.device.pq.pojo.po.PqsTerminalLogs;
import com.njcn.oss.constant.OssPath;
import com.njcn.oss.utils.FileStorageUtil;
import com.njcn.poi.excel.ExcelUtil;
import com.njcn.redis.pojo.enums.RedisKeyEnum;
import com.njcn.redis.utils.RedisUtil;
import com.njcn.system.api.AreaFeignClient;
import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.enums.DicDataEnum;
@@ -35,6 +38,7 @@ import com.njcn.user.mapper.UserRoleMapper;
import com.njcn.user.pojo.constant.UserState;
import com.njcn.user.pojo.constant.UserType;
import com.njcn.user.pojo.dto.UserDTO;
import com.njcn.user.pojo.dto.UserRoleLogsDTO;
import com.njcn.user.pojo.dto.excel.UserExcel;
import com.njcn.user.pojo.param.UserInfoParm;
import com.njcn.user.pojo.param.UserParam;
@@ -45,6 +49,7 @@ import com.njcn.web.factory.PageFactory;
import com.njcn.web.utils.RequestUtil;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springframework.data.redis.core.BoundHashOperations;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
@@ -53,10 +58,7 @@ import javax.validation.constraints.NotNull;
import java.io.File;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Objects;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -93,6 +95,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
private final AreaFeignClient areaFeignClient;
private final FileStorageUtil fileStorageUtil;
private final RedisUtil redisUtil;
@Override
public UserDTO getUserByName(String loginName) {
User user = getUserByLoginName(loginName);
@@ -594,6 +598,17 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
return userList.stream().map(User::getId).collect(Collectors.toList());
}
@Override
public Boolean userRoleList() {
JSONObject jsonObject = new JSONObject();
List<UserRoleLogsDTO> mapList = this.baseMapper.userRoleList();
for(UserRoleLogsDTO item :mapList){
jsonObject.putOpt(item.getLoginName(),item.getRoleType());
}
redisUtil.saveByKeyWithExpire(RedisKeyEnum.USER_ROLE_TYPE_KEY.getKey(),jsonObject,-1L);
return true;
}
/**
* 根据登录名查询用户
*