From f755a3034b9e76143d5aeb3caef057e2229e1453 Mon Sep 17 00:00:00 2001 From: zhangboxuan Date: Thu, 7 Mar 2024 19:17:33 +0800 Subject: [PATCH] add operate log --- .../cloud/core/domain/CloudOperateLogDo.java | 65 +++++ .../operateLog/BasePageOperateLogParam.java | 16 + .../req/operateLog/ParentOperateLogParam.java | 13 + .../QueryOperateLogActionParam.java | 12 + .../resp/operateLog/OperateLogActionResp.java | 14 + .../resp/operateLog/OperateLogResp.java | 59 ++++ .../resp/operateLog/OperateLogStatusResp.java | 14 + .../resp/operateLog/OperateLogTypeResp.java | 14 + .../cloud/core/enums/OperateLogAction.java | 100 +++++++ .../cloud/core/enums/OperateLogStatus.java | 39 +++ .../cloud/core/enums/OperateLogType.java | 39 +++ .../core/mapper/CloudOperateLogMapper.java | 7 + .../core/service/CloudOperateLogService.java | 96 ++++++ .../impl/CloudOperateLogServiceImpl.java | 212 ++++++++++++++ .../cloud/manage/config/KcpI18nUtil.java | 78 +++++ .../cloud/manage/ctrl/OperateLogCtrl.java | 104 +++++++ .../req/operateLog/OperateLogDetailParam.java | 12 + .../req/operateLog/PageOperateLogParam.java | 24 ++ .../resp/operateLog/OperateDetailResp.java | 50 ++++ .../manage/service/OperateLogService.java | 81 ++++++ .../service/impl/OperateLogServiceImpl.java | 275 ++++++++++++++++++ .../main/resources/i18n/message.properties | 76 +++++ .../resources/i18n/message_en_US.properties | 178 ++++++++++++ .../resources/i18n/message_zh_CN.properties | 180 ++++++++++++ 24 files changed, 1758 insertions(+) create mode 100644 mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/domain/CloudOperateLogDo.java create mode 100644 mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/entity/req/operateLog/BasePageOperateLogParam.java create mode 100644 mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/entity/req/operateLog/ParentOperateLogParam.java create mode 100644 mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/entity/req/operateLog/QueryOperateLogActionParam.java create mode 100644 mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/entity/resp/operateLog/OperateLogActionResp.java create mode 100644 mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/entity/resp/operateLog/OperateLogResp.java create mode 100644 mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/entity/resp/operateLog/OperateLogStatusResp.java create mode 100644 mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/entity/resp/operateLog/OperateLogTypeResp.java create mode 100644 mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/enums/OperateLogAction.java create mode 100644 mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/enums/OperateLogStatus.java create mode 100644 mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/enums/OperateLogType.java create mode 100644 mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/mapper/CloudOperateLogMapper.java create mode 100644 mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/service/CloudOperateLogService.java create mode 100644 mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/service/impl/CloudOperateLogServiceImpl.java create mode 100644 mcp-cloud-manage/src/main/java/com/hnkylin/cloud/manage/config/KcpI18nUtil.java create mode 100644 mcp-cloud-manage/src/main/java/com/hnkylin/cloud/manage/ctrl/OperateLogCtrl.java create mode 100644 mcp-cloud-manage/src/main/java/com/hnkylin/cloud/manage/entity/req/operateLog/OperateLogDetailParam.java create mode 100644 mcp-cloud-manage/src/main/java/com/hnkylin/cloud/manage/entity/req/operateLog/PageOperateLogParam.java create mode 100644 mcp-cloud-manage/src/main/java/com/hnkylin/cloud/manage/entity/resp/operateLog/OperateDetailResp.java create mode 100644 mcp-cloud-manage/src/main/java/com/hnkylin/cloud/manage/service/OperateLogService.java create mode 100644 mcp-cloud-manage/src/main/java/com/hnkylin/cloud/manage/service/impl/OperateLogServiceImpl.java create mode 100644 mcp-cloud-manage/src/main/resources/i18n/message.properties create mode 100644 mcp-cloud-manage/src/main/resources/i18n/message_en_US.properties create mode 100644 mcp-cloud-manage/src/main/resources/i18n/message_zh_CN.properties diff --git a/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/domain/CloudOperateLogDo.java b/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/domain/CloudOperateLogDo.java new file mode 100644 index 0000000..6c8f15b --- /dev/null +++ b/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/domain/CloudOperateLogDo.java @@ -0,0 +1,65 @@ +package com.hnkylin.cloud.core.domain; + + +import com.baomidou.mybatisplus.annotation.FieldStrategy; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@TableName("cloud_operate_log") +public class CloudOperateLogDo extends BaseDo { + + + private Integer parentId; + + //类型 + private String type; + + //动作 + private String action; + + //状态 + private String status; + + //执行进度 + private String percent; + + //对象id + private Integer objId; + + //对象名称 + private String objName; + + //操作详情 + private String detail; + + //操作结果 + private String result; + + //结束时间 + @TableField(updateStrategy = FieldStrategy.IGNORED) + private Date endTime; + + private String clientIp; + + private Long mcTaskId; + + private Integer clusterId; + + private String mcTaskDetailInfo; + private String vcenterTaskKey; + + private String vcenterObjName; + + +} diff --git a/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/entity/req/operateLog/BasePageOperateLogParam.java b/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/entity/req/operateLog/BasePageOperateLogParam.java new file mode 100644 index 0000000..c272e22 --- /dev/null +++ b/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/entity/req/operateLog/BasePageOperateLogParam.java @@ -0,0 +1,16 @@ +package com.hnkylin.cloud.core.entity.req.operateLog; + +import com.hnkylin.cloud.core.annotation.FieldCheck; +import com.hnkylin.cloud.core.common.BasePageParam; +import com.hnkylin.cloud.core.enums.OperateLogType; +import lombok.Data; + +@Data +public class BasePageOperateLogParam extends BasePageParam { + + @FieldCheck(notNull = true, notNullMessage = "对象ID不能为空") + private Integer objId; + + private OperateLogType type; + +} diff --git a/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/entity/req/operateLog/ParentOperateLogParam.java b/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/entity/req/operateLog/ParentOperateLogParam.java new file mode 100644 index 0000000..5285de7 --- /dev/null +++ b/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/entity/req/operateLog/ParentOperateLogParam.java @@ -0,0 +1,13 @@ +package com.hnkylin.cloud.core.entity.req.operateLog; + +import com.hnkylin.cloud.core.annotation.FieldCheck; +import lombok.Data; + +@Data +public class ParentOperateLogParam { + + @FieldCheck(notNull = true, notNullMessage = "对象ID不能为空") + private Integer parentLogId; + + +} diff --git a/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/entity/req/operateLog/QueryOperateLogActionParam.java b/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/entity/req/operateLog/QueryOperateLogActionParam.java new file mode 100644 index 0000000..6f0234a --- /dev/null +++ b/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/entity/req/operateLog/QueryOperateLogActionParam.java @@ -0,0 +1,12 @@ +package com.hnkylin.cloud.core.entity.req.operateLog; + +import com.hnkylin.cloud.core.enums.OperateLogType; +import lombok.Data; + +@Data +public class QueryOperateLogActionParam { + + + private OperateLogType type; + +} diff --git a/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/entity/resp/operateLog/OperateLogActionResp.java b/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/entity/resp/operateLog/OperateLogActionResp.java new file mode 100644 index 0000000..912e304 --- /dev/null +++ b/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/entity/resp/operateLog/OperateLogActionResp.java @@ -0,0 +1,14 @@ +package com.hnkylin.cloud.core.entity.resp.operateLog; + +import com.hnkylin.cloud.core.enums.OperateLogAction; +import lombok.Data; + +@Data +public class OperateLogActionResp { + + + //类型 + private OperateLogAction action; + + private String i8nMessage; +} diff --git a/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/entity/resp/operateLog/OperateLogResp.java b/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/entity/resp/operateLog/OperateLogResp.java new file mode 100644 index 0000000..66064e7 --- /dev/null +++ b/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/entity/resp/operateLog/OperateLogResp.java @@ -0,0 +1,59 @@ +package com.hnkylin.cloud.core.entity.resp.operateLog; + +import com.hnkylin.cloud.core.enums.OperateLogAction; +import com.hnkylin.cloud.core.enums.OperateLogStatus; +import com.hnkylin.cloud.core.enums.OperateLogType; +import lombok.Data; + +@Data +public class OperateLogResp { + //日志ID + private Integer operateLogId; + //类型 + private OperateLogType type; + + //动作 + private OperateLogAction action; + + + //类型 + private String typeDesc; + + //动作 + private String actionDesc; + + + //状态 + private OperateLogStatus status; + + //执行进度 + private String percent; + + //对象id + private Integer objId; + + //对象名称 + private String objName; + + //操作详情 + private String detail; + + //操作结果 + private String result; + + private String startTime; + + //结束时间 + private String endTime; + + //是否有子任务 + private boolean hasChildOperateLog; + + private String operateUser; + + private String orgName; + + private String zoneName; + + private String clientIp; +} diff --git a/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/entity/resp/operateLog/OperateLogStatusResp.java b/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/entity/resp/operateLog/OperateLogStatusResp.java new file mode 100644 index 0000000..6453493 --- /dev/null +++ b/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/entity/resp/operateLog/OperateLogStatusResp.java @@ -0,0 +1,14 @@ +package com.hnkylin.cloud.core.entity.resp.operateLog; + +import com.hnkylin.cloud.core.enums.OperateLogStatus; +import lombok.Data; + +@Data +public class OperateLogStatusResp { + + + //类型 + private OperateLogStatus status; + + private String i8nMessage; +} diff --git a/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/entity/resp/operateLog/OperateLogTypeResp.java b/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/entity/resp/operateLog/OperateLogTypeResp.java new file mode 100644 index 0000000..7f76119 --- /dev/null +++ b/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/entity/resp/operateLog/OperateLogTypeResp.java @@ -0,0 +1,14 @@ +package com.hnkylin.cloud.core.entity.resp.operateLog; + +import com.hnkylin.cloud.core.enums.OperateLogType; +import lombok.Data; + +@Data +public class OperateLogTypeResp { + + + //类型 + private OperateLogType type; + + private String i8nMessage; +} diff --git a/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/enums/OperateLogAction.java b/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/enums/OperateLogAction.java new file mode 100644 index 0000000..07bce59 --- /dev/null +++ b/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/enums/OperateLogAction.java @@ -0,0 +1,100 @@ +package com.hnkylin.cloud.core.enums; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +public enum OperateLogAction { + IMAGE_UPLOAD("上传镜像", OperateLogType.IMAGE), + IMAGE_SYNC("同步镜像文件", OperateLogType.IMAGE), + IMAGE_CREATE_TEMPLATE("生成模板镜像", OperateLogType.IMAGE), + IMAGE_MODIFY("编辑镜像", OperateLogType.IMAGE), + IMAGE_PRIVATE_TO_SHARE("私有镜像提升为共享镜像", OperateLogType.IMAGE), + IMAGE_SHARE_TO_PUBLIC("共享镜像提升为公共镜像", OperateLogType.IMAGE), + IMAGE_MAKE("制作镜像", OperateLogType.IMAGE), + IMAGE_CREATE_GVM_FILE("生成镜像文件", OperateLogType.IMAGE), + IMAGE_ERROR_SYNC("异常镜像-同步", OperateLogType.IMAGE), + IMAGE_DELETE("删除镜像", OperateLogType.IMAGE), + IMAGE_DOWNLOAD("下载镜像", OperateLogType.IMAGE), + USER_LOGIN("登录", OperateLogType.USER), + USER_CREATE("创建用户", OperateLogType.USER), + USER_MODIFY("编辑用户", OperateLogType.USER), + USER_DELETE("删除用户", OperateLogType.USER), + ROLE_CREATE("创建角色", OperateLogType.ROLE), + ROLE_DELETE("删除角色", OperateLogType.ROLE), + ROLE_MODIFY("编辑角色", OperateLogType.ROLE), + ORG_CREATE("创建组织", OperateLogType.ORG), + ORG_DELETE("删除组织", OperateLogType.ORG), + ORG_MODIFY("编辑组织", OperateLogType.ORG), + ZONE_CREATE("创建可用区", OperateLogType.ZONE), + ZONE_MODIFY("编辑可用区", OperateLogType.ZONE), + ZONE_DELETE("删除可用区", OperateLogType.ZONE), + CLUSTER_CREATE("创建物理集群", OperateLogType.CLUSTER), + CLUSTER_MODIFY("编辑物理集群", OperateLogType.CLUSTER), + CLUSTER_DELETE("删除物理集群", OperateLogType.CLUSTER), + VDC_CREATE("创建VDC", OperateLogType.VDC), + VDC_MODIFY("编辑VDC", OperateLogType.VDC), + VDC_DELETE("删除VDC", OperateLogType.VDC), + VDC_MODIFY_RESOURCE("变更VDC资源", OperateLogType.VDC), + VDC_RESOURCE_APPLY("VDC资源申请", OperateLogType.VDC), + ALARM_VDC_CPU_MODIFY("VDC-CPU分配比告警", OperateLogType.ALARM), + ALARM_VDC_MEM_MODIFY("VDC-内存使用率告警", OperateLogType.ALARM), + ALARM_VDC_STORAGE_MODIFY("VDC-存储使用率告警", OperateLogType.ALARM), + SERVERVM_START("开机", OperateLogType.SERVERVM), + SERVERVM_SHUTDOWN("关机", OperateLogType.SERVERVM), + SERVERVM_FORCESHUTDOWN("强制关机", OperateLogType.SERVERVM), + SERVERVM_RESTART("重启", OperateLogType.SERVERVM), + SERVERVM_FORCERESTART("强制重启", OperateLogType.SERVERVM), + SERVERVM_DELETE("删除", OperateLogType.SERVERVM), + SERVERVM_CREATESNAPSHOT("创建快照", OperateLogType.SERVERVM), + SERVERVM_APPLYSNAPSHOT("恢复快照", OperateLogType.SERVERVM), + SERVERVM_DELETESNAPSHOT("删除快照", OperateLogType.SERVERVM), +; + + + OperateLogAction(String desc, OperateLogType operateLogType) { + this.desc = desc; + this.operateLogType = operateLogType; + } + + private String desc; + + + private OperateLogType operateLogType; + + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + + public OperateLogType getOperateLogType() { + return operateLogType; + } + + public void setOperateLogType(OperateLogType operateLogType) { + this.operateLogType = operateLogType; + } + + /** + * 根据任务类型获取任务操作列表 + * + * @param operateLogType + * @return + */ + public static List getActionListByType(OperateLogType operateLogType) { + List actionList = new ArrayList<>(); + for (OperateLogAction action : OperateLogAction.values()) { + if (Objects.equals(action.getOperateLogType(), operateLogType)) { + actionList.add(action); + } + } + return actionList; + } + + +} diff --git a/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/enums/OperateLogStatus.java b/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/enums/OperateLogStatus.java new file mode 100644 index 0000000..0b2d2a8 --- /dev/null +++ b/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/enums/OperateLogStatus.java @@ -0,0 +1,39 @@ +package com.hnkylin.cloud.core.enums; + +public enum OperateLogStatus { + SUCCESS("成功"), + FAIL("失败"), + RUNNING("执行中"), + WAIT_START("待开始"), + CANCELED("已取消"), + CANCELING("取消中"), + TIMEOUT("超时"), + UNKNOWN("未知"), + ; + + +// SUCCESS("success"), +// FAILED("failed"), +// TIMEOUT("timeout"), +// PENDING("pending"), +// UNKNOWN("unknown"), +// WAIT_START("waitStart"), +// CANCELED("canceled"), +// CANCELING("canceling"); + + + OperateLogStatus(String desc) { + this.desc = desc; + } + + private String desc; + + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } +} diff --git a/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/enums/OperateLogType.java b/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/enums/OperateLogType.java new file mode 100644 index 0000000..24d1889 --- /dev/null +++ b/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/enums/OperateLogType.java @@ -0,0 +1,39 @@ +package com.hnkylin.cloud.core.enums; + +public enum OperateLogType { + IMAGE(0, "镜像"), + CLUSTER(1, "物理集群"), + VDC(2, "VDC"), + ZONE(3, "可用区"), + ORG(4, "组织"), + USER(5, "用户"), + ROLE(6, "角色"), + SERVERVM(8, "云服务器"), + ALARM(9, "告警"), + ; + + + OperateLogType(int value, String desc) { + this.value = value; + this.desc = desc; + } + + private int value; + private String desc; + + public int getValue() { + return value; + } + + public void setValue(int value) { + this.value = value; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } +} diff --git a/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/mapper/CloudOperateLogMapper.java b/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/mapper/CloudOperateLogMapper.java new file mode 100644 index 0000000..c071bc2 --- /dev/null +++ b/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/mapper/CloudOperateLogMapper.java @@ -0,0 +1,7 @@ +package com.hnkylin.cloud.core.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.hnkylin.cloud.core.domain.CloudOperateLogDo; + +public interface CloudOperateLogMapper extends BaseMapper { +} diff --git a/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/service/CloudOperateLogService.java b/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/service/CloudOperateLogService.java new file mode 100644 index 0000000..2b47f3c --- /dev/null +++ b/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/service/CloudOperateLogService.java @@ -0,0 +1,96 @@ +package com.hnkylin.cloud.core.service; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.service.IService; +import com.hnkylin.cloud.core.common.PageData; +import com.hnkylin.cloud.core.domain.BaseDo; +import com.hnkylin.cloud.core.domain.CloudOperateLogDo; +import com.hnkylin.cloud.core.entity.req.operateLog.BasePageOperateLogParam; +import com.hnkylin.cloud.core.entity.req.operateLog.ParentOperateLogParam; +import com.hnkylin.cloud.core.entity.resp.operateLog.OperateLogResp; +import com.hnkylin.cloud.core.enums.OperateLogAction; +import com.hnkylin.cloud.core.enums.OperateLogStatus; +import com.hnkylin.cloud.core.enums.OperateLogType; + +import java.util.List; + +public interface CloudOperateLogService extends IService { + + + /** + * 根据对象ID获取操作日志 + * + * @param basePageOperateLogParam + * @param loginUserId + * @return + */ + PageData listOperateLogByObjId(BasePageOperateLogParam basePageOperateLogParam, + Integer loginUserId); + + boolean hasChildOperateLog(Integer parentLogId); + + /** + * 根据父任务ID获取子任务列表 + * + * @param parentOperateLogParam + * @return + */ + List listChildOperateLogList(ParentOperateLogParam parentOperateLogParam); + + + /** + * 插入通用操作日志 + * + * @param baseDo + * @param objName + * @param operateLogType + * @param operateLogAction + * @param operateUserId + * @param clientIP + */ + void createCommonOperateLog(BaseDo baseDo, String objName, OperateLogType operateLogType, + OperateLogAction operateLogAction, Integer operateUserId, String clientIP); + + + /** + * 插入云服务器操作失败日志 + * + * @param objId + * @param objName + * @param operateLogType + * @param operateLogAction + * @param operateUserId + * @param clientIP + * @param result + */ + void createServerVmFailOperateLog(Integer objId, String objName, OperateLogType operateLogType, + OperateLogAction operateLogAction, Long mcTaskId, Integer clusterId, + Integer operateUserId, String clientIP, String result); + + /** + * 插入云服务器操正在进行中日志 + * + * @param objId + * @param objName + * @param operateLogType + * @param operateLogAction + * @param operateUserId + * @param clientIP + */ + void createServerVmRunningOperateLog(Integer objId, String objName, OperateLogType operateLogType, + OperateLogAction operateLogAction, Long mcTaskId, Integer clusterId, + Integer operateUserId, String clientIP); + + + /** + * 获取正在执行中的mc操作日志 + * + * @return + */ + List getMcRunningTask(); + + CloudOperateLogDo queryCloudOperateLogById(int id); + + + +} diff --git a/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/service/impl/CloudOperateLogServiceImpl.java b/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/service/impl/CloudOperateLogServiceImpl.java new file mode 100644 index 0000000..a379c5b --- /dev/null +++ b/mcp-cloud-core/src/main/java/com/hnkylin/cloud/core/service/impl/CloudOperateLogServiceImpl.java @@ -0,0 +1,212 @@ +package com.hnkylin.cloud.core.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.hnkylin.cloud.core.common.DateUtils; +import com.hnkylin.cloud.core.common.PageData; +import com.hnkylin.cloud.core.domain.BaseDo; +import com.hnkylin.cloud.core.domain.CloudOperateLogDo; +import com.hnkylin.cloud.core.entity.req.operateLog.BasePageOperateLogParam; +import com.hnkylin.cloud.core.entity.req.operateLog.ParentOperateLogParam; +import com.hnkylin.cloud.core.entity.resp.operateLog.OperateLogResp; +import com.hnkylin.cloud.core.enums.OperateLogAction; +import com.hnkylin.cloud.core.enums.OperateLogStatus; +import com.hnkylin.cloud.core.enums.OperateLogType; +import com.hnkylin.cloud.core.mapper.CloudOperateLogMapper; +import com.hnkylin.cloud.core.service.CloudOperateLogService; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +@Service +public class CloudOperateLogServiceImpl extends ServiceImpl + implements CloudOperateLogService { + + + @Override + public PageData listOperateLogByObjId(BasePageOperateLogParam basePageOperateLogParam, + Integer loginUserId) { + + CloudOperateLogDo queryOperateLog = new CloudOperateLogDo(); + queryOperateLog.setObjId(basePageOperateLogParam.getObjId()); + queryOperateLog.setType(basePageOperateLogParam.getType().name()); + queryOperateLog.setDeleteFlag(false); + queryOperateLog.setParentId(0); + QueryWrapper queryWrapper = new QueryWrapper<>(queryOperateLog); + queryWrapper.orderByDesc("id"); + PageHelper.startPage(basePageOperateLogParam.getPageNo(), basePageOperateLogParam.getPageSize()); + List operateLogDoList = list(queryWrapper); + if (operateLogDoList.isEmpty()) { + return new PageData(null); + } + List operateLogRespList = new ArrayList<>(); + operateLogDoList.forEach(item -> { + OperateLogResp operateLogResp = formatOperateLogResp(item); + operateLogResp.setHasChildOperateLog(hasChildOperateLog(item.getId())); + operateLogRespList.add(operateLogResp); + + }); + PageInfo pageInfo = new PageInfo<>(operateLogDoList); + PageData pageData = new PageData(pageInfo); + pageData.setList(operateLogRespList); + return pageData; + } + + /** + * 判断是否有子任务 + * + * @param parentLogId + * @return + */ + @Override + public boolean hasChildOperateLog(Integer parentLogId) { + CloudOperateLogDo queryOperateLog = new CloudOperateLogDo(); + queryOperateLog.setParentId(parentLogId); + queryOperateLog.setDeleteFlag(false); + QueryWrapper queryWrapper = new QueryWrapper<>(queryOperateLog); + List operateLogDoList = list(queryWrapper); + return !operateLogDoList.isEmpty(); + } + + @Override + public List listChildOperateLogList(ParentOperateLogParam parentOperateLogParam) { + CloudOperateLogDo queryOperateLog = new CloudOperateLogDo(); + queryOperateLog.setDeleteFlag(false); + queryOperateLog.setParentId(parentOperateLogParam.getParentLogId()); + QueryWrapper queryWrapper = new QueryWrapper<>(queryOperateLog); + queryWrapper.orderByAsc("id"); + List operateLogDoList = list(queryWrapper); + List operateLogRespList = new ArrayList<>(); + operateLogDoList.forEach(item -> { + operateLogRespList.add(formatOperateLogResp(item)); + + }); + + return operateLogRespList; + } + + /** + * 封装操作日志详情 + * + * @param operateLogDo + * @return + */ + private OperateLogResp formatOperateLogResp(CloudOperateLogDo operateLogDo) { + OperateLogResp operateLogResp = new OperateLogResp(); + operateLogResp.setOperateLogId(operateLogDo.getId()); + operateLogResp.setAction(OperateLogAction.valueOf(operateLogDo.getAction())); + operateLogResp.setType(OperateLogType.valueOf(operateLogDo.getType())); + operateLogResp.setStatus(OperateLogStatus.valueOf(operateLogDo.getStatus())); + operateLogResp.setDetail(operateLogDo.getDetail()); + operateLogResp.setResult(operateLogDo.getResult()); + operateLogResp.setPercent(operateLogDo.getPercent()); + operateLogResp.setObjId(operateLogDo.getObjId()); + operateLogResp.setObjName(operateLogDo.getObjName()); + operateLogResp.setStartTime(DateUtils.format(operateLogDo.getCreateTime(), DateUtils.DATE_ALL_PATTEN)); + if (Objects.nonNull(operateLogDo.getEndTime())) { + operateLogResp.setEndTime(DateUtils.format(operateLogDo.getEndTime(), DateUtils.DATE_ALL_PATTEN)); + } + return operateLogResp; + } + + + @Override + public void createCommonOperateLog(BaseDo baseDo, String objName, OperateLogType operateLogType, + OperateLogAction operateLogAction, + Integer operateUserId, String clientIP) { + CloudOperateLogDo operateLogDo = new CloudOperateLogDo(); + operateLogDo.setParentId(0); + operateLogDo.setType(operateLogType.name()); + operateLogDo.setAction(operateLogAction.name()); + operateLogDo.setStatus(OperateLogStatus.SUCCESS.name()); + operateLogDo.setPercent("100"); + operateLogDo.setObjId(baseDo.getId()); + operateLogDo.setObjName(objName); + operateLogDo.setDetail(operateLogAction.getDesc()); + operateLogDo.setClientIp(clientIP); + operateLogDo.setCreateBy(operateUserId); + operateLogDo.setCreateTime(new Date()); + operateLogDo.setEndTime(new Date()); + save(operateLogDo); + } + + + @Override + public void createServerVmFailOperateLog(Integer objId, String objName, OperateLogType operateLogType, + OperateLogAction operateLogAction, Long mcTaskId, Integer clusterId, + Integer operateUserId, + String clientIP, String result) { + CloudOperateLogDo operateLogDo = new CloudOperateLogDo(); + operateLogDo.setParentId(0); + operateLogDo.setType(operateLogType.name()); + operateLogDo.setAction(operateLogAction.name()); + operateLogDo.setStatus(OperateLogStatus.FAIL.name()); + operateLogDo.setPercent("100"); + operateLogDo.setObjId(objId); + operateLogDo.setObjName(objName); + operateLogDo.setMcTaskId(mcTaskId); + operateLogDo.setDetail(operateLogAction.getDesc()); + operateLogDo.setResult(result); + operateLogDo.setClientIp(clientIP); + operateLogDo.setCreateBy(operateUserId); + operateLogDo.setCreateTime(new Date()); + operateLogDo.setEndTime(new Date()); + operateLogDo.setClusterId(clusterId); + save(operateLogDo); + } + + @Override + public void createServerVmRunningOperateLog(Integer objId, String objName, OperateLogType operateLogType, + OperateLogAction operateLogAction, Long mcTaskId, Integer clusterId, + Integer operateUserId, String clientIP) { + CloudOperateLogDo operateLogDo = new CloudOperateLogDo(); + operateLogDo.setParentId(0); + operateLogDo.setType(operateLogType.name()); + operateLogDo.setAction(operateLogAction.name()); + operateLogDo.setStatus(OperateLogStatus.RUNNING.name()); + operateLogDo.setPercent("100"); + operateLogDo.setObjId(objId); + operateLogDo.setObjName(objName); + operateLogDo.setMcTaskId(mcTaskId); + operateLogDo.setClusterId(clusterId); + operateLogDo.setDetail(operateLogAction.getDesc()); + operateLogDo.setClientIp(clientIP); + operateLogDo.setCreateBy(operateUserId); + operateLogDo.setCreateTime(new Date()); + save(operateLogDo); + } + + @Override + public List getMcRunningTask() { + CloudOperateLogDo operateLogDo = new CloudOperateLogDo(); + QueryWrapper wrapper = new QueryWrapper<>(operateLogDo); + wrapper.gt("mc_task_id", 0); + wrapper.gt("cluster_id", 0); + List statusList = new ArrayList<>(); + statusList.add(OperateLogStatus.RUNNING.name()); + statusList.add(OperateLogStatus.CANCELING.name()); + statusList.add(OperateLogStatus.WAIT_START.name()); + wrapper.in("status", statusList); + return getBaseMapper().selectList(wrapper); + } + + + + + + + + + + @Override + public CloudOperateLogDo queryCloudOperateLogById(int id) { + return getBaseMapper().selectById(id); + } + + +} diff --git a/mcp-cloud-manage/src/main/java/com/hnkylin/cloud/manage/config/KcpI18nUtil.java b/mcp-cloud-manage/src/main/java/com/hnkylin/cloud/manage/config/KcpI18nUtil.java new file mode 100644 index 0000000..65f332c --- /dev/null +++ b/mcp-cloud-manage/src/main/java/com/hnkylin/cloud/manage/config/KcpI18nUtil.java @@ -0,0 +1,78 @@ +package com.hnkylin.cloud.manage.config; + +import com.hnkylin.cloud.core.enums.OperateLogAction; +import com.hnkylin.cloud.core.enums.OperateLogStatus; +import com.hnkylin.cloud.core.enums.OperateLogType; +import org.springframework.context.MessageSource; +import org.springframework.context.i18n.LocaleContextHolder; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Component +public class KcpI18nUtil { + + private static final String OPERATE_LOG_TYPE_PREFIX = "mcp.operateLog.type."; + + private static final String OPERATE_LOG_ACTION_PREFIX = "mcp.operateLog.action."; + + private static final String OPERATE_LOG_STATUS_PREFIX = "mcp.operateLog.status."; + + private static final String I18N_PREFIX = "mcp."; + + @Resource + private MessageSource messageSource; + + public String getI18nMessage(String key) { + return messageSource.getMessage(key, null, LocaleContextHolder.getLocale()); + } + + public String getI18nMessageByParams(String key, Object[] params) { + return messageSource.getMessage(key, params, LocaleContextHolder.getLocale()); + } + + /** + * 操作日志-类型-国际化获取 + * + * @param operateLogType + * @return + */ + public String operateLogTypeMessage(OperateLogType operateLogType) { + String logType = operateLogType.name().toLowerCase(); + return messageSource.getMessage(OPERATE_LOG_TYPE_PREFIX + logType, null, LocaleContextHolder.getLocale()); + } + + /** + * 操作日志-操作-国际化获取 + * + * @param operateLogAction + * @return + */ + public String operateLogActionMessage(OperateLogAction operateLogAction) { + String logAction = operateLogAction.name().toLowerCase(); + return messageSource.getMessage(OPERATE_LOG_ACTION_PREFIX + logAction, null, LocaleContextHolder.getLocale()); + } + + /** + * 操作日志-状态-国际化获取 + * + * @param operateLogStatus + * @return + */ + public String operateLogStatusMessage(OperateLogStatus operateLogStatus) { + String operateStatus = operateLogStatus.name().toLowerCase(); + return messageSource.getMessage(OPERATE_LOG_STATUS_PREFIX + operateStatus, null, + LocaleContextHolder.getLocale()); + } + + /** + * 操作日志-状态-国际化获取 + * + * @param i8nKey + * @return + */ + public String commonI18N(String i8nKey) { + String key = i8nKey.toLowerCase(); + return messageSource.getMessage(I18N_PREFIX + key, null, LocaleContextHolder.getLocale()); + } +} diff --git a/mcp-cloud-manage/src/main/java/com/hnkylin/cloud/manage/ctrl/OperateLogCtrl.java b/mcp-cloud-manage/src/main/java/com/hnkylin/cloud/manage/ctrl/OperateLogCtrl.java new file mode 100644 index 0000000..3d21403 --- /dev/null +++ b/mcp-cloud-manage/src/main/java/com/hnkylin/cloud/manage/ctrl/OperateLogCtrl.java @@ -0,0 +1,104 @@ +package com.hnkylin.cloud.manage.ctrl; + + +import com.hnkylin.cloud.core.annotation.LoginUser; +import com.hnkylin.cloud.core.annotation.ModelCheck; +import com.hnkylin.cloud.core.annotation.ParamCheck; +import com.hnkylin.cloud.core.common.BaseResult; +import com.hnkylin.cloud.core.common.PageData; +import com.hnkylin.cloud.manage.entity.LoginUserVo; +import com.hnkylin.cloud.core.entity.req.operateLog.BasePageOperateLogParam; +import com.hnkylin.cloud.core.entity.req.operateLog.ParentOperateLogParam; +import com.hnkylin.cloud.core.entity.req.operateLog.QueryOperateLogActionParam; +import com.hnkylin.cloud.core.entity.resp.operateLog.OperateLogActionResp; +import com.hnkylin.cloud.core.entity.resp.operateLog.OperateLogResp; +import com.hnkylin.cloud.core.entity.resp.operateLog.OperateLogStatusResp; +import com.hnkylin.cloud.core.entity.resp.operateLog.OperateLogTypeResp; +import com.hnkylin.cloud.core.service.CloudOperateLogService; +import com.hnkylin.cloud.manage.entity.req.operateLog.OperateLogDetailParam; +import com.hnkylin.cloud.manage.entity.req.operateLog.PageOperateLogParam; +import com.hnkylin.cloud.manage.entity.resp.operateLog.OperateDetailResp; +import com.hnkylin.cloud.manage.service.OperateLogService; +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; + +import javax.annotation.Resource; +import java.util.List; + + +@RestController +@RequestMapping("/api/operateLog") +@Slf4j +public class OperateLogCtrl { + + @Resource + private CloudOperateLogService cloudOperateLogService; + + @Resource + private OperateLogService operateLogService; + + @PostMapping("/listOperateLogByObjId") + @ParamCheck + public BaseResult> listOperateLogByObjId(@RequestBody BasePageOperateLogParam basePageOperateLogParam, + @LoginUser LoginUserVo loginUserVo) { + + return BaseResult.success(operateLogService.listOperateLogByObjId(basePageOperateLogParam, + loginUserVo.getUserId())); + } + + + @PostMapping("/listChildOperateLogList") + @ParamCheck + public BaseResult> listChildOperateLogList(@RequestBody ParentOperateLogParam parentOperateLogParam) { + + return BaseResult.success(cloudOperateLogService.listChildOperateLogList(parentOperateLogParam)); + } + + @PostMapping("/getOperateLogType") + public BaseResult> getOperateLogType() { + + return BaseResult.success(operateLogService.getOperateLogType()); + } + + + @PostMapping("/getOperateLogAction") + public BaseResult> getOperateLogAction(@RequestBody QueryOperateLogActionParam queryOperateLogActionParam) { + + return BaseResult.success(operateLogService.getOperateLogAction(queryOperateLogActionParam)); + } + + + @PostMapping("/getOperateLogStatus") + public BaseResult> getOperateLogStatus() { + + return BaseResult.success(operateLogService.getOperateLogStatus()); + } + + @PostMapping("/pageOperateLog") + @ParamCheck + public BaseResult> pageOperateLog(@ModelCheck(notNull = true) @RequestBody + PageOperateLogParam pagOperateLogParam, + @LoginUser LoginUserVo loginUserVo) { + return BaseResult.success(operateLogService.pageOperateLog(pagOperateLogParam, loginUserVo)); + + } + + @PostMapping("/childOperateLogList") + @ParamCheck + public BaseResult> childOperateLogList(@RequestBody ParentOperateLogParam parentOperateLogParam) { + + return BaseResult.success(operateLogService.childOperateLogList(parentOperateLogParam)); + } + + + @PostMapping("/operateLogDetail") + @ParamCheck + public BaseResult operateLogDetail(@RequestBody OperateLogDetailParam operateLogDetailParam) { + + return BaseResult.success(operateLogService.operateLogDetail(operateLogDetailParam)); + } + +} diff --git a/mcp-cloud-manage/src/main/java/com/hnkylin/cloud/manage/entity/req/operateLog/OperateLogDetailParam.java b/mcp-cloud-manage/src/main/java/com/hnkylin/cloud/manage/entity/req/operateLog/OperateLogDetailParam.java new file mode 100644 index 0000000..0f47af0 --- /dev/null +++ b/mcp-cloud-manage/src/main/java/com/hnkylin/cloud/manage/entity/req/operateLog/OperateLogDetailParam.java @@ -0,0 +1,12 @@ +package com.hnkylin.cloud.manage.entity.req.operateLog; + +import lombok.Data; + +@Data +public class OperateLogDetailParam { + + + private Integer operateLog; + + +} diff --git a/mcp-cloud-manage/src/main/java/com/hnkylin/cloud/manage/entity/req/operateLog/PageOperateLogParam.java b/mcp-cloud-manage/src/main/java/com/hnkylin/cloud/manage/entity/req/operateLog/PageOperateLogParam.java new file mode 100644 index 0000000..0a03031 --- /dev/null +++ b/mcp-cloud-manage/src/main/java/com/hnkylin/cloud/manage/entity/req/operateLog/PageOperateLogParam.java @@ -0,0 +1,24 @@ +package com.hnkylin.cloud.manage.entity.req.operateLog; + +import com.hnkylin.cloud.core.common.BasePageParam; +import lombok.Data; + +@Data +public class PageOperateLogParam extends BasePageParam { + + + private String type; + + + private String action; + + private String status; + + + private String startDate; + + + private String endDate; + + +} diff --git a/mcp-cloud-manage/src/main/java/com/hnkylin/cloud/manage/entity/resp/operateLog/OperateDetailResp.java b/mcp-cloud-manage/src/main/java/com/hnkylin/cloud/manage/entity/resp/operateLog/OperateDetailResp.java new file mode 100644 index 0000000..53fb79e --- /dev/null +++ b/mcp-cloud-manage/src/main/java/com/hnkylin/cloud/manage/entity/resp/operateLog/OperateDetailResp.java @@ -0,0 +1,50 @@ +package com.hnkylin.cloud.manage.entity.resp.operateLog; + +import com.hnkylin.cloud.core.enums.OperateLogStatus; +import lombok.Data; + +@Data +public class OperateDetailResp { + + + private Integer operateLogId; + + private String type; + + private String typeEnum; + + + private String action; + + private String actionEnum; + + private String status; + + private OperateLogStatus enumStatus; + + private String objName; + + private String percent; + + private String startTime; + + private String endTime; + + private String operateUser; + + private String clientIp; + + private String orgName; + + private String zoneName; + + //操作详情 + private String detail; + + //操作结果 + private String result; + + private boolean hasChildOperateLog; + + +} diff --git a/mcp-cloud-manage/src/main/java/com/hnkylin/cloud/manage/service/OperateLogService.java b/mcp-cloud-manage/src/main/java/com/hnkylin/cloud/manage/service/OperateLogService.java new file mode 100644 index 0000000..771a8b3 --- /dev/null +++ b/mcp-cloud-manage/src/main/java/com/hnkylin/cloud/manage/service/OperateLogService.java @@ -0,0 +1,81 @@ +package com.hnkylin.cloud.manage.service; + +import com.hnkylin.cloud.core.common.PageData; +import com.hnkylin.cloud.core.entity.req.operateLog.BasePageOperateLogParam; +import com.hnkylin.cloud.core.entity.req.operateLog.ParentOperateLogParam; +import com.hnkylin.cloud.core.entity.req.operateLog.QueryOperateLogActionParam; +import com.hnkylin.cloud.core.entity.resp.operateLog.OperateLogActionResp; +import com.hnkylin.cloud.core.entity.resp.operateLog.OperateLogResp; +import com.hnkylin.cloud.core.entity.resp.operateLog.OperateLogStatusResp; +import com.hnkylin.cloud.core.entity.resp.operateLog.OperateLogTypeResp; +import com.hnkylin.cloud.manage.entity.LoginUserVo; +import com.hnkylin.cloud.manage.entity.req.operateLog.OperateLogDetailParam; +import com.hnkylin.cloud.manage.entity.req.operateLog.PageOperateLogParam; +import com.hnkylin.cloud.manage.entity.resp.operateLog.OperateDetailResp; + +import java.util.List; + +public interface OperateLogService { + + /** + * 查询任务类型 + * + * @return + */ + List getOperateLogType(); + + /** + * 查询任务操作 + * + * @param queryOperateLogActionParam + * @return + */ + List getOperateLogAction(QueryOperateLogActionParam queryOperateLogActionParam); + + + /** + * 查询任务状态 + * + * @return + */ + List getOperateLogStatus(); + + + /** + * 分页查询操作日志 + * + * @param pagOperateLogParam + * @param loginUserVo + * @return + */ + PageData pageOperateLog(PageOperateLogParam pagOperateLogParam, LoginUserVo loginUserVo); + + + /** + * 获取子任务 + * + * @param parentOperateLogParam + * @return + */ + List childOperateLogList(ParentOperateLogParam parentOperateLogParam); + + /** + * 任务详情 + * + * @param operateLogDetailParam + * @return + */ + OperateDetailResp operateLogDetail(OperateLogDetailParam operateLogDetailParam); + + + /** + * 根据对象ID获取操作日志 + * + * @param basePageOperateLogParam + * @param loginUserId + * @return + */ + PageData listOperateLogByObjId(BasePageOperateLogParam basePageOperateLogParam, + Integer loginUserId); + +} diff --git a/mcp-cloud-manage/src/main/java/com/hnkylin/cloud/manage/service/impl/OperateLogServiceImpl.java b/mcp-cloud-manage/src/main/java/com/hnkylin/cloud/manage/service/impl/OperateLogServiceImpl.java new file mode 100644 index 0000000..4c8306d --- /dev/null +++ b/mcp-cloud-manage/src/main/java/com/hnkylin/cloud/manage/service/impl/OperateLogServiceImpl.java @@ -0,0 +1,275 @@ +package com.hnkylin.cloud.manage.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.hnkylin.cloud.core.common.DateUtils; +import com.hnkylin.cloud.core.common.PageData; +import com.hnkylin.cloud.core.domain.*; +import com.hnkylin.cloud.core.entity.req.operateLog.BasePageOperateLogParam; +import com.hnkylin.cloud.core.entity.req.operateLog.ParentOperateLogParam; +import com.hnkylin.cloud.core.entity.req.operateLog.QueryOperateLogActionParam; +import com.hnkylin.cloud.core.entity.resp.operateLog.OperateLogActionResp; +import com.hnkylin.cloud.core.entity.resp.operateLog.OperateLogResp; +import com.hnkylin.cloud.core.entity.resp.operateLog.OperateLogStatusResp; +import com.hnkylin.cloud.core.entity.resp.operateLog.OperateLogTypeResp; +import com.hnkylin.cloud.core.enums.OperateLogAction; +import com.hnkylin.cloud.core.enums.OperateLogStatus; +import com.hnkylin.cloud.core.enums.OperateLogType; +import com.hnkylin.cloud.core.service.*; +import com.hnkylin.cloud.manage.config.KcpI18nUtil; +import com.hnkylin.cloud.manage.entity.LoginUserVo; +import com.hnkylin.cloud.manage.entity.req.operateLog.OperateLogDetailParam; +import com.hnkylin.cloud.manage.entity.req.operateLog.PageOperateLogParam; +import com.hnkylin.cloud.manage.entity.resp.operateLog.OperateDetailResp; +import com.hnkylin.cloud.manage.service.OperateLogService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Objects; + +@Service +public class OperateLogServiceImpl implements OperateLogService { + + @Resource + private KcpI18nUtil kcpI18nUtil; + + @Resource + private CloudOperateLogService cloudOperateLogService; + + @Resource + private CloudUserService cloudUserService; + + @Resource + private CloudOrganizationService cloudOrganizationService; + + @Resource + private CloudVdcService cloudVdcService; + + @Resource + private CloudZoneService cloudZoneService; + + @Override + public List getOperateLogType() { + List operateLogTypeRespList = new ArrayList<>(); + for (OperateLogType type : OperateLogType.values()) { + OperateLogTypeResp operateLogTypeResp = new OperateLogTypeResp(); + operateLogTypeResp.setType(type); + operateLogTypeResp.setI8nMessage(kcpI18nUtil.operateLogTypeMessage(type)); + operateLogTypeRespList.add(operateLogTypeResp); + } + return operateLogTypeRespList; + } + + @Override + public List getOperateLogAction(QueryOperateLogActionParam queryOperateLogActionParam) { + List actionList = new ArrayList<>(); + if (Objects.isNull(queryOperateLogActionParam.getType())) { + actionList = Arrays.asList(OperateLogAction.values()); + } else { + actionList = OperateLogAction.getActionListByType(queryOperateLogActionParam.getType()); + } + List operateLogActionRespList = new ArrayList<>(); + actionList.forEach(item -> { + OperateLogActionResp actionResp = new OperateLogActionResp(); + actionResp.setAction(item); + actionResp.setI8nMessage(kcpI18nUtil.operateLogActionMessage(item)); + operateLogActionRespList.add(actionResp); + }); + return operateLogActionRespList; + } + + @Override + public List getOperateLogStatus() { + List statusList = Arrays.asList(OperateLogStatus.values()); + + List operateLogStatusRespList = new ArrayList<>(); + statusList.forEach(item -> { + OperateLogStatusResp statusResp = new OperateLogStatusResp(); + statusResp.setStatus(item); + statusResp.setI8nMessage(kcpI18nUtil.operateLogStatusMessage(item)); + operateLogStatusRespList.add(statusResp); + }); + return operateLogStatusRespList; + } + + @Override + public PageData pageOperateLog(PageOperateLogParam pagOperateLogParam, LoginUserVo loginUserVo) { + + CloudOperateLogDo queryOperateLog = new CloudOperateLogDo(); + queryOperateLog.setDeleteFlag(false); + queryOperateLog.setParentId(0); + if (StringUtils.isNotBlank(pagOperateLogParam.getType())) { + queryOperateLog.setType(pagOperateLogParam.getType()); + } + if (StringUtils.isNotBlank(pagOperateLogParam.getAction())) { + queryOperateLog.setAction(pagOperateLogParam.getAction()); + } + + if (StringUtils.isNotBlank(pagOperateLogParam.getStatus())) { + queryOperateLog.setStatus(pagOperateLogParam.getStatus()); + } + QueryWrapper queryWrapper = new QueryWrapper<>(queryOperateLog); + + if (StringUtils.isNotBlank(pagOperateLogParam.getStartDate())) { + queryWrapper.ge("create_time", DateUtils.parse(pagOperateLogParam.getStartDate() + DateUtils.DAY_START, + DateUtils.DATE_ALL_PATTEN)); + } + if (StringUtils.isNotBlank(pagOperateLogParam.getEndDate())) { + queryWrapper.le("create_time", DateUtils.parse(pagOperateLogParam.getEndDate() + DateUtils.DAY_END, + DateUtils.DATE_ALL_PATTEN)); + } + queryWrapper.orderByDesc("id"); + PageHelper.startPage(pagOperateLogParam.getPageNo(), pagOperateLogParam.getPageSize()); + + List operateLogDoList = cloudOperateLogService.list(queryWrapper); + if (operateLogDoList.isEmpty()) { + return new PageData(null); + } + List operateLogRespList = new ArrayList<>(); + operateLogDoList.forEach(item -> { + operateLogRespList.add(createOperateDetail(item)); + }); + PageInfo pageInfo = new PageInfo<>(operateLogDoList); + PageData pageData = new PageData(pageInfo); + pageData.setList(operateLogRespList); + return pageData; + + } + + + /** + * 创建任务列表响应实体 + * + * @param operateLogDo + */ + private OperateDetailResp createOperateDetail(CloudOperateLogDo operateLogDo) { + OperateDetailResp operateDetailResp = new OperateDetailResp(); + operateDetailResp.setType(kcpI18nUtil.operateLogTypeMessage(OperateLogType.valueOf(operateLogDo.getType()))); + operateDetailResp.setTypeEnum(operateLogDo.getType()); + operateDetailResp.setAction(kcpI18nUtil.operateLogActionMessage(OperateLogAction.valueOf(operateLogDo.getAction()))); + operateDetailResp.setActionEnum(operateLogDo.getAction()); + operateDetailResp.setStatus(kcpI18nUtil.operateLogStatusMessage(OperateLogStatus.valueOf(operateLogDo.getStatus()))); + operateDetailResp.setEnumStatus(OperateLogStatus.valueOf(operateLogDo.getStatus())); + operateDetailResp.setObjName(operateLogDo.getObjName()); + operateDetailResp.setOperateLogId(operateLogDo.getId()); + operateDetailResp.setResult(operateLogDo.getResult()); + operateDetailResp.setDetail(operateLogDo.getDetail()); + + + + operateDetailResp.setPercent(operateLogDo.getPercent()); + operateDetailResp.setStartTime(DateUtils.format(operateLogDo.getCreateTime(), DateUtils.DATE_ALL_PATTEN)); + if (Objects.nonNull(operateLogDo.getEndTime())) { + operateDetailResp.setEndTime(DateUtils.format(operateLogDo.getEndTime(), DateUtils.DATE_ALL_PATTEN)); + } + operateDetailResp.setClientIp(operateLogDo.getClientIp()); + CloudUserDo userDo = cloudUserService.getById(operateLogDo.getCreateBy()); + operateDetailResp.setOperateUser(userDo.getUserName()); + + CloudOrganizationDo organizationDo = cloudOrganizationService.getById(userDo.getOrganizationId()); + operateDetailResp.setOrgName(organizationDo.getOrganizationName()); + + if (!Objects.equals(organizationDo.getId(), cloudOrganizationService.getDefaultTopOrg().getId())) { + CloudVdcDo vdcDo = cloudVdcService.getVdcByOrgId(organizationDo.getId()); + CloudZoneDo cloudZoneDo = cloudZoneService.getById(vdcDo.getZoneId()); + operateDetailResp.setZoneName(cloudZoneDo.getName()); + } + operateDetailResp.setHasChildOperateLog(cloudOperateLogService.hasChildOperateLog(operateLogDo.getId())); + return operateDetailResp; + } + + + + @Override + public List childOperateLogList(ParentOperateLogParam parentOperateLogParam) { + CloudOperateLogDo queryOperateLog = new CloudOperateLogDo(); + queryOperateLog.setDeleteFlag(false); + queryOperateLog.setParentId(parentOperateLogParam.getParentLogId()); + QueryWrapper queryWrapper = new QueryWrapper<>(queryOperateLog); + queryWrapper.orderByAsc("id"); + List operateLogDoList = cloudOperateLogService.list(queryWrapper); + List operateLogRespList = new ArrayList<>(); + operateLogDoList.forEach(item -> { + operateLogRespList.add(createOperateDetail(item)); + }); + return operateLogRespList; + } + + @Override + public OperateDetailResp operateLogDetail(OperateLogDetailParam operateLogDetailParam) { + CloudOperateLogDo operateLogDo = cloudOperateLogService.getById(operateLogDetailParam.getOperateLog()); + + return createOperateDetail(operateLogDo); + } + + @Override + public PageData listOperateLogByObjId(BasePageOperateLogParam basePageOperateLogParam, + Integer loginUserId) { + CloudOperateLogDo queryOperateLog = new CloudOperateLogDo(); + queryOperateLog.setObjId(basePageOperateLogParam.getObjId()); + queryOperateLog.setType(basePageOperateLogParam.getType().name()); + queryOperateLog.setDeleteFlag(false); + queryOperateLog.setParentId(0); + QueryWrapper queryWrapper = new QueryWrapper<>(queryOperateLog); + queryWrapper.orderByDesc("id"); + PageHelper.startPage(basePageOperateLogParam.getPageNo(), basePageOperateLogParam.getPageSize()); + List operateLogDoList = cloudOperateLogService.list(queryWrapper); + if (operateLogDoList.isEmpty()) { + return new PageData(null); + } + List operateLogRespList = new ArrayList<>(); + operateLogDoList.forEach(item -> { + OperateLogResp operateLogResp = formatOperateLogResp(item); + operateLogResp.setHasChildOperateLog(cloudOperateLogService.hasChildOperateLog(item.getId())); + operateLogRespList.add(operateLogResp); + + }); + PageInfo pageInfo = new PageInfo<>(operateLogDoList); + PageData pageData = new PageData(pageInfo); + pageData.setList(operateLogRespList); + return pageData; + } + + /** + * 封装操作日志详情 + * + * @param operateLogDo + * @return + */ + private OperateLogResp formatOperateLogResp(CloudOperateLogDo operateLogDo) { + OperateLogResp operateLogResp = new OperateLogResp(); + operateLogResp.setOperateLogId(operateLogDo.getId()); + operateLogResp.setAction(OperateLogAction.valueOf(operateLogDo.getAction())); + operateLogResp.setType(OperateLogType.valueOf(operateLogDo.getType())); + operateLogResp.setStatus(OperateLogStatus.valueOf(operateLogDo.getStatus())); + operateLogResp.setDetail(operateLogDo.getDetail()); + operateLogResp.setResult(operateLogDo.getResult()); + operateLogResp.setPercent(operateLogDo.getPercent()); + operateLogResp.setObjId(operateLogDo.getObjId()); + operateLogResp.setObjName(operateLogDo.getObjName()); + operateLogResp.setTypeDesc(kcpI18nUtil.operateLogTypeMessage(OperateLogType.valueOf(operateLogDo.getType()))); + operateLogResp.setActionDesc(kcpI18nUtil.operateLogActionMessage(OperateLogAction.valueOf(operateLogDo.getAction()))); + operateLogResp.setStartTime(DateUtils.format(operateLogDo.getCreateTime(), DateUtils.DATE_ALL_PATTEN)); + if (Objects.nonNull(operateLogDo.getEndTime())) { + operateLogResp.setEndTime(DateUtils.format(operateLogDo.getEndTime(), DateUtils.DATE_ALL_PATTEN)); + } + CloudUserDo userDo = cloudUserService.getById(operateLogDo.getCreateBy()); + operateLogResp.setOperateUser(userDo.getUserName()); + + CloudOrganizationDo organizationDo = cloudOrganizationService.getById(userDo.getOrganizationId()); + operateLogResp.setOrgName(organizationDo.getOrganizationName()); + + if (!Objects.equals(organizationDo.getId(), cloudOrganizationService.getDefaultTopOrg().getId())) { + CloudVdcDo vdcDo = cloudVdcService.getVdcByOrgId(organizationDo.getId()); + CloudZoneDo cloudZoneDo = cloudZoneService.getById(vdcDo.getZoneId()); + operateLogResp.setZoneName(cloudZoneDo.getName()); + } + operateLogResp.setClientIp(operateLogDo.getClientIp()); + return operateLogResp; + } +} diff --git a/mcp-cloud-manage/src/main/resources/i18n/message.properties b/mcp-cloud-manage/src/main/resources/i18n/message.properties new file mode 100644 index 0000000..0a90e68 --- /dev/null +++ b/mcp-cloud-manage/src/main/resources/i18n/message.properties @@ -0,0 +1,76 @@ +##操作日志-状态 +kcp.operateLog.status.success=成功 +kcp.operateLog.status.fail=失败 +kcp.operateLog.status.running=执行中 +kcp.operateLog.status.wait_start=待开始 +kcp.operateLog.status.canceled=已取消 +kcp.operateLog.status.canceling=取消中 +kcp.operateLog.status.timeout=超时 +kcp.operateLog.status.unknown=未知 +##操作日志-类型 +kcp.operateLog.type.image=镜像 +kcp.operateLog.type.cluster=物理集群 +kcp.operateLog.type.vdc=VDC +kcp.operateLog.type.zone=可用区 +kcp.operateLog.type.org=组织 +kcp.operateLog.type.user=用户 +kcp.operateLog.type.role=角色 +kcp.operateLog.type.servervm=云服务器 +kcp.operateLog.type.alarm=告警 + +##操作日志-操作 +###########用户模块 +kcp.operateLog.action.user_create=创建用户 +kcp.operateLog.action.user_modify=编辑用户 +kcp.operateLog.action.user_delete=删除用户 +kcp.operateLog.action.user_login=登录 +###########角色模块 +kcp.operateLog.action.role_create=创建角色 +kcp.operateLog.action.role_modify=编辑角色 +kcp.operateLog.action.role_delete=删除角色 +###########组织模块 +kcp.operateLog.action.org_create=创建组织 +kcp.operateLog.action.org_modify=编辑组织 +kcp.operateLog.action.org_delete=删除组织 +###########可用区 +kcp.operateLog.action.zone_create=创建可用区 +kcp.operateLog.action.zone_modify=编辑可用区 +kcp.operateLog.action.zone_delete=删除可用区 +###########物理集群 +kcp.operateLog.action.cluster_create=创建物理集群 +kcp.operateLog.action.cluster_modify=编辑物理集群 +kcp.operateLog.action.cluster_delete=删除物理集群 +###########VDC +kcp.operateLog.action.vdc_create=创建VDC +kcp.operateLog.action.vdc_modify=编辑VDC +kcp.operateLog.action.vdc_delete=删除VDC +kcp.operateLog.action.vdc_modify_resource=变更VDC资源 +kcp.operateLog.action.vdc_resource_apply=申请VDC资源 +###########镜像 +kcp.operateLog.action.image_upload=上传镜像 +kcp.operateLog.action.image_sync=镜像同步 +kcp.operateLog.action.image_create_template=生成模板镜像 +kcp.operateLog.action.image_modify=编辑镜像 +kcp.operateLog.action.image_private_to_share=私有镜像提升为共享镜像 +kcp.operateLog.action.image_share_to_public=共享镜像提升为公共镜像 +kcp.operateLog.action.image_make=制作镜像 +kcp.operateLog.action.image_create_gvm_file=生成镜像文件 +kcp.operateLog.action.image_error_sync=异常镜像-同步 +kcp.operateLog.action.image_delete=删除镜像 +kcp.operateLog.action.image_download=下载镜像 +##告警 +kcp.operateLog.action.alarm_vdc_cpu_modify=VDC-CPU分配比告警 +kcp.operateLog.action.alarm_vdc_mem_modify=VDC-内存使用率告警 +kcp.operateLog.action.alarm_vdc_storage_modify=VDC-存储使用率告警 +##云服务器模块 +kcp.operateLog.action.servervm_start=开机 +kcp.operateLog.action.servervm_shutdown=关机 +kcp.operateLog.action.servervm_forceshutdown=强制关机 +kcp.operateLog.action.servervm_restart=重启 +kcp.operateLog.action.servervm_forcerestart=强制重启 +kcp.operateLog.action.servervm_delete=删除 +kcp.operateLog.action.servervm_createsnapshot=创建快照 +kcp.operateLog.action.servervm_applysnapshot=恢复快照 +kcp.operateLog.action.servervm_deletesnapshot=删除快照 + + diff --git a/mcp-cloud-manage/src/main/resources/i18n/message_en_US.properties b/mcp-cloud-manage/src/main/resources/i18n/message_en_US.properties new file mode 100644 index 0000000..fbadb48 --- /dev/null +++ b/mcp-cloud-manage/src/main/resources/i18n/message_en_US.properties @@ -0,0 +1,178 @@ +##操作日志-状态 +kcp.operateLog.status.success=success +kcp.operateLog.status.fail=fail +kcp.operateLog.status.running=running +kcp.operateLog.status.wait_start=wait start +kcp.operateLog.status.canceled=canceled +kcp.operateLog.status.canceling=canceling +kcp.operateLog.status.timeout=timeout +kcp.operateLog.status.unknown=unknown +##操作日志-类型 +kcp.operateLog.type.image=image +kcp.operateLog.type.cluster=cluster +kcp.operateLog.type.vdc=VDC +kcp.operateLog.type.zone=zone +kcp.operateLog.type.org=organization +kcp.operateLog.type.user=user +kcp.operateLog.type.role=role +kcp.operateLog.type.servervm=servervm +kcp.operateLog.type.alarm=alarm +kcp.operateLog.type.bdr_backup=remote disaster recovery +kcp.operateLog.type.kcp_ha=kcp ha +kcp.operateLog.type.baremetal_cluster=bare metal cluster +kcp.operateLog.type.baremetal_deploy=deploy server +kcp.operateLog.type.baremetal_device=bare metal device +kcp.operateLog.type.baremetal_host=bare metal host +kcp.operateLog.type.bill=bill +##操作日志-操作 +###########用户模块 +kcp.operateLog.action.user_create=create user +kcp.operateLog.action.user_modify=modify user +kcp.operateLog.action.user_delete=delete user +kcp.operateLog.action.user_login=user login +###########角色模块 +kcp.operateLog.action.role_create=create role +kcp.operateLog.action.role_modify=modify role +kcp.operateLog.action.role_delete=delete role +###########组织模块 +kcp.operateLog.action.org_create=create organization +kcp.operateLog.action.org_modify=modify organization +kcp.operateLog.action.org_delete=delete organization +###########可用区 +kcp.operateLog.action.zone_create=create zone +kcp.operateLog.action.zone_modify=modify zone +kcp.operateLog.action.zone_delete=delete zone +###########物理集群 +kcp.operateLog.action.cluster_create=create cluster +kcp.operateLog.action.cluster_modify=modify cluster +kcp.operateLog.action.cluster_delete=delete cluster +###########VDC +kcp.operateLog.action.vdc_create=create vdc +kcp.operateLog.action.vdc_modify=modify vdc +kcp.operateLog.action.vdc_delete=delete vdc +kcp.operateLog.action.vdc_modify_resource=modify vdc resource +kcp.operateLog.action.vdc_resource_apply=vdc resource apply +###########镜像 +kcp.operateLog.action.image_upload=image upload +kcp.operateLog.action.image_sync=sync image +kcp.operateLog.action.image_create_template=create template image +kcp.operateLog.action.image_modify=modify image +kcp.operateLog.action.image_private_to_share=private image to share image +kcp.operateLog.action.image_share_to_public=share image to public image +kcp.operateLog.action.image_make=make image +kcp.operateLog.action.image_create_gvm_file=create gvm file +kcp.operateLog.action.image_error_sync=sync error image +kcp.operateLog.action.image_delete=delete image +kcp.operateLog.action.image_download=download image +##告警 +kcp.operateLog.action.alarm_vdc_cpu_modify=modify vdc cpu threshold value +kcp.operateLog.action.alarm_vdc_mem_modify=modify vdc mem threshold value +kcp.operateLog.action.alarm_vdc_storage_modify=modify vdc storage threshold value +##云服务器模块 +kcp.operateLog.action.servervm_start=start server vm +kcp.operateLog.action.servervm_shutdown=shutdown server vm +kcp.operateLog.action.servervm_forceshutdown=force shutdown server vm +kcp.operateLog.action.servervm_restart=restart +kcp.operateLog.action.servervm_forcerestart=force restart +kcp.operateLog.action.servervm_delete=delete +kcp.operateLog.action.servervm_createsnapshot=create snapshot +kcp.operateLog.action.servervm_applysnapshot=apply snapshot +kcp.operateLog.action.servervm_deletesnapshot=delete snapshot + +## vcenter模块 +kcp.operateLog.action.vcenter_create=vcenter create +kcp.operateLog.action.vcenter_modify=vcenter modify +kcp.operateLog.action.vcenter_delete=vcenter delete +kcp.operateLog.action.vcenter_server_start=vmware server power on +kcp.operateLog.action.vcenter_server_stop=vmware server power off +kcp.operateLog.action.vcenter_server_shutdown=vmware server shutdown +kcp.operateLog.action.vcenter_server_suspend=vmware server suspend +kcp.operateLog.action.vcenter_server_resume=vmware server resume +kcp.operateLog.action.vcenter_server_restart=vmware server restart +kcp.operateLog.action.vcenter_server_clone=vmware server clone +kcp.operateLog.action.vcenter_server_create=vmware server create +kcp.operateLog.action.vcenter_server_delete=vmware server delete +kcp.operateLog.action.vcenter_server_modify=vmware server edit +kcp.operateLog.action.vcenter_server_migrate=vmware server migrate +kcp.operateLog.action.vcenter_server_increment_migrate=vmware server migrate +kcp.operateLog.action.vcenter_server_create_snapshot=vmware server create snapshot +##异地容灾模块 +kcp.operateLog.action.bdr_backup_plan_dispatch=backup plan diapatch +kcp.operateLog.action.bdr_backup_machine_backup_dispatch=machine backup +kcp.operateLog.action.bdr_backup_machine_backup_delete=delete backup +kcp.operateLog.action.bdr_backup_machine_backup_rpo=rpo backup +kcp.operateLog.action.bdr_backup_machine_backup_uncompressing=uncompress backup +kcp.operateLog.action.bdr_backup_machine_backupinfo_amendment=amendment backup +kcp.operateLog.action.bdr_backup_machine_start_drill=start drill +kcp.operateLog.action.bdr_backup_machine_end_drill=end drill +kcp.operateLog.action.bdr_backup_machine_shutdown=shutdown machine +kcp.operateLog.action.bdr_backup_create_new_machine=create as new machine by backup +kcp.operateLog.action.bdr_backup_start_machine=start machine +kcp.operateLog.action.bdr_backup_plan_recover=machine backup plan recover +kcp.operateLog.action.bdr_backup_fail_recover=machine backup fail recover +kcp.operateLog.action.bdr_backup_move_back=machine backup move back +kcp.operateLog.action.bdr_backup_master_recover=machine backup recover +kcp.operateLog.action.bdr_backup_add_site=add site +kcp.operateLog.action.bdr_backup_delete_site=delete site +kcp.operateLog.action.bdr_backup_add_link=add link +kcp.operateLog.action.bdr_backup_delete_link=delete link +kcp.operateLog.action.bdr_backup_edit_link=update link +kcp.operateLog.action.bdr_backup_add_plan=add bdr plan +kcp.operateLog.action.bdr_backup_delete_plan=delete bdr plan +kcp.operateLog.action.bdr_backup_edit_plan=update bdr plan +kcp.operateLog.action.bdr_backup_plan_active=active plan +kcp.operateLog.action.bdr_backup_plan_dead=dead plan +kcp.operateLog.action.bdr_backup_check_difference=check difference +kcp.operateLog.action.kcp_ha_add_slave=add slave kcp +kcp.operateLog.action.kcp_ha_delete_slave=delete slave kcp +##裸金属集群 +kcp.operateLog.action.baremetal_cluster_add=create +kcp.operateLog.action.baremetal_cluster_active=active +kcp.operateLog.action.baremetal_cluster_freeze=freeze +kcp.operateLog.action.baremetal_cluster_delete=delete +kcp.operateLog.action.baremetal_cluster_edit=edit +kcp.operateLog.action.baremetal_cluster_bind_network=bind network +kcp.operateLog.action.baremetal_cluster_uninstall_network=uninstall network +kcp.operateLog.action.baremetal_cluster_bind_deploy=bind deploy server +kcp.operateLog.action.baremetal_cluster_uninstall_deploy=uninstall deploy server +##部署服务器 +kcp.operateLog.action.baremetal_deploy_add=create +kcp.operateLog.action.baremetal_deploy_active=active +kcp.operateLog.action.baremetal_deploy_freeze=freeze +kcp.operateLog.action.baremetal_deploy_delete=delete +kcp.operateLog.action.baremetal_deploy_edit=edit +kcp.operateLog.action.baremetal_deploy_bind_cluster=bind bare metal cluster +kcp.operateLog.action.baremetal_deploy_uninstall_cluster=uninstall bare metal cluster +kcp.operateLog.action.baremetal_deploy_reconnection=reconnection +##裸金属设备 +kcp.operateLog.action.baremetal_device_add=create +kcp.operateLog.action.baremetal_device_active=active +kcp.operateLog.action.baremetal_device_freeze=freeze +kcp.operateLog.action.baremetal_device_delete=delete +kcp.operateLog.action.baremetal_device_edit=edit +kcp.operateLog.action.baremetal_device_poweron=power on +kcp.operateLog.action.baremetal_device_poweroff=power off +kcp.operateLog.action.baremetal_device_restart=restart +kcp.operateLog.action.baremetal_device_refresh_hadware=refresh hadware info +##裸金属主机 +kcp.operateLog.action.baremetal_host_add=create +kcp.operateLog.action.baremetal_host_delete=delete +kcp.operateLog.action.baremetal_host_edit=edit +kcp.operateLog.action.baremetal_host_poweron=power on +kcp.operateLog.action.baremetal_host_poweroff=power off +kcp.operateLog.action.baremetal_host_restart=restart +kcp.operateLog.action.baremetal_host_bind_network=bind network +kcp.operateLog.action.baremetal_host_uninstall_network=uninstall network +kcp.operateLog.action.baremetal_host_send_image=send image to deploy server +kcp.operateLog.action.baremetal_host_image_convert=image convert +##计量计费管理 +kcp.operateLog.action.bill_set_price=set price +##其他国际化 +kcp.bdr.cannotselect.disk_encryption=disk encryption machine not add remote disaster recovery +kcp.bdr.cannotselect.link_clone=link clone machine not add remote disaster recovery +kcp.bdr.cannotselect.add_mc_strategy=already add cloud platform backup strategy not add remote disaster recovery +kcp.bill.price.online.cpu=online cpu price +kcp.bill.price.offline.cpu=offline cpu price +kcp.bill.price.online.mem=online mem price +kcp.bill.price.offline.mem=offline mem price +kcp.bill.price.storage=storage price \ No newline at end of file diff --git a/mcp-cloud-manage/src/main/resources/i18n/message_zh_CN.properties b/mcp-cloud-manage/src/main/resources/i18n/message_zh_CN.properties new file mode 100644 index 0000000..1fdb945 --- /dev/null +++ b/mcp-cloud-manage/src/main/resources/i18n/message_zh_CN.properties @@ -0,0 +1,180 @@ +##操作日志-状态 +kcp.operateLog.status.success=成功 +kcp.operateLog.status.fail=失败 +kcp.operateLog.status.running=执行中 +kcp.operateLog.status.wait_start=待开始 +kcp.operateLog.status.canceled=已取消 +kcp.operateLog.status.canceling=取消中 +kcp.operateLog.status.timeout=超时 +kcp.operateLog.status.unknown=未知 +##操作日志-类型 +kcp.operateLog.type.image=镜像 +kcp.operateLog.type.cluster=物理集群 +kcp.operateLog.type.vdc=VDC +kcp.operateLog.type.zone=可用区 +kcp.operateLog.type.org=组织 +kcp.operateLog.type.user=用户 +kcp.operateLog.type.role=角色 +kcp.operateLog.type.servervm=云服务器 +kcp.operateLog.type.alarm=告警 +kcp.operateLog.type.vcenter_vm=vmware云服务器 +kcp.operateLog.type.bdr_backup=异地容灾 +kcp.operateLog.type.kcp_ha=主备kcp +kcp.operateLog.type.baremetal_cluster=裸金属集群 +kcp.operateLog.type.baremetal_deploy=部署服务器 +kcp.operateLog.type.baremetal_device=裸金属设备 +kcp.operateLog.type.baremetal_host=裸金属主机 +kcp.operateLog.type.bill=计量计费 +##操作日志-操作 +###########用户模块 +kcp.operateLog.action.user_create=创建用户 +kcp.operateLog.action.user_modify=编辑用户 +kcp.operateLog.action.user_delete=删除用户 +kcp.operateLog.action.user_login=登录 +###########角色模块 +kcp.operateLog.action.role_create=创建角色 +kcp.operateLog.action.role_modify=编辑角色 +kcp.operateLog.action.role_delete=删除角色 +###########组织模块 +kcp.operateLog.action.org_create=创建组织 +kcp.operateLog.action.org_modify=编辑组织 +kcp.operateLog.action.org_delete=删除组织 +###########可用区 +kcp.operateLog.action.zone_create=创建可用区 +kcp.operateLog.action.zone_modify=编辑可用区 +kcp.operateLog.action.zone_delete=删除可用区 +###########物理集群 +kcp.operateLog.action.cluster_create=创建物理集群 +kcp.operateLog.action.cluster_modify=编辑物理集群 +kcp.operateLog.action.cluster_delete=删除物理集群 +###########VDC +kcp.operateLog.action.vdc_create=创建VDC +kcp.operateLog.action.vdc_modify=编辑VDC +kcp.operateLog.action.vdc_delete=删除VDC +kcp.operateLog.action.vdc_modify_resource=变更VDC资源 +kcp.operateLog.action.vdc_resource_apply=申请VDC资源 +###########镜像 +kcp.operateLog.action.image_upload=上传镜像 +kcp.operateLog.action.image_sync=镜像同步 +kcp.operateLog.action.image_create_template=生成模板镜像 +kcp.operateLog.action.image_modify=编辑镜像 +kcp.operateLog.action.image_private_to_share=私有镜像提升为共享镜像 +kcp.operateLog.action.image_share_to_public=共享镜像提升为公共镜像 +kcp.operateLog.action.image_make=制作镜像 +kcp.operateLog.action.image_create_gvm_file=生成镜像文件 +kcp.operateLog.action.image_error_sync=异常镜像-同步 +kcp.operateLog.action.image_delete=删除镜像 +kcp.operateLog.action.image_download=下载镜像 +##告警 +kcp.operateLog.action.alarm_vdc_cpu_modify=VDC-CPU分配比告警 +kcp.operateLog.action.alarm_vdc_mem_modify=VDC-内存使用率告警 +kcp.operateLog.action.alarm_vdc_storage_modify=VDC-存储使用率告警 +##云服务器模块 +kcp.operateLog.action.servervm_start=开机 +kcp.operateLog.action.servervm_shutdown=关机 +kcp.operateLog.action.servervm_forceshutdown=强制关机 +kcp.operateLog.action.servervm_restart=重启 +kcp.operateLog.action.servervm_forcerestart=强制重启 +kcp.operateLog.action.servervm_delete=删除 +kcp.operateLog.action.servervm_createsnapshot=创建快照 +kcp.operateLog.action.servervm_applysnapshot=恢复快照 +kcp.operateLog.action.servervm_deletesnapshot=删除快照 + +## vcenter模块 +kcp.operateLog.action.vcenter_create=vcenter创建 +kcp.operateLog.action.vcenter_modify=vcenter修改 +kcp.operateLog.action.vcenter_delete=vcenter删除 +kcp.operateLog.action.vcenter_server_start=vmware云服务器开机 +kcp.operateLog.action.vcenter_server_stop=vmware云服务器关闭电源 +kcp.operateLog.action.vcenter_server_shutdown=vmware云服务器系统关机 +kcp.operateLog.action.vcenter_server_suspend=vmware云服务器暂停 +kcp.operateLog.action.vcenter_server_resume=vmware云服务器唤醒 +kcp.operateLog.action.vcenter_server_restart=vmware云服务器重启 +kcp.operateLog.action.vcenter_server_clone=vmware云服务器克隆 +kcp.operateLog.action.vcenter_server_create=vmware云服务器创建 +kcp.operateLog.action.vcenter_server_delete=vmware云服务器删除 +kcp.operateLog.action.vcenter_server_modify=vmware云服务器编辑 +kcp.operateLog.action.vcenter_server_migrate=vmware云服务器迁移 +kcp.operateLog.action.vcenter_server_increment_migrate=vmware云服务器迁移 +kcp.operateLog.action.vcenter_server_create_snapshot=vmware云服务器创建快照 +##异地容灾模块 +kcp.operateLog.action.bdr_backup_plan_dispatch=容灾策略执行 +kcp.operateLog.action.bdr_backup_machine_backup_dispatch=云服务器备份 +kcp.operateLog.action.bdr_backup_machine_backup_delete=删除备份文件 +kcp.operateLog.action.bdr_backup_machine_backup_rpo=备份文件rpo同步 +kcp.operateLog.action.bdr_backup_machine_backup_uncompressing=备份文件解压 +kcp.operateLog.action.bdr_backup_machine_backupinfo_amendment=备份文件修正 +kcp.operateLog.action.bdr_backup_machine_start_drill=开始容灾演练 +kcp.operateLog.action.bdr_backup_machine_end_drill=结束容灾演练 +kcp.operateLog.action.bdr_backup_machine_shutdown=异地容灾-关机 +kcp.operateLog.action.bdr_backup_create_new_machine=基于备份创建云服务器 +kcp.operateLog.action.bdr_backup_start_machine=异地容灾-开机 +kcp.operateLog.action.bdr_backup_plan_recover=计划内恢复 +kcp.operateLog.action.bdr_backup_fail_recover=故障恢复 +kcp.operateLog.action.bdr_backup_move_back=数据回迁 +kcp.operateLog.action.bdr_backup_master_recover=备份恢复 +kcp.operateLog.action.bdr_backup_add_site=添加站点 +kcp.operateLog.action.bdr_backup_delete_site=删除站点 +kcp.operateLog.action.bdr_backup_add_link=添加链路 +kcp.operateLog.action.bdr_backup_delete_link=删除链路 +kcp.operateLog.action.bdr_backup_edit_link=更新链路 +kcp.operateLog.action.bdr_backup_add_plan=创建容灾计划 +kcp.operateLog.action.bdr_backup_delete_plan=删除容灾计划 +kcp.operateLog.action.bdr_backup_edit_plan=更新容灾计划 +kcp.operateLog.action.bdr_backup_plan_active=启用容灾计划 +kcp.operateLog.action.bdr_backup_plan_dead=停用容灾计划 +kcp.operateLog.action.bdr_backup_check_difference=数据差异检测 +kcp.operateLog.action.kcp_ha_add_slave=添加备kcp节点 +kcp.operateLog.action.kcp_ha_delete_slave=删除备kcp节点 +##裸金属集群 +kcp.operateLog.action.baremetal_cluster_add=创建 +kcp.operateLog.action.baremetal_cluster_active=启用 +kcp.operateLog.action.baremetal_cluster_freeze=禁用 +kcp.operateLog.action.baremetal_cluster_delete=删除 +kcp.operateLog.action.baremetal_cluster_edit=编辑 +kcp.operateLog.action.baremetal_cluster_bind_network=加载网络 +kcp.operateLog.action.baremetal_cluster_uninstall_network=卸载网络 +kcp.operateLog.action.baremetal_cluster_bind_deploy=加载部署服务器 +kcp.operateLog.action.baremetal_cluster_uninstall_deploy=卸载部署服务器 +##部署服务器 +kcp.operateLog.action.baremetal_deploy_add=创建 +kcp.operateLog.action.baremetal_deploy_active=启用 +kcp.operateLog.action.baremetal_deploy_freeze=禁用 +kcp.operateLog.action.baremetal_deploy_delete=删除 +kcp.operateLog.action.baremetal_deploy_edit=编辑 +kcp.operateLog.action.baremetal_deploy_bind_cluster=加载裸金属集群 +kcp.operateLog.action.baremetal_deploy_uninstall_cluster=卸载裸金属集群 +kcp.operateLog.action.baremetal_deploy_reconnection=重连 +##裸金属设备 +kcp.operateLog.action.baremetal_device_add=创建 +kcp.operateLog.action.baremetal_device_active=启用 +kcp.operateLog.action.baremetal_device_freeze=禁用 +kcp.operateLog.action.baremetal_device_delete=删除 +kcp.operateLog.action.baremetal_device_edit=编辑 +kcp.operateLog.action.baremetal_device_poweron=开机 +kcp.operateLog.action.baremetal_device_poweroff=关机 +kcp.operateLog.action.baremetal_device_restart=重启 +kcp.operateLog.action.baremetal_device_refresh_hadware=更新硬件信息 +##裸金属主机 +kcp.operateLog.action.baremetal_host_add=创建 +kcp.operateLog.action.baremetal_host_delete=删除 +kcp.operateLog.action.baremetal_host_edit=编辑 +kcp.operateLog.action.baremetal_host_poweron=开机 +kcp.operateLog.action.baremetal_host_poweroff=关机 +kcp.operateLog.action.baremetal_host_restart=重启 +kcp.operateLog.action.baremetal_host_bind_network=加载网络 +kcp.operateLog.action.baremetal_host_uninstall_network=卸载网络 +kcp.operateLog.action.baremetal_host_send_image=传输镜像文件 +kcp.operateLog.action.baremetal_host_image_convert=传输镜像文件 +##计量计费管理 +kcp.operateLog.action.bill_set_price=单价设置 +##其他国际化 +kcp.bdr.cannotselect.disk_encryption=当前云服务器存在磁盘加密,不能进行异地容灾 +kcp.bdr.cannotselect.link_clone=当前云服务器链接克隆而来,不能进行异地容灾 +kcp.bdr.cannotselect.add_mc_strategy=当前云服务器已加入云平台的备份策略,不能进行异地容灾 +kcp.bill.price.online.cpu=CPU在线单价 +kcp.bill.price.offline.cpu=CPU离线单价 +kcp.bill.price.online.mem=内存在线单价 +kcp.bill.price.offline.mem=内存离线单价 +kcp.bill.price.storage=存储单价 + -- Gitee