feat: support markdown for journal.

pull/435/head
ruibaby 2019-12-20 22:06:03 +08:00
parent f60938ec87
commit 6941cd4c32
8 changed files with 41 additions and 11 deletions

View File

@ -62,7 +62,8 @@ public class JournalController {
@RequestBody @Valid JournalParam journalParam) { @RequestBody @Valid JournalParam journalParam) {
Journal journal = journalService.getById(id); Journal journal = journalService.getById(id);
journalParam.update(journal); journalParam.update(journal);
return new JournalDTO().convertFrom(journalService.update(journal)); Journal updatedJournal = journalService.updateBy(journal);
return journalService.convertTo(updatedJournal);
} }
@DeleteMapping("{journalId:\\d+}") @DeleteMapping("{journalId:\\d+}")

View File

@ -11,13 +11,16 @@ import java.util.Date;
* Journal dto. * Journal dto.
* *
* @author johnniang * @author johnniang
* @date 19-4-24 * @author ryanwang
* @date 2019-04-24
*/ */
@Data @Data
public class JournalDTO implements OutputConverter<JournalDTO, Journal> { public class JournalDTO implements OutputConverter<JournalDTO, Journal> {
private Integer id; private Integer id;
private String sourceContent;
private String content; private String content;
private Long likes; private Long likes;

View File

@ -12,7 +12,7 @@ import javax.persistence.*;
* *
* @author johnniang * @author johnniang
* @author ryanwang * @author ryanwang
* @date 3/22/19 * @date 2019-03-22
*/ */
@Data @Data
@Entity @Entity
@ -25,7 +25,10 @@ public class Journal extends BaseEntity {
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id; private Integer id;
@Column(name = "content", columnDefinition = "varchar(1023) not null") @Column(name = "source_content", columnDefinition = "varchar(1023) not null default ''")
private String sourceContent;
@Column(name = "content", columnDefinition = "text not null")
private String content; private String content;
@Column(name = "likes", columnDefinition = "bigint default 0") @Column(name = "likes", columnDefinition = "bigint default 0")
@ -44,7 +47,6 @@ public class Journal extends BaseEntity {
likes = 0L; likes = 0L;
} }
if (type == null) { if (type == null) {
type = JournalType.PUBLIC; type = JournalType.PUBLIC;
} }

View File

@ -13,14 +13,14 @@ import javax.validation.constraints.Size;
* *
* @author johnniang * @author johnniang
* @author ryanwang * @author ryanwang
* @date 19-4-25 * @date 2019-4-25
*/ */
@Data @Data
public class JournalParam implements InputConverter<Journal> { public class JournalParam implements InputConverter<Journal> {
@NotBlank(message = "内容不能为空") @NotBlank(message = "内容不能为空")
@Size(max = 511, message = "内容的字符长度不能超过 {max}") @Size(max = 511, message = "内容的字符长度不能超过 {max}")
private String content; private String sourceContent;
private JournalType type = JournalType.PUBLIC; private JournalType type = JournalType.PUBLIC;
} }

View File

@ -32,6 +32,14 @@ public interface JournalService extends CrudService<Journal, Integer> {
@NonNull @NonNull
Journal createBy(@NonNull JournalParam journalParam); Journal createBy(@NonNull JournalParam journalParam);
/**
* Updates a journal.
*
* @param journal journal must not be null
* @return updated journal
*/
Journal updateBy(@NonNull Journal journal);
/** /**
* Gets latest journals. * Gets latest journals.
* *

View File

@ -21,6 +21,7 @@ import run.halo.app.repository.JournalRepository;
import run.halo.app.service.JournalCommentService; import run.halo.app.service.JournalCommentService;
import run.halo.app.service.JournalService; import run.halo.app.service.JournalService;
import run.halo.app.service.base.AbstractCrudService; import run.halo.app.service.base.AbstractCrudService;
import run.halo.app.utils.MarkdownUtils;
import run.halo.app.utils.ServiceUtils; import run.halo.app.utils.ServiceUtils;
import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Predicate;
@ -53,7 +54,19 @@ public class JournalServiceImpl extends AbstractCrudService<Journal, Integer> im
public Journal createBy(JournalParam journalParam) { public Journal createBy(JournalParam journalParam) {
Assert.notNull(journalParam, "Journal param must not be null"); Assert.notNull(journalParam, "Journal param must not be null");
return create(journalParam.convertTo()); Journal journal = journalParam.convertTo();
journal.setContent(MarkdownUtils.renderHtml(journal.getSourceContent()));
return create(journal);
}
@Override
public Journal updateBy(Journal journal) {
Assert.notNull(journal, "Journal must not be null");
journal.setContent(MarkdownUtils.renderHtml(journal.getSourceContent()));
return update(journal);
} }
@Override @Override

View File

@ -253,9 +253,6 @@ public class PostServiceImpl extends BasePostServiceImpl<Post> implements PostSe
public PostDetailVO importMarkdown(String markdown, String filename) { public PostDetailVO importMarkdown(String markdown, String filename) {
Assert.notNull(markdown, "Markdown document must not be null"); Assert.notNull(markdown, "Markdown document must not be null");
// Render markdown to html document.
String content = MarkdownUtils.renderHtml(markdown);
// Gets frontMatter // Gets frontMatter
Map<String, List<String>> frontMatter = MarkdownUtils.getFrontMatter(markdown); Map<String, List<String>> frontMatter = MarkdownUtils.getFrontMatter(markdown);

View File

@ -0,0 +1,6 @@
-- Migrate 1.2.0-beta.1 to 1.2.0-beta.2
-- Migrate journals Table
alter table journals modify content text not null;
update journals set `source_content`=`content`