feat: 实现 StoryItemService 业务逻辑
All checks were successful
test/timeline-server/pipeline/head This commit looks good
All checks were successful
test/timeline-server/pipeline/head This commit looks good
1. 在 StoryItemServiceImpl 中实现了分页查询、创建、更新、删除及详情获取等核心业务逻辑。 2. 重构了 StoryItem 实体类,将 time 字段更名为 storyItemTime。 3. 让 StoryItemVo 继承 StoryItem 以减少代码冗余,并支持更丰富的查询参数。 4. 引入了事务管理和分页插件支持。
This commit is contained in:
@@ -10,7 +10,7 @@ public class StoryItem {
|
|||||||
private String instanceId;
|
private String instanceId;
|
||||||
private String storyInstanceId;
|
private String storyInstanceId;
|
||||||
private String content;
|
private String content;
|
||||||
private LocalDateTime time;
|
private LocalDateTime storyItemTime;
|
||||||
private String type;
|
private String type;
|
||||||
private String status;
|
private String status;
|
||||||
private String cover;
|
private String cover;
|
||||||
|
|||||||
@@ -1,74 +1,110 @@
|
|||||||
package com.timeline.story.service.impl;
|
package com.timeline.story.service.impl;
|
||||||
|
|
||||||
|
import com.github.pagehelper.PageHelper;
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
|
import com.timeline.common.utils.IdUtils;
|
||||||
|
import com.timeline.common.utils.UserContextUtils;
|
||||||
|
import com.timeline.story.dao.StoryItemMapper;
|
||||||
import com.timeline.story.entity.StoryItem;
|
import com.timeline.story.entity.StoryItem;
|
||||||
import com.timeline.story.service.StoryItemService;
|
import com.timeline.story.service.StoryItemService;
|
||||||
import com.timeline.story.vo.StoryItemAddVo;
|
import com.timeline.story.vo.StoryItemAddVo;
|
||||||
import com.timeline.story.vo.StoryItemShareVo;
|
import com.timeline.story.vo.StoryItemShareVo;
|
||||||
import com.timeline.story.vo.StoryItemVo;
|
import com.timeline.story.vo.StoryItemVo;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
public class StoryItemServiceImpl implements StoryItemService {
|
public class StoryItemServiceImpl implements StoryItemService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private StoryItemMapper storyItemMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String, Object> getItemsByMasterItem(StoryItemVo storyItemVo) {
|
public Map<String, Object> getItemsByMasterItem(StoryItemVo storyItemVo) {
|
||||||
// TODO: Implement this method
|
PageHelper.startPage(storyItemVo.getCurrent() != null ? storyItemVo.getCurrent() : 1,
|
||||||
|
storyItemVo.getPageSize() != null ? storyItemVo.getPageSize() : 10);
|
||||||
|
Map<String, Object> params = new HashMap<>();
|
||||||
|
params.put("storyInstanceId", storyItemVo.getStoryInstanceId());
|
||||||
|
|
||||||
|
List<StoryItem> list = storyItemMapper.selectStoryItemByStoryInstanceId(params);
|
||||||
|
PageInfo<StoryItem> pageInfo = new PageInfo<>(list);
|
||||||
|
|
||||||
Map<String, Object> result = new HashMap<>();
|
Map<String, Object> result = new HashMap<>();
|
||||||
result.put("list", Collections.emptyList());
|
result.put("list", pageInfo.getList());
|
||||||
result.put("total", 0);
|
result.put("total", pageInfo.getTotal());
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void createStoryItem(StoryItemAddVo storyItemAddVo, List<MultipartFile> images) {
|
public void createStoryItem(StoryItemAddVo storyItemAddVo, List<MultipartFile> images) {
|
||||||
// TODO: Implement this method
|
storyItemAddVo.setInstanceId(IdUtils.randomUuid());
|
||||||
|
storyItemAddVo.setCreateId(UserContextUtils.getCurrentUserId());
|
||||||
|
storyItemAddVo.setCreateTime(LocalDateTime.now());
|
||||||
|
storyItemAddVo.setUpdateTime(LocalDateTime.now());
|
||||||
|
storyItemAddVo.setIsDelete(0);
|
||||||
|
if (storyItemAddVo.getStoryItemTime() == null) {
|
||||||
|
storyItemAddVo.setStoryItemTime(LocalDateTime.now());
|
||||||
|
}
|
||||||
|
|
||||||
|
storyItemMapper.insert(storyItemAddVo);
|
||||||
|
// Images handling to be implemented
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void updateItem(StoryItemAddVo storyItemAddVo, List<MultipartFile> images) {
|
public void updateItem(StoryItemAddVo storyItemAddVo, List<MultipartFile> images) {
|
||||||
// TODO: Implement this method
|
storyItemAddVo.setUpdateId(UserContextUtils.getCurrentUserId());
|
||||||
|
storyItemAddVo.setUpdateTime(LocalDateTime.now());
|
||||||
|
storyItemMapper.update(storyItemAddVo);
|
||||||
|
// Images handling to be implemented
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void deleteItem(String itemId) {
|
public void deleteItem(String itemId) {
|
||||||
// TODO: Implement this method
|
storyItemMapper.deleteByItemId(itemId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public StoryItem getItemById(String itemId) {
|
public StoryItem getItemById(String itemId) {
|
||||||
// TODO: Implement this method
|
return storyItemMapper.selectById(itemId);
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getStoryItemImages(String itemId) {
|
public List<String> getStoryItemImages(String itemId) {
|
||||||
// TODO: Implement this method
|
return storyItemMapper.selectImagesByItemId(itemId);
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Integer getStoryItemCount(String storyInstanceId) {
|
public Integer getStoryItemCount(String storyInstanceId) {
|
||||||
// TODO: Implement this method
|
return storyItemMapper.countByStoryId(storyInstanceId);
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public StoryItemShareVo getItemByShareId(String shareId) {
|
public StoryItemShareVo getItemByShareId(String shareId) {
|
||||||
// TODO: Implement this method
|
return storyItemMapper.selectByShareIdWithAuthor(shareId);
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String, Object> searchItems(String keyword, Integer pageNum, Integer pageSize) {
|
public Map<String, Object> searchItems(String keyword, Integer pageNum, Integer pageSize) {
|
||||||
// TODO: Implement this method
|
PageHelper.startPage(pageNum, pageSize);
|
||||||
|
List<StoryItemVo> list = storyItemMapper.searchItems(keyword);
|
||||||
|
PageInfo<StoryItemVo> pageInfo = new PageInfo<>(list);
|
||||||
|
|
||||||
Map<String, Object> result = new HashMap<>();
|
Map<String, Object> result = new HashMap<>();
|
||||||
result.put("list", Collections.emptyList());
|
result.put("list", pageInfo.getList());
|
||||||
result.put("total", 0);
|
result.put("total", pageInfo.getTotal());
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
package com.timeline.story.vo;
|
package com.timeline.story.vo;
|
||||||
|
|
||||||
|
import com.timeline.story.entity.StoryItem;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class StoryItemVo {
|
@EqualsAndHashCode(callSuper = true)
|
||||||
private String storyInstanceId;
|
public class StoryItemVo extends StoryItem {
|
||||||
private Integer current;
|
private Integer current;
|
||||||
private Integer pageSize;
|
private Integer pageSize;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user