diff --git a/src/main/java/com/example/newgroupshell/common/Constants.java b/src/main/java/com/example/newgroupshell/common/Constants.java new file mode 100644 index 0000000000000000000000000000000000000000..2d1b056d76177e12d3171e0c27431c7c6750c21d --- /dev/null +++ b/src/main/java/com/example/newgroupshell/common/Constants.java @@ -0,0 +1,7 @@ +package com.example.newgroupshell.common; + +//common包放置枚举与常量等通用数据类型 + +public interface Constants { + String USER_DEFAULT_PASSWORD = "123456"; +} diff --git a/src/main/java/com/example/newgroupshell/common/enums/TaskStatusEnum.java b/src/main/java/com/example/newgroupshell/common/enums/TaskStatusEnum.java new file mode 100644 index 0000000000000000000000000000000000000000..06cf357b35ebdee9331eb5ab8e51924f547b3f27 --- /dev/null +++ b/src/main/java/com/example/newgroupshell/common/enums/TaskStatusEnum.java @@ -0,0 +1,8 @@ +package com.example.newgroupshell.common.enums; + +public enum TaskStatusEnum { + PENDING, //待处理 + IN_PROGRESS, //进行中 + COMPLETED, //已完成 + DELAYED //已延期 +} diff --git a/src/main/java/com/example/newgroupshell/mapper/TaskMapper.java b/src/main/java/com/example/newgroupshell/mapper/TaskMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..e1e1744c794e2a1f6c695becf8612d6acd945cbf --- /dev/null +++ b/src/main/java/com/example/newgroupshell/mapper/TaskMapper.java @@ -0,0 +1,23 @@ +package com.example.newgroupshell.mapper; + + +import com.example.newgroupshell.common.enums.TaskStatusEnum; +import com.example.newgroupshell.pojo.Task; +import org.apache.ibatis.annotations.*; + +import java.util.List; + +@Mapper +public interface TaskMapper { + int insertTask(Task task); + + int updateTaskById(Task task); + + int deleteTaskById(@Param("tid") Integer tid); + + List findTasksByAssigneeId(@Param("assigneeId") Integer assigneeId); + + List findTasksByCreatorId(@Param("creatorId") Integer creatorId); + + List findTasksByStatus(@Param("status") TaskStatusEnum status); +} \ No newline at end of file diff --git a/src/main/java/com/example/newgroupshell/pojo/Task.java b/src/main/java/com/example/newgroupshell/pojo/Task.java new file mode 100644 index 0000000000000000000000000000000000000000..38244cc28e7715ffc4178bbf74351cf0311329be --- /dev/null +++ b/src/main/java/com/example/newgroupshell/pojo/Task.java @@ -0,0 +1,76 @@ +package com.example.newgroupshell.pojo; + +import com.example.newgroupshell.common.enums.TaskStatusEnum; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.ToString; + +import java.time.LocalDateTime; + +/** + * Task class represents a task with its attributes and methods. + * + * @author Eric + * @version 1.0 + */ +@Data +@ToString +@NoArgsConstructor +@AllArgsConstructor +public class Task { + /** + * The unique identifier of the task. + */ + private Integer tid; + + /** + * The title of the task. + */ + private String title; + + /** + * The description of the task. + */ + private String description; + + /** + * The time when the task was created. + */ + private LocalDateTime createdTime; + + /** + * The time when the task was last updated. + */ + private LocalDateTime updatedTime; + + /** + * The time when the task is scheduled to start. + */ + private LocalDateTime startTime; + + /** + * The deadline for the task. + */ + private LocalDateTime deadline; //TODO:deadline必须比startTime迟 + + /** + * The ID of the assignee responsible for the task. + */ + private Integer assigneeId; + + /** + * The ID of the creator of the task. + */ + private Integer creatorId; + + /** + * The priority level of the task. + */ + private Integer priority; + + /** + * The status of the task. + */ + private TaskStatusEnum status; +} \ No newline at end of file diff --git a/src/main/java/com/example/newgroupshell/service/TaskService.java b/src/main/java/com/example/newgroupshell/service/TaskService.java new file mode 100644 index 0000000000000000000000000000000000000000..f38c31fdede77541d1c181590ea2f435ed554be4 --- /dev/null +++ b/src/main/java/com/example/newgroupshell/service/TaskService.java @@ -0,0 +1,20 @@ +package com.example.newgroupshell.service; + +import com.example.newgroupshell.common.enums.TaskStatusEnum; +import com.example.newgroupshell.pojo.Task; + +import java.util.List; + +public interface TaskService { + Task createTask(Task task); + + Task updateTask(Task task); + + boolean deleteTask(Integer taskId); + + List listTasksByCreator(Integer creatorId); + + List listTasksByAssignee(Integer assigneeId); + + List listTasksByStatus(TaskStatusEnum status); +} diff --git a/src/main/java/com/example/newgroupshell/service/impl/TaskServiceImpl.java b/src/main/java/com/example/newgroupshell/service/impl/TaskServiceImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..a59e99bdfcd902ed1d26adf91fa0d922ad94e46a --- /dev/null +++ b/src/main/java/com/example/newgroupshell/service/impl/TaskServiceImpl.java @@ -0,0 +1,52 @@ +package com.example.newgroupshell.service.impl; + +import com.example.newgroupshell.common.enums.TaskStatusEnum; +import com.example.newgroupshell.mapper.TaskMapper; +import com.example.newgroupshell.pojo.Task; +import com.example.newgroupshell.service.TaskService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; +import java.util.List; + +@Service +public class TaskServiceImpl implements TaskService { + @Autowired + private TaskMapper taskMapper; + + @Override + public Task createTask(Task task) { + task.setCreatedTime(LocalDateTime.now()); + task.setUpdatedTime(LocalDateTime.now()); + taskMapper.insertTask(task); + return task; + } + + @Override + public Task updateTask(Task task) { + task.setUpdatedTime(LocalDateTime.now()); + taskMapper.updateTaskById(task); + return task; + } + + @Override + public boolean deleteTask(Integer taskId) { + return taskMapper.deleteTaskById(taskId) > 0; + } + + @Override + public List listTasksByCreator(Integer creatorId) { + return taskMapper.findTasksByCreatorId(creatorId); + } + + @Override + public List listTasksByAssignee(Integer assigneeId) { + return taskMapper.findTasksByAssigneeId(assigneeId); + } + + @Override + public List listTasksByStatus(TaskStatusEnum status) { + return taskMapper.findTasksByStatus(status); + } +} diff --git a/src/main/resources/mapper/TaskMapper.xml b/src/main/resources/mapper/TaskMapper.xml new file mode 100644 index 0000000000000000000000000000000000000000..70c68263b317e06ddeb1611225513aefaee2f326 --- /dev/null +++ b/src/main/resources/mapper/TaskMapper.xml @@ -0,0 +1,106 @@ + + + + + + tid, title, description,create_time, update_time,start_time, deadline, assignee_id, creator_id, priority, status + + + + INSERT INTO tasks + + tid, + title, + description, + create_time, + update_time, + start_time, + deadline, + assignee_id, + creator_id, + priority, + status, + + + #{tid}, + #{title}, + #{description}, + #{createdTime}, + #{updatedTime}, + #{startTime}, + #{deadline}, + #{assigneeId}, + #{creatorId}, + #{priority}, + #{status}, + + + + + + UPDATE tasks + + + title = #{title}, + + + description = #{description}, + + + create_time = #{createdTime}, + + + update_time = #{updatedTime}, + + + start_time = #{startTime}, + + + deadline = #{deadline}, + + + assignee_id = #{assigneeId}, + + + creator_id = #{creatorId}, + + + priority = #{priority}, + + + status = #{status}, + + + WHERE tid = #{tid} + + + + + DELETE + FROM tasks + WHERE tid = #{tid} + + + + + + + + + + + +