This commit is contained in:
176yunxuan 2024-01-20 11:10:46 +08:00
parent 92e6c2b0a7
commit de13565551
8 changed files with 267 additions and 0 deletions

View File

@ -1,22 +1,69 @@
package com.jsl.oa.controllers; package com.jsl.oa.controllers;
import com.jsl.oa.model.doData.info.ProjectShowDO;
import com.jsl.oa.model.voData.ProjectInfoVO; import com.jsl.oa.model.voData.ProjectInfoVO;
import com.jsl.oa.model.voData.business.info.CarouselVO;
import com.jsl.oa.model.voData.business.info.ProjectShowVO;
import com.jsl.oa.services.ProjectService; import com.jsl.oa.services.ProjectService;
import com.jsl.oa.utils.BaseResponse; import com.jsl.oa.utils.BaseResponse;
import com.jsl.oa.utils.ErrorCode; import com.jsl.oa.utils.ErrorCode;
import com.jsl.oa.utils.Processing; import com.jsl.oa.utils.Processing;
import com.jsl.oa.utils.ResultUtil; import com.jsl.oa.utils.ResultUtil;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull;
import org.springframework.validation.BindingResult; import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
@Slf4j
@RestController @RestController
@RequiredArgsConstructor @RequiredArgsConstructor
public class ProjectController { public class ProjectController {
private final ProjectService projectService; private final ProjectService projectService;
@GetMapping("/project/header/get")
public BaseResponse projectGetHeader(@RequestParam(required = false) Integer id) {
log.info("请求接口[GET]: /project/header/get");
return projectService.getHeader(id);
}
@PostMapping("/project/header/add")
public BaseResponse projectAddHeader(@RequestBody @Validated ProjectShowVO projectShowVO, HttpServletRequest request, @NotNull BindingResult bindingResult) {
log.info("请求接口[POST]: /project/header/add");
// 参数校验
if (bindingResult.hasErrors()) {
log.warn("参数校验失败: {}", Processing.getValidatedErrorList(bindingResult));
return ResultUtil.error(ErrorCode.PARAMETER_ERROR, Processing.getValidatedErrorList(bindingResult));
}
return projectService.addHeader(request, projectShowVO);
}
@PutMapping("/project/header/edit")
public BaseResponse projectEditHeader(@RequestBody @Validated ProjectShowVO projectShowVO,@RequestParam Integer id,HttpServletRequest request,@NotNull BindingResult bindingResult) {
log.info("请求接口[PUT]: /project/header/del");
// 参数校验
if (bindingResult.hasErrors()) {
log.warn("参数校验失败: {}", Processing.getValidatedErrorList(bindingResult));
return ResultUtil.error(ErrorCode.PARAMETER_ERROR, Processing.getValidatedErrorList(bindingResult));
}
if (id == null) {
log.warn("参数校验失败: {}", "id不能为空");
return ResultUtil.error(ErrorCode.PARAMETER_ERROR, "id不能为空");
}
return projectService.editHeader(request, projectShowVO, id);
}
@GetMapping("/project/header/del")
public BaseResponse projectDelHeader(@RequestParam Integer id,HttpServletRequest request) {
log.info("请求接口[GET]: /project/header/del");
return projectService.delHeader(id,request);
}
@PostMapping("/project/add") @PostMapping("/project/add")
public BaseResponse projectAdd(@RequestBody @Validated ProjectInfoVO projectAdd, BindingResult bindingResult){ public BaseResponse projectAdd(@RequestBody @Validated ProjectInfoVO projectAdd, BindingResult bindingResult){
// 判断是否有参数错误 // 判断是否有参数错误

View File

@ -1,11 +1,17 @@
package com.jsl.oa.dao; package com.jsl.oa.dao;
import com.google.gson.Gson;
import com.jsl.oa.mapper.ProjectMapper; import com.jsl.oa.mapper.ProjectMapper;
import com.jsl.oa.model.doData.ProjectCuttingDO; import com.jsl.oa.model.doData.ProjectCuttingDO;
import com.jsl.oa.model.doData.info.CarouselDO;
import com.jsl.oa.model.doData.info.ProjectShowDO;
import com.jsl.oa.model.voData.ProjectInfoVO; import com.jsl.oa.model.voData.ProjectInfoVO;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List; import java.util.List;
@Component @Component
@ -13,6 +19,8 @@ import java.util.List;
public class ProjectDAO { public class ProjectDAO {
private final ProjectMapper projectMapper; private final ProjectMapper projectMapper;
private final Gson gson;
public void projectAdd(ProjectInfoVO projectAdd) { public void projectAdd(ProjectInfoVO projectAdd) {
projectMapper.projectAdd(projectAdd); projectMapper.projectAdd(projectAdd);
@ -35,4 +43,47 @@ public class ProjectDAO {
public void projectAddUserForCutting(Long uid, Long pid) { public void projectAddUserForCutting(Long uid, Long pid) {
projectMapper.projectAddUserInCutting(uid,pid); projectMapper.projectAddUserInCutting(uid,pid);
} }
public ProjectShowDO getHeader() {
String getProjectShowSql = projectMapper.getHeader();
ProjectShowDO getProjectShow = null;
if (!getProjectShowSql.equals("{}")) {
getProjectShow = gson.fromJson(getProjectShowSql, ProjectShowDO.class);
}
if (getProjectShow == null) {
// 初始化
getProjectShow = new ProjectShowDO();
getProjectShow.setOrder("desc");
getProjectShow.setData(new ArrayList<>());
try {
projectMapper.insertProjectShow();
} catch (DuplicateKeyException ignored) {
}
}
// 获取排序
sortProject(getProjectShow);
return getProjectShow;
}
private void sortProject(ProjectShowDO projectShowDO) {
for (int i = 0; i < projectShowDO.getData().size(); i++) {
for (int j = 0; j < projectShowDO.getData().size(); j++) {
if (projectShowDO.getOrder().equals("desc")) {
if (projectShowDO.getData().get(i).getDisplayOrder() > projectShowDO.getData().get(j).getDisplayOrder()) {
Collections.swap(projectShowDO.getData(), i, j);
}
} else {
if (projectShowDO.getData().get(i).getDisplayOrder() < projectShowDO.getData().get(j).getDisplayOrder()) {
Collections.swap(projectShowDO.getData(), i, j);
}
}
}
}
}
public boolean setProjectShow(ProjectShowDO projectShowDO) {
sortProject(projectShowDO);
String setProjectShow = gson.toJson(projectShowDO);
return projectMapper.setProjectShow(setProjectShow);
}
} }

View File

@ -6,6 +6,7 @@ import com.jsl.oa.model.voData.ProjectInfoVO;
import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import java.util.List; import java.util.List;
@ -29,4 +30,13 @@ public interface ProjectMapper {
@Insert("insert into organize_oa.oa_project_user(uid, pid)value (#{uid},#{pid})") @Insert("insert into organize_oa.oa_project_user(uid, pid)value (#{uid},#{pid})")
void projectAddUserInCutting(Long uid, Long pid); void projectAddUserInCutting(Long uid, Long pid);
@Select("select data from organize_oa.oa_config where value='project_show'")
String getHeader();
@Insert("insert into organize_oa.oa_config(value, data, created_at)value ('project_show',null,NOW())")
void insertProjectShow();
@Update("UPDATE organize_oa.oa_config SET data = #{setProjectShow} WHERE value = 'project_show'")
boolean setProjectShow(String setProjectShow);
} }

View File

@ -0,0 +1,25 @@
package com.jsl.oa.model.doData.info;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.List;
@Data
public class ProjectShowDO {
private String order;
private List<com.jsl.oa.model.doData.info.ProjectShowDO.DataDO> data;
@Data
@Accessors(chain = true)
public static class DataDO {
private Integer displayOrder;
private String name;
private Long type;
private Long status;
private Boolean isActive;
private String createdAt;
private String updatedAt;
private String author;
}
}

View File

@ -0,0 +1,12 @@
package com.jsl.oa.model.voData.business.info;
import lombok.Data;
@Data
public class ProjectShowVO {
private Integer displayOrder;
private String name;
private Long type;
private Long status;
private Boolean isActive;
}

View File

@ -1,8 +1,12 @@
package com.jsl.oa.services; package com.jsl.oa.services;
import com.jsl.oa.model.doData.info.ProjectShowDO;
import com.jsl.oa.model.voData.ProjectInfoVO; import com.jsl.oa.model.voData.ProjectInfoVO;
import com.jsl.oa.model.voData.business.info.ProjectShowVO;
import com.jsl.oa.utils.BaseResponse; import com.jsl.oa.utils.BaseResponse;
import javax.servlet.http.HttpServletRequest;
public interface ProjectService { public interface ProjectService {
BaseResponse projectAdd(ProjectInfoVO projectAdd); BaseResponse projectAdd(ProjectInfoVO projectAdd);
@ -11,4 +15,12 @@ public interface ProjectService {
BaseResponse projectGetUserInCutting(Long uid); BaseResponse projectGetUserInCutting(Long uid);
BaseResponse projectAddUserForCutting(Long uid, Long pid); BaseResponse projectAddUserForCutting(Long uid, Long pid);
BaseResponse getHeader(Integer id);
BaseResponse addHeader(HttpServletRequest request, ProjectShowVO projectShowVO);
BaseResponse delHeader(Integer id, HttpServletRequest request);
BaseResponse editHeader(HttpServletRequest request, ProjectShowVO projectShowVO, Integer id);
} }

View File

@ -2,16 +2,27 @@ package com.jsl.oa.services.impl;
import com.jsl.oa.dao.ProjectDAO; import com.jsl.oa.dao.ProjectDAO;
import com.jsl.oa.dao.UserDAO; import com.jsl.oa.dao.UserDAO;
import com.jsl.oa.mapper.RoleMapper;
import com.jsl.oa.model.doData.ProjectCuttingDO; import com.jsl.oa.model.doData.ProjectCuttingDO;
import com.jsl.oa.model.doData.UserDO;
import com.jsl.oa.model.doData.info.CarouselDO;
import com.jsl.oa.model.doData.info.ProjectShowDO;
import com.jsl.oa.model.voData.ProjectInfoVO; import com.jsl.oa.model.voData.ProjectInfoVO;
import com.jsl.oa.model.voData.business.info.ProjectShowVO;
import com.jsl.oa.services.ProjectService; import com.jsl.oa.services.ProjectService;
import com.jsl.oa.services.UserService; import com.jsl.oa.services.UserService;
import com.jsl.oa.utils.BaseResponse; import com.jsl.oa.utils.BaseResponse;
import com.jsl.oa.utils.ErrorCode; import com.jsl.oa.utils.ErrorCode;
import com.jsl.oa.utils.Processing;
import com.jsl.oa.utils.ResultUtil; import com.jsl.oa.utils.ResultUtil;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import javax.servlet.http.HttpServletRequest;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List; import java.util.List;
@Service @Service
@ -20,6 +31,7 @@ public class ProjectServiceImpl implements ProjectService {
private final ProjectDAO projectDAO; private final ProjectDAO projectDAO;
private final UserDAO userDAO; private final UserDAO userDAO;
private final RoleMapper roleMapper;
@Override @Override
public BaseResponse projectAdd(ProjectInfoVO projectAdd) { public BaseResponse projectAdd(ProjectInfoVO projectAdd) {
@ -54,4 +66,101 @@ public class ProjectServiceImpl implements ProjectService {
} }
return null; return null;
} }
@Override
public BaseResponse getHeader(Integer id) {
ProjectShowDO projectShowDO = projectDAO.getHeader();
if (id != null) {
if (id > projectShowDO.getData().size()) {
return ResultUtil.error(ErrorCode.ID_NOT_EXIST);
}
ArrayList<ProjectShowDO.DataDO> newCarouselDO = new ArrayList<>();
newCarouselDO.add(projectShowDO.getData().get(id - 1));
projectShowDO.setData(newCarouselDO);
}
return ResultUtil.success(projectShowDO);
}
@Override
public BaseResponse addHeader(HttpServletRequest request, ProjectShowVO projectShowVO) {
// 用户权限校验
if (!Processing.checkUserIsAdmin(request, roleMapper)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN);
}
// 获取用户
Long userId = Processing.getAuthHeaderToUserId(request);
UserDO userDO = userDAO.getUserById(userId);
// 获取展示信息
ProjectShowDO projectShowDO = projectDAO.getHeader();
// 添加展示
ProjectShowDO.DataDO project_show = new ProjectShowDO.DataDO();
project_show.setDisplayOrder(projectShowVO.getDisplayOrder())
.setName(projectShowVO.getName())
.setType(projectShowVO.getType())
.setStatus(projectShowVO.getStatus())
.setIsActive(projectShowVO.getIsActive())
.setAuthor(userDO.getUsername())
.setCreatedAt(new Timestamp(System.currentTimeMillis()).toString());
projectShowDO.getData().add(project_show);
// 保存展示
if (projectDAO.setProjectShow(projectShowDO)) {
return ResultUtil.success();
} else {
return ResultUtil.error(ErrorCode.DATABASE_UPDATE_ERROR);
}
}
@Override
public BaseResponse delHeader(Integer id, HttpServletRequest request) {
// 用户权限校验
if (!Processing.checkUserIsAdmin(request, roleMapper)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN);
}
// 获取展示信息
ProjectShowDO projectShowDO = projectDAO.getHeader();
// 删除指定展示id
if (id > projectShowDO.getData().size()) {
return ResultUtil.error(ErrorCode.ID_NOT_EXIST);
}
ProjectShowDO.DataDO data = projectShowDO.getData().remove(id - 1);
// 保存展示信息
if (projectDAO.setProjectShow(projectShowDO)) {
return ResultUtil.success(data);
} else {
return ResultUtil.error(ErrorCode.DATABASE_UPDATE_ERROR);
}
}
@Override
public BaseResponse editHeader(HttpServletRequest request, ProjectShowVO projectShowVO, Integer id) {
// 用户权限校验
if (!Processing.checkUserIsAdmin(request, roleMapper)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN);
}
// 获取用户
Long userId = Processing.getAuthHeaderToUserId(request);
UserDO userDO = userDAO.getUserById(userId);
// 获取展示信息
ProjectShowDO projectShowDO = projectDAO.getHeader();
// 获取指定展示位置
if (id > projectShowDO.getData().size()) {
return ResultUtil.error(ErrorCode.ID_NOT_EXIST);
}
ProjectShowDO.DataDO projectShow = projectShowDO.getData().get(id - 1);
projectShow.setDisplayOrder(projectShowVO.getDisplayOrder())
.setName(projectShowVO.getName())
.setType(projectShowVO.getType())
.setStatus(projectShowVO.getStatus())
.setIsActive(projectShowVO.getIsActive())
.setAuthor(userDO.getUsername())
.setUpdatedAt(new Timestamp(System.currentTimeMillis()).toString());
// 保存展示信息
if (projectDAO.setProjectShow(projectShowDO)) {
return ResultUtil.success();
} else {
return ResultUtil.error(ErrorCode.DATABASE_UPDATE_ERROR);
}
}
} }

View File

@ -10,6 +10,7 @@ spring:
database: 0 database: 0
host: localhost host: localhost
port: 6379 port: 6379
password:
profiles: profiles:
active: dev active: dev
mybatis: mybatis: