diff --git a/src/main/java/com/jsl/oa/controllers/ProjectDailyController.java b/src/main/java/com/jsl/oa/controllers/ProjectDailyController.java new file mode 100644 index 0000000..9b4ccae --- /dev/null +++ b/src/main/java/com/jsl/oa/controllers/ProjectDailyController.java @@ -0,0 +1,60 @@ +package com.jsl.oa.controllers; + + +import com.jsl.oa.model.vodata.ProjectDailyAddVO; +import com.jsl.oa.services.ProjectDailyService; +import com.jsl.oa.utils.BaseResponse; +import com.jsl.oa.utils.ErrorCode; +import com.jsl.oa.utils.Processing; +import com.jsl.oa.utils.ResultUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.jetbrains.annotations.NotNull; + +import org.springframework.validation.BindingResult; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; + + +/** + * 项目日报(ProjectDaily)表控制层 + * + * @author zrx + * @since 2024-04-18 11:40:52 + */ +@Slf4j +@RestController +@RequiredArgsConstructor +public class ProjectDailyController { + /** + * 服务对象 + */ + + private final ProjectDailyService projectDailyService; + + /** + * 新增日报 + * + * @param projectDailyAddVO 日报添加实体 + * @return 新增结果 + */ + @PostMapping("/daily/add") + public BaseResponse add(@RequestBody @Validated ProjectDailyAddVO projectDailyAddVO, + @NotNull BindingResult bindingResult, + HttpServletRequest request) { + // 判断是否有参数错误 + if (bindingResult.hasErrors()) { + return ResultUtil.error(ErrorCode.PARAMETER_ERROR, Processing.getValidatedErrorList(bindingResult)); + } + + return projectDailyService.addDaily(projectDailyAddVO, request); + } + + + +} + + + diff --git a/src/main/java/com/jsl/oa/dao/ProjectDailyDAO.java b/src/main/java/com/jsl/oa/dao/ProjectDailyDAO.java new file mode 100644 index 0000000..a9264d2 --- /dev/null +++ b/src/main/java/com/jsl/oa/dao/ProjectDailyDAO.java @@ -0,0 +1,38 @@ +package com.jsl.oa.dao; +/* + 张睿相 Java +*/ + +import com.jsl.oa.mapper.ProjectDailyMapper; +import com.jsl.oa.model.dodata.ProjectDailyDO; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + + + +/** + * ProjectDailyDAO + *
+ * 用于处理日报相关的请求, 包括获取日报、添加日报信息、编辑日报信息等 + * + * @author zrx_hhh + * @version v1.0.0 + * @since v1.0.0-SNAPSHOT + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class ProjectDailyDAO { + + private final ProjectDailyMapper projectDailyMapper; + + + public void addProjectDaily(ProjectDailyDO projectDailyDO) { + projectDailyMapper.insert(projectDailyDO); + } + + +} + + diff --git a/src/main/java/com/jsl/oa/mapper/ProjectDailyMapper.java b/src/main/java/com/jsl/oa/mapper/ProjectDailyMapper.java new file mode 100644 index 0000000..0f9ddb6 --- /dev/null +++ b/src/main/java/com/jsl/oa/mapper/ProjectDailyMapper.java @@ -0,0 +1,22 @@ +package com.jsl.oa.mapper; + + +import com.jsl.oa.model.dodata.ProjectDailyDO; +import org.apache.ibatis.annotations.Mapper; + + +/** + * 项目日报(ProjectDaily)表数据库访问层 + * + * @author zrx + * @since 2024-04-18 11:40:56 + */ +@Mapper +public interface ProjectDailyMapper { + + + void insert(ProjectDailyDO projectDailyDO); +} + + + diff --git a/src/main/java/com/jsl/oa/model/dodata/ProjectDailyDO.java b/src/main/java/com/jsl/oa/model/dodata/ProjectDailyDO.java new file mode 100644 index 0000000..4df4917 --- /dev/null +++ b/src/main/java/com/jsl/oa/model/dodata/ProjectDailyDO.java @@ -0,0 +1,55 @@ +package com.jsl.oa.model.dodata; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.Date; + + +/** + * 项目日报(ProjectDaily)实体类 + * + * @author zrx + * @since 2024-04-18 11:40:56 + */ +@Data +@Accessors(chain = true) +public class ProjectDailyDO { + + /** + * 日报主键 自增 + */ + private Long id; + /** + * 用户id + */ + private Long userId; + /** + * 项目id + */ + private Long projectId; + /** + * 日报内容 + */ + private String content; + /** + * 日志发布时间 + */ + private Date dailyTime; + /** + * 创建时间 + */ + private Date createdAt; + /** + * 修改时间 + */ + private Date updatedAt; + /** + * 是否删除 + */ + private Integer isDelete; + +} + + + diff --git a/src/main/java/com/jsl/oa/model/vodata/ProjectDailyAddVO.java b/src/main/java/com/jsl/oa/model/vodata/ProjectDailyAddVO.java new file mode 100644 index 0000000..ab4114e --- /dev/null +++ b/src/main/java/com/jsl/oa/model/vodata/ProjectDailyAddVO.java @@ -0,0 +1,21 @@ +package com.jsl.oa.model.vodata; + + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + + +@Data +public class ProjectDailyAddVO { + + @NotNull(message = "项目id不能为空") + private Long projectId; + + @NotBlank(message = "日报内容不能为空") + private String content; + +} + + diff --git a/src/main/java/com/jsl/oa/model/vodata/ProjectDailyVO.java b/src/main/java/com/jsl/oa/model/vodata/ProjectDailyVO.java new file mode 100644 index 0000000..9bc827e --- /dev/null +++ b/src/main/java/com/jsl/oa/model/vodata/ProjectDailyVO.java @@ -0,0 +1,16 @@ +package com.jsl.oa.model.vodata; +/* + 张睿相 Java +*/ + +/** + * 总体描述 + *

创建时间:2024/4/18 13:50

+ * + * @author 张睿相 + * @since v1.0 + */ +public class ProjectDailyVO { +} + + diff --git a/src/main/java/com/jsl/oa/services/ProjectDailyService.java b/src/main/java/com/jsl/oa/services/ProjectDailyService.java new file mode 100644 index 0000000..b134f71 --- /dev/null +++ b/src/main/java/com/jsl/oa/services/ProjectDailyService.java @@ -0,0 +1,25 @@ +package com.jsl.oa.services; + + + +import com.jsl.oa.model.vodata.ProjectDailyAddVO; +import com.jsl.oa.utils.BaseResponse; + +import javax.servlet.http.HttpServletRequest; + + + +/** + * 项目日报(ProjectDaily)表服务接口 + * + * @author zrx + * @since 2024-04-18 11:40:53 + */ +public interface ProjectDailyService { + + + BaseResponse addDaily(ProjectDailyAddVO projectDailyAddVO, HttpServletRequest request); + +} + + diff --git a/src/main/java/com/jsl/oa/services/impl/ProjectDailyServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/ProjectDailyServiceImpl.java new file mode 100644 index 0000000..591bf7b --- /dev/null +++ b/src/main/java/com/jsl/oa/services/impl/ProjectDailyServiceImpl.java @@ -0,0 +1,73 @@ +package com.jsl.oa.services.impl; +/* + 张睿相 Java +*/ + +import com.jsl.oa.dao.ProjectDAO; +import com.jsl.oa.dao.ProjectDailyDAO; +import com.jsl.oa.exception.BusinessException; +import com.jsl.oa.model.dodata.ProjectDailyDO; +import com.jsl.oa.model.vodata.ProjectDailyAddVO; +import com.jsl.oa.services.ProjectDailyService; +import com.jsl.oa.utils.BaseResponse; +import com.jsl.oa.utils.ErrorCode; +import com.jsl.oa.utils.Processing; +import com.jsl.oa.utils.ResultUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletRequest; +import java.util.Date; + +/** + *

日志服务层实现类

+ *
+ * 用于日志服务层的实现类 + * + * @author xiao_lfeng | 176yunxuan | xiangZr-hhh + * @version v1.1.0 + * @see com.jsl.oa.services.ProjectService + * @since v1.1.0 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class ProjectDailyServiceImpl implements ProjectDailyService { + + private final ProjectDAO projectDAO; + + private final ProjectDailyDAO projectDailyDAO; + + + @Override + public BaseResponse addDaily(ProjectDailyAddVO projectDailyAddVO, HttpServletRequest request) { + +// 获取用户id + Long userId = Processing.getAuthHeaderToUserId(request); +// 从请求体中获取项目id + Long projectId = projectDailyAddVO.getProjectId(); +// 检查项目是否存在 + if (!projectDAO.isExistProjectById(projectId)) { + throw new BusinessException(ErrorCode.PROJECT_NOT_EXIST); + } + +// 赋值数据库表实体类相关属性 + ProjectDailyDO projectDailyDO = new ProjectDailyDO(); + Processing.copyProperties(projectDailyAddVO, projectDailyDO); + projectDailyDO.setUserId(userId) + .setDailyTime(new Date()); + +// 向数据库添加数据 + projectDailyDAO.addProjectDaily(projectDailyDO); + + return ResultUtil.success(); + } + + + + + +} + + diff --git a/src/main/resources/com/jsl/oa/mapper/ProjectDailyMapper.xml b/src/main/resources/com/jsl/oa/mapper/ProjectDailyMapper.xml new file mode 100644 index 0000000..eb7b246 --- /dev/null +++ b/src/main/resources/com/jsl/oa/mapper/ProjectDailyMapper.xml @@ -0,0 +1,28 @@ + + + + + + + + insert into oa_project_daily + + user_id, + project_id, + content, + daily_time, + created_at + + values + + #{userId}, + #{projectId}, + #{content}, + #{dailyTime}, + NOW() + + + + \ No newline at end of file