diff --git a/orange-demo-single/orange-demo-single-service/README.md b/orange-demo-single/orange-demo-single-service/README.md
index 6ca77149..0939c817 100644
--- a/orange-demo-single/orange-demo-single-service/README.md
+++ b/orange-demo-single/orange-demo-single-service/README.md
@@ -1,7 +1,5 @@
### 服务接口文档
---
-- Knife4j
- - 服务启动后,Knife4j的文档入口地址 [http://localhost:8082/doc.html#/plus](http://localhost:8082/doc.html#/plus)
- Postman
- 无需启动服务,即可将当前工程的接口导出成Postman格式。在工程的common/common-tools/模块下,找到ExportApiApp文件,并执行main函数。
@@ -15,4 +13,3 @@
- 版本:4
- 端口: 6379
- 推荐客户端工具 [AnotherRedisDesktopManager](https://github.com/qishibo/AnotherRedisDesktopManager)
-
diff --git a/orange-demo-single/orange-demo-single-service/application-webadmin/pom.xml b/orange-demo-single/orange-demo-single-service/application-webadmin/pom.xml
index 655599de..139cd567 100644
--- a/orange-demo-single/orange-demo-single-service/application-webadmin/pom.xml
+++ b/orange-demo-single/orange-demo-single-service/application-webadmin/pom.xml
@@ -20,6 +20,11 @@
common-redis
1.0.0
+
+ com.orange.demo
+ common-log
+ 1.0.0
+
com.orange.demo
common-sequence
@@ -27,12 +32,12 @@
com.orange.demo
- application-common
+ common-datafilter
1.0.0
com.orange.demo
- common-swagger
+ application-common
1.0.0
diff --git a/orange-demo-single/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/AreaCodeController.java b/orange-demo-single/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/AreaCodeController.java
index d693e670..1d33bde5 100644
--- a/orange-demo-single/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/AreaCodeController.java
+++ b/orange-demo-single/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/AreaCodeController.java
@@ -1,6 +1,5 @@
package com.orange.demo.webadmin.app.controller;
-import io.swagger.annotations.Api;
import cn.jimmyshi.beanquery.BeanQuery;
import com.orange.demo.webadmin.app.model.AreaCode;
import com.orange.demo.webadmin.app.service.AreaCodeService;
@@ -22,7 +21,6 @@ import java.util.*;
* @author Jerry
* @date 2020-09-24
*/
-@Api(tags = "行政区划数据访问接口")
@RestController
@RequestMapping("/admin/app/areaCode")
public class AreaCodeController {
diff --git a/orange-demo-single/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/CourseController.java b/orange-demo-single/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/CourseController.java
index 139260d1..f0eed0ac 100644
--- a/orange-demo-single/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/CourseController.java
+++ b/orange-demo-single/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/CourseController.java
@@ -6,6 +6,8 @@ import com.orange.demo.common.core.upload.BaseUpDownloader;
import com.orange.demo.common.core.upload.UpDownloaderFactory;
import com.orange.demo.common.core.upload.UploadResponseInfo;
import com.orange.demo.common.core.upload.UploadStoreInfo;
+import com.orange.demo.common.log.annotation.OperationLog;
+import com.orange.demo.common.log.model.constant.SysOperationLogType;
import com.github.pagehelper.page.PageMethod;
import com.orange.demo.webadmin.app.vo.*;
import com.orange.demo.webadmin.app.dto.*;
@@ -15,11 +17,8 @@ import com.orange.demo.common.core.object.*;
import com.orange.demo.common.core.util.*;
import com.orange.demo.common.core.constant.*;
import com.orange.demo.common.core.annotation.MyRequestBody;
-import com.orange.demo.common.core.validator.UpdateGroup;
import com.orange.demo.common.redis.cache.SessionCacheHelper;
import com.orange.demo.webadmin.config.ApplicationConfig;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -27,7 +26,6 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.*;
-import javax.validation.groups.Default;
/**
* 课程数据操作控制器类。
@@ -35,7 +33,6 @@ import javax.validation.groups.Default;
* @author Jerry
* @date 2020-09-24
*/
-@Api(tags = "课程数据管理接口")
@Slf4j
@RestController
@RequestMapping("/admin/app/course")
@@ -56,17 +53,10 @@ public class CourseController {
* @param courseDto 新增对象。
* @return 应答结果对象,包含新增对象主键Id。
*/
- @ApiOperationSupport(ignoreParameters = {
- "courseDto.courseId",
- "courseDto.priceStart",
- "courseDto.priceEnd",
- "courseDto.classHourStart",
- "courseDto.classHourEnd",
- "courseDto.createTimeStart",
- "courseDto.createTimeEnd"})
+ @OperationLog(type = SysOperationLogType.ADD)
@PostMapping("/add")
public ResponseResult add(@MyRequestBody CourseDto courseDto) {
- String errorMessage = MyCommonUtil.getModelValidationError(courseDto);
+ String errorMessage = MyCommonUtil.getModelValidationError(courseDto, false);
if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
@@ -87,16 +77,10 @@ public class CourseController {
* @param courseDto 更新对象。
* @return 应答结果对象。
*/
- @ApiOperationSupport(ignoreParameters = {
- "courseDto.priceStart",
- "courseDto.priceEnd",
- "courseDto.classHourStart",
- "courseDto.classHourEnd",
- "courseDto.createTimeStart",
- "courseDto.createTimeEnd"})
+ @OperationLog(type = SysOperationLogType.UPDATE)
@PostMapping("/update")
public ResponseResult update(@MyRequestBody CourseDto courseDto) {
- String errorMessage = MyCommonUtil.getModelValidationError(courseDto, Default.class, UpdateGroup.class);
+ String errorMessage = MyCommonUtil.getModelValidationError(courseDto, true);
if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
@@ -125,6 +109,7 @@ public class CourseController {
* @param courseId 删除对象主键Id。
* @return 应答结果对象。
*/
+ @OperationLog(type = SysOperationLogType.DELETE)
@PostMapping("/delete")
public ResponseResult delete(@MyRequestBody Long courseId) {
String errorMessage;
@@ -196,6 +181,7 @@ public class CourseController {
* @param asImage 下载文件是否为图片。
* @param response Http 应答对象。
*/
+ @OperationLog(type = SysOperationLogType.DOWNLOAD, saveResponse = false)
@GetMapping("/download")
public void download(
@RequestParam(required = false) Long courseId,
@@ -254,6 +240,7 @@ public class CourseController {
* @param asImage 是否作为图片上传。如果是图片,今后下载的时候无需权限验证。否则就是附件上传,下载时需要权限验证。
* @param uploadFile 上传文件对象。
*/
+ @OperationLog(type = SysOperationLogType.UPLOAD, saveResponse = false)
@PostMapping("/upload")
public void upload(
@RequestParam String fieldName,
diff --git a/orange-demo-single/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/CourseTransStatsController.java b/orange-demo-single/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/CourseTransStatsController.java
index 352f61c8..70400373 100644
--- a/orange-demo-single/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/CourseTransStatsController.java
+++ b/orange-demo-single/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/CourseTransStatsController.java
@@ -9,7 +9,6 @@ import com.orange.demo.common.core.object.*;
import com.orange.demo.common.core.util.*;
import com.orange.demo.common.core.constant.*;
import com.orange.demo.common.core.annotation.MyRequestBody;
-import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -22,7 +21,6 @@ import java.util.*;
* @author Jerry
* @date 2020-09-24
*/
-@Api(tags = "课程统计管理接口")
@Slf4j
@RestController
@RequestMapping("/admin/app/courseTransStats")
@@ -49,7 +47,8 @@ public class CourseTransStatsController {
}
CourseTransStats courseTransStatsFilter = MyModelUtil.copyTo(courseTransStatsDtoFilter, CourseTransStats.class);
String orderBy = MyOrderParam.buildOrderBy(orderParam, CourseTransStats.class);
- List courseTransStatsList = courseTransStatsService.getCourseTransStatsListWithRelation(courseTransStatsFilter, orderBy);
+ List courseTransStatsList =
+ courseTransStatsService.getCourseTransStatsListWithRelation(courseTransStatsFilter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(courseTransStatsList, CourseTransStats.INSTANCE));
}
diff --git a/orange-demo-single/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/GradeController.java b/orange-demo-single/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/GradeController.java
index 4bfa7569..b44fe17f 100644
--- a/orange-demo-single/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/GradeController.java
+++ b/orange-demo-single/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/GradeController.java
@@ -11,8 +11,8 @@ import com.orange.demo.common.core.util.MyCommonUtil;
import com.orange.demo.common.core.object.ResponseResult;
import com.orange.demo.common.core.annotation.MyRequestBody;
import com.orange.demo.common.core.validator.UpdateGroup;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.Api;
+import com.orange.demo.common.log.annotation.OperationLog;
+import com.orange.demo.common.log.model.constant.SysOperationLogType;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -27,7 +27,6 @@ import java.util.*;
* @author Jerry
* @date 2020-09-24
*/
-@Api(tags = "年级管理接口")
@Slf4j
@RestController
@RequestMapping("/admin/app/grade")
@@ -42,7 +41,7 @@ public class GradeController {
* @param gradeDto 新增对象。
* @return 应答结果对象,包含新增对象主键Id。
*/
- @ApiOperationSupport(ignoreParameters = {"gradeDto.gradeId"})
+ @OperationLog(type = SysOperationLogType.ADD)
@PostMapping("/add")
public ResponseResult add(@MyRequestBody GradeDto gradeDto) {
String errorMessage = MyCommonUtil.getModelValidationError(gradeDto);
@@ -60,6 +59,7 @@ public class GradeController {
* @param gradeDto 更新对象。
* @return 应答结果对象。
*/
+ @OperationLog(type = SysOperationLogType.UPDATE)
@PostMapping("/update")
public ResponseResult update(@MyRequestBody GradeDto gradeDto) {
String errorMessage = MyCommonUtil.getModelValidationError(gradeDto, Default.class, UpdateGroup.class);
@@ -83,6 +83,7 @@ public class GradeController {
* @param gradeId 删除对象主键Id。
* @return 应答结果对象。
*/
+ @OperationLog(type = SysOperationLogType.DELETE)
@PostMapping("/delete")
public ResponseResult delete(@MyRequestBody Integer gradeId) {
if (MyCommonUtil.existBlankArgument(gradeId)) {
@@ -146,6 +147,7 @@ public class GradeController {
* 由于缓存的数据更新,在add/update/delete等接口均有同步处理。因此该接口仅当同步过程中出现问题时,
* 可手工调用,或者每天晚上定时同步一次。
*/
+ @OperationLog(type = SysOperationLogType.RELOAD_CACHE)
@GetMapping("/reloadCachedData")
public ResponseResult reloadCachedData() {
gradeService.reloadCachedData(true);
diff --git a/orange-demo-single/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/SchoolInfoController.java b/orange-demo-single/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/SchoolInfoController.java
deleted file mode 100644
index eb57eb27..00000000
--- a/orange-demo-single/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/SchoolInfoController.java
+++ /dev/null
@@ -1,187 +0,0 @@
-package com.orange.demo.webadmin.app.controller;
-
-import cn.jimmyshi.beanquery.BeanQuery;
-import com.github.pagehelper.page.PageMethod;
-import com.orange.demo.webadmin.app.vo.*;
-import com.orange.demo.webadmin.app.dto.*;
-import com.orange.demo.webadmin.app.model.*;
-import com.orange.demo.webadmin.app.service.*;
-import com.orange.demo.common.core.object.*;
-import com.orange.demo.common.core.util.*;
-import com.orange.demo.common.core.constant.*;
-import com.orange.demo.common.core.annotation.MyRequestBody;
-import com.orange.demo.common.core.validator.UpdateGroup;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.Api;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.*;
-import javax.validation.groups.Default;
-
-/**
- * 校区数据操作控制器类。
- *
- * @author Jerry
- * @date 2020-09-24
- */
-@Api(tags = "校区数据管理接口")
-@Slf4j
-@RestController
-@RequestMapping("/admin/app/schoolInfo")
-public class SchoolInfoController {
-
- @Autowired
- private SchoolInfoService schoolInfoService;
-
- /**
- * 新增校区数据数据。
- *
- * @param schoolInfoDto 新增对象。
- * @return 应答结果对象,包含新增对象主键Id。
- */
- @ApiOperationSupport(ignoreParameters = {"schoolInfoDto.schoolId"})
- @PostMapping("/add")
- public ResponseResult add(@MyRequestBody SchoolInfoDto schoolInfoDto) {
- String errorMessage = MyCommonUtil.getModelValidationError(schoolInfoDto);
- if (errorMessage != null) {
- return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
- }
- SchoolInfo schoolInfo = MyModelUtil.copyTo(schoolInfoDto, SchoolInfo.class);
- // 验证关联Id的数据合法性
- CallResult callResult = schoolInfoService.verifyRelatedData(schoolInfo, null);
- if (!callResult.isSuccess()) {
- errorMessage = callResult.getErrorMessage();
- return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
- }
- schoolInfo = schoolInfoService.saveNew(schoolInfo);
- return ResponseResult.success(schoolInfo.getSchoolId());
- }
-
- /**
- * 更新校区数据数据。
- *
- * @param schoolInfoDto 更新对象。
- * @return 应答结果对象。
- */
- @PostMapping("/update")
- public ResponseResult update(@MyRequestBody SchoolInfoDto schoolInfoDto) {
- String errorMessage = MyCommonUtil.getModelValidationError(schoolInfoDto, Default.class, UpdateGroup.class);
- if (errorMessage != null) {
- return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
- }
- SchoolInfo schoolInfo = MyModelUtil.copyTo(schoolInfoDto, SchoolInfo.class);
- SchoolInfo originalSchoolInfo = schoolInfoService.getById(schoolInfo.getSchoolId());
- if (originalSchoolInfo == null) {
- // NOTE: 修改下面方括号中的话述
- errorMessage = "数据验证失败,当前 [数据] 并不存在,请刷新后重试!";
- return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
- }
- // 验证关联Id的数据合法性
- CallResult callResult = schoolInfoService.verifyRelatedData(schoolInfo, originalSchoolInfo);
- if (!callResult.isSuccess()) {
- errorMessage = callResult.getErrorMessage();
- return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
- }
- if (!schoolInfoService.update(schoolInfo, originalSchoolInfo)) {
- return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
- }
- return ResponseResult.success();
- }
-
- /**
- * 删除校区数据数据。
- *
- * @param schoolId 删除对象主键Id。
- * @return 应答结果对象。
- */
- @PostMapping("/delete")
- public ResponseResult delete(@MyRequestBody Long schoolId) {
- String errorMessage;
- if (MyCommonUtil.existBlankArgument(schoolId)) {
- return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
- }
- // 验证关联Id的数据合法性
- SchoolInfo originalSchoolInfo = schoolInfoService.getById(schoolId);
- if (originalSchoolInfo == null) {
- // NOTE: 修改下面方括号中的话述
- errorMessage = "数据验证失败,当前 [对象] 并不存在,请刷新后重试!";
- return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
- }
- if (!schoolInfoService.remove(schoolId)) {
- errorMessage = "数据操作失败,删除的对象不存在,请刷新后重试!";
- return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
- }
- return ResponseResult.success();
- }
-
- /**
- * 列出符合过滤条件的校区数据列表。
- *
- * @param schoolInfoDtoFilter 过滤对象。
- * @param orderParam 排序参数。
- * @param pageParam 分页参数。
- * @return 应答结果对象,包含查询结果集。
- */
- @PostMapping("/list")
- public ResponseResult> list(
- @MyRequestBody SchoolInfoDto schoolInfoDtoFilter,
- @MyRequestBody MyOrderParam orderParam,
- @MyRequestBody MyPageParam pageParam) {
- if (pageParam != null) {
- PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize());
- }
- SchoolInfo schoolInfoFilter = MyModelUtil.copyTo(schoolInfoDtoFilter, SchoolInfo.class);
- String orderBy = MyOrderParam.buildOrderBy(orderParam, SchoolInfo.class);
- List schoolInfoList = schoolInfoService.getSchoolInfoListWithRelation(schoolInfoFilter, orderBy);
- return ResponseResult.success(MyPageUtil.makeResponseData(schoolInfoList, SchoolInfo.INSTANCE));
- }
-
- /**
- * 查看指定校区数据对象详情。
- *
- * @param schoolId 指定对象主键Id。
- * @return 应答结果对象,包含对象详情。
- */
- @GetMapping("/view")
- public ResponseResult view(@RequestParam Long schoolId) {
- if (MyCommonUtil.existBlankArgument(schoolId)) {
- return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
- }
- SchoolInfo schoolInfo = schoolInfoService.getByIdWithRelation(schoolId, MyRelationParam.full());
- if (schoolInfo == null) {
- return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
- }
- SchoolInfoVo schoolInfoVo = SchoolInfo.INSTANCE.fromModel(schoolInfo);
- return ResponseResult.success(schoolInfoVo);
- }
-
- /**
- * 以字典形式返回全部校区数据数据集合。字典的键值为[schoolId, schoolName]。
- * 白名单接口,登录用户均可访问。
- *
- * @param filter 过滤对象。
- * @return 应答结果对象,包含的数据为 List