refactor: site_change_log 重命名为 site_changes,更准确表达待审核+已变更

This commit is contained in:
mediabot-pt
2026-06-30 09:03:58 +08:00
parent 39af3dc034
commit a7eb63ce1b
9 changed files with 65 additions and 65 deletions

View File

@@ -6,7 +6,7 @@ import java.time.LocalDateTime;
import java.util.List;
@Data
public class SiteChangeLogDTO {
public class SiteChangeDTO {
private Long id;
private String siteId;
private Long submitterId;

View File

@@ -6,8 +6,8 @@ import lombok.Data;
import java.time.LocalDateTime;
@Data
@TableName("site_change_log")
public class SiteChangeLog {
@TableName("site_changes")
public class SiteChange {
@TableId(type = IdType.AUTO)
private Long id;

View File

@@ -1,19 +0,0 @@
package com.par.core.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.par.core.entity.SiteChangeLog;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface SiteChangeLogMapper extends BaseMapper<SiteChangeLog> {
@Select("SELECT * FROM site_change_log WHERE status = #{status} ORDER BY created_at DESC")
List<SiteChangeLog> selectByStatus(@Param("status") String status);
@Select("SELECT * FROM site_change_log WHERE site_id = #{siteId} ORDER BY created_at DESC")
List<SiteChangeLog> selectBySiteId(@Param("siteId") String siteId);
}

View File

@@ -0,0 +1,19 @@
package com.par.core.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.par.core.entity.SiteChange;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface SiteChangeMapper extends BaseMapper<SiteChange> {
@Select("SELECT * FROM site_changes WHERE status = #{status} ORDER BY created_at DESC")
List<SiteChange> selectByStatus(@Param("status") String status);
@Select("SELECT * FROM site_changes WHERE site_id = #{siteId} ORDER BY created_at DESC")
List<SiteChange> selectBySiteId(@Param("siteId") String siteId);
}

View File

@@ -1,6 +1,6 @@
package com.par.core.service;
import com.par.core.dto.SiteChangeLogDTO;
import com.par.core.dto.SiteChangeDTO;
import com.par.core.dto.SiteDTO;
import com.par.core.entity.Site;
@@ -48,7 +48,7 @@ public interface SiteService {
List<Site> listAllSites();
/** 待审核变更列表 */
List<SiteChangeLogDTO> listPendingChanges();
List<SiteChangeDTO> listPendingChanges();
/** 审核通过 → 写入 sites 表 */
Site approveChange(Long changeId, Long reviewerId);
@@ -57,5 +57,5 @@ public interface SiteService {
void rejectChange(Long changeId, Long reviewerId);
/** 查看站点的变更记录 */
List<SiteChangeLogDTO> listChangeLogBySite(String siteId);
List<SiteChangeDTO> listChangesBySite(String siteId);
}

View File

@@ -3,13 +3,13 @@ package com.par.core.service.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.par.core.dto.SiteChangeLogDTO;
import com.par.core.dto.SiteChangeDTO;
import com.par.core.dto.SiteDTO;
import com.par.core.entity.Site;
import com.par.core.entity.SiteChangeLog;
import com.par.core.entity.SiteChange;
import com.par.core.enums.SiteStatus;
import com.par.core.enums.SiteType;
import com.par.core.mapper.SiteChangeLogMapper;
import com.par.core.mapper.SiteChangeMapper;
import com.par.core.mapper.SiteMapper;
import com.par.core.service.SiteService;
import lombok.RequiredArgsConstructor;
@@ -28,7 +28,7 @@ import java.util.stream.Collectors;
public class SiteServiceImpl implements SiteService {
private final SiteMapper siteMapper;
private final SiteChangeLogMapper changeLogMapper;
private final SiteChangeMapper changeMapper;
private static final ObjectMapper objectMapper = new ObjectMapper();
// ==================== 工具方法 ====================
@@ -132,7 +132,7 @@ public class SiteServiceImpl implements SiteService {
raw.put("notes", notes != null ? notes : "");
raw.put("siteStatus", status != null ? status : "正常");
SiteChangeLog entry = new SiteChangeLog();
SiteChange entry = new SiteChange();
entry.setSiteId(siteId);
entry.setSubmitterId(submitterId);
entry.setStatus("pending");
@@ -141,8 +141,8 @@ public class SiteServiceImpl implements SiteService {
} catch (JsonProcessingException e) {
throw new RuntimeException("序列化变更数据失败", e);
}
changeLogMapper.insert(entry);
log.info("站点变更提交: siteId={} changeLogId={}", siteId, entry.getId());
changeMapper.insert(entry);
log.info("站点变更提交: siteId={} changeId={}", siteId, entry.getId());
}
@Override
@@ -181,14 +181,14 @@ public class SiteServiceImpl implements SiteService {
}
@Override
public List<SiteChangeLogDTO> listPendingChanges() {
return changeLogMapper.selectByStatus("pending").stream()
.map(this::toChangeLogDTO).collect(Collectors.toList());
public List<SiteChangeDTO> listPendingChanges() {
return changeMapper.selectByStatus("pending").stream()
.map(this::toChangeDTO).collect(Collectors.toList());
}
@Override
public Site approveChange(Long changeId, Long reviewerId) {
SiteChangeLog entry = changeLogMapper.selectById(changeId);
SiteChange entry = changeMapper.selectById(changeId);
if (entry == null) throw new IllegalArgumentException("变更记录不存在");
if (!"pending".equals(entry.getStatus())) throw new IllegalArgumentException("该变更已处理");
@@ -231,31 +231,31 @@ public class SiteServiceImpl implements SiteService {
entry.setReviewerId(reviewerId);
entry.setReviewedAt(java.time.LocalDateTime.now());
entry.setSiteRecordId(site.getId());
changeLogMapper.updateById(entry);
log.info("站点变更通过: siteId={} changeLogId={}", entry.getSiteId(), changeId);
changeMapper.updateById(entry);
log.info("站点变更通过: siteId={} changeId={}", entry.getSiteId(), changeId);
return site;
}
@Override
public void rejectChange(Long changeId, Long reviewerId) {
SiteChangeLog entry = changeLogMapper.selectById(changeId);
SiteChange entry = changeMapper.selectById(changeId);
if (entry == null) throw new IllegalArgumentException("变更记录不存在");
if (!"pending".equals(entry.getStatus())) throw new IllegalArgumentException("该变更已处理");
entry.setStatus("rejected");
entry.setReviewerId(reviewerId);
entry.setReviewedAt(java.time.LocalDateTime.now());
changeLogMapper.updateById(entry);
log.info("站点变更拒绝: siteId={} changeLogId={}", entry.getSiteId(), changeId);
changeMapper.updateById(entry);
log.info("站点变更拒绝: siteId={} changeId={}", entry.getSiteId(), changeId);
}
@Override
public List<SiteChangeLogDTO> listChangeLogBySite(String siteId) {
return changeLogMapper.selectBySiteId(siteId).stream()
.map(this::toChangeLogDTO).collect(Collectors.toList());
public List<SiteChangeDTO> listChangesBySite(String siteId) {
return changeMapper.selectBySiteId(siteId).stream()
.map(this::toChangeDTO).collect(Collectors.toList());
}
private SiteChangeLogDTO toChangeLogDTO(SiteChangeLog entry) {
SiteChangeLogDTO dto = new SiteChangeLogDTO();
private SiteChangeDTO toChangeDTO(SiteChange entry) {
SiteChangeDTO dto = new SiteChangeDTO();
dto.setId(entry.getId());
dto.setSiteId(entry.getSiteId());
dto.setSubmitterId(entry.getSubmitterId());

View File

@@ -1,16 +0,0 @@
CREATE TABLE site_change_log (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',
site_id VARCHAR(64) NOT NULL COMMENT '站点标识',
submitter_id BIGINT UNSIGNED COMMENT '提交者账户ID',
raw_data JSON NOT NULL COMMENT '原始提交数据 {names,urls,notes,site_status}',
status VARCHAR(20) NOT NULL DEFAULT 'pending' COMMENT '审核状态: pending/approved/rejected',
reviewer_id BIGINT UNSIGNED COMMENT '审核人ID',
review_comment VARCHAR(500) COMMENT '审核备注',
reviewed_at DATETIME COMMENT '审核时间',
site_record_id BIGINT UNSIGNED COMMENT '审核通过后关联的 sites.id',
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
KEY idx_site_id (site_id),
KEY idx_status (status),
KEY idx_submitter (submitter_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='站点提交审核表';

View File

@@ -0,0 +1,16 @@
CREATE TABLE site_changes (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '涓婚敭',
site_id VARCHAR(64) NOT NULL COMMENT '绔欑偣鏍囪瘑',
submitter_id BIGINT UNSIGNED COMMENT '鎻愪氦鑰呰处鎴稩D',
raw_data JSON NOT NULL COMMENT '鍘熷鎻愪氦鏁版嵁 {names,urls,notes,site_status}',
status VARCHAR(20) NOT NULL DEFAULT 'pending' COMMENT '瀹℃牳鐘舵€? pending/approved/rejected',
reviewer_id BIGINT UNSIGNED COMMENT '瀹℃牳浜篒D',
review_comment VARCHAR(500) COMMENT '瀹℃牳澶囨敞',
reviewed_at DATETIME COMMENT '瀹℃牳鏃堕棿',
site_record_id BIGINT UNSIGNED COMMENT '瀹℃牳閫氳繃鍚庡叧鑱旂殑 sites.id',
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
KEY idx_site_id (site_id),
KEY idx_status (status),
KEY idx_submitter (submitter_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='绔欑偣鎻愪氦瀹℃牳琛?;