fix(admin): 自动记录资讯发布人 (bug #24040)
| | |
| | | const editorRef = ref<HTMLElement>() |
| | | const createdAt = ref('-') |
| | | const updatedAt = ref('-') |
| | | const author = ref('-') |
| | | |
| | | const toolbarItems = ['H', 'B', 'I', 'U', 'S', '笔', '刷', '链', '列', '齐', '引', '表', '图', '视'] |
| | | |
| | |
| | | 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() |
| | |
| | | <div class="news-meta-grid"> |
| | | <div> |
| | | <span>发布人</span> |
| | | <strong>{{ form.source || '-' }}</strong> |
| | | <strong>{{ author }}</strong> |
| | | </div> |
| | | <div> |
| | | <span>发布时间</span> |
| | |
| | | </div> |
| | | <div> |
| | | <span>修改人</span> |
| | | <strong>{{ form.source || '-' }}</strong> |
| | | <strong>{{ author }}</strong> |
| | | </div> |
| | | <div> |
| | | <span>修改时间</span> |
| | |
| | | |
| | | <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="资讯内容"> |
| | |
| | | const form = reactive<NewsForm>({ |
| | | title: '', |
| | | summary: '', |
| | | source: '东区发布', |
| | | source: '', |
| | | content: '', |
| | | pinned: true, |
| | | coverUrl: '', |
| | |
| | | |
| | | <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="资讯内容"> |
| | |
| | | |
| | | @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}") |
| | |
| | | } |
| | | |
| | | @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) |
| | |
| | | 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(), |
| | |
| | | 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(), |