diff --git a/par-api/src/main/java/com/par/api/controller/AdminController.java b/par-api/src/main/java/com/par/api/controller/AdminController.java index 7120105..c6df3bc 100644 --- a/par-api/src/main/java/com/par/api/controller/AdminController.java +++ b/par-api/src/main/java/com/par/api/controller/AdminController.java @@ -266,7 +266,7 @@ public class AdminController { } @GetMapping("/sites/pending") - public ApiResponse> listPendingChanges(HttpServletRequest request) { + public ApiResponse> listPendingChanges(HttpServletRequest request) { checkAdmin(request); return ApiResponse.success(siteService.listPendingChanges()); } @@ -290,10 +290,10 @@ public class AdminController { } @GetMapping("/sites/{siteId}/changes") - public ApiResponse> listSiteChanges( + public ApiResponse> listSiteChanges( @PathVariable("siteId") String siteId, HttpServletRequest request) { checkAdmin(request); - return ApiResponse.success(siteService.listChangeLogBySite(siteId)); + return ApiResponse.success(siteService.listChangesBySite(siteId)); } private void checkAdmin(HttpServletRequest request) { diff --git a/par-core/src/main/java/com/par/core/dto/SiteChangeLogDTO.java b/par-core/src/main/java/com/par/core/dto/SiteChangeDTO.java similarity index 94% rename from par-core/src/main/java/com/par/core/dto/SiteChangeLogDTO.java rename to par-core/src/main/java/com/par/core/dto/SiteChangeDTO.java index 4e49716..7c66881 100644 --- a/par-core/src/main/java/com/par/core/dto/SiteChangeLogDTO.java +++ b/par-core/src/main/java/com/par/core/dto/SiteChangeDTO.java @@ -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; diff --git a/par-core/src/main/java/com/par/core/entity/SiteChangeLog.java b/par-core/src/main/java/com/par/core/entity/SiteChange.java similarity index 93% rename from par-core/src/main/java/com/par/core/entity/SiteChangeLog.java rename to par-core/src/main/java/com/par/core/entity/SiteChange.java index 0a79137..83f2102 100644 --- a/par-core/src/main/java/com/par/core/entity/SiteChangeLog.java +++ b/par-core/src/main/java/com/par/core/entity/SiteChange.java @@ -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; diff --git a/par-core/src/main/java/com/par/core/mapper/SiteChangeLogMapper.java b/par-core/src/main/java/com/par/core/mapper/SiteChangeLogMapper.java deleted file mode 100644 index 7fb6f0b..0000000 --- a/par-core/src/main/java/com/par/core/mapper/SiteChangeLogMapper.java +++ /dev/null @@ -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 { - - @Select("SELECT * FROM site_change_log WHERE status = #{status} ORDER BY created_at DESC") - List selectByStatus(@Param("status") String status); - - @Select("SELECT * FROM site_change_log WHERE site_id = #{siteId} ORDER BY created_at DESC") - List selectBySiteId(@Param("siteId") String siteId); -} diff --git a/par-core/src/main/java/com/par/core/mapper/SiteChangeMapper.java b/par-core/src/main/java/com/par/core/mapper/SiteChangeMapper.java new file mode 100644 index 0000000..75f65af --- /dev/null +++ b/par-core/src/main/java/com/par/core/mapper/SiteChangeMapper.java @@ -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 { + + @Select("SELECT * FROM site_changes WHERE status = #{status} ORDER BY created_at DESC") + List selectByStatus(@Param("status") String status); + + @Select("SELECT * FROM site_changes WHERE site_id = #{siteId} ORDER BY created_at DESC") + List selectBySiteId(@Param("siteId") String siteId); +} diff --git a/par-core/src/main/java/com/par/core/service/SiteService.java b/par-core/src/main/java/com/par/core/service/SiteService.java index 5421fe8..46bb654 100644 --- a/par-core/src/main/java/com/par/core/service/SiteService.java +++ b/par-core/src/main/java/com/par/core/service/SiteService.java @@ -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 listAllSites(); /** 待审核变更列表 */ - List listPendingChanges(); + List listPendingChanges(); /** 审核通过 → 写入 sites 表 */ Site approveChange(Long changeId, Long reviewerId); @@ -57,5 +57,5 @@ public interface SiteService { void rejectChange(Long changeId, Long reviewerId); /** 查看站点的变更记录 */ - List listChangeLogBySite(String siteId); + List listChangesBySite(String siteId); } diff --git a/par-core/src/main/java/com/par/core/service/impl/SiteServiceImpl.java b/par-core/src/main/java/com/par/core/service/impl/SiteServiceImpl.java index 393fa74..32f364a 100644 --- a/par-core/src/main/java/com/par/core/service/impl/SiteServiceImpl.java +++ b/par-core/src/main/java/com/par/core/service/impl/SiteServiceImpl.java @@ -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 listPendingChanges() { - return changeLogMapper.selectByStatus("pending").stream() - .map(this::toChangeLogDTO).collect(Collectors.toList()); + public List 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 listChangeLogBySite(String siteId) { - return changeLogMapper.selectBySiteId(siteId).stream() - .map(this::toChangeLogDTO).collect(Collectors.toList()); + public List 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()); diff --git a/par-core/src/main/resources/db/migration/V7__site_change_log.sql b/par-core/src/main/resources/db/migration/V7__site_change_log.sql deleted file mode 100644 index 93a9633..0000000 --- a/par-core/src/main/resources/db/migration/V7__site_change_log.sql +++ /dev/null @@ -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='站点提交审核表'; diff --git a/par-core/src/main/resources/db/migration/V7__site_changes.sql b/par-core/src/main/resources/db/migration/V7__site_changes.sql new file mode 100644 index 0000000..0b8bec7 --- /dev/null +++ b/par-core/src/main/resources/db/migration/V7__site_changes.sql @@ -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='绔欑偣鎻愪氦瀹℃牳琛?;