Log sheet control.

pull/167/head^2
ruibaby 2019-05-17 09:43:36 +08:00 committed by John Niang
parent 19f8b588fa
commit 5cf659501c
4 changed files with 50 additions and 13 deletions

View File

@ -48,8 +48,9 @@ public class SheetController {
@PostMapping @PostMapping
@ApiOperation("Creates a sheet") @ApiOperation("Creates a sheet")
public BasePostDetailDTO createBy(@RequestBody @Valid SheetParam sheetParam) { public BasePostDetailDTO createBy(@RequestBody @Valid SheetParam sheetParam,
Sheet sheet = sheetService.createBy(sheetParam.convertTo()); @RequestParam(value = "autoSave", required = false, defaultValue = "false") Boolean autoSave) {
Sheet sheet = sheetService.createBy(sheetParam.convertTo(), autoSave);
return sheetService.convertToDetail(sheet); return sheetService.convertToDetail(sheet);
} }
@ -57,12 +58,13 @@ public class SheetController {
@ApiOperation("Updates a sheet") @ApiOperation("Updates a sheet")
public BasePostDetailDTO updateBy( public BasePostDetailDTO updateBy(
@PathVariable("sheetId") Integer sheetId, @PathVariable("sheetId") Integer sheetId,
@RequestBody @Valid SheetParam sheetParam) { @RequestBody @Valid SheetParam sheetParam,
@RequestParam(value = "autoSave", required = false, defaultValue = "false") Boolean autoSave) {
Sheet sheetToUpdate = sheetService.getById(sheetId); Sheet sheetToUpdate = sheetService.getById(sheetId);
sheetParam.update(sheetToUpdate); sheetParam.update(sheetToUpdate);
Sheet sheet = sheetService.updateBy(sheetToUpdate); Sheet sheet = sheetService.updateBy(sheetToUpdate, autoSave);
return sheetService.convertToDetail(sheet); return sheetService.convertToDetail(sheet);
} }

View File

@ -15,7 +15,10 @@ public enum LogType implements ValueEnum<Integer> {
LOGGED_OUT(30), LOGGED_OUT(30),
LOGIN_FAILED(35), LOGIN_FAILED(35),
PASSWORD_UPDATED(40), PASSWORD_UPDATED(40),
PROFILE_UPDATED(45); PROFILE_UPDATED(45),
SHEET_PUBLISHED(50),
SHEET_EDITED(55),
SHEET_DELETED(60);
private final Integer value; private final Integer value;

View File

@ -19,20 +19,29 @@ public interface SheetService extends BasePostService<Sheet> {
* Creates a sheet. * Creates a sheet.
* *
* @param sheet sheet must not be null * @param sheet sheet must not be null
* @param autoSave autoSave
* @return created sheet * @return created sheet
*/ */
@NonNull @NonNull
Sheet createBy(@NonNull Sheet sheet); Sheet createBy(@NonNull Sheet sheet, boolean autoSave);
/** /**
* Updates a sheet. * Updates a sheet.
* *
* @param sheet sheet must not be null * @param sheet sheet must not be null
* @param autoSave autoSave
* @return updated sheet * @return updated sheet
*/ */
@NonNull @NonNull
Sheet updateBy(@NonNull Sheet sheet); Sheet updateBy(@NonNull Sheet sheet, boolean autoSave);
/**
* Gets by url
*
* @param status post status must not be null
* @param url post url must not be blank
* @return sheet
*/
@Override @Override
Sheet getBy(PostStatus status, String url); Sheet getBy(PostStatus status, String url);

View File

@ -5,8 +5,10 @@ import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.Assert; import org.springframework.util.Assert;
import run.halo.app.event.logger.LogEvent;
import run.halo.app.event.post.SheetVisitEvent; import run.halo.app.event.post.SheetVisitEvent;
import run.halo.app.model.entity.Sheet; import run.halo.app.model.entity.Sheet;
import run.halo.app.model.enums.LogType;
import run.halo.app.model.enums.PostStatus; import run.halo.app.model.enums.PostStatus;
import run.halo.app.model.vo.SheetListVO; import run.halo.app.model.vo.SheetListVO;
import run.halo.app.repository.SheetRepository; import run.halo.app.repository.SheetRepository;
@ -45,13 +47,25 @@ public class SheetServiceImpl extends BasePostServiceImpl<Sheet> implements Shee
} }
@Override @Override
public Sheet createBy(Sheet sheet) { public Sheet createBy(Sheet sheet, boolean autoSave) {
return createOrUpdateBy(sheet); Sheet createdSheet = createOrUpdateBy(sheet);
if (!autoSave) {
// Log the creation
LogEvent logEvent = new LogEvent(this, createdSheet.getId().toString(), LogType.SHEET_PUBLISHED, createdSheet.getTitle());
eventPublisher.publishEvent(logEvent);
}
return createdSheet;
} }
@Override @Override
public Sheet updateBy(Sheet sheet) { public Sheet updateBy(Sheet sheet, boolean autoSave) {
return createOrUpdateBy(sheet); Sheet updatedSheet = createOrUpdateBy(sheet);
if (!autoSave) {
// Log the creation
LogEvent logEvent = new LogEvent(this, updatedSheet.getId().toString(), LogType.SHEET_EDITED, updatedSheet.getTitle());
eventPublisher.publishEvent(logEvent);
}
return updatedSheet;
} }
@Override @Override
@ -80,6 +94,15 @@ public class SheetServiceImpl extends BasePostServiceImpl<Sheet> implements Shee
return sheet; return sheet;
} }
@Override
public Sheet removeById(Integer id) {
Sheet sheet = super.removeById(id);
// Log it
eventPublisher.publishEvent(new LogEvent(this, id.toString(), LogType.SHEET_DELETED, sheet.getTitle()));
return sheet;
}
@Override @Override
public Page<SheetListVO> convertToListVo(Page<Sheet> sheetPage) { public Page<SheetListVO> convertToListVo(Page<Sheet> sheetPage) {
Assert.notNull(sheetPage, "Sheet page must not be null"); Assert.notNull(sheetPage, "Sheet page must not be null");