refactor(logs): 将日志服务从设备模块迁移到系统模块

- 将 CsLogsPO 相关类从 cs-device 模块移动到 cs-system 模块
- 更新所有相关导入路径以指向新的包位置
- 修改 MqttMessageHandler 使用远程 Feign 客户端调用日志服务
- 清理不再使用的分页和日志 POJO 导入依赖
- 重命名相关 Mapper 和 Service 类以匹配新模块结构
This commit is contained in:
xy
2026-06-11 19:54:07 +08:00
parent 689f9ee51c
commit 95d9432298
16 changed files with 25 additions and 57 deletions

View File

@@ -1,20 +0,0 @@
package com.njcn.csdevice.api;
import com.njcn.common.pojo.constant.ServerInfo;
import com.njcn.common.pojo.dto.DeviceLogDTO;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.csdevice.api.fallback.CsLogsClientFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
/**
* @author xy
*/
@FeignClient(value = ServerInfo.CS_DEVICE_BOOT, path = "/cslog", fallbackFactory = CsLogsClientFallbackFactory.class,contextId = "cslog")
public interface CsLogsFeignClient {
@PostMapping("/add")
HttpResult addUserLog(@RequestBody DeviceLogDTO deviceLogDTO);
}

View File

@@ -1,36 +0,0 @@
package com.njcn.csdevice.api.fallback;
import com.njcn.common.pojo.dto.DeviceLogDTO;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.csdevice.api.CsLogsFeignClient;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
/**
* @author xy
*/
@Slf4j
@Component
public class CsLogsClientFallbackFactory implements FallbackFactory<CsLogsFeignClient> {
@Override
public CsLogsFeignClient create(Throwable cause) {
//判断抛出异常是否为解码器抛出的业务异常
Enum<?> exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK;
if (cause.getCause() instanceof BusinessException) {
BusinessException businessException = (BusinessException) cause.getCause();
}
Enum<?> finalExceptionEnum = exceptionEnum;
return new CsLogsFeignClient() {
@Override
public HttpResult addUserLog(DeviceLogDTO deviceLogDTO) {
log.error("{}异常,降级处理,异常为:{}","新增日志",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
};
}
}

View File

@@ -1,106 +0,0 @@
package com.njcn.csdevice.pojo.po;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.njcn.db.bo.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDateTime;
import java.util.Date;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
/**
*
* Description:
* Date: 2023/8/7 14:02【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Data
@TableName(value = "cs_logs")
public class CsLogsPO {
@TableId(value = "id", type = IdType.ASSIGN_UUID)
private String id;
/**
* 用户名称
*/
@TableField(value = "user_name")
private String userName;
/**
* 操作
*/
@TableField(value = "operate")
private String operate;
/**
* 结果(0:失败 1:成功)
*/
@TableField(value = "`result`")
private Integer result;
/**
* 失败原因
*/
@TableField(value = "fail_reason")
private String failReason;
/**
* 登录名称
*/
@TableField(value = "login_name")
private String loginName;
/**
* 创建用户
*/
@TableField(fill = FieldFill.INSERT, insertStrategy = FieldStrategy.IGNORED)
private String createBy;
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT, insertStrategy = FieldStrategy.IGNORED)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
/**
* 更新用户
*/
@TableField(fill = FieldFill.INSERT_UPDATE, insertStrategy = FieldStrategy.IGNORED)
private String updateBy;
/**
* 更新时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE, insertStrategy = FieldStrategy.IGNORED)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
public static final String COL_ID = "id";
public static final String COL_USER_NAME = "user_name";
public static final String COL_OPERATE = "operate";
public static final String COL_RESULT = "result";
public static final String COL_FAIL_REASON = "fail_reason";
public static final String COL_CREATE_BY = "create_by";
public static final String COL_CREATE_TIME = "create_time";
public static final String COL_UPDATE_BY = "update_by";
public static final String COL_UPDATE_TIME = "update_time";
public static final String COL_LOGIN_NAME = "login_name";
}

View File

@@ -1,7 +1,6 @@
package com.njcn.csdevice.controller.equipment;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.constant.OperateType;
@@ -10,7 +9,6 @@ import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.csdevice.pojo.po.CsEventSendMsg;
import com.njcn.csdevice.pojo.po.CsLogsPO;
import com.njcn.csdevice.pojo.vo.CsEventSendMsgVO;
import com.njcn.csdevice.service.ICsEventSendMsgService;
import com.njcn.web.controller.BaseController;

View File

@@ -1,68 +0,0 @@
package com.njcn.csdevice.controller.equipment;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.constant.OperateType;
import com.njcn.common.pojo.dto.DeviceLogDTO;
import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.csdevice.pojo.po.CsLogsPO;
import com.njcn.csdevice.service.CsLogsPOService;
import com.njcn.web.controller.BaseController;
import com.njcn.web.pojo.param.BaseParam;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
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;
/**
* Description:
* Date: 2023/8/7 14:21【需求编号】
*
* @author clam
* @version V1.0.0
*/
@RestController
@Slf4j
@Api(tags = "日志管理")
@AllArgsConstructor
@RequestMapping("/cslog")
public class CsLogController extends BaseController {
private final CsLogsPOService csLogsPOService;
/**
* 插入审计日志
*/
@OperateInfo(info = LogEnum.SYSTEM_COMMON, operateType = OperateType.ADD)
@PostMapping("/add")
@ApiOperation("插入设备日志")
@ApiImplicitParam(name = "deviceLogDTO", value = "插入日志参数", required = true)
public HttpResult addUserLog(@RequestBody DeviceLogDTO deviceLogDTO) {
String methodDescribe = getMethodDescribe("addUserLog");
csLogsPOService.addLog(deviceLogDTO);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/queryLog")
@ApiOperation("查询日志")
@ApiImplicitParam(name = "baseParam", value = "查询日志参数", required = true)
public HttpResult<IPage<CsLogsPO>> queryLog(@RequestBody BaseParam baseParam){
String methodDescribe = getMethodDescribe("queryLog");
IPage<CsLogsPO> list = csLogsPOService.queryPage(baseParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}
}

View File

@@ -14,7 +14,6 @@ import com.njcn.csdevice.enums.DeviceOperate;
import com.njcn.csdevice.pojo.dto.CsEquipmentDeliveryDTO;
import com.njcn.csdevice.pojo.param.*;
import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO;
import com.njcn.csdevice.pojo.po.CsLogsPO;
import com.njcn.csdevice.pojo.vo.CsEquipmentDeliveryVO;
import com.njcn.csdevice.pojo.vo.DevVersionVO;
import com.njcn.csdevice.pojo.vo.DeviceManagerVO;
@@ -30,7 +29,6 @@ import com.njcn.system.enums.DicDataTypeEnum;
import com.njcn.system.pojo.po.SysDicTreePO;
import com.njcn.web.advice.DeviceLog;
import com.njcn.web.controller.BaseController;
import com.njcn.web.pojo.param.BaseParam;
import io.swagger.annotations.*;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;

View File

@@ -2,12 +2,10 @@ package com.njcn.csdevice.handler;
import com.github.tocrhz.mqtt.annotation.MqttSubscribe;
import com.github.tocrhz.mqtt.annotation.Payload;
import com.njcn.common.pojo.dto.DeviceLogDTO;
import com.njcn.common.utils.PubUtils;
import com.njcn.csdevice.service.CsLogsPOService;
import com.njcn.cssystem.api.CsLogsFeignClient;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.paho.client.mqttv3.MqttMessage;
@@ -25,8 +23,7 @@ import java.nio.charset.StandardCharsets;
@AllArgsConstructor
public class MqttMessageHandler {
private final CsLogsPOService csLogsPOService;
private final CsLogsFeignClient csLogsFeignClient;
/**
* 插入devicelog
@@ -34,7 +31,7 @@ public class MqttMessageHandler {
@MqttSubscribe(value = "/deviceLog")
public void responseRtData(String topic, MqttMessage message, @Payload String payload) {
DeviceLogDTO deviceLogDTO = PubUtils.json2obj(new String(message.getPayload(), StandardCharsets.UTF_8),DeviceLogDTO.class);
csLogsPOService.addLog(deviceLogDTO);
csLogsFeignClient.addUserLog(deviceLogDTO);
}

View File

@@ -1,10 +1,8 @@
package com.njcn.csdevice.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.csdevice.pojo.po.CsEventSendMsg;
import com.njcn.csdevice.pojo.po.CsLogsPO;
import com.njcn.csdevice.pojo.vo.CsEventSendMsgVO;
import com.njcn.web.pojo.param.BaseParam;
import org.apache.ibatis.annotations.Param;

View File

@@ -1,15 +0,0 @@
package com.njcn.csdevice.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.csdevice.pojo.po.CsLogsPO;
/**
*
* Description:
* Date: 2023/8/7 14:02【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface CsLogsPOMapper extends BaseMapper<CsLogsPO> {
}

View File

@@ -5,13 +5,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.csdevice.pojo.param.*;
import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO;
import com.njcn.csdevice.pojo.po.CsLogsPO;
import com.njcn.csdevice.pojo.vo.CsEquipmentDeliveryVO;
import com.njcn.csdevice.pojo.vo.DevVersionVO;
import com.njcn.csdevice.pojo.vo.DeviceManagerVO;
import com.njcn.csdevice.pojo.vo.ProjectEquipmentVO;
import com.njcn.web.pojo.param.BaseParam;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;

View File

@@ -1,23 +0,0 @@
package com.njcn.csdevice.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.njcn.common.pojo.dto.DeviceLogDTO;
import com.njcn.csdevice.pojo.po.CsLogsPO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.web.pojo.param.BaseParam;
/**
*
* Description:
* Date: 2023/8/7 14:02【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface CsLogsPOService extends IService<CsLogsPO>{
void addLog(DeviceLogDTO deviceLogDTO);
IPage<CsLogsPO> queryPage(BaseParam baseParam);
}

View File

@@ -27,7 +27,6 @@ import com.njcn.access.utils.MqttUtil;
import com.njcn.common.pojo.dto.DeviceLogDTO;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.csdevice.api.CsLedgerFeignClient;
import com.njcn.csdevice.api.CsLogsFeignClient;
import com.njcn.csdevice.constant.DataParam;
import com.njcn.csdevice.enums.AlgorithmResponseEnum;
import com.njcn.csdevice.mapper.CsEquipmentDeliveryMapper;
@@ -50,6 +49,7 @@ import com.njcn.csharmonic.api.CsHarmonicPlanLineFeignClient;
import com.njcn.csharmonic.api.EventUserFeignClient;
import com.njcn.csharmonic.param.CsEventUserQueryParam;
import com.njcn.csharmonic.pojo.po.CsEventPO;
import com.njcn.cssystem.api.CsLogsFeignClient;
import com.njcn.device.biz.mapper.OverLimitWlMapper;
import com.njcn.oss.constant.OssPath;
import com.njcn.oss.utils.FileStorageUtil;

View File

@@ -1,14 +1,11 @@
package com.njcn.csdevice.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.csdevice.mapper.CsEventSendMsgMapper;
import com.njcn.csdevice.pojo.po.CsEventSendMsg;
import com.njcn.csdevice.pojo.po.CsLogsPO;
import com.njcn.csdevice.pojo.vo.CsEventSendMsgVO;
import com.njcn.csdevice.service.ICsEventSendMsgService;
import com.njcn.cssystem.pojo.po.CsFeedbackChatPO;
import com.njcn.system.api.EpdFeignClient;
import com.njcn.system.pojo.po.EleEpdPqd;
import com.njcn.user.api.UserFeignClient;

View File

@@ -1,56 +0,0 @@
package com.njcn.csdevice.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.common.pojo.dto.DeviceLogDTO;
import com.njcn.csdevice.mapper.CsLogsPOMapper;
import com.njcn.csdevice.pojo.po.CsLogsPO;
import com.njcn.csdevice.service.CsLogsPOService;
import com.njcn.user.enums.AppRoleEnum;
import com.njcn.web.pojo.param.BaseParam;
import com.njcn.web.utils.RequestUtil;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.List;
/**
*
* Description:
* Date: 2023/8/7 14:02【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
public class CsLogsPOServiceImpl extends ServiceImpl<CsLogsPOMapper, CsLogsPO> implements CsLogsPOService {
@Override
// @Transactional(rollbackFor = {Exception.class})
public void addLog(DeviceLogDTO deviceLogDTO) {
CsLogsPO csPO = new CsLogsPO();
BeanUtils.copyProperties(deviceLogDTO,csPO);
csPO.setCreateBy(deviceLogDTO.getUserIndex());
csPO.setUpdateBy(deviceLogDTO.getUserIndex());
this.save(csPO);
}
@Override
public IPage<CsLogsPO> queryPage(BaseParam baseParam) {
Page<CsLogsPO> returnpage = new Page<> (baseParam.getPageNum ( ), baseParam.getPageSize ( ));
String username = RequestUtil.getUsername();
String userRole = RequestUtil.getUserRole();
List<String> strings = JSONArray.parseArray(userRole, String.class);
QueryWrapper<CsLogsPO> csLogsPOQueryWrapper = new QueryWrapper<>();
csLogsPOQueryWrapper.lambda()
// .eq(!strings.contains(AppRoleEnum.OPERATION_MANAGER.getCode()),CsLogsPO::getUserName, username)
.ge(StringUtils.isNotBlank(baseParam.getSearchBeginTime()),CsLogsPO::getCreateTime,baseParam.getSearchBeginTime()).
le(StringUtils.isNotBlank(baseParam.getSearchEndTime()),CsLogsPO::getCreateTime,baseParam.getSearchEndTime()).orderByDesc(CsLogsPO::getCreateTime);
IPage<CsLogsPO> list = this.getBaseMapper().selectPage(returnpage,csLogsPOQueryWrapper);
return list;
}
}

View File

@@ -37,7 +37,6 @@ public class DeviceFtpServiceImpl implements DeviceFtpService {
private final AskDeviceDataFeignClient askDeviceDataFeignClient;
private final RedisUtil redisUtil;
private final ChannelObjectUtil channelObjectUtil;
private final FileStorageUtil fileStorageUtil;
private final MqttUtil mqttUtil;
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
@@ -57,6 +56,7 @@ public class DeviceFtpServiceImpl implements DeviceFtpService {
if (Objects.nonNull(object)) {
makeUpVo.setPrjDataPath(object.toString());
makeUpVo.setType("dir");
break;
}
}
} catch (Exception e) {
@@ -84,6 +84,7 @@ public class DeviceFtpServiceImpl implements DeviceFtpService {
if (object != null) {
// 根据类型处理不同的数据
processObject(result, object, type);
break;
}
}
} catch (Exception e) {