shinnosuke
2026-08-06 a1b6108494711b59bdd39ccba134ec4d1c64107d
fix(admin): 自动记录资讯发布人 (bug #24040)
4个文件已修改
31 ■■■■■ 已修改文件
talent-card-admin/src/views/TalentNewsEditView.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
talent-card-admin/src/views/TalentNewsPublishView.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
talent-card-server/src/main/java/com/talentcard/server/business/admin/AdminBusinessController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
talent-card-server/src/main/java/com/talentcard/server/business/admin/AdminBusinessService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
talent-card-admin/src/views/TalentNewsEditView.vue
@@ -37,6 +37,7 @@
const editorRef = ref<HTMLElement>()
const createdAt = ref('-')
const updatedAt = ref('-')
const author = ref('-')
const toolbarItems = ['H', 'B', 'I', 'U', 'S', '笔', '刷', '链', '列', '齐', '引', '表', '图', '视']
@@ -58,6 +59,7 @@
  form.coverUrl = article.coverUrl || ''
  form.sortNo = Number(article.sortNo || 0)
  form.status = Number(article.status ?? 1)
  author.value = article.author || '-'
  createdAt.value = formatTime(article.createdAt)
  updatedAt.value = formatTime(article.updatedAt)
  await nextTick()
@@ -93,7 +95,7 @@
      <div class="news-meta-grid">
        <div>
          <span>发布人</span>
          <strong>{{ form.source || '-' }}</strong>
          <strong>{{ author }}</strong>
        </div>
        <div>
          <span>发布时间</span>
@@ -101,7 +103,7 @@
        </div>
        <div>
          <span>修改人</span>
          <strong>{{ form.source || '-' }}</strong>
          <strong>{{ author }}</strong>
        </div>
        <div>
          <span>修改时间</span>
@@ -120,10 +122,6 @@
        <el-form-item label="资讯摘要">
          <el-input v-model="form.summary" placeholder="用于列表展示,不超过 500 字" />
        </el-form-item>
        <el-form-item label="发布来源">
          <el-input v-model="form.source" placeholder="例如:东区发布" />
        </el-form-item>
        <el-form-item class="news-editor-form-item" label="资讯内容">
talent-card-admin/src/views/TalentNewsPublishView.vue
@@ -24,7 +24,7 @@
const form = reactive<NewsForm>({
  title: '',
  summary: '',
  source: '东区发布',
  source: '',
  content: '',
  pinned: true,
  coverUrl: '',
@@ -72,10 +72,6 @@
        <el-form-item label="资讯摘要">
          <el-input v-model="form.summary" placeholder="用于列表展示,不超过 500 字" />
        </el-form-item>
        <el-form-item label="发布来源">
          <el-input v-model="form.source" placeholder="例如:东区发布" />
        </el-form-item>
        <el-form-item class="news-editor-form-item" label="资讯内容">
talent-card-server/src/main/java/com/talentcard/server/business/admin/AdminBusinessController.java
@@ -56,8 +56,9 @@
    @PostMapping("/news")
    @ResponseStatus(HttpStatus.CREATED)
    public ApiResponse<Map<String, Object>> createNews(@Valid @RequestBody NewsArticleRequest request) {
        return ApiResponse.success(adminBusinessService.createNews(request));
    public ApiResponse<Map<String, Object>> createNews(@Valid @RequestBody NewsArticleRequest request, HttpServletRequest servletRequest) {
        String operatorName = String.valueOf(servletRequest.getAttribute(AdminAuthInterceptor.OPERATOR_NAME_ATTRIBUTE));
        return ApiResponse.success(adminBusinessService.createNews(request, operatorName));
    }
    @PutMapping("/news/{id}")
talent-card-server/src/main/java/com/talentcard/server/business/admin/AdminBusinessService.java
@@ -103,7 +103,7 @@
    }
    @Transactional
    public Map<String, Object> createNews(NewsArticleRequest request) {
    public Map<String, Object> createNews(NewsArticleRequest request, String operatorName) {
        int status = defaultNewsStatus(request.status());
        jdbcTemplate.update("""
                insert into news_article(title, summary, cover_url, source, author, content, is_top, sort_no, publish_time, status)
@@ -112,8 +112,8 @@
                request.title().trim(),
                blankToNull(request.summary()),
                blankToNull(request.coverUrl()),
                blankToNull(request.source()),
                blankToNull(request.author()),
                null,
                blankToNull(operatorName),
                sanitizeNewsContent(request.content()),
                Boolean.TRUE.equals(request.isTop()) ? 1 : 0,
                request.sortNo() == null ? 0 : request.sortNo(),
@@ -128,15 +128,13 @@
        int status = defaultNewsStatus(request.status());
        int updated = jdbcTemplate.update("""
                update news_article
                set title = ?, summary = ?, cover_url = ?, source = ?, author = ?, content = ?, is_top = ?, sort_no = ?,
                set title = ?, summary = ?, cover_url = ?, content = ?, is_top = ?, sort_no = ?,
                    status = ?, publish_time = case when ? = 1 then coalesce(publish_time, now()) else publish_time end
                where deleted = 0 and id = ?
                """,
                request.title().trim(),
                blankToNull(request.summary()),
                blankToNull(request.coverUrl()),
                blankToNull(request.source()),
                blankToNull(request.author()),
                sanitizeNewsContent(request.content()),
                Boolean.TRUE.equals(request.isTop()) ? 1 : 0,
                request.sortNo() == null ? 0 : request.sortNo(),