mirror of https://github.com/halo-dev/halo
Enhance ApiJournalController
parent
c48970a034
commit
06e5c18cc7
|
@ -2,6 +2,7 @@ package cc.ryanc.halo.model.params;
|
|||
|
||||
import cc.ryanc.halo.model.domain.Post;
|
||||
import cc.ryanc.halo.model.dto.base.AbstractInputConverter;
|
||||
import cc.ryanc.halo.model.enums.PostTypeEnum;
|
||||
import cc.ryanc.halo.utils.MarkdownUtils;
|
||||
import lombok.Data;
|
||||
|
||||
|
@ -31,9 +32,12 @@ public class JournalParam extends AbstractInputConverter<Post> {
|
|||
|
||||
@Override
|
||||
public Post convertTo() {
|
||||
Post post = super.convertTo();
|
||||
Post post = new Post();
|
||||
post.setPostTitle(title);
|
||||
post.setPostContentMd(content);
|
||||
post.setPostContent(MarkdownUtils.renderMarkdown(content));
|
||||
post.setPostSource(source);
|
||||
post.setPostType(PostTypeEnum.POST_TYPE_JOURNAL.getDesc());
|
||||
return post;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -295,6 +295,10 @@ public class HaloUtils {
|
|||
* @param password password
|
||||
*/
|
||||
public static void configMail(String smtpHost, String userName, String password) {
|
||||
Assert.hasText(smtpHost, "SMTP host config must not be blank");
|
||||
Assert.hasText(userName, "Email username must not be blank");
|
||||
Assert.hasText(password, "Email password must not be blank");
|
||||
|
||||
final Properties properties = OhMyEmail.defaultConfig(false);
|
||||
properties.setProperty("mail.smtp.host", smtpHost);
|
||||
OhMyEmail.config(properties, userName, password);
|
||||
|
|
|
@ -240,6 +240,7 @@ public class AdminController extends BaseController {
|
|||
session.setAttribute(RESET_PASSWORD_SESSION_KEY, code);
|
||||
return JsonResult.success("邮件发送成功,请登录您的邮箱进行下一步操作");
|
||||
} catch (Exception e) {
|
||||
log.error("Failed to send password email", e);
|
||||
return JsonResult.fail("邮件发送失败,请确定已经配置好了发信服务器信息");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,15 +1,10 @@
|
|||
package cc.ryanc.halo.web.controller.api;
|
||||
|
||||
import cc.ryanc.halo.model.domain.Post;
|
||||
import cc.ryanc.halo.model.enums.PostTypeEnum;
|
||||
import cc.ryanc.halo.model.params.JournalParam;
|
||||
import cc.ryanc.halo.model.support.JsonResult;
|
||||
import cc.ryanc.halo.service.PostService;
|
||||
import cc.ryanc.halo.utils.MarkdownUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* <pre>
|
||||
|
@ -20,11 +15,14 @@ import org.springframework.web.bind.annotation.RestController;
|
|||
* @date : 2019/03/04
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping(value = "/api/journal")
|
||||
@RequestMapping(value = "/api/journals")
|
||||
public class ApiJournalController {
|
||||
|
||||
@Autowired
|
||||
private PostService postService;
|
||||
private final PostService postService;
|
||||
|
||||
public ApiJournalController(PostService postService) {
|
||||
this.postService = postService;
|
||||
}
|
||||
|
||||
/**
|
||||
* 发布日志
|
||||
|
@ -32,13 +30,13 @@ public class ApiJournalController {
|
|||
* @param journalParam journalParam
|
||||
* @return JsonResult
|
||||
*/
|
||||
@PostMapping(value = "/save")
|
||||
public JsonResult save(JournalParam journalParam) {
|
||||
Post post = new Post();
|
||||
post.setPostContentMd(MarkdownUtils.renderMarkdown(journalParam.getContent()));
|
||||
post.setPostSource(journalParam.getSource());
|
||||
post.setPostType(PostTypeEnum.POST_TYPE_JOURNAL.getDesc());
|
||||
post = postService.create(post);
|
||||
return JsonResult.success("ok");
|
||||
@PostMapping
|
||||
@ResponseStatus(HttpStatus.CREATED)
|
||||
public Post save(@RequestBody JournalParam journalParam) {
|
||||
// TODO need to validate token
|
||||
|
||||
Post post = journalParam.convertTo();
|
||||
|
||||
return postService.create(post);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,7 +8,9 @@ import cc.ryanc.halo.utils.ValidationUtils;
|
|||
import org.springframework.dao.DataIntegrityViolationException;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.http.converter.HttpMessageNotReadableException;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.web.HttpRequestMethodNotSupportedException;
|
||||
import org.springframework.web.bind.MethodArgumentNotValidException;
|
||||
import org.springframework.web.bind.MissingServletRequestParameterException;
|
||||
import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||
|
@ -69,6 +71,23 @@ public class ControllerExceptionHandler {
|
|||
return jsonResult;
|
||||
}
|
||||
|
||||
@ExceptionHandler(HttpRequestMethodNotSupportedException.class)
|
||||
@ResponseStatus(HttpStatus.BAD_REQUEST)
|
||||
public JsonResult handleHttpRequestMethodNotSupportedException(HttpRequestMethodNotSupportedException e) {
|
||||
JsonResult jsonResult = handleBaseException(e);
|
||||
jsonResult.setCode(HttpStatus.BAD_REQUEST.value());
|
||||
return jsonResult;
|
||||
}
|
||||
|
||||
@ExceptionHandler(HttpMessageNotReadableException.class)
|
||||
@ResponseStatus(HttpStatus.BAD_REQUEST)
|
||||
public JsonResult handleHttpMessageNotReadableException(HttpMessageNotReadableException e) {
|
||||
JsonResult jsonResult = handleBaseException(e);
|
||||
jsonResult.setCode(HttpStatus.BAD_REQUEST.value());
|
||||
jsonResult.setMsg("Required request body is missing");
|
||||
return jsonResult;
|
||||
}
|
||||
|
||||
@ExceptionHandler(NoHandlerFoundException.class)
|
||||
@ResponseStatus(HttpStatus.BAD_GATEWAY)
|
||||
public JsonResult handleNoHandlerFoundException(NoHandlerFoundException e) {
|
||||
|
|
|
@ -30,6 +30,9 @@ public class BeanUtilsTest {
|
|||
assertEquals(a.getB(), b.getB());
|
||||
assertNull(b.getC());
|
||||
|
||||
TestD d = new TestD(a);
|
||||
TestE e = BeanUtils.transformFrom(d, TestE.class);
|
||||
assertEquals(d.getA().getA(), e.getA().getA());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -95,4 +98,17 @@ public class BeanUtilsTest {
|
|||
private Integer b;
|
||||
}
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
static class TestD {
|
||||
private TestA a;
|
||||
}
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
static class TestE {
|
||||
private TestA a;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue