feat:新增日志模块日志添加接口

This commit is contained in:
xiangZr-hhh 2024-04-18 15:01:05 +08:00
parent 71bd92d18e
commit 121b87c683
9 changed files with 338 additions and 0 deletions

View File

@ -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);
}
}

View File

@ -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
* <hr/>
* 用于处理日报相关的请求, 包括获取日报添加日报信息编辑日报信息等
*
* @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);
}
}

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -0,0 +1,16 @@
package com.jsl.oa.model.vodata;
/*
张睿相 Java
*/
/**
* 总体描述
* <p>创建时间2024/4/18 13:50</p>
*
* @author 张睿相
* @since v1.0
*/
public class ProjectDailyVO {
}

View File

@ -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);
}

View File

@ -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;
/**
* <h1>日志服务层实现类</h1>
* <hr/>
* 用于日志服务层的实现类
*
* @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();
}
}

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jsl.oa.mapper.ProjectDailyMapper">
<!-- 插入方法的 SQL 语句 -->
<insert id="insert" parameterType="com.jsl.oa.model.dodata.ProjectDailyDO">
insert into oa_project_daily
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="userId != null">user_id,</if>
<if test="projectId != null">project_id,</if>
<if test="content != null">content,</if>
<if test="dailyTime != null">daily_time,</if>
created_at
</trim>
values
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="userId != null">#{userId},</if>
<if test="projectId != null">#{projectId},</if>
<if test="content != null">#{content},</if>
<if test="dailyTime != null">#{dailyTime},</if>
NOW()
</trim>
</insert>
</mapper>