Commit f9c3ef57 authored by 黎博's avatar 黎博

Merge branch 'data'

合并造数据文档和配置功能
parents a9be479e 88353871
......@@ -161,6 +161,12 @@
<version>3.1.305</version>
</dependency>
<!-- 参数校验 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
</dependencies>
<build>
......
......@@ -3,26 +3,51 @@ package cn.qg.holmes.aspect;
import cn.qg.holmes.common.JsonResult;
import cn.qg.holmes.exception.TokenInvalidException;
import cn.qg.holmes.exception.UnauthorizedException;
import org.springframework.validation.ObjectError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* 全局异常处理
* @author libo
*/
@ControllerAdvice
@ResponseBody
public class ExceptionHandlerAdvice {
/**
* 权限不足
*/
@ExceptionHandler(UnauthorizedException.class)
public JsonResult handleException(UnauthorizedException e) {
e.printStackTrace();
return JsonResult.buildErrorStateResult("权限不足!", false);
}
/**
* Token无效
*/
@ExceptionHandler(TokenInvalidException.class)
public JsonResult handleException(TokenInvalidException e) {
e.printStackTrace();
return JsonResult.buildErrorStateResult("登录已失效,请重新登录!", false);
}
/**
* 参数验证失败
*/
@ExceptionHandler(MethodArgumentNotValidException.class)
public JsonResult handleException(MethodArgumentNotValidException e) {
e.printStackTrace();
ObjectError objectError = e.getBindingResult().getAllErrors().get(0);
return JsonResult.buildErrorStateResult(objectError.getDefaultMessage(), false);
}
/**
* 其他所有异常
*/
@ExceptionHandler(Exception.class)
public JsonResult handleException(Exception e) {
e.printStackTrace();
......
package cn.qg.holmes.controller.effect;
import cn.qg.holmes.common.JsonResult;
import cn.qg.holmes.config.annotation.RequiresPermissions;
import cn.qg.holmes.entity.effect.BuildData;
import cn.qg.holmes.entity.effect.BuildDataDetail;
import cn.qg.holmes.service.effect.BuildDataDetailService;
import cn.qg.holmes.service.effect.BuildDataService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 造数据文档controller
* @author libo
*/
@CrossOrigin
@RestController
@RequestMapping("/build/data")
public class BuildDataController {
@Autowired
BuildDataService buildDataService;
@Autowired
BuildDataDetailService buildDataDetailService;
/**
* 获取造数据页面展示
* @return
*/
@GetMapping("/index")
public JsonResult getBuildDataIndex() {
List<Map<String, Object>> resultList = new ArrayList<>();
List<BuildData> buildDataList = buildDataService.list();
QueryWrapper<BuildDataDetail> queryWrapper = new QueryWrapper<>();
for (BuildData buildData: buildDataList) {
Map<String, Object> map = new HashMap<>();
Integer moduleId = buildData.getId();
queryWrapper.eq("module", moduleId);
List<BuildDataDetail> buildDataDetails = buildDataDetailService.list(queryWrapper);
map.put("moduleId", moduleId);
map.put("moduleName", buildData.getName());
map.put("type", buildData.getColor());
map.put("list", buildDataDetails);
resultList.add(map);
queryWrapper.clear();
}
return JsonResult.buildSuccessResult(resultList);
}
/**
* 获取详情列表
* @param name 造数据详情名称
* @param module 模块id
* @return
*/
@GetMapping("/list")
public JsonResult getBuildDataDetailList(String name, Integer module) {
QueryWrapper<BuildDataDetail> queryWrapper = new QueryWrapper<>();
if (!StringUtils.isEmpty(name)) {
queryWrapper.eq("name", name);
}
if (module != null) {
queryWrapper.eq("module", module);
}
queryWrapper.orderByDesc("id");
List<BuildDataDetail> buildDataDetailList = buildDataDetailService.list(queryWrapper);
Map<Integer, String> moduleMap = buildDataService.list().stream().collect(Collectors.toMap(BuildData::getId, BuildData::getName));
for (BuildDataDetail buildDataDetail: buildDataDetailList) {
buildDataDetail.setModuleName(moduleMap.get(buildDataDetail.getModule()));
}
return JsonResult.buildSuccessResult(buildDataDetailList);
}
/**
* 返回造数据模块,不分页
* @return
*/
@GetMapping("/modules")
public JsonResult getBuildDataModules() {
return JsonResult.buildSuccessResult(buildDataService.list());
}
/**
* 新增造数据详情
* @param buildDataDetail
* @return
*/
@RequiresPermissions("build:data:add")
@PostMapping("/add")
public JsonResult addBuildDataDetail(@Valid @RequestBody BuildDataDetail buildDataDetail) {
QueryWrapper<BuildDataDetail> queryWrapper = new QueryWrapper<>();
queryWrapper
.eq("name", buildDataDetail.getName())
.eq("module", buildDataDetail.getModule());
if (buildDataDetailService.getOne(queryWrapper) != null) {
return JsonResult.buildErrorStateResult("数据已存在,不能重复添加!", false);
}
return JsonResult.buildSuccessResult(buildDataDetailService.save(buildDataDetail));
}
/**
* 更新造数据详情
* @param buildDataDetail
* @return
*/
@RequiresPermissions("build:data:update")
@PostMapping("/update")
public JsonResult updateBuildDataDetail(@Valid @RequestBody BuildDataDetail buildDataDetail) {
return JsonResult.buildSuccessResult(buildDataDetailService.updateById(buildDataDetail));
}
/**
* 删除造数据详情
* @param buildDataDetail
* @return
*/
@RequiresPermissions("build:data:delete")
@PostMapping("/delete")
public JsonResult deleteBuildDataDetail(@Valid @RequestBody BuildDataDetail buildDataDetail) {
return JsonResult.buildSuccessResult(buildDataDetailService.removeById(buildDataDetail.getId()));
}
}
......@@ -69,19 +69,10 @@ public class NavigateController {
Map<Integer, String> moduleMap =navigateModuleList.stream().collect(Collectors.toMap(NavigateModule::getId, NavigateModule::getName));
// 获取导航列表
List<NavigateDetail> navigateDetailList = navigateDetailService.list(detailQueryWrapper);
List<Map<String, Object>> resultList = new ArrayList<>();
for (NavigateDetail navigateDetail: navigateDetailList) {
Map<String, Object> map = new HashMap<>();
map.put("id", navigateDetail.getId());
map.put("name", navigateDetail.getName());
map.put("url", navigateDetail.getUrl());
map.put("module", navigateDetail.getModule());
map.put("moduleName", moduleMap.get(navigateDetail.getModule()));
map.put("createTime", navigateDetail.getCreateTime());
map.put("updateTime", navigateDetail.getUpdateTime());
resultList.add(map);
navigateDetail.setModuleName(moduleMap.get(navigateDetail.getModule()));
}
return JsonResult.buildSuccessResult(resultList);
return JsonResult.buildSuccessResult(navigateDetailList);
}
/**
......
package cn.qg.holmes.entity.effect;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.Date;
/**
* 造数据文档模块类
*/
@TableName(value = "build_data")
@Data
public class BuildData {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* 模块名称
*/
@TableField(value = "name")
@NotBlank(message = "模块名称不能为空")
private String name;
/**
* 模块颜色
*/
@TableField(value = "color")
@NotBlank(message = "模块颜色不能为空")
private String color;
/**
* 更新时间
*/
@TableField(value = "update_time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
}
package cn.qg.holmes.entity.effect;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
* 造数据详情实体类
*/
@TableName(value = "build_data_detail")
@Data
public class BuildDataDetail {
/**
* 主键id
*/
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* 造数据说明
*/
@TableField(value = "name")
@NotBlank(message = "名称不能为空")
private String name;
/**
* 链接地址
*/
@TableField(value = "url")
@NotBlank(message = "链接名称不能为空")
private String url;
/**
* 模块id
*/
@TableField(value = "module")
@NotNull(message = "模块id不能为空")
private Integer module;
/**
* 更新时间
*/
@TableField(value = "update_time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
@TableField(exist = false)
private String moduleName;
}
package cn.qg.holmes.entity.navigate;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
......@@ -45,4 +46,7 @@ public class NavigateDetail {
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
@TableField(exist = false)
private String moduleName;
}
package cn.qg.holmes.mapper.effect;
import cn.qg.holmes.entity.effect.BuildDataDetail;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface BuildDataDetailMapper extends BaseMapper<BuildDataDetail> {
}
package cn.qg.holmes.mapper.effect;
import cn.qg.holmes.entity.effect.BuildData;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface BuildDataMapper extends BaseMapper<BuildData> {
}
package cn.qg.holmes.service.effect;
import cn.qg.holmes.entity.effect.BuildDataDetail;
import com.baomidou.mybatisplus.extension.service.IService;
public interface BuildDataDetailService extends IService<BuildDataDetail> {
}
package cn.qg.holmes.service.effect;
import cn.qg.holmes.entity.effect.BuildData;
import com.baomidou.mybatisplus.extension.service.IService;
public interface BuildDataService extends IService<BuildData> {
}
package cn.qg.holmes.service.effect.impl;
import cn.qg.holmes.entity.effect.BuildDataDetail;
import cn.qg.holmes.mapper.effect.BuildDataDetailMapper;
import cn.qg.holmes.service.effect.BuildDataDetailService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service
public class BuildDataDetailServiceImpl extends ServiceImpl<BuildDataDetailMapper, BuildDataDetail>
implements BuildDataDetailService {
}
package cn.qg.holmes.service.effect.impl;
import cn.qg.holmes.entity.effect.BuildData;
import cn.qg.holmes.mapper.effect.BuildDataMapper;
import cn.qg.holmes.service.effect.BuildDataService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service
public class BuildDataServiceImpl extends ServiceImpl<BuildDataMapper, BuildData> implements BuildDataService {
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment