全局异常和返回统一结果集

main
wanghb 2 years ago
parent 1658f5ca18
commit e8a9b2a66e

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zhiyun.zhiyun03.application.entity.Application; import com.zhiyun.zhiyun03.application.entity.Application;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@Mapper @Mapper
public interface ApplicationMapper extends BaseMapper<Application> { public interface ApplicationMapper extends BaseMapper<Application> {
} }

@ -0,0 +1,19 @@
package com.zhiyun.zhiyun03.course.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MybatisPlusConfig {
// 从MyBatis-Plus 3.4.0开始不再使用旧版本的PaginationInterceptor 而是使用MybatisPlusInterceptor
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 向MyBatis-Plus的过滤器链中添加分页拦截器需要设置数据库类型主要用于分页方言
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}

@ -7,11 +7,14 @@ import com.zhiyun.zhiyun03.course.entity.Course;
import com.zhiyun.zhiyun03.course.service.CourseService; import com.zhiyun.zhiyun03.course.service.CourseService;
import com.zhiyun.zhiyun03.course.vo.CourseVo; import com.zhiyun.zhiyun03.course.vo.CourseVo;
import com.zhiyun.zhiyun03.course.vo.PageVO;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List; import java.util.List;
@Api("课程") @Api("课程")
@ -19,7 +22,7 @@ import java.util.List;
@RequestMapping("/api/course") @RequestMapping("/api/course")
public class CourseController { public class CourseController {
@Autowired @Resource
private CourseService courseService; private CourseService courseService;
@ -27,17 +30,17 @@ public class CourseController {
@GetMapping("/selectAll") @GetMapping("/selectAll")
public List<CourseVo> queryCourse(){ public List<CourseVo> queryCourse(){
List<CourseVo> list = courseService.queryCourse(); List<CourseVo> lists = courseService.queryCourse();
return list; return lists;
} }
// @ApiOperation("课程添加") @ApiOperation("课程添加")
// @PostMapping("/add") @PostMapping("/add")
// public JsonResult addCourse(Course course){ public String addCourse(Course course){
// courseService.addCourse(course); courseService.addCourse(course);
// return JsonResult.ok(); return "success";
// } }
// //
//// @ApiOperation("查询目录") //// @ApiOperation("查询目录")
//// @PostMapping("/select") //// @PostMapping("/select")
@ -46,20 +49,20 @@ public class CourseController {
//// return JsonResult.ok(); //// return JsonResult.ok();
//// } //// }
// //
// @ApiOperation("删除课程") @ApiOperation("删除课程")
// @DeleteMapping("delById") @DeleteMapping("delById")
// public JsonResult delCourseById(Integer id){ public String delCourseById(Integer id){
// courseService.delCourseById(id); courseService.delCourseById(id);
//return JsonResult.ok(); return "success";
// } }
//
// @ApiOperation("更新课程") @ApiOperation("更新课程")
// @DeleteMapping("updateById") @PostMapping("update")
// public JsonResult updateById(Course course){ public String updateById(Course course){
// courseService.updateById(course); courseService.update(course);
// return JsonResult.ok(); return "success";
// } }
//

@ -4,6 +4,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zhiyun.zhiyun03.course.entity.Course; import com.zhiyun.zhiyun03.course.entity.Course;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper @Mapper
public interface CourseMapper extends BaseMapper<Course> { public interface CourseMapper extends BaseMapper<Course> {
} }

@ -0,0 +1,9 @@
package com.zhiyun.zhiyun03.course.param;
import lombok.Data;
@Data
public class PageParam {
private Integer currentPage;
private Integer pageSize;
}

@ -1,11 +1,15 @@
package com.zhiyun.zhiyun03.course.service; package com.zhiyun.zhiyun03.course.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zhiyun.zhiyun03.course.entity.Course; import com.zhiyun.zhiyun03.course.entity.Course;
import com.zhiyun.zhiyun03.course.vo.CourseVo; import com.zhiyun.zhiyun03.course.vo.CourseVo;
import com.zhiyun.zhiyun03.course.vo.PageVO;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List; import java.util.List;
public interface CourseService { public interface CourseService extends IService<Course> {
// public void addCourse(Course course); // public void addCourse(Course course);
// //
// void delCourseById(Integer id); // void delCourseById(Integer id);
@ -14,4 +18,10 @@ public interface CourseService {
List<CourseVo> queryCourse(); List<CourseVo> queryCourse();
void addCourse(Course course);
void delCourseById(Integer id);
void update(Course course);
} }

@ -1,7 +1,10 @@
package com.zhiyun.zhiyun03.course.service.impl; package com.zhiyun.zhiyun03.course.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fasterxml.jackson.databind.util.BeanUtil;
import com.github.pagehelper.Page;
import com.zhiyun.zhiyun03.application.entity.Directory; import com.zhiyun.zhiyun03.application.entity.Directory;
import com.zhiyun.zhiyun03.application.mapper.DirectoryMapper; import com.zhiyun.zhiyun03.application.mapper.DirectoryMapper;
import com.zhiyun.zhiyun03.application.util.ConvertUtil; import com.zhiyun.zhiyun03.application.util.ConvertUtil;
@ -9,6 +12,8 @@ import com.zhiyun.zhiyun03.course.entity.Course;
import com.zhiyun.zhiyun03.course.service.CourseService; import com.zhiyun.zhiyun03.course.service.CourseService;
import com.zhiyun.zhiyun03.course.vo.CourseVo; import com.zhiyun.zhiyun03.course.vo.CourseVo;
import com.zhiyun.zhiyun03.course.mapper.CourseMapper; import com.zhiyun.zhiyun03.course.mapper.CourseMapper;
import com.zhiyun.zhiyun03.course.vo.PageVO;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -21,7 +26,7 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper,Course> implemen
private CourseMapper courseMapper; private CourseMapper courseMapper;
@Resource @Resource
DirectoryMapper directoryMapper; private DirectoryMapper directoryMapper;
@ -30,6 +35,7 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper,Course> implemen
*/ */
@Override @Override
public List<CourseVo> queryCourse() { public List<CourseVo> queryCourse() {
QueryWrapper<Course> qwa=new QueryWrapper<>(); QueryWrapper<Course> qwa=new QueryWrapper<>();
List<Course> courses = courseMapper.selectList(qwa); List<Course> courses = courseMapper.selectList(qwa);
QueryWrapper<Directory> qwd=new QueryWrapper<>(); QueryWrapper<Directory> qwd=new QueryWrapper<>();
@ -39,21 +45,53 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper,Course> implemen
for (int i = 0; i < courses.size(); i++) { for (int i = 0; i < courses.size(); i++) {
for (int j = 0; j <directories.size() ; j++) { for (int j = 0; j <directories.size() ; j++) {
if(courses.get(i).getDirId()==directories.get(i).getId()){ //判断目录id是否相等
applicationVos.get(i).setDirName(directories.get(i).getDirName()); if(courses.get(i).getDirId()==directories.get(j).getId()){
//将目录名称添加到vo类中
applicationVos.get(i).setDirName(directories.get(j).getDirName());
} }
} }
} }
return applicationVos; return applicationVos;
} }
// @Override @Override
// public void addCourse(Course course) { public void addCourse(Course course) {
// courseDAO.insert(course);
// } courseMapper.insert(course);
// UpdateWrapper<Directory> updateWrapper = new UpdateWrapper<>();
updateWrapper.set("id",course.getDirId());
directoryMapper.update(null,updateWrapper);
}
@Override
public void delCourseById(Integer id) {
courseMapper.deleteById(id);
}
@Override
public void update(Course course) {
//变更数据进行更新
UpdateWrapper<Course> updateWrapper = new UpdateWrapper<>();
updateWrapper.set("course_name",course.getCourseName());
updateWrapper.set("course_brief",course.getCourseBrief());
updateWrapper.set("course_url",course.getCourseUrl());
updateWrapper.set("dir_id",course.getDirId());
updateWrapper.set("course_icon",course.getCourseIcon());
updateWrapper.eq("id",course.getId());
courseMapper.update(null,updateWrapper);
}
// @Override // @Override
// public void delCourseById(Integer id) { // public void delCourseById(Integer id) {
// courseDAO.deleteByPrimaryKey(id); // courseDAO.deleteByPrimaryKey(id);

@ -1,10 +1,11 @@
package com.zhiyun.zhiyun03.course.vo; package com.zhiyun.zhiyun03.course.vo;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.zhiyun.zhiyun03.course.param.PageParam;
import lombok.Data; import lombok.Data;
@Data @Data
public class CourseVo{ public class CourseVo {
@TableId @TableId
private int id; private int id;
@ -16,5 +17,5 @@ public class CourseVo{
private String dirName; private String dirName;
private String appIcon; private String courseIcon;
} }

@ -0,0 +1,13 @@
package com.zhiyun.zhiyun03.course.vo;
import lombok.Data;
import java.util.List;
@Data
public class PageVO<T> {
private Integer currentPage;
private Long total;
private List<T> list;
}

@ -0,0 +1,76 @@
package com.zhiyun.zhiyun03.utils.common;
import lombok.Data;
@Data
public class Result<T> {
//返回信息码
private String code;
//返回信息
private String msg;
//返回数据
T data;
public Result(){}
public Result(T data){
this.data=data;
}
//成功,只返回成功码和信息
public Result<T> success(){
Result<T> result=new Result<>();
result.setCode(ResultCode.SUCCESS.code);
result.setMsg(ResultCode.SUCCESS.msg);
return result;
}
//成功,返回成功码、信息和数据
public Result<T> success(T data){
Result<T> result=new Result();
result.setCode(ResultCode.SUCCESS.code);
result.setMsg(ResultCode.SUCCESS.msg);
result.setData(data);
return result;
}
//失败,返回自己定义的信息码和信息
public Result<T> error(){
Result<T> result=new Result<>();
result.setCode(ResultCode.ERROR.code);
result.setMsg(ResultCode.ERROR.code);
return result;
}
//失败返回controller层传过来信息码和信息
public Result<T> error(String code,String msg){
Result<T> result=new Result<>();
result.setCode(code);
result.setMsg(msg);
return result;
}
public void setCode(String code){
this.code=code;
}
public void setMsg(String msg){
this.msg=msg;
}
public void setData(T data){
this.data=data;
}
@Override
public String toString() {
return "Result{" +
"code='" + code + '\'' +
", msg='" + msg + '\'' +
", data=" + data +
'}';
}
}

@ -0,0 +1,22 @@
package com.zhiyun.zhiyun03.utils.common;
public enum ResultCode {
SUCCESS("0", "成功"),
ERROR("-1", "系统异常"),
PARAM_ERROR("1001", "参数异常"),
USER_EXIST_ERROR("2001", "用户已存在"),
USER_ACCOUNT_ERROR("2002", "账号或密码错误"),
USER_NOT_EXIST_ERROR("2003", "未找到用户"),
ORDER_PAY_ERROR("3001", "库存不足,下单失败"),
PARAM_LOST_ERROR("2004", "参数缺失"),
PARAM_PASSWORD_ERROR("2005", "原密码输入错误"),
;
public String code;
public String msg;
ResultCode(String code, String msg) {
this.code = code;
this.msg = msg;
}
}

@ -0,0 +1,27 @@
package com.zhiyun.zhiyun03.utils.exception;
import com.zhiyun.zhiyun03.utils.common.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
// @RestController + @ResponseBody
@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {
@ExceptionHandler(ServiceException.class)
public Result serviceExceptionHandler(ServiceException e) {
log.error("异常信息", e);
Result<Object> result = new Result<>();
return result.error(e.getCode(), e.getMsg());
}
@ExceptionHandler(Exception.class)
public Result exceptionHandler(Exception e) {
log.error("未知异常", e);
Result<Object> result = new Result<>();
return result.error("500", "未知异常,请联系管理员");
}
}

@ -0,0 +1,33 @@
package com.zhiyun.zhiyun03.utils.exception;
public class ServiceException extends RuntimeException {
private String code;
private String msg;
public ServiceException() {
}
public ServiceException(String code, String msg) {
super(msg);
this.code = code;
this.msg = msg;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}

@ -1,23 +1,29 @@
server: server:
port: 8080 port: 8080
#
mybatis: #mybatis:
mapper-locations: classpath*:mapper/**/*.xml # mapper-locations: classpath*:mapper/**/*.xml
configuration: # configuration:
map-underscore-to-camel-case: true # map-underscore-to-camel-case: true
# ??????? # # ???????
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#
spring: spring:
datasource: datasource:
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver driverClassName: com.mysql.jdbc.Driver
druid: druid:
url: jdbc:mysql://localhost:3306/zhiyun?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai url: jdbc:mysql://localhost:3306/zhiyun?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
username: root username: root
password: root password: root
# mybatis plus的配置和mybatis类似之前在mybatis的配置使用mybtis-plus替换
mybatis-plus:
configuration:
# 控制台打印日志
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
swagger: swagger:
enabled: true enabled: true

Loading…
Cancel
Save