diff --git a/orange-demo-multi/orange-demo-multi-service/.idea/compiler.xml b/orange-demo-multi/orange-demo-multi-service/.idea/compiler.xml index eb44a982..9742e076 100644 --- a/orange-demo-multi/orange-demo-multi-service/.idea/compiler.xml +++ b/orange-demo-multi/orange-demo-multi-service/.idea/compiler.xml @@ -2,6 +2,7 @@ + @@ -14,17 +15,22 @@ + - + + - + - - + + + + + @@ -32,6 +38,7 @@ + @@ -39,11 +46,13 @@ + + diff --git a/orange-demo-multi/orange-demo-multi-service/.idea/encodings.xml b/orange-demo-multi/orange-demo-multi-service/.idea/encodings.xml index fc8e3727..b25d6274 100644 --- a/orange-demo-multi/orange-demo-multi-service/.idea/encodings.xml +++ b/orange-demo-multi/orange-demo-multi-service/.idea/encodings.xml @@ -1,6 +1,8 @@ + + @@ -14,13 +16,20 @@ + + + + + + + \ No newline at end of file diff --git a/orange-demo-multi/orange-demo-multi-service/.idea/libraries/Maven__com_orange_demo_common_log_1_0_0.xml b/orange-demo-multi/orange-demo-multi-service/.idea/libraries/Maven__com_orange_demo_common_log_1_0_0.xml deleted file mode 100644 index 3e632bf8..00000000 --- a/orange-demo-multi/orange-demo-multi-service/.idea/libraries/Maven__com_orange_demo_common_log_1_0_0.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/orange-demo-multi/orange-demo-multi-service/.idea/libraries/Maven__javax_persistence_persistence_api_1_0.xml b/orange-demo-multi/orange-demo-multi-service/.idea/libraries/Maven__javax_persistence_persistence_api_1_0.xml deleted file mode 100644 index e60370e5..00000000 --- a/orange-demo-multi/orange-demo-multi-service/.idea/libraries/Maven__javax_persistence_persistence_api_1_0.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/orange-demo-multi/orange-demo-multi-service/.idea/libraries/Maven__org_mybatis_mybatis_3_4_6.xml b/orange-demo-multi/orange-demo-multi-service/.idea/libraries/Maven__org_mybatis_mybatis_3_4_6.xml deleted file mode 100644 index 377b7a72..00000000 --- a/orange-demo-multi/orange-demo-multi-service/.idea/libraries/Maven__org_mybatis_mybatis_3_4_6.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/orange-demo-multi/orange-demo-multi-service/.idea/libraries/Maven__org_mybatis_mybatis_spring_1_3_2.xml b/orange-demo-multi/orange-demo-multi-service/.idea/libraries/Maven__org_mybatis_mybatis_spring_1_3_2.xml deleted file mode 100644 index 713f6040..00000000 --- a/orange-demo-multi/orange-demo-multi-service/.idea/libraries/Maven__org_mybatis_mybatis_spring_1_3_2.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/orange-demo-multi/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_base_1_1_5.xml b/orange-demo-multi/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_base_1_1_5.xml deleted file mode 100644 index 14970473..00000000 --- a/orange-demo-multi/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_base_1_1_5.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/orange-demo-multi/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_core_1_1_5.xml b/orange-demo-multi/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_core_1_1_5.xml deleted file mode 100644 index 00217b67..00000000 --- a/orange-demo-multi/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_core_1_1_5.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/orange-demo-multi/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_extra_1_1_5.xml b/orange-demo-multi/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_extra_1_1_5.xml deleted file mode 100644 index 9fa6cf7e..00000000 --- a/orange-demo-multi/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_extra_1_1_5.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/orange-demo-multi/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_spring_1_1_5.xml b/orange-demo-multi/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_spring_1_1_5.xml deleted file mode 100644 index 488a0827..00000000 --- a/orange-demo-multi/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_spring_1_1_5.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/orange-demo-multi/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_spring_boot_autoconfigure_2_1_5.xml b/orange-demo-multi/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_spring_boot_autoconfigure_2_1_5.xml deleted file mode 100644 index 5a76248b..00000000 --- a/orange-demo-multi/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_spring_boot_autoconfigure_2_1_5.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/orange-demo-multi/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_spring_boot_starter_2_1_5.xml b/orange-demo-multi/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_spring_boot_starter_2_1_5.xml deleted file mode 100644 index 69ca4ac2..00000000 --- a/orange-demo-multi/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_spring_boot_starter_2_1_5.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/orange-demo-multi/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_weekend_1_1_5.xml b/orange-demo-multi/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_weekend_1_1_5.xml deleted file mode 100644 index 2cc0e828..00000000 --- a/orange-demo-multi/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_weekend_1_1_5.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/orange-demo-multi/orange-demo-multi-service/.idea/misc.xml b/orange-demo-multi/orange-demo-multi-service/.idea/misc.xml index 450c87b6..0a80760b 100644 --- a/orange-demo-multi/orange-demo-multi-service/.idea/misc.xml +++ b/orange-demo-multi/orange-demo-multi-service/.idea/misc.xml @@ -6,13 +6,6 @@ - \ No newline at end of file diff --git a/orange-demo-multi/orange-demo-multi-service/.idea/modules.xml b/orange-demo-multi/orange-demo-multi-service/.idea/modules.xml index a8c8507d..9c1fc114 100644 --- a/orange-demo-multi/orange-demo-multi-service/.idea/modules.xml +++ b/orange-demo-multi/orange-demo-multi-service/.idea/modules.xml @@ -4,18 +4,24 @@ + + + + + + diff --git a/orange-demo-multi/orange-demo-multi-service/.idea/workspace.xml b/orange-demo-multi/orange-demo-multi-service/.idea/workspace.xml index 50540720..d991013f 100644 --- a/orange-demo-multi/orange-demo-multi-service/.idea/workspace.xml +++ b/orange-demo-multi/orange-demo-multi-service/.idea/workspace.xml @@ -1,7 +1,7 @@ - + \ No newline at end of file diff --git a/orange-demo-multi/orange-demo-multi-service/README.md b/orange-demo-multi/orange-demo-multi-service/README.md index be0836fa..01727a09 100644 --- a/orange-demo-multi/orange-demo-multi-service/README.md +++ b/orange-demo-multi/orange-demo-multi-service/README.md @@ -50,6 +50,11 @@ - 控制台URL:localhost:8079 - admin-monitor服务模块 (可选) - 控制台URL:localhost:8769 +- XXL-Job (可选,仅当启动Job服务时使用) + - 版本:2.2.0 + - 控制台URL:localhost:8081/xxl-job-admin/ + - 注意:该服务缺省端口为8080,容易冲突,所以改为了8081。我们在所有的配置中均使用了8081,而非8080。 + - 用户名密码:admin/123456 - 启动upms服务 (保证登录和用户权限服务可用) - 启动其他业务应用微服务
推荐在gateway服务之前启动,以便gateway服务启动后可以即刻发现服务。由于gateway是从注册中心定时拉取微服务信息,所以在gateway之后启动的微服务,通常会延迟一小段时间之后才会被发现。 diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/course-class-api.iml b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/course-class-api.iml index b9227508..5354a987 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/course-class-api.iml +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/course-class-api.iml @@ -65,26 +65,40 @@ - + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + @@ -151,11 +165,7 @@ - - - - @@ -218,7 +228,7 @@ - + diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/pom.xml b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/pom.xml index 3768c180..e2a29c1a 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/pom.xml +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/pom.xml @@ -26,6 +26,11 @@ common-core 1.0.0 + + com.orange.demo + common-datafilter + 1.0.0 + com.orange.demo diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/src/main/java/com/orange/demo/courseclassapi/client/SchoolInfoClient.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/src/main/java/com/orange/demo/courseclassapi/client/SchoolInfoClient.java deleted file mode 100644 index 934e6416..00000000 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/src/main/java/com/orange/demo/courseclassapi/client/SchoolInfoClient.java +++ /dev/null @@ -1,156 +0,0 @@ -package com.orange.demo.courseclassapi.client; - -import com.orange.demo.common.core.base.client.BaseFallbackFactory; -import com.orange.demo.common.core.config.FeignConfig; -import com.orange.demo.common.core.base.client.BaseClient; -import com.orange.demo.common.core.object.*; -import com.orange.demo.courseclassapi.dto.SchoolInfoDto; -import com.orange.demo.courseclassapi.vo.SchoolInfoVo; -import lombok.extern.slf4j.Slf4j; -import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.stereotype.Component; -import org.springframework.web.bind.annotation.*; - -import java.util.*; - -/** - * 校区数据服务远程数据操作访问接口。 - * - * @author Jerry - * @date 2020-08-08 - */ -@FeignClient( - name = "course-class", - configuration = FeignConfig.class, - fallbackFactory = SchoolInfoClient.SchoolInfoClientFallbackFactory.class) -public interface SchoolInfoClient extends BaseClient { - - /** - * 基于主键的(In-list)条件获取远程数据接口。 - * - * @param schoolIds 主键Id集合。 - * @param withDict 是否包含字典关联。 - * @return 应答结果对象,包含主对象的数据集合。 - */ - @Override - @PostMapping("/schoolInfo/listByIds") - ResponseResult> listByIds( - @RequestParam("schoolIds") Set schoolIds, - @RequestParam("withDict") Boolean withDict); - - /** - * 基于主键Id,获取远程对象。 - * - * @param schoolId 主键Id。 - * @param withDict 是否包含字典关联。 - * @return 应答结果对象,包含主对象数据。 - */ - @Override - @PostMapping("/schoolInfo/getById") - ResponseResult getById( - @RequestParam("schoolId") Long schoolId, - @RequestParam("withDict") Boolean withDict); - - /** - * 判断参数列表中指定的主键Id,是否都存在。 - * - * @param schoolIds 主键Id集合。 - * @return 应答结果对象,包含true全部存在,否则false。 - */ - @Override - @PostMapping("/schoolInfo/existIds") - ResponseResult existIds(@RequestParam("schoolIds") Set schoolIds); - - /** - * 判断主键Id是否存在。 - * - * @param schoolId 参数主键Id。 - * @return 应答结果对象,包含true表示存在,否则false。 - */ - @Override - @PostMapping("/schoolInfo/existId") - ResponseResult existId(@RequestParam("schoolId") Long schoolId); - - /** - * 删除主键Id关联的对象。 - * - * @param schoolId 主键Id。 - * @return 应答结果对象。 - */ - @Override - @PostMapping("/schoolInfo/deleteById") - ResponseResult deleteById(@RequestParam("schoolId") Long schoolId); - - /** - * 删除符合过滤条件的数据。 - * - * @param filter 过滤对象。 - * @return 应答结果对象,包含删除数量。 - */ - @Override - @PostMapping("/schoolInfo/deleteBy") - ResponseResult deleteBy(@RequestBody SchoolInfoDto filter); - - /** - * 获取远程主对象中符合查询条件的数据列表。 - * - * @param queryParam 查询参数。 - * @return 应答结果对象,包含实体对象集合。 - */ - @Override - @PostMapping("/schoolInfo/listBy") - ResponseResult> listBy(@RequestBody MyQueryParam queryParam); - - /** - * 获取远程主对象中符合查询条件的单条数据对象。 - * - * @param queryParam 查询参数。 - * @return 应答结果对象,包含实体对象。 - */ - @Override - @PostMapping("/schoolInfo/getBy") - ResponseResult getBy(@RequestBody MyQueryParam queryParam); - - /** - * 获取远程主对象中符合查询条件的数据列表。 - * 和listBy接口相比,以Map列表的方式返回的主要目的是,降低服务之间的耦合度。 - * - * @param queryParam 查询参数。 - * @return 应答结果对象,包含主对象集合。 - */ - @Override - @PostMapping("/schoolInfo/listMapBy") - ResponseResult>> listMapBy(@RequestBody MyQueryParam queryParam); - - /** - * 获取远程主对象中符合查询条件的数据数量。 - * - * @param queryParam 查询参数。 - * @return 应答结果对象,包含结果数量。 - */ - @Override - @PostMapping("/schoolInfo/countBy") - ResponseResult countBy(@RequestBody MyQueryParam queryParam); - - /** - * 获取远程对象中符合查询条件的分组聚合计算Map列表。 - * - * @param aggregationParam 聚合参数。 - * @return 应该结果对象,包含聚合计算后的分组Map列表。 - */ - @Override - @PostMapping("/schoolInfo/aggregateBy") - ResponseResult>> aggregateBy(@RequestBody MyAggregationParam aggregationParam); - - @Component("CourseClassSchoolInfoClientFallbackFactory") - @Slf4j - class SchoolInfoClientFallbackFactory - extends BaseFallbackFactory implements SchoolInfoClient { - - @Override - public SchoolInfoClient create(Throwable throwable) { - log.error("Exception For Feign Remote Call.", throwable); - return new SchoolInfoClientFallbackFactory(); - } - } -} diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/src/main/java/com/orange/demo/courseclassapi/dto/SchoolInfoDto.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/src/main/java/com/orange/demo/courseclassapi/dto/SchoolInfoDto.java deleted file mode 100644 index acd8e4e8..00000000 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/src/main/java/com/orange/demo/courseclassapi/dto/SchoolInfoDto.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.orange.demo.courseclassapi.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.*; - -/** - * SchoolInfoDto对象。 - * - * @author Jerry - * @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; -} diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/src/main/java/com/orange/demo/courseclassapi/vo/ClassCourseVo.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/src/main/java/com/orange/demo/courseclassapi/vo/ClassCourseVo.java index 1c452323..c4c01062 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/src/main/java/com/orange/demo/courseclassapi/vo/ClassCourseVo.java +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/src/main/java/com/orange/demo/courseclassapi/vo/ClassCourseVo.java @@ -5,12 +5,12 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** - * ClassCourseVO对象。 + * ClassCourseVO视图对象。 * * @author Jerry * @date 2020-08-08 */ -@ApiModel("ClassCourseVO实体对象") +@ApiModel("ClassCourseVO视图对象") @Data public class ClassCourseVo { diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/src/main/java/com/orange/demo/courseclassapi/vo/ClassStudentVo.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/src/main/java/com/orange/demo/courseclassapi/vo/ClassStudentVo.java index db1666f5..730b557f 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/src/main/java/com/orange/demo/courseclassapi/vo/ClassStudentVo.java +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/src/main/java/com/orange/demo/courseclassapi/vo/ClassStudentVo.java @@ -5,12 +5,12 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** - * ClassStudentVO对象。 + * ClassStudentVO视图对象。 * * @author Jerry * @date 2020-08-08 */ -@ApiModel("ClassStudentVO实体对象") +@ApiModel("ClassStudentVO视图对象") @Data public class ClassStudentVo { diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/src/main/java/com/orange/demo/courseclassapi/vo/CourseVo.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/src/main/java/com/orange/demo/courseclassapi/vo/CourseVo.java index 6064ae8a..33df0080 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/src/main/java/com/orange/demo/courseclassapi/vo/CourseVo.java +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/src/main/java/com/orange/demo/courseclassapi/vo/CourseVo.java @@ -9,12 +9,12 @@ import java.util.Date; import java.util.Map; /** - * CourseVO对象。 + * CourseVO视图对象。 * * @author Jerry * @date 2020-08-08 */ -@ApiModel("CourseVO实体对象") +@ApiModel("CourseVO视图对象") @Data public class CourseVo { diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/src/main/java/com/orange/demo/courseclassapi/vo/GradeVo.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/src/main/java/com/orange/demo/courseclassapi/vo/GradeVo.java index 48cb48f5..2395540a 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/src/main/java/com/orange/demo/courseclassapi/vo/GradeVo.java +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/src/main/java/com/orange/demo/courseclassapi/vo/GradeVo.java @@ -5,12 +5,12 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** - * GradeVO对象。 + * GradeVO视图对象。 * * @author Jerry * @date 2020-08-08 */ -@ApiModel("GradeVO实体对象") +@ApiModel("GradeVO视图对象") @Data public class GradeVo { diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/src/main/java/com/orange/demo/courseclassapi/vo/SchoolInfoVo.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/src/main/java/com/orange/demo/courseclassapi/vo/SchoolInfoVo.java deleted file mode 100644 index 349eefa8..00000000 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/src/main/java/com/orange/demo/courseclassapi/vo/SchoolInfoVo.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.orange.demo.courseclassapi.vo; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.util.Map; - -/** - * SchoolInfoVO对象。 - * - * @author Jerry - * @date 2020-08-08 - */ -@ApiModel("SchoolInfoVO实体对象") -@Data -public class SchoolInfoVo { - - /** - * 学校Id。 - */ - @ApiModelProperty(value = "学校Id") - private Long schoolId; - - /** - * 学校名称。 - */ - @ApiModelProperty(value = "学校名称") - private String schoolName; - - /** - * 所在省Id。 - */ - @ApiModelProperty(value = "所在省Id") - private Long provinceId; - - /** - * 所在城市Id。 - */ - @ApiModelProperty(value = "所在城市Id") - private Long cityId; - - /** - * provinceId 字典关联数据。 - */ - @ApiModelProperty(value = "provinceId 字典关联数据") - private Map provinceIdDictMap; - - /** - * cityId 字典关联数据。 - */ - @ApiModelProperty(value = "cityId 字典关联数据") - private Map cityIdDictMap; -} diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/src/main/java/com/orange/demo/courseclassapi/vo/StudentClassVo.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/src/main/java/com/orange/demo/courseclassapi/vo/StudentClassVo.java index 386cc39f..1812a38b 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/src/main/java/com/orange/demo/courseclassapi/vo/StudentClassVo.java +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/src/main/java/com/orange/demo/courseclassapi/vo/StudentClassVo.java @@ -8,12 +8,12 @@ import java.util.Date; import java.util.Map; /** - * StudentClassVO对象。 + * StudentClassVO视图对象。 * * @author Jerry * @date 2020-08-08 */ -@ApiModel("StudentClassVO实体对象") +@ApiModel("StudentClassVO视图对象") @Data public class StudentClassVo { diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/src/main/java/com/orange/demo/courseclassapi/vo/StudentVo.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/src/main/java/com/orange/demo/courseclassapi/vo/StudentVo.java index 1a3a7e23..bbaa8c7c 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/src/main/java/com/orange/demo/courseclassapi/vo/StudentVo.java +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-api/src/main/java/com/orange/demo/courseclassapi/vo/StudentVo.java @@ -8,12 +8,12 @@ import java.util.Date; import java.util.Map; /** - * StudentVO对象。 + * StudentVO视图对象。 * * @author Jerry * @date 2020-08-08 */ -@ApiModel("StudentVO实体对象") +@ApiModel("StudentVO视图对象") @Data public class StudentVo { @@ -107,6 +107,12 @@ public class StudentVo { @ApiModelProperty(value = "学生状态 (0: 正常 1: 锁定 2: 注销)") private Integer status; + /** + * schoolId 字典关联数据。 + */ + @ApiModelProperty(value = "schoolId 字典关联数据") + private Map schoolIdDictMap; + /** * provinceId 字典关联数据。 */ @@ -131,12 +137,6 @@ public class StudentVo { @ApiModelProperty(value = "gradeId 字典关联数据") private Map gradeIdDictMap; - /** - * schoolId 字典关联数据。 - */ - @ApiModelProperty(value = "schoolId 字典关联数据") - private Map schoolIdDictMap; - /** * gender 常量字典关联数据。 */ diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/course-class-service.iml b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/course-class-service.iml index 4fffadc8..51deb55a 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/course-class-service.iml +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/course-class-service.iml @@ -64,26 +64,23 @@ - + + + + + - - - - - - - - - - + + + @@ -102,7 +99,12 @@ - + + + + + + diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/pom.xml b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/pom.xml index 590e3af7..d1d5c224 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/pom.xml +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/pom.xml @@ -20,6 +20,11 @@ course-class-api 1.0.0 + + com.orange.demo + upms-api + 1.0.0 + com.orange.demo common-log diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/config/DataSourceConfig.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/config/DataSourceConfig.java index 32050215..102ed2f5 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/config/DataSourceConfig.java +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/config/DataSourceConfig.java @@ -6,7 +6,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.transaction.annotation.EnableTransactionManagement; -import tk.mybatis.spring.annotation.MapperScan; +import org.mybatis.spring.annotation.MapperScan; import javax.sql.DataSource; diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/CourseController.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/CourseController.java index 66fcfb76..06f5c9a4 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/CourseController.java +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/CourseController.java @@ -6,6 +6,8 @@ import com.orange.demo.common.core.upload.BaseUpDownloader; import com.orange.demo.common.core.upload.UpDownloaderFactory; import com.orange.demo.common.core.upload.UploadResponseInfo; import com.orange.demo.common.core.upload.UploadStoreInfo; +import com.orange.demo.common.log.annotation.OperationLog; +import com.orange.demo.common.log.model.constant.SysOperationLogType; import com.github.pagehelper.page.PageMethod; import com.orange.demo.courseclassservice.model.*; import com.orange.demo.courseclassservice.service.*; @@ -17,7 +19,6 @@ import com.orange.demo.common.core.constant.*; import com.orange.demo.common.core.base.controller.BaseController; import com.orange.demo.common.core.base.service.IBaseService; 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; @@ -28,7 +29,6 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; -import javax.validation.groups.Default; import java.util.*; /** @@ -71,9 +71,10 @@ public class CourseController extends BaseController { "courseDto.classHourEnd", "courseDto.updateTimeStart", "courseDto.updateTimeEnd"}) + @OperationLog(type = SysOperationLogType.ADD) @PostMapping("/add") public ResponseResult add(@MyRequestBody CourseDto courseDto) { - String errorMessage = MyCommonUtil.getModelValidationError(courseDto); + String errorMessage = MyCommonUtil.getModelValidationError(courseDto, false); if (errorMessage != null) { return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); } @@ -101,9 +102,10 @@ public class CourseController extends BaseController { "CourseDto.classHourEnd", "CourseDto.updateTimeStart", "CourseDto.updateTimeEnd"}) + @OperationLog(type = SysOperationLogType.UPDATE) @PostMapping("/update") public ResponseResult update(@MyRequestBody CourseDto courseDto) { - String errorMessage = MyCommonUtil.getModelValidationError(courseDto, Default.class, UpdateGroup.class); + String errorMessage = MyCommonUtil.getModelValidationError(courseDto, true); if (errorMessage != null) { return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); } @@ -132,6 +134,7 @@ public class CourseController extends BaseController { * @param courseId 删除对象主键Id。 * @return 应答结果对象。 */ + @OperationLog(type = SysOperationLogType.DELETE) @PostMapping("/delete") public ResponseResult delete(@MyRequestBody Long courseId) { String errorMessage; @@ -170,8 +173,7 @@ public class CourseController extends BaseController { } Course courseFilter = MyModelUtil.copyTo(courseDtoFilter, Course.class); String orderBy = MyOrderParam.buildOrderBy(orderParam, Course.class); - List courseList = - courseService.getCourseListWithRelation(courseFilter, orderBy); + List courseList = courseService.getCourseListWithRelation(courseFilter, orderBy); return ResponseResult.success(MyPageUtil.makeResponseData(courseList, Course.INSTANCE)); } @@ -186,8 +188,7 @@ public class CourseController extends BaseController { if (MyCommonUtil.existBlankArgument(courseId)) { return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); } - Course course = - courseService.getByIdWithRelation(courseId, MyRelationParam.full()); + Course course = courseService.getByIdWithRelation(courseId, MyRelationParam.full()); if (course == null) { return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST); } @@ -205,6 +206,7 @@ public class CourseController extends BaseController { * @param asImage 下载文件是否为图片。 * @param response Http 应答对象。 */ + @OperationLog(type = SysOperationLogType.DOWNLOAD, saveResponse = false) @GetMapping("/download") public void download( @RequestParam(required = false) Long courseId, @@ -263,6 +265,7 @@ public class CourseController extends BaseController { * @param asImage 是否作为图片上传。如果是图片,今后下载的时候无需权限验证。否则就是附件上传,下载时需要权限验证。 * @param uploadFile 上传文件对象。 */ + @OperationLog(type = SysOperationLogType.UPLOAD, saveResponse = false) @PostMapping("/upload") public void upload( @RequestParam String fieldName, diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/GradeController.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/GradeController.java index ae18f5ec..d83e51a7 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/GradeController.java +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/GradeController.java @@ -14,6 +14,8 @@ import com.orange.demo.common.core.constant.ErrorCodeEnum; import com.orange.demo.common.core.util.MyModelUtil; import com.orange.demo.common.core.util.MyCommonUtil; import com.orange.demo.common.core.validator.UpdateGroup; +import com.orange.demo.common.log.annotation.OperationLog; +import com.orange.demo.common.log.model.constant.SysOperationLogType; import com.orange.demo.courseclassapi.dto.GradeDto; import com.orange.demo.courseclassapi.vo.GradeVo; import com.orange.demo.courseclassservice.model.Grade; @@ -52,6 +54,7 @@ public class GradeController extends BaseController { * @return 应答结果对象,包含新增对象主键Id。 */ @ApiOperationSupport(ignoreParameters = {"gradeDto.gradeId"}) + @OperationLog(type = SysOperationLogType.ADD) @PostMapping("/add") public ResponseResult add(@MyRequestBody GradeDto gradeDto) { String errorMessage = MyCommonUtil.getModelValidationError(gradeDto); @@ -69,6 +72,7 @@ public class GradeController extends BaseController { * @param gradeDto 更新对象。 * @return 应答结果对象。 */ + @OperationLog(type = SysOperationLogType.UPDATE) @PostMapping("/update") public ResponseResult update(@MyRequestBody GradeDto gradeDto) { String errorMessage = MyCommonUtil.getModelValidationError(gradeDto, Default.class, UpdateGroup.class); @@ -92,6 +96,7 @@ public class GradeController extends BaseController { * @param gradeId 删除对象主键Id。 * @return 应答结果对象。 */ + @OperationLog(type = SysOperationLogType.DELETE) @PostMapping("/delete") public ResponseResult delete(@MyRequestBody Integer gradeId) { if (MyCommonUtil.existBlankArgument(gradeId)) { @@ -276,6 +281,7 @@ public class GradeController extends BaseController { * 由于缓存的数据更新,在add/update/delete等接口均有同步处理。因此该接口仅当同步过程中出现问题时, * 可手工调用,或者每天晚上定时同步一次。 */ + @OperationLog(type = SysOperationLogType.RELOAD_CACHE) @GetMapping("/reloadCachedData") public ResponseResult reloadCachedData() { gradeService.reloadCachedData(true); diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/SchoolInfoController.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/SchoolInfoController.java deleted file mode 100644 index 3d7f6405..00000000 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/SchoolInfoController.java +++ /dev/null @@ -1,334 +0,0 @@ -package com.orange.demo.courseclassservice.controller; - -import cn.jimmyshi.beanquery.BeanQuery; -import com.github.pagehelper.page.PageMethod; -import com.orange.demo.courseclassservice.model.*; -import com.orange.demo.courseclassservice.service.*; -import com.orange.demo.courseclassapi.dto.*; -import com.orange.demo.courseclassapi.vo.*; -import com.orange.demo.common.core.object.*; -import com.orange.demo.common.core.util.*; -import com.orange.demo.common.core.constant.*; -import com.orange.demo.common.core.base.controller.BaseController; -import com.orange.demo.common.core.base.service.IBaseService; -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.*; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import javax.validation.groups.Default; -import java.util.*; - -/** - * 校区数据操作控制器类。 - * - * @author Jerry - * @date 2020-08-08 - */ -@Api(tags = "校区数据管理接口") -@Slf4j -@RestController -@RequestMapping("/schoolInfo") -public class SchoolInfoController extends BaseController { - - @Autowired - private SchoolInfoService schoolInfoService; - - @Override - protected IBaseService service() { - return schoolInfoService; - } - - /** - * 新增校区数据数据。 - * - * @param schoolInfoDto 新增对象。 - * @return 应答结果对象,包含新增对象主键Id。 - */ - @ApiOperationSupport(ignoreParameters = {"schoolInfoDto.schoolId"}) - @PostMapping("/add") - public ResponseResult add(@MyRequestBody SchoolInfoDto schoolInfoDto) { - String errorMessage = MyCommonUtil.getModelValidationError(schoolInfoDto); - if (errorMessage != null) { - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); - } - SchoolInfo schoolInfo = MyModelUtil.copyTo(schoolInfoDto, SchoolInfo.class); - // 验证关联Id的数据合法性 - CallResult callResult = schoolInfoService.verifyRelatedData(schoolInfo, null); - if (!callResult.isSuccess()) { - errorMessage = callResult.getErrorMessage(); - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); - } - schoolInfo = schoolInfoService.saveNew(schoolInfo); - return ResponseResult.success(schoolInfo.getSchoolId()); - } - - /** - * 更新校区数据数据。 - * - * @param schoolInfoDto 更新对象。 - * @return 应答结果对象。 - */ - @PostMapping("/update") - public ResponseResult update(@MyRequestBody SchoolInfoDto schoolInfoDto) { - String errorMessage = MyCommonUtil.getModelValidationError(schoolInfoDto, Default.class, UpdateGroup.class); - if (errorMessage != null) { - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); - } - SchoolInfo schoolInfo = MyModelUtil.copyTo(schoolInfoDto, SchoolInfo.class); - SchoolInfo originalSchoolInfo = schoolInfoService.getById(schoolInfo.getSchoolId()); - if (originalSchoolInfo == null) { - // NOTE: 修改下面方括号中的话述 - errorMessage = "数据验证失败,当前 [数据] 并不存在,请刷新后重试!"; - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage); - } - // 验证关联Id的数据合法性 - CallResult callResult = schoolInfoService.verifyRelatedData(schoolInfo, originalSchoolInfo); - if (!callResult.isSuccess()) { - errorMessage = callResult.getErrorMessage(); - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); - } - if (!schoolInfoService.update(schoolInfo, originalSchoolInfo)) { - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST); - } - return ResponseResult.success(); - } - - /** - * 删除校区数据数据。 - * - * @param schoolId 删除对象主键Id。 - * @return 应答结果对象。 - */ - @PostMapping("/delete") - public ResponseResult delete(@MyRequestBody Long schoolId) { - String errorMessage; - if (MyCommonUtil.existBlankArgument(schoolId)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - // 验证关联Id的数据合法性 - SchoolInfo originalSchoolInfo = schoolInfoService.getById(schoolId); - if (originalSchoolInfo == null) { - // NOTE: 修改下面方括号中的话述 - errorMessage = "数据验证失败,当前 [对象] 并不存在,请刷新后重试!"; - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage); - } - if (!schoolInfoService.remove(schoolId)) { - errorMessage = "数据操作失败,删除的对象不存在,请刷新后重试!"; - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage); - } - return ResponseResult.success(); - } - - /** - * 列出符合过滤条件的校区数据列表。 - * - * @param schoolInfoDtoFilter 过滤对象。 - * @param orderParam 排序参数。 - * @param pageParam 分页参数。 - * @return 应答结果对象,包含查询结果集。 - */ - @PostMapping("/list") - public ResponseResult> list( - @MyRequestBody SchoolInfoDto schoolInfoDtoFilter, - @MyRequestBody MyOrderParam orderParam, - @MyRequestBody MyPageParam pageParam) { - if (pageParam != null) { - PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize()); - } - SchoolInfo schoolInfoFilter = MyModelUtil.copyTo(schoolInfoDtoFilter, SchoolInfo.class); - String orderBy = MyOrderParam.buildOrderBy(orderParam, SchoolInfo.class); - List schoolInfoList = - schoolInfoService.getSchoolInfoListWithRelation(schoolInfoFilter, orderBy); - return ResponseResult.success(MyPageUtil.makeResponseData(schoolInfoList, SchoolInfo.INSTANCE)); - } - - /** - * 查看指定校区数据对象详情。 - * - * @param schoolId 指定对象主键Id。 - * @return 应答结果对象,包含对象详情。 - */ - @GetMapping("/view") - public ResponseResult view(@RequestParam Long schoolId) { - if (MyCommonUtil.existBlankArgument(schoolId)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - SchoolInfo schoolInfo = - schoolInfoService.getByIdWithRelation(schoolId, MyRelationParam.full()); - if (schoolInfo == null) { - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST); - } - SchoolInfoVo schoolInfoVo = SchoolInfo.INSTANCE.fromModel(schoolInfo); - return ResponseResult.success(schoolInfoVo); - } - - /** - * 以字典形式返回全部校区数据数据集合。字典的键值为[schoolId, schoolName]。 - * 白名单接口,登录用户均可访问。 - * - * @param filter 过滤对象。 - * @return 应答结果对象,包含字典形式的数据集合。 - */ - @GetMapping("/listDict") - public ResponseResult>> listDict(SchoolInfo filter) { - List resultList = schoolInfoService.getListByFilter(filter); - return ResponseResult.success( - BeanQuery.select("schoolId as id", "schoolName as name").executeFrom(resultList)); - } - - /** - * 根据字典Id集合,获取查询后的字典数据。 - * - * @param dictIds 字典Id集合。 - * @return 应答结果对象,包含字典形式的数据集合。 - */ - @PostMapping("/listDictByIds") - public ResponseResult>> listDictByIds( - @MyRequestBody(elementType = Long.class) List dictIds) { - List resultList = schoolInfoService.getInList(new HashSet<>(dictIds)); - return ResponseResult.success( - BeanQuery.select("schoolId as id", "schoolName as name").executeFrom(resultList)); - } - - /** - * 根据主键Id集合,获取数据对象集合。仅限于微服务间远程接口调用。 - * - * @param schoolIds 主键Id集合。 - * @param withDict 是否包含字典关联。 - * @return 应答结果对象,包含主对象集合。 - */ - @ApiOperation(hidden = true, value = "listByIds") - @PostMapping("/listByIds") - public ResponseResult> listByIds( - @RequestParam Set schoolIds, @RequestParam Boolean withDict) { - return super.baseListByIds(schoolIds, withDict, SchoolInfo.INSTANCE); - } - - /** - * 根据主键Id,获取数据对象。仅限于微服务间远程接口调用。 - * - * @param schoolId 主键Id。 - * @param withDict 是否包含字典关联。 - * @return 应答结果对象,包含主对象数据。 - */ - @ApiOperation(hidden = true, value = "getById") - @PostMapping("/getById") - public ResponseResult getById( - @RequestParam Long schoolId, @RequestParam Boolean withDict) { - return super.baseGetById(schoolId, withDict, SchoolInfo.INSTANCE); - } - - /** - * 判断参数列表中指定的主键Id集合,是否全部存在。仅限于微服务间远程接口调用。 - * - * @param schoolIds 主键Id集合。 - * @return 应答结果对象,包含true全部存在,否则false。 - */ - @ApiOperation(hidden = true, value = "existIds") - @PostMapping("/existIds") - public ResponseResult existIds(@RequestParam Set schoolIds) { - return super.baseExistIds(schoolIds); - } - - /** - * 判断参数列表中指定的主键Id是否存在。仅限于微服务间远程接口调用。 - * - * @param schoolId 主键Id。 - * @return 应答结果对象,包含true表示存在,否则false。 - */ - @ApiOperation(hidden = true, value = "existId") - @PostMapping("/existId") - public ResponseResult existId(@RequestParam Long schoolId) { - return super.baseExistId(schoolId); - } - - /** - * 根据主键Id删除数据。 - * - * @param schoolId 主键Id。 - * @return 删除数量。 - */ - @ApiOperation(hidden = true, value = "deleteById") - @PostMapping("/deleteById") - public ResponseResult deleteById(@RequestParam Long schoolId) throws Exception { - SchoolInfo filter = new SchoolInfo(); - filter.setSchoolId(schoolId); - return super.baseDeleteBy(filter); - } - - /** - * 删除符合过滤条件的数据。 - * - * @param filter 过滤对象。 - * @return 删除数量。 - */ - @ApiOperation(hidden = true, value = "deleteBy") - @PostMapping("/deleteBy") - public ResponseResult deleteBy(@RequestBody SchoolInfoDto filter) throws Exception { - return super.baseDeleteBy(MyModelUtil.copyTo(filter, SchoolInfo.class)); - } - - /** - * 复杂的查询调用,包括(in list)过滤,对象条件过滤,分页和排序等。主要用于微服务间远程过程调用。 - * - * @param queryParam 查询参数。 - * @return 分页数据集合对象。如MyQueryParam参数的分页属性为空,则不会执行分页操作,只是基于MyPageData对象返回数据结果。 - */ - @ApiOperation(hidden = true, value = "listBy") - @PostMapping("/listBy") - public ResponseResult> listBy(@RequestBody MyQueryParam queryParam) { - return super.baseListBy(queryParam, SchoolInfo.INSTANCE); - } - - /** - * 复杂的查询调用,包括(in list)过滤,对象条件过滤,分页和排序等。主要用于微服务间远程过程调用。 - * - * @param queryParam 查询参数。 - * @return 分页数据集合对象。如MyQueryParam参数的分页属性为空,则不会执行分页操作,只是基于MyPageData对象返回数据结果。 - */ - @ApiOperation(hidden = true, value = "listMapBy") - @PostMapping("/listMapBy") - public ResponseResult>> listMapBy(@RequestBody MyQueryParam queryParam) { - return super.baseListMapBy(queryParam, SchoolInfo.INSTANCE); - } - - /** - * 复杂的查询调用,仅返回单体记录。主要用于微服务间远程过程调用。 - * - * @param queryParam 查询参数。 - * @return 应答结果对象,包含符合查询过滤条件的对象结果集。 - */ - @ApiOperation(hidden = true, value = "getBy") - @PostMapping("/getBy") - public ResponseResult getBy(@RequestBody MyQueryParam queryParam) { - return super.baseGetBy(queryParam, SchoolInfo.INSTANCE); - } - - /** - * 获取远程主对象中符合查询条件的数据数量。主要用于微服务间远程过程调用。 - * - * @param queryParam 查询参数。 - * @return 应答结果对象,包含结果数量。 - */ - @ApiOperation(hidden = true, value = "countBy") - @PostMapping("/countBy") - public ResponseResult countBy(@RequestBody MyQueryParam queryParam) { - return super.baseCountBy(queryParam); - } - - /** - * 获取远程对象中符合查询条件的分组聚合计算Map列表。 - * - * @param aggregationParam 聚合参数。 - * @return 应该结果对象,包含聚合计算后的分组Map列表。 - */ - @ApiOperation(hidden = true, value = "aggregateBy") - @PostMapping("/aggregateBy") - public ResponseResult>> aggregateBy(@RequestBody MyAggregationParam aggregationParam) { - return super.baseAggregateBy(aggregationParam); - } -} diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/StudentClassController.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/StudentClassController.java index c926621f..31c067a7 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/StudentClassController.java +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/StudentClassController.java @@ -1,5 +1,7 @@ package com.orange.demo.courseclassservice.controller; +import com.orange.demo.common.log.annotation.OperationLog; +import com.orange.demo.common.log.model.constant.SysOperationLogType; import com.github.pagehelper.page.PageMethod; import com.orange.demo.courseclassservice.model.*; import com.orange.demo.courseclassservice.service.*; @@ -11,14 +13,12 @@ import com.orange.demo.common.core.constant.*; import com.orange.demo.common.core.base.controller.BaseController; import com.orange.demo.common.core.base.service.IBaseService; 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.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import javax.validation.groups.Default; import java.util.*; import java.util.stream.Collectors; @@ -53,9 +53,10 @@ public class StudentClassController extends BaseController add(@MyRequestBody StudentClassDto studentClassDto) { - String errorMessage = MyCommonUtil.getModelValidationError(studentClassDto); + String errorMessage = MyCommonUtil.getModelValidationError(studentClassDto, false); if (errorMessage != null) { return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); } @@ -66,6 +67,12 @@ public class StudentClassController extends BaseController update(@MyRequestBody StudentClassDto studentClassDto) { - String errorMessage = MyCommonUtil.getModelValidationError(studentClassDto, Default.class, UpdateGroup.class); + String errorMessage = MyCommonUtil.getModelValidationError(studentClassDto, true); if (errorMessage != null) { return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); } @@ -95,6 +103,12 @@ public class StudentClassController extends BaseController delete(@MyRequestBody Long classId) { String errorMessage; @@ -161,8 +176,7 @@ public class StudentClassController extends BaseController verifyResult = this.doClassCourseVerify(classId); - if (!verifyResult.isSuccess()) { - return ResponseResult.errorFrom(verifyResult); + if (MyCommonUtil.isNotBlankOrNull(classId) && !studentClassService.existId(classId)) { + return ResponseResult.error(ErrorCodeEnum.INVALID_RELATED_RECORD_ID); } if (pageParam != null) { PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize()); } Course filter = MyModelUtil.copyTo(courseDtoFilter, Course.class); String orderBy = MyOrderParam.buildOrderBy(orderParam, Course.class); - List courseList = - courseService.getNotInCourseListByClassId(classId, filter, orderBy); + List courseList; + if (MyCommonUtil.isNotBlankOrNull(classId)) { + courseList = courseService.getNotInCourseListByClassId(classId, filter, orderBy); + } else { + courseList = courseService.getCourseList(filter, orderBy); + } return ResponseResult.success(MyPageUtil.makeResponseData(courseList, Course.INSTANCE)); } @@ -211,13 +228,12 @@ public class StudentClassController extends BaseController> listClassCourse( - @MyRequestBody Long classId, + @MyRequestBody(required = true) Long classId, @MyRequestBody CourseDto courseDtoFilter, @MyRequestBody MyOrderParam orderParam, @MyRequestBody MyPageParam pageParam) { - ResponseResult verifyResult = this.doClassCourseVerify(classId); - if (!verifyResult.isSuccess()) { - return ResponseResult.errorFrom(verifyResult); + if (!studentClassService.existId(classId)) { + return ResponseResult.error(ErrorCodeEnum.INVALID_RELATED_RECORD_ID); } if (pageParam != null) { PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize()); @@ -229,16 +245,6 @@ public class StudentClassController extends BaseController doClassCourseVerify(Long classId) { - if (MyCommonUtil.existBlankArgument(classId)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - if (!studentClassService.existId(classId)) { - return ResponseResult.error(ErrorCodeEnum.INVALID_RELATED_RECORD_ID); - } - return ResponseResult.success(); - } - /** * 批量添加班级数据和 [课程数据] 对象的多对多关联关系数据。 * @@ -246,6 +252,7 @@ public class StudentClassController extends BaseController addClassCourse( @MyRequestBody Long classId, @@ -253,11 +260,9 @@ public class StudentClassController extends BaseController courseIdSet = classCourseDtoList.stream().map(ClassCourseDto::getCourseId).collect(Collectors.toSet()); @@ -277,6 +282,7 @@ public class StudentClassController extends BaseController updateClassCourse( @MyRequestBody ClassCourseDto classCourseDto) { @@ -319,6 +325,7 @@ public class StudentClassController extends BaseController deleteClassCourse( @MyRequestBody Long classId, @MyRequestBody Long courseId) { @@ -347,17 +354,20 @@ public class StudentClassController extends BaseController verifyResult = this.doClassStudentVerify(classId); - if (!verifyResult.isSuccess()) { - return ResponseResult.errorFrom(verifyResult); + if (MyCommonUtil.isNotBlankOrNull(classId) && !studentClassService.existId(classId)) { + return ResponseResult.error(ErrorCodeEnum.INVALID_RELATED_RECORD_ID); } if (pageParam != null) { PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize()); } Student filter = MyModelUtil.copyTo(studentDtoFilter, Student.class); String orderBy = MyOrderParam.buildOrderBy(orderParam, Student.class); - List studentList = - studentService.getNotInStudentListByClassId(classId, filter, orderBy); + List studentList; + if (MyCommonUtil.isNotBlankOrNull(classId)) { + studentList = studentService.getNotInStudentListByClassId(classId, filter, orderBy); + } else { + studentList = studentService.getStudentList(filter, orderBy); + } return ResponseResult.success(MyPageUtil.makeResponseData(studentList, Student.INSTANCE)); } @@ -372,13 +382,12 @@ public class StudentClassController extends BaseController> listClassStudent( - @MyRequestBody Long classId, + @MyRequestBody(required = true) Long classId, @MyRequestBody StudentDto studentDtoFilter, @MyRequestBody MyOrderParam orderParam, @MyRequestBody MyPageParam pageParam) { - ResponseResult verifyResult = this.doClassStudentVerify(classId); - if (!verifyResult.isSuccess()) { - return ResponseResult.errorFrom(verifyResult); + if (!studentClassService.existId(classId)) { + return ResponseResult.error(ErrorCodeEnum.INVALID_RELATED_RECORD_ID); } if (pageParam != null) { PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize()); @@ -390,16 +399,6 @@ public class StudentClassController extends BaseController doClassStudentVerify(Long classId) { - if (MyCommonUtil.existBlankArgument(classId)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - if (!studentClassService.existId(classId)) { - return ResponseResult.error(ErrorCodeEnum.INVALID_RELATED_RECORD_ID); - } - return ResponseResult.success(); - } - /** * 批量添加班级数据和 [学生数据] 对象的多对多关联关系数据。 * @@ -407,6 +406,7 @@ public class StudentClassController extends BaseController addClassStudent( @MyRequestBody Long classId, @@ -414,11 +414,9 @@ public class StudentClassController extends BaseController studentIdSet = classStudentDtoList.stream().map(ClassStudentDto::getStudentId).collect(Collectors.toSet()); @@ -439,6 +437,7 @@ public class StudentClassController extends BaseController deleteClassStudent( @MyRequestBody Long classId, @MyRequestBody Long studentId) { @@ -588,4 +587,24 @@ public class StudentClassController extends BaseController>> aggregateBy(@RequestBody MyAggregationParam aggregationParam) { return super.baseAggregateBy(aggregationParam); } + + private String doBusinessDataVerify( + StudentClassDto studentClassDto, + boolean forUpdate, + List classCourseDtoList, + List classStudentDtoList) { + String errorMessage = MyCommonUtil.getModelValidationError(studentClassDto, forUpdate); + if (errorMessage != null) { + return errorMessage; + } + errorMessage = MyCommonUtil.getModelValidationError(classCourseDtoList); + if (errorMessage != null) { + return "参数 [classCourseDtoList] 数据验证失败" + errorMessage; + } + errorMessage = MyCommonUtil.getModelValidationError(classStudentDtoList); + if (errorMessage != null) { + return "参数 [classStudentDtoList] 数据验证失败" + errorMessage; + } + return null; + } } diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/StudentController.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/StudentController.java index 3f3a4547..36113021 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/StudentController.java +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/StudentController.java @@ -1,6 +1,8 @@ package com.orange.demo.courseclassservice.controller; import cn.jimmyshi.beanquery.BeanQuery; +import com.orange.demo.common.log.annotation.OperationLog; +import com.orange.demo.common.log.model.constant.SysOperationLogType; import com.github.pagehelper.page.PageMethod; import com.orange.demo.courseclassservice.model.*; import com.orange.demo.courseclassservice.service.*; @@ -12,14 +14,12 @@ import com.orange.demo.common.core.constant.*; import com.orange.demo.common.core.base.controller.BaseController; import com.orange.demo.common.core.base.service.IBaseService; 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.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import javax.validation.groups.Default; import java.util.*; /** @@ -55,9 +55,10 @@ public class StudentController extends BaseController "studentDto.birthdayEnd", "studentDto.registerTimeStart", "studentDto.registerTimeEnd"}) + @OperationLog(type = SysOperationLogType.ADD) @PostMapping("/add") public ResponseResult add(@MyRequestBody StudentDto studentDto) { - String errorMessage = MyCommonUtil.getModelValidationError(studentDto); + String errorMessage = MyCommonUtil.getModelValidationError(studentDto, false); if (errorMessage != null) { return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); } @@ -68,6 +69,12 @@ public class StudentController extends BaseController errorMessage = callResult.getErrorMessage(); return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); } + // 验证远程服务关联Id的数据合法性 + CallResult remoteCallResult = studentService.verifyRemoteRelatedData(student, null); + if (!remoteCallResult.isSuccess()) { + errorMessage = remoteCallResult.getErrorMessage(); + return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); + } student = studentService.saveNew(student); return ResponseResult.success(student.getStudentId()); } @@ -84,9 +91,10 @@ public class StudentController extends BaseController "StudentDto.birthdayEnd", "StudentDto.registerTimeStart", "StudentDto.registerTimeEnd"}) + @OperationLog(type = SysOperationLogType.UPDATE) @PostMapping("/update") public ResponseResult update(@MyRequestBody StudentDto studentDto) { - String errorMessage = MyCommonUtil.getModelValidationError(studentDto, Default.class, UpdateGroup.class); + String errorMessage = MyCommonUtil.getModelValidationError(studentDto, true); if (errorMessage != null) { return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); } @@ -103,6 +111,12 @@ public class StudentController extends BaseController errorMessage = callResult.getErrorMessage(); return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); } + // 验证远程服务关联Id的数据合法性 + CallResult remoteCallResult = studentService.verifyRemoteRelatedData(student, originalStudent); + if (!remoteCallResult.isSuccess()) { + errorMessage = remoteCallResult.getErrorMessage(); + return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); + } if (!studentService.update(student, originalStudent)) { return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST); } @@ -115,6 +129,7 @@ public class StudentController extends BaseController * @param studentId 删除对象主键Id。 * @return 应答结果对象。 */ + @OperationLog(type = SysOperationLogType.DELETE) @PostMapping("/delete") public ResponseResult delete(@MyRequestBody Long studentId) { String errorMessage; @@ -153,8 +168,7 @@ public class StudentController extends BaseController } Student studentFilter = MyModelUtil.copyTo(studentDtoFilter, Student.class); String orderBy = MyOrderParam.buildOrderBy(orderParam, Student.class); - List studentList = - studentService.getStudentListWithRelation(studentFilter, orderBy); + List studentList = studentService.getStudentListWithRelation(studentFilter, orderBy); return ResponseResult.success(MyPageUtil.makeResponseData(studentList, Student.INSTANCE)); } @@ -169,8 +183,7 @@ public class StudentController extends BaseController if (MyCommonUtil.existBlankArgument(studentId)) { return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); } - Student student = - studentService.getByIdWithRelation(studentId, MyRelationParam.full()); + Student student = studentService.getByIdWithRelation(studentId, MyRelationParam.full()); if (student == null) { return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST); } diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/ClassCourseMapper.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/ClassCourseMapper.java index b0b3a460..7f59b05a 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/ClassCourseMapper.java +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/ClassCourseMapper.java @@ -3,6 +3,8 @@ package com.orange.demo.courseclassservice.dao; import com.orange.demo.common.core.base.dao.BaseDaoMapper; import com.orange.demo.courseclassservice.model.ClassCourse; +import java.util.*; + /** * 数据操作访问接口。 * @@ -10,4 +12,11 @@ import com.orange.demo.courseclassservice.model.ClassCourse; * @date 2020-08-08 */ public interface ClassCourseMapper extends BaseDaoMapper { + + /** + * 批量插入对象列表。 + * + * @param classCourseList 新增对象列表。 + */ + void insertList(List classCourseList); } diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/ClassStudentMapper.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/ClassStudentMapper.java index 6bfca5df..796756df 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/ClassStudentMapper.java +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/ClassStudentMapper.java @@ -3,6 +3,8 @@ package com.orange.demo.courseclassservice.dao; import com.orange.demo.common.core.base.dao.BaseDaoMapper; import com.orange.demo.courseclassservice.model.ClassStudent; +import java.util.*; + /** * 数据操作访问接口。 * @@ -10,4 +12,11 @@ import com.orange.demo.courseclassservice.model.ClassStudent; * @date 2020-08-08 */ public interface ClassStudentMapper extends BaseDaoMapper { + + /** + * 批量插入对象列表。 + * + * @param classStudentList 新增对象列表。 + */ + void insertList(List classStudentList); } diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/CourseMapper.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/CourseMapper.java index d89d6fc5..5c0d88b5 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/CourseMapper.java +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/CourseMapper.java @@ -14,6 +14,13 @@ import java.util.*; */ public interface CourseMapper extends BaseDaoMapper { + /** + * 批量插入对象列表。 + * + * @param courseList 新增对象列表。 + */ + void insertList(List courseList); + /** * 获取过滤后的对象列表。 * diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/GradeMapper.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/GradeMapper.java index 73e4a7ac..f9dc1d07 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/GradeMapper.java +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/GradeMapper.java @@ -3,6 +3,8 @@ package com.orange.demo.courseclassservice.dao; import com.orange.demo.common.core.base.dao.BaseDaoMapper; import com.orange.demo.courseclassservice.model.Grade; +import java.util.*; + /** * 年级数据操作访问接口。 * @@ -10,4 +12,11 @@ import com.orange.demo.courseclassservice.model.Grade; * @date 2020-08-08 */ public interface GradeMapper extends BaseDaoMapper { + + /** + * 批量插入对象列表。 + * + * @param gradeList 新增对象列表。 + */ + void insertList(List gradeList); } diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/MaterialEditionMapper.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/MaterialEditionMapper.java index 59e37d42..c8d59bb2 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/MaterialEditionMapper.java +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/MaterialEditionMapper.java @@ -3,6 +3,8 @@ package com.orange.demo.courseclassservice.dao; import com.orange.demo.common.core.base.dao.BaseDaoMapper; import com.orange.demo.courseclassservice.model.MaterialEdition; +import java.util.*; + /** * 数据操作访问接口。 * @@ -10,4 +12,11 @@ import com.orange.demo.courseclassservice.model.MaterialEdition; * @date 2020-08-08 */ public interface MaterialEditionMapper extends BaseDaoMapper { + + /** + * 批量插入对象列表。 + * + * @param materialEditionList 新增对象列表。 + */ + void insertList(List materialEditionList); } diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/SchoolInfoMapper.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/SchoolInfoMapper.java deleted file mode 100644 index d81a60a7..00000000 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/SchoolInfoMapper.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.orange.demo.courseclassservice.dao; - -import com.orange.demo.common.core.base.dao.BaseDaoMapper; -import com.orange.demo.courseclassservice.model.SchoolInfo; -import org.apache.ibatis.annotations.Param; - -import java.util.*; - -/** - * 校区数据数据操作访问接口。 - * - * @author Jerry - * @date 2020-08-08 - */ -public interface SchoolInfoMapper extends BaseDaoMapper { - - /** - * 获取过滤后的对象列表。 - * - * @param inFilterColumn 参与(In-list)过滤的数据表列。 - * @param inFilterValues 参与(In-list)过滤的数据表列值集合。 - * @param schoolInfoFilter 过滤对象。 - * @param orderBy 排序字符串,order by从句的参数。 - * @return 对象列表。 - */ - List getSchoolInfoList( - @Param("inFilterColumn") String inFilterColumn, - @Param("inFilterValues") Set inFilterValues, - @Param("schoolInfoFilter") SchoolInfo schoolInfoFilter, - @Param("orderBy") String orderBy); - - /** - * 获取对象列表,过滤条件中包含like和between条件,以及指定属性的(in list)过滤条件。 - * - * @param inFilterColumn 参与(In-list)过滤的数据表列。 - * @param inFilterValues 参与(In-list)过滤的数据表列值集合。 - * @param schoolInfoFilter 过滤对象。 - * @return 对象列表。 - */ - Integer getSchoolInfoCount( - @Param("inFilterColumn") String inFilterColumn, - @Param("inFilterValues") Set inFilterValues, - @Param("schoolInfoFilter") SchoolInfo schoolInfoFilter); -} diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/StudentClassMapper.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/StudentClassMapper.java index 6436b899..1d63a6e3 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/StudentClassMapper.java +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/StudentClassMapper.java @@ -1,5 +1,6 @@ package com.orange.demo.courseclassservice.dao; +import com.orange.demo.common.core.annotation.EnableDataPerm; import com.orange.demo.common.core.base.dao.BaseDaoMapper; import com.orange.demo.courseclassservice.model.StudentClass; import org.apache.ibatis.annotations.Param; @@ -12,8 +13,16 @@ import java.util.*; * @author Jerry * @date 2020-08-08 */ +@EnableDataPerm public interface StudentClassMapper extends BaseDaoMapper { + /** + * 批量插入对象列表。 + * + * @param studentClassList 新增对象列表。 + */ + void insertList(List studentClassList); + /** * 获取过滤后的对象列表。 * diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/StudentMapper.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/StudentMapper.java index 0ce85bbe..974daf8c 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/StudentMapper.java +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/StudentMapper.java @@ -1,5 +1,6 @@ package com.orange.demo.courseclassservice.dao; +import com.orange.demo.common.core.annotation.EnableDataPerm; import com.orange.demo.common.core.base.dao.BaseDaoMapper; import com.orange.demo.courseclassservice.model.Student; import org.apache.ibatis.annotations.Param; @@ -12,8 +13,16 @@ import java.util.*; * @author Jerry * @date 2020-08-08 */ +@EnableDataPerm public interface StudentMapper extends BaseDaoMapper { + /** + * 批量插入对象列表。 + * + * @param studentList 新增对象列表。 + */ + void insertList(List studentList); + /** * 获取过滤后的对象列表。 * diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/mapper/ClassCourseMapper.xml b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/mapper/ClassCourseMapper.xml index fd330ae7..ac138999 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/mapper/ClassCourseMapper.xml +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/mapper/ClassCourseMapper.xml @@ -6,4 +6,17 @@ + + + INSERT INTO zz_class_course + (class_id, + course_id, + course_order) + VALUES + + (#{item.classId}, + #{item.courseId}, + #{item.courseOrder}) + + diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/mapper/ClassStudentMapper.xml b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/mapper/ClassStudentMapper.xml index 7bdd76ed..836083b3 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/mapper/ClassStudentMapper.xml +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/mapper/ClassStudentMapper.xml @@ -5,4 +5,15 @@ + + + INSERT INTO zz_class_student + (class_id, + student_id) + VALUES + + (#{item.classId}, + #{item.studentId}) + + diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/mapper/CourseMapper.xml b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/mapper/CourseMapper.xml index 94f3338e..ff00c297 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/mapper/CourseMapper.xml +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/mapper/CourseMapper.xml @@ -21,6 +21,37 @@ notNullColumn="course_id" resultMap="com.orange.demo.courseclassservice.dao.ClassCourseMapper.BaseResultMap" /> + + INSERT INTO zz_course + (course_id, + course_name, + price, + description, + difficulty, + grade_id, + subject_id, + class_hour, + picture_url, + create_user_id, + create_time, + update_time) + VALUES + + (#{item.courseId}, + #{item.courseName}, + #{item.price}, + #{item.description}, + #{item.difficulty}, + #{item.gradeId}, + #{item.subjectId}, + #{item.classHour}, + #{item.pictureUrl}, + #{item.createUserId}, + #{item.createTime}, + #{item.updateTime}) + + + diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/mapper/GradeMapper.xml b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/mapper/GradeMapper.xml index db63dbee..13a350d2 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/mapper/GradeMapper.xml +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/mapper/GradeMapper.xml @@ -6,4 +6,17 @@ + + + INSERT INTO zz_grade + (grade_id, + grade_name, + status) + VALUES + + (#{item.gradeId}, + #{item.gradeName}, + #{item.status}) + + diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/mapper/MaterialEditionMapper.xml b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/mapper/MaterialEditionMapper.xml index 485f6a79..fc597580 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/mapper/MaterialEditionMapper.xml +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/mapper/MaterialEditionMapper.xml @@ -6,4 +6,17 @@ + + + INSERT INTO zz_material_edition + (edition_id, + edition_name, + status) + VALUES + + (#{item.editionId}, + #{item.editionName}, + #{item.status}) + + diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/mapper/SchoolInfoMapper.xml b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/mapper/SchoolInfoMapper.xml deleted file mode 100644 index d042fc5b..00000000 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/mapper/SchoolInfoMapper.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - AND zz_school_info.school_name LIKE #{safeSchoolInfoSchoolName} - - - AND zz_school_info.province_id = #{schoolInfoFilter.provinceId} - - - AND zz_school_info.city_id = #{schoolInfoFilter.cityId} - - - - - - - - diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/mapper/StudentClassMapper.xml b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/mapper/StudentClassMapper.xml index da431b17..4de637f0 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/mapper/StudentClassMapper.xml +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/mapper/StudentClassMapper.xml @@ -13,6 +13,31 @@ + + INSERT INTO zz_class + (class_id, + class_name, + school_id, + leader_id, + finish_class_hour, + class_level, + create_user_id, + create_time, + status) + VALUES + + (#{item.classId}, + #{item.className}, + #{item.schoolId}, + #{item.leaderId}, + #{item.finishClassHour}, + #{item.classLevel}, + #{item.createUserId}, + #{item.createTime}, + #{item.status}) + + + diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/mapper/StudentMapper.xml b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/mapper/StudentMapper.xml index 1a292daf..b9b3d44d 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/mapper/StudentMapper.xml +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/mapper/StudentMapper.xml @@ -19,6 +19,43 @@ + + INSERT INTO zz_student + (student_id, + login_mobile, + student_name, + province_id, + city_id, + district_id, + gender, + birthday, + experience_level, + total_coin, + left_coin, + grade_id, + school_id, + register_time, + status) + VALUES + + (#{item.studentId}, + #{item.loginMobile}, + #{item.studentName}, + #{item.provinceId}, + #{item.cityId}, + #{item.districtId}, + #{item.gender}, + #{item.birthday}, + #{item.experienceLevel}, + #{item.totalCoin}, + #{item.leftCoin}, + #{item.gradeId}, + #{item.schoolId}, + #{item.registerTime}, + #{item.status}) + + + diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/AreaCode.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/AreaCode.java index 561468e8..518e5f03 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/AreaCode.java +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/AreaCode.java @@ -1,9 +1,8 @@ package com.orange.demo.courseclassservice.model; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; -import javax.persistence.*; - /** * 行政区划实体对象。 * @@ -11,31 +10,30 @@ import javax.persistence.*; * @date 2020-08-08 */ @Data -@Table(name = "zz_area_code") +@TableName(value = "zz_area_code") public class AreaCode { /** * 行政区划主键Id */ - @Id - @Column(name = "area_id") + @TableId(value = "area_id") private Long areaId; /** * 行政区划名称 */ - @Column(name = "area_name") + @TableField(value = "area_name") private String areaName; /** * 行政区划级别 (1: 省级别 2: 市级别 3: 区级别) */ - @Column(name = "area_level") + @TableField(value = "area_level") private Integer areaLevel; /** * 父级行政区划Id */ - @Column(name = "parent_id") + @TableField(value = "parent_id") private Long parentId; } diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/ClassCourse.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/ClassCourse.java index b34238d6..77f05154 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/ClassCourse.java +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/ClassCourse.java @@ -1,7 +1,7 @@ package com.orange.demo.courseclassservice.model; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; -import javax.persistence.*; /** * ClassCourse实体对象。 @@ -10,26 +10,24 @@ import javax.persistence.*; * @date 2020-08-08 */ @Data -@Table(name = "zz_class_course") +@TableName(value = "zz_class_course") public class ClassCourse { /** * 班级Id。 */ - @Id - @Column(name = "class_id") + @TableField(value = "class_id") private Long classId; /** * 课程Id。 */ - @Id - @Column(name = "course_id") + @TableField(value = "course_id") private Long courseId; /** * 课程顺序(数值越小越靠前)。 */ - @Column(name = "course_order") + @TableField(value = "course_order") private Integer courseOrder; } diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/ClassStudent.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/ClassStudent.java index e3af4e09..989250af 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/ClassStudent.java +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/ClassStudent.java @@ -1,7 +1,7 @@ package com.orange.demo.courseclassservice.model; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; -import javax.persistence.*; /** * ClassStudent实体对象。 @@ -10,20 +10,18 @@ import javax.persistence.*; * @date 2020-08-08 */ @Data -@Table(name = "zz_class_student") +@TableName(value = "zz_class_student") public class ClassStudent { /** * 班级Id。 */ - @Id - @Column(name = "class_id") + @TableField(value = "class_id") private Long classId; /** * 学生Id。 */ - @Id - @Column(name = "student_id") + @TableField(value = "student_id") private Long studentId; } diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/Course.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/Course.java index b2f0b4fe..6b3c779c 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/Course.java +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/Course.java @@ -1,5 +1,6 @@ package com.orange.demo.courseclassservice.model; +import com.baomidou.mybatisplus.annotation.*; import com.orange.demo.courseclassapi.vo.CourseVo; import com.orange.demo.courseclassapi.constant.CourseDifficult; import com.orange.demo.application.common.constant.Subject; @@ -11,7 +12,6 @@ import com.orange.demo.common.core.base.mapper.BaseModelMapper; import lombok.Data; import org.mapstruct.*; import org.mapstruct.factory.Mappers; -import javax.persistence.*; import java.math.BigDecimal; import java.util.Date; @@ -24,20 +24,19 @@ import java.util.Map; * @date 2020-08-08 */ @Data -@Table(name = "zz_course") +@TableName(value = "zz_course") public class Course { /** * 主键Id。 */ - @Id - @Column(name = "course_id") + @TableId(value = "course_id") private Long courseId; /** * 课程名称。 */ - @Column(name = "course_name") + @TableField(value = "course_name") private String courseName; /** @@ -58,86 +57,86 @@ public class Course { /** * 年级Id。 */ - @Column(name = "grade_id") + @TableField(value = "grade_id") private Integer gradeId; /** * 学科Id。 */ - @Column(name = "subject_id") + @TableField(value = "subject_id") private Integer subjectId; /** * 课时数量。 */ - @Column(name = "class_hour") + @TableField(value = "class_hour") private Integer classHour; /** * 多张课程图片地址。 */ @UploadFlagColumn(storeType = UploadStoreTypeEnum.LOCAL_SYSTEM) - @Column(name = "picture_url") + @TableField(value = "picture_url") private String pictureUrl; /** * 创建用户Id。 */ - @Column(name = "create_user_id") + @TableField(value = "create_user_id") private Long createUserId; /** * 创建时间。 */ - @Column(name = "create_time") + @TableField(value = "create_time") private Date createTime; /** * 最后修改时间。 */ - @Column(name = "update_time") + @TableField(value = "update_time") private Date updateTime; /** * price 范围过滤起始值(>=)。 */ - @Transient + @TableField(exist = false) private BigDecimal priceStart; /** * price 范围过滤结束值(<=)。 */ - @Transient + @TableField(exist = false) private BigDecimal priceEnd; /** * classHour 范围过滤起始值(>=)。 */ - @Transient + @TableField(exist = false) private Integer classHourStart; /** * classHour 范围过滤结束值(<=)。 */ - @Transient + @TableField(exist = false) private Integer classHourEnd; /** * updateTime 范围过滤起始值(>=)。 */ - @Transient + @TableField(exist = false) private String updateTimeStart; /** * updateTime 范围过滤结束值(<=)。 */ - @Transient + @TableField(exist = false) private String updateTimeEnd; /** * courseId 的多对多关联表数据对象。 */ - @Transient + @TableField(exist = false) private ClassCourse classCourse; @RelationDict( @@ -146,19 +145,19 @@ public class Course { slaveModelClass = Grade.class, slaveIdField = "gradeId", slaveNameField = "gradeName") - @Transient + @TableField(exist = false) private Map gradeIdDictMap; @RelationConstDict( masterIdField = "difficulty", constantDictClass = CourseDifficult.class) - @Transient + @TableField(exist = false) private Map difficultyDictMap; @RelationConstDict( masterIdField = "subjectId", constantDictClass = Subject.class) - @Transient + @TableField(exist = false) private Map subjectIdDictMap; @Mapper diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/Grade.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/Grade.java index 2c884001..0164e2dc 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/Grade.java +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/Grade.java @@ -1,8 +1,7 @@ package com.orange.demo.courseclassservice.model; -import com.orange.demo.common.core.annotation.DeletedFlagColumn; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; -import javax.persistence.*; /** * Grade实体对象。 @@ -11,26 +10,24 @@ import javax.persistence.*; * @date 2020-08-08 */ @Data -@Table(name = "zz_grade") +@TableName(value = "zz_grade") public class Grade { /** * 主键Id。 */ - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "grade_id") + @TableId(value = "grade_id", type = IdType.AUTO) private Integer gradeId; /** * 年级名称。 */ - @Column(name = "grade_name") + @TableField(value = "grade_name") private String gradeName; /** * 逻辑删除标记字段(1: 正常 -1: 已删除)。 */ - @DeletedFlagColumn + @TableLogic private Integer status; } diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/MaterialEdition.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/MaterialEdition.java index 1a23af88..60eb31b0 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/MaterialEdition.java +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/MaterialEdition.java @@ -1,7 +1,7 @@ package com.orange.demo.courseclassservice.model; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; -import javax.persistence.*; /** * MaterialEdition实体对象。 @@ -10,21 +10,19 @@ import javax.persistence.*; * @date 2020-08-08 */ @Data -@Table(name = "zz_material_edition") +@TableName(value = "zz_material_edition") public class MaterialEdition { /** * 主键Id。 */ - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "edition_id") + @TableId(value = "edition_id", type = IdType.AUTO) private Integer editionId; /** * 教材版本名称。 */ - @Column(name = "edition_name") + @TableField(value = "edition_name") private String editionName; /** diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/SchoolInfo.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/SchoolInfo.java deleted file mode 100644 index f9a792dd..00000000 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/SchoolInfo.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.orange.demo.courseclassservice.model; - -import com.orange.demo.courseclassapi.vo.SchoolInfoVo; -import com.orange.demo.common.core.annotation.RelationDict; -import com.orange.demo.common.core.base.mapper.BaseModelMapper; -import lombok.Data; -import org.mapstruct.*; -import org.mapstruct.factory.Mappers; -import javax.persistence.*; - -import java.util.Map; - -/** - * SchoolInfo实体对象。 - * - * @author Jerry - * @date 2020-08-08 - */ -@Data -@Table(name = "zz_school_info") -public class SchoolInfo { - - /** - * 学校Id。 - */ - @Id - @Column(name = "school_id") - private Long schoolId; - - /** - * 学校名称。 - */ - @Column(name = "school_name") - private String schoolName; - - /** - * 所在省Id。 - */ - @Column(name = "province_id") - private Long provinceId; - - /** - * 所在城市Id。 - */ - @Column(name = "city_id") - private Long cityId; - - @RelationDict( - masterIdField = "provinceId", - slaveServiceName = "areaCodeService", - slaveModelClass = AreaCode.class, - slaveIdField = "areaId", - slaveNameField = "areaName") - @Transient - private Map provinceIdDictMap; - - @RelationDict( - masterIdField = "cityId", - slaveServiceName = "areaCodeService", - slaveModelClass = AreaCode.class, - slaveIdField = "areaId", - slaveNameField = "areaName") - @Transient - private Map cityIdDictMap; - - @Mapper - public interface SchoolInfoModelMapper extends BaseModelMapper { - /** - * 转换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); -} diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/Student.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/Student.java index c0d8900e..81276258 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/Student.java +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/Student.java @@ -1,6 +1,9 @@ package com.orange.demo.courseclassservice.model; +import com.baomidou.mybatisplus.annotation.*; import com.orange.demo.courseclassapi.vo.StudentVo; +import com.orange.demo.upmsapi.client.SysDeptClient; +import com.orange.demo.upmsapi.vo.SysDeptVo; import com.orange.demo.application.common.constant.Gender; import com.orange.demo.application.common.constant.ExpLevel; import com.orange.demo.application.common.constant.StudentStatus; @@ -8,10 +11,10 @@ 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.util.MyCommonUtil; +import com.orange.demo.common.core.annotation.DeptFilterColumn; import lombok.Data; import org.mapstruct.*; import org.mapstruct.factory.Mappers; -import javax.persistence.*; import java.util.Date; import java.util.Map; @@ -23,44 +26,43 @@ import java.util.Map; * @date 2020-08-08 */ @Data -@Table(name = "zz_student") +@TableName(value = "zz_student") public class Student { /** * 学生Id。 */ - @Id - @Column(name = "student_id") + @TableId(value = "student_id") private Long studentId; /** * 登录手机。 */ - @Column(name = "login_mobile") + @TableField(value = "login_mobile") private String loginMobile; /** * 学生姓名。 */ - @Column(name = "student_name") + @TableField(value = "student_name") private String studentName; /** * 所在省份Id。 */ - @Column(name = "province_id") + @TableField(value = "province_id") private Long provinceId; /** * 所在城市Id。 */ - @Column(name = "city_id") + @TableField(value = "city_id") private Long cityId; /** * 区县Id。 */ - @Column(name = "district_id") + @TableField(value = "district_id") private Long districtId; /** @@ -76,37 +78,38 @@ public class Student { /** * 经验等级 (0: 初级 1: 中级 2: 高级 3: 资深)。 */ - @Column(name = "experience_level") + @TableField(value = "experience_level") private Integer experienceLevel; /** * 总共充值学币数量。 */ - @Column(name = "total_coin") + @TableField(value = "total_coin") private Integer totalCoin; /** * 可用学币数量。 */ - @Column(name = "left_coin") + @TableField(value = "left_coin") private Integer leftCoin; /** * 年级Id。 */ - @Column(name = "grade_id") + @TableField(value = "grade_id") private Integer gradeId; /** * 校区Id。 */ - @Column(name = "school_id") + @DeptFilterColumn + @TableField(value = "school_id") private Long schoolId; /** * 注册时间。 */ - @Column(name = "register_time") + @TableField(value = "register_time") private Date registerTime; /** @@ -117,44 +120,53 @@ public class Student { /** * birthday 范围过滤起始值(>=)。 */ - @Transient + @TableField(exist = false) private String birthdayStart; /** * birthday 范围过滤结束值(<=)。 */ - @Transient + @TableField(exist = false) private String birthdayEnd; /** * registerTime 范围过滤起始值(>=)。 */ - @Transient + @TableField(exist = false) private String registerTimeStart; /** * registerTime 范围过滤结束值(<=)。 */ - @Transient + @TableField(exist = false) private String registerTimeEnd; /** * true LIKE搜索字符串。 */ - @Transient + @TableField(exist = false) private String searchString; public void setSearchString(String searchString) { this.searchString = MyCommonUtil.replaceSqlWildcard(searchString); } + @RelationDict( + masterIdField = "schoolId", + slaveClientClass = SysDeptClient.class, + slaveModelClass = SysDeptVo.class, + slaveIdField = "deptId", + slaveNameField = "deptName") + @TableField(exist = false) + private Map schoolIdDictMap; + @RelationDict( masterIdField = "provinceId", slaveServiceName = "areaCodeService", slaveModelClass = AreaCode.class, slaveIdField = "areaId", slaveNameField = "areaName") - @Transient + @TableField(exist = false) private Map provinceIdDictMap; @RelationDict( @@ -163,7 +175,7 @@ public class Student { slaveModelClass = AreaCode.class, slaveIdField = "areaId", slaveNameField = "areaName") - @Transient + @TableField(exist = false) private Map cityIdDictMap; @RelationDict( @@ -172,7 +184,7 @@ public class Student { slaveModelClass = AreaCode.class, slaveIdField = "areaId", slaveNameField = "areaName") - @Transient + @TableField(exist = false) private Map districtIdDictMap; @RelationDict( @@ -181,34 +193,25 @@ public class Student { slaveModelClass = Grade.class, slaveIdField = "gradeId", slaveNameField = "gradeName") - @Transient + @TableField(exist = false) private Map gradeIdDictMap; - @RelationDict( - masterIdField = "schoolId", - slaveServiceName = "schoolInfoService", - slaveModelClass = SchoolInfo.class, - slaveIdField = "schoolId", - slaveNameField = "schoolName") - @Transient - private Map schoolIdDictMap; - @RelationConstDict( masterIdField = "gender", constantDictClass = Gender.class) - @Transient + @TableField(exist = false) private Map genderDictMap; @RelationConstDict( masterIdField = "experienceLevel", constantDictClass = ExpLevel.class) - @Transient + @TableField(exist = false) private Map experienceLevelDictMap; @RelationConstDict( masterIdField = "status", constantDictClass = StudentStatus.class) - @Transient + @TableField(exist = false) private Map statusDictMap; @Mapper diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/StudentClass.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/StudentClass.java index f78a3129..ad7f9ae3 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/StudentClass.java +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/StudentClass.java @@ -1,15 +1,18 @@ package com.orange.demo.courseclassservice.model; +import com.baomidou.mybatisplus.annotation.*; import com.orange.demo.courseclassapi.vo.StudentClassVo; +import com.orange.demo.upmsapi.client.SysDeptClient; +import com.orange.demo.upmsapi.vo.SysDeptVo; import com.orange.demo.courseclassapi.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.annotation.DeptFilterColumn; +import com.orange.demo.common.core.annotation.UserFilterColumn; import lombok.Data; import org.mapstruct.*; import org.mapstruct.factory.Mappers; -import javax.persistence.*; import java.util.Date; import java.util.Map; @@ -21,71 +24,72 @@ import java.util.Map; * @date 2020-08-08 */ @Data -@Table(name = "zz_class") +@TableName(value = "zz_class") public class StudentClass { /** * 班级Id。 */ - @Id - @Column(name = "class_id") + @TableId(value = "class_id") private Long classId; /** * 班级名称。 */ - @Column(name = "class_name") + @TableField(value = "class_name") private String className; /** * 学校Id。 */ - @Column(name = "school_id") + @DeptFilterColumn + @TableField(value = "school_id") private Long schoolId; /** * 学生班长Id。 */ - @Column(name = "leader_id") + @TableField(value = "leader_id") private Long leaderId; /** * 已完成课时数量。 */ - @Column(name = "finish_class_hour") + @TableField(value = "finish_class_hour") private Integer finishClassHour; /** * 班级级别(0: 初级班 1: 培优班 2: 冲刺提分班 3: 竞赛班)。 */ - @Column(name = "class_level") + @TableField(value = "class_level") private Integer classLevel; /** * 创建用户。 */ - @Column(name = "create_user_id") + @UserFilterColumn + @TableField(value = "create_user_id") private Long createUserId; /** * 班级创建时间。 */ - @Column(name = "create_time") + @TableField(value = "create_time") private Date createTime; /** * 逻辑删除标记字段(1: 正常 -1: 已删除)。 */ - @DeletedFlagColumn + @TableLogic private Integer status; @RelationDict( masterIdField = "schoolId", - slaveServiceName = "schoolInfoService", - slaveModelClass = SchoolInfo.class, - slaveIdField = "schoolId", - slaveNameField = "schoolName") - @Transient + slaveClientClass = SysDeptClient.class, + slaveModelClass = SysDeptVo.class, + slaveIdField = "deptId", + slaveNameField = "deptName") + @TableField(exist = false) private Map schoolIdDictMap; @RelationDict( @@ -94,13 +98,13 @@ public class StudentClass { slaveModelClass = Student.class, slaveIdField = "studentId", slaveNameField = "studentName") - @Transient + @TableField(exist = false) private Map leaderIdDictMap; @RelationConstDict( masterIdField = "classLevel", constantDictClass = ClassLevel.class) - @Transient + @TableField(exist = false) private Map classLevelDictMap; @Mapper diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/CourseService.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/CourseService.java index 5a607797..0d4c4218 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/CourseService.java +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/CourseService.java @@ -22,6 +22,13 @@ public interface CourseService extends IBaseService { */ Course saveNew(Course course); + /** + * 利用数据库的insertList语法,批量插入对象列表。 + * + * @param courseList 新增对象列表。 + */ + void saveNewBatch(List courseList); + /** * 更新数据对象。 * diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/SchoolInfoService.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/SchoolInfoService.java deleted file mode 100644 index acb85c17..00000000 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/SchoolInfoService.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.orange.demo.courseclassservice.service; - -import com.orange.demo.courseclassservice.model.*; -import com.orange.demo.common.core.object.CallResult; -import com.orange.demo.common.core.base.service.IBaseService; - -import java.util.*; - -/** - * 校区数据数据操作服务接口。 - * - * @author Jerry - * @date 2020-08-08 - */ -public interface SchoolInfoService extends IBaseService { - - /** - * 保存新增对象。 - * - * @param schoolInfo 新增对象。 - * @return 返回新增对象。 - */ - SchoolInfo saveNew(SchoolInfo schoolInfo); - - /** - * 更新数据对象。 - * - * @param schoolInfo 更新的对象。 - * @param originalSchoolInfo 原有数据对象。 - * @return 成功返回true,否则false。 - */ - boolean update(SchoolInfo schoolInfo, SchoolInfo originalSchoolInfo); - - /** - * 删除指定数据。 - * - * @param schoolId 主键Id。 - * @return 成功返回true,否则false。 - */ - boolean remove(Long schoolId); - - /** - * 获取单表查询结果。由于没有关联数据查询,因此在仅仅获取单表数据的场景下,效率更高。 - * 如果需要同时获取关联数据,请移步(getSchoolInfoListWithRelation)方法。 - * - * @param filter 过滤对象。 - * @param orderBy 排序参数。 - * @return 查询结果集。 - */ - List getSchoolInfoList(SchoolInfo filter, String orderBy); - - /** - * 获取主表的查询结果,查询条件中包括主表过滤对象和指定字段的(in list)过滤。 - * 由于没有关联数据查询,因此在仅仅获取单表数据的场景下,效率更高。 - * 如果需要同时获取关联数据,请移步(getSchoolInfoListWithRelation)方法。 - * - * @param inFilterField (In-list)指定的字段(Java成员字段,而非数据列名)。 - * @param inFilterValues inFilterField指定字段的(In-list)数据列表。 - * @param filter 过滤对象。 - * @param orderBy 排序参数。 - * @return 查询结果集。 - */ - List getSchoolInfoList(String inFilterField, Set inFilterValues, SchoolInfo filter, String orderBy); - - /** - * 获取主表的查询结果,以及主表关联的字典数据和一对一从表数据,以及一对一从表的字典数据。 - * 如果仅仅需要获取主表数据,请移步(getSchoolInfoList),以便获取更好的查询性能。 - * - * @param filter 主表过滤对象。 - * @param orderBy 排序对象。 - * @return 查询结果集。 - */ - List getSchoolInfoListWithRelation(SchoolInfo filter, String orderBy); - - /** - * 获取主表的查询结果,查询条件中包括主表过滤对象和指定字段的(in list)过滤。 - * 同时还包含主表关联的字典数据和一对一从表数据,以及一对一从表的字典数据。 - * 如果仅仅需要获取主表数据,请移步(getSchoolInfoList),以便获取更好的查询性能。 - * - * @param inFilterField (In-list)指定的字段(Java成员字段,而非数据列名)。 - * @param inFilterValues inFilterField指定字段的(In-list)数据列表。 - * @param filter 主表过滤对象。 - * @param orderBy 排序对象。 - * @return 查询结果集。 - */ - List getSchoolInfoListWithRelation( - String inFilterField, Set inFilterValues, SchoolInfo filter, String orderBy); - - /** - * 根据最新对象和原有对象的数据对比,判断关联的字典数据和多对一主表数据是否都是合法数据。 - * - * @param schoolInfo 最新数据对象。 - * @param originalSchoolInfo 原有数据对象。 - * @return 数据全部正确返回true,否则false,同时返回具体的错误信息。 - */ - CallResult verifyRelatedData(SchoolInfo schoolInfo, SchoolInfo originalSchoolInfo); -} diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/StudentClassService.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/StudentClassService.java index 6aa0f943..f23568d8 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/StudentClassService.java +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/StudentClassService.java @@ -22,6 +22,13 @@ public interface StudentClassService extends IBaseService { */ StudentClass saveNew(StudentClass studentClass); + /** + * 利用数据库的insertList语法,批量插入对象列表。 + * + * @param studentClassList 新增对象列表。 + */ + void saveNewBatch(List studentClassList); + /** * 更新数据对象。 * @@ -145,4 +152,13 @@ public interface StudentClassService extends IBaseService { * @return 数据全部正确返回true,否则false,同时返回具体的错误信息。 */ CallResult verifyRelatedData(StudentClass studentClass, StudentClass originalStudentClass); + + /** + * 根据最新对象和原有对象的数据对比,判断关联的远程字典数据和多对一主表数据是否都是合法数据。 + * + * @param studentClass 最新数据对象。 + * @param originalStudentClass 原有数据对象。 + * @return 数据全部正确返回true,否则false,同时返回具体的错误信息。 + */ + CallResult verifyRemoteRelatedData(StudentClass studentClass, StudentClass originalStudentClass); } diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/StudentService.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/StudentService.java index 44f28df8..55f4fbbb 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/StudentService.java +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/StudentService.java @@ -22,6 +22,13 @@ public interface StudentService extends IBaseService { */ Student saveNew(Student student); + /** + * 利用数据库的insertList语法,批量插入对象列表。 + * + * @param studentList 新增对象列表。 + */ + void saveNewBatch(List studentList); + /** * 更新数据对象。 * @@ -114,4 +121,13 @@ public interface StudentService extends IBaseService { * @return 数据全部正确返回true,否则false,同时返回具体的错误信息。 */ CallResult verifyRelatedData(Student student, Student originalStudent); + + /** + * 根据最新对象和原有对象的数据对比,判断关联的远程字典数据和多对一主表数据是否都是合法数据。 + * + * @param student 最新数据对象。 + * @param originalStudent 原有数据对象。 + * @return 数据全部正确返回true,否则false,同时返回具体的错误信息。 + */ + CallResult verifyRemoteRelatedData(Student student, Student originalStudent); } diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/impl/CourseServiceImpl.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/impl/CourseServiceImpl.java index 7748f85e..e4360d9c 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/impl/CourseServiceImpl.java +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/impl/CourseServiceImpl.java @@ -1,5 +1,8 @@ package com.orange.demo.courseclassservice.service.impl; +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.orange.demo.courseclassservice.service.*; import com.orange.demo.courseclassservice.dao.*; import com.orange.demo.courseclassservice.model.*; @@ -56,16 +59,24 @@ public class CourseServiceImpl extends BaseService implements Cour @Transactional(rollbackFor = Exception.class) @Override public Course saveNew(Course course) { - course.setCourseId(idGenerator.nextLongId()); - TokenData tokenData = TokenData.takeFromRequest(); - course.setCreateUserId(tokenData.getUserId()); - Date now = new Date(); - course.setCreateTime(now); - course.setUpdateTime(now); - courseMapper.insert(course); + courseMapper.insert(this.buildDefaultValue(course)); return course; } + /** + * 利用数据库的insertList语法,批量插入对象列表。 + * + * @param courseList 新增对象列表。 + */ + @Transactional(rollbackFor = Exception.class) + @Override + public void saveNewBatch(List courseList) { + if (CollUtil.isNotEmpty(courseList)) { + courseList.forEach(this::buildDefaultValue); + courseMapper.insertList(courseList); + } + } + /** * 更新数据对象。 * @@ -80,7 +91,8 @@ public class CourseServiceImpl extends BaseService implements Cour course.setCreateTime(originalCourse.getCreateTime()); course.setUpdateTime(new Date()); // 这里重点提示,在执行主表数据更新之前,如果有哪些字段不支持修改操作,请用原有数据对象字段替换当前数据字段。 - return courseMapper.updateByPrimaryKey(course) == 1; + UpdateWrapper uw = this.createUpdateQueryForNullValue(course, course.getCourseId()); + return courseMapper.update(course, uw) == 1; } /** @@ -92,14 +104,13 @@ public class CourseServiceImpl extends BaseService implements Cour @Transactional(rollbackFor = Exception.class) @Override public boolean remove(Long courseId) { - // 这里先删除主数据 - if (!this.removeById(courseId)) { + if (courseMapper.deleteById(courseId) == 0) { return false; } // 开始删除与本地多对多父表的关联 ClassCourse classCourse = new ClassCourse(); classCourse.setCourseId(courseId); - classCourseMapper.delete(classCourse); + classCourseMapper.delete(new QueryWrapper<>(classCourse)); return true; } @@ -225,4 +236,14 @@ public class CourseServiceImpl extends BaseService implements Cour } return CallResult.ok(); } + + private Course buildDefaultValue(Course course) { + course.setCourseId(idGenerator.nextLongId()); + TokenData tokenData = TokenData.takeFromRequest(); + course.setCreateUserId(tokenData.getUserId()); + Date now = new Date(); + course.setCreateTime(now); + course.setUpdateTime(now); + return course; + } } diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/impl/SchoolInfoServiceImpl.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/impl/SchoolInfoServiceImpl.java deleted file mode 100644 index e9c11b27..00000000 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/impl/SchoolInfoServiceImpl.java +++ /dev/null @@ -1,182 +0,0 @@ -package com.orange.demo.courseclassservice.service.impl; - -import com.orange.demo.courseclassservice.service.*; -import com.orange.demo.courseclassservice.dao.*; -import com.orange.demo.courseclassservice.model.*; -import com.orange.demo.common.core.util.*; -import com.orange.demo.common.core.object.MyRelationParam; -import com.orange.demo.common.core.object.CallResult; -import com.orange.demo.common.core.base.dao.BaseDaoMapper; -import com.orange.demo.common.core.base.service.BaseService; -import com.orange.demo.common.sequence.wrapper.IdGeneratorWrapper; -import lombok.extern.slf4j.Slf4j; -import com.github.pagehelper.Page; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.*; - -/** - * 校区数据数据操作服务类。 - * - * @author Jerry - * @date 2020-08-08 - */ -@Slf4j -@Service("schoolInfoService") -public class SchoolInfoServiceImpl extends BaseService implements SchoolInfoService { - - @Autowired - private SchoolInfoMapper schoolInfoMapper; - @Autowired - private AreaCodeService areaCodeService; - @Autowired - private IdGeneratorWrapper idGenerator; - - /** - * 返回当前Service的主表Mapper对象。 - * - * @return 主表Mapper对象。 - */ - @Override - protected BaseDaoMapper mapper() { - return schoolInfoMapper; - } - - /** - * 保存新增对象。 - * - * @param schoolInfo 新增对象。 - * @return 返回新增对象。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public SchoolInfo saveNew(SchoolInfo schoolInfo) { - schoolInfo.setSchoolId(idGenerator.nextLongId()); - schoolInfoMapper.insert(schoolInfo); - return schoolInfo; - } - - /** - * 更新数据对象。 - * - * @param schoolInfo 更新的对象。 - * @param originalSchoolInfo 原有数据对象。 - * @return 成功返回true,否则false。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public boolean update(SchoolInfo schoolInfo, SchoolInfo originalSchoolInfo) { - // 这里重点提示,在执行主表数据更新之前,如果有哪些字段不支持修改操作,请用原有数据对象字段替换当前数据字段。 - return schoolInfoMapper.updateByPrimaryKey(schoolInfo) == 1; - } - - /** - * 删除指定数据。 - * - * @param schoolId 主键Id。 - * @return 成功返回true,否则false。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public boolean remove(Long schoolId) { - // 这里先删除主数据 - return this.removeById(schoolId); - } - - /** - * 获取单表查询结果。由于没有关联数据查询,因此在仅仅获取单表数据的场景下,效率更高。 - * 如果需要同时获取关联数据,请移步(getSchoolInfoListWithRelation)方法。 - * - * @param filter 过滤对象。 - * @param orderBy 排序参数。 - * @return 查询结果集。 - */ - @Override - public List getSchoolInfoList(SchoolInfo filter, String orderBy) { - return schoolInfoMapper.getSchoolInfoList(null, null, filter, orderBy); - } - - /** - * 获取主表的查询结果,查询条件中包括主表过滤对象和指定字段的(in list)过滤。 - * 由于没有关联数据查询,因此在仅仅获取单表数据的场景下,效率更高。 - * 如果需要同时获取关联数据,请移步(getSchoolInfoListWithRelation)方法。 - * - * @param inFilterField (In-list)指定的字段(Java成员字段,而非数据列名)。 - * @param inFilterValues inFilterField指定字段的(In-list)数据列表。 - * @param filter 过滤对象。 - * @param orderBy 排序参数。 - * @return 查询结果集。 - */ - @Override - public List getSchoolInfoList( - String inFilterField, Set inFilterValues, SchoolInfo filter, String orderBy) { - String inFilterColumn = MyModelUtil.mapToColumnName(inFilterField, SchoolInfo.class); - return schoolInfoMapper.getSchoolInfoList(inFilterColumn, inFilterValues, filter, orderBy); - } - - /** - * 获取主表的查询结果,以及主表关联的字典数据和一对一从表数据,以及一对一从表的字典数据。 - * 该查询会涉及到一对一从表的关联过滤,或一对多从表的嵌套关联过滤,因此性能不如单表过滤。 - * 如果仅仅需要获取主表数据,请移步(getSchoolInfoList),以便获取更好的查询性能。 - * - * @param filter 主表过滤对象。 - * @param orderBy 排序对象。 - * @return 查询结果集。 - */ - @Override - public List getSchoolInfoListWithRelation(SchoolInfo filter, String orderBy) { - List resultList = schoolInfoMapper.getSchoolInfoList(null, null, filter, orderBy); - // 在缺省生成的代码中,如果查询结果resultList不是Page对象,说明没有分页,那么就很可能是数据导出接口调用了当前方法。 - // 为了避免一次性的大量数据关联,规避因此而造成的系统运行性能冲击,这里手动进行了分批次读取,开发者可按需修改该值。 - int batchSize = resultList instanceof Page ? 0 : 1000; - this.buildRelationForDataList(resultList, MyRelationParam.normal(), batchSize); - return resultList; - } - - /** - * 获取主表的查询结果,查询条件中包括主表过滤对象和指定字段的(in list)过滤。 - * 同时还包含主表关联的字典数据和一对一从表数据,以及一对一从表的字典数据。 - * 如果仅仅需要获取主表数据,请移步(getSchoolInfoList),以便获取更好的查询性能。 - * - * @param inFilterField (In-list)指定的字段(Java成员字段,而非数据列名)。 - * @param inFilterValues inFilterField指定字段的(In-list)数据列表。 - * @param filter 主表过滤对象。 - * @param orderBy 排序对象。 - * @return 查询结果集。 - */ - @Override - public List getSchoolInfoListWithRelation( - String inFilterField, Set inFilterValues, SchoolInfo filter, String orderBy) { - String inFilterColumn = MyModelUtil.mapToColumnName(inFilterField, SchoolInfo.class); - List resultList = - schoolInfoMapper.getSchoolInfoList(inFilterColumn, inFilterValues, filter, orderBy); - // 在缺省生成的代码中,如果查询结果resultList不是Page对象,说明没有分页,那么就很可能是数据导出接口调用了当前方法。 - // 为了避免一次性的大量数据关联,规避因此而造成的系统运行性能冲击,这里手动进行了分批次读取,开发者可按需修改该值。 - int batchSize = resultList instanceof Page ? 0 : 1000; - this.buildRelationForDataList(resultList, MyRelationParam.dictOnly(), batchSize); - return resultList; - } - - /** - * 根据最新对象和原有对象的数据对比,判断关联的字典数据和多对一主表数据是否都是合法数据。 - * - * @param schoolInfo 最新数据对象。 - * @param originalSchoolInfo 原有数据对象。 - * @return 数据全部正确返回true,否则false,同时返回具体的错误信息。 - */ - @Override - public CallResult verifyRelatedData(SchoolInfo schoolInfo, SchoolInfo originalSchoolInfo) { - String errorMessageFormat = "数据验证失败,关联的%s并不存在,请刷新后重试!"; - if (this.needToVerify(schoolInfo, originalSchoolInfo, SchoolInfo::getProvinceId) - && !areaCodeService.existId(schoolInfo.getProvinceId())) { - return CallResult.error(String.format(errorMessageFormat, "所在省份")); - } - if (this.needToVerify(schoolInfo, originalSchoolInfo, SchoolInfo::getCityId) - && !areaCodeService.existId(schoolInfo.getCityId())) { - return CallResult.error(String.format(errorMessageFormat, "所在城市")); - } - return CallResult.ok(); - } -} diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/impl/StudentClassServiceImpl.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/impl/StudentClassServiceImpl.java index 948a8cbb..0d7fff5f 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/impl/StudentClassServiceImpl.java +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/impl/StudentClassServiceImpl.java @@ -1,10 +1,15 @@ package com.orange.demo.courseclassservice.service.impl; +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.orange.demo.courseclassservice.service.*; import com.orange.demo.courseclassservice.dao.*; import com.orange.demo.courseclassservice.model.*; +import com.orange.demo.upmsapi.client.*; import com.orange.demo.common.core.util.*; import com.orange.demo.common.core.object.MyRelationParam; +import com.orange.demo.common.core.object.ResponseResult; import com.orange.demo.common.core.object.CallResult; import com.orange.demo.common.core.object.TokenData; import com.orange.demo.common.core.constant.GlobalDeletedFlag; @@ -16,7 +21,6 @@ import com.github.pagehelper.Page; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import tk.mybatis.mapper.entity.Example; import java.util.*; @@ -37,10 +41,10 @@ public class StudentClassServiceImpl extends BaseService imp @Autowired private ClassStudentMapper classStudentMapper; @Autowired - private SchoolInfoService schoolInfoService; - @Autowired private StudentService studentService; @Autowired + private SysDeptClient sysDeptClient; + @Autowired private IdGeneratorWrapper idGenerator; /** @@ -62,15 +66,24 @@ public class StudentClassServiceImpl extends BaseService imp @Transactional(rollbackFor = Exception.class) @Override public StudentClass saveNew(StudentClass studentClass) { - studentClass.setClassId(idGenerator.nextLongId()); - TokenData tokenData = TokenData.takeFromRequest(); - studentClass.setCreateUserId(tokenData.getUserId()); - studentClass.setCreateTime(new Date()); - studentClass.setStatus(GlobalDeletedFlag.NORMAL); - studentClassMapper.insert(studentClass); + studentClassMapper.insert(this.buildDefaultValue(studentClass)); return studentClass; } + /** + * 利用数据库的insertList语法,批量插入对象列表。 + * + * @param studentClassList 新增对象列表。 + */ + @Transactional(rollbackFor = Exception.class) + @Override + public void saveNewBatch(List studentClassList) { + if (CollUtil.isNotEmpty(studentClassList)) { + studentClassList.forEach(this::buildDefaultValue); + studentClassMapper.insertList(studentClassList); + } + } + /** * 更新数据对象。 * @@ -83,9 +96,9 @@ public class StudentClassServiceImpl extends BaseService imp public boolean update(StudentClass studentClass, StudentClass originalStudentClass) { studentClass.setCreateUserId(originalStudentClass.getCreateUserId()); studentClass.setCreateTime(originalStudentClass.getCreateTime()); - studentClass.setStatus(GlobalDeletedFlag.NORMAL); // 这里重点提示,在执行主表数据更新之前,如果有哪些字段不支持修改操作,请用原有数据对象字段替换当前数据字段。 - return studentClassMapper.updateByPrimaryKey(studentClass) == 1; + UpdateWrapper uw = this.createUpdateQueryForNullValue(studentClass, studentClass.getClassId()); + return studentClassMapper.update(studentClass, uw) == 1; } /** @@ -97,17 +110,16 @@ public class StudentClassServiceImpl extends BaseService imp @Transactional(rollbackFor = Exception.class) @Override public boolean remove(Long classId) { - // 这里先删除主数据 - if (!this.removeById(classId)) { + if (studentClassMapper.deleteById(classId) == 0) { return false; } // 开始删除多对多中间表的关联 ClassCourse classCourse = new ClassCourse(); classCourse.setClassId(classId); - classCourseMapper.delete(classCourse); + classCourseMapper.delete(new QueryWrapper<>(classCourse)); ClassStudent classStudent = new ClassStudent(); classStudent.setClassId(classId); - classStudentMapper.delete(classStudent); + classStudentMapper.delete(new QueryWrapper<>(classStudent)); return true; } @@ -197,8 +209,8 @@ public class StudentClassServiceImpl extends BaseService imp for (ClassCourse classCourse : classCourseList) { classCourse.setClassId(classId); MyModelUtil.setDefaultValue(classCourse, "courseOrder", 0); + classCourseMapper.insert(classCourse); } - classCourseMapper.insertList(classCourseList); } /** @@ -210,11 +222,13 @@ public class StudentClassServiceImpl extends BaseService imp @Transactional(rollbackFor = Exception.class) @Override public boolean updateClassCourse(ClassCourse classCourse) { - Example e = new Example(ClassCourse.class); - e.createCriteria() - .andEqualTo("classId", classCourse.getClassId()) - .andEqualTo("courseId", classCourse.getCourseId()); - return classCourseMapper.updateByExample(classCourse, e) > 0; + ClassCourse filter = new ClassCourse(); + filter.setClassId(classCourse.getClassId()); + filter.setCourseId(classCourse.getCourseId()); + UpdateWrapper uw = + BaseService.createUpdateQueryForNullValue(classCourse, ClassCourse.class); + uw.setEntity(filter); + return classCourseMapper.update(classCourse, uw) > 0; } /** @@ -226,11 +240,10 @@ public class StudentClassServiceImpl extends BaseService imp */ @Override public ClassCourse getClassCourse(Long classId, Long courseId) { - Example e = new Example(ClassCourse.class); - e.createCriteria() - .andEqualTo("classId", classId) - .andEqualTo("courseId", courseId); - return classCourseMapper.selectOneByExample(e); + ClassCourse filter = new ClassCourse(); + filter.setClassId(classId); + filter.setCourseId(courseId); + return classCourseMapper.selectOne(new QueryWrapper<>(filter)); } /** @@ -246,7 +259,7 @@ public class StudentClassServiceImpl extends BaseService imp ClassCourse filter = new ClassCourse(); filter.setClassId(classId); filter.setCourseId(courseId); - return classCourseMapper.delete(filter) > 0; + return classCourseMapper.delete(new QueryWrapper<>(filter)) > 0; } /** @@ -260,8 +273,8 @@ public class StudentClassServiceImpl extends BaseService imp public void addClassStudentList(List classStudentList, Long classId) { for (ClassStudent classStudent : classStudentList) { classStudent.setClassId(classId); + classStudentMapper.insert(classStudent); } - classStudentMapper.insertList(classStudentList); } /** @@ -277,7 +290,7 @@ public class StudentClassServiceImpl extends BaseService imp ClassStudent filter = new ClassStudent(); filter.setClassId(classId); filter.setStudentId(studentId); - return classStudentMapper.delete(filter) > 0; + return classStudentMapper.delete(new QueryWrapper<>(filter)) > 0; } /** @@ -290,14 +303,39 @@ public class StudentClassServiceImpl extends BaseService imp @Override public CallResult verifyRelatedData(StudentClass studentClass, StudentClass originalStudentClass) { String errorMessageFormat = "数据验证失败,关联的%s并不存在,请刷新后重试!"; - if (this.needToVerify(studentClass, originalStudentClass, StudentClass::getSchoolId) - && !schoolInfoService.existId(studentClass.getSchoolId())) { - return CallResult.error(String.format(errorMessageFormat, "所属校区")); - } if (this.needToVerify(studentClass, originalStudentClass, StudentClass::getLeaderId) && !studentService.existId(studentClass.getLeaderId())) { return CallResult.error(String.format(errorMessageFormat, "班长")); } return CallResult.ok(); } + + /** + * 根据最新对象和原有对象的数据对比,判断关联的远程字典数据和多对一主表数据是否都是合法数据。 + * + * @param studentClass 最新数据对象。 + * @param originalStudentClass 原有数据对象。 + * @return 数据全部正确返回true,否则false,同时返回具体的错误信息。 + */ + @Override + public CallResult verifyRemoteRelatedData(StudentClass studentClass, StudentClass originalStudentClass) { + String errorMessageFormat = "数据验证失败,关联的%s并不存在,请刷新后重试!"; + if (this.needToVerify(studentClass, originalStudentClass, StudentClass::getSchoolId)) { + ResponseResult responseResult = + sysDeptClient.existId(studentClass.getSchoolId()); + if (this.hasErrorOfVerifyRemoteRelatedData(responseResult)) { + return CallResult.error(String.format(errorMessageFormat, "所属校区")); + } + } + return CallResult.ok(); + } + + private StudentClass buildDefaultValue(StudentClass studentClass) { + studentClass.setClassId(idGenerator.nextLongId()); + TokenData tokenData = TokenData.takeFromRequest(); + studentClass.setCreateUserId(tokenData.getUserId()); + studentClass.setCreateTime(new Date()); + studentClass.setStatus(GlobalDeletedFlag.NORMAL); + return studentClass; + } } diff --git a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/impl/StudentServiceImpl.java b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/impl/StudentServiceImpl.java index 1c6c1931..46c637a4 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/impl/StudentServiceImpl.java +++ b/orange-demo-multi/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/impl/StudentServiceImpl.java @@ -1,11 +1,16 @@ package com.orange.demo.courseclassservice.service.impl; +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.orange.demo.application.common.constant.StudentStatus; import com.orange.demo.courseclassservice.service.*; import com.orange.demo.courseclassservice.dao.*; import com.orange.demo.courseclassservice.model.*; +import com.orange.demo.upmsapi.client.*; import com.orange.demo.common.core.util.*; import com.orange.demo.common.core.object.MyRelationParam; +import com.orange.demo.common.core.object.ResponseResult; import com.orange.demo.common.core.object.CallResult; import com.orange.demo.common.core.base.dao.BaseDaoMapper; import com.orange.demo.common.core.base.service.BaseService; @@ -33,12 +38,12 @@ public class StudentServiceImpl extends BaseService implements St @Autowired private ClassStudentMapper classStudentMapper; @Autowired - private SchoolInfoService schoolInfoService; - @Autowired private AreaCodeService areaCodeService; @Autowired private GradeService gradeService; @Autowired + private SysDeptClient sysDeptClient; + @Autowired private IdGeneratorWrapper idGenerator; /** @@ -60,14 +65,24 @@ public class StudentServiceImpl extends BaseService implements St @Transactional(rollbackFor = Exception.class) @Override public Student saveNew(Student student) { - student.setStudentId(idGenerator.nextLongId()); - MyModelUtil.setDefaultValue(student, "totalCoin", 0); - MyModelUtil.setDefaultValue(student, "leftCoin", 0); - MyModelUtil.setDefaultValue(student, "status", StudentStatus.NORMAL); - studentMapper.insert(student); + studentMapper.insert(this.buildDefaultValue(student)); return student; } + /** + * 利用数据库的insertList语法,批量插入对象列表。 + * + * @param studentList 新增对象列表。 + */ + @Transactional(rollbackFor = Exception.class) + @Override + public void saveNewBatch(List studentList) { + if (CollUtil.isNotEmpty(studentList)) { + studentList.forEach(this::buildDefaultValue); + studentMapper.insertList(studentList); + } + } + /** * 更新数据对象。 * @@ -79,7 +94,8 @@ public class StudentServiceImpl extends BaseService implements St @Override public boolean update(Student student, Student originalStudent) { // 这里重点提示,在执行主表数据更新之前,如果有哪些字段不支持修改操作,请用原有数据对象字段替换当前数据字段。 - return studentMapper.updateByPrimaryKey(student) == 1; + UpdateWrapper uw = this.createUpdateQueryForNullValue(student, student.getStudentId()); + return studentMapper.update(student, uw) == 1; } /** @@ -91,14 +107,13 @@ public class StudentServiceImpl extends BaseService implements St @Transactional(rollbackFor = Exception.class) @Override public boolean remove(Long studentId) { - // 这里先删除主数据 - if (!this.removeById(studentId)) { + if (studentMapper.deleteById(studentId) == 0) { return false; } // 开始删除与本地多对多父表的关联 ClassStudent classStudent = new ClassStudent(); classStudent.setStudentId(studentId); - classStudentMapper.delete(classStudent); + classStudentMapper.delete(new QueryWrapper<>(classStudent)); return true; } @@ -234,10 +249,34 @@ public class StudentServiceImpl extends BaseService implements St && !gradeService.existId(student.getGradeId())) { return CallResult.error(String.format(errorMessageFormat, "年级")); } - if (this.needToVerify(student, originalStudent, Student::getSchoolId) - && !schoolInfoService.existId(student.getSchoolId())) { - return CallResult.error(String.format(errorMessageFormat, "所属校区")); + return CallResult.ok(); + } + + /** + * 根据最新对象和原有对象的数据对比,判断关联的远程字典数据和多对一主表数据是否都是合法数据。 + * + * @param student 最新数据对象。 + * @param originalStudent 原有数据对象。 + * @return 数据全部正确返回true,否则false,同时返回具体的错误信息。 + */ + @Override + public CallResult verifyRemoteRelatedData(Student student, Student originalStudent) { + String errorMessageFormat = "数据验证失败,关联的%s并不存在,请刷新后重试!"; + if (this.needToVerify(student, originalStudent, Student::getSchoolId)) { + ResponseResult responseResult = + sysDeptClient.existId(student.getSchoolId()); + if (this.hasErrorOfVerifyRemoteRelatedData(responseResult)) { + return CallResult.error(String.format(errorMessageFormat, "所属校区")); + } } return CallResult.ok(); } + + private Student buildDefaultValue(Student student) { + student.setStudentId(idGenerator.nextLongId()); + MyModelUtil.setDefaultValue(student, "totalCoin", 0); + MyModelUtil.setDefaultValue(student, "leftCoin", 0); + MyModelUtil.setDefaultValue(student, "status", StudentStatus.NORMAL); + return student; + } } diff --git a/orange-demo-multi/orange-demo-multi-service/application/gateway/gateway.iml b/orange-demo-multi/orange-demo-multi-service/application/gateway/gateway.iml index 3c78d199..c9a58174 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/gateway/gateway.iml +++ b/orange-demo-multi/orange-demo-multi-service/application/gateway/gateway.iml @@ -110,23 +110,21 @@ - + + + + + + - - - - - - - - - + + @@ -180,7 +178,6 @@ - diff --git a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-api/pom.xml b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-api/pom.xml index 5c2963d7..ab53dd81 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-api/pom.xml +++ b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-api/pom.xml @@ -26,6 +26,11 @@ common-core 1.0.0 + + com.orange.demo + common-datafilter + 1.0.0 + com.orange.demo diff --git a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-api/src/main/java/com/orange/demo/statsapi/vo/CourseTransStatsVo.java b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-api/src/main/java/com/orange/demo/statsapi/vo/CourseTransStatsVo.java index 27f1651c..e0977c11 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-api/src/main/java/com/orange/demo/statsapi/vo/CourseTransStatsVo.java +++ b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-api/src/main/java/com/orange/demo/statsapi/vo/CourseTransStatsVo.java @@ -8,12 +8,12 @@ import java.util.Date; import java.util.Map; /** - * CourseTransStatsVO对象。 + * CourseTransStatsVO视图对象。 * * @author Jerry * @date 2020-08-08 */ -@ApiModel("CourseTransStatsVO实体对象") +@ApiModel("CourseTransStatsVO视图对象") @Data public class CourseTransStatsVo { diff --git a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-api/src/main/java/com/orange/demo/statsapi/vo/StudentActionStatsVo.java b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-api/src/main/java/com/orange/demo/statsapi/vo/StudentActionStatsVo.java index 92fc60bc..4ff0f313 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-api/src/main/java/com/orange/demo/statsapi/vo/StudentActionStatsVo.java +++ b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-api/src/main/java/com/orange/demo/statsapi/vo/StudentActionStatsVo.java @@ -8,12 +8,12 @@ import java.util.Date; import java.util.Map; /** - * StudentActionStatsVO对象。 + * StudentActionStatsVO视图对象。 * * @author Jerry * @date 2020-08-08 */ -@ApiModel("StudentActionStatsVO实体对象") +@ApiModel("StudentActionStatsVO视图对象") @Data public class StudentActionStatsVo { diff --git a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-api/src/main/java/com/orange/demo/statsapi/vo/StudentActionTransVo.java b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-api/src/main/java/com/orange/demo/statsapi/vo/StudentActionTransVo.java index 7505a312..e0151cc6 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-api/src/main/java/com/orange/demo/statsapi/vo/StudentActionTransVo.java +++ b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-api/src/main/java/com/orange/demo/statsapi/vo/StudentActionTransVo.java @@ -8,12 +8,12 @@ import java.util.Date; import java.util.Map; /** - * StudentActionTransVO对象。 + * StudentActionTransVO视图对象。 * * @author Jerry * @date 2020-08-08 */ -@ApiModel("StudentActionTransVO实体对象") +@ApiModel("StudentActionTransVO视图对象") @Data public class StudentActionTransVo { diff --git a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-api/stats-api.iml b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-api/stats-api.iml index b9227508..5354a987 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-api/stats-api.iml +++ b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-api/stats-api.iml @@ -65,26 +65,40 @@ - + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + @@ -151,11 +165,7 @@ - - - - @@ -218,7 +228,7 @@ - + diff --git a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/pom.xml b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/pom.xml index 16e1255d..85c30256 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/pom.xml +++ b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/pom.xml @@ -25,6 +25,11 @@ course-class-api 1.0.0 + + com.orange.demo + upms-api + 1.0.0 + com.orange.demo common-log diff --git a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/config/DataSourceConfig.java b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/config/DataSourceConfig.java index 732c3025..a4853d5d 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/config/DataSourceConfig.java +++ b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/config/DataSourceConfig.java @@ -6,7 +6,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.transaction.annotation.EnableTransactionManagement; -import tk.mybatis.spring.annotation.MapperScan; +import org.mybatis.spring.annotation.MapperScan; import javax.sql.DataSource; diff --git a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/controller/CourseTransStatsController.java b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/controller/CourseTransStatsController.java index 8c32b251..bb7da24c 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/controller/CourseTransStatsController.java +++ b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/controller/CourseTransStatsController.java @@ -104,8 +104,7 @@ public class CourseTransStatsController extends BaseController add(@MyRequestBody StudentActionTransDto studentActionTransDto) { - String errorMessage = MyCommonUtil.getModelValidationError(studentActionTransDto); + String errorMessage = MyCommonUtil.getModelValidationError(studentActionTransDto, false); if (errorMessage != null) { return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); } @@ -77,9 +78,10 @@ public class StudentActionTransController extends BaseController update(@MyRequestBody StudentActionTransDto studentActionTransDto) { - String errorMessage = MyCommonUtil.getModelValidationError(studentActionTransDto, Default.class, UpdateGroup.class); + String errorMessage = MyCommonUtil.getModelValidationError(studentActionTransDto, true); if (errorMessage != null) { return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); } @@ -108,6 +110,7 @@ public class StudentActionTransController extends BaseController delete(@MyRequestBody Long transId) { String errorMessage; @@ -162,8 +165,7 @@ public class StudentActionTransController extends BaseController { + /** + * 批量插入对象列表。 + * + * @param courseTransStatsList 新增对象列表。 + */ + void insertList(List courseTransStatsList); + /** * 获取分组计算后的数据对象列表。 * diff --git a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/GradeMapper.java b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/GradeMapper.java index 6341d614..5114cd02 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/GradeMapper.java +++ b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/GradeMapper.java @@ -3,6 +3,8 @@ package com.orange.demo.statsservice.dao; import com.orange.demo.common.core.base.dao.BaseDaoMapper; import com.orange.demo.statsservice.model.Grade; +import java.util.*; + /** * 数据操作访问接口。 * @@ -10,4 +12,11 @@ import com.orange.demo.statsservice.model.Grade; * @date 2020-08-08 */ public interface GradeMapper extends BaseDaoMapper { + + /** + * 批量插入对象列表。 + * + * @param gradeList 新增对象列表。 + */ + void insertList(List gradeList); } diff --git a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/SchoolInfoMapper.java b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/SchoolInfoMapper.java deleted file mode 100644 index 1f1d5a36..00000000 --- a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/SchoolInfoMapper.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.orange.demo.statsservice.dao; - -import com.orange.demo.common.core.base.dao.BaseDaoMapper; -import com.orange.demo.statsservice.model.SchoolInfo; - -/** - * 数据操作访问接口。 - * - * @author Jerry - * @date 2020-08-08 - */ -public interface SchoolInfoMapper extends BaseDaoMapper { -} diff --git a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/StudentActionStatsMapper.java b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/StudentActionStatsMapper.java index 60ec7815..788cf03a 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/StudentActionStatsMapper.java +++ b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/StudentActionStatsMapper.java @@ -14,6 +14,13 @@ import java.util.*; */ public interface StudentActionStatsMapper extends BaseDaoMapper { + /** + * 批量插入对象列表。 + * + * @param studentActionStatsList 新增对象列表。 + */ + void insertList(List studentActionStatsList); + /** * 获取分组计算后的数据对象列表。 * diff --git a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/StudentActionTransMapper.java b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/StudentActionTransMapper.java index 1a561815..a93893aa 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/StudentActionTransMapper.java +++ b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/StudentActionTransMapper.java @@ -14,6 +14,13 @@ import java.util.*; */ public interface StudentActionTransMapper extends BaseDaoMapper { + /** + * 批量插入对象列表。 + * + * @param studentActionTransList 新增对象列表。 + */ + void insertList(List studentActionTransList); + /** * 获取过滤后的对象列表。 * diff --git a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/mapper/CourseTransStatsMapper.xml b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/mapper/CourseTransStatsMapper.xml index 06ecb037..511de312 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/mapper/CourseTransStatsMapper.xml +++ b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/mapper/CourseTransStatsMapper.xml @@ -14,6 +14,33 @@ + + INSERT INTO zz_course_trans_stats + (stats_id, + stats_date, + subject_id, + grade_id, + grade_name, + course_id, + course_name, + student_attend_count, + student_flower_amount, + student_flower_count) + VALUES + + (#{item.statsId}, + #{item.statsDate}, + #{item.subjectId}, + #{item.gradeId}, + #{item.gradeName}, + #{item.courseId}, + #{item.courseName}, + #{item.studentAttendCount}, + #{item.studentFlowerAmount}, + #{item.studentFlowerCount}) + + + diff --git a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/mapper/GradeMapper.xml b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/mapper/GradeMapper.xml index d08aaae7..2480e156 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/mapper/GradeMapper.xml +++ b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/mapper/GradeMapper.xml @@ -6,4 +6,17 @@ + + + INSERT INTO zz_grade + (grade_id, + grade_name, + status) + VALUES + + (#{item.gradeId}, + #{item.gradeName}, + #{item.status}) + + diff --git a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/mapper/SchoolInfoMapper.xml b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/mapper/SchoolInfoMapper.xml deleted file mode 100644 index 50238878..00000000 --- a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/mapper/SchoolInfoMapper.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/mapper/StudentActionStatsMapper.xml b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/mapper/StudentActionStatsMapper.xml index 06638d8e..65477767 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/mapper/StudentActionStatsMapper.xml +++ b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/mapper/StudentActionStatsMapper.xml @@ -25,6 +25,55 @@ + + INSERT INTO zz_student_action_stats + (stats_id, + stats_date, + stats_month, + grade_id, + province_id, + city_id, + buy_course_amount, + buy_course_count, + buy_video_amount, + buy_video_count, + buy_paper_amount, + buy_paper_count, + buy_flower_amount, + buy_flower_count, + recharge_coin_amount, + recharge_coin_count, + do_course_count, + watch_video_count, + watch_video_total_second, + do_exercise_count, + do_exercise_correct_count) + VALUES + + (#{item.statsId}, + #{item.statsDate}, + #{item.statsMonth}, + #{item.gradeId}, + #{item.provinceId}, + #{item.cityId}, + #{item.buyCourseAmount}, + #{item.buyCourseCount}, + #{item.buyVideoAmount}, + #{item.buyVideoCount}, + #{item.buyPaperAmount}, + #{item.buyPaperCount}, + #{item.buyFlowerAmount}, + #{item.buyFlowerCount}, + #{item.rechargeCoinAmount}, + #{item.rechargeCoinCount}, + #{item.doCourseCount}, + #{item.watchVideoCount}, + #{item.watchVideoTotalSecond}, + #{item.doExerciseCount}, + #{item.doExerciseCorrectCount}) + + + diff --git a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/mapper/StudentActionTransMapper.xml b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/mapper/StudentActionTransMapper.xml index f40453ca..e8262e88 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/mapper/StudentActionTransMapper.xml +++ b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/mapper/StudentActionTransMapper.xml @@ -19,6 +19,43 @@ + + INSERT INTO zz_student_action_trans + (trans_id, + student_id, + student_name, + school_id, + grade_id, + action_type, + device_type, + watch_video_seconds, + flower_count, + paper_count, + video_count, + course_count, + coin_count, + exercise_correct_flag, + create_time) + VALUES + + (#{item.transId}, + #{item.studentId}, + #{item.studentName}, + #{item.schoolId}, + #{item.gradeId}, + #{item.actionType}, + #{item.deviceType}, + #{item.watchVideoSeconds}, + #{item.flowerCount}, + #{item.paperCount}, + #{item.videoCount}, + #{item.courseCount}, + #{item.coinCount}, + #{item.exerciseCorrectFlag}, + #{item.createTime}) + + + diff --git a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/CourseTransStats.java b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/CourseTransStats.java index 295f2fb3..d2a2e0e9 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/CourseTransStats.java +++ b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/CourseTransStats.java @@ -1,5 +1,6 @@ package com.orange.demo.statsservice.model; +import com.baomidou.mybatisplus.annotation.*; import com.orange.demo.statsapi.vo.CourseTransStatsVo; import com.orange.demo.courseclassapi.vo.CourseVo; import com.orange.demo.courseclassapi.client.CourseClient; @@ -12,7 +13,6 @@ import com.orange.demo.common.core.base.mapper.BaseModelMapper; import lombok.Data; import org.mapstruct.*; import org.mapstruct.factory.Mappers; -import javax.persistence.*; import java.util.Date; import java.util.Map; @@ -24,81 +24,79 @@ import java.util.Map; * @date 2020-08-08 */ @Data -@Table(name = "zz_course_trans_stats") +@TableName(value = "zz_course_trans_stats") public class CourseTransStats { /** * 主键Id。 */ - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "stats_id") + @TableId(value = "stats_id", type = IdType.AUTO) private Long statsId; /** * 统计日期。 */ - @Column(name = "stats_date") + @TableField(value = "stats_date") private Date statsDate; /** * 科目Id。 */ - @Column(name = "subject_id") + @TableField(value = "subject_id") private Integer subjectId; /** * 年级Id。 */ - @Column(name = "grade_id") + @TableField(value = "grade_id") private Integer gradeId; /** * 年级名称。 */ - @Column(name = "grade_name") + @TableField(value = "grade_name") private String gradeName; /** * 课程Id。 */ - @Column(name = "course_id") + @TableField(value = "course_id") private Long courseId; /** * 课程名称。 */ - @Column(name = "course_name") + @TableField(value = "course_name") private String courseName; /** * 学生上课次数。 */ - @Column(name = "student_attend_count") + @TableField(value = "student_attend_count") private Integer studentAttendCount; /** * 学生献花数量。 */ - @Column(name = "student_flower_amount") + @TableField(value = "student_flower_amount") private Integer studentFlowerAmount; /** * 学生献花次数。 */ - @Column(name = "student_flower_count") + @TableField(value = "student_flower_count") private Integer studentFlowerCount; /** * statsDate 范围过滤起始值(>=)。 */ - @Transient + @TableField(exist = false) private String statsDateStart; /** * statsDate 范围过滤结束值(<=)。 */ - @Transient + @TableField(exist = false) private String statsDateEnd; @RelationDict( @@ -107,7 +105,7 @@ public class CourseTransStats { slaveModelClass = GradeVo.class, slaveIdField = "gradeId", slaveNameField = "gradeName") - @Transient + @TableField(exist = false) private Map gradeIdDictMap; @RelationDict( @@ -116,13 +114,13 @@ public class CourseTransStats { slaveModelClass = CourseVo.class, slaveIdField = "courseId", slaveNameField = "courseName") - @Transient + @TableField(exist = false) private Map courseIdDictMap; @RelationConstDict( masterIdField = "subjectId", constantDictClass = Subject.class) - @Transient + @TableField(exist = false) private Map subjectIdDictMap; @Mapper diff --git a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/Grade.java b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/Grade.java index 8b0083b0..08568fb9 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/Grade.java +++ b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/Grade.java @@ -1,8 +1,7 @@ package com.orange.demo.statsservice.model; -import com.orange.demo.common.core.annotation.DeletedFlagColumn; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; -import javax.persistence.*; /** * Grade实体对象。 @@ -11,26 +10,24 @@ import javax.persistence.*; * @date 2020-08-08 */ @Data -@Table(name = "zz_grade") +@TableName(value = "zz_grade") public class Grade { /** * 主键Id。 */ - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "grade_id") + @TableId(value = "grade_id", type = IdType.AUTO) private Integer gradeId; /** * 年级名称。 */ - @Column(name = "grade_name") + @TableField(value = "grade_name") private String gradeName; /** * 逻辑删除标记字段(1: 正常 -1: 已删除)。 */ - @DeletedFlagColumn + @TableLogic private Integer status; } diff --git a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/SchoolInfo.java b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/SchoolInfo.java deleted file mode 100644 index b9121404..00000000 --- a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/SchoolInfo.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.orange.demo.statsservice.model; - -import lombok.Data; -import javax.persistence.*; - -/** - * SchoolInfo实体对象。 - * - * @author Jerry - * @date 2020-08-08 - */ -@Data -@Table(name = "zz_school_info") -public class SchoolInfo { - - /** - * 学校Id。 - */ - @Id - @Column(name = "school_id") - private Long schoolId; - - /** - * 学校名称。 - */ - @Column(name = "school_name") - private String schoolName; - - /** - * 所在省Id。 - */ - @Column(name = "province_id") - private Long provinceId; - - /** - * 所在城市Id。 - */ - @Column(name = "city_id") - private Long cityId; -} diff --git a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/StudentActionStats.java b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/StudentActionStats.java index 495f630a..a9b71999 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/StudentActionStats.java +++ b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/StudentActionStats.java @@ -1,5 +1,6 @@ package com.orange.demo.statsservice.model; +import com.baomidou.mybatisplus.annotation.*; import com.orange.demo.statsapi.vo.StudentActionStatsVo; import com.orange.demo.courseclassapi.vo.AreaCodeVo; import com.orange.demo.courseclassapi.vo.GradeVo; @@ -10,7 +11,6 @@ import com.orange.demo.common.core.base.mapper.BaseModelMapper; import lombok.Data; import org.mapstruct.*; import org.mapstruct.factory.Mappers; -import javax.persistence.*; import java.util.Date; import java.util.Map; @@ -22,146 +22,145 @@ import java.util.Map; * @date 2020-08-08 */ @Data -@Table(name = "zz_student_action_stats") +@TableName(value = "zz_student_action_stats") public class StudentActionStats { /** * 主键Id。 */ - @Id - @Column(name = "stats_id") + @TableId(value = "stats_id") private Long statsId; /** * 统计日期。 */ - @Column(name = "stats_date") + @TableField(value = "stats_date") private Date statsDate; /** * 统计小时。 */ - @Column(name = "stats_month") + @TableField(value = "stats_month") private Date statsMonth; /** * 年级Id。 */ - @Column(name = "grade_id") + @TableField(value = "grade_id") private Integer gradeId; /** * 学生所在省Id。 */ - @Column(name = "province_id") + @TableField(value = "province_id") private Long provinceId; /** * 学生所在城市Id。 */ - @Column(name = "city_id") + @TableField(value = "city_id") private Long cityId; /** * 购课学币数量。 */ - @Column(name = "buy_course_amount") + @TableField(value = "buy_course_amount") private Integer buyCourseAmount; /** * 购买课程次数。 */ - @Column(name = "buy_course_count") + @TableField(value = "buy_course_count") private Integer buyCourseCount; /** * 购买视频学币数量。 */ - @Column(name = "buy_video_amount") + @TableField(value = "buy_video_amount") private Integer buyVideoAmount; /** * 购买视频次数。 */ - @Column(name = "buy_video_count") + @TableField(value = "buy_video_count") private Integer buyVideoCount; /** * 购买作业学币数量。 */ - @Column(name = "buy_paper_amount") + @TableField(value = "buy_paper_amount") private Integer buyPaperAmount; /** * 购买作业次数。 */ - @Column(name = "buy_paper_count") + @TableField(value = "buy_paper_count") private Integer buyPaperCount; /** * 购买献花数量。 */ - @Column(name = "buy_flower_amount") + @TableField(value = "buy_flower_amount") private Integer buyFlowerAmount; /** * 购买献花次数。 */ - @Column(name = "buy_flower_count") + @TableField(value = "buy_flower_count") private Integer buyFlowerCount; /** * 充值学币数量。 */ - @Column(name = "recharge_coin_amount") + @TableField(value = "recharge_coin_amount") private Integer rechargeCoinAmount; /** * 充值学币次数。 */ - @Column(name = "recharge_coin_count") + @TableField(value = "recharge_coin_count") private Integer rechargeCoinCount; /** * 线下课程上课次数。 */ - @Column(name = "do_course_count") + @TableField(value = "do_course_count") private Integer doCourseCount; /** * 观看视频次数。 */ - @Column(name = "watch_video_count") + @TableField(value = "watch_video_count") private Integer watchVideoCount; /** * 购买献花消费学币数量。 */ - @Column(name = "watch_video_total_second") + @TableField(value = "watch_video_total_second") private Integer watchVideoTotalSecond; /** * 做题数量。 */ - @Column(name = "do_exercise_count") + @TableField(value = "do_exercise_count") private Integer doExerciseCount; /** * 做题正确的数量。 */ - @Column(name = "do_exercise_correct_count") + @TableField(value = "do_exercise_correct_count") private Integer doExerciseCorrectCount; /** * statsDate 范围过滤起始值(>=)。 */ - @Transient + @TableField(exist = false) private String statsDateStart; /** * statsDate 范围过滤结束值(<=)。 */ - @Transient + @TableField(exist = false) private String statsDateEnd; @RelationDict( @@ -170,7 +169,7 @@ public class StudentActionStats { slaveModelClass = GradeVo.class, slaveIdField = "gradeId", slaveNameField = "gradeName") - @Transient + @TableField(exist = false) private Map gradeIdDictMap; @RelationDict( @@ -179,7 +178,7 @@ public class StudentActionStats { slaveModelClass = AreaCodeVo.class, slaveIdField = "areaId", slaveNameField = "areaName") - @Transient + @TableField(exist = false) private Map provinceIdDictMap; @RelationDict( @@ -188,7 +187,7 @@ public class StudentActionStats { slaveModelClass = AreaCodeVo.class, slaveIdField = "areaId", slaveNameField = "areaName") - @Transient + @TableField(exist = false) private Map cityIdDictMap; @Mapper diff --git a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/StudentActionTrans.java b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/StudentActionTrans.java index b7e24f52..cfb7098f 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/StudentActionTrans.java +++ b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/StudentActionTrans.java @@ -1,8 +1,9 @@ package com.orange.demo.statsservice.model; +import com.baomidou.mybatisplus.annotation.*; import com.orange.demo.statsapi.vo.StudentActionTransVo; -import com.orange.demo.courseclassapi.client.SchoolInfoClient; -import com.orange.demo.courseclassapi.vo.SchoolInfoVo; +import com.orange.demo.upmsapi.client.SysDeptClient; +import com.orange.demo.upmsapi.vo.SysDeptVo; import com.orange.demo.courseclassapi.vo.GradeVo; import com.orange.demo.courseclassapi.client.GradeClient; import com.orange.demo.application.common.constant.StudentActionType; @@ -13,7 +14,6 @@ import com.orange.demo.common.core.base.mapper.BaseModelMapper; import lombok.Data; import org.mapstruct.*; import org.mapstruct.factory.Mappers; -import javax.persistence.*; import java.util.Date; import java.util.Map; @@ -25,119 +25,118 @@ import java.util.Map; * @date 2020-08-08 */ @Data -@Table(name = "zz_student_action_trans") +@TableName(value = "zz_student_action_trans") public class StudentActionTrans { /** * 主键Id。 */ - @Id - @Column(name = "trans_id") + @TableId(value = "trans_id") private Long transId; /** * 学生Id。 */ - @Column(name = "student_id") + @TableField(value = "student_id") private Long studentId; /** * 学生名称。 */ - @Column(name = "student_name") + @TableField(value = "student_name") private String studentName; /** * 学生校区。 */ - @Column(name = "school_id") + @TableField(value = "school_id") private Long schoolId; /** * 年级Id。 */ - @Column(name = "grade_id") + @TableField(value = "grade_id") private Integer gradeId; /** * 行为类型(0: 充值 1: 购课 2: 上课签到 3: 上课签退 4: 看视频课 5: 做作业 6: 刷题 7: 献花)。 */ - @Column(name = "action_type") + @TableField(value = "action_type") private Integer actionType; /** * 设备类型(0: iOS 1: Android 2: PC)。 */ - @Column(name = "device_type") + @TableField(value = "device_type") private Integer deviceType; /** * 看视频秒数。 */ - @Column(name = "watch_video_seconds") + @TableField(value = "watch_video_seconds") private Integer watchVideoSeconds; /** * 购买献花数量。 */ - @Column(name = "flower_count") + @TableField(value = "flower_count") private Integer flowerCount; /** * 购买作业数量。 */ - @Column(name = "paper_count") + @TableField(value = "paper_count") private Integer paperCount; /** * 购买视频数量。 */ - @Column(name = "video_count") + @TableField(value = "video_count") private Integer videoCount; /** * 购买课程数量。 */ - @Column(name = "course_count") + @TableField(value = "course_count") private Integer courseCount; /** * 充值学币数量。 */ - @Column(name = "coin_count") + @TableField(value = "coin_count") private Integer coinCount; /** * 做题是否正确标记。 */ - @Column(name = "exercise_correct_flag") + @TableField(value = "exercise_correct_flag") private Integer exerciseCorrectFlag; /** * 发生时间。 */ - @Column(name = "create_time") + @TableField(value = "create_time") private Date createTime; /** * createTime 范围过滤起始值(>=)。 */ - @Transient + @TableField(exist = false) private String createTimeStart; /** * createTime 范围过滤结束值(<=)。 */ - @Transient + @TableField(exist = false) private String createTimeEnd; @RelationDict( masterIdField = "schoolId", - slaveClientClass = SchoolInfoClient.class, - slaveModelClass = SchoolInfoVo.class, - slaveIdField = "schoolId", - slaveNameField = "schoolName") - @Transient + slaveClientClass = SysDeptClient.class, + slaveModelClass = SysDeptVo.class, + slaveIdField = "deptId", + slaveNameField = "deptName") + @TableField(exist = false) private Map schoolIdDictMap; @RelationDict( @@ -146,19 +145,19 @@ public class StudentActionTrans { slaveModelClass = GradeVo.class, slaveIdField = "gradeId", slaveNameField = "gradeName") - @Transient + @TableField(exist = false) private Map gradeIdDictMap; @RelationConstDict( masterIdField = "actionType", constantDictClass = StudentActionType.class) - @Transient + @TableField(exist = false) private Map actionTypeDictMap; @RelationConstDict( masterIdField = "deviceType", constantDictClass = DeviceType.class) - @Transient + @TableField(exist = false) private Map deviceTypeDictMap; @Mapper diff --git a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/service/StudentActionTransService.java b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/service/StudentActionTransService.java index e509a597..e5bb219d 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/service/StudentActionTransService.java +++ b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/service/StudentActionTransService.java @@ -22,6 +22,13 @@ public interface StudentActionTransService extends IBaseService studentActionTransList); + /** * 更新数据对象。 * diff --git a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/service/impl/StudentActionTransServiceImpl.java b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/service/impl/StudentActionTransServiceImpl.java index 13b86d6a..73ebf4b6 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/service/impl/StudentActionTransServiceImpl.java +++ b/orange-demo-multi/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/service/impl/StudentActionTransServiceImpl.java @@ -1,8 +1,11 @@ package com.orange.demo.statsservice.service.impl; +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.orange.demo.statsservice.service.*; import com.orange.demo.statsservice.dao.*; import com.orange.demo.statsservice.model.*; +import com.orange.demo.upmsapi.client.*; import com.orange.demo.courseclassapi.client.*; import com.orange.demo.common.core.util.*; import com.orange.demo.common.core.object.MyRelationParam; @@ -32,7 +35,7 @@ public class StudentActionTransServiceImpl extends BaseService studentActionTransList) { + if (CollUtil.isNotEmpty(studentActionTransList)) { + studentActionTransList.forEach(this::buildDefaultValue); + studentActionTransMapper.insertList(studentActionTransList); + } + } + /** * 更新数据对象。 * @@ -75,7 +90,8 @@ public class StudentActionTransServiceImpl extends BaseService uw = this.createUpdateQueryForNullValue(studentActionTrans, studentActionTrans.getTransId()); + return studentActionTransMapper.update(studentActionTrans, uw) == 1; } /** @@ -87,8 +103,7 @@ public class StudentActionTransServiceImpl extends BaseService responseResult = - schoolInfoClient.existId(studentActionTrans.getSchoolId()); + sysDeptClient.existId(studentActionTrans.getSchoolId()); if (this.hasErrorOfVerifyRemoteRelatedData(responseResult)) { return CallResult.error(String.format(errorMessageFormat, "学生校区")); } @@ -191,4 +206,10 @@ public class StudentActionTransServiceImpl extends BaseService - + + + + + - - - - - - - - - - + + + @@ -103,7 +100,12 @@ - + + + + + + diff --git a/orange-demo-multi/orange-demo-multi-service/application/upms/upms-api/pom.xml b/orange-demo-multi/orange-demo-multi-service/application/upms/upms-api/pom.xml index e5983050..d5a6424d 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/upms/upms-api/pom.xml +++ b/orange-demo-multi/orange-demo-multi-service/application/upms/upms-api/pom.xml @@ -19,6 +19,11 @@ common-core 1.0.0 + + com.orange.demo + common-datafilter + 1.0.0 + com.orange.demo diff --git a/orange-demo-multi/orange-demo-multi-service/application/upms/upms-api/src/main/java/com/orange/demo/upmsapi/dto/SysUserDto.java b/orange-demo-multi/orange-demo-multi-service/application/upms/upms-api/src/main/java/com/orange/demo/upmsapi/dto/SysUserDto.java index 5724488e..ae2002ef 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/upms/upms-api/src/main/java/com/orange/demo/upmsapi/dto/SysUserDto.java +++ b/orange-demo-multi/orange-demo-multi-service/application/upms/upms-api/src/main/java/com/orange/demo/upmsapi/dto/SysUserDto.java @@ -50,6 +50,13 @@ public class SysUserDto { @NotBlank(message = "数据验证失败,用户显示名称不能为空!") private String showName; + /** + * 用户部门Id。 + */ + @ApiModelProperty(value = "用户部门Id", required = true) + @NotNull(message = "数据验证失败,用户部门Id不能为空!") + private Long deptId; + /** * 用户类型(0: 管理员 1: 系统管理用户 2: 系统业务用户)。 */ diff --git a/orange-demo-multi/orange-demo-multi-service/application/upms/upms-api/src/main/java/com/orange/demo/upmsapi/vo/SysUserVo.java b/orange-demo-multi/orange-demo-multi-service/application/upms/upms-api/src/main/java/com/orange/demo/upmsapi/vo/SysUserVo.java index a8edc658..22bd1fb7 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/upms/upms-api/src/main/java/com/orange/demo/upmsapi/vo/SysUserVo.java +++ b/orange-demo-multi/orange-demo-multi-service/application/upms/upms-api/src/main/java/com/orange/demo/upmsapi/vo/SysUserVo.java @@ -9,12 +9,12 @@ import java.util.Map; import java.util.List; /** - * SysUserVO对象。 + * SysUserVO视图对象。 * * @author Jerry * @date 2020-08-08 */ -@ApiModel("SysUserVO实体对象") +@ApiModel("SysUserVO视图对象") @Data public class SysUserVo { @@ -36,6 +36,12 @@ public class SysUserVo { @ApiModelProperty(value = "用户显示名称") private String showName; + /** + * 用户部门Id。 + */ + @ApiModelProperty(value = "用户部门Id") + private Long deptId; + /** * 用户类型(0: 管理员 1: 系统管理用户 2: 系统业务用户)。 */ @@ -84,6 +90,18 @@ public class SysUserVo { @ApiModelProperty(value = "多对多用户角色数据集合") private List> sysUserRoleList; + /** + * 多对多用户数据权限数据集合。 + */ + @ApiModelProperty(value = "多对多用户数据权限数据集合") + private List> sysDataPermUserList; + + /** + * deptId 字典关联数据。 + */ + @ApiModelProperty(value = "deptId 字典关联数据") + private Map deptIdDictMap; + /** * userType 常量字典关联数据。 */ diff --git a/orange-demo-multi/orange-demo-multi-service/application/upms/upms-api/upms-api.iml b/orange-demo-multi/orange-demo-multi-service/application/upms/upms-api/upms-api.iml index d15955ea..cbb4ba05 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/upms/upms-api/upms-api.iml +++ b/orange-demo-multi/orange-demo-multi-service/application/upms/upms-api/upms-api.iml @@ -64,26 +64,40 @@ - + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + @@ -151,11 +165,7 @@ - - - - @@ -218,7 +228,7 @@ - + diff --git a/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/UpmsApplication.java b/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/UpmsApplication.java index ab303e09..ac36ee56 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/UpmsApplication.java +++ b/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/UpmsApplication.java @@ -1,6 +1,8 @@ package com.orange.demo.upmsservice; import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.cloud.client.SpringCloudApplication; import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.context.annotation.ComponentScan; @@ -11,6 +13,7 @@ import org.springframework.context.annotation.ComponentScan; * @author Jerry * @date 2020-08-08 */ +@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class}) @SpringCloudApplication @EnableFeignClients(basePackages = "com.orange.demo") @ComponentScan("com.orange.demo") diff --git a/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/config/ApplicationConfig.java b/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/config/ApplicationConfig.java index f0188318..25322a00 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/config/ApplicationConfig.java +++ b/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/config/ApplicationConfig.java @@ -34,4 +34,8 @@ public class ApplicationConfig { * 通常在调试和测试阶段设置为false,以便及时发现问题。 */ private Boolean ignoreRpcError; + /** + * Session的数据权限缓存时长(单位:秒)。 + */ + private Integer dataPermExpiredSeconds; } diff --git a/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/config/DataSourceConfig.java b/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/config/DataSourceConfig.java deleted file mode 100644 index a9fa481c..00000000 --- a/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/config/DataSourceConfig.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.orange.demo.upmsservice.config; - -import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Primary; -import org.springframework.transaction.annotation.EnableTransactionManagement; -import tk.mybatis.spring.annotation.MapperScan; - -import javax.sql.DataSource; - -/** - * 数据源配置Bean对象。 - * - * @author Jerry - * @date 2020-08-08 - */ -@Configuration -@EnableTransactionManagement -@MapperScan(value = {"com.orange.demo.*.dao", "com.orange.demo.common.*.dao"}) -public class DataSourceConfig { - - @Bean(initMethod = "init", destroyMethod = "close") - @Primary - @ConfigurationProperties(prefix = "spring.datasource.druid") - public DataSource druidDataSource() { - return DruidDataSourceBuilder.create().build(); - } -} diff --git a/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/LoginController.java b/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/LoginController.java index 5b260e9a..6d6b1590 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/LoginController.java +++ b/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/LoginController.java @@ -12,10 +12,13 @@ import com.orange.demo.common.core.constant.ApplicationConstant; import com.orange.demo.common.core.object.*; import com.orange.demo.common.core.util.*; import com.orange.demo.common.redis.cache.SessionCacheHelper; +import com.orange.demo.common.log.annotation.OperationLog; +import com.orange.demo.common.log.model.constant.SysOperationLogType; import com.orange.demo.upmsapi.constant.SysUserStatus; import com.orange.demo.upmsapi.constant.SysUserType; import com.orange.demo.upmsservice.model.*; import com.orange.demo.upmsservice.service.*; +import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.web.bind.annotation.*; @@ -46,8 +49,12 @@ public class LoginController { @Autowired private SysMenuService sysMenuService; @Autowired + private SysDataPermService sysDataPermService; + @Autowired private SysPermWhitelistService sysPermWhitelistService; @Autowired + private RedissonClient redissonClient; + @Autowired private SessionCacheHelper cacheHelper; @Autowired private PasswordEncoder passwordEncoder; @@ -65,6 +72,7 @@ public class LoginController { @ApiImplicitParam(name = "loginName", defaultValue = "admin"), @ApiImplicitParam(name = "password", defaultValue = "IP3ccke3GhH45iGHB5qP9p7iZw6xUyj28Ju10rnBiPKOI35sc%2BjI7%2FdsjOkHWMfUwGYGfz8ik31HC2Ruk%2Fhkd9f6RPULTHj7VpFdNdde2P9M4mQQnFBAiPM7VT9iW3RyCtPlJexQ3nAiA09OqG%2F0sIf1kcyveSrulxembARDbDo%3D") }) + @OperationLog(type = SysOperationLogType.LOGIN, saveResponse = false) @PostMapping("/doLogin") public ResponseResult doLogin( @MyRequestBody String loginName, @MyRequestBody String password) throws Exception { @@ -87,6 +95,8 @@ public class LoginController { errorMessage = "登录失败,用户账号被锁定!"; return ResponseResult.error(ErrorCodeEnum.INVALID_USER_STATUS, errorMessage); } + String patternKey = RedisKeyUtil.getSessionIdPrefix(user.getLoginName(), MyCommonUtil.getDeviceType()) + "*"; + redissonClient.getKeys().deleteByPatternAsync(patternKey); JSONObject jsonData = this.buildLoginData(user); return ResponseResult.success(jsonData); } @@ -96,9 +106,11 @@ public class LoginController { * * @return 应答结果对象。 */ + @OperationLog(type = SysOperationLogType.LOGOUT) @PostMapping("/doLogout") public ResponseResult doLogout() { TokenData tokenData = TokenData.takeFromRequest(); + sysDataPermService.removeDataPermCache(tokenData.getSessionId()); cacheHelper.removeAllSessionCache(tokenData.getSessionId()); return ResponseResult.success(); } @@ -143,7 +155,7 @@ public class LoginController { @PostMapping("/changePassword") public ResponseResult changePassword( @MyRequestBody String oldPass, @MyRequestBody String newPass) throws Exception { - if (MyCommonUtil.existBlankArgument(oldPass, oldPass)) { + if (MyCommonUtil.existBlankArgument(newPass, oldPass)) { return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); } TokenData tokenData = TokenData.takeFromRequest(); @@ -169,6 +181,7 @@ public class LoginController { TokenData tokenData = new TokenData(); String sessionId = user.getLoginName() + "_" + deviceType + "_" + MyCommonUtil.generateUuid(); tokenData.setUserId(user.getUserId()); + tokenData.setDeptId(user.getDeptId()); tokenData.setIsAdmin(isAdmin); tokenData.setLoginName(user.getLoginName()); tokenData.setShowName(user.getShowName()); @@ -197,6 +210,9 @@ public class LoginController { } jsonData.put("menuList", menuList); jsonData.put("permCodeList", permCodeList); + if (user.getUserType() != SysUserType.TYPE_ADMIN) { + sysDataPermService.putDataPermCache(sessionId, user.getUserId(), user.getDeptId()); + } return jsonData; } } diff --git a/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysMenuController.java b/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysMenuController.java index 8eaf357e..b637d709 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysMenuController.java +++ b/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysMenuController.java @@ -1,6 +1,7 @@ package com.orange.demo.upmsservice.controller; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.TypeReference; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.annotations.Api; import lombok.extern.slf4j.Slf4j; @@ -10,6 +11,8 @@ import com.orange.demo.common.core.util.MyModelUtil; import com.orange.demo.common.core.util.MyCommonUtil; import com.orange.demo.common.core.annotation.MyRequestBody; import com.orange.demo.common.core.validator.UpdateGroup; +import com.orange.demo.common.log.annotation.OperationLog; +import com.orange.demo.common.log.model.constant.SysOperationLogType; import com.orange.demo.upmsapi.dto.SysMenuDto; import com.orange.demo.upmsapi.vo.SysMenuVo; import com.orange.demo.upmsapi.constant.SysMenuType; @@ -43,8 +46,8 @@ public class SysMenuController { * @param permCodeIdListString 与当前菜单Id绑定的权限Id列表,多个权限之间逗号分隔。 * @return 应答结果对象,包含新增菜单的主键Id。 */ - @SuppressWarnings("unchecked") @ApiOperationSupport(ignoreParameters = {"sysMenuDto.menuId"}) + @OperationLog(type = SysOperationLogType.ADD) @PostMapping("/add") public ResponseResult add( @MyRequestBody SysMenuDto sysMenuDto, @MyRequestBody String permCodeIdListString) { @@ -70,7 +73,7 @@ public class SysMenuController { } Set permCodeIdSet = null; if (result.getData() != null) { - permCodeIdSet = (Set) result.getData().get("permCodeIdSet"); + permCodeIdSet = result.getData().getObject("permCodeIdSet", new TypeReference>(){}); } sysMenuService.saveNew(sysMenu, permCodeIdSet); return ResponseResult.success(sysMenu.getMenuId()); @@ -83,7 +86,7 @@ public class SysMenuController { * @param permCodeIdListString 与当前菜单Id绑定的权限Id列表,多个权限之间逗号分隔。 * @return 应答结果对象。 */ - @SuppressWarnings("unchecked") + @OperationLog(type = SysOperationLogType.UPDATE) @PostMapping("/update") public ResponseResult update( @MyRequestBody SysMenuDto sysMenuDto, @MyRequestBody String permCodeIdListString) { @@ -118,7 +121,7 @@ public class SysMenuController { } Set permCodeIdSet = null; if (result.getData() != null) { - permCodeIdSet = (Set) result.getData().get("permCodeIdSet"); + permCodeIdSet = result.getData().getObject("permCodeIdSet", new TypeReference>(){}); } if (!sysMenuService.update(sysMenu, originalSysMenu, permCodeIdSet)) { errorMessage = "数据验证失败,当前权限字并不存在,请刷新后重试!"; @@ -133,6 +136,7 @@ public class SysMenuController { * @param menuId 指定菜单主键Id。 * @return 应答结果对象。 */ + @OperationLog(type = SysOperationLogType.DELETE) @PostMapping("/delete") public ResponseResult delete(@MyRequestBody Long menuId) { if (MyCommonUtil.existBlankArgument(menuId)) { diff --git a/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysPermCodeController.java b/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysPermCodeController.java index 442d8640..95812da8 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysPermCodeController.java +++ b/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysPermCodeController.java @@ -2,6 +2,7 @@ package com.orange.demo.upmsservice.controller; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.annotations.Api; +import com.alibaba.fastjson.TypeReference; import lombok.extern.slf4j.Slf4j; import com.orange.demo.common.core.constant.ErrorCodeEnum; import com.orange.demo.common.core.object.*; @@ -9,6 +10,8 @@ import com.orange.demo.common.core.util.MyModelUtil; import com.orange.demo.common.core.util.MyCommonUtil; import com.orange.demo.common.core.annotation.MyRequestBody; import com.orange.demo.common.core.validator.UpdateGroup; +import com.orange.demo.common.log.annotation.OperationLog; +import com.orange.demo.common.log.model.constant.SysOperationLogType; import com.orange.demo.upmsapi.dto.SysPermCodeDto; import com.orange.demo.upmsapi.vo.SysPermCodeVo; import com.orange.demo.upmsservice.model.SysPermCode; @@ -42,8 +45,8 @@ public class SysPermCodeController { * @param permIdListString 与当前权限Id绑定的权限资源Id列表,多个权限资源之间逗号分隔。 * @return 应答结果对象,包含新增权限字的主键Id。 */ - @SuppressWarnings("unchecked") @ApiOperationSupport(ignoreParameters = {"sysPermCodeDto.permCodeId"}) + @OperationLog(type = SysOperationLogType.ADD) @PostMapping("/add") public ResponseResult add( @MyRequestBody SysPermCodeDto sysPermCodeDto, @MyRequestBody String permIdListString) { @@ -58,7 +61,7 @@ public class SysPermCodeController { } Set permIdSet = null; if (result.getData() != null) { - permIdSet = (Set) result.getData().get("permIdSet"); + permIdSet = result.getData().getObject("permIdSet", new TypeReference>(){}); } sysPermCode = sysPermCodeService.saveNew(sysPermCode, permIdSet); return ResponseResult.success(sysPermCode.getPermCodeId()); @@ -71,7 +74,7 @@ public class SysPermCodeController { * @param permIdListString 与当前权限Id绑定的权限资源Id列表,多个权限资源之间逗号分隔。 * @return 应答结果对象。 */ - @SuppressWarnings("unchecked") + @OperationLog(type = SysOperationLogType.UPDATE) @PostMapping("/update") public ResponseResult update( @MyRequestBody SysPermCodeDto sysPermCodeDto, @MyRequestBody String permIdListString) { @@ -91,7 +94,7 @@ public class SysPermCodeController { } Set permIdSet = null; if (result.getData() != null) { - permIdSet = (Set) result.getData().get("permIdSet"); + permIdSet = result.getData().getObject("permIdSet", new TypeReference>(){}); } try { if (!sysPermCodeService.update(sysPermCode, originalSysPermCode, permIdSet)) { @@ -111,6 +114,7 @@ public class SysPermCodeController { * @param permCodeId 指定的权限字主键Id。 * @return 应答结果对象。 */ + @OperationLog(type = SysOperationLogType.DELETE) @PostMapping("/delete") public ResponseResult delete(@MyRequestBody Long permCodeId) { if (MyCommonUtil.existBlankArgument(permCodeId)) { diff --git a/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysPermController.java b/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysPermController.java index f152e744..4f9d14c1 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysPermController.java +++ b/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysPermController.java @@ -12,6 +12,8 @@ import com.orange.demo.common.core.util.MyCommonUtil; import com.orange.demo.common.core.util.MyPageUtil; import com.orange.demo.common.core.annotation.MyRequestBody; import com.orange.demo.common.core.validator.UpdateGroup; +import com.orange.demo.common.log.annotation.OperationLog; +import com.orange.demo.common.log.model.constant.SysOperationLogType; import com.orange.demo.upmsapi.dto.SysPermDto; import com.orange.demo.upmsapi.vo.SysPermVo; import com.orange.demo.upmsservice.model.SysPerm; @@ -45,6 +47,7 @@ public class SysPermController { * @return 应答结果对象,包含新增权限资源的主键Id。 */ @ApiOperationSupport(ignoreParameters = {"sysPermDto.permId"}) + @OperationLog(type = SysOperationLogType.ADD) @PostMapping("/add") public ResponseResult add(@MyRequestBody SysPermDto sysPermDto) { String errorMessage = MyCommonUtil.getModelValidationError(sysPermDto); @@ -66,6 +69,7 @@ public class SysPermController { * @param sysPermDto 更新权限资源对象。 * @return 应答结果对象,包含更新权限资源的主键Id。 */ + @OperationLog(type = SysOperationLogType.UPDATE) @PostMapping("/update") public ResponseResult update(@MyRequestBody SysPermDto sysPermDto) { String errorMessage = MyCommonUtil.getModelValidationError(sysPermDto, Default.class, UpdateGroup.class); @@ -92,6 +96,7 @@ public class SysPermController { * @param permId 指定的权限资源主键Id。 * @return 应答结果对象。 */ + @OperationLog(type = SysOperationLogType.DELETE) @PostMapping("/delete") public ResponseResult delete(@MyRequestBody Long permId) { if (MyCommonUtil.existBlankArgument(permId)) { diff --git a/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysPermModuleController.java b/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysPermModuleController.java index cde3ba83..f291deb9 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysPermModuleController.java +++ b/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysPermModuleController.java @@ -9,6 +9,8 @@ import com.orange.demo.common.core.util.MyModelUtil; import com.orange.demo.common.core.util.MyCommonUtil; import com.orange.demo.common.core.annotation.MyRequestBody; import com.orange.demo.common.core.validator.UpdateGroup; +import com.orange.demo.common.log.annotation.OperationLog; +import com.orange.demo.common.log.model.constant.SysOperationLogType; import com.orange.demo.upmsapi.dto.SysPermModuleDto; import com.orange.demo.upmsapi.vo.SysPermModuleVo; import com.orange.demo.upmsservice.model.SysPerm; @@ -46,6 +48,7 @@ public class SysPermModuleController { * @return 应答结果对象,包含新增权限资源模块的主键Id。 */ @ApiOperationSupport(ignoreParameters = {"sysPermModuleDto.moduleId"}) + @OperationLog(type = SysOperationLogType.ADD) @PostMapping("/add") public ResponseResult add(@MyRequestBody SysPermModuleDto sysPermModuleDto) { String errorMessage = MyCommonUtil.getModelValidationError(sysPermModuleDto); @@ -68,6 +71,7 @@ public class SysPermModuleController { * @param sysPermModuleDto 更新权限资源模块对象。 * @return 应答结果对象,包含新增权限资源模块的主键Id。 */ + @OperationLog(type = SysOperationLogType.UPDATE) @PostMapping("/update") public ResponseResult update(@MyRequestBody SysPermModuleDto sysPermModuleDto) { String errorMessage = MyCommonUtil.getModelValidationError(sysPermModuleDto, Default.class, UpdateGroup.class); @@ -99,6 +103,7 @@ public class SysPermModuleController { * @param moduleId 指定的权限资源模块主键Id。 * @return 应答结果对象。 */ + @OperationLog(type = SysOperationLogType.DELETE) @PostMapping("/delete") public ResponseResult delete(@MyRequestBody Long moduleId) { if (MyCommonUtil.existBlankArgument(moduleId)) { diff --git a/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysRoleController.java b/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysRoleController.java index 21f78363..c7138236 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysRoleController.java +++ b/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysRoleController.java @@ -1,9 +1,10 @@ package com.orange.demo.upmsservice.controller; -import com.github.pagehelper.Page; -import com.github.pagehelper.page.PageMethod; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.annotations.Api; +import com.alibaba.fastjson.TypeReference; +import com.github.pagehelper.Page; +import com.github.pagehelper.page.PageMethod; import lombok.extern.slf4j.Slf4j; import com.orange.demo.common.core.validator.UpdateGroup; import com.orange.demo.common.core.constant.ErrorCodeEnum; @@ -12,6 +13,8 @@ import com.orange.demo.common.core.util.MyCommonUtil; import com.orange.demo.common.core.util.MyModelUtil; import com.orange.demo.common.core.util.MyPageUtil; import com.orange.demo.common.core.annotation.MyRequestBody; +import com.orange.demo.common.log.annotation.OperationLog; +import com.orange.demo.common.log.model.constant.SysOperationLogType; import com.orange.demo.upmsapi.dto.SysRoleDto; import com.orange.demo.upmsapi.dto.SysUserDto; import com.orange.demo.upmsapi.vo.SysRoleVo; @@ -52,8 +55,8 @@ public class SysRoleController { * @param menuIdListString 与当前角色Id绑定的menuId列表,多个menuId之间逗号分隔。 * @return 应答结果对象,包含新增角色的主键Id。 */ - @SuppressWarnings("unchecked") @ApiOperationSupport(ignoreParameters = {"sysRoleDto.roleId", "sysRoleDto.createTimeStart", "sysRoleDto.createTimeEnd"}) + @OperationLog(type = SysOperationLogType.ADD) @PostMapping("/add") public ResponseResult add( @MyRequestBody SysRoleDto sysRoleDto, @MyRequestBody String menuIdListString) { @@ -68,7 +71,7 @@ public class SysRoleController { } Set menuIdSet = null; if (result.getData() != null) { - menuIdSet = (Set) result.getData().get("menuIdSet"); + menuIdSet = result.getData().getObject("menuIdSet", new TypeReference>(){}); } sysRoleService.saveNew(sysRole, menuIdSet); return ResponseResult.success(sysRole.getRoleId()); @@ -81,8 +84,8 @@ public class SysRoleController { * @param menuIdListString 与当前角色Id绑定的menuId列表,多个menuId之间逗号分隔。 * @return 应答结果对象。 */ - @SuppressWarnings("unchecked") @ApiOperationSupport(ignoreParameters = {"sysRoleDto.createTimeStart", "sysRoleDto.createTimeEnd"}) + @OperationLog(type = SysOperationLogType.UPDATE) @PostMapping("/update") public ResponseResult update( @MyRequestBody SysRoleDto sysRoleDto, @MyRequestBody String menuIdListString) { @@ -102,7 +105,7 @@ public class SysRoleController { } Set menuIdSet = null; if (result.getData() != null) { - menuIdSet = (Set) result.getData().get("menuIdSet"); + menuIdSet = result.getData().getObject("menuIdSet", new TypeReference>(){}); } if (!sysRoleService.update(sysRole, originalSysRole, menuIdSet)) { errorMessage = "更新失败,数据不存在,请刷新后重试!"; @@ -117,6 +120,7 @@ public class SysRoleController { * @param roleId 指定角色主键Id。 * @return 应答结果对象。 */ + @OperationLog(type = SysOperationLogType.DELETE) @PostMapping("/delete") public ResponseResult delete(@MyRequestBody Long roleId) { if (MyCommonUtil.existBlankArgument(roleId)) { @@ -251,6 +255,7 @@ public class SysRoleController { * @param userIdListString 逗号分隔的用户Id列表。 * @return 应答结果对象。 */ + @OperationLog(type = SysOperationLogType.ADD_M2M) @PostMapping("/addUserRole") public ResponseResult addUserRole( @MyRequestBody Long roleId, @MyRequestBody String userIdListString) { @@ -281,6 +286,7 @@ public class SysRoleController { * @param userId 指定用户主键Id。 * @return 应答数据结果。 */ + @OperationLog(type = SysOperationLogType.DELETE_M2M) @PostMapping("/deleteUserRole") public ResponseResult deleteUserRole( @MyRequestBody Long roleId, @MyRequestBody Long userId) { diff --git a/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysUserController.java b/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysUserController.java index 56904d7c..41ad2721 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysUserController.java +++ b/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysUserController.java @@ -1,6 +1,8 @@ package com.orange.demo.upmsservice.controller; import com.alibaba.fastjson.TypeReference; +import com.orange.demo.common.log.annotation.OperationLog; +import com.orange.demo.common.log.model.constant.SysOperationLogType; import com.github.pagehelper.page.PageMethod; import com.orange.demo.upmsservice.model.*; import com.orange.demo.upmsservice.service.*; @@ -12,8 +14,6 @@ import com.orange.demo.common.core.constant.*; import com.orange.demo.common.core.base.controller.BaseController; import com.orange.demo.common.core.base.service.IBaseService; import com.orange.demo.common.core.annotation.MyRequestBody; -import com.orange.demo.common.core.validator.AddGroup; -import com.orange.demo.common.core.validator.UpdateGroup; import com.orange.demo.upmsservice.config.ApplicationConfig; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.annotations.*; @@ -21,7 +21,6 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import javax.validation.groups.Default; import java.util.*; /** @@ -49,46 +48,55 @@ public class SysUserController extends BaseController /** * 新增用户操作。 * - * @param sysUserDto 新增用户对象。 - * @param roleIdListString 逗号分隔的角色Id列表。 + * @param sysUserDto 新增用户对象。 + * @param dataPermIdListString 逗号分隔的数据权限Id列表。 + * @param roleIdListString 逗号分隔的角色Id列表。 * @return 应答结果对象,包含新增用户的主键Id。 */ @ApiOperationSupport(ignoreParameters = { "sysUserDto.userId", "sysUserDto.createTimeStart", "sysUserDto.createTimeEnd"}) + @OperationLog(type = SysOperationLogType.ADD) @PostMapping("/add") public ResponseResult add( - @MyRequestBody SysUserDto sysUserDto, @MyRequestBody String roleIdListString) { - String errorMessage = MyCommonUtil.getModelValidationError(sysUserDto, Default.class, AddGroup.class); + @MyRequestBody SysUserDto sysUserDto, + @MyRequestBody String dataPermIdListString, + @MyRequestBody String roleIdListString) { + String errorMessage = MyCommonUtil.getModelValidationError(sysUserDto, false); if (errorMessage != null) { return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); } SysUser sysUser = MyModelUtil.copyTo(sysUserDto, SysUser.class); CallResult result = sysUserService.verifyRelatedData( - sysUser, null, roleIdListString); + sysUser, null, roleIdListString, dataPermIdListString); if (!result.isSuccess()) { return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, result.getErrorMessage()); } Set roleIdSet = result.getData().getObject("roleIdSet", new TypeReference>() {}); - sysUserService.saveNew(sysUser, roleIdSet); + Set dataPermIdSet = result.getData().getObject("dataPermIdSet", new TypeReference>() {}); + sysUserService.saveNew(sysUser, roleIdSet, dataPermIdSet); return ResponseResult.success(sysUser.getUserId()); } /** * 更新用户操作。 * - * @param sysUserDto 更新用户对象。 - * @param roleIdListString 逗号分隔的角色Id列表。 + * @param sysUserDto 更新用户对象。 + * @param dataPermIdListString 逗号分隔的数据权限Id列表。 + * @param roleIdListString 逗号分隔的角色Id列表。 * @return 应答结果对象。 */ @ApiOperationSupport(ignoreParameters = { "sysUserDto.createTimeStart", "sysUserDto.createTimeEnd"}) + @OperationLog(type = SysOperationLogType.UPDATE) @PostMapping("/update") public ResponseResult update( - @MyRequestBody SysUserDto sysUserDto, @MyRequestBody String roleIdListString) { - String errorMessage = MyCommonUtil.getModelValidationError(sysUserDto, Default.class, UpdateGroup.class); + @MyRequestBody SysUserDto sysUserDto, + @MyRequestBody String dataPermIdListString, + @MyRequestBody String roleIdListString) { + String errorMessage = MyCommonUtil.getModelValidationError(sysUserDto, true); if (errorMessage != null) { return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); } @@ -98,12 +106,13 @@ public class SysUserController extends BaseController } SysUser sysUser = MyModelUtil.copyTo(sysUserDto, SysUser.class); CallResult result = sysUserService.verifyRelatedData( - sysUser, originalUser, roleIdListString); + sysUser, originalUser, roleIdListString, dataPermIdListString); if (!result.isSuccess()) { return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, result.getErrorMessage()); } Set roleIdSet = result.getData().getObject("roleIdSet", new TypeReference>() {}); - if (!sysUserService.update(sysUser, originalUser, roleIdSet)) { + Set dataPermIdSet = result.getData().getObject("dataPermIdSet", new TypeReference>() {}); + if (!sysUserService.update(sysUser, originalUser, roleIdSet, dataPermIdSet)) { return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST); } return ResponseResult.success(); @@ -132,6 +141,7 @@ public class SysUserController extends BaseController * @param userId 删除对象主键Id。 * @return 应答结果对象。 */ + @OperationLog(type = SysOperationLogType.DELETE) @PostMapping("/delete") public ResponseResult delete(@MyRequestBody Long userId) { String errorMessage; @@ -170,8 +180,7 @@ public class SysUserController extends BaseController } SysUser sysUserFilter = MyModelUtil.copyTo(sysUserDtoFilter, SysUser.class); String orderBy = MyOrderParam.buildOrderBy(orderParam, SysUser.class); - List sysUserList = - sysUserService.getSysUserListWithRelation(sysUserFilter, orderBy); + List sysUserList = sysUserService.getSysUserListWithRelation(sysUserFilter, orderBy); return ResponseResult.success(MyPageUtil.makeResponseData(sysUserList, SysUser.INSTANCE)); } @@ -187,8 +196,7 @@ public class SysUserController extends BaseController return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); } // 这里查看用户数据时候,需要把用户多对多关联的角色和数据权限Id一并查出。 - SysUser sysUser = - sysUserService.getByIdWithRelation(userId, MyRelationParam.full()); + SysUser sysUser = sysUserService.getByIdWithRelation(userId, MyRelationParam.full()); if (sysUser == null) { return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST); } diff --git a/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysUserMapper.java b/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysUserMapper.java index 61d4d975..b5e56986 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysUserMapper.java +++ b/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysUserMapper.java @@ -14,6 +14,13 @@ import java.util.*; */ public interface SysUserMapper extends BaseDaoMapper { + /** + * 批量插入对象列表。 + * + * @param sysUserList 新增对象列表。 + */ + void insertList(List sysUserList); + /** * 获取过滤后的对象列表。 * @@ -68,6 +75,32 @@ public interface SysUserMapper extends BaseDaoMapper { @Param("sysUserFilter") SysUser sysUserFilter, @Param("orderBy") String orderBy); + /** + * 根据数据权限Id,获取关联的用户Id列表。 + * + * @param dataPermId 关联的数据权限Id。 + * @param sysUserFilter 用户过滤条件对象。 + * @param orderBy order by从句的参数。 + * @return 和DataPermId关联的用户列表。 + */ + List getSysUserListByDataPermId( + @Param("dataPermId") Long dataPermId, + @Param("sysUserFilter") SysUser sysUserFilter, + @Param("orderBy") String orderBy); + + /** + * 根据数据权限Id,获取和当前数据权限Id没有建立多对多关联关系的用户Id列表。 + * + * @param dataPermId 关联的数据权限Id。 + * @param sysUserFilter 用户过滤条件对象。 + * @param orderBy order by从句的参数。 + * @return 和DataPermId没有建立关联关系的用户列表。 + */ + List getNotInSysUserListByDataPermId( + @Param("dataPermId") Long dataPermId, + @Param("sysUserFilter") SysUser sysUserFilter, + @Param("orderBy") String orderBy); + /** * 查询用户的权限资源地址列表。同时返回详细的分配路径。 * diff --git a/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/mapper/SysUserMapper.xml b/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/mapper/SysUserMapper.xml index 35380e0a..90cee263 100644 --- a/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/mapper/SysUserMapper.xml +++ b/orange-demo-multi/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/mapper/SysUserMapper.xml @@ -6,6 +6,7 @@ + @@ -16,6 +17,39 @@ + + INSERT INTO zz_sys_user + (user_id, + login_name, + password, + show_name, + dept_id, + user_type, + head_image_url, + user_status, + deleted_flag, + create_user_id, + update_user_id, + create_time, + update_time) + VALUES + + (#{item.userId}, + #{item.loginName}, + #{item.password}, + #{item.showName}, + #{item.deptId}, + #{item.userType}, + #{item.headImageUrl}, + #{item.userStatus}, + #{item.deletedFlag}, + #{item.createUserId}, + #{item.updateUserId}, + #{item.createTime}, + #{item.updateTime}) + + + @@ -34,6 +68,9 @@ AND zz_sys_user.show_name LIKE #{safeSysUserShowName} + + AND zz_sys_user.dept_id = #{sysUserFilter.deptId} + AND zz_sys_user.user_status = #{sysUserFilter.userStatus} @@ -103,6 +140,34 @@ + + + +