commit:集成knife4j

This commit is contained in:
Jerry
2020-10-29 18:51:32 +08:00
parent c87e94d2e8
commit 6e57f10dfc
648 changed files with 6447 additions and 708 deletions

View File

@@ -49,10 +49,10 @@
<orderEntry type="library" name="Maven: joda-time:joda-time:2.10.5" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.4" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-csv:1.8" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.1.5" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.4.5" level="project" />
<orderEntry type="library" name="Maven: io.jsonwebtoken:jjwt:0.9.1" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.10.2" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.70" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.74" level="project" />
<orderEntry type="library" name="Maven: com.github.ben-manes.caffeine:caffeine:2.8.1" level="project" />
<orderEntry type="library" name="Maven: org.checkerframework:checker-qual:3.1.0" level="project" />
<orderEntry type="library" name="Maven: cn.jimmyshi:bean-query:1.1.5" level="project" />

View File

@@ -7,7 +7,7 @@ import java.util.Map;
* 设备类型常量字典对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public final class DeviceType {

View File

@@ -7,7 +7,7 @@ import java.util.Map;
* 经验等级常量字典对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public final class ExpLevel {

View File

@@ -7,7 +7,7 @@ import java.util.Map;
* 性别常量字典对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public final class Gender {

View File

@@ -7,7 +7,7 @@ import java.util.Map;
* 学生行为常量字典对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public final class StudentActionType {

View File

@@ -7,7 +7,7 @@ import java.util.Map;
* 学生状态常量字典对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public final class StudentStatus {

View File

@@ -7,7 +7,7 @@ import java.util.Map;
* 学科常量字典对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public final class Subject {

View File

@@ -50,10 +50,10 @@
<orderEntry type="library" name="Maven: joda-time:joda-time:2.10.5" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.4" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-csv:1.8" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.1.5" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.4.5" level="project" />
<orderEntry type="library" name="Maven: io.jsonwebtoken:jjwt:0.9.1" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.10.2" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.70" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.74" level="project" />
<orderEntry type="library" name="Maven: com.github.ben-manes.caffeine:caffeine:2.8.1" level="project" />
<orderEntry type="library" name="Maven: org.checkerframework:checker-qual:3.1.0" level="project" />
<orderEntry type="library" name="Maven: cn.jimmyshi:bean-query:1.1.5" level="project" />
@@ -91,6 +91,24 @@
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-autoconfigure:1.2.13" level="project" />
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper:5.1.11" level="project" />
<orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:2.0" level="project" />
<orderEntry type="module" module-name="common-swagger" />
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-micro-spring-boot-starter:2.0.5" level="project" />
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-spring-boot-autoconfigure:2.0.5" level="project" />
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-spring:2.0.5" level="project" />
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-annotations:2.0.5" level="project" />
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-core:2.0.5" level="project" />
<orderEntry type="library" name="Maven: org.javassist:javassist:3.25.0-GA" level="project" />
<orderEntry type="library" name="Maven: io.swagger:swagger-models:1.5.22" level="project" />
<orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.5.22" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-spi:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-core:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-schema:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger-common:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-spring-web:2.9.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-core:1.2.0.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-metadata:1.2.0.RELEASE" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-bean-validators:2.9.2" level="project" />
<orderEntry type="library" name="Maven: com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:2.2.1.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.alibaba.nacos:nacos-client:1.2.1" level="project" />
<orderEntry type="library" name="Maven: com.alibaba.nacos:nacos-common:1.2.1" level="project" />
@@ -247,7 +265,7 @@
<orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:3.13.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest:2.1" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:3.1.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy:1.10.8" level="project" />
<orderEntry type="library" name="Maven: net.bytebuddy:byte-buddy:1.10.8" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy-agent:1.10.8" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:2.6" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.skyscreamer:jsonassert:1.5.0" level="project" />

View File

@@ -26,5 +26,11 @@
<artifactId>common-core</artifactId>
<version>1.0.0</version>
</dependency>
<!-- knife4j 接口文档框架 -->
<dependency>
<groupId>com.orange.demo</groupId>
<artifactId>common-swagger</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
</project>

View File

@@ -17,7 +17,7 @@ import java.util.*;
* 行政区划远程访问接口类。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@FeignClient(name = "system-service", fallbackFactory = AreaCodeClient.AreaCodeClientFallbackFactory.class)
public interface AreaCodeClient extends BaseClient<AreaCodeDto, Long> {

View File

@@ -17,7 +17,7 @@ import java.util.*;
* 课程数据服务远程数据操作访问接口。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@FeignClient(
name = "course-class",

View File

@@ -17,7 +17,7 @@ import java.util.*;
* 服务远程数据操作访问接口。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@FeignClient(
name = "course-class",

View File

@@ -17,7 +17,7 @@ import java.util.*;
* 校区数据服务远程数据操作访问接口。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@FeignClient(
name = "course-class",

View File

@@ -17,7 +17,7 @@ import java.util.*;
* 班级数据服务远程数据操作访问接口。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@FeignClient(
name = "course-class",

View File

@@ -17,7 +17,7 @@ import java.util.*;
* 学生数据服务远程数据操作访问接口。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@FeignClient(
name = "course-class",

View File

@@ -7,7 +7,7 @@ import java.util.Map;
* 班级级别常量字典对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public final class ClassLevel {

View File

@@ -7,7 +7,7 @@ import java.util.Map;
* 班级状态常量字典对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public final class ClassStatus {

View File

@@ -7,7 +7,7 @@ import java.util.Map;
* 课程难度常量字典对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public final class CourseDifficult {

View File

@@ -1,33 +1,40 @@
package com.orange.demo.courseclassinterface.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 行政区划Dto。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@ApiModel("行政区划实体对象")
@Data
public class AreaCodeDto {
/**
* 行政区划主键Id
*/
@ApiModelProperty(value = "行政区划主键Id", required = true)
private Long areaId;
/**
* 行政区划名称
*/
@ApiModelProperty(value = "行政区划名称")
private String areaName;
/**
* 行政区划级别 (1: 省级别 2: 市级别 3: 区级别)
*/
@ApiModelProperty(value = "行政区划级别")
private Integer areaLevel;
/**
* 父级行政区划Id
*/
@ApiModelProperty(value = "父级行政区划Id")
private Long parentId;
}

View File

@@ -10,7 +10,7 @@ import javax.validation.constraints.*;
* ClassCourseDto对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Data
public class ClassCourseDto {

View File

@@ -10,7 +10,7 @@ import javax.validation.constraints.*;
* ClassStudentDto对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Data
public class ClassStudentDto {

View File

@@ -5,6 +5,8 @@ import com.orange.demo.common.core.validator.ConstDictRef;
import com.orange.demo.courseclassinterface.constant.CourseDifficult;
import com.orange.demo.application.common.constant.Subject;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.*;
@@ -17,37 +19,43 @@ import java.util.Map;
* CourseDto对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@ApiModel("CourseDto实体对象")
@Data
public class CourseDto {
/**
* 主键Id。
*/
@ApiModelProperty(value = "主键Id", required = true)
@NotNull(message = "数据验证失败主键Id不能为空", groups = {UpdateGroup.class})
private Long courseId;
/**
* 课程名称。
*/
@ApiModelProperty(value = "课程名称", required = true)
@NotBlank(message = "数据验证失败,课程名称不能为空!")
private String courseName;
/**
* 课程价格。
*/
@ApiModelProperty(value = "课程价格", required = true)
@NotNull(message = "数据验证失败,课程价格不能为空!")
private BigDecimal price;
/**
* 课程描述。
*/
@ApiModelProperty(value = "课程描述")
private String description;
/**
* 课程难度(0: 容易 1: 普通 2: 很难)。
*/
@ApiModelProperty(value = "课程难度(0: 容易 1: 普通 2: 很难)", required = true)
@NotNull(message = "数据验证失败,课程难度不能为空!")
@ConstDictRef(constDictClass = CourseDifficult.class, message = "数据验证失败,课程难度为无效值!")
private Integer difficulty;
@@ -55,12 +63,14 @@ public class CourseDto {
/**
* 年级Id。
*/
@ApiModelProperty(value = "年级Id", required = true)
@NotNull(message = "数据验证失败,所属年级不能为空!")
private Integer gradeId;
/**
* 学科Id。
*/
@ApiModelProperty(value = "学科Id", required = true)
@NotNull(message = "数据验证失败,所属学科不能为空!")
@ConstDictRef(constDictClass = Subject.class, message = "数据验证失败,所属学科为无效值!")
private Integer subjectId;
@@ -68,77 +78,92 @@ public class CourseDto {
/**
* 课时数量。
*/
@ApiModelProperty(value = "课时数量", required = true)
@NotNull(message = "数据验证失败,课时数量不能为空!")
private Integer classHour;
/**
* 多张课程图片地址。
*/
@ApiModelProperty(value = "多张课程图片地址", required = true)
@NotBlank(message = "数据验证失败,课程图片不能为空!")
private String pictureUrl;
/**
* 创建用户Id。
*/
@ApiModelProperty(value = "创建用户Id")
private Long createUserId;
/**
* 创建时间。
*/
@ApiModelProperty(value = "创建时间")
private Date createTime;
/**
* 最后修改时间。
*/
@ApiModelProperty(value = "最后修改时间")
private Date updateTime;
/**
* price 范围过滤起始值(>=)。
*/
@ApiModelProperty(value = "price 范围过滤起始值(>=)")
private BigDecimal priceStart;
/**
* price 范围过滤结束值(<=)。
*/
@ApiModelProperty(value = "price 范围过滤结束值(<=)")
private BigDecimal priceEnd;
/**
* classHour 范围过滤起始值(>=)。
*/
@ApiModelProperty(value = "classHour 范围过滤起始值(>=)")
private Integer classHourStart;
/**
* classHour 范围过滤结束值(<=)。
*/
@ApiModelProperty(value = "classHour 范围过滤结束值(<=)")
private Integer classHourEnd;
/**
* updateTime 范围过滤起始值(>=)。
*/
@ApiModelProperty(value = "updateTime 范围过滤起始值(>=)")
private String updateTimeStart;
/**
* updateTime 范围过滤结束值(<=)。
*/
@ApiModelProperty(value = "updateTime 范围过滤结束值(<=)")
private String updateTimeEnd;
/**
* courseId 的多对多关联表数据对象数据对应类型为ClassCourseDto。
*/
@ApiModelProperty(hidden = true)
private Map<String, Object> classCourse;
/**
* gradeId 字典关联数据。
*/
@ApiModelProperty(hidden = true)
private Map<String, Object> gradeIdDictMap;
/**
* difficulty 常量字典关联数据。
*/
@ApiModelProperty(hidden = true)
private Map<String, Object> difficultyDictMap;
/**
* subjectId 常量字典关联数据。
*/
@ApiModelProperty(hidden = true)
private Map<String, Object> subjectIdDictMap;
}

View File

@@ -2,6 +2,8 @@ package com.orange.demo.courseclassinterface.dto;
import com.orange.demo.common.core.validator.UpdateGroup;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.*;
@@ -10,20 +12,23 @@ import javax.validation.constraints.*;
* GradeDto对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@ApiModel("GradeDto实体对象")
@Data
public class GradeDto {
/**
* 主键Id。
*/
@ApiModelProperty(value = "主键Id", required = true)
@NotNull(message = "数据验证失败主键Id不能为空", groups = {UpdateGroup.class})
private Integer gradeId;
/**
* 年级名称。
*/
@ApiModelProperty(value = "年级名称", required = true)
@NotBlank(message = "数据验证失败,年级名称不能为空!")
private String gradeName;
}

View File

@@ -2,6 +2,8 @@ package com.orange.demo.courseclassinterface.dto;
import com.orange.demo.common.core.validator.UpdateGroup;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.*;
@@ -12,42 +14,49 @@ import java.util.Map;
* SchoolInfoDto对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@ApiModel("SchoolInfoDto实体对象")
@Data
public class SchoolInfoDto {
/**
* 学校Id。
*/
@ApiModelProperty(value = "学校Id", required = true)
@NotNull(message = "数据验证失败学校Id不能为空", groups = {UpdateGroup.class})
private Long schoolId;
/**
* 学校名称。
*/
@ApiModelProperty(value = "学校名称", required = true)
@NotBlank(message = "数据验证失败,学校名称不能为空!")
private String schoolName;
/**
* 所在省Id。
*/
@ApiModelProperty(value = "所在省Id", required = true)
@NotNull(message = "数据验证失败,所在省份不能为空!")
private Long provinceId;
/**
* 所在城市Id。
*/
@ApiModelProperty(value = "所在城市Id", required = true)
@NotNull(message = "数据验证失败,所在城市不能为空!")
private Long cityId;
/**
* provinceId 字典关联数据。
*/
@ApiModelProperty(hidden = true)
private Map<String, Object> provinceIdDictMap;
/**
* cityId 字典关联数据。
*/
@ApiModelProperty(hidden = true)
private Map<String, Object> cityIdDictMap;
}

View File

@@ -4,6 +4,8 @@ import com.orange.demo.common.core.validator.UpdateGroup;
import com.orange.demo.common.core.validator.ConstDictRef;
import com.orange.demo.courseclassinterface.constant.ClassLevel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.*;
@@ -15,44 +17,51 @@ import java.util.Map;
* StudentClassDto对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@ApiModel("StudentClassDto实体对象")
@Data
public class StudentClassDto {
/**
* 班级Id。
*/
@ApiModelProperty(value = "班级Id", required = true)
@NotNull(message = "数据验证失败班级Id不能为空", groups = {UpdateGroup.class})
private Long classId;
/**
* 班级名称。
*/
@ApiModelProperty(value = "班级名称", required = true)
@NotBlank(message = "数据验证失败,班级名称不能为空!")
private String className;
/**
* 学校Id。
*/
@ApiModelProperty(value = "学校Id", required = true)
@NotNull(message = "数据验证失败,所属校区不能为空!")
private Long schoolId;
/**
* 学生班长Id。
*/
@ApiModelProperty(value = "学生班长Id", required = true)
@NotNull(message = "数据验证失败,班长不能为空!")
private Long leaderId;
/**
* 已完成课时数量。
*/
@ApiModelProperty(value = "已完成课时数量", required = true)
@NotNull(message = "数据验证失败,已完成课时不能为空!")
private Integer finishClassHour;
/**
* 班级级别(0: 初级班 1: 培优班 2: 冲刺提分班 3: 竞赛班)。
*/
@ApiModelProperty(value = "班级级别(0: 初级班 1: 培优班 2: 冲刺提分班 3: 竞赛班)", required = true)
@NotNull(message = "数据验证失败,班级级别不能为空!")
@ConstDictRef(constDictClass = ClassLevel.class, message = "数据验证失败,班级级别为无效值!")
private Integer classLevel;
@@ -60,25 +69,30 @@ public class StudentClassDto {
/**
* 创建用户。
*/
@ApiModelProperty(value = "创建用户")
private Long createUserId;
/**
* 班级创建时间。
*/
@ApiModelProperty(value = "班级创建时间")
private Date createTime;
/**
* schoolId 字典关联数据。
*/
@ApiModelProperty(hidden = true)
private Map<String, Object> schoolIdDictMap;
/**
* leaderId 字典关联数据。
*/
@ApiModelProperty(hidden = true)
private Map<String, Object> leaderIdDictMap;
/**
* classLevel 常量字典关联数据。
*/
@ApiModelProperty(hidden = true)
private Map<String, Object> classLevelDictMap;
}

View File

@@ -6,6 +6,8 @@ import com.orange.demo.application.common.constant.Gender;
import com.orange.demo.application.common.constant.ExpLevel;
import com.orange.demo.application.common.constant.StudentStatus;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.*;
@@ -17,50 +19,58 @@ import java.util.Map;
* StudentDto对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@ApiModel("StudentDto实体对象")
@Data
public class StudentDto {
/**
* 学生Id。
*/
@ApiModelProperty(value = "学生Id", required = true)
@NotNull(message = "数据验证失败学生Id不能为空", groups = {UpdateGroup.class})
private Long studentId;
/**
* 登录手机。
*/
@ApiModelProperty(value = "登录手机", required = true)
@NotBlank(message = "数据验证失败,手机号码不能为空!")
private String loginMobile;
/**
* 学生姓名。
*/
@ApiModelProperty(value = "学生姓名", required = true)
@NotBlank(message = "数据验证失败,姓名不能为空!")
private String studentName;
/**
* 所在省份Id。
*/
@ApiModelProperty(value = "所在省份Id", required = true)
@NotNull(message = "数据验证失败,所在省份不能为空!")
private Long provinceId;
/**
* 所在城市Id。
*/
@ApiModelProperty(value = "所在城市Id", required = true)
@NotNull(message = "数据验证失败,所在城市不能为空!")
private Long cityId;
/**
* 区县Id。
*/
@ApiModelProperty(value = "区县Id", required = true)
@NotNull(message = "数据验证失败,所在区县不能为空!")
private Long districtId;
/**
* 学生性别 (0: 女生 1: 男生)。
*/
@ApiModelProperty(value = "学生性别 (0: 女生 1: 男生)", required = true)
@NotNull(message = "数据验证失败,性别不能为空!")
@ConstDictRef(constDictClass = Gender.class, message = "数据验证失败,性别为无效值!")
private Integer gender;
@@ -68,12 +78,14 @@ public class StudentDto {
/**
* 生日。
*/
@ApiModelProperty(value = "生日", required = true)
@NotNull(message = "数据验证失败,生日不能为空!")
private Date birthday;
/**
* 经验等级 (0: 初级 1: 中级 2: 高级 3: 资深)。
*/
@ApiModelProperty(value = "经验等级 (0: 初级 1: 中级 2: 高级 3: 资深)", required = true)
@NotNull(message = "数据验证失败,经验等级不能为空!")
@ConstDictRef(constDictClass = ExpLevel.class, message = "数据验证失败,经验等级为无效值!")
private Integer experienceLevel;
@@ -81,35 +93,41 @@ public class StudentDto {
/**
* 总共充值学币数量。
*/
@ApiModelProperty(value = "总共充值学币数量", required = true)
@NotNull(message = "数据验证失败,充值学币不能为空!", groups = {UpdateGroup.class})
private Integer totalCoin;
/**
* 可用学币数量。
*/
@ApiModelProperty(value = "可用学币数量", required = true)
@NotNull(message = "数据验证失败,剩余学币不能为空!", groups = {UpdateGroup.class})
private Integer leftCoin;
/**
* 年级Id。
*/
@ApiModelProperty(value = "年级Id", required = true)
@NotNull(message = "数据验证失败,年级不能为空!")
private Integer gradeId;
/**
* 校区Id。
*/
@ApiModelProperty(value = "校区Id", required = true)
@NotNull(message = "数据验证失败,所属校区不能为空!")
private Long schoolId;
/**
* 注册时间。
*/
@ApiModelProperty(value = "注册时间")
private Date registerTime;
/**
* 学生状态 (0: 正常 1: 锁定 2: 注销)。
*/
@ApiModelProperty(value = "学生状态 (0: 正常 1: 锁定 2: 注销)", required = true)
@NotNull(message = "数据验证失败,状态 不能为空!", groups = {UpdateGroup.class})
@ConstDictRef(constDictClass = StudentStatus.class, message = "数据验证失败,状态 为无效值!")
private Integer status;
@@ -117,65 +135,78 @@ public class StudentDto {
/**
* birthday 范围过滤起始值(>=)。
*/
@ApiModelProperty(value = "birthday 范围过滤起始值(>=)")
private String birthdayStart;
/**
* birthday 范围过滤结束值(<=)。
*/
@ApiModelProperty(value = "birthday 范围过滤结束值(<=)")
private String birthdayEnd;
/**
* registerTime 范围过滤起始值(>=)。
*/
@ApiModelProperty(value = "registerTime 范围过滤起始值(>=)")
private String registerTimeStart;
/**
* registerTime 范围过滤结束值(<=)。
*/
@ApiModelProperty(value = "registerTime 范围过滤结束值(<=)")
private String registerTimeEnd;
/**
* true LIKE搜索字符串。
*/
@ApiModelProperty(value = "LIKE模糊搜索字符串")
private String searchString;
/**
* provinceId 字典关联数据。
*/
@ApiModelProperty(hidden = true)
private Map<String, Object> provinceIdDictMap;
/**
* cityId 字典关联数据。
*/
@ApiModelProperty(hidden = true)
private Map<String, Object> cityIdDictMap;
/**
* districtId 字典关联数据。
*/
@ApiModelProperty(hidden = true)
private Map<String, Object> districtIdDictMap;
/**
* gradeId 字典关联数据。
*/
@ApiModelProperty(hidden = true)
private Map<String, Object> gradeIdDictMap;
/**
* schoolId 字典关联数据。
*/
@ApiModelProperty(hidden = true)
private Map<String, Object> schoolIdDictMap;
/**
* gender 常量字典关联数据。
*/
@ApiModelProperty(hidden = true)
private Map<String, Object> genderDictMap;
/**
* experienceLevel 常量字典关联数据。
*/
@ApiModelProperty(hidden = true)
private Map<String, Object> experienceLevelDictMap;
/**
* status 常量字典关联数据。
*/
@ApiModelProperty(hidden = true)
private Map<String, Object> statusDictMap;
}

View File

@@ -50,9 +50,9 @@
<orderEntry type="library" name="Maven: joda-time:joda-time:2.10.5" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.4" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-csv:1.8" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.1.5" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.4.5" level="project" />
<orderEntry type="library" name="Maven: io.jsonwebtoken:jjwt:0.9.1" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.70" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.74" level="project" />
<orderEntry type="library" name="Maven: com.github.ben-manes.caffeine:caffeine:2.8.1" level="project" />
<orderEntry type="library" name="Maven: org.checkerframework:checker-qual:3.1.0" level="project" />
<orderEntry type="library" name="Maven: cn.jimmyshi:bean-query:1.1.5" level="project" />
@@ -87,6 +87,23 @@
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-autoconfigure:1.2.13" level="project" />
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper:5.1.11" level="project" />
<orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:2.0" level="project" />
<orderEntry type="module" module-name="common-swagger" />
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-micro-spring-boot-starter:2.0.5" level="project" />
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-spring-boot-autoconfigure:2.0.5" level="project" />
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-spring:2.0.5" level="project" />
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-annotations:2.0.5" level="project" />
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-core:2.0.5" level="project" />
<orderEntry type="library" name="Maven: io.swagger:swagger-models:1.5.22" level="project" />
<orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.5.22" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-spi:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-core:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-schema:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger-common:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-spring-web:2.9.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-core:1.2.0.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-metadata:1.2.0.RELEASE" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-bean-validators:2.9.2" level="project" />
<orderEntry type="module" module-name="common-redis" />
<orderEntry type="library" name="Maven: redis.clients:jedis:3.1.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-pool2:2.7.0" level="project" />

View File

@@ -9,7 +9,7 @@ import org.springframework.context.annotation.ComponentScan;
* course-class服务启动类。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@SpringCloudApplication
@EnableFeignClients(basePackages = "com.orange.demo")

View File

@@ -14,7 +14,7 @@ import org.springframework.context.annotation.Configuration;
* defaultSomething: defaultValue
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Data
@RefreshScope

View File

@@ -14,7 +14,7 @@ import javax.sql.DataSource;
* 数据源配置Bean对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Configuration
@EnableTransactionManagement

View File

@@ -1,5 +1,6 @@
package com.orange.demo.courseclassservice.controller;
import io.swagger.annotations.Api;
import cn.jimmyshi.beanquery.BeanQuery;
import com.orange.demo.common.core.base.controller.BaseController;
import com.orange.demo.common.core.base.service.BaseService;
@@ -19,8 +20,9 @@ import java.util.*;
* 行政区划数据访问接口类。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Api(tags = "行政区划数据访问接口")
@RestController
@RequestMapping("/areaCode")
public class AreaCodeController extends BaseController<AreaCode, AreaCodeDto, Long> {

View File

@@ -6,7 +6,6 @@ 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.alibaba.fastjson.JSONObject;
import com.github.pagehelper.Page;
import com.github.pagehelper.page.PageMethod;
import com.orange.demo.courseclassservice.model.*;
@@ -21,6 +20,9 @@ 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.courseclassservice.config.ApplicationConfig;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -34,8 +36,9 @@ import java.util.*;
* 课程数据操作控制器类。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Api(tags = "课程数据管理接口")
@Slf4j
@RestController
@RequestMapping("/course")
@@ -61,8 +64,16 @@ public class CourseController extends BaseController<Course, CourseDto, Long> {
* @param courseDto 新增对象。
* @return 应答结果对象包含新增对象主键Id。
*/
@ApiOperationSupport(ignoreParameters = {
"course.courseId",
"course.priceStart",
"course.priceEnd",
"course.classHourStart",
"course.classHourEnd",
"course.updateTimeStart",
"course.updateTimeEnd"})
@PostMapping("/add")
public ResponseResult<JSONObject> add(@MyRequestBody("course") CourseDto courseDto) {
public ResponseResult<Long> add(@MyRequestBody("course") CourseDto courseDto) {
String errorMessage = MyCommonUtil.getModelValidationError(courseDto);
if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATAED_FAILED, errorMessage);
@@ -75,9 +86,7 @@ public class CourseController extends BaseController<Course, CourseDto, Long> {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATAED_FAILED, errorMessage);
}
course = courseService.saveNew(course);
JSONObject responseData = new JSONObject();
responseData.put("courseId", course.getCourseId());
return ResponseResult.success(responseData);
return ResponseResult.success(course.getCourseId());
}
/**
@@ -86,6 +95,13 @@ public class CourseController extends BaseController<Course, CourseDto, Long> {
* @param courseDto 更新对象。
* @return 应答结果对象。
*/
@ApiOperationSupport(ignoreParameters = {
"course.priceStart",
"course.priceEnd",
"course.classHourStart",
"course.classHourEnd",
"course.updateTimeStart",
"course.updateTimeEnd"})
@PostMapping("/update")
public ResponseResult<Void> update(@MyRequestBody("course") CourseDto courseDto) {
String errorMessage = MyCommonUtil.getModelValidationError(courseDto, Default.class, UpdateGroup.class);
@@ -146,7 +162,7 @@ public class CourseController extends BaseController<Course, CourseDto, Long> {
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping("/list")
public ResponseResult<JSONObject> list(
public ResponseResult<MyPageData<CourseDto>> list(
@MyRequestBody("courseFilter") CourseDto courseDtoFilter,
@MyRequestBody MyOrderParam orderParam,
@MyRequestBody MyPageParam pageParam) {
@@ -301,6 +317,7 @@ public class CourseController extends BaseController<Course, CourseDto, Long> {
* @param withDict 是否包含字典关联。
* @return 应答结果对象,包含主对象集合。
*/
@ApiOperation(hidden = true, value = "listByIds")
@PostMapping("/listByIds")
public ResponseResult<List<CourseDto>> listByIds(
@RequestParam Set<Long> courseIds, @RequestParam Boolean withDict) {
@@ -314,6 +331,7 @@ public class CourseController extends BaseController<Course, CourseDto, Long> {
* @param withDict 是否包含字典关联。
* @return 应答结果对象,包含主对象数据。
*/
@ApiOperation(hidden = true, value = "getById")
@PostMapping("/getById")
public ResponseResult<CourseDto> getById(
@RequestParam Long courseId, @RequestParam Boolean withDict) {
@@ -326,6 +344,7 @@ public class CourseController extends BaseController<Course, CourseDto, Long> {
* @param courseIds 主键Id集合。
* @return 应答结果对象包含true全部存在否则false。
*/
@ApiOperation(hidden = true, value = "existIds")
@PostMapping("/existIds")
public ResponseResult<Boolean> existIds(@RequestParam Set<Long> courseIds) {
return super.baseExistIds(courseIds);
@@ -337,6 +356,7 @@ public class CourseController extends BaseController<Course, CourseDto, Long> {
* @param courseId 主键Id。
* @return 应答结果对象包含true表示存在否则false。
*/
@ApiOperation(hidden = true, value = "existId")
@PostMapping("/existId")
public ResponseResult<Boolean> existId(@RequestParam Long courseId) {
return super.baseExistId(courseId);
@@ -348,6 +368,7 @@ public class CourseController extends BaseController<Course, CourseDto, Long> {
* @param queryParam 查询参数。
* @return 应答结果对象,包含符合查询过滤条件的对象结果集。
*/
@ApiOperation(hidden = true, value = "listBy")
@PostMapping("/listBy")
public ResponseResult<List<CourseDto>> listBy(@RequestBody MyQueryParam queryParam) {
return super.baseListBy(queryParam, Course.INSTANCE);
@@ -359,6 +380,7 @@ public class CourseController extends BaseController<Course, CourseDto, Long> {
* @param queryParam 查询参数。
* @return 应答结果对象,包含符合查询过滤条件的对象结果集。
*/
@ApiOperation(hidden = true, value = "listMapBy")
@PostMapping("/listMapBy")
public ResponseResult<List<Map<String, Object>>> listMapBy(@RequestBody MyQueryParam queryParam) {
return super.baseListMapBy(queryParam, Course.INSTANCE);
@@ -370,6 +392,7 @@ public class CourseController extends BaseController<Course, CourseDto, Long> {
* @param queryParam 查询参数。
* @return 应答结果对象,包含符合查询过滤条件的对象结果集。
*/
@ApiOperation(hidden = true, value = "getBy")
@PostMapping("/getBy")
public ResponseResult<CourseDto> getBy(@RequestBody MyQueryParam queryParam) {
return super.baseGetBy(queryParam, Course.INSTANCE);
@@ -381,6 +404,7 @@ public class CourseController extends BaseController<Course, CourseDto, Long> {
* @param queryParam 查询参数。
* @return 应答结果对象,包含结果数量。
*/
@ApiOperation(hidden = true, value = "countBy")
@PostMapping("/countBy")
public ResponseResult<Integer> countBy(@RequestBody MyQueryParam queryParam) {
return super.baseCountBy(queryParam);
@@ -392,6 +416,7 @@ public class CourseController extends BaseController<Course, CourseDto, Long> {
* @param aggregationParam 聚合参数。
* @return 应该结果对象包含聚合计算后的分组Map列表。
*/
@ApiOperation(hidden = true, value = "aggregateBy")
@PostMapping("/aggregateBy")
public ResponseResult<List<Map<String, Object>>> aggregateBy(@RequestBody MyAggregationParam aggregationParam) {
return super.baseAggregateBy(aggregationParam);

View File

@@ -2,6 +2,9 @@ package com.orange.demo.courseclassservice.controller;
import cn.jimmyshi.beanquery.BeanQuery;
import com.alibaba.fastjson.JSONObject;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import com.orange.demo.common.core.base.controller.BaseController;
import com.orange.demo.common.core.base.service.BaseDictService;
@@ -25,8 +28,9 @@ import java.util.*;
* 年级操作控制器类。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Api(tags = "年级管理接口")
@Slf4j
@RestController
@RequestMapping("/grade")
@@ -46,17 +50,16 @@ public class GradeController extends BaseController<Grade, GradeDto, Integer> {
* @param gradeDto 新增对象。
* @return 应答结果对象包含新增对象主键Id。
*/
@ApiOperationSupport(ignoreParameters = {"grade.gradeId"})
@PostMapping("/add")
public ResponseResult<JSONObject> add(@MyRequestBody("grade") GradeDto gradeDto) {
public ResponseResult<Integer> add(@MyRequestBody("grade") GradeDto gradeDto) {
String errorMessage = MyCommonUtil.getModelValidationError(gradeDto);
if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATAED_FAILED, errorMessage);
}
Grade grade = MyModelUtil.copyTo(gradeDto, Grade.class);
grade = gradeService.saveNew(grade);
JSONObject responseData = new JSONObject();
responseData.put("gradeId", grade.getGradeId());
return ResponseResult.success(responseData);
return ResponseResult.success(grade.getGradeId());
}
/**
@@ -117,7 +120,7 @@ public class GradeController extends BaseController<Grade, GradeDto, Integer> {
GradeDto gradeDto = MyModelUtil.copyTo(grade, GradeDto.class);
return ResponseResult.success(gradeDto);
}
/**
* 以字典形式返回全部年级数据集合。
* 白名单接口,登录用户均可访问。
@@ -138,6 +141,7 @@ public class GradeController extends BaseController<Grade, GradeDto, Integer> {
* @param withDict 是否包含字典关联。
* @return 应答结果对象,包含主对象集合。
*/
@ApiOperation(hidden = true, value = "listByIds")
@PostMapping("/listByIds")
public ResponseResult<List<GradeDto>> listByIds(
@RequestParam Set<Integer> gradeIds, @RequestParam Boolean withDict) {
@@ -151,6 +155,7 @@ public class GradeController extends BaseController<Grade, GradeDto, Integer> {
* @param withDict 是否包含字典关联。
* @return 应答结果对象,包含主对象数据。
*/
@ApiOperation(hidden = true, value = "getById")
@PostMapping("/getById")
public ResponseResult<GradeDto> getById(
@RequestParam Integer gradeId, @RequestParam Boolean withDict) {
@@ -163,6 +168,7 @@ public class GradeController extends BaseController<Grade, GradeDto, Integer> {
* @param gradeIds 主键Id集合。
* @return 应答结果对象包含true全部存在否则false。
*/
@ApiOperation(hidden = true, value = "existIds")
@PostMapping("/existIds")
public ResponseResult<Boolean> existIds(@RequestParam Set<Integer> gradeIds) {
return super.baseExistIds(gradeIds);
@@ -174,6 +180,7 @@ public class GradeController extends BaseController<Grade, GradeDto, Integer> {
* @param gradeId 主键Id。
* @return 应答结果对象包含true全部存在否则false。
*/
@ApiOperation(hidden = true, value = "existId")
@PostMapping("/existId")
public ResponseResult<Boolean> existId(@RequestParam Integer gradeId) {
return super.baseExistId(gradeId);
@@ -185,6 +192,7 @@ public class GradeController extends BaseController<Grade, GradeDto, Integer> {
* @param queryParam 查询参数。
* @return 应答结果对象,包含符合查询过滤条件的对象结果集。
*/
@ApiOperation(hidden = true, value = "listBy")
@PostMapping("/listBy")
public ResponseResult<List<GradeDto>> listBy(@RequestBody MyQueryParam queryParam) {
return super.baseListBy(queryParam, null);
@@ -196,6 +204,7 @@ public class GradeController extends BaseController<Grade, GradeDto, Integer> {
* @param queryParam 查询参数。
* @return 应答结果对象,包含符合查询过滤条件的对象结果集。
*/
@ApiOperation(hidden = true, value = "getBy")
@PostMapping("/getBy")
public ResponseResult<GradeDto> getBy(@RequestBody MyQueryParam queryParam) {
return super.baseGetBy(queryParam, null);

View File

@@ -1,7 +1,6 @@
package com.orange.demo.courseclassservice.controller;
import cn.jimmyshi.beanquery.BeanQuery;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.Page;
import com.github.pagehelper.page.PageMethod;
import com.orange.demo.courseclassservice.model.*;
@@ -14,6 +13,9 @@ import com.orange.demo.common.core.base.controller.BaseController;
import com.orange.demo.common.core.base.service.BaseService;
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 io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -25,8 +27,9 @@ import java.util.*;
* 校区数据操作控制器类。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Api(tags = "校区数据管理接口")
@Slf4j
@RestController
@RequestMapping("/schoolInfo")
@@ -46,8 +49,9 @@ public class SchoolInfoController extends BaseController<SchoolInfo, SchoolInfoD
* @param schoolInfoDto 新增对象。
* @return 应答结果对象包含新增对象主键Id。
*/
@ApiOperationSupport(ignoreParameters = {"schoolInfo.userId"})
@PostMapping("/add")
public ResponseResult<JSONObject> add(@MyRequestBody("schoolInfo") SchoolInfoDto schoolInfoDto) {
public ResponseResult<Long> add(@MyRequestBody("schoolInfo") SchoolInfoDto schoolInfoDto) {
String errorMessage = MyCommonUtil.getModelValidationError(schoolInfoDto);
if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATAED_FAILED, errorMessage);
@@ -60,9 +64,7 @@ public class SchoolInfoController extends BaseController<SchoolInfo, SchoolInfoD
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATAED_FAILED, errorMessage);
}
schoolInfo = schoolInfoService.saveNew(schoolInfo);
JSONObject responseData = new JSONObject();
responseData.put("schoolId", schoolInfo.getSchoolId());
return ResponseResult.success(responseData);
return ResponseResult.success(schoolInfo.getSchoolId());
}
/**
@@ -131,7 +133,7 @@ public class SchoolInfoController extends BaseController<SchoolInfo, SchoolInfoD
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping("/list")
public ResponseResult<JSONObject> list(
public ResponseResult<MyPageData<SchoolInfoDto>> list(
@MyRequestBody("schoolInfoFilter") SchoolInfoDto schoolInfoDtoFilter,
@MyRequestBody MyOrderParam orderParam,
@MyRequestBody MyPageParam pageParam) {
@@ -193,6 +195,7 @@ public class SchoolInfoController extends BaseController<SchoolInfo, SchoolInfoD
* @param withDict 是否包含字典关联。
* @return 应答结果对象,包含主对象集合。
*/
@ApiOperation(hidden = true, value = "listByIds")
@PostMapping("/listByIds")
public ResponseResult<List<SchoolInfoDto>> listByIds(
@RequestParam Set<Long> schoolIds, @RequestParam Boolean withDict) {
@@ -206,6 +209,7 @@ public class SchoolInfoController extends BaseController<SchoolInfo, SchoolInfoD
* @param withDict 是否包含字典关联。
* @return 应答结果对象,包含主对象数据。
*/
@ApiOperation(hidden = true, value = "getById")
@PostMapping("/getById")
public ResponseResult<SchoolInfoDto> getById(
@RequestParam Long schoolId, @RequestParam Boolean withDict) {
@@ -218,6 +222,7 @@ public class SchoolInfoController extends BaseController<SchoolInfo, SchoolInfoD
* @param schoolIds 主键Id集合。
* @return 应答结果对象包含true全部存在否则false。
*/
@ApiOperation(hidden = true, value = "existIds")
@PostMapping("/existIds")
public ResponseResult<Boolean> existIds(@RequestParam Set<Long> schoolIds) {
return super.baseExistIds(schoolIds);
@@ -229,6 +234,7 @@ public class SchoolInfoController extends BaseController<SchoolInfo, SchoolInfoD
* @param schoolId 主键Id。
* @return 应答结果对象包含true表示存在否则false。
*/
@ApiOperation(hidden = true, value = "existId")
@PostMapping("/existId")
public ResponseResult<Boolean> existId(@RequestParam Long schoolId) {
return super.baseExistId(schoolId);
@@ -240,6 +246,7 @@ public class SchoolInfoController extends BaseController<SchoolInfo, SchoolInfoD
* @param queryParam 查询参数。
* @return 应答结果对象,包含符合查询过滤条件的对象结果集。
*/
@ApiOperation(hidden = true, value = "listBy")
@PostMapping("/listBy")
public ResponseResult<List<SchoolInfoDto>> listBy(@RequestBody MyQueryParam queryParam) {
return super.baseListBy(queryParam, SchoolInfo.INSTANCE);
@@ -251,6 +258,7 @@ public class SchoolInfoController extends BaseController<SchoolInfo, SchoolInfoD
* @param queryParam 查询参数。
* @return 应答结果对象,包含符合查询过滤条件的对象结果集。
*/
@ApiOperation(hidden = true, value = "listMapBy")
@PostMapping("/listMapBy")
public ResponseResult<List<Map<String, Object>>> listMapBy(@RequestBody MyQueryParam queryParam) {
return super.baseListMapBy(queryParam, SchoolInfo.INSTANCE);
@@ -262,6 +270,7 @@ public class SchoolInfoController extends BaseController<SchoolInfo, SchoolInfoD
* @param queryParam 查询参数。
* @return 应答结果对象,包含符合查询过滤条件的对象结果集。
*/
@ApiOperation(hidden = true, value = "getBy")
@PostMapping("/getBy")
public ResponseResult<SchoolInfoDto> getBy(@RequestBody MyQueryParam queryParam) {
return super.baseGetBy(queryParam, SchoolInfo.INSTANCE);
@@ -273,6 +282,7 @@ public class SchoolInfoController extends BaseController<SchoolInfo, SchoolInfoD
* @param queryParam 查询参数。
* @return 应答结果对象,包含结果数量。
*/
@ApiOperation(hidden = true, value = "countBy")
@PostMapping("/countBy")
public ResponseResult<Integer> countBy(@RequestBody MyQueryParam queryParam) {
return super.baseCountBy(queryParam);
@@ -284,6 +294,7 @@ public class SchoolInfoController extends BaseController<SchoolInfo, SchoolInfoD
* @param aggregationParam 聚合参数。
* @return 应该结果对象包含聚合计算后的分组Map列表。
*/
@ApiOperation(hidden = true, value = "aggregateBy")
@PostMapping("/aggregateBy")
public ResponseResult<List<Map<String, Object>>> aggregateBy(@RequestBody MyAggregationParam aggregationParam) {
return super.baseAggregateBy(aggregationParam);

View File

@@ -1,6 +1,5 @@
package com.orange.demo.courseclassservice.controller;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.Page;
import com.github.pagehelper.page.PageMethod;
import com.orange.demo.courseclassservice.model.*;
@@ -13,6 +12,9 @@ import com.orange.demo.common.core.base.controller.BaseController;
import com.orange.demo.common.core.base.service.BaseService;
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 io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -25,8 +27,9 @@ import java.util.stream.Collectors;
* 班级数据操作控制器类。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Api(tags = "班级数据管理接口")
@Slf4j
@RestController
@RequestMapping("/studentClass")
@@ -50,8 +53,9 @@ public class StudentClassController extends BaseController<StudentClass, Student
* @param studentClassDto 新增对象。
* @return 应答结果对象包含新增对象主键Id。
*/
@ApiOperationSupport(ignoreParameters = {"studentClass.userId"})
@PostMapping("/add")
public ResponseResult<JSONObject> add(@MyRequestBody("studentClass") StudentClassDto studentClassDto) {
public ResponseResult<Long> add(@MyRequestBody("studentClass") StudentClassDto studentClassDto) {
String errorMessage = MyCommonUtil.getModelValidationError(studentClassDto);
if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATAED_FAILED, errorMessage);
@@ -64,9 +68,7 @@ public class StudentClassController extends BaseController<StudentClass, Student
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATAED_FAILED, errorMessage);
}
studentClass = studentClassService.saveNew(studentClass);
JSONObject responseData = new JSONObject();
responseData.put("classId", studentClass.getClassId());
return ResponseResult.success(responseData);
return ResponseResult.success(studentClass.getClassId());
}
/**
@@ -135,7 +137,7 @@ public class StudentClassController extends BaseController<StudentClass, Student
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping("/list")
public ResponseResult<JSONObject> list(
public ResponseResult<MyPageData<StudentClassDto>> list(
@MyRequestBody("studentClassFilter") StudentClassDto studentClassDtoFilter,
@MyRequestBody MyOrderParam orderParam,
@MyRequestBody MyPageParam pageParam) {
@@ -187,7 +189,7 @@ public class StudentClassController extends BaseController<StudentClass, Student
* @return 应答结果对象,返回符合条件的数据列表。
*/
@PostMapping("/listNotInClassCourse")
public ResponseResult<JSONObject> listNotInClassCourse(
public ResponseResult<MyPageData<CourseDto>> listNotInClassCourse(
@MyRequestBody Long classId,
@MyRequestBody("courseFilter") CourseDto courseDtoFilter,
@MyRequestBody MyOrderParam orderParam,
@@ -205,8 +207,7 @@ public class StudentClassController extends BaseController<StudentClass, Student
String orderBy = MyOrderParam.buildOrderBy(orderParam, Course.class);
List<Course> courseList =
courseService.getNotInCourseListByClassId(classId, filter, orderBy);
JSONObject responseData = MyPageUtil.makeResponseData(courseList, Course.INSTANCE);
return ResponseResult.success(responseData);
return ResponseResult.success(MyPageUtil.makeResponseData(courseList, Course.INSTANCE));
}
/**
@@ -219,7 +220,7 @@ public class StudentClassController extends BaseController<StudentClass, Student
* @return 应答结果对象,返回符合条件的数据列表。
*/
@PostMapping("/listClassCourse")
public ResponseResult<JSONObject> listClassCourse(
public ResponseResult<MyPageData<CourseDto>> listClassCourse(
@MyRequestBody Long classId,
@MyRequestBody("courseFilter") CourseDto courseDtoFilter,
@MyRequestBody MyOrderParam orderParam,
@@ -237,8 +238,7 @@ public class StudentClassController extends BaseController<StudentClass, Student
String orderBy = MyOrderParam.buildOrderBy(orderParam, Course.class);
List<Course> courseList =
courseService.getCourseListByClassId(classId, filter, orderBy);
JSONObject responseData = MyPageUtil.makeResponseData(courseList, Course.INSTANCE);
return ResponseResult.success(responseData);
return ResponseResult.success(MyPageUtil.makeResponseData(courseList, Course.INSTANCE));
}
/**
@@ -344,7 +344,7 @@ public class StudentClassController extends BaseController<StudentClass, Student
* @return 应答结果对象,返回符合条件的数据列表。
*/
@PostMapping("/listNotInClassStudent")
public ResponseResult<JSONObject> listNotInClassStudent(
public ResponseResult<MyPageData<StudentDto>> listNotInClassStudent(
@MyRequestBody Long classId,
@MyRequestBody("studentFilter") StudentDto studentDtoFilter,
@MyRequestBody MyOrderParam orderParam,
@@ -362,8 +362,7 @@ public class StudentClassController extends BaseController<StudentClass, Student
String orderBy = MyOrderParam.buildOrderBy(orderParam, Student.class);
List<Student> studentList =
studentService.getNotInStudentListByClassId(classId, filter, orderBy);
JSONObject responseData = MyPageUtil.makeResponseData(studentList, Student.INSTANCE);
return ResponseResult.success(responseData);
return ResponseResult.success(MyPageUtil.makeResponseData(studentList, Student.INSTANCE));
}
/**
@@ -376,7 +375,7 @@ public class StudentClassController extends BaseController<StudentClass, Student
* @return 应答结果对象,返回符合条件的数据列表。
*/
@PostMapping("/listClassStudent")
public ResponseResult<JSONObject> listClassStudent(
public ResponseResult<MyPageData<StudentDto>> listClassStudent(
@MyRequestBody Long classId,
@MyRequestBody("studentFilter") StudentDto studentDtoFilter,
@MyRequestBody MyOrderParam orderParam,
@@ -394,8 +393,7 @@ public class StudentClassController extends BaseController<StudentClass, Student
String orderBy = MyOrderParam.buildOrderBy(orderParam, Student.class);
List<Student> studentList =
studentService.getStudentListByClassId(classId, filter, orderBy);
JSONObject responseData = MyPageUtil.makeResponseData(studentList, Student.INSTANCE);
return ResponseResult.success(responseData);
return ResponseResult.success(MyPageUtil.makeResponseData(studentList, Student.INSTANCE));
}
/**
@@ -456,6 +454,7 @@ public class StudentClassController extends BaseController<StudentClass, Student
* @param withDict 是否包含字典关联。
* @return 应答结果对象,包含主对象集合。
*/
@ApiOperation(hidden = true, value = "listByIds")
@PostMapping("/listByIds")
public ResponseResult<List<StudentClassDto>> listByIds(
@RequestParam Set<Long> classIds, @RequestParam Boolean withDict) {
@@ -469,6 +468,7 @@ public class StudentClassController extends BaseController<StudentClass, Student
* @param withDict 是否包含字典关联。
* @return 应答结果对象,包含主对象数据。
*/
@ApiOperation(hidden = true, value = "getById")
@PostMapping("/getById")
public ResponseResult<StudentClassDto> getById(
@RequestParam Long classId, @RequestParam Boolean withDict) {
@@ -481,6 +481,7 @@ public class StudentClassController extends BaseController<StudentClass, Student
* @param classIds 主键Id集合。
* @return 应答结果对象包含true全部存在否则false。
*/
@ApiOperation(hidden = true, value = "existIds")
@PostMapping("/existIds")
public ResponseResult<Boolean> existIds(@RequestParam Set<Long> classIds) {
return super.baseExistIds(classIds);
@@ -492,6 +493,7 @@ public class StudentClassController extends BaseController<StudentClass, Student
* @param classId 主键Id。
* @return 应答结果对象包含true表示存在否则false。
*/
@ApiOperation(hidden = true, value = "existId")
@PostMapping("/existId")
public ResponseResult<Boolean> existId(@RequestParam Long classId) {
return super.baseExistId(classId);
@@ -503,6 +505,7 @@ public class StudentClassController extends BaseController<StudentClass, Student
* @param queryParam 查询参数。
* @return 应答结果对象,包含符合查询过滤条件的对象结果集。
*/
@ApiOperation(hidden = true, value = "listBy")
@PostMapping("/listBy")
public ResponseResult<List<StudentClassDto>> listBy(@RequestBody MyQueryParam queryParam) {
return super.baseListBy(queryParam, StudentClass.INSTANCE);
@@ -514,6 +517,7 @@ public class StudentClassController extends BaseController<StudentClass, Student
* @param queryParam 查询参数。
* @return 应答结果对象,包含符合查询过滤条件的对象结果集。
*/
@ApiOperation(hidden = true, value = "listMapBy")
@PostMapping("/listMapBy")
public ResponseResult<List<Map<String, Object>>> listMapBy(@RequestBody MyQueryParam queryParam) {
return super.baseListMapBy(queryParam, StudentClass.INSTANCE);
@@ -525,6 +529,7 @@ public class StudentClassController extends BaseController<StudentClass, Student
* @param queryParam 查询参数。
* @return 应答结果对象,包含符合查询过滤条件的对象结果集。
*/
@ApiOperation(hidden = true, value = "getBy")
@PostMapping("/getBy")
public ResponseResult<StudentClassDto> getBy(@RequestBody MyQueryParam queryParam) {
return super.baseGetBy(queryParam, StudentClass.INSTANCE);
@@ -536,6 +541,7 @@ public class StudentClassController extends BaseController<StudentClass, Student
* @param queryParam 查询参数。
* @return 应答结果对象,包含结果数量。
*/
@ApiOperation(hidden = true, value = "countBy")
@PostMapping("/countBy")
public ResponseResult<Integer> countBy(@RequestBody MyQueryParam queryParam) {
return super.baseCountBy(queryParam);
@@ -547,6 +553,7 @@ public class StudentClassController extends BaseController<StudentClass, Student
* @param aggregationParam 聚合参数。
* @return 应该结果对象包含聚合计算后的分组Map列表。
*/
@ApiOperation(hidden = true, value = "aggregateBy")
@PostMapping("/aggregateBy")
public ResponseResult<List<Map<String, Object>>> aggregateBy(@RequestBody MyAggregationParam aggregationParam) {
return super.baseAggregateBy(aggregationParam);

View File

@@ -1,7 +1,6 @@
package com.orange.demo.courseclassservice.controller;
import cn.jimmyshi.beanquery.BeanQuery;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.Page;
import com.github.pagehelper.page.PageMethod;
import com.orange.demo.courseclassservice.model.*;
@@ -14,6 +13,9 @@ import com.orange.demo.common.core.base.controller.BaseController;
import com.orange.demo.common.core.base.service.BaseService;
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 io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -25,8 +27,9 @@ import java.util.*;
* 学生数据操作控制器类。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Api(tags = "学生数据管理接口")
@Slf4j
@RestController
@RequestMapping("/student")
@@ -46,8 +49,15 @@ public class StudentController extends BaseController<Student, StudentDto, Long>
* @param studentDto 新增对象。
* @return 应答结果对象包含新增对象主键Id。
*/
@ApiOperationSupport(ignoreParameters = {
"student.studentId",
"student.searchString",
"student.birthdayStart",
"student.birthdayEnd",
"student.registerTimeStart",
"student.registerTimeEnd"})
@PostMapping("/add")
public ResponseResult<JSONObject> add(@MyRequestBody("student") StudentDto studentDto) {
public ResponseResult<Long> add(@MyRequestBody("student") StudentDto studentDto) {
String errorMessage = MyCommonUtil.getModelValidationError(studentDto);
if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATAED_FAILED, errorMessage);
@@ -60,9 +70,7 @@ public class StudentController extends BaseController<Student, StudentDto, Long>
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATAED_FAILED, errorMessage);
}
student = studentService.saveNew(student);
JSONObject responseData = new JSONObject();
responseData.put("studentId", student.getStudentId());
return ResponseResult.success(responseData);
return ResponseResult.success(student.getStudentId());
}
/**
@@ -71,6 +79,12 @@ public class StudentController extends BaseController<Student, StudentDto, Long>
* @param studentDto 更新对象。
* @return 应答结果对象。
*/
@ApiOperationSupport(ignoreParameters = {
"student.searchString",
"student.birthdayStart",
"student.birthdayEnd",
"student.registerTimeStart",
"student.registerTimeEnd"})
@PostMapping("/update")
public ResponseResult<Void> update(@MyRequestBody("student") StudentDto studentDto) {
String errorMessage = MyCommonUtil.getModelValidationError(studentDto, Default.class, UpdateGroup.class);
@@ -131,7 +145,7 @@ public class StudentController extends BaseController<Student, StudentDto, Long>
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping("/list")
public ResponseResult<JSONObject> list(
public ResponseResult<MyPageData<StudentDto>> list(
@MyRequestBody("studentFilter") StudentDto studentDtoFilter,
@MyRequestBody MyOrderParam orderParam,
@MyRequestBody MyPageParam pageParam) {
@@ -193,6 +207,7 @@ public class StudentController extends BaseController<Student, StudentDto, Long>
* @param withDict 是否包含字典关联。
* @return 应答结果对象,包含主对象集合。
*/
@ApiOperation(hidden = true, value = "listByIds")
@PostMapping("/listByIds")
public ResponseResult<List<StudentDto>> listByIds(
@RequestParam Set<Long> studentIds, @RequestParam Boolean withDict) {
@@ -206,6 +221,7 @@ public class StudentController extends BaseController<Student, StudentDto, Long>
* @param withDict 是否包含字典关联。
* @return 应答结果对象,包含主对象数据。
*/
@ApiOperation(hidden = true, value = "getById")
@PostMapping("/getById")
public ResponseResult<StudentDto> getById(
@RequestParam Long studentId, @RequestParam Boolean withDict) {
@@ -218,6 +234,7 @@ public class StudentController extends BaseController<Student, StudentDto, Long>
* @param studentIds 主键Id集合。
* @return 应答结果对象包含true全部存在否则false。
*/
@ApiOperation(hidden = true, value = "existIds")
@PostMapping("/existIds")
public ResponseResult<Boolean> existIds(@RequestParam Set<Long> studentIds) {
return super.baseExistIds(studentIds);
@@ -229,6 +246,7 @@ public class StudentController extends BaseController<Student, StudentDto, Long>
* @param studentId 主键Id。
* @return 应答结果对象包含true表示存在否则false。
*/
@ApiOperation(hidden = true, value = "existId")
@PostMapping("/existId")
public ResponseResult<Boolean> existId(@RequestParam Long studentId) {
return super.baseExistId(studentId);
@@ -240,6 +258,7 @@ public class StudentController extends BaseController<Student, StudentDto, Long>
* @param queryParam 查询参数。
* @return 应答结果对象,包含符合查询过滤条件的对象结果集。
*/
@ApiOperation(hidden = true, value = "listBy")
@PostMapping("/listBy")
public ResponseResult<List<StudentDto>> listBy(@RequestBody MyQueryParam queryParam) {
return super.baseListBy(queryParam, Student.INSTANCE);
@@ -251,6 +270,7 @@ public class StudentController extends BaseController<Student, StudentDto, Long>
* @param queryParam 查询参数。
* @return 应答结果对象,包含符合查询过滤条件的对象结果集。
*/
@ApiOperation(hidden = true, value = "listMapBy")
@PostMapping("/listMapBy")
public ResponseResult<List<Map<String, Object>>> listMapBy(@RequestBody MyQueryParam queryParam) {
return super.baseListMapBy(queryParam, Student.INSTANCE);
@@ -262,6 +282,7 @@ public class StudentController extends BaseController<Student, StudentDto, Long>
* @param queryParam 查询参数。
* @return 应答结果对象,包含符合查询过滤条件的对象结果集。
*/
@ApiOperation(hidden = true, value = "getBy")
@PostMapping("/getBy")
public ResponseResult<StudentDto> getBy(@RequestBody MyQueryParam queryParam) {
return super.baseGetBy(queryParam, Student.INSTANCE);
@@ -273,6 +294,7 @@ public class StudentController extends BaseController<Student, StudentDto, Long>
* @param queryParam 查询参数。
* @return 应答结果对象,包含结果数量。
*/
@ApiOperation(hidden = true, value = "countBy")
@PostMapping("/countBy")
public ResponseResult<Integer> countBy(@RequestBody MyQueryParam queryParam) {
return super.baseCountBy(queryParam);
@@ -284,6 +306,7 @@ public class StudentController extends BaseController<Student, StudentDto, Long>
* @param aggregationParam 聚合参数。
* @return 应该结果对象包含聚合计算后的分组Map列表。
*/
@ApiOperation(hidden = true, value = "aggregateBy")
@PostMapping("/aggregateBy")
public ResponseResult<List<Map<String, Object>>> aggregateBy(@RequestBody MyAggregationParam aggregationParam) {
return super.baseAggregateBy(aggregationParam);

View File

@@ -7,7 +7,7 @@ import com.orange.demo.courseclassservice.model.AreaCode;
* 行政区划数据操作访问接口。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public interface AreaCodeMapper extends BaseDaoMapper<AreaCode> {
}

View File

@@ -7,7 +7,7 @@ import com.orange.demo.courseclassservice.model.ClassCourse;
* 数据操作访问接口。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public interface ClassCourseMapper extends BaseDaoMapper<ClassCourse> {
}

View File

@@ -7,7 +7,7 @@ import com.orange.demo.courseclassservice.model.ClassStudent;
* 数据操作访问接口。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public interface ClassStudentMapper extends BaseDaoMapper<ClassStudent> {
}

View File

@@ -10,7 +10,7 @@ import java.util.*;
* 课程数据数据操作访问接口。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public interface CourseMapper extends BaseDaoMapper<Course> {

View File

@@ -7,7 +7,7 @@ import com.orange.demo.courseclassservice.model.Grade;
* 年级数据操作访问接口。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public interface GradeMapper extends BaseDaoMapper<Grade> {
}

View File

@@ -7,7 +7,7 @@ import com.orange.demo.courseclassservice.model.MaterialEdition;
* 数据操作访问接口。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public interface MaterialEditionMapper extends BaseDaoMapper<MaterialEdition> {
}

View File

@@ -10,7 +10,7 @@ import java.util.*;
* 校区数据数据操作访问接口。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public interface SchoolInfoMapper extends BaseDaoMapper<SchoolInfo> {

View File

@@ -10,7 +10,7 @@ import java.util.*;
* 班级数据数据操作访问接口。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public interface StudentClassMapper extends BaseDaoMapper<StudentClass> {

View File

@@ -10,7 +10,7 @@ import java.util.*;
* 学生数据数据操作访问接口。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public interface StudentMapper extends BaseDaoMapper<Student> {

View File

@@ -68,7 +68,7 @@
</if>
<include refid="filterRef"/>
</where>
<if test="orderBy != null">
<if test="orderBy != null and orderBy != ''">
ORDER BY ${orderBy}
</if>
</select>
@@ -98,7 +98,7 @@
AND zz_class_course.course_id = zz_course.course_id
<include refid="filterRef"/>
</where>
<if test="orderBy != null">
<if test="orderBy != null and orderBy != ''">
ORDER BY ${orderBy}
</if>
</select>
@@ -113,7 +113,7 @@
WHERE zz_class_course.class_id = #{classId} AND zz_class_course.course_id = zz_course.course_id)
<include refid="filterRef"/>
</where>
<if test="orderBy != null">
<if test="orderBy != null and orderBy != ''">
ORDER BY ${orderBy}
</if>
</select>

View File

@@ -34,7 +34,7 @@
</if>
<include refid="filterRef"/>
</where>
<if test="orderBy != null">
<if test="orderBy != null and orderBy != ''">
ORDER BY ${orderBy}
</if>
</select>

View File

@@ -39,7 +39,7 @@
</if>
<include refid="filterRef"/>
</where>
<if test="orderBy != null">
<if test="orderBy != null and orderBy != ''">
ORDER BY ${orderBy}
</if>
</select>

View File

@@ -69,7 +69,7 @@
</if>
<include refid="filterRef"/>
</where>
<if test="orderBy != null">
<if test="orderBy != null and orderBy != ''">
ORDER BY ${orderBy}
</if>
</select>
@@ -98,7 +98,7 @@
AND zz_class_student.student_id = zz_student.student_id
<include refid="filterRef"/>
</where>
<if test="orderBy != null">
<if test="orderBy != null and orderBy != ''">
ORDER BY ${orderBy}
</if>
</select>
@@ -113,7 +113,7 @@
WHERE zz_class_student.class_id = #{classId} AND zz_class_student.student_id = zz_student.student_id)
<include refid="filterRef"/>
</where>
<if test="orderBy != null">
<if test="orderBy != null and orderBy != ''">
ORDER BY ${orderBy}
</if>
</select>

View File

@@ -8,7 +8,7 @@ import javax.persistence.*;
* 行政区划实体对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Data
@Table(name = "zz_area_code")

View File

@@ -8,7 +8,7 @@ import javax.validation.constraints.*;
* ClassCourse实体对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Data
@Table(name = "zz_class_course")

View File

@@ -8,7 +8,7 @@ import javax.validation.constraints.*;
* ClassStudent实体对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Data
@Table(name = "zz_class_student")

View File

@@ -23,7 +23,7 @@ import java.util.Map;
* Course实体对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Data
@Table(name = "zz_course")

View File

@@ -10,7 +10,7 @@ import javax.validation.constraints.*;
* Grade实体对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Data
@Table(name = "zz_grade")

View File

@@ -8,7 +8,7 @@ import javax.validation.constraints.*;
* MaterialEdition实体对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Data
@Table(name = "zz_material_edition")

View File

@@ -15,7 +15,7 @@ import java.util.Map;
* SchoolInfo实体对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Data
@Table(name = "zz_school_info")

View File

@@ -21,7 +21,7 @@ import java.util.Map;
* Student实体对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Data
@Table(name = "zz_student")

View File

@@ -21,7 +21,7 @@ import java.util.Map;
* StudentClass实体对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Data
@Table(name = "zz_class")

View File

@@ -17,7 +17,7 @@ import java.util.List;
* 行政区划的Service类。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Service
public class AreaCodeService extends BaseDictService<AreaCode, AreaCodeDto, Long> {

View File

@@ -21,7 +21,7 @@ import java.util.*;
* 课程数据数据操作服务类。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Service
public class CourseService extends BaseService<Course, CourseDto, Long> {

View File

@@ -18,7 +18,7 @@ import javax.annotation.PostConstruct;
* 年级数据操作服务类。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Service
public class GradeService extends BaseDictService<Grade, GradeDto, Integer> {

View File

@@ -20,7 +20,7 @@ import java.util.*;
* 校区数据数据操作服务类。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Service
public class SchoolInfoService extends BaseService<SchoolInfo, SchoolInfoDto, Long> {
@@ -77,7 +77,6 @@ public class SchoolInfoService extends BaseService<SchoolInfo, SchoolInfoDto, Lo
@Transactional(rollbackFor = Exception.class)
public boolean remove(Long schoolId) {
return schoolInfoMapper.deleteByPrimaryKey(schoolId) != 0;
// 这里可继续删除关联数据。
}
/**

View File

@@ -23,7 +23,7 @@ import java.util.*;
* 班级数据数据操作服务类。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Service
public class StudentClassService extends BaseService<StudentClass, StudentClassDto, Long> {
@@ -102,7 +102,6 @@ public class StudentClassService extends BaseService<StudentClass, StudentClassD
if (studentClassMapper.updateByExampleSelective(deletedObject, studentClassExample) == 0) {
return false;
}
// 这里可继续删除关联数据。
// 开始删除多对多子表的关联
ClassCourse classCourse = new ClassCourse();
classCourse.setClassId(classId);

View File

@@ -21,7 +21,7 @@ import java.util.*;
* 学生数据数据操作服务类。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Service
public class StudentService extends BaseService<Student, StudentDto, Long> {

View File

@@ -59,6 +59,9 @@
<Root level="${OUTPUT_LOG_LEVEL}">
<AppenderRef ref="console"/>
</Root>
<Logger name="springfox.documentation" additivity="false" level="error">
<AppenderRef ref="console"/>
</Logger>
<!-- AsyncLogger 是基于Disruptor的全量异步队列性能极高队列默认大小4096。-->
<!-- 队列默认值可通过JVM参数设置参考博客https://www.jianshu.com/p/82469047acbf -->
<AsyncLogger name="com.orange.demo" additivity="false" level="info">

View File

@@ -15,6 +15,31 @@
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-spring-ui:2.0.5" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.5.20" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-spi:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-core:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-schema:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger-common:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-spring-web:2.9.2" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:guava:28.2-android" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:failureaccess:1.0.1" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava" level="project" />
<orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:3.0.2" level="project" />
<orderEntry type="library" name="Maven: org.checkerframework:checker-compat-qual:2.5.5" level="project" />
<orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.3.4" level="project" />
<orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.3" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml:classmate:1.5.1" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.30" level="project" />
<orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-core:1.2.0.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-beans:5.2.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context:5.2.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-expression:5.2.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-metadata:1.2.0.RELEASE" level="project" />
<orderEntry type="library" name="Maven: io.swagger:swagger-models:1.5.21" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.10.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-bean-validators:2.9.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-gateway:2.2.2.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter:2.2.2.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.security:spring-security-rsa:1.0.9.RELEASE" level="project" />
@@ -39,7 +64,6 @@
<orderEntry type="library" name="Maven: jakarta.validation:jakarta.validation-api:2.0.2" level="project" />
<orderEntry type="library" name="Maven: org.hibernate.validator:hibernate-validator:6.0.18.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.4.1.Final" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml:classmate:1.5.1" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-webflux:5.2.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.synchronoss.cloud:nio-multipart-parser:1.1.0" level="project" />
<orderEntry type="library" name="Maven: org.synchronoss.cloud:nio-stream-storage:1.1.3" level="project" />
@@ -72,13 +96,6 @@
<orderEntry type="library" name="Maven: org.jodd:jodd-bean:5.0.13" level="project" />
<orderEntry type="library" name="Maven: org.jodd:jodd-core:5.0.13" level="project" />
<orderEntry type="module" module-name="common-core" />
<orderEntry type="library" name="Maven: com.google.guava:guava:28.2-android" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:failureaccess:1.0.1" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava" level="project" />
<orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:3.0.2" level="project" />
<orderEntry type="library" name="Maven: org.checkerframework:checker-compat-qual:2.5.5" level="project" />
<orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.3.4" level="project" />
<orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.3" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.9" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.13" level="project" />
<orderEntry type="library" name="Maven: commons-io:commons-io:2.6" level="project" />
@@ -86,9 +103,9 @@
<orderEntry type="library" name="Maven: joda-time:joda-time:2.10.5" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.4" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-csv:1.8" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.1.5" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.4.5" level="project" />
<orderEntry type="library" name="Maven: io.jsonwebtoken:jjwt:0.9.1" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.70" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.74" level="project" />
<orderEntry type="library" name="Maven: com.github.ben-manes.caffeine:caffeine:2.8.1" level="project" />
<orderEntry type="library" name="Maven: org.checkerframework:checker-qual:3.1.0" level="project" />
<orderEntry type="library" name="Maven: cn.jimmyshi:bean-query:1.1.5" level="project" />
@@ -165,7 +182,6 @@
<orderEntry type="library" name="Maven: com.alibaba.csp:sentinel-cluster-client-default:1.7.1" level="project" />
<orderEntry type="library" name="Maven: com.alibaba.cloud:spring-cloud-alibaba-sentinel-datasource:2.2.1.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.10.2" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.10.2" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.10.2" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.woodstox:stax2-api:4.2" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.woodstox:woodstox-core:5.0.3" level="project" />
@@ -178,9 +194,6 @@
<orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5" level="project" />
<orderEntry type="library" name="Maven: org.freemarker:freemarker:2.3.29" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context-support:5.2.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-beans:5.2.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context:5.2.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-expression:5.2.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: javax.servlet:javax.servlet-api:4.0.1" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-log4j2:2.2.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-slf4j-impl:2.12.1" level="project" />
@@ -241,7 +254,6 @@
<orderEntry type="library" name="Maven: com.github.luben:zstd-jni:1.4.3-1" level="project" />
<orderEntry type="library" name="Maven: org.lz4:lz4-java:1.6.0" level="project" />
<orderEntry type="library" name="Maven: org.xerial.snappy:snappy-java:1.1.7.3" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.30" level="project" />
<orderEntry type="library" name="Maven: org.scala-lang:scala-library:2.12.10" level="project" />
<orderEntry type="library" name="Maven: com.lmax:disruptor:3.4.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:2.2.5.RELEASE" level="project" />

View File

@@ -14,6 +14,33 @@
<packaging>jar</packaging>
<dependencies>
<!-- swagger和knife4j相关集成-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-ui</artifactId>
<version>${knife4j.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${springfox.version}</version>
<exclusions>
<exclusion>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
<version>${swagger.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-bean-validators</artifactId>
<version>${springfox.version}</version>
</dependency>
<!-- 网关服务 -->
<dependency>
<groupId>org.springframework.cloud</groupId>

View File

@@ -18,7 +18,7 @@ import org.springframework.web.bind.annotation.RestController;
* 网关服务启动类。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})
@SpringCloudApplication

View File

@@ -5,11 +5,13 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.context.annotation.Configuration;
import java.util.Set;
/**
* 网关业务配置类。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Data
@RefreshScope
@@ -18,7 +20,7 @@ import org.springframework.context.annotation.Configuration;
public class ApplicationConfig {
/**
* token加密时的盐
* token加密用的密钥该值的长度最少10个字符(过短会报错)。
*/
private String tokenSigningKey;
/**
@@ -47,4 +49,12 @@ public class ApplicationConfig {
* 缺省值是 one day
*/
private int permRedisExpiredSeconds = 86400;
/**
* 基于完全等于(equals)判定规则的白名单地址集合过滤效率高于whitelistUrlPattern。
*/
private Set<String> whitelistUrl;
/**
* 基于Ant Pattern模式判定规则的白名单地址集合。如/aa/**。
*/
private Set<String> whitelistUrlPattern;
}

View File

@@ -12,7 +12,7 @@ import org.springframework.web.util.pattern.PathPatternParser;
* 跨域信任配置类。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Configuration
public class CorsConfig {

View File

@@ -11,7 +11,7 @@ import java.nio.charset.StandardCharsets;
* Web通用过滤器配置类。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Configuration
public class FilterConfig {

View File

@@ -17,7 +17,7 @@ import java.util.*;
* Spring Cloud Gateway的Sentinel流控配置类。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Configuration
public class SentinelConfig {

View File

@@ -0,0 +1,52 @@
package com.orange.demo.gateway.config;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.gateway.config.GatewayProperties;
import org.springframework.cloud.gateway.route.RouteLocator;
import org.springframework.cloud.gateway.support.NameUtils;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Component;
import springfox.documentation.swagger.web.SwaggerResource;
import springfox.documentation.swagger.web.SwaggerResourcesProvider;
import java.util.ArrayList;
import java.util.List;
/***
* 返回Swagger UI需要读取的资源数据这里是微服务的路由数据。
*
* @author Knife4j Team。
* @date 2020-08-08
*/
@Slf4j
@Component
@Primary
@AllArgsConstructor
public class SwaggerResourceConfig implements SwaggerResourcesProvider {
private final RouteLocator routeLocator;
private final GatewayProperties gatewayProperties;
@Override
public List<SwaggerResource> get() {
List<SwaggerResource> resources = new ArrayList<>();
List<String> routes = new ArrayList<>();
routeLocator.getRoutes().subscribe(route -> routes.add(route.getId()));
gatewayProperties.getRoutes().stream().filter(routeDefinition -> routes.contains(routeDefinition.getId()))
.forEach(route -> route.getPredicates().stream()
.filter(predicateDefinition -> ("Path").equalsIgnoreCase(predicateDefinition.getName()))
.forEach(predicateDefinition -> resources.add(swaggerResource(route.getId(),
predicateDefinition.getArgs().get(NameUtils.GENERATED_NAME_PREFIX + "0")
.replace("**", "v2/api-docs")))));
return resources;
}
private SwaggerResource swaggerResource(String name, String location) {
SwaggerResource swaggerResource = new SwaggerResource();
swaggerResource.setName(name);
swaggerResource.setLocation(location);
swaggerResource.setSwaggerVersion("2.0");
return swaggerResource;
}
}

View File

@@ -4,7 +4,7 @@ package com.orange.demo.gateway.constant;
* 网关业务相关的常量对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public final class GatewayConstant {

View File

@@ -12,7 +12,6 @@ import com.orange.demo.common.core.util.RedisKeyUtil;
import com.orange.demo.gateway.config.ApplicationConfig;
import com.orange.demo.gateway.constant.GatewayConstant;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.reactivestreams.Publisher;
import org.springframework.beans.factory.annotation.Autowired;
@@ -46,7 +45,7 @@ import java.util.Map;
* 全局后处理过滤器。主要用于将用户的会话信息存到缓存服务器,以及在登出时清除缓存中的会话数据。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Slf4j
public class AuthenticationPostFilter implements GlobalFilter, Ordered {
@@ -235,21 +234,12 @@ public class AuthenticationPostFilter implements GlobalFilter, Ordered {
}
t.exec();
}
// 4. 构造返回给用户的应答
JSONObject resultJsonData = new JSONObject();
resultJsonData.put(TokenData.REQUEST_ATTRIBUTE_NAME, token);
resultJsonData.put("isAdmin", isAdmin);
resultJsonData.put("showName", showName);
JSONArray menuList = loginData.getJSONArray("menuList");
if (CollectionUtils.isNotEmpty(menuList)) {
resultJsonData.put("menuList", menuList);
// 4. 构造返回给用户的应答,将加密后的令牌返回给前端。
loginData.put(TokenData.REQUEST_ATTRIBUTE_NAME, token);
// 如果是管理员,不用返回权限字列表。
if (Boolean.TRUE.equals(isAdmin)) {
loginData.remove("permCodeList");
}
if (Boolean.FALSE.equals(isAdmin)) {
JSONArray permCodeList = loginData.getJSONArray("permCodeList");
if (CollectionUtils.isNotEmpty(permCodeList)) {
resultJsonData.put("permCodeList", permCodeList);
}
}
return ResponseResult.success(resultJsonData);
return ResponseResult.success(loginData);
}
}

View File

@@ -12,6 +12,7 @@ import com.orange.demo.gateway.config.ApplicationConfig;
import com.orange.demo.gateway.constant.GatewayConstant;
import io.jsonwebtoken.Claims;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
@@ -21,6 +22,7 @@ import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.util.AntPathMatcher;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -30,15 +32,13 @@ import redis.clients.jedis.JedisPool;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
/**
* 全局前处理过滤器。主要用于用户操作权限验证。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Slf4j
public class AuthenticationPreFilter implements GlobalFilter, Ordered {
@@ -47,20 +47,18 @@ public class AuthenticationPreFilter implements GlobalFilter, Ordered {
private ApplicationConfig appConfig;
@Autowired
private JedisPool jedisPool;
private static List<String> whitelistUrlPattern = new LinkedList<>();
static {
// 这里可以添加URL部分匹配的白名单列表
// 另外解释一下数据库中配置的白名单列表在doLogin中直接合并到当前用户的权限列表中了。
}
/**
* Ant Pattern模式的白名单地址匹配器。
*/
private AntPathMatcher antMatcher = new AntPathMatcher();
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
ServerHttpRequest request = exchange.getRequest();
ServerHttpResponse response = exchange.getResponse();
String url = request.getURI().getPath();
// 登录请求直接转发给login验证服务器
if (url.equals(GatewayConstant.ADMIN_LOGIN_URL)) {
// 判断是否为白名单请求,以及一些内置不需要验证的请求。(登录请求也包含其中)
if (this.shouldNotFilter(url)) {
return chain.filter(exchange);
}
String token = this.getTokenFromRequest(request);
@@ -155,15 +153,37 @@ public class AuthenticationPreFilter implements GlobalFilter, Ordered {
private boolean hasPermission(Jedis jedis, String sessionId, String url) {
// 对于退出登录操作,不需要进行权限验证,仅仅确认是已经登录的合法用户即可。
if (url.equals(GatewayConstant.ADMIN_LOGOUT_URL)
|| Boolean.TRUE.equals(jedis.sismember(RedisKeyUtil.makeSessionPermIdKeyForRedis(sessionId), url))) {
return url.equals(GatewayConstant.ADMIN_LOGOUT_URL)
|| Boolean.TRUE.equals(jedis.sismember(RedisKeyUtil.makeSessionPermIdKeyForRedis(sessionId), url));
}
/**
* 判断当前请求的url是否为配置中的白名单地址。以及一些内置的不需要登录即可访问的url。
* @param url 请求的url。
* @return 是返回true否则false。
*/
private boolean shouldNotFilter(String url) {
// 这里过滤和swagger相关的url
if (url.endsWith("/v2/api-docs") || url.endsWith("/v2/api-docs-ext")) {
return true;
}
for (String urlPattern : whitelistUrlPattern) {
if (url.startsWith(urlPattern)) {
if (url.equals(GatewayConstant.ADMIN_LOGIN_URL)) {
return true;
}
// 先过滤直接匹配的白名单url。
if (CollectionUtils.isNotEmpty(appConfig.getWhitelistUrl())) {
if (appConfig.getWhitelistUrl().contains(url)) {
return true;
}
}
// 过滤ant pattern模式的白名单url。
if (CollectionUtils.isNotEmpty(appConfig.getWhitelistUrlPattern())) {
for (String urlPattern : appConfig.getWhitelistUrlPattern()) {
if (antMatcher.match(urlPattern, url)) {
return true;
}
}
}
return false;
}
}

View File

@@ -17,7 +17,7 @@ import reactor.core.publisher.Mono;
* 为整个链路生成唯一的traceId并存储在Request Head中。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Slf4j
public class RequestLogFilter implements GlobalFilter, Ordered {

View File

@@ -16,7 +16,7 @@ import reactor.core.publisher.Mono;
* 将整个链路的traceId存储在Response Head中并返回给前端便于问题定位。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Slf4j
public class ResponseLogFilter implements GlobalFilter, Ordered {

View File

@@ -0,0 +1,53 @@
package com.orange.demo.gateway.handler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Mono;
import springfox.documentation.swagger.web.*;
import java.util.Optional;
/**
* Swagger的资源请求处理器。
*
* @author Knife4j Team。
* @date 2020-08-08
*/
@RestController
public class SwaggerHandler {
@Autowired(required = false)
private SecurityConfiguration securityConfiguration;
@Autowired(required = false)
private UiConfiguration uiConfiguration;
private final SwaggerResourcesProvider swaggerResources;
@Autowired
public SwaggerHandler(SwaggerResourcesProvider swaggerResources) {
this.swaggerResources = swaggerResources;
}
@GetMapping("/swagger-resources/configuration/security")
public Mono<ResponseEntity<SecurityConfiguration>> securityConfiguration() {
return Mono.just(new ResponseEntity<>(
Optional.ofNullable(securityConfiguration)
.orElse(SecurityConfigurationBuilder.builder().build()), HttpStatus.OK));
}
@GetMapping("/swagger-resources/configuration/ui")
public Mono<ResponseEntity<UiConfiguration>> uiConfiguration() {
return Mono.just(new ResponseEntity<>(
Optional.ofNullable(uiConfiguration)
.orElse(UiConfigurationBuilder.builder().build()), HttpStatus.OK));
}
@GetMapping("/swagger-resources")
public Mono<ResponseEntity> swaggerResources() {
return Mono.just((new ResponseEntity<>(swaggerResources.get(), HttpStatus.OK)));
}
}

View File

@@ -59,6 +59,9 @@
<Root level="${OUTPUT_LOG_LEVEL}">
<AppenderRef ref="console"/>
</Root>
<Logger name="springfox.documentation" additivity="false" level="error">
<AppenderRef ref="console"/>
</Logger>
<!-- AsyncLogger 是基于Disruptor的全量异步队列性能极高队列默认大小4096。-->
<!-- 队列默认值可通过JVM参数设置参考博客https://www.jianshu.com/p/82469047acbf -->
<AsyncLogger name="com.orange.demo" additivity="false" level="info">

View File

@@ -26,5 +26,11 @@
<artifactId>common-core</artifactId>
<version>1.0.0</version>
</dependency>
<!-- knife4j 接口文档框架 -->
<dependency>
<groupId>com.orange.demo</groupId>
<artifactId>common-swagger</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
</project>

View File

@@ -17,7 +17,7 @@ import java.util.*;
* 课程统计服务远程数据操作访问接口。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@FeignClient(
name = "stats",

View File

@@ -17,7 +17,7 @@ import java.util.*;
* 学生行为统计服务远程数据操作访问接口。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@FeignClient(
name = "stats",

View File

@@ -17,7 +17,7 @@ import java.util.*;
* 学生行为流水服务远程数据操作访问接口。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@FeignClient(
name = "stats",

View File

@@ -4,6 +4,8 @@ import com.orange.demo.common.core.validator.UpdateGroup;
import com.orange.demo.common.core.validator.ConstDictRef;
import com.orange.demo.application.common.constant.Subject;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.*;
@@ -15,26 +17,30 @@ import java.util.Map;
* CourseTransStatsDto对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@ApiModel("CourseTransStatsDto实体对象")
@Data
public class CourseTransStatsDto {
/**
* 主键Id。
*/
@ApiModelProperty(value = "主键Id", required = true)
@NotNull(message = "数据验证失败主键Id不能为空", groups = {UpdateGroup.class})
private Long statsId;
/**
* 统计日期。
*/
@ApiModelProperty(value = "统计日期", required = true)
@NotNull(message = "数据验证失败,统计日期不能为空!")
private Date statsDate;
/**
* 科目Id。
*/
@ApiModelProperty(value = "科目Id", required = true)
@NotNull(message = "数据验证失败,所属科目不能为空!")
@ConstDictRef(constDictClass = Subject.class, message = "数据验证失败,所属科目为无效值!")
private Integer subjectId;
@@ -42,65 +48,77 @@ public class CourseTransStatsDto {
/**
* 年级Id。
*/
@ApiModelProperty(value = "年级Id", required = true)
@NotNull(message = "数据验证失败,所属年级不能为空!")
private Integer gradeId;
/**
* 年级名称。
*/
@ApiModelProperty(value = "年级名称")
private String gradeName;
/**
* 课程Id。
*/
@ApiModelProperty(value = "课程Id", required = true)
@NotNull(message = "数据验证失败课程ID不能为空")
private Long courseId;
/**
* 课程名称。
*/
@ApiModelProperty(value = "课程名称")
private String courseName;
/**
* 学生上课次数。
*/
@ApiModelProperty(value = "学生上课次数", required = true)
@NotNull(message = "数据验证失败,上课次数不能为空!")
private Integer studentAttendCount;
/**
* 学生献花数量。
*/
@ApiModelProperty(value = "学生献花数量", required = true)
@NotNull(message = "数据验证失败,献花数量不能为空!")
private Integer studentFlowerAmount;
/**
* 学生献花次数。
*/
@ApiModelProperty(value = "学生献花次数", required = true)
@NotNull(message = "数据验证失败,献花次数不能为空!")
private Integer studentFlowerCount;
/**
* statsDate 范围过滤起始值(>=)。
*/
@ApiModelProperty(value = "statsDate 范围过滤起始值(>=)")
private String statsDateStart;
/**
* statsDate 范围过滤结束值(<=)。
*/
@ApiModelProperty(value = "statsDate 范围过滤结束值(<=)")
private String statsDateEnd;
/**
* gradeId 字典关联数据。
*/
@ApiModelProperty(hidden = true)
private Map<String, Object> gradeIdDictMap;
/**
* courseId 字典关联数据。
*/
@ApiModelProperty(hidden = true)
private Map<String, Object> courseIdDictMap;
/**
* subjectId 常量字典关联数据。
*/
@ApiModelProperty(hidden = true)
private Map<String, Object> subjectIdDictMap;
}

View File

@@ -2,6 +2,8 @@ package com.orange.demo.statsinterface.dto;
import com.orange.demo.common.core.validator.UpdateGroup;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.*;
@@ -13,158 +15,185 @@ import java.util.Map;
* StudentActionStatsDto对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@ApiModel("StudentActionStatsDto实体对象")
@Data
public class StudentActionStatsDto {
/**
* 主键Id。
*/
@ApiModelProperty(value = "主键Id", required = true)
@NotNull(message = "数据验证失败主键Id不能为空", groups = {UpdateGroup.class})
private Long statsId;
/**
* 统计日期。
*/
@ApiModelProperty(value = "统计日期", required = true)
@NotNull(message = "数据验证失败,统计日期不能为空!")
private Date statsDate;
/**
* 统计小时。
*/
@ApiModelProperty(value = "统计小时")
private Date statsMonth;
/**
* 年级Id。
*/
@ApiModelProperty(value = "年级Id", required = true)
@NotNull(message = "数据验证失败,所属年级不能为空!")
private Integer gradeId;
/**
* 学生所在省Id。
*/
@ApiModelProperty(value = "学生所在省Id", required = true)
@NotNull(message = "数据验证失败,所在省份不能为空!")
private Long provinceId;
/**
* 学生所在城市Id。
*/
@ApiModelProperty(value = "学生所在城市Id", required = true)
@NotNull(message = "数据验证失败,所在城市不能为空!")
private Long cityId;
/**
* 购课学币数量。
*/
@ApiModelProperty(value = "购课学币数量", required = true)
@NotNull(message = "数据验证失败,购课学币数量不能为空!")
private Integer buyCourseAmount;
/**
* 购买课程次数。
*/
@ApiModelProperty(value = "购买课程次数", required = true)
@NotNull(message = "数据验证失败,购买课程次数不能为空!")
private Integer buyCourseCount;
/**
* 购买视频学币数量。
*/
@ApiModelProperty(value = "购买视频学币数量", required = true)
@NotNull(message = "数据验证失败,购买视频学币数量不能为空!")
private Integer buyVideoAmount;
/**
* 购买视频次数。
*/
@ApiModelProperty(value = "购买视频次数", required = true)
@NotNull(message = "数据验证失败,购买视频次数不能为空!")
private Integer buyVideoCount;
/**
* 购买作业学币数量。
*/
@ApiModelProperty(value = "购买作业学币数量", required = true)
@NotNull(message = "数据验证失败,购买作业学币数量不能为空!")
private Integer buyPaperAmount;
/**
* 购买作业次数。
*/
@ApiModelProperty(value = "购买作业次数", required = true)
@NotNull(message = "数据验证失败,购买作业次数不能为空!")
private Integer buyPaperCount;
/**
* 购买献花数量。
*/
@ApiModelProperty(value = "购买献花数量", required = true)
@NotNull(message = "数据验证失败,购买献花数量不能为空!")
private Integer buyFlowerAmount;
/**
* 购买献花次数。
*/
@ApiModelProperty(value = "购买献花次数", required = true)
@NotNull(message = "数据验证失败,购买献花次数不能为空!")
private Integer buyFlowerCount;
/**
* 充值学币数量。
*/
@ApiModelProperty(value = "充值学币数量", required = true)
@NotNull(message = "数据验证失败,充值学币数量不能为空!")
private Integer rechargeCoinAmount;
/**
* 充值学币次数。
*/
@ApiModelProperty(value = "充值学币次数", required = true)
@NotNull(message = "数据验证失败,充值学币次数不能为空!")
private Integer rechargeCoinCount;
/**
* 线下课程上课次数。
*/
@ApiModelProperty(value = "线下课程上课次数", required = true)
@NotNull(message = "数据验证失败,线下课程上课次数不能为空!")
private Integer doCourseCount;
/**
* 观看视频次数。
*/
@ApiModelProperty(value = "观看视频次数", required = true)
@NotNull(message = "数据验证失败,观看视频次数不能为空!")
private Integer watchVideoCount;
/**
* 购买献花消费学币数量。
*/
@ApiModelProperty(value = "购买献花消费学币数量", required = true)
@NotNull(message = "数据验证失败,购买献花消费学币数量不能为空!")
private Integer watchVideoTotalSecond;
/**
* 做题数量。
*/
@ApiModelProperty(value = "做题数量", required = true)
@NotNull(message = "数据验证失败,做题数量不能为空!")
private Integer doExerciseCount;
/**
* 做题正确的数量。
*/
@ApiModelProperty(value = "做题正确的数量", required = true)
@NotNull(message = "数据验证失败,做题正确的数量不能为空!")
private Integer doExerciseCorrectCount;
/**
* statsDate 范围过滤起始值(>=)。
*/
@ApiModelProperty(value = "statsDate 范围过滤起始值(>=)")
private String statsDateStart;
/**
* statsDate 范围过滤结束值(<=)。
*/
@ApiModelProperty(value = "statsDate 范围过滤结束值(<=)")
private String statsDateEnd;
/**
* gradeId 字典关联数据。
*/
@ApiModelProperty(hidden = true)
private Map<String, Object> gradeIdDictMap;
/**
* provinceId 字典关联数据。
*/
@ApiModelProperty(hidden = true)
private Map<String, Object> provinceIdDictMap;
/**
* cityId 字典关联数据。
*/
@ApiModelProperty(hidden = true)
private Map<String, Object> cityIdDictMap;
}

View File

@@ -5,6 +5,8 @@ import com.orange.demo.common.core.validator.ConstDictRef;
import com.orange.demo.application.common.constant.StudentActionType;
import com.orange.demo.application.common.constant.DeviceType;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.*;
@@ -16,44 +18,51 @@ import java.util.Map;
* StudentActionTransDto对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@ApiModel("StudentActionTransDto实体对象")
@Data
public class StudentActionTransDto {
/**
* 主键Id。
*/
@ApiModelProperty(value = "主键Id", required = true)
@NotNull(message = "数据验证失败主键Id不能为空", groups = {UpdateGroup.class})
private Long transId;
/**
* 学生Id。
*/
@ApiModelProperty(value = "学生Id", required = true)
@NotNull(message = "数据验证失败学生Id不能为空")
private Long studentId;
/**
* 学生名称。
*/
@ApiModelProperty(value = "学生名称", required = true)
@NotBlank(message = "数据验证失败,学生名称不能为空!")
private String studentName;
/**
* 学生校区。
*/
@ApiModelProperty(value = "学生校区", required = true)
@NotNull(message = "数据验证失败,学生校区不能为空!")
private Long schoolId;
/**
* 年级Id。
*/
@ApiModelProperty(value = "年级Id", required = true)
@NotNull(message = "数据验证失败,所属年级不能为空!")
private Integer gradeId;
/**
* 行为类型(0: 充值 1: 购课 2: 上课签到 3: 上课签退 4: 看视频课 5: 做作业 6: 刷题 7: 献花)。
*/
@ApiModelProperty(value = "行为类型(0: 充值 1: 购课 2: 上课签到 3: 上课签退 4: 看视频课 5: 做作业 6: 刷题 7: 献花)", required = true)
@NotNull(message = "数据验证失败,行为类型不能为空!")
@ConstDictRef(constDictClass = StudentActionType.class, message = "数据验证失败,行为类型为无效值!")
private Integer actionType;
@@ -61,6 +70,7 @@ public class StudentActionTransDto {
/**
* 设备类型(0: iOS 1: Android 2: PC)。
*/
@ApiModelProperty(value = "设备类型(0: iOS 1: Android 2: PC)", required = true)
@NotNull(message = "数据验证失败,设备类型不能为空!")
@ConstDictRef(constDictClass = DeviceType.class, message = "数据验证失败,设备类型为无效值!")
private Integer deviceType;
@@ -68,71 +78,85 @@ public class StudentActionTransDto {
/**
* 看视频秒数。
*/
@ApiModelProperty(value = "看视频秒数")
private Integer watchVideoSeconds;
/**
* 购买献花数量。
*/
@ApiModelProperty(value = "购买献花数量")
private Integer flowerCount;
/**
* 购买作业数量。
*/
@ApiModelProperty(value = "购买作业数量")
private Integer paperCount;
/**
* 购买视频数量。
*/
@ApiModelProperty(value = "购买视频数量")
private Integer videoCount;
/**
* 购买课程数量。
*/
@ApiModelProperty(value = "购买课程数量")
private Integer courseCount;
/**
* 充值学币数量。
*/
@ApiModelProperty(value = "充值学币数量")
private Integer coinCount;
/**
* 做题是否正确标记。
*/
@ApiModelProperty(value = "做题是否正确标记")
private Integer exerciseCorrectFlag;
/**
* 发生时间。
*/
@ApiModelProperty(value = "发生时间", required = true)
@NotNull(message = "数据验证失败,发生时间不能为空!")
private Date createTime;
/**
* createTime 范围过滤起始值(>=)。
*/
@ApiModelProperty(value = "createTime 范围过滤起始值(>=)")
private String createTimeStart;
/**
* createTime 范围过滤结束值(<=)。
*/
@ApiModelProperty(value = "createTime 范围过滤结束值(<=)")
private String createTimeEnd;
/**
* schoolId 字典关联数据。
*/
@ApiModelProperty(hidden = true)
private Map<String, Object> schoolIdDictMap;
/**
* gradeId 字典关联数据。
*/
@ApiModelProperty(hidden = true)
private Map<String, Object> gradeIdDictMap;
/**
* actionType 常量字典关联数据。
*/
@ApiModelProperty(hidden = true)
private Map<String, Object> actionTypeDictMap;
/**
* deviceType 常量字典关联数据。
*/
@ApiModelProperty(hidden = true)
private Map<String, Object> deviceTypeDictMap;
}

View File

@@ -50,10 +50,10 @@
<orderEntry type="library" name="Maven: joda-time:joda-time:2.10.5" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.4" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-csv:1.8" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.1.5" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.4.5" level="project" />
<orderEntry type="library" name="Maven: io.jsonwebtoken:jjwt:0.9.1" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.10.2" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.70" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.74" level="project" />
<orderEntry type="library" name="Maven: com.github.ben-manes.caffeine:caffeine:2.8.1" level="project" />
<orderEntry type="library" name="Maven: org.checkerframework:checker-qual:3.1.0" level="project" />
<orderEntry type="library" name="Maven: cn.jimmyshi:bean-query:1.1.5" level="project" />
@@ -91,6 +91,24 @@
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-autoconfigure:1.2.13" level="project" />
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper:5.1.11" level="project" />
<orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:2.0" level="project" />
<orderEntry type="module" module-name="common-swagger" />
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-micro-spring-boot-starter:2.0.5" level="project" />
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-spring-boot-autoconfigure:2.0.5" level="project" />
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-spring:2.0.5" level="project" />
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-annotations:2.0.5" level="project" />
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-core:2.0.5" level="project" />
<orderEntry type="library" name="Maven: org.javassist:javassist:3.25.0-GA" level="project" />
<orderEntry type="library" name="Maven: io.swagger:swagger-models:1.5.22" level="project" />
<orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.5.22" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-spi:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-core:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-schema:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger-common:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-spring-web:2.9.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-core:1.2.0.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-metadata:1.2.0.RELEASE" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-bean-validators:2.9.2" level="project" />
<orderEntry type="library" name="Maven: com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:2.2.1.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.alibaba.nacos:nacos-client:1.2.1" level="project" />
<orderEntry type="library" name="Maven: com.alibaba.nacos:nacos-common:1.2.1" level="project" />
@@ -247,7 +265,7 @@
<orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:3.13.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest:2.1" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:3.1.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy:1.10.8" level="project" />
<orderEntry type="library" name="Maven: net.bytebuddy:byte-buddy:1.10.8" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy-agent:1.10.8" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:2.6" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.skyscreamer:jsonassert:1.5.0" level="project" />

View File

@@ -9,7 +9,7 @@ import org.springframework.context.annotation.ComponentScan;
* stats服务启动类。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@SpringCloudApplication
@EnableFeignClients(basePackages = "com.orange.demo")

View File

@@ -14,7 +14,7 @@ import org.springframework.context.annotation.Configuration;
* defaultSomething: defaultValue
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Data
@RefreshScope

View File

@@ -14,7 +14,7 @@ import javax.sql.DataSource;
* 数据源配置Bean对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Configuration
@EnableTransactionManagement

View File

@@ -1,6 +1,5 @@
package com.orange.demo.statsservice.controller;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.Page;
import com.github.pagehelper.page.PageMethod;
import com.orange.demo.statsservice.model.*;
@@ -12,6 +11,8 @@ import com.orange.demo.common.core.constant.*;
import com.orange.demo.common.core.base.controller.BaseController;
import com.orange.demo.common.core.base.service.BaseService;
import com.orange.demo.common.core.annotation.MyRequestBody;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -22,8 +23,9 @@ import java.util.*;
* 课程统计操作控制器类。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Api(tags = "课程统计管理接口")
@Slf4j
@RestController
@RequestMapping("/courseTransStats")
@@ -46,7 +48,7 @@ public class CourseTransStatsController extends BaseController<CourseTransStats,
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping("/list")
public ResponseResult<JSONObject> list(
public ResponseResult<MyPageData<CourseTransStatsDto>> list(
@MyRequestBody("courseTransStatsFilter") CourseTransStatsDto courseTransStatsDtoFilter,
@MyRequestBody MyOrderParam orderParam,
@MyRequestBody MyPageParam pageParam) {
@@ -77,7 +79,7 @@ public class CourseTransStatsController extends BaseController<CourseTransStats,
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping("/listWithGroup")
public ResponseResult<JSONObject> listWithGroup(
public ResponseResult<MyPageData<CourseTransStatsDto>> listWithGroup(
@MyRequestBody("courseTransStatsFilter") CourseTransStatsDto courseTransStatsDtoFilter,
@MyRequestBody MyGroupParam groupParam,
@MyRequestBody MyOrderParam orderParam,
@@ -96,8 +98,7 @@ public class CourseTransStatsController extends BaseController<CourseTransStats,
List<CourseTransStats> resultList = courseTransStatsService.getGroupedCourseTransStatsListWithRelation(
filter, criteria.getGroupSelect(), criteria.getGroupBy(), orderBy);
// 分页连同对象数据转换copy工作下面的方法一并完成。
JSONObject responseData = MyPageUtil.makeResponseData(resultList, CourseTransStats.INSTANCE);
return ResponseResult.success(responseData);
return ResponseResult.success(MyPageUtil.makeResponseData(resultList, CourseTransStats.INSTANCE));
}
/**
@@ -127,6 +128,7 @@ public class CourseTransStatsController extends BaseController<CourseTransStats,
* @param withDict 是否包含字典关联。
* @return 应答结果对象,包含主对象集合。
*/
@ApiOperation(hidden = true, value = "listByIds")
@PostMapping("/listByIds")
public ResponseResult<List<CourseTransStatsDto>> listByIds(
@RequestParam Set<Long> statsIds, @RequestParam Boolean withDict) {
@@ -140,6 +142,7 @@ public class CourseTransStatsController extends BaseController<CourseTransStats,
* @param withDict 是否包含字典关联。
* @return 应答结果对象,包含主对象数据。
*/
@ApiOperation(hidden = true, value = "getById")
@PostMapping("/getById")
public ResponseResult<CourseTransStatsDto> getById(
@RequestParam Long statsId, @RequestParam Boolean withDict) {
@@ -152,6 +155,7 @@ public class CourseTransStatsController extends BaseController<CourseTransStats,
* @param statsIds 主键Id集合。
* @return 应答结果对象包含true全部存在否则false。
*/
@ApiOperation(hidden = true, value = "existIds")
@PostMapping("/existIds")
public ResponseResult<Boolean> existIds(@RequestParam Set<Long> statsIds) {
return super.baseExistIds(statsIds);
@@ -163,6 +167,7 @@ public class CourseTransStatsController extends BaseController<CourseTransStats,
* @param statsId 主键Id。
* @return 应答结果对象包含true表示存在否则false。
*/
@ApiOperation(hidden = true, value = "existId")
@PostMapping("/existId")
public ResponseResult<Boolean> existId(@RequestParam Long statsId) {
return super.baseExistId(statsId);
@@ -174,6 +179,7 @@ public class CourseTransStatsController extends BaseController<CourseTransStats,
* @param queryParam 查询参数。
* @return 应答结果对象,包含符合查询过滤条件的对象结果集。
*/
@ApiOperation(hidden = true, value = "listBy")
@PostMapping("/listBy")
public ResponseResult<List<CourseTransStatsDto>> listBy(@RequestBody MyQueryParam queryParam) {
return super.baseListBy(queryParam, CourseTransStats.INSTANCE);
@@ -185,6 +191,7 @@ public class CourseTransStatsController extends BaseController<CourseTransStats,
* @param queryParam 查询参数。
* @return 应答结果对象,包含符合查询过滤条件的对象结果集。
*/
@ApiOperation(hidden = true, value = "listMapBy")
@PostMapping("/listMapBy")
public ResponseResult<List<Map<String, Object>>> listMapBy(@RequestBody MyQueryParam queryParam) {
return super.baseListMapBy(queryParam, CourseTransStats.INSTANCE);
@@ -196,6 +203,7 @@ public class CourseTransStatsController extends BaseController<CourseTransStats,
* @param queryParam 查询参数。
* @return 应答结果对象,包含符合查询过滤条件的对象结果集。
*/
@ApiOperation(hidden = true, value = "getBy")
@PostMapping("/getBy")
public ResponseResult<CourseTransStatsDto> getBy(@RequestBody MyQueryParam queryParam) {
return super.baseGetBy(queryParam, CourseTransStats.INSTANCE);
@@ -207,6 +215,7 @@ public class CourseTransStatsController extends BaseController<CourseTransStats,
* @param queryParam 查询参数。
* @return 应答结果对象,包含结果数量。
*/
@ApiOperation(hidden = true, value = "countBy")
@PostMapping("/countBy")
public ResponseResult<Integer> countBy(@RequestBody MyQueryParam queryParam) {
return super.baseCountBy(queryParam);
@@ -218,6 +227,7 @@ public class CourseTransStatsController extends BaseController<CourseTransStats,
* @param aggregationParam 聚合参数。
* @return 应该结果对象包含聚合计算后的分组Map列表。
*/
@ApiOperation(hidden = true, value = "aggregateBy")
@PostMapping("/aggregateBy")
public ResponseResult<List<Map<String, Object>>> aggregateBy(@RequestBody MyAggregationParam aggregationParam) {
return super.baseAggregateBy(aggregationParam);

View File

@@ -1,6 +1,5 @@
package com.orange.demo.statsservice.controller;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.Page;
import com.github.pagehelper.page.PageMethod;
import com.orange.demo.statsservice.model.*;
@@ -12,6 +11,8 @@ import com.orange.demo.common.core.constant.*;
import com.orange.demo.common.core.base.controller.BaseController;
import com.orange.demo.common.core.base.service.BaseService;
import com.orange.demo.common.core.annotation.MyRequestBody;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -22,8 +23,9 @@ import java.util.*;
* 学生行为统计操作控制器类。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Api(tags = "学生行为统计管理接口")
@Slf4j
@RestController
@RequestMapping("/studentActionStats")
@@ -46,7 +48,7 @@ public class StudentActionStatsController extends BaseController<StudentActionSt
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping("/list")
public ResponseResult<JSONObject> list(
public ResponseResult<MyPageData<StudentActionStatsDto>> list(
@MyRequestBody("studentActionStatsFilter") StudentActionStatsDto studentActionStatsDtoFilter,
@MyRequestBody MyOrderParam orderParam,
@MyRequestBody MyPageParam pageParam) {
@@ -77,7 +79,7 @@ public class StudentActionStatsController extends BaseController<StudentActionSt
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping("/listWithGroup")
public ResponseResult<JSONObject> listWithGroup(
public ResponseResult<MyPageData<StudentActionStatsDto>> listWithGroup(
@MyRequestBody("studentActionStatsFilter") StudentActionStatsDto studentActionStatsDtoFilter,
@MyRequestBody MyGroupParam groupParam,
@MyRequestBody MyOrderParam orderParam,
@@ -96,8 +98,7 @@ public class StudentActionStatsController extends BaseController<StudentActionSt
List<StudentActionStats> resultList = studentActionStatsService.getGroupedStudentActionStatsListWithRelation(
filter, criteria.getGroupSelect(), criteria.getGroupBy(), orderBy);
// 分页连同对象数据转换copy工作下面的方法一并完成。
JSONObject responseData = MyPageUtil.makeResponseData(resultList, StudentActionStats.INSTANCE);
return ResponseResult.success(responseData);
return ResponseResult.success(MyPageUtil.makeResponseData(resultList, StudentActionStats.INSTANCE));
}
/**
@@ -127,6 +128,7 @@ public class StudentActionStatsController extends BaseController<StudentActionSt
* @param withDict 是否包含字典关联。
* @return 应答结果对象,包含主对象集合。
*/
@ApiOperation(hidden = true, value = "listByIds")
@PostMapping("/listByIds")
public ResponseResult<List<StudentActionStatsDto>> listByIds(
@RequestParam Set<Long> statsIds, @RequestParam Boolean withDict) {
@@ -140,6 +142,7 @@ public class StudentActionStatsController extends BaseController<StudentActionSt
* @param withDict 是否包含字典关联。
* @return 应答结果对象,包含主对象数据。
*/
@ApiOperation(hidden = true, value = "getById")
@PostMapping("/getById")
public ResponseResult<StudentActionStatsDto> getById(
@RequestParam Long statsId, @RequestParam Boolean withDict) {
@@ -152,6 +155,7 @@ public class StudentActionStatsController extends BaseController<StudentActionSt
* @param statsIds 主键Id集合。
* @return 应答结果对象包含true全部存在否则false。
*/
@ApiOperation(hidden = true, value = "existIds")
@PostMapping("/existIds")
public ResponseResult<Boolean> existIds(@RequestParam Set<Long> statsIds) {
return super.baseExistIds(statsIds);
@@ -163,6 +167,7 @@ public class StudentActionStatsController extends BaseController<StudentActionSt
* @param statsId 主键Id。
* @return 应答结果对象包含true表示存在否则false。
*/
@ApiOperation(hidden = true, value = "existId")
@PostMapping("/existId")
public ResponseResult<Boolean> existId(@RequestParam Long statsId) {
return super.baseExistId(statsId);
@@ -174,6 +179,7 @@ public class StudentActionStatsController extends BaseController<StudentActionSt
* @param queryParam 查询参数。
* @return 应答结果对象,包含符合查询过滤条件的对象结果集。
*/
@ApiOperation(hidden = true, value = "listBy")
@PostMapping("/listBy")
public ResponseResult<List<StudentActionStatsDto>> listBy(@RequestBody MyQueryParam queryParam) {
return super.baseListBy(queryParam, StudentActionStats.INSTANCE);
@@ -185,6 +191,7 @@ public class StudentActionStatsController extends BaseController<StudentActionSt
* @param queryParam 查询参数。
* @return 应答结果对象,包含符合查询过滤条件的对象结果集。
*/
@ApiOperation(hidden = true, value = "listMapBy")
@PostMapping("/listMapBy")
public ResponseResult<List<Map<String, Object>>> listMapBy(@RequestBody MyQueryParam queryParam) {
return super.baseListMapBy(queryParam, StudentActionStats.INSTANCE);
@@ -196,6 +203,7 @@ public class StudentActionStatsController extends BaseController<StudentActionSt
* @param queryParam 查询参数。
* @return 应答结果对象,包含符合查询过滤条件的对象结果集。
*/
@ApiOperation(hidden = true, value = "getBy")
@PostMapping("/getBy")
public ResponseResult<StudentActionStatsDto> getBy(@RequestBody MyQueryParam queryParam) {
return super.baseGetBy(queryParam, StudentActionStats.INSTANCE);
@@ -207,6 +215,7 @@ public class StudentActionStatsController extends BaseController<StudentActionSt
* @param queryParam 查询参数。
* @return 应答结果对象,包含结果数量。
*/
@ApiOperation(hidden = true, value = "countBy")
@PostMapping("/countBy")
public ResponseResult<Integer> countBy(@RequestBody MyQueryParam queryParam) {
return super.baseCountBy(queryParam);
@@ -218,6 +227,7 @@ public class StudentActionStatsController extends BaseController<StudentActionSt
* @param aggregationParam 聚合参数。
* @return 应该结果对象包含聚合计算后的分组Map列表。
*/
@ApiOperation(hidden = true, value = "aggregateBy")
@PostMapping("/aggregateBy")
public ResponseResult<List<Map<String, Object>>> aggregateBy(@RequestBody MyAggregationParam aggregationParam) {
return super.baseAggregateBy(aggregationParam);

View File

@@ -1,6 +1,5 @@
package com.orange.demo.statsservice.controller;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.Page;
import com.github.pagehelper.page.PageMethod;
import com.orange.demo.statsservice.model.*;
@@ -13,6 +12,9 @@ import com.orange.demo.common.core.base.controller.BaseController;
import com.orange.demo.common.core.base.service.BaseService;
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 io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -24,8 +26,9 @@ import java.util.*;
* 学生行为流水操作控制器类。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Api(tags = "学生行为流水管理接口")
@Slf4j
@RestController
@RequestMapping("/studentActionTrans")
@@ -45,8 +48,12 @@ public class StudentActionTransController extends BaseController<StudentActionTr
* @param studentActionTransDto 新增对象。
* @return 应答结果对象包含新增对象主键Id。
*/
@ApiOperationSupport(ignoreParameters = {
"studentActionTrans.transId",
"studentActionTrans.createTimeStart",
"studentActionTrans.createTimeEnd"})
@PostMapping("/add")
public ResponseResult<JSONObject> add(@MyRequestBody("studentActionTrans") StudentActionTransDto studentActionTransDto) {
public ResponseResult<Long> add(@MyRequestBody("studentActionTrans") StudentActionTransDto studentActionTransDto) {
String errorMessage = MyCommonUtil.getModelValidationError(studentActionTransDto);
if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATAED_FAILED, errorMessage);
@@ -59,9 +66,7 @@ public class StudentActionTransController extends BaseController<StudentActionTr
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATAED_FAILED, errorMessage);
}
studentActionTrans = studentActionTransService.saveNew(studentActionTrans);
JSONObject responseData = new JSONObject();
responseData.put("transId", studentActionTrans.getTransId());
return ResponseResult.success(responseData);
return ResponseResult.success(studentActionTrans.getTransId());
}
/**
@@ -70,6 +75,9 @@ public class StudentActionTransController extends BaseController<StudentActionTr
* @param studentActionTransDto 更新对象。
* @return 应答结果对象。
*/
@ApiOperationSupport(ignoreParameters = {
"studentActionTrans.createTimeStart",
"studentActionTrans.createTimeEnd"})
@PostMapping("/update")
public ResponseResult<Void> update(@MyRequestBody("studentActionTrans") StudentActionTransDto studentActionTransDto) {
String errorMessage = MyCommonUtil.getModelValidationError(studentActionTransDto, Default.class, UpdateGroup.class);
@@ -130,7 +138,7 @@ public class StudentActionTransController extends BaseController<StudentActionTr
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping("/list")
public ResponseResult<JSONObject> list(
public ResponseResult<MyPageData<StudentActionTransDto>> list(
@MyRequestBody("studentActionTransFilter") StudentActionTransDto studentActionTransDtoFilter,
@MyRequestBody MyOrderParam orderParam,
@MyRequestBody MyPageParam pageParam) {
@@ -178,6 +186,7 @@ public class StudentActionTransController extends BaseController<StudentActionTr
* @param withDict 是否包含字典关联。
* @return 应答结果对象,包含主对象集合。
*/
@ApiOperation(hidden = true, value = "listByIds")
@PostMapping("/listByIds")
public ResponseResult<List<StudentActionTransDto>> listByIds(
@RequestParam Set<Long> transIds, @RequestParam Boolean withDict) {
@@ -191,6 +200,7 @@ public class StudentActionTransController extends BaseController<StudentActionTr
* @param withDict 是否包含字典关联。
* @return 应答结果对象,包含主对象数据。
*/
@ApiOperation(hidden = true, value = "getById")
@PostMapping("/getById")
public ResponseResult<StudentActionTransDto> getById(
@RequestParam Long transId, @RequestParam Boolean withDict) {
@@ -203,6 +213,7 @@ public class StudentActionTransController extends BaseController<StudentActionTr
* @param transIds 主键Id集合。
* @return 应答结果对象包含true全部存在否则false。
*/
@ApiOperation(hidden = true, value = "existIds")
@PostMapping("/existIds")
public ResponseResult<Boolean> existIds(@RequestParam Set<Long> transIds) {
return super.baseExistIds(transIds);
@@ -214,6 +225,7 @@ public class StudentActionTransController extends BaseController<StudentActionTr
* @param transId 主键Id。
* @return 应答结果对象包含true表示存在否则false。
*/
@ApiOperation(hidden = true, value = "existId")
@PostMapping("/existId")
public ResponseResult<Boolean> existId(@RequestParam Long transId) {
return super.baseExistId(transId);
@@ -225,6 +237,7 @@ public class StudentActionTransController extends BaseController<StudentActionTr
* @param queryParam 查询参数。
* @return 应答结果对象,包含符合查询过滤条件的对象结果集。
*/
@ApiOperation(hidden = true, value = "listBy")
@PostMapping("/listBy")
public ResponseResult<List<StudentActionTransDto>> listBy(@RequestBody MyQueryParam queryParam) {
return super.baseListBy(queryParam, StudentActionTrans.INSTANCE);
@@ -236,6 +249,7 @@ public class StudentActionTransController extends BaseController<StudentActionTr
* @param queryParam 查询参数。
* @return 应答结果对象,包含符合查询过滤条件的对象结果集。
*/
@ApiOperation(hidden = true, value = "listMapBy")
@PostMapping("/listMapBy")
public ResponseResult<List<Map<String, Object>>> listMapBy(@RequestBody MyQueryParam queryParam) {
return super.baseListMapBy(queryParam, StudentActionTrans.INSTANCE);
@@ -247,6 +261,7 @@ public class StudentActionTransController extends BaseController<StudentActionTr
* @param queryParam 查询参数。
* @return 应答结果对象,包含符合查询过滤条件的对象结果集。
*/
@ApiOperation(hidden = true, value = "getBy")
@PostMapping("/getBy")
public ResponseResult<StudentActionTransDto> getBy(@RequestBody MyQueryParam queryParam) {
return super.baseGetBy(queryParam, StudentActionTrans.INSTANCE);
@@ -258,6 +273,7 @@ public class StudentActionTransController extends BaseController<StudentActionTr
* @param queryParam 查询参数。
* @return 应答结果对象,包含结果数量。
*/
@ApiOperation(hidden = true, value = "countBy")
@PostMapping("/countBy")
public ResponseResult<Integer> countBy(@RequestBody MyQueryParam queryParam) {
return super.baseCountBy(queryParam);
@@ -269,6 +285,7 @@ public class StudentActionTransController extends BaseController<StudentActionTr
* @param aggregationParam 聚合参数。
* @return 应该结果对象包含聚合计算后的分组Map列表。
*/
@ApiOperation(hidden = true, value = "aggregateBy")
@PostMapping("/aggregateBy")
public ResponseResult<List<Map<String, Object>>> aggregateBy(@RequestBody MyAggregationParam aggregationParam) {
return super.baseAggregateBy(aggregationParam);

View File

@@ -10,7 +10,7 @@ import java.util.*;
* 课程统计数据操作访问接口。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public interface CourseTransStatsMapper extends BaseDaoMapper<CourseTransStats> {

View File

@@ -7,7 +7,7 @@ import com.orange.demo.statsservice.model.Grade;
* 数据操作访问接口。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public interface GradeMapper extends BaseDaoMapper<Grade> {
}

View File

@@ -7,7 +7,7 @@ import com.orange.demo.statsservice.model.SchoolInfo;
* 数据操作访问接口。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public interface SchoolInfoMapper extends BaseDaoMapper<SchoolInfo> {
}

View File

@@ -10,7 +10,7 @@ import java.util.*;
* 学生行为统计数据操作访问接口。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public interface StudentActionStatsMapper extends BaseDaoMapper<StudentActionStats> {

View File

@@ -10,7 +10,7 @@ import java.util.*;
* 学生行为流水数据操作访问接口。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public interface StudentActionTransMapper extends BaseDaoMapper<StudentActionTrans> {

View File

@@ -43,7 +43,7 @@
<include refid="filterRef"/>
</where>
GROUP BY ${groupBy}) zz_course_trans_stats
<if test="orderBy != null">
<if test="orderBy != null and orderBy != ''">
ORDER BY ${orderBy}
</if>
</select>
@@ -59,7 +59,7 @@
</if>
<include refid="filterRef"/>
</where>
<if test="orderBy != null">
<if test="orderBy != null and orderBy != ''">
ORDER BY ${orderBy}
</if>
</select>

Some files were not shown because too many files have changed in this diff Show More