commit:VO支持以及bug修复

This commit is contained in:
Jerry
2020-12-18 22:52:35 +08:00
parent ecec5ae30a
commit d86ae86f1c
558 changed files with 8019 additions and 10785 deletions

View File

@@ -7,6 +7,7 @@ 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.github.pagehelper.page.PageMethod;
import com.orange.demo.app.vo.*;
import com.orange.demo.app.model.*;
import com.orange.demo.app.service.*;
import com.orange.demo.common.core.object.*;
@@ -133,7 +134,7 @@ public class CourseController {
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping("/list")
public ResponseResult<MyPageData<Course>> list(
public ResponseResult<MyPageData<CourseVo>> list(
@MyRequestBody Course courseFilter,
@MyRequestBody MyOrderParam orderParam,
@MyRequestBody MyPageParam pageParam) {
@@ -141,8 +142,8 @@ public class CourseController {
PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize());
}
String orderBy = MyOrderParam.buildOrderBy(orderParam, Course.class);
List<Course> resultList = courseService.getCourseListWithRelation(courseFilter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(resultList));
List<Course> courseList = courseService.getCourseListWithRelation(courseFilter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(courseList, Course.INSTANCE));
}
/**
@@ -152,7 +153,7 @@ public class CourseController {
* @return 应答结果对象,包含对象详情。
*/
@GetMapping("/view")
public ResponseResult<Course> view(@RequestParam Long courseId) {
public ResponseResult<CourseVo> view(@RequestParam Long courseId) {
if (MyCommonUtil.existBlankArgument(courseId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
@@ -160,7 +161,8 @@ public class CourseController {
if (course == null) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
return ResponseResult.success(course);
CourseVo courseVo = Course.INSTANCE.fromModel(course);
return ResponseResult.success(courseVo);
}
/**

View File

@@ -1,6 +1,7 @@
package com.orange.demo.app.controller;
import com.github.pagehelper.page.PageMethod;
import com.orange.demo.app.vo.*;
import com.orange.demo.app.model.*;
import com.orange.demo.app.service.*;
import com.orange.demo.common.core.object.*;
@@ -36,7 +37,7 @@ public class CourseTransStatsController {
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping("/list")
public ResponseResult<MyPageData<CourseTransStats>> list(
public ResponseResult<MyPageData<CourseTransStatsVo>> list(
@MyRequestBody CourseTransStats courseTransStatsFilter,
@MyRequestBody MyOrderParam orderParam,
@MyRequestBody MyPageParam pageParam) {
@@ -44,8 +45,8 @@ public class CourseTransStatsController {
PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize());
}
String orderBy = MyOrderParam.buildOrderBy(orderParam, CourseTransStats.class);
List<CourseTransStats> resultList = courseTransStatsService.getCourseTransStatsListWithRelation(courseTransStatsFilter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(resultList));
List<CourseTransStats> courseTransStatsList = courseTransStatsService.getCourseTransStatsListWithRelation(courseTransStatsFilter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(courseTransStatsList, CourseTransStats.INSTANCE));
}
/**
@@ -58,7 +59,7 @@ public class CourseTransStatsController {
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping("/listWithGroup")
public ResponseResult<MyPageData<CourseTransStats>> listWithGroup(
public ResponseResult<MyPageData<CourseTransStatsVo>> listWithGroup(
@MyRequestBody CourseTransStats courseTransStatsFilter,
@MyRequestBody(required = true) MyGroupParam groupParam,
@MyRequestBody MyOrderParam orderParam,
@@ -75,7 +76,8 @@ public class CourseTransStatsController {
MyGroupCriteria criteria = groupParam.getGroupCriteria();
List<CourseTransStats> resultList = courseTransStatsService.getGroupedCourseTransStatsListWithRelation(
courseTransStatsFilter, criteria.getGroupSelect(), criteria.getGroupBy(), orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(resultList));
// 分页连同对象数据转换copy工作下面的方法一并完成。
return ResponseResult.success(MyPageUtil.makeResponseData(resultList, CourseTransStats.INSTANCE));
}
/**
@@ -85,7 +87,7 @@ public class CourseTransStatsController {
* @return 应答结果对象,包含对象详情。
*/
@GetMapping("/view")
public ResponseResult<CourseTransStats> view(@RequestParam Long statsId) {
public ResponseResult<CourseTransStatsVo> view(@RequestParam Long statsId) {
if (MyCommonUtil.existBlankArgument(statsId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
@@ -93,6 +95,7 @@ public class CourseTransStatsController {
if (courseTransStats == null) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
return ResponseResult.success(courseTransStats);
CourseTransStatsVo courseTransStatsVo = CourseTransStats.INSTANCE.fromModel(courseTransStats);
return ResponseResult.success(courseTransStatsVo);
}
}

View File

@@ -2,6 +2,7 @@ package com.orange.demo.app.controller;
import cn.jimmyshi.beanquery.BeanQuery;
import com.github.pagehelper.page.PageMethod;
import com.orange.demo.app.vo.*;
import com.orange.demo.app.model.*;
import com.orange.demo.app.service.*;
import com.orange.demo.common.core.object.*;
@@ -118,7 +119,7 @@ public class SchoolInfoController {
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping("/list")
public ResponseResult<MyPageData<SchoolInfo>> list(
public ResponseResult<MyPageData<SchoolInfoVo>> list(
@MyRequestBody SchoolInfo schoolInfoFilter,
@MyRequestBody MyOrderParam orderParam,
@MyRequestBody MyPageParam pageParam) {
@@ -126,8 +127,8 @@ public class SchoolInfoController {
PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize());
}
String orderBy = MyOrderParam.buildOrderBy(orderParam, SchoolInfo.class);
List<SchoolInfo> resultList = schoolInfoService.getSchoolInfoListWithRelation(schoolInfoFilter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(resultList));
List<SchoolInfo> schoolInfoList = schoolInfoService.getSchoolInfoListWithRelation(schoolInfoFilter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(schoolInfoList, SchoolInfo.INSTANCE));
}
/**
@@ -137,7 +138,7 @@ public class SchoolInfoController {
* @return 应答结果对象,包含对象详情。
*/
@GetMapping("/view")
public ResponseResult<SchoolInfo> view(@RequestParam Long schoolId) {
public ResponseResult<SchoolInfoVo> view(@RequestParam Long schoolId) {
if (MyCommonUtil.existBlankArgument(schoolId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
@@ -145,7 +146,8 @@ public class SchoolInfoController {
if (schoolInfo == null) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
return ResponseResult.success(schoolInfo);
SchoolInfoVo schoolInfoVo = SchoolInfo.INSTANCE.fromModel(schoolInfo);
return ResponseResult.success(schoolInfoVo);
}
/**

View File

@@ -1,6 +1,7 @@
package com.orange.demo.app.controller;
import com.github.pagehelper.page.PageMethod;
import com.orange.demo.app.vo.*;
import com.orange.demo.app.model.*;
import com.orange.demo.app.service.*;
import com.orange.demo.common.core.object.*;
@@ -36,7 +37,7 @@ public class StudentActionStatsController {
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping("/list")
public ResponseResult<MyPageData<StudentActionStats>> list(
public ResponseResult<MyPageData<StudentActionStatsVo>> list(
@MyRequestBody StudentActionStats studentActionStatsFilter,
@MyRequestBody MyOrderParam orderParam,
@MyRequestBody MyPageParam pageParam) {
@@ -44,8 +45,8 @@ public class StudentActionStatsController {
PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize());
}
String orderBy = MyOrderParam.buildOrderBy(orderParam, StudentActionStats.class);
List<StudentActionStats> resultList = studentActionStatsService.getStudentActionStatsListWithRelation(studentActionStatsFilter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(resultList));
List<StudentActionStats> studentActionStatsList = studentActionStatsService.getStudentActionStatsListWithRelation(studentActionStatsFilter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(studentActionStatsList, StudentActionStats.INSTANCE));
}
/**
@@ -58,7 +59,7 @@ public class StudentActionStatsController {
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping("/listWithGroup")
public ResponseResult<MyPageData<StudentActionStats>> listWithGroup(
public ResponseResult<MyPageData<StudentActionStatsVo>> listWithGroup(
@MyRequestBody StudentActionStats studentActionStatsFilter,
@MyRequestBody(required = true) MyGroupParam groupParam,
@MyRequestBody MyOrderParam orderParam,
@@ -75,7 +76,8 @@ public class StudentActionStatsController {
MyGroupCriteria criteria = groupParam.getGroupCriteria();
List<StudentActionStats> resultList = studentActionStatsService.getGroupedStudentActionStatsListWithRelation(
studentActionStatsFilter, criteria.getGroupSelect(), criteria.getGroupBy(), orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(resultList));
// 分页连同对象数据转换copy工作下面的方法一并完成。
return ResponseResult.success(MyPageUtil.makeResponseData(resultList, StudentActionStats.INSTANCE));
}
/**
@@ -85,7 +87,7 @@ public class StudentActionStatsController {
* @return 应答结果对象,包含对象详情。
*/
@GetMapping("/view")
public ResponseResult<StudentActionStats> view(@RequestParam Long statsId) {
public ResponseResult<StudentActionStatsVo> view(@RequestParam Long statsId) {
if (MyCommonUtil.existBlankArgument(statsId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
@@ -93,6 +95,7 @@ public class StudentActionStatsController {
if (studentActionStats == null) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
return ResponseResult.success(studentActionStats);
StudentActionStatsVo studentActionStatsVo = StudentActionStats.INSTANCE.fromModel(studentActionStats);
return ResponseResult.success(studentActionStatsVo);
}
}

View File

@@ -1,6 +1,7 @@
package com.orange.demo.app.controller;
import com.github.pagehelper.page.PageMethod;
import com.orange.demo.app.vo.*;
import com.orange.demo.app.model.*;
import com.orange.demo.app.service.*;
import com.orange.demo.common.core.object.*;
@@ -117,7 +118,7 @@ public class StudentActionTransController {
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping("/list")
public ResponseResult<MyPageData<StudentActionTrans>> list(
public ResponseResult<MyPageData<StudentActionTransVo>> list(
@MyRequestBody StudentActionTrans studentActionTransFilter,
@MyRequestBody MyOrderParam orderParam,
@MyRequestBody MyPageParam pageParam) {
@@ -125,8 +126,8 @@ public class StudentActionTransController {
PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize());
}
String orderBy = MyOrderParam.buildOrderBy(orderParam, StudentActionTrans.class);
List<StudentActionTrans> resultList = studentActionTransService.getStudentActionTransListWithRelation(studentActionTransFilter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(resultList));
List<StudentActionTrans> studentActionTransList = studentActionTransService.getStudentActionTransListWithRelation(studentActionTransFilter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(studentActionTransList, StudentActionTrans.INSTANCE));
}
/**
@@ -136,7 +137,7 @@ public class StudentActionTransController {
* @return 应答结果对象,包含对象详情。
*/
@GetMapping("/view")
public ResponseResult<StudentActionTrans> view(@RequestParam Long transId) {
public ResponseResult<StudentActionTransVo> view(@RequestParam Long transId) {
if (MyCommonUtil.existBlankArgument(transId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
@@ -144,6 +145,7 @@ public class StudentActionTransController {
if (studentActionTrans == null) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
return ResponseResult.success(studentActionTrans);
StudentActionTransVo studentActionTransVo = StudentActionTrans.INSTANCE.fromModel(studentActionTrans);
return ResponseResult.success(studentActionTransVo);
}
}

View File

@@ -1,6 +1,7 @@
package com.orange.demo.app.controller;
import com.github.pagehelper.page.PageMethod;
import com.orange.demo.app.vo.*;
import com.orange.demo.app.model.*;
import com.orange.demo.app.service.*;
import com.orange.demo.common.core.object.*;
@@ -122,7 +123,7 @@ public class StudentClassController {
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping("/list")
public ResponseResult<MyPageData<StudentClass>> list(
public ResponseResult<MyPageData<StudentClassVo>> list(
@MyRequestBody StudentClass studentClassFilter,
@MyRequestBody MyOrderParam orderParam,
@MyRequestBody MyPageParam pageParam) {
@@ -130,8 +131,8 @@ public class StudentClassController {
PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize());
}
String orderBy = MyOrderParam.buildOrderBy(orderParam, StudentClass.class);
List<StudentClass> resultList = studentClassService.getStudentClassListWithRelation(studentClassFilter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(resultList));
List<StudentClass> studentClassList = studentClassService.getStudentClassListWithRelation(studentClassFilter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(studentClassList, StudentClass.INSTANCE));
}
/**
@@ -141,7 +142,7 @@ public class StudentClassController {
* @return 应答结果对象,包含对象详情。
*/
@GetMapping("/view")
public ResponseResult<StudentClass> view(@RequestParam Long classId) {
public ResponseResult<StudentClassVo> view(@RequestParam Long classId) {
if (MyCommonUtil.existBlankArgument(classId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
@@ -149,7 +150,8 @@ public class StudentClassController {
if (studentClass == null) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
return ResponseResult.success(studentClass);
StudentClassVo studentClassVo = StudentClass.INSTANCE.fromModel(studentClass);
return ResponseResult.success(studentClassVo);
}
/**
@@ -162,7 +164,7 @@ public class StudentClassController {
* @return 应答结果对象,返回符合条件的数据列表。
*/
@PostMapping("/listNotInClassCourse")
public ResponseResult<MyPageData<Course>> listNotInClassCourse(
public ResponseResult<MyPageData<CourseVo>> listNotInClassCourse(
@MyRequestBody Long classId,
@MyRequestBody Course courseFilter,
@MyRequestBody MyOrderParam orderParam,
@@ -175,9 +177,9 @@ public class StudentClassController {
PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize());
}
String orderBy = MyOrderParam.buildOrderBy(orderParam, Course.class);
List<Course> resultList =
List<Course> courseList =
courseService.getNotInCourseListByClassId(classId, courseFilter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(resultList));
return ResponseResult.success(MyPageUtil.makeResponseData(courseList, Course.INSTANCE));
}
/**
@@ -190,7 +192,7 @@ public class StudentClassController {
* @return 应答结果对象,返回符合条件的数据列表。
*/
@PostMapping("/listClassCourse")
public ResponseResult<MyPageData<Course>> listClassCourse(
public ResponseResult<MyPageData<CourseVo>> listClassCourse(
@MyRequestBody Long classId,
@MyRequestBody Course courseFilter,
@MyRequestBody MyOrderParam orderParam,
@@ -203,9 +205,9 @@ public class StudentClassController {
PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize());
}
String orderBy = MyOrderParam.buildOrderBy(orderParam, Course.class);
List<Course> resultList =
List<Course> courseList =
courseService.getCourseListByClassId(classId, courseFilter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(resultList));
return ResponseResult.success(MyPageUtil.makeResponseData(courseList, Course.INSTANCE));
}
private ResponseResult<Void> doClassCourseVerify(Long classId) {
@@ -274,7 +276,7 @@ public class StudentClassController {
* @return 应答结果对象,包括中间表详情。
*/
@GetMapping("/viewClassCourse")
public ResponseResult<ClassCourse> viewClassCourse(
public ResponseResult<ClassCourseVo> viewClassCourse(
@RequestParam Long classId, @RequestParam Long courseId) {
if (MyCommonUtil.existBlankArgument(classId, courseId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
@@ -283,7 +285,8 @@ public class StudentClassController {
if (classCourse == null) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
return ResponseResult.success(classCourse);
ClassCourseVo classCourseVo = MyModelUtil.copyTo(classCourse, ClassCourseVo.class);
return ResponseResult.success(classCourseVo);
}
/**
@@ -315,7 +318,7 @@ public class StudentClassController {
* @return 应答结果对象,返回符合条件的数据列表。
*/
@PostMapping("/listNotInClassStudent")
public ResponseResult<MyPageData<Student>> listNotInClassStudent(
public ResponseResult<MyPageData<StudentVo>> listNotInClassStudent(
@MyRequestBody Long classId,
@MyRequestBody Student studentFilter,
@MyRequestBody MyOrderParam orderParam,
@@ -328,9 +331,9 @@ public class StudentClassController {
PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize());
}
String orderBy = MyOrderParam.buildOrderBy(orderParam, Student.class);
List<Student> resultList =
List<Student> studentList =
studentService.getNotInStudentListByClassId(classId, studentFilter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(resultList));
return ResponseResult.success(MyPageUtil.makeResponseData(studentList, Student.INSTANCE));
}
/**
@@ -343,7 +346,7 @@ public class StudentClassController {
* @return 应答结果对象,返回符合条件的数据列表。
*/
@PostMapping("/listClassStudent")
public ResponseResult<MyPageData<Student>> listClassStudent(
public ResponseResult<MyPageData<StudentVo>> listClassStudent(
@MyRequestBody Long classId,
@MyRequestBody Student studentFilter,
@MyRequestBody MyOrderParam orderParam,
@@ -356,9 +359,9 @@ public class StudentClassController {
PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize());
}
String orderBy = MyOrderParam.buildOrderBy(orderParam, Student.class);
List<Student> resultList =
List<Student> studentList =
studentService.getStudentListByClassId(classId, studentFilter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(resultList));
return ResponseResult.success(MyPageUtil.makeResponseData(studentList, Student.INSTANCE));
}
private ResponseResult<Void> doClassStudentVerify(Long classId) {

View File

@@ -2,6 +2,7 @@ package com.orange.demo.app.controller;
import cn.jimmyshi.beanquery.BeanQuery;
import com.github.pagehelper.page.PageMethod;
import com.orange.demo.app.vo.*;
import com.orange.demo.app.model.*;
import com.orange.demo.app.service.*;
import com.orange.demo.common.core.object.*;
@@ -118,7 +119,7 @@ public class StudentController {
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping("/list")
public ResponseResult<MyPageData<Student>> list(
public ResponseResult<MyPageData<StudentVo>> list(
@MyRequestBody Student studentFilter,
@MyRequestBody MyOrderParam orderParam,
@MyRequestBody MyPageParam pageParam) {
@@ -126,8 +127,8 @@ public class StudentController {
PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize());
}
String orderBy = MyOrderParam.buildOrderBy(orderParam, Student.class);
List<Student> resultList = studentService.getStudentListWithRelation(studentFilter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(resultList));
List<Student> studentList = studentService.getStudentListWithRelation(studentFilter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(studentList, Student.INSTANCE));
}
/**
@@ -137,7 +138,7 @@ public class StudentController {
* @return 应答结果对象,包含对象详情。
*/
@GetMapping("/view")
public ResponseResult<Student> view(@RequestParam Long studentId) {
public ResponseResult<StudentVo> view(@RequestParam Long studentId) {
if (MyCommonUtil.existBlankArgument(studentId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
@@ -145,7 +146,8 @@ public class StudentController {
if (student == null) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
return ResponseResult.success(student);
StudentVo studentVo = Student.INSTANCE.fromModel(student);
return ResponseResult.success(studentVo);
}
/**

View File

@@ -20,8 +20,13 @@
<association property="classCourse" column="course_id" foreignColumn="course_id"
notNullColumn="course_id" resultMap="com.orange.demo.app.dao.ClassCourseMapper.BaseResultMap" />
</resultMap>
<!-- 如果有逻辑删除字段过滤,请写到这里 -->
<sql id="filterRef">
<!-- 这里必须加上全包名否则当filterRef被其他Mapper.xml包含引用的时候就会调用Mapper.xml中的该SQL片段 -->
<include refid="com.orange.demo.app.dao.CourseMapper.inputFilterRef"/>
</sql>
<!-- 这里仅包含调用接口输入的主表过滤条件 -->
<sql id="inputFilterRef">
<if test="courseFilter != null">
<if test="courseFilter.courseName != null and courseFilter.courseName != ''">
<bind name = "safeCourseName" value = "'%' + courseFilter.courseName + '%'" />

View File

@@ -13,8 +13,13 @@
<result column="student_flower_amount" jdbcType="INTEGER" property="studentFlowerAmount"/>
<result column="student_flower_count" jdbcType="INTEGER" property="studentFlowerCount"/>
</resultMap>
<!-- 如果有逻辑删除字段过滤,请写到这里 -->
<sql id="filterRef">
<!-- 这里必须加上全包名否则当filterRef被其他Mapper.xml包含引用的时候就会调用Mapper.xml中的该SQL片段 -->
<include refid="com.orange.demo.app.dao.CourseTransStatsMapper.inputFilterRef"/>
</sql>
<!-- 这里仅包含调用接口输入的主表过滤条件 -->
<sql id="inputFilterRef">
<if test="courseTransStatsFilter != null">
<if test="courseTransStatsFilter.statsDateStart != null and courseTransStatsFilter.statsDateStart != ''">
AND zz_course_trans_stats.stats_date &gt;= #{courseTransStatsFilter.statsDateStart}

View File

@@ -7,8 +7,13 @@
<result column="province_id" jdbcType="BIGINT" property="provinceId"/>
<result column="city_id" jdbcType="BIGINT" property="cityId"/>
</resultMap>
<!-- 如果有逻辑删除字段过滤,请写到这里 -->
<sql id="filterRef">
<!-- 这里必须加上全包名否则当filterRef被其他Mapper.xml包含引用的时候就会调用Mapper.xml中的该SQL片段 -->
<include refid="com.orange.demo.app.dao.SchoolInfoMapper.inputFilterRef"/>
</sql>
<!-- 这里仅包含调用接口输入的主表过滤条件 -->
<sql id="inputFilterRef">
<if test="schoolInfoFilter != null">
<if test="schoolInfoFilter.schoolName != null and schoolInfoFilter.schoolName != ''">
<bind name = "safeSchoolName" value = "'%' + schoolInfoFilter.schoolName + '%'" />

View File

@@ -24,8 +24,13 @@
<result column="do_exercise_count" jdbcType="INTEGER" property="doExerciseCount"/>
<result column="do_exercise_correct_count" jdbcType="INTEGER" property="doExerciseCorrectCount"/>
</resultMap>
<!-- 如果有逻辑删除字段过滤,请写到这里 -->
<sql id="filterRef">
<!-- 这里必须加上全包名否则当filterRef被其他Mapper.xml包含引用的时候就会调用Mapper.xml中的该SQL片段 -->
<include refid="com.orange.demo.app.dao.StudentActionStatsMapper.inputFilterRef"/>
</sql>
<!-- 这里仅包含调用接口输入的主表过滤条件 -->
<sql id="inputFilterRef">
<if test="studentActionStatsFilter != null">
<if test="studentActionStatsFilter.statsDateStart != null and studentActionStatsFilter.statsDateStart != ''">
AND zz_student_action_stats.stats_date &gt;= #{studentActionStatsFilter.statsDateStart}

View File

@@ -18,8 +18,13 @@
<result column="exercise_correct_flag" jdbcType="TINYINT" property="exerciseCorrectFlag"/>
<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
</resultMap>
<!-- 如果有逻辑删除字段过滤,请写到这里 -->
<sql id="filterRef">
<!-- 这里必须加上全包名否则当filterRef被其他Mapper.xml包含引用的时候就会调用Mapper.xml中的该SQL片段 -->
<include refid="com.orange.demo.app.dao.StudentActionTransMapper.inputFilterRef"/>
</sql>
<!-- 这里仅包含调用接口输入的主表过滤条件 -->
<sql id="inputFilterRef">
<if test="studentActionTransFilter != null">
<if test="studentActionTransFilter.studentId != null">
AND zz_student_action_trans.student_id = #{studentActionTransFilter.studentId}

View File

@@ -12,8 +12,14 @@
<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
<result column="status" jdbcType="TINYINT" property="status"/>
</resultMap>
<!-- 如果有逻辑删除字段过滤,请写到这里 -->
<sql id="filterRef">
<!-- 这里必须加上全包名否则当filterRef被其他Mapper.xml包含引用的时候就会调用Mapper.xml中的该SQL片段 -->
<include refid="com.orange.demo.app.dao.StudentClassMapper.inputFilterRef"/>
AND zz_class.status = ${@com.orange.demo.common.core.constant.GlobalDeletedFlag@NORMAL}
</sql>
<!-- 这里仅包含调用接口输入的主表过滤条件 -->
<sql id="inputFilterRef">
<if test="studentClassFilter != null">
<if test="studentClassFilter.className != null and studentClassFilter.className != ''">
AND zz_class.class_name = #{studentClassFilter.className}
@@ -25,7 +31,6 @@
AND zz_class.class_level = #{studentClassFilter.classLevel}
</if>
</if>
AND zz_class.status = ${@com.orange.demo.common.core.constant.GlobalDeletedFlag@NORMAL}
</sql>
<select id="getStudentClassList" resultMap="BaseResultMap" parameterType="com.orange.demo.app.model.StudentClass">

View File

@@ -18,8 +18,13 @@
<result column="register_time" jdbcType="TIMESTAMP" property="registerTime"/>
<result column="status" jdbcType="TINYINT" property="status"/>
</resultMap>
<!-- 如果有逻辑删除字段过滤,请写到这里 -->
<sql id="filterRef">
<!-- 这里必须加上全包名否则当filterRef被其他Mapper.xml包含引用的时候就会调用Mapper.xml中的该SQL片段 -->
<include refid="com.orange.demo.app.dao.StudentMapper.inputFilterRef"/>
</sql>
<!-- 这里仅包含调用接口输入的主表过滤条件 -->
<sql id="inputFilterRef">
<if test="studentFilter != null">
<if test="studentFilter.provinceId != null">
AND zz_student.province_id = #{studentFilter.provinceId}

View File

@@ -6,9 +6,13 @@ import com.orange.demo.common.core.upload.UploadStoreTypeEnum;
import com.orange.demo.common.core.annotation.UploadFlagColumn;
import com.orange.demo.common.core.annotation.RelationDict;
import com.orange.demo.common.core.annotation.RelationConstDict;
import com.orange.demo.common.core.base.mapper.BaseModelMapper;
import com.orange.demo.common.core.validator.UpdateGroup;
import com.orange.demo.common.core.validator.ConstDictRef;
import com.orange.demo.app.vo.CourseVo;
import lombok.Data;
import org.mapstruct.*;
import org.mapstruct.factory.Mappers;
import javax.persistence.*;
import javax.validation.constraints.*;
@@ -169,4 +173,27 @@ public class Course {
constantDictClass = Subject.class)
@Transient
private Map<String, Object> subjectIdDictMap;
@Mapper
public interface CourseModelMapper extends BaseModelMapper<CourseVo, Course> {
/**
* 转换Vo对象到实体对象。
*
* @param courseVo 域对象。
* @return 实体对象。
*/
@Mapping(target = "classCourse", expression = "java(mapToBean(courseVo.getClassCourse(), com.orange.demo.app.model.ClassCourse.class))")
@Override
Course toModel(CourseVo courseVo);
/**
* 转换实体对象到VO对象。
*
* @param course 实体对象。
* @return 域对象。
*/
@Mapping(target = "classCourse", expression = "java(beanToMap(course.getClassCourse(), false))")
@Override
CourseVo fromModel(Course course);
}
public static final CourseModelMapper INSTANCE = Mappers.getMapper(CourseModelMapper.class);
}

View File

@@ -3,9 +3,13 @@ package com.orange.demo.app.model;
import com.orange.demo.application.common.constant.Subject;
import com.orange.demo.common.core.annotation.RelationDict;
import com.orange.demo.common.core.annotation.RelationConstDict;
import com.orange.demo.common.core.base.mapper.BaseModelMapper;
import com.orange.demo.common.core.validator.UpdateGroup;
import com.orange.demo.common.core.validator.ConstDictRef;
import com.orange.demo.app.vo.CourseTransStatsVo;
import lombok.Data;
import org.mapstruct.*;
import org.mapstruct.factory.Mappers;
import javax.persistence.*;
import javax.validation.constraints.*;
@@ -119,4 +123,25 @@ public class CourseTransStats {
constantDictClass = Subject.class)
@Transient
private Map<String, Object> subjectIdDictMap;
@Mapper
public interface CourseTransStatsModelMapper extends BaseModelMapper<CourseTransStatsVo, CourseTransStats> {
/**
* 转换Vo对象到实体对象。
*
* @param courseTransStatsVo 域对象。
* @return 实体对象。
*/
@Override
CourseTransStats toModel(CourseTransStatsVo courseTransStatsVo);
/**
* 转换实体对象到VO对象。
*
* @param courseTransStats 实体对象。
* @return 域对象。
*/
@Override
CourseTransStatsVo fromModel(CourseTransStats courseTransStats);
}
public static final CourseTransStatsModelMapper INSTANCE = Mappers.getMapper(CourseTransStatsModelMapper.class);
}

View File

@@ -1,8 +1,12 @@
package com.orange.demo.app.model;
import com.orange.demo.common.core.annotation.RelationDict;
import com.orange.demo.common.core.base.mapper.BaseModelMapper;
import com.orange.demo.common.core.validator.UpdateGroup;
import com.orange.demo.app.vo.SchoolInfoVo;
import lombok.Data;
import org.mapstruct.*;
import org.mapstruct.factory.Mappers;
import javax.persistence.*;
import javax.validation.constraints.*;
@@ -64,4 +68,25 @@ public class SchoolInfo {
slaveNameField = "areaName")
@Transient
private Map<String, Object> cityIdDictMap;
@Mapper
public interface SchoolInfoModelMapper extends BaseModelMapper<SchoolInfoVo, SchoolInfo> {
/**
* 转换Vo对象到实体对象。
*
* @param schoolInfoVo 域对象。
* @return 实体对象。
*/
@Override
SchoolInfo toModel(SchoolInfoVo schoolInfoVo);
/**
* 转换实体对象到VO对象。
*
* @param schoolInfo 实体对象。
* @return 域对象。
*/
@Override
SchoolInfoVo fromModel(SchoolInfo schoolInfo);
}
public static final SchoolInfoModelMapper INSTANCE = Mappers.getMapper(SchoolInfoModelMapper.class);
}

View File

@@ -5,9 +5,13 @@ import com.orange.demo.application.common.constant.ExpLevel;
import com.orange.demo.application.common.constant.StudentStatus;
import com.orange.demo.common.core.annotation.RelationDict;
import com.orange.demo.common.core.annotation.RelationConstDict;
import com.orange.demo.common.core.base.mapper.BaseModelMapper;
import com.orange.demo.common.core.validator.UpdateGroup;
import com.orange.demo.common.core.validator.ConstDictRef;
import com.orange.demo.app.vo.StudentVo;
import lombok.Data;
import org.mapstruct.*;
import org.mapstruct.factory.Mappers;
import javax.persistence.*;
import javax.validation.constraints.*;
@@ -221,4 +225,25 @@ public class Student {
constantDictClass = StudentStatus.class)
@Transient
private Map<String, Object> statusDictMap;
@Mapper
public interface StudentModelMapper extends BaseModelMapper<StudentVo, Student> {
/**
* 转换Vo对象到实体对象。
*
* @param studentVo 域对象。
* @return 实体对象。
*/
@Override
Student toModel(StudentVo studentVo);
/**
* 转换实体对象到VO对象。
*
* @param student 实体对象。
* @return 域对象。
*/
@Override
StudentVo fromModel(Student student);
}
public static final StudentModelMapper INSTANCE = Mappers.getMapper(StudentModelMapper.class);
}

View File

@@ -1,8 +1,12 @@
package com.orange.demo.app.model;
import com.orange.demo.common.core.annotation.RelationDict;
import com.orange.demo.common.core.base.mapper.BaseModelMapper;
import com.orange.demo.common.core.validator.UpdateGroup;
import com.orange.demo.app.vo.StudentActionStatsVo;
import lombok.Data;
import org.mapstruct.*;
import org.mapstruct.factory.Mappers;
import javax.persistence.*;
import javax.validation.constraints.*;
@@ -204,4 +208,25 @@ public class StudentActionStats {
slaveNameField = "areaName")
@Transient
private Map<String, Object> cityIdDictMap;
@Mapper
public interface StudentActionStatsModelMapper extends BaseModelMapper<StudentActionStatsVo, StudentActionStats> {
/**
* 转换Vo对象到实体对象。
*
* @param studentActionStatsVo 域对象。
* @return 实体对象。
*/
@Override
StudentActionStats toModel(StudentActionStatsVo studentActionStatsVo);
/**
* 转换实体对象到VO对象。
*
* @param studentActionStats 实体对象。
* @return 域对象。
*/
@Override
StudentActionStatsVo fromModel(StudentActionStats studentActionStats);
}
public static final StudentActionStatsModelMapper INSTANCE = Mappers.getMapper(StudentActionStatsModelMapper.class);
}

View File

@@ -4,9 +4,13 @@ import com.orange.demo.application.common.constant.StudentActionType;
import com.orange.demo.application.common.constant.DeviceType;
import com.orange.demo.common.core.annotation.RelationDict;
import com.orange.demo.common.core.annotation.RelationConstDict;
import com.orange.demo.common.core.base.mapper.BaseModelMapper;
import com.orange.demo.common.core.validator.UpdateGroup;
import com.orange.demo.common.core.validator.ConstDictRef;
import com.orange.demo.app.vo.StudentActionTransVo;
import lombok.Data;
import org.mapstruct.*;
import org.mapstruct.factory.Mappers;
import javax.persistence.*;
import javax.validation.constraints.*;
@@ -165,4 +169,25 @@ public class StudentActionTrans {
constantDictClass = DeviceType.class)
@Transient
private Map<String, Object> deviceTypeDictMap;
@Mapper
public interface StudentActionTransModelMapper extends BaseModelMapper<StudentActionTransVo, StudentActionTrans> {
/**
* 转换Vo对象到实体对象。
*
* @param studentActionTransVo 域对象。
* @return 实体对象。
*/
@Override
StudentActionTrans toModel(StudentActionTransVo studentActionTransVo);
/**
* 转换实体对象到VO对象。
*
* @param studentActionTrans 实体对象。
* @return 域对象。
*/
@Override
StudentActionTransVo fromModel(StudentActionTrans studentActionTrans);
}
public static final StudentActionTransModelMapper INSTANCE = Mappers.getMapper(StudentActionTransModelMapper.class);
}

View File

@@ -4,10 +4,14 @@ import com.alibaba.fastjson.annotation.JSONField;
import com.orange.demo.app.model.constant.ClassLevel;
import com.orange.demo.common.core.annotation.RelationDict;
import com.orange.demo.common.core.annotation.RelationConstDict;
import com.orange.demo.common.core.base.mapper.BaseModelMapper;
import com.orange.demo.common.core.annotation.DeletedFlagColumn;
import com.orange.demo.common.core.validator.UpdateGroup;
import com.orange.demo.common.core.validator.ConstDictRef;
import com.orange.demo.app.vo.StudentClassVo;
import lombok.Data;
import org.mapstruct.*;
import org.mapstruct.factory.Mappers;
import javax.persistence.*;
import javax.validation.constraints.*;
@@ -110,4 +114,25 @@ public class StudentClass {
constantDictClass = ClassLevel.class)
@Transient
private Map<String, Object> classLevelDictMap;
@Mapper
public interface StudentClassModelMapper extends BaseModelMapper<StudentClassVo, StudentClass> {
/**
* 转换Vo对象到实体对象。
*
* @param studentClassVo 域对象。
* @return 实体对象。
*/
@Override
StudentClass toModel(StudentClassVo studentClassVo);
/**
* 转换实体对象到VO对象。
*
* @param studentClass 实体对象。
* @return 域对象。
*/
@Override
StudentClassVo fromModel(StudentClass studentClass);
}
public static final StudentClassModelMapper INSTANCE = Mappers.getMapper(StudentClassModelMapper.class);
}

View File

@@ -0,0 +1,33 @@
package com.orange.demo.app.vo;
import lombok.Data;
/**
* 行政区划DomainVO对象。
*
* @author Jerry
* @date 2020-09-24
*/
@Data
public class AreaCodeVo {
/**
* 行政区划主键Id
*/
private Long areaId;
/**
* 行政区划名称
*/
private String areaName;
/**
* 行政区划级别 (1: 省级别 2: 市级别 3: 区级别)
*/
private Integer areaLevel;
/**
* 父级行政区划Id
*/
private Long parentId;
}

View File

@@ -0,0 +1,28 @@
package com.orange.demo.app.vo;
import lombok.Data;
/**
* ClassCourseVO对象。
*
* @author Jerry
* @date 2020-09-24
*/
@Data
public class ClassCourseVo {
/**
* 班级Id。
*/
private Long classId;
/**
* 课程Id。
*/
private Long courseId;
/**
* 课程顺序(数值越小越靠前)。
*/
private Integer courseOrder;
}

View File

@@ -0,0 +1,23 @@
package com.orange.demo.app.vo;
import lombok.Data;
/**
* ClassStudentVO对象。
*
* @author Jerry
* @date 2020-09-24
*/
@Data
public class ClassStudentVo {
/**
* 班级Id。
*/
private Long classId;
/**
* 学生Id。
*/
private Long studentId;
}

View File

@@ -0,0 +1,76 @@
package com.orange.demo.app.vo;
import lombok.Data;
import java.util.Date;
import java.util.Map;
/**
* CourseTransStatsVO对象。
*
* @author Jerry
* @date 2020-09-24
*/
@Data
public class CourseTransStatsVo {
/**
* 主键Id。
*/
private Long statsId;
/**
* 统计日期。
*/
private Date statsDate;
/**
* 科目Id。
*/
private Integer subjectId;
/**
* 年级Id。
*/
private Integer gradeId;
/**
* 年级名称。
*/
private String gradeName;
/**
* 课程Id。
*/
private Long courseId;
/**
* 课程名称。
*/
private String courseName;
/**
* 学生上课次数。
*/
private Integer studentAttendCount;
/**
* 学生献花数量。
*/
private Integer studentFlowerAmount;
/**
* 学生献花次数。
*/
private Integer studentFlowerCount;
/**
* gradeId 字典关联数据。
*/
private Map<String, Object> gradeIdDictMap;
/**
* subjectId 常量字典关联数据。
*/
private Map<String, Object> subjectIdDictMap;
}

View File

@@ -0,0 +1,97 @@
package com.orange.demo.app.vo;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
import java.util.Map;
/**
* CourseVO对象。
*
* @author Jerry
* @date 2020-09-24
*/
@Data
public class CourseVo {
/**
* 主键Id。
*/
private Long courseId;
/**
* 课程名称。
*/
private String courseName;
/**
* 课程价格。
*/
private BigDecimal price;
/**
* 课程描述。
*/
private String description;
/**
* 课程难度(0: 容易 1: 普通 2: 很难)。
*/
private Integer difficulty;
/**
* 年级Id。
*/
private Integer gradeId;
/**
* 学科Id。
*/
private Integer subjectId;
/**
* 课时数量。
*/
private Integer classHour;
/**
* 多张课程图片地址。
*/
private String pictureUrl;
/**
* 创建用户Id。
*/
private Long createUserId;
/**
* 创建时间。
*/
private Date createTime;
/**
* 最后修改时间。
*/
private Date updateTime;
/**
* courseId 的多对多关联表数据对象数据对应类型为ClassCourseVo。
*/
private Map<String, Object> classCourse;
/**
* gradeId 字典关联数据。
*/
private Map<String, Object> gradeIdDictMap;
/**
* difficulty 常量字典关联数据。
*/
private Map<String, Object> difficultyDictMap;
/**
* subjectId 常量字典关联数据。
*/
private Map<String, Object> subjectIdDictMap;
}

View File

@@ -0,0 +1,23 @@
package com.orange.demo.app.vo;
import lombok.Data;
/**
* GradeVO对象。
*
* @author Jerry
* @date 2020-09-24
*/
@Data
public class GradeVo {
/**
* 主键Id。
*/
private Integer gradeId;
/**
* 年级名称。
*/
private String gradeName;
}

View File

@@ -0,0 +1,45 @@
package com.orange.demo.app.vo;
import lombok.Data;
import java.util.Map;
/**
* SchoolInfoVO对象。
*
* @author Jerry
* @date 2020-09-24
*/
@Data
public class SchoolInfoVo {
/**
* 学校Id。
*/
private Long schoolId;
/**
* 学校名称。
*/
private String schoolName;
/**
* 所在省Id。
*/
private Long provinceId;
/**
* 所在城市Id。
*/
private Long cityId;
/**
* provinceId 字典关联数据。
*/
private Map<String, Object> provinceIdDictMap;
/**
* cityId 字典关联数据。
*/
private Map<String, Object> cityIdDictMap;
}

View File

@@ -0,0 +1,136 @@
package com.orange.demo.app.vo;
import lombok.Data;
import java.util.Date;
import java.util.Map;
/**
* StudentActionStatsVO对象。
*
* @author Jerry
* @date 2020-09-24
*/
@Data
public class StudentActionStatsVo {
/**
* 主键Id。
*/
private Long statsId;
/**
* 统计日期。
*/
private Date statsDate;
/**
* 统计小时。
*/
private Date statsMonth;
/**
* 年级Id。
*/
private Integer gradeId;
/**
* 学生所在省Id。
*/
private Long provinceId;
/**
* 学生所在城市Id。
*/
private Long cityId;
/**
* 购课学币数量。
*/
private Integer buyCourseAmount;
/**
* 购买课程次数。
*/
private Integer buyCourseCount;
/**
* 购买视频学币数量。
*/
private Integer buyVideoAmount;
/**
* 购买视频次数。
*/
private Integer buyVideoCount;
/**
* 购买作业学币数量。
*/
private Integer buyPaperAmount;
/**
* 购买作业次数。
*/
private Integer buyPaperCount;
/**
* 购买献花数量。
*/
private Integer buyFlowerAmount;
/**
* 购买献花次数。
*/
private Integer buyFlowerCount;
/**
* 充值学币数量。
*/
private Integer rechargeCoinAmount;
/**
* 充值学币次数。
*/
private Integer rechargeCoinCount;
/**
* 线下课程上课次数。
*/
private Integer doCourseCount;
/**
* 观看视频次数。
*/
private Integer watchVideoCount;
/**
* 购买献花消费学币数量。
*/
private Integer watchVideoTotalSecond;
/**
* 做题数量。
*/
private Integer doExerciseCount;
/**
* 做题正确的数量。
*/
private Integer doExerciseCorrectCount;
/**
* gradeId 字典关联数据。
*/
private Map<String, Object> gradeIdDictMap;
/**
* provinceId 字典关联数据。
*/
private Map<String, Object> provinceIdDictMap;
/**
* cityId 字典关联数据。
*/
private Map<String, Object> cityIdDictMap;
}

View File

@@ -0,0 +1,111 @@
package com.orange.demo.app.vo;
import lombok.Data;
import java.util.Date;
import java.util.Map;
/**
* StudentActionTransVO对象。
*
* @author Jerry
* @date 2020-09-24
*/
@Data
public class StudentActionTransVo {
/**
* 主键Id。
*/
private Long transId;
/**
* 学生Id。
*/
private Long studentId;
/**
* 学生名称。
*/
private String studentName;
/**
* 学生校区。
*/
private Long schoolId;
/**
* 年级Id。
*/
private Integer gradeId;
/**
* 行为类型(0: 充值 1: 购课 2: 上课签到 3: 上课签退 4: 看视频课 5: 做作业 6: 刷题 7: 献花)。
*/
private Integer actionType;
/**
* 设备类型(0: iOS 1: Android 2: PC)。
*/
private Integer deviceType;
/**
* 看视频秒数。
*/
private Integer watchVideoSeconds;
/**
* 购买献花数量。
*/
private Integer flowerCount;
/**
* 购买作业数量。
*/
private Integer paperCount;
/**
* 购买视频数量。
*/
private Integer videoCount;
/**
* 购买课程数量。
*/
private Integer courseCount;
/**
* 充值学币数量。
*/
private Integer coinCount;
/**
* 做题是否正确标记。
*/
private Integer exerciseCorrectFlag;
/**
* 发生时间。
*/
private Date createTime;
/**
* schoolId 字典关联数据。
*/
private Map<String, Object> schoolIdDictMap;
/**
* gradeId 字典关联数据。
*/
private Map<String, Object> gradeIdDictMap;
/**
* actionType 常量字典关联数据。
*/
private Map<String, Object> actionTypeDictMap;
/**
* deviceType 常量字典关联数据。
*/
private Map<String, Object> deviceTypeDictMap;
}

View File

@@ -0,0 +1,71 @@
package com.orange.demo.app.vo;
import lombok.Data;
import java.util.Date;
import java.util.Map;
/**
* StudentClassVO对象。
*
* @author Jerry
* @date 2020-09-24
*/
@Data
public class StudentClassVo {
/**
* 班级Id。
*/
private Long classId;
/**
* 班级名称。
*/
private String className;
/**
* 学校Id。
*/
private Long schoolId;
/**
* 学生班长Id。
*/
private Long leaderId;
/**
* 已完成课时数量。
*/
private Integer finishClassHour;
/**
* 班级级别(0: 初级班 1: 培优班 2: 冲刺提分班 3: 竞赛班)。
*/
private Integer classLevel;
/**
* 创建用户。
*/
private Long createUserId;
/**
* 班级创建时间。
*/
private Date createTime;
/**
* schoolId 字典关联数据。
*/
private Map<String, Object> schoolIdDictMap;
/**
* leaderId 字典关联数据。
*/
private Map<String, Object> leaderIdDictMap;
/**
* classLevel 常量字典关联数据。
*/
private Map<String, Object> classLevelDictMap;
}

View File

@@ -0,0 +1,131 @@
package com.orange.demo.app.vo;
import lombok.Data;
import java.util.Date;
import java.util.Map;
/**
* StudentVO对象。
*
* @author Jerry
* @date 2020-09-24
*/
@Data
public class StudentVo {
/**
* 学生Id。
*/
private Long studentId;
/**
* 登录手机。
*/
private String loginMobile;
/**
* 学生姓名。
*/
private String studentName;
/**
* 所在省份Id。
*/
private Long provinceId;
/**
* 所在城市Id。
*/
private Long cityId;
/**
* 区县Id。
*/
private Long districtId;
/**
* 学生性别 (0: 女生 1: 男生)。
*/
private Integer gender;
/**
* 生日。
*/
private Date birthday;
/**
* 经验等级 (0: 初级 1: 中级 2: 高级 3: 资深)。
*/
private Integer experienceLevel;
/**
* 总共充值学币数量。
*/
private Integer totalCoin;
/**
* 可用学币数量。
*/
private Integer leftCoin;
/**
* 年级Id。
*/
private Integer gradeId;
/**
* 校区Id。
*/
private Long schoolId;
/**
* 注册时间。
*/
private Date registerTime;
/**
* 学生状态 (0: 正常 1: 锁定 2: 注销)。
*/
private Integer status;
/**
* provinceId 字典关联数据。
*/
private Map<String, Object> provinceIdDictMap;
/**
* cityId 字典关联数据。
*/
private Map<String, Object> cityIdDictMap;
/**
* districtId 字典关联数据。
*/
private Map<String, Object> districtIdDictMap;
/**
* gradeId 字典关联数据。
*/
private Map<String, Object> gradeIdDictMap;
/**
* schoolId 字典关联数据。
*/
private Map<String, Object> schoolIdDictMap;
/**
* gender 常量字典关联数据。
*/
private Map<String, Object> genderDictMap;
/**
* experienceLevel 常量字典关联数据。
*/
private Map<String, Object> experienceLevelDictMap;
/**
* status 常量字典关联数据。
*/
private Map<String, Object> statusDictMap;
}

View File

@@ -95,7 +95,8 @@ public class LoginController {
*/
@PostMapping("/doLogout")
public ResponseResult<Void> doLogout() {
cacheHelper.removeAllSessionCache();
TokenData tokenData = TokenData.takeFromRequest();
cacheHelper.removeAllSessionCache(tokenData.getSessionId());
return ResponseResult.success();
}

View File

@@ -1,6 +1,7 @@
package com.orange.demo.upms.controller;
import com.github.pagehelper.page.PageMethod;
import com.orange.demo.upms.vo.*;
import com.orange.demo.upms.model.*;
import com.orange.demo.upms.service.*;
import com.orange.demo.common.core.object.*;
@@ -134,7 +135,7 @@ public class SysUserController {
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping("/list")
public ResponseResult<MyPageData<SysUser>> list(
public ResponseResult<MyPageData<SysUserVo>> list(
@MyRequestBody SysUser sysUserFilter,
@MyRequestBody MyOrderParam orderParam,
@MyRequestBody MyPageParam pageParam) {
@@ -142,8 +143,8 @@ public class SysUserController {
PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize());
}
String orderBy = MyOrderParam.buildOrderBy(orderParam, SysUser.class);
List<SysUser> resultList = sysUserService.getSysUserListWithRelation(sysUserFilter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(resultList));
List<SysUser> sysUserList = sysUserService.getSysUserListWithRelation(sysUserFilter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(sysUserList, SysUser.INSTANCE));
}
/**
@@ -153,7 +154,7 @@ public class SysUserController {
* @return 应答结果对象,包含对象详情。
*/
@GetMapping("/view")
public ResponseResult<SysUser> view(@RequestParam Long userId) {
public ResponseResult<SysUserVo> view(@RequestParam Long userId) {
if (MyCommonUtil.existBlankArgument(userId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
@@ -162,6 +163,7 @@ public class SysUserController {
if (sysUser == null) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
return ResponseResult.success(sysUser);
SysUserVo sysUserVo = SysUser.INSTANCE.fromModel(sysUser);
return ResponseResult.success(sysUserVo);
}
}

View File

@@ -15,8 +15,14 @@
<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
</resultMap>
<!-- 如果有逻辑删除字段过滤,请写到这里 -->
<sql id="filterRef">
<!-- 这里必须加上全包名否则当filterRef被其他Mapper.xml包含引用的时候就会调用Mapper.xml中的该SQL片段 -->
<include refid="com.orange.demo.upms.dao.SysUserMapper.inputFilterRef"/>
AND zz_sys_user.deleted_flag = ${@com.orange.demo.common.core.constant.GlobalDeletedFlag@NORMAL}
</sql>
<!-- 这里仅包含调用接口输入的主表过滤条件 -->
<sql id="inputFilterRef">
<if test="sysUserFilter != null">
<if test="sysUserFilter.loginName != null and sysUserFilter.loginName != ''">
<bind name = "safeLoginName" value = "'%' + sysUserFilter.loginName + '%'" />
@@ -36,7 +42,6 @@
AND zz_sys_user.create_time &lt;= #{sysUserFilter.createTimeEnd}
</if>
</if>
AND zz_sys_user.deleted_flag = ${@com.orange.demo.common.core.constant.GlobalDeletedFlag@NORMAL}
</sql>
<select id="getSysUserList" resultMap="BaseResultMap" parameterType="com.orange.demo.upms.model.SysUser">

View File

@@ -4,11 +4,15 @@ import com.alibaba.fastjson.annotation.JSONField;
import com.orange.demo.upms.model.constant.SysUserType;
import com.orange.demo.upms.model.constant.SysUserStatus;
import com.orange.demo.common.core.annotation.RelationConstDict;
import com.orange.demo.common.core.base.mapper.BaseModelMapper;
import com.orange.demo.common.core.annotation.DeletedFlagColumn;
import com.orange.demo.common.core.validator.AddGroup;
import com.orange.demo.common.core.validator.UpdateGroup;
import com.orange.demo.common.core.validator.ConstDictRef;
import com.orange.demo.upms.vo.SysUserVo;
import lombok.Data;
import org.mapstruct.*;
import org.mapstruct.factory.Mappers;
import javax.persistence.*;
import javax.validation.constraints.*;
@@ -130,4 +134,25 @@ public class SysUser {
constantDictClass = SysUserStatus.class)
@Transient
private Map<String, Object> userStatusDictMap;
@Mapper
public interface SysUserModelMapper extends BaseModelMapper<SysUserVo, SysUser> {
/**
* 转换Vo对象到实体对象。
*
* @param sysUserVo 域对象。
* @return 实体对象。
*/
@Override
SysUser toModel(SysUserVo sysUserVo);
/**
* 转换实体对象到VO对象。
*
* @param sysUser 实体对象。
* @return 域对象。
*/
@Override
SysUserVo fromModel(SysUser sysUser);
}
public static final SysUserModelMapper INSTANCE = Mappers.getMapper(SysUserModelMapper.class);
}

View File

@@ -109,8 +109,9 @@ public class SysUserService extends BaseService<SysUser, Long> {
@Transactional(rollbackFor = Exception.class)
public boolean changePassword(Long userId, String newPass) {
Example e = new Example(SysUser.class);
e.createCriteria().andEqualTo(super.idFieldName, userId);
e.createCriteria().andEqualTo(super.deletedFlagFieldName, GlobalDeletedFlag.NORMAL);
e.createCriteria()
.andEqualTo(super.idFieldName, userId)
.andEqualTo(super.deletedFlagFieldName, GlobalDeletedFlag.NORMAL);
SysUser updatedUser = new SysUser();
updatedUser.setPassword(passwordEncoder.encode(newPass));
return sysUserMapper.updateByExampleSelective(updatedUser, e) == 1;

View File

@@ -0,0 +1,81 @@
package com.orange.demo.upms.vo;
import lombok.Data;
import java.util.Date;
import java.util.Map;
/**
* SysUserVO对象。
*
* @author Jerry
* @date 2020-09-24
*/
@Data
public class SysUserVo {
/**
* 用户Id。
*/
private Long userId;
/**
* 登录用户名。
*/
private String loginName;
/**
* 用户密码。
*/
private String password;
/**
* 用户显示名称。
*/
private String showName;
/**
* 用户类型(0: 管理员 1: 系统管理用户 2: 系统业务用户)。
*/
private Integer userType;
/**
* 用户头像的Url。
*/
private String headImageUrl;
/**
* 用户状态(0: 正常 1: 锁定)。
*/
private Integer userStatus;
/**
* 创建用户Id。
*/
private Long createUserId;
/**
* 创建用户名。
*/
private String createUsername;
/**
* 创建时间。
*/
private Date createTime;
/**
* 更新时间。
*/
private Date updateTime;
/**
* userType 常量字典关联数据。
*/
private Map<String, Object> userTypeDictMap;
/**
* userStatus 常量字典关联数据。
*/
private Map<String, Object> userStatusDictMap;
}

View File

@@ -7,9 +7,9 @@
<!--日志变量 -->
<properties>
<!-- 日志主目录 ,需要保存到文件时请自己配置-->
<property name="LOG_HOME">./zzlogs</property>
<property name="LOG_HOME">./zzlogs/application</property>
<!-- 日志备份目录 -->
<property name="BACKUP_HOME">./zzlogs/backup</property>
<property name="BACKUP_HOME">./zzlogs/application/backup</property>
<!-- 日志输出级别 -->
<property name="OUTPUT_LOG_LEVEL">info</property>
<!-- 日志输出格式 -->
@@ -37,8 +37,8 @@
</console>
<!-- console_log级别日志文件 -->
<!--每次大小超过size则这size大小的日志会自动进行压缩作为存档 -->
<rollingFile name="file_log" fileName="${LOG_HOME}/server/server.log"
filePattern="${LOG_HOME}/server/server-%d{yyyy-MM-dd}-%i.log.gz">
<rollingFile name="file_log" fileName="${LOG_HOME}/application.log"
filePattern="${LOG_HOME}/application-%d{yyyy-MM-dd}-%i.log.gz">
<PatternLayout charset="UTF-8" pattern="${LOG_PATTERN_EX}"/>
<!-- 日志切割的最小单位 -->
<SizeBasedTriggeringPolicy size="${EVERY_FILE_SIZE}"/>

View File

@@ -1,8 +1,6 @@
package com.orange.demo.common.core.advice;
import com.orange.demo.common.core.exception.InvalidClassFieldException;
import com.orange.demo.common.core.exception.InvalidDataFieldException;
import com.orange.demo.common.core.exception.InvalidDataModelException;
import com.orange.demo.common.core.exception.*;
import com.orange.demo.common.core.constant.ErrorCodeEnum;
import com.orange.demo.common.core.exception.RedisCacheAccessException;
import com.orange.demo.common.core.object.ResponseResult;
@@ -113,6 +111,19 @@ public class MyExceptionHandler {
return ResponseResult.error(ErrorCodeEnum.DATA_ACCESS_FAILED);
}
/**
* 操作不存在或已逻辑删除数据的异常处理方法。
*
* @param ex 异常对象。
* @param request http请求。
* @return 应答对象。
*/
@ExceptionHandler(value = NoDataAffectException.class)
public ResponseResult<Void> noDataEffectExceptionHandle(Exception ex, HttpServletRequest request) {
log.error("NoDataAffectException exception from URL [" + request.getRequestURI() + "]", ex);
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
/**
* Redis缓存访问异常处理方法。
*

View File

@@ -125,7 +125,7 @@ public abstract class BaseDictService<M, K> extends BaseService<M, K> {
@SuppressWarnings("unchecked")
public <T> boolean existUniqueKeyList(String inFilterField, Set<T> inFilterValues) {
if (CollectionUtils.isEmpty(inFilterValues)) {
return false;
return true;
}
if (inFilterField.equals(this.idFieldName)) {
List<M> dataList = dictionaryCache.getInList((Set<K>) inFilterValues);

View File

@@ -20,6 +20,7 @@ import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.lang.reflect.Modifier;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
@@ -169,7 +170,7 @@ public abstract class BaseService<M, K> {
}
Example e = new Example(modelClass);
e.createCriteria().andEqualTo(fieldName, fieldValue);
return mapper().selectByExample(e).size() == 1;
return mapper().selectCountByExample(e) == 1;
}
/**
@@ -263,7 +264,7 @@ public abstract class BaseService<M, K> {
*/
public boolean existAllPrimaryKeys(Set<K> idSet) {
if (CollectionUtils.isEmpty(idSet)) {
return false;
return true;
}
return this.existUniqueKeyList(idFieldName, idSet);
}
@@ -277,7 +278,7 @@ public abstract class BaseService<M, K> {
*/
public <T> boolean existUniqueKeyList(String inFilterField, Set<T> inFilterValues) {
if (CollectionUtils.isEmpty(inFilterValues)) {
return false;
return true;
}
Example e = this.makeDefaultInListExample(inFilterField, inFilterValues, null);
if (deletedFlagFieldName != null) {
@@ -450,20 +451,21 @@ public abstract class BaseService<M, K> {
int modifiers = field.getModifiers();
// transient类型的字段不能作为查询条件
int transientMask = 128;
if ((modifiers & transientMask) == 0) {
if (field.getName().equals(deletedFlagFieldName)) {
c.andEqualTo(deletedFlagFieldName, GlobalDeletedFlag.NORMAL);
} else {
ReflectUtil.setAccessible(field);
try {
Object o = field.get(filter);
if (o != null) {
c.andEqualTo(field.getName(), field.get(filter));
}
} catch (IllegalAccessException ex) {
log.error("Failed to call reflection code of BaseService.getListByFilter.", ex);
throw new MyRuntimeException(ex);
if ((modifiers & transientMask) != 0 || Modifier.isStatic(modifiers)) {
return;
}
if (field.getName().equals(deletedFlagFieldName)) {
c.andEqualTo(deletedFlagFieldName, GlobalDeletedFlag.NORMAL);
} else {
ReflectUtil.setAccessible(field);
try {
Object o = field.get(filter);
if (o != null) {
c.andEqualTo(field.getName(), field.get(filter));
}
} catch (IllegalAccessException ex) {
log.error("Failed to call reflection code of BaseService.getListByFilter.", ex);
throw new MyRuntimeException(ex);
}
}
}
@@ -492,10 +494,14 @@ public abstract class BaseService<M, K> {
*/
public List<M> getListByParentId(String parentIdFieldName, K parentId) {
Example e = new Example(modelClass);
Example.Criteria c = e.createCriteria();
if (parentId != null) {
e.createCriteria().andEqualTo(parentIdFieldName, parentId);
c.andEqualTo(parentIdFieldName, parentId);
} else {
e.createCriteria().andIsNull(parentIdFieldName);
c.andIsNull(parentIdFieldName);
}
if (deletedFlagFieldName != null) {
c.andEqualTo(deletedFlagFieldName, GlobalDeletedFlag.NORMAL);
}
return mapper().selectByExample(e);
}

View File

@@ -88,10 +88,12 @@ public class SessionCacheHelper {
/**
* 清除当前session的所有缓存数据。
*
* @param sessionId 当前会话的SessionId。
*/
public void removeAllSessionCache() {
public void removeAllSessionCache(String sessionId) {
for (CacheConfig.CacheEnum c : CacheConfig.CacheEnum.values()) {
cacheManager.getCache(c.name()).clear();
cacheManager.getCache(c.name()).evict(sessionId);
}
}
}

View File

@@ -35,6 +35,9 @@ public enum ErrorCodeEnum {
INVALID_USERNAME_PASSWORD("用户名或密码错误,请重试!"),
INVALID_ACCESS_TOKEN("无效的用户访问令牌!"),
INVALID_USER_STATUS("用户状态错误,请刷新后重试!"),
INVALID_TENANT_CODE("指定的租户编码并不存在,请刷新后重试!"),
INVALID_TENANT_STATUS("当前租户为不可用状态,请刷新后重试!"),
INVALID_USER_TENANT("当前用户并不属于当前租户,请刷新后重试!"),
HAS_CHILDREN_DATA("数据验证失败,子数据存在,请刷新后重试!"),
DATA_VALIDATED_FAILED("数据验证失败,请核对!"),

View File

@@ -1,7 +1,10 @@
package com.orange.demo.common.core.object;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.LinkedList;
import java.util.List;
/**
@@ -11,6 +14,8 @@ import java.util.List;
* @date 2020-09-24
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class MyPageData<T> {
/**
* 数据列表。
@@ -20,4 +25,12 @@ public class MyPageData<T> {
* 数据总数量。
*/
private Long totalCount;
/**
* 为了保持前端的数据格式兼容性,在没有数据的时候,需要返回空分页对象。
* @return 空分页对象。
*/
public static <T> MyPageData<T> emptyPageData() {
return new MyPageData<>(new LinkedList<>(), 0L);
}
}

View File

@@ -19,6 +19,7 @@ import javax.persistence.Column;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
@@ -414,6 +415,9 @@ public class MyModelUtil {
Function<R, Object> thatIdGetterFunc,
String thisRelationField,
boolean orderByThatList) {
if (CollectionUtils.isEmpty(thisModelList)) {
return;
}
Field thisTargetField = ReflectUtil.getField(thisClazz, thisRelationField);
boolean isMap = thisTargetField.getType().equals(Map.class);
if (orderByThatList) {
@@ -463,12 +467,12 @@ public class MyModelUtil {
Example.Criteria c = e.createCriteria();
Field[] fields = ReflectUtil.getFields(modelClass);
for (Field field : fields) {
if (field.getAnnotation(Transient.class) != null) {
continue;
}
int modifiers = field.getModifiers();
// transient类型的字段不能作为查询条件
if ((modifiers & 128) == 0) {
if (field.getAnnotation(Transient.class) == null) {
int modifiers = field.getModifiers();
// transient类型的字段不能作为查询条件
if ((modifiers & 128) != 0 || Modifier.isStatic(modifiers)) {
continue;
}
ReflectUtil.setAccessible(field);
try {
Object o = field.get(filterModel);

View File

@@ -3,7 +3,10 @@ package com.orange.demo.common.core.util;
import cn.jimmyshi.beanquery.BeanQuery;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.Page;
import org.apache.commons.collections4.CollectionUtils;
import com.orange.demo.common.core.base.mapper.BaseModelMapper;
import com.orange.demo.common.core.object.MyPageData;
import com.orange.demo.common.core.object.Tuple2;
import java.util.List;
@@ -65,6 +68,38 @@ public class MyPageUtil {
return pageData;
}
/**
* 用户构建带有分页信息的数据列表。
*
* @param dataList 实体对象数据列表。
* @param modelMapper 实体对象到DomainVO对象的数据映射器。
* @param <D> DomainVO对象类型。
* @param <T> 实体对象类型。
* @return 返回分页数据对象。
*/
public static <D, T> MyPageData<D> makeResponseData(List<T> dataList, BaseModelMapper<D, T> modelMapper) {
long totalCount = 0L;
if (CollectionUtils.isEmpty(dataList)) {
// 这里需要构建分页数据对象,统一前端数据格式
return MyPageData.emptyPageData();
}
if (dataList instanceof Page) {
totalCount = ((Page<T>) dataList).getTotal();
}
return MyPageUtil.makeResponseData(modelMapper.fromModelList(dataList), totalCount);
}
/**
* 用户构建带有分页信息的数据列表。
*
* @param responseData 第一个数据时数据列表,第二个是列表数量。
* @param <T> 源数据类型。
* @return 返回分页数据对象。
*/
public static <T> MyPageData<T> makeResponseData(Tuple2<List<T>, Long> responseData) {
return makeResponseData(responseData.getFirst(), responseData.getSecond());
}
/**
* 私有构造函数,明确标识该常量类的作用。
*/

View File

@@ -163,16 +163,16 @@ userId|Long|true|指定对象主键Id。
## 业务应用模块
### AreaCodeController
#### listDict
- **URI:** /admin/app/areaCode/listDict
#### listDictAreaCode
- **URI:** /admin/app/areaCode/listDictAreaCode
- **Type:** GET
- **Content-Type:** multipart/form-data
- **Request-Headers:**
Name|Type|Description
--|--|--
Authorization|String|身份验证的Token
#### listDictByParentId
- **URI:** /admin/app/areaCode/listDictByParentId
#### listDictAreaCodeByParentId
- **URI:** /admin/app/areaCode/listDictAreaCodeByParentId
- **Type:** GET
- **Content-Type:** multipart/form-data
- **Request-Headers:**
@@ -327,8 +327,8 @@ Parameter|Type|Required|Description
fieldName|String|true|上传文件名。
asImage|Boolean|true|是否作为图片上传。如果是图片,今后下载的时候无需权限验证。否则就是附件上传,下载时需要权限验证。
uploadFile|File|true|上传文件对象。
#### listDict
- **URI:** /admin/app/course/listDict
#### listDictCourse
- **URI:** /admin/app/course/listDictCourse
- **Type:** GET
- **Content-Type:** multipart/form-data
- **Request-Headers:**
@@ -476,8 +476,8 @@ Authorization|String|身份验证的Token
"gradeId" : "Integer | true | 删除对象主键Id。"
}
```
#### listDict
- **URI:** /admin/app/grade/listDict
#### listDictGrade
- **URI:** /admin/app/grade/listDictGrade
- **Type:** GET
- **Content-Type:** multipart/form-data
- **Request-Headers:**
@@ -584,8 +584,8 @@ Authorization|String|身份验证的Token
Parameter|Type|Required|Description
--|--|--|--
schoolId|Long|true|指定对象主键Id。
#### listDict
- **URI:** /admin/app/schoolInfo/listDict
#### listDictSchoolInfo
- **URI:** /admin/app/schoolInfo/listDictSchoolInfo
- **Type:** GET
- **Content-Type:** multipart/form-data
- **Request-Headers:**
@@ -1267,8 +1267,8 @@ Authorization|String|身份验证的Token
Parameter|Type|Required|Description
--|--|--|--
studentId|Long|true|指定对象主键Id。
#### listDict
- **URI:** /admin/app/student/listDict
#### listDictStudent
- **URI:** /admin/app/student/listDictStudent
- **Type:** GET
- **Content-Type:** multipart/form-data
- **Request-Headers:**

View File

@@ -15,7 +15,7 @@
"name": "AreaCodeController",
"item": [
{
"name": "listDict",
"name": "listDictAreaCode",
"request": {
"method": "GET",
"header": [
@@ -26,7 +26,7 @@
}
],
"url": {
"raw": "http://{{host}}:8082//admin/app/areaCode/listDict",
"raw": "http://{{host}}:8082//admin/app/areaCode/listDictAreaCode",
"protocol": "http",
"host": [
"{{host}}"
@@ -36,14 +36,14 @@
"admin",
"app",
"areaCode",
"listDict"
"listDictAreaCode"
]
}
},
"response": []
},
{
"name": "listDictByParentId",
"name": "listDictAreaCodeByParentId",
"request": {
"method": "GET",
"header": [
@@ -54,7 +54,7 @@
}
],
"url": {
"raw": "http://{{host}}:8082//admin/app/areaCode/listDictByParentId",
"raw": "http://{{host}}:8082//admin/app/areaCode/listDictAreaCodeByParentId",
"protocol": "http",
"host": [
"{{host}}"
@@ -64,7 +64,7 @@
"admin",
"app",
"areaCode",
"listDictByParentId"
"listDictAreaCodeByParentId"
],
"query": [
{
@@ -110,7 +110,7 @@
},
"body": {
"mode": "raw",
"raw": "{\n\t\"course\" : {\n\t\t\"courseName\" : \"\",\n\t\t\"price\" : \"\",\n\t\t\"description\" : \"\",\n\t\t\"difficulty\" : \"0\",\n\t\t\"gradeId\" : \"0\",\n\t\t\"subjectId\" : \"0\",\n\t\t\"classHour\" : \"0\",\n\t\t\"pictureUrl\" : \"\",\n\t\t\"createUserId\" : \"0\",\n\t\t\"createTime\" : \"\",\n\t\t\"updateTime\" : \"\"\n\t}\n}\n",
"raw": "{\n\t\"course\" : {\n\t\t\"courseName\" : \"\",\n\t\t\"price\" : \"\",\n\t\t\"description\" : \"\",\n\t\t\"difficulty\" : \"\",\n\t\t\"gradeId\" : \"\",\n\t\t\"subjectId\" : \"\",\n\t\t\"classHour\" : \"\",\n\t\t\"pictureUrl\" : \"\",\n\t\t\"createUserId\" : \"\",\n\t\t\"createTime\" : \"\",\n\t\t\"updateTime\" : \"\"\n\t}\n}\n",
"options": {
"raw": {
"language": "json"
@@ -147,7 +147,7 @@
},
"body": {
"mode": "raw",
"raw": "{\n\t\"course\" : {\n\t\t\"courseId\" : \"0\",\n\t\t\"courseName\" : \"\",\n\t\t\"price\" : \"\",\n\t\t\"description\" : \"\",\n\t\t\"difficulty\" : \"0\",\n\t\t\"gradeId\" : \"0\",\n\t\t\"subjectId\" : \"0\",\n\t\t\"classHour\" : \"0\",\n\t\t\"pictureUrl\" : \"\",\n\t\t\"createUserId\" : \"0\",\n\t\t\"createTime\" : \"\",\n\t\t\"updateTime\" : \"\"\n\t}\n}\n",
"raw": "{\n\t\"course\" : {\n\t\t\"courseId\" : \"\",\n\t\t\"courseName\" : \"\",\n\t\t\"price\" : \"\",\n\t\t\"description\" : \"\",\n\t\t\"difficulty\" : \"\",\n\t\t\"gradeId\" : \"\",\n\t\t\"subjectId\" : \"\",\n\t\t\"classHour\" : \"\",\n\t\t\"pictureUrl\" : \"\",\n\t\t\"createUserId\" : \"\",\n\t\t\"createTime\" : \"\",\n\t\t\"updateTime\" : \"\"\n\t}\n}\n",
"options": {
"raw": {
"language": "json"
@@ -360,7 +360,7 @@
"response": []
},
{
"name": "listDict",
"name": "listDictCourse",
"request": {
"method": "GET",
"header": [
@@ -371,7 +371,7 @@
}
],
"url": {
"raw": "http://{{host}}:8082//admin/app/course/listDict",
"raw": "http://{{host}}:8082//admin/app/course/listDictCourse",
"protocol": "http",
"host": [
"{{host}}"
@@ -381,7 +381,7 @@
"admin",
"app",
"course",
"listDict"
"listDictCourse"
],
"query": [
{
@@ -623,7 +623,7 @@
},
"body": {
"mode": "raw",
"raw": "{\n\t\"grade\" : {\n\t\t\"gradeId\" : \"0\",\n\t\t\"gradeName\" : \"\"\n\t}\n}\n",
"raw": "{\n\t\"grade\" : {\n\t\t\"gradeId\" : \"\",\n\t\t\"gradeName\" : \"\"\n\t}\n}\n",
"options": {
"raw": {
"language": "json"
@@ -671,7 +671,7 @@
"response": []
},
{
"name": "listDict",
"name": "listDictGrade",
"request": {
"method": "GET",
"header": [
@@ -682,7 +682,7 @@
}
],
"url": {
"raw": "http://{{host}}:8082//admin/app/grade/listDict",
"raw": "http://{{host}}:8082//admin/app/grade/listDictGrade",
"protocol": "http",
"host": [
"{{host}}"
@@ -692,7 +692,7 @@
"admin",
"app",
"grade",
"listDict"
"listDictGrade"
]
}
},
@@ -760,7 +760,7 @@
},
"body": {
"mode": "raw",
"raw": "{\n\t\"schoolInfo\" : {\n\t\t\"schoolName\" : \"\",\n\t\t\"provinceId\" : \"0\",\n\t\t\"cityId\" : \"0\"\n\t}\n}\n",
"raw": "{\n\t\"schoolInfo\" : {\n\t\t\"schoolName\" : \"\",\n\t\t\"provinceId\" : \"\",\n\t\t\"cityId\" : \"\"\n\t}\n}\n",
"options": {
"raw": {
"language": "json"
@@ -797,7 +797,7 @@
},
"body": {
"mode": "raw",
"raw": "{\n\t\"schoolInfo\" : {\n\t\t\"schoolId\" : \"0\",\n\t\t\"schoolName\" : \"\",\n\t\t\"provinceId\" : \"0\",\n\t\t\"cityId\" : \"0\"\n\t}\n}\n",
"raw": "{\n\t\"schoolInfo\" : {\n\t\t\"schoolId\" : \"\",\n\t\t\"schoolName\" : \"\",\n\t\t\"provinceId\" : \"\",\n\t\t\"cityId\" : \"\"\n\t}\n}\n",
"options": {
"raw": {
"language": "json"
@@ -916,7 +916,7 @@
"response": []
},
{
"name": "listDict",
"name": "listDictSchoolInfo",
"request": {
"method": "GET",
"header": [
@@ -927,7 +927,7 @@
}
],
"url": {
"raw": "http://{{host}}:8082//admin/app/schoolInfo/listDict",
"raw": "http://{{host}}:8082//admin/app/schoolInfo/listDictSchoolInfo",
"protocol": "http",
"host": [
"{{host}}"
@@ -937,7 +937,7 @@
"admin",
"app",
"schoolInfo",
"listDict"
"listDictSchoolInfo"
],
"query": [
{
@@ -1110,7 +1110,7 @@
},
"body": {
"mode": "raw",
"raw": "{\n\t\"studentActionTrans\" : {\n\t\t\"studentId\" : \"0\",\n\t\t\"studentName\" : \"\",\n\t\t\"schoolId\" : \"0\",\n\t\t\"gradeId\" : \"0\",\n\t\t\"actionType\" : \"0\",\n\t\t\"deviceType\" : \"0\",\n\t\t\"watchVideoSeconds\" : \"0\",\n\t\t\"flowerCount\" : \"0\",\n\t\t\"paperCount\" : \"0\",\n\t\t\"videoCount\" : \"0\",\n\t\t\"courseCount\" : \"0\",\n\t\t\"coinCount\" : \"0\",\n\t\t\"exerciseCorrectFlag\" : \"0\",\n\t\t\"createTime\" : \"\"\n\t}\n}\n",
"raw": "{\n\t\"studentActionTrans\" : {\n\t\t\"studentId\" : \"\",\n\t\t\"studentName\" : \"\",\n\t\t\"schoolId\" : \"\",\n\t\t\"gradeId\" : \"\",\n\t\t\"actionType\" : \"\",\n\t\t\"deviceType\" : \"\",\n\t\t\"watchVideoSeconds\" : \"\",\n\t\t\"flowerCount\" : \"\",\n\t\t\"paperCount\" : \"\",\n\t\t\"videoCount\" : \"\",\n\t\t\"courseCount\" : \"\",\n\t\t\"coinCount\" : \"\",\n\t\t\"exerciseCorrectFlag\" : \"\",\n\t\t\"createTime\" : \"\"\n\t}\n}\n",
"options": {
"raw": {
"language": "json"
@@ -1147,7 +1147,7 @@
},
"body": {
"mode": "raw",
"raw": "{\n\t\"studentActionTrans\" : {\n\t\t\"transId\" : \"0\",\n\t\t\"studentId\" : \"0\",\n\t\t\"studentName\" : \"\",\n\t\t\"schoolId\" : \"0\",\n\t\t\"gradeId\" : \"0\",\n\t\t\"actionType\" : \"0\",\n\t\t\"deviceType\" : \"0\",\n\t\t\"watchVideoSeconds\" : \"0\",\n\t\t\"flowerCount\" : \"0\",\n\t\t\"paperCount\" : \"0\",\n\t\t\"videoCount\" : \"0\",\n\t\t\"courseCount\" : \"0\",\n\t\t\"coinCount\" : \"0\",\n\t\t\"exerciseCorrectFlag\" : \"0\",\n\t\t\"createTime\" : \"\"\n\t}\n}\n",
"raw": "{\n\t\"studentActionTrans\" : {\n\t\t\"transId\" : \"\",\n\t\t\"studentId\" : \"\",\n\t\t\"studentName\" : \"\",\n\t\t\"schoolId\" : \"\",\n\t\t\"gradeId\" : \"\",\n\t\t\"actionType\" : \"\",\n\t\t\"deviceType\" : \"\",\n\t\t\"watchVideoSeconds\" : \"\",\n\t\t\"flowerCount\" : \"\",\n\t\t\"paperCount\" : \"\",\n\t\t\"videoCount\" : \"\",\n\t\t\"courseCount\" : \"\",\n\t\t\"coinCount\" : \"\",\n\t\t\"exerciseCorrectFlag\" : \"\",\n\t\t\"createTime\" : \"\"\n\t}\n}\n",
"options": {
"raw": {
"language": "json"
@@ -1299,7 +1299,7 @@
},
"body": {
"mode": "raw",
"raw": "{\n\t\"studentClass\" : {\n\t\t\"className\" : \"\",\n\t\t\"schoolId\" : \"0\",\n\t\t\"leaderId\" : \"0\",\n\t\t\"finishClassHour\" : \"0\",\n\t\t\"classLevel\" : \"0\",\n\t\t\"createUserId\" : \"0\",\n\t\t\"createTime\" : \"\"\n\t}\n}\n",
"raw": "{\n\t\"studentClass\" : {\n\t\t\"className\" : \"\",\n\t\t\"schoolId\" : \"\",\n\t\t\"leaderId\" : \"\",\n\t\t\"finishClassHour\" : \"\",\n\t\t\"classLevel\" : \"\",\n\t\t\"createUserId\" : \"\",\n\t\t\"createTime\" : \"\"\n\t}\n}\n",
"options": {
"raw": {
"language": "json"
@@ -1336,7 +1336,7 @@
},
"body": {
"mode": "raw",
"raw": "{\n\t\"studentClass\" : {\n\t\t\"classId\" : \"0\",\n\t\t\"className\" : \"\",\n\t\t\"schoolId\" : \"0\",\n\t\t\"leaderId\" : \"0\",\n\t\t\"finishClassHour\" : \"0\",\n\t\t\"classLevel\" : \"0\",\n\t\t\"createUserId\" : \"0\",\n\t\t\"createTime\" : \"\"\n\t}\n}\n",
"raw": "{\n\t\"studentClass\" : {\n\t\t\"classId\" : \"\",\n\t\t\"className\" : \"\",\n\t\t\"schoolId\" : \"\",\n\t\t\"leaderId\" : \"\",\n\t\t\"finishClassHour\" : \"\",\n\t\t\"classLevel\" : \"\",\n\t\t\"createUserId\" : \"\",\n\t\t\"createTime\" : \"\"\n\t}\n}\n",
"options": {
"raw": {
"language": "json"
@@ -1555,7 +1555,7 @@
},
"body": {
"mode": "raw",
"raw": "{\n\t\"classId\" : \"\",\n\t\"classCourseList\" : [\n\t\t{\n\t\t\t\"classId\" : \"0\",\n\t\t\t\"courseId\" : \"0\",\n\t\t\t\"courseOrder\" : \"0\"\n\t\t}\n\t]\n}\n",
"raw": "{\n\t\"classId\" : \"\",\n\t\"classCourseList\" : [\n\t\t{\n\t\t\t\"classId\" : \"\",\n\t\t\t\"courseId\" : \"\",\n\t\t\t\"courseOrder\" : \"\"\n\t\t}\n\t]\n}\n",
"options": {
"raw": {
"language": "json"
@@ -1592,7 +1592,7 @@
},
"body": {
"mode": "raw",
"raw": "{\n\t\"classCourse\" : {\n\t\t\"classId\" : \"0\",\n\t\t\"courseId\" : \"0\",\n\t\t\"courseOrder\" : \"0\"\n\t}\n}\n",
"raw": "{\n\t\"classCourse\" : {\n\t\t\"classId\" : \"\",\n\t\t\"courseId\" : \"\",\n\t\t\"courseOrder\" : \"\"\n\t}\n}\n",
"options": {
"raw": {
"language": "json"
@@ -1778,7 +1778,7 @@
},
"body": {
"mode": "raw",
"raw": "{\n\t\"classId\" : \"\",\n\t\"classStudentList\" : [\n\t\t{\n\t\t\t\"classId\" : \"0\",\n\t\t\t\"studentId\" : \"0\"\n\t\t}\n\t]\n}\n",
"raw": "{\n\t\"classId\" : \"\",\n\t\"classStudentList\" : [\n\t\t{\n\t\t\t\"classId\" : \"\",\n\t\t\t\"studentId\" : \"\"\n\t\t}\n\t]\n}\n",
"options": {
"raw": {
"language": "json"
@@ -1859,7 +1859,7 @@
},
"body": {
"mode": "raw",
"raw": "{\n\t\"student\" : {\n\t\t\"loginMobile\" : \"\",\n\t\t\"studentName\" : \"\",\n\t\t\"provinceId\" : \"0\",\n\t\t\"cityId\" : \"0\",\n\t\t\"districtId\" : \"0\",\n\t\t\"gender\" : \"0\",\n\t\t\"birthday\" : \"\",\n\t\t\"experienceLevel\" : \"0\",\n\t\t\"totalCoin\" : \"0\",\n\t\t\"leftCoin\" : \"0\",\n\t\t\"gradeId\" : \"0\",\n\t\t\"schoolId\" : \"0\",\n\t\t\"registerTime\" : \"\",\n\t\t\"status\" : \"0\"\n\t}\n}\n",
"raw": "{\n\t\"student\" : {\n\t\t\"loginMobile\" : \"\",\n\t\t\"studentName\" : \"\",\n\t\t\"provinceId\" : \"\",\n\t\t\"cityId\" : \"\",\n\t\t\"districtId\" : \"\",\n\t\t\"gender\" : \"\",\n\t\t\"birthday\" : \"\",\n\t\t\"experienceLevel\" : \"\",\n\t\t\"totalCoin\" : \"\",\n\t\t\"leftCoin\" : \"\",\n\t\t\"gradeId\" : \"\",\n\t\t\"schoolId\" : \"\",\n\t\t\"registerTime\" : \"\",\n\t\t\"status\" : \"\"\n\t}\n}\n",
"options": {
"raw": {
"language": "json"
@@ -1896,7 +1896,7 @@
},
"body": {
"mode": "raw",
"raw": "{\n\t\"student\" : {\n\t\t\"studentId\" : \"0\",\n\t\t\"loginMobile\" : \"\",\n\t\t\"studentName\" : \"\",\n\t\t\"provinceId\" : \"0\",\n\t\t\"cityId\" : \"0\",\n\t\t\"districtId\" : \"0\",\n\t\t\"gender\" : \"0\",\n\t\t\"birthday\" : \"\",\n\t\t\"experienceLevel\" : \"0\",\n\t\t\"totalCoin\" : \"0\",\n\t\t\"leftCoin\" : \"0\",\n\t\t\"gradeId\" : \"0\",\n\t\t\"schoolId\" : \"0\",\n\t\t\"registerTime\" : \"\",\n\t\t\"status\" : \"0\"\n\t}\n}\n",
"raw": "{\n\t\"student\" : {\n\t\t\"studentId\" : \"\",\n\t\t\"loginMobile\" : \"\",\n\t\t\"studentName\" : \"\",\n\t\t\"provinceId\" : \"\",\n\t\t\"cityId\" : \"\",\n\t\t\"districtId\" : \"\",\n\t\t\"gender\" : \"\",\n\t\t\"birthday\" : \"\",\n\t\t\"experienceLevel\" : \"\",\n\t\t\"totalCoin\" : \"\",\n\t\t\"leftCoin\" : \"\",\n\t\t\"gradeId\" : \"\",\n\t\t\"schoolId\" : \"\",\n\t\t\"registerTime\" : \"\",\n\t\t\"status\" : \"\"\n\t}\n}\n",
"options": {
"raw": {
"language": "json"
@@ -2015,7 +2015,7 @@
"response": []
},
{
"name": "listDict",
"name": "listDictStudent",
"request": {
"method": "GET",
"header": [
@@ -2026,7 +2026,7 @@
}
],
"url": {
"raw": "http://{{host}}:8082//admin/app/student/listDict",
"raw": "http://{{host}}:8082//admin/app/student/listDictStudent",
"protocol": "http",
"host": [
"{{host}}"
@@ -2036,7 +2036,7 @@
"admin",
"app",
"student",
"listDict"
"listDictStudent"
],
"query": [
{
@@ -2145,7 +2145,7 @@
},
"body": {
"mode": "raw",
"raw": "{\n\t\"sysUser\" : {\n\t\t\"loginName\" : \"\",\n\t\t\"password\" : \"\",\n\t\t\"showName\" : \"\",\n\t\t\"userType\" : \"0\",\n\t\t\"headImageUrl\" : \"\",\n\t\t\"userStatus\" : \"0\",\n\t\t\"createUserId\" : \"0\",\n\t\t\"createUsername\" : \"\",\n\t\t\"createTime\" : \"\",\n\t\t\"updateTime\" : \"\"\n\t}\n}\n",
"raw": "{\n\t\"sysUser\" : {\n\t\t\"loginName\" : \"\",\n\t\t\"password\" : \"\",\n\t\t\"showName\" : \"\",\n\t\t\"userType\" : \"\",\n\t\t\"headImageUrl\" : \"\",\n\t\t\"userStatus\" : \"\",\n\t\t\"createUserId\" : \"\",\n\t\t\"createUsername\" : \"\",\n\t\t\"createTime\" : \"\",\n\t\t\"updateTime\" : \"\"\n\t}\n}\n",
"options": {
"raw": {
"language": "json"
@@ -2182,7 +2182,7 @@
},
"body": {
"mode": "raw",
"raw": "{\n\t\"sysUser\" : {\n\t\t\"userId\" : \"0\",\n\t\t\"loginName\" : \"\",\n\t\t\"password\" : \"\",\n\t\t\"showName\" : \"\",\n\t\t\"userType\" : \"0\",\n\t\t\"headImageUrl\" : \"\",\n\t\t\"userStatus\" : \"0\",\n\t\t\"createUserId\" : \"0\",\n\t\t\"createUsername\" : \"\",\n\t\t\"createTime\" : \"\",\n\t\t\"updateTime\" : \"\"\n\t}\n}\n",
"raw": "{\n\t\"sysUser\" : {\n\t\t\"userId\" : \"\",\n\t\t\"loginName\" : \"\",\n\t\t\"password\" : \"\",\n\t\t\"showName\" : \"\",\n\t\t\"userType\" : \"\",\n\t\t\"headImageUrl\" : \"\",\n\t\t\"userStatus\" : \"\",\n\t\t\"createUserId\" : \"\",\n\t\t\"createUsername\" : \"\",\n\t\t\"createTime\" : \"\",\n\t\t\"updateTime\" : \"\"\n\t}\n}\n",
"options": {
"raw": {
"language": "json"
@@ -2355,7 +2355,7 @@
{
"listen": "test",
"script": {
"id": "390e8f3a-76f0-477a-8ebd-5fd958d286d8",
"id": "c63506c1-46b6-4add-ab33-3b0080afd35f",
"type": "text/javascript",
"exec": [
"pm.test(\"登录操作\", function () {",
@@ -2371,7 +2371,7 @@
{
"listen": "prerequest",
"script": {
"id": "efe7a1c1-5f2b-433b-b235-0bf97a581840",
"id": "8cd658df-8043-4d1d-889e-4aa5fd3ec4ae",
"type": "text/javascript",
"exec": [
""
@@ -2383,16 +2383,22 @@
"disableBodyPruning": true
},
"request": {
"method": "POST",
"method": "GET",
"header": [],
"body": {
"mode": "raw",
"raw": "{\n \"loginName\":\"admin\",\n \"password\":\"IP3ccke3GhH45iGHB5qP9p7iZw6xUyj28Ju10rnBiPKOI35sc%2BjI7%2FdsjOkHWMfUwGYGfz8ik31HC2Ruk%2Fhkd9f6RPULTHj7VpFdNdde2P9M4mQQnFBAiPM7VT9iW3RyCtPlJexQ3nAiA09OqG%2F0sIf1kcyveSrulxembARDbDo%3D\"\n}",
"options": {
"raw": {
"language": "json"
"mode": "formdata",
"formdata": [
{
"key": "loginName",
"value": "admin",
"type": "text"
},
{
"key": "password",
"value": "IP3ccke3GhH45iGHB5qP9p7iZw6xUyj28Ju10rnBiPKOI35sc%2BjI7%2FdsjOkHWMfUwGYGfz8ik31HC2Ruk%2Fhkd9f6RPULTHj7VpFdNdde2P9M4mQQnFBAiPM7VT9iW3RyCtPlJexQ3nAiA09OqG%2F0sIf1kcyveSrulxembARDbDo%3D",
"type": "text"
}
}
]
},
"url": {
"raw": "http://{{host}}:8082/admin/upms/login/doLogin",
@@ -2451,13 +2457,19 @@
}
],
"body": {
"mode": "raw",
"raw": "{\n \"oldPass\": \"IP3ccke3GhH45iGHB5qP9p7iZw6xUyj28Ju10rnBiPKOI35sc%2BjI7%2FdsjOkHWMfUwGYGfz8ik31HC2Ruk%2Fhkd9f6RPULTHj7VpFdNdde2P9M4mQQnFBAiPM7VT9iW3RyCtPlJexQ3nAiA09OqG%2F0sIf1kcyveSrulxembARDbDo%3D\",\n \"newPass\": \"IP3ccke3GhH45iGHB5qP9p7iZw6xUyj28Ju10rnBiPKOI35sc%2BjI7%2FdsjOkHWMfUwGYGfz8ik31HC2Ruk%2Fhkd9f6RPULTHj7VpFdNdde2P9M4mQQnFBAiPM7VT9iW3RyCtPlJexQ3nAiA09OqG%2F0sIf1kcyveSrulxembARDbDo%3D\"\n}",
"options": {
"raw": {
"language": "json"
"mode": "formdata",
"formdata": [
{
"key": "oldPass",
"value": "IP3ccke3GhH45iGHB5qP9p7iZw6xUyj28Ju10rnBiPKOI35sc%2BjI7%2FdsjOkHWMfUwGYGfz8ik31HC2Ruk%2Fhkd9f6RPULTHj7VpFdNdde2P9M4mQQnFBAiPM7VT9iW3RyCtPlJexQ3nAiA09OqG%2F0sIf1kcyveSrulxembARDbDo%3D",
"type": "text"
},
{
"key": "newPass",
"value": "IP3ccke3GhH45iGHB5qP9p7iZw6xUyj28Ju10rnBiPKOI35sc%2BjI7%2FdsjOkHWMfUwGYGfz8ik31HC2Ruk%2Fhkd9f6RPULTHj7VpFdNdde2P9M4mQQnFBAiPM7VT9iW3RyCtPlJexQ3nAiA09OqG%2F0sIf1kcyveSrulxembARDbDo%3D",
"type": "text"
}
}
]
},
"url": {
"raw": "http://{{host}}:8082/admin/upms/login/changePassword",